Mapper
plot_pcpn_rsel.c
Go to the documentation of this file.
1 
2 #include "prototypes_new.h"
3 
4 void plot_pcpn(Pixmap pixm,int h, int display_flag,char *file,int num,int mnum)
5 
6 {
7 extern long grey;
8 extern int dmvalue;
9 extern int pcpn_time_step;
10 extern int rsmode;
11 extern int wfo_all;
12 extern int wfo_in_use[20];
13 int m;
14 extern struct pcp *pcp;
15 extern struct pcp *spf;
16 extern int pcp_in_use[500];
17 extern Font font[10];
18 extern XFontStruct *info_font[10];
19 extern Display *display;
20 extern int npoint[2],zoom;
21 extern int kscale;
22 extern GC gc;
23 extern unsigned long xmap[16];
24 extern Widget drawing_area;
25 extern float delim[][16];
26 extern struct display_set display_set[4];
27 extern struct hrap_grid *hrap_grid;
28 int i,j,k;
29 int color,MY=10;
30 float xrat,yrat,mult,dmult,cmult;
31 int nx[4],ny[4];
32 Dimension width,height;
33 Arg args[10];
34 signed long XSIZE,YSIZE;
35 XPoint point[5];
36 long xmin,xmax,ymin,ymax;
37 signed long xcen,ycen,lint1,lint2;
38 int di[4],dj[4],dy,dx,yheight;
39 float value;
40 int i1;
41 
42 XSetFont(display,gc,font[4]);
43 yheight=info_font[4]->ascent+2;
44 
45 if(pcpn_time_step==0 && rsmode != 1) {
46 
47  i1=1;
48 
49  if(num==0)
50  i1=0;
51 
52  if(pcp_in_use[num+mnum]!=-1 && pcp_in_use[num+mnum-i1]!=-1) {
53 
54  read_file(file,num+mnum,spf);
55  read_file(file,num+mnum-i1,pcp);
56 
57  for(i=0;i<hrap_grid->maxi-1;i++) {
58 
59  for(j=0;j<hrap_grid->maxj-1;j++) {
60 
61  spf->value[i][j]=(spf->value[i][j] +
62  pcp->value[i][j])/2;
63 
64 
65 
66  }
67 
68  }
69 
70 
71  }
72 
73  else if(pcp_in_use[num+mnum]==1) {
74 
75  read_file(file,num+mnum,spf);
76 
77 
78  }
79 
80  else if(pcp_in_use[num+mnum-i1]==1) {
81 
82  read_file(file,num+mnum-i1,spf);
83 
84 
85  }
86 
87 
88 
89  }
90 
91 if(pcp_in_use[num]==-1)
92  return;
93 
94 
95 read_file(file,num,pcp);
96 
97 dx=1;dy=1;
98 
99 di[0]=0;dj[0]=0;
100 di[1]=1;dj[1]=0;
101 di[2]=1;dj[2]=1;
102 di[3]=0;dj[3]=1;
103 
111 
112 XtSetArg(args[0],XtNwidth,&width);
113 XtSetArg(args[1],XtNheight,&height);
114 XtGetValues(drawing_area,args,2);
115 
116 XSIZE=(long)width*10L;
117 YSIZE=(long)height*10L;
118 
119 xrat=(float)XSIZE/(float)12800;
120 yrat=(float)YSIZE/(float)9600;
121 
122 if(xrat < yrat)
123  mult=xrat;
124 
125 else
126  mult=yrat;
127 
129 lint1=(long)npoint[0]*(long)MY;
130 lint2=(long)npoint[1]*(long)MY;
131 
132 XSetFillRule(display,gc,WindingRule);
133 
134 for(i=0;i<hrap_grid->maxi-1;i++) {
135 
136 for(j=0;j<hrap_grid->maxj-1;j++) {
137 
138  if(hrap_grid->owner[i][j]==-1)
139  continue;
140 
141  if(wfo_all != 1) {
142 
143  for(m=0;m<20;m++) {
144 
145  if(wfo_in_use[m] == -1)
146  break;
147 
148  if(hrap_grid->owner[i][j]==wfo_in_use[m])
149  break;
150 
151  }
152 
153  /* if(wfo_in_use[m]==-1)
154  continue; */
155 
156  }
157 
158  if(wfo_all ==1 || wfo_in_use[m]!=-1) {
159 
160  value=(float)pcp->value[i][j]/100;
161 
162  if(value<=0.01 && value >=-0.01)
163  continue;
164 
165  if(rsmode==1) {
166 
167 
168  for(k=0;k<15;k++) {
169 
170  if(value >= delim[kscale][k] &&
171  value < delim[kscale][k+1]) {
172 
173  color=xmap[k];
174  break;
175 
176  }
177 
178  }
179 
180  if(k==15)
181  color=xmap[15];
182 
183  if(value < -99.98)
184  color=xmap[7];
185 
186  if(color==0)
187  continue;
188 
189  }
190 
191 
192  else {
193 
194  for(k=0;k<4;k++) {
195 
196  if(value >= delim[kscale][k] &&
197  value < delim[kscale][k+1]) {
198 
199  color=xmap[k];
200  break;
201 
202  }
203 
204  }
205 
206  if(k==4)
207  color=xmap[4];
208 
209  if(value < -99.98)
210  color=xmap[7];
211 
212  if(color==0)
213  continue;
214 
215 
216  }
217 
218  if(rsmode != 1 &&
219  (pcp_in_use[mnum+num] == 1 ||
220  pcp_in_use[mnum+num-i1] == 1) ) {
221 
222 
223  if((spf->value[i][j] * 10 - dmvalue <
224  hrap_grid->elev[i][j]) && spf->value[i][j] >= 0)
225  color=xmap[k+5];
226 
227 
228 
229  }
230 
231  XSetForeground(display,gc,color);
232 
233  }
234 
235  if(zoom <= 1) {
236 
237  for(k=0;k<4;k++) {
238 
239  nx[k]=xmin+(float)hrap_grid->coord[i+di[k]][j+dj[k]].x*cmult;
240  ny[k]=ymin+(float)hrap_grid->coord[i+di[k]][j+dj[k]].y*cmult;
241 
242  }
243  }
244 
245  else {
246 
247  for(k=0;k<4;k++) {
248 
249  nx[k]=(xmin+((float)hrap_grid->coord[i+di[k]][j+dj[k]].x*
250  cmult-lint1))*zoom + xcen;
251  ny[k]=(ymin+((float)hrap_grid->coord[i+di[k]][j+dj[k]].y*
252  cmult-lint2))*zoom + ycen;
253 
254 
255  }
256 
257  }
258 
259 
260  for(k=0;k<4;k++) {
261 
262  point[k].x=(nx[k]+5)/MY;
263  point[k].y=(ny[k]+5)/MY;
264 
265 
266  }
267 
268  point[4].x=point[0].x;
269  point[4].y=point[0].y;
270 
271  if(wfo_all !=1 && wfo_in_use[m]==-1)
272  XSetForeground(display,gc,grey);
273 
274  XFillPolygon(display,pixm,gc,point,5,Convex,CoordModeOrigin);
275 
276 
277  }
278 
279 }
280 
281 return;
282 
283 }
284 
285 
286 
287 
288 
289 
290 
291 
292 
293 
294 
295 
296 
297 
298 
299 
300 
301 
302 
303 
304 
305 
306 
307 
308 
309 
310 
311 
312 
313 
314 
315 
316 
317 
318 
319 
320 
321 
322 
323 
324 
325 
326 
327 
328 
329 
330 
331 
332 
333 
334 
335 
336 
337 
338 
339 
340 
341 
342 
343 
344 
345 
346 
347 
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
void read_file(char *, int, struct pcp *)
Definition: read_file.c:5
int j
Definition: mapp2h.h:48
int k
Definition: mapp2h.h:48
int pcpn_time_step
Definition: mapper.c:75
struct pcp * spf
Definition: mapper.c:141
int display_flag
Definition: mapper.c:100
void plot_pcpn(Pixmap pixm, int h, int display_flag, char *file, int num, int mnum)
Definition: plot_pcpn_rsel.c:4
float xrat
long xmax
int dj[4]
int color
float value
float yrat
long ny[4]
long ymax
struct pcp * pcp
Definition: mapper.c:140
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]
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
short int maxi
Definition: misc.h:580
short int maxj
Definition: misc.h:581
struct coord ** coord
Definition: misc.h:584
short int ** elev
Definition: misc_new.h:815
short int ** owner
Definition: misc_new.h:811
Definition: misc.h:596
short int ** value
Definition: misc.h:599
Definition: mapp2h.h:29
int y
Definition: mapp2h.h:30
int x
Definition: mapp2h.h:30