00001 
00010 #include "window.h"
00011 
00012 
00013 double  X_Dx, X_Dy, X_Wx, X_Wy;
00014 double  X_Now = 0.0, Y_Now = 0.0;
00015 
00016 
00028 void  setWindow(WSGraph vp, double x1, double y1, double x2, double y2)
00029 {
00030     if (x1==x2 || y1==y2) return;
00031 
00032     X_Dx = (vp.xs - 1)/Xabs(x2 - x1);
00033     X_Dy = (vp.ys - 1)/Xabs(y2 - y1);
00034     X_Wx = Min(x1, x2);
00035     X_Wy = Max(y1, y2);
00036 }
00037 
00038 
00039 
00050 void  wSetPixel(WSGraph vp, double x, double y, int cc)
00051 {
00052     int  i, j;
00053 
00054     i = (int)((x - X_Wx)*X_Dx + 0.5);
00055     j = (int)((X_Wy - y)*X_Dy + 0.5);
00056 
00057     SetPixel(vp, i, j, cc);
00058 }
00059 
00060 
00061 
00073 int  wGetPixel(WSGraph vp, double x, double y)
00074 {
00075     int  i, j;
00076 
00077     i = (int)((x - X_Wx)*X_Dx + 0.5);
00078     j = (int)((X_Wy - y)*X_Dy + 0.5);
00079 
00080     return GetPixel(vp, i, j);
00081 }
00082 
00083 
00084 
00097 void  wLine(WSGraph vp, double x1, double y1, double x2, double y2, int cc)
00098 {
00099     int  i1, j1, i2, j2;
00100 
00101     i1 = (int)((x1 - X_Wx)*X_Dx + 0.5);
00102     i2 = (int)((x2 - X_Wx)*X_Dx + 0.5);
00103     j1 = (int)((X_Wy - y1)*X_Dy + 0.5);
00104     j2 = (int)((X_Wy - y2)*X_Dy + 0.5);
00105 
00106     line(vp, i1, j1, i2, j2, cc);
00107 }
00108 
00109 
00110 
00119 void  wMove(double x1, double y1) 
00120 {
00121     X_Now = x1;
00122     Y_Now = y1;
00123 }
00124 
00125 
00126 
00138 void  wDraw(WSGraph vp, double x1, double y1, int cc)
00139 {
00140     wLine(vp, X_Now, Y_Now, x1, y1, cc);
00141 
00142     X_Now = x1;
00143     Y_Now = y1;
00144 }
00145 
00146 
00147 
00156 void  wMove_Rel(double x1, double y1) 
00157 {
00158     X_Now += x1;
00159     Y_Now += y1;
00160 }
00161 
00162 
00163 
00175 void  wDraw_Rel(WSGraph vp, double x1, double y1, int cc)
00176 {
00177     double x2, y2;
00178  
00179     x2 = X_Now + x1;
00180     y2 = Y_Now + y1;
00181 
00182     wLine(vp, X_Now, Y_Now, x2, y2, cc);
00183 
00184     X_Now = x2;
00185     Y_Now = y2;
00186 }
00187 
00188