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