Mapper
plot_pcpn_newer.c
Go to the documentation of this file.
1 
2 #include "prototypes_new.h"
3 
4 void plot_pcpn_n(Pixmap pixm,int h, int display_flag,char *file,int num,int mum)
5 
6 {
7 
8 extern int dmvalue;
9 extern int pcpn_time_step;
10 extern int rsmode;
11 extern struct pcp *spf;
12 extern long grey;
13 extern Pixmap logo[4];
14 extern int wfo_all;
15 extern int wfo_in_use[20];
16 int m;
17 extern struct pcp *pcp;
18 extern int pcp_in_use[500];
19 extern Font font[10];
20 extern XFontStruct *info_font[10];
21 extern Display *display;
22 extern int npoint[2],zoom;
23 extern int kscale;
24 extern GC gc;
25 extern unsigned long xmap[16];
26 extern Widget drawing_area;
27 extern float delim[][16];
28 extern struct display_set display_set[4];
29 extern struct hrap_grid *hrap_grid;
30 int i,j,k;
31 int color,MY=10;
32 float xrat,yrat,mult,dmult,cmult;
33 int nx[4],ny[4];
34 Dimension width,height;
35 Arg args[10];
36 signed long XSIZE,YSIZE;
37 XPoint point[5];
38 long xmin,xmax,ymin,ymax;
39 signed long xcen,ycen,lint1,lint2;
40 int di[4],dj[4],dy,dx,yheight;
41 float value;
42 int i1;
43 
44 if(pcpn_time_step==0 && rsmode != 1) {
45 
46  i1=1;
47 
48  if(num==0)
49  i1=0;
50 
51  if(pcp_in_use[num+200]!=-1 && pcp_in_use[num+200-i1]!=-1) {
52 
53  read_file(file,num+200,spf);
54  read_file(file,num+200-i1,pcp);
55 
56  for(i=0;i<hrap_grid->maxi-1;i++) {
57 
58  for(j=0;j<hrap_grid->maxj-1;j++) {
59 
60  spf->value[i][j]=(spf->value[i][j] +
61  pcp->value[i][j])/2;
62 
63 
64 
65  }
66 
67  }
68 
69 
70  }
71 
72  else if(pcp_in_use[num+200]==1) {
73 
74  read_file(file,num+200,spf);
75 
76 
77  }
78 
79  else if(pcp_in_use[num+200-i1]==1) {
80 
81  read_file(file,num+200-i1,spf);
82 
83 
84  }
85 
86 
87 
88  }
89 
90 if(pcp_in_use[num]==-1)
91  return;
92 
93 XSetFont(display,gc,font[4]);
94 yheight=info_font[4]->ascent+2;
95 
96 
97 read_file(file,num,pcp);
98 
99 dx=1;dy=1;
100 
101 di[0]=0;dj[0]=0;
102 di[1]=1;dj[1]=0;
103 di[2]=1;dj[2]=1;
104 di[3]=0;dj[3]=1;
105 
113 
114 XtSetArg(args[0],XtNwidth,&width);
115 XtSetArg(args[1],XtNheight,&height);
116 XtGetValues(drawing_area,args,2);
117 
118 XSIZE=(long)width*10L;
119 YSIZE=(long)height*10L;
120 
121 xrat=(float)XSIZE/(float)12800;
122 yrat=(float)YSIZE/(float)9600;
123 
124 if(xrat < yrat)
125  mult=xrat;
126 
127 else
128  mult=yrat;
129 
131 lint1=(long)npoint[0]*(long)MY;
132 lint2=(long)npoint[1]*(long)MY;
133 
134 XSetFillRule(display,gc,WindingRule);
135 
136 for(i=0;i<hrap_grid->maxi-1;i++) {
137 
138 for(j=0;j<hrap_grid->maxj-1;j++) {
139 
140  if(hrap_grid->owner[i][j]==-1)
141  continue;
142 
143  if(wfo_all != 1) {
144 
145  for(m=0;m<20;m++) {
146 
147  if(wfo_in_use[m] == -1)
148  break;
149 
150  if(hrap_grid->owner[i][j]==wfo_in_use[m])
151  break;
152 
153  }
154 
155 /* if(wfo_in_use[m]==-1)
156  continue; */
157 
158  }
159 
160  if(wfo_all ==1 || wfo_in_use[m]!=-1) {
161 
162  value=(float)pcp->value[i][j]/100;
163 
164  if(value<=0.01 && value >=-0.01)
165  continue;
166 
167  if(rsmode==1) {
168 
169 
170  for(k=0;k<15;k++) {
171 
172  if(value >= delim[kscale][k] &&
173  value < delim[kscale][k+1]) {
174 
175  color=xmap[k];
176  break;
177 
178  }
179 
180  }
181 
182  if(k==15)
183  color=xmap[15];
184 
185  if(value < -99.98)
186  color=xmap[7];
187 
188  if(color==0)
189  continue;
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[200+num] == 1 ||
220  pcp_in_use[200+num-i1] == 1) ) {
221 
222  if(spf->value[i][j] * 10 - dmvalue <
223  hrap_grid->elev[i][j])
224  color=xmap[k+5];
225 
226 
227 
228  }
229 
230  XSetForeground(display,gc,color);
231 
232  }
233 
234  if(zoom <= 1) {
235 
236  for(k=0;k<4;k++) {
237 
238  nx[k]=xmin+(float)hrap_grid->coord[i+di[k]][j+dj[k]].x*cmult;
239  ny[k]=ymin+(float)hrap_grid->coord[i+di[k]][j+dj[k]].y*cmult;
240 
241  }
242  }
243 
244  else {
245 
246  for(k=0;k<4;k++) {
247 
248  nx[k]=(xmin+((float)hrap_grid->coord[i+di[k]][j+dj[k]].x*
249  cmult-lint1))*zoom + xcen;
250  ny[k]=(ymin+((float)hrap_grid->coord[i+di[k]][j+dj[k]].y*
251  cmult-lint2))*zoom + ycen;
252 
253 
254  }
255 
256  }
257 
258 
259  for(k=0;k<4;k++) {
260 
261  point[k].x=(nx[k]+5)/MY;
262  point[k].y=(ny[k]+5)/MY;
263 
264 
265  }
266 
267  point[4].x=point[0].x;
268  point[4].y=point[0].y;
269 
270  if(wfo_all !=1 && wfo_in_use[m]==-1)
271  XSetForeground(display,gc,grey);
272 
273  XFillPolygon(display,pixm,gc,point,5,Convex,CoordModeOrigin);
274 
275 
276  }
277 
278 }
279 
280 XSetFillStyle(display,gc,FillSolid);
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
Pixmap logo[4]
Definition: mapper.c:167
struct pcp * spf
Definition: mapper.c:141
int display_flag
Definition: mapper.c:100
void plot_pcpn_n(Pixmap pixm, int h, int display_flag, char *file, int num, int mum)
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