JunkBox_Lib  1.10.2
window.c
Go to the documentation of this file.
1 
8 #include "window.h"
9 
10 
11 double X_Dx, X_Dy, X_Wx, X_Wy;
12 double X_Now = 0.0, Y_Now = 0.0;
13 
14 
26 void setWindow(WSGraph vp, double x1, double y1, double x2, double y2)
27 {
28  if (x1==x2 || y1==y2) return;
29 
30  X_Dx = (vp.xs - 1)/Xabs(x2 - x1);
31  X_Dy = (vp.ys - 1)/Xabs(y2 - y1);
32  X_Wx = Min(x1, x2);
33  X_Wy = Max(y1, y2);
34 }
35 
36 
47 void wSetPixel(WSGraph vp, double x, double y, int cc)
48 {
49  int i, j;
50 
51  i = (int)((x - X_Wx)*X_Dx + 0.5);
52  j = (int)((X_Wy - y)*X_Dy + 0.5);
53 
54  SetPixel(vp, i, j, cc);
55 }
56 
57 
69 int wGetPixel(WSGraph vp, double x, double y)
70 {
71  int i, j;
72 
73  i = (int)((x - X_Wx)*X_Dx + 0.5);
74  j = (int)((X_Wy - y)*X_Dy + 0.5);
75 
76  return GetPixel(vp, i, j);
77 }
78 
79 
92 void wLine(WSGraph vp, double x1, double y1, double x2, double y2, int cc)
93 {
94  int i1, j1, i2, j2;
95 
96  i1 = (int)((x1 - X_Wx)*X_Dx + 0.5);
97  i2 = (int)((x2 - X_Wx)*X_Dx + 0.5);
98  j1 = (int)((X_Wy - y1)*X_Dy + 0.5);
99  j2 = (int)((X_Wy - y2)*X_Dy + 0.5);
100 
101  line(vp, i1, j1, i2, j2, cc);
102 }
103 
104 
113 void wMove(double x1, double y1)
114 {
115  X_Now = x1;
116  Y_Now = y1;
117 }
118 
119 
131 void wDraw(WSGraph vp, double x1, double y1, int cc)
132 {
133  wLine(vp, X_Now, Y_Now, x1, y1, cc);
134 
135  X_Now = x1;
136  Y_Now = y1;
137 }
138 
139 
148 void wMove_Rel(double x1, double y1)
149 {
150  X_Now += x1;
151  Y_Now += y1;
152 }
153 
154 
166 void wDraw_Rel(WSGraph vp, double x1, double y1, int cc)
167 {
168  double x2, y2;
169 
170  x2 = X_Now + x1;
171  y2 = Y_Now + y1;
172 
173  wLine(vp, X_Now, Y_Now, x2, y2, cc);
174 
175  X_Now = x2;
176  Y_Now = y2;
177 }
178 
#define Min(x, y)
Definition: common.h:250
#define Max(x, y)
Definition: common.h:247
#define Xabs(x)
Definition: common.h:257
void line(WSGraph vp, int x1, int y1, int x2, int y2, int cc)
Definition: graph.c:462
#define GetPixel(vp, x, y)
Definition: graph.h:92
#define SetPixel(vp, x, y, cc)
Definition: graph.h:72
Definition: gdata.h:42
int xs
xサイズ. 4Byte.
Definition: gdata.h:43
int ys
yサイズ. 4Byte.
Definition: gdata.h:44
void wSetPixel(WSGraph vp, double x, double y, int cc)
Definition: window.c:47
double X_Wy
スクリーン座標系の原点に対するワールド座標系の y成分.
Definition: window.c:11
void wDraw_Rel(WSGraph vp, double x1, double y1, int cc)
Definition: window.c:166
void wDraw(WSGraph vp, double x1, double y1, int cc)
Definition: window.c:131
void wMove(double x1, double y1)
Definition: window.c:113
double X_Dy
ワールド座標系の y成分1ドットに対するスクリーン座標系のドット数.
Definition: window.c:11
double Y_Now
ペンの現地点の y成分(ワールド座標系)
Definition: window.c:12
void setWindow(WSGraph vp, double x1, double y1, double x2, double y2)
Definition: window.c:26
int wGetPixel(WSGraph vp, double x, double y)
Definition: window.c:69
double X_Now
ペンの現地点の x成分(ワールド座標系)
Definition: window.c:12
double X_Wx
スクリーン座標系の原点に対するワールド座標系の x成分.
Definition: window.c:11
void wLine(WSGraph vp, double x1, double y1, double x2, double y2, int cc)
Definition: window.c:92
double X_Dx
ワールド座標系の x成分1ドットに対するスクリーン座標系のドット数.
Definition: window.c:11
void wMove_Rel(double x1, double y1)
Definition: window.c:148
グラフィック用ワールド座標系サポート ヘッダ