Mapper
raster_data.c
Go to the documentation of this file.
1 
2 #include "prototypes.h"
3 
4 void raster_data(Pixmap pixm,int h, int display_flag)
5 
6 {
7 
8 extern int data_type;
9 extern struct grid *grid;
10 extern int pcp_in_use[50];
11 extern Font font[10];
12 extern XFontStruct *info_font[10];
13 extern Display *display;
14 extern int npoint[2],zoom;
15 extern int kscale;
16 extern GC gc;
17 extern unsigned long xmap[16];
18 extern Widget drawing_area;
19 extern float delim[16];
20 extern struct display_set display_set[4];
21 extern struct hrap_grid *hrap_grid;
22 int i,j,k;
23 int color,MY=10;
24 float xrat,yrat,mult,dmult,cmult;
25 long nx[4],ny[4];
26 Dimension width,height;
27 Arg args[10];
28 unsigned long XSIZE,YSIZE;
29 XPoint point[5];
31 signed long xcen,ycen;
32 int di[4],dj[4],dy,dx,yheight;
33 float value;
34 
35 XSetFont(display,gc,font[4]);
36 yheight=info_font[4]->ascent+2;
37 
38 dx=1;dy=1;
39 
40 di[0]=0;dj[0]=0;
41 di[1]=1;dj[1]=0;
42 di[2]=1;dj[2]=1;
43 di[3]=0;dj[3]=1;
44 
52 
53 XtSetArg(args[0],XtNwidth,&width);
54 XtSetArg(args[1],XtNheight,&height);
55 XtGetValues(drawing_area,args,2);
56 
57 XSIZE=(long)width*10L;
58 YSIZE=(long)height*10L;
59 
60 xrat=(float)XSIZE/(float)12800;
61 yrat=(float)YSIZE/(float)9600;
62 
63 if(xrat < yrat)
64  mult=xrat;
65 
66 else
67  mult=yrat;
68 
70 lint1=(long)npoint[0]*(long)MY;
71 lint2=(long)npoint[1]*(long)MY;
72 XSetFillRule(display,gc,WindingRule);
73 
74 for(i=0;i<hrap_grid->maxi-1;i++) {
75 
76 for(j=0;j<hrap_grid->maxj-1;j++) {
77 
78  value=(float)grid->value[i][j];
79 
80  if(data_type != 13 && data_type != 14
81  && data_type != 15 && data_type != 16) {
82 
83  for(k=0;k<15;k++) {
84 
85  if(k==0) {
86 
87  if(value < delim[k]) {
88 
89  color=xmap[0];
90  break;
91 
92  }
93 
94  continue;
95 
96  }
97 
98  if(value >= delim[k-1] &&
99  value < delim[k]) {
100 
101  color=xmap[k];
102  break;
103 
104  }
105 
106  }
107 
108  }
109 
110  else {
111 
112  if(value<=0.01 && value >=-0.01)
113  continue;
114 
115  for(k=0;k<15;k++) {
116 
117  if(value >= delim[k] &&
118  value < delim[k+1]) {
119 
120  color=xmap[k];
121  break;
122 
123  }
124 
125  }
126 
127 
128  }
129 
130  if(k==15)
131  color=xmap[15];
132 
133  if(color==0)
134  continue;
135 
136  XSetForeground(display,gc,color);
137 
138  if(zoom <= 1) {
139 
140  for(k=0;k<4;k++) {
141 
142  nx[k]=xmin+(float)hrap_grid->coord[i+di[k]][j+dj[k]].x*cmult;
143  ny[k]=ymin+(float)hrap_grid->coord[i+di[k]][j+dj[k]].y*cmult;
144 
145  }
146  }
147 
148  else {
149 
150  for(k=0;k<4;k++) {
151 
152  nx[k]=xmin+((float)hrap_grid->coord[i+di[k]][j+dj[k]].x*
153  cmult-lint1)*zoom + xcen;
154  ny[k]=ymin+((float)hrap_grid->coord[i+di[k]][j+dj[k]].y*
155  cmult-lint2)*zoom + ycen;
156 
157 
158  }
159 
160  }
161 
162 
163  for(k=0;k<4;k++) {
164 
165  point[k].x=(nx[k]+5)/MY;
166  point[k].y=(ny[k]+5)/MY;
167 
168 
169  }
170 
171  point[4].x=point[0].x;
172  point[4].y=point[0].y;
173 
174  XFillPolygon(display,pixm,gc,point,5,Convex,CoordModeOrigin);
175 
176 
177  }
178 
179 }
180 
181 return;
182 
183 }
184 
185 
186 
187 
188 
189 
190 
191 
192 
193 
194 
195 
196 
197 
198 
199 
200 
201 
202 
203 
204 
205 
206 
207 
208 
209 
210 
211 
212 
213 
214 
215 
216 
217 
218 
219 
220 
221 
222 
223 
224 
225 
226 
227 
228 
229 
230 
231 
232 
233 
234 
235 
236 
237 
238 
239 
240 
241 
242 
243 
244 
245 
246 
247 
static int i
XFontStruct * info_font[10]
Definition: mapper.c:195
Display * display
Definition: mapper.c:159
Font font[10]
Definition: mapper.c:161
float mult
Definition: edit_stations.c:6
int j
Definition: mapp2h.h:48
int k
Definition: mapp2h.h:48
int data_type
Definition: mapper.c:63
struct grid * grid
Definition: mapper.c:127
int display_flag
Definition: mapper.c:100
float xrat
long xmax
int dj[4]
int color
float value
float yrat
long ny[4]
long ymax
int dy
int pcp_in_use[50]
Definition: mapper.c:78
long lint1
GC gc
Definition: mapper.c:163
int dx
struct hrap_grid * hrap_grid
Definition: mapper.c:142
float cmult
unsigned long xmap[16]
Definition: mapper.c:116
signed long xcen
Dimension height
signed long ycen
Dimension width
int yheight
long lint2
Arg args[10]
long xmin
unsigned long XSIZE
int MY
int zoom
float delim[][16]
Definition: mapper.c:30
long nx[4]
float dmult
Widget drawing_area
Definition: mapper.c:185
int npoint[2]
Definition: mapper.c:105
long ymin
unsigned long YSIZE
int kscale
Definition: mapper.c:101
int di[4]
void raster_data(Pixmap pixm, int h, int display_flag)
Definition: raster_data.c:4
short int y
Definition: misc.h:498
short int x
Definition: misc.h:497
float dmult[4]
Definition: misc.h:613
long xmin[4]
Definition: misc.h:607
long xmax[4]
Definition: misc.h:609
long ymax[4]
Definition: misc.h:610
long ymin[4]
Definition: misc.h:608
long ycen[4]
Definition: misc.h:612
long xcen[4]
Definition: misc.h:611
Definition: misc.h:538
float ** value
Definition: misc.h:540
short int maxi
Definition: misc.h:580
short int maxj
Definition: misc.h:581
struct coord ** coord
Definition: misc.h:584
Definition: mapp2h.h:29
int y
Definition: mapp2h.h:30
int x
Definition: mapp2h.h:30