// DasherViewSquare.inl // ///////////////////////////////////////////////////////////////////////////// // // Copyright (c) 2001-2002 David Ward // ///////////////////////////////////////////////////////////////////////////// namespace Dasher { inline const void CDasherViewSquare::screen2dasher(int *mousex, int *mousey) { int dashery=*mousey; double x=1.0*(CanvasX-*mousex)/CanvasX; dashery*=DasherModel().DasherY(); dashery/=CanvasY; if (DasherModel().Dimensions()==false) { if (dashery>m_Y2) dashery= (dashery-m_Y2)*m_Y1 + m_Y2; else if (dashery1500) { dashery=548+(548-dashery); disty=1298-dashery; if(disty<-750) { x=2048; dashery=2048; } else { x=2048+pow(pow(750,2)-pow(disty,2),0.5)*10; } *mousex=int(x); *mousey=dashery; return; } else if (disty <-1500) { dashery=3548+(3548-dashery); disty=2798-dashery; if(disty>750) { x=2048; dashery=2048; } else { x=2048+pow(pow(750,2)-pow(disty,2),0.5)*10; } *mousex=int(x); *mousey=dashery; return; } else { x=pow(pow(1500,2)-pow(disty,2),0.5); } x=2048-x; } *mousex=int(x); *mousey=dashery; } inline const int CDasherViewSquare::dasherx2screen(const myint sx) { double x=1.0*sx/(DasherModel().DasherY()); x=xmap(x); // return CanvasX-int(x*CanvasY); return CanvasX-int(x*CanvasX); } inline const int CDasherViewSquare::dashery2screen(myint y) { if (y > m_Y2 ) y= m_Y2 + (y-m_Y2)/m_Y1; else if (y