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