Daily_QC
wri.c
Go to the documentation of this file.
1 
3 
4 {
5 
6 Dimension width,height;
7 Arg args[10];
8 signed long XSIZE,YSIZE,xsize,ysize,xbegin,ybegin;
9 int h,time_pos;
10 char tbuf[100];
11 time_t ltime;
12 struct tm *gm;
13 int yheight;
14 int ymax;
15 
16 XtSetArg(args[0],XtNwidth,&width);
17 XtSetArg(args[1],XtNheight,&height);
18 XtGetValues(drawing_area,args,2);
19 
20 XSIZE=(long)width*10L;;
21 YSIZE=(long)height*10L;
22 
23 display_set[0].dmult[0]=1.0;
24 display_set[0].xmin[0]=0;
25 display_set[0].ymin[0]=0;
26 display_set[0].xmax[0]=XSIZE;
27 display_set[0].ymax[0]=YSIZE;
28 display_set[0].xcen[0]=XSIZE/2;
29 display_set[0].ycen[0]=YSIZE/2;
30 display_set[0].xoff[0]=0;
31 display_set[0].yoff[0]=0;
32 
33 display_set[3].dmult[0]=0.5;
34 display_set[3].dmult[1]=0.5;
35 display_set[3].dmult[2]=0.5;
36 display_set[3].dmult[3]=0.5;
37 
38 for(h=0;h<4;h++) {
39 
40  display_set[3].xmin[h]=0;
41  display_set[3].ymin[h]=0;
42  display_set[3].xmax[h]=XSIZE/2-xclip*10;
43  display_set[3].ymax[h]=YSIZE/2-yclip*10;
44  display_set[3].xcen[h]=XSIZE/4;
45 
46  display_set[3].ycen[h]=YSIZE/4;
47 
48 
49  }
50 
51 display_set[3].xoff[0]=0;
52 display_set[3].yoff[0]=0;
53 
54 display_set[3].xoff[1]=XSIZE/2+xclip*10;
55 display_set[3].yoff[1]=0;
56 
57 display_set[3].xoff[2]=0;
58 display_set[3].yoff[2]=YSIZE/2+yclip*10;
59 
60 display_set[3].xoff[3]=XSIZE/2+xclip*10;
61 display_set[3].yoff[3]=YSIZE/2+yclip*10;
62 
63 ymax= display_set[0].ymax[0];
64 
65 XSetFunction(display,gc,GXcopy);
66 
67 XDefineCursor(display,window,watch_cursor);
68 
69 XmUpdateDisplay(top_level);
70 
71 
73 
74 h=0;
75 
76 /*create background pixmap */
77 
78 
79 if(add_isohyet_flag==1 && isom != old_isom) {
80 
81  old_isom=isom;
83 
84  }
85 
86 
87 if(change_map_flag==1) {
88 
90 
91 
92  if(add_topo_flag==1) {
93 
94  if(contour_topo_flag==0)
96 
97  else
99 
100  change_map_flag=0;
101 
102 
103  }
104 
105  if(add_isohyet_flag==1) {
106 
107  if(contour_isoh_flag==0)
109 
110  else
112 
113  change_map_flag=0;
114 
115  }
116 
117  }
118 
119 for(h=0;h < display_flag+1;h++) {
120 
121  if(fgbgflag==-1)
123 
124  xsize=display_set[display_flag].xmax[h]-
126  ysize=display_set[display_flag].ymax[h]-
128 
129  xbegin=display_set[display_flag].xoff[h];
130  ybegin=display_set[display_flag].yoff[h];
131 
132 /* copy raster backgrounds*/
133 
134  if(add_topo_flag==1 || add_isohyet_flag==1)
135 
136  XCopyArea(display,pixb,pixm,gc,0,0,xsize/10,ysize/10,0,0);
137 
138 /* maps background */
139 
140  if(fgbgflag==-1)
142 
143 
144 /* precipitation MAPS */
145 
146 
147  if(qpf_on==1) {
148 
149  if(map_flag==1) {
150 
151  if(pcpn_time_step==0)
152  time_pos=pcp_flag;
153 
154  else
155  time_pos=40+pcpn_day;
156 
157  plot_map(pixm,h,display_flag,time_pos);
158 
159  }
160 
161 /* gridded precipitation */
162 
163  if(grids_flag==1) {
164 
165  if(pcpn_time_step==0)
166  time_pos=pcp_flag;
167 
168  else
169  time_pos=40+pcpn_day;
170 
171 
172  if(contour_pcp_flag==1)
174  "pcp",time_pos);
175 
176  else
178  "pcp",time_pos);
179 
180  }
181 
182 /* NEXRAD data */
183 
184  if(dflag[0]==1) {
185 
186  if(pcpn_time_step==0)
187  time_pos=50+pcp_flag;
188 
189  else
190  time_pos=90+pcpn_day;
191 
192  if(contour_pcp_flag==1)
194  "pcp",time_pos);
195 
196  else
198  "pcp",time_pos);
199 
200  }
201 
202  if(plot_view > 0 && points_flag==1)
204 
205  }
206 
207  else if(flf_on==1) {
208 
209  if(map_flag==1) {
210 
211  time_pos=100+pcp_flag;
212 
213  plot_rsel(pixm,h,display_flag,time_pos);
214 
215  }
216 
217  if(grids_flag==1) {
218 
219  time_pos=100+pcp_flag;
220 
221  if(contour_pcp_flag==1)
222  contour_frz(pixm,h,display_flag,
223  "pcp",time_pos);
224 
225  else
226  plot_frz(pixm,h,display_flag,
227  "pcp",time_pos);
228 
229  }
230 
231  if(plot_view > 0 && points_flag==1)
233 
234 
235  }
236 
237 
238  /* map backgrounds foreground */
239 
240  if(fgbgflag==1)
242 
243  }
244 
245 
246 if(pcpn_time_step==0)
247  time_pos=pcpn_time;
248 
249 else
250  time_pos=4;
251 
252 if(qpf_on==1) {
253 
254 if(pcpn_time < 2 && pcpn_time_step==0)
255  ltime=pdata[pcpn_day].data_time - 24L*3600L;
256 
257 else
258  ltime=pdata[pcpn_day].data_time;
259 
260 gm=gmtime(&ltime);
261 
262 sprintf(tbuf,"Precipitation %02d-%02d-%02d",gm->tm_mon+1,gm->tm_mday,gm->tm_year);
263 
264 if(pcpn_time_step==0) {
265 
266  if(pcpn_time==3)
267  strcat(tbuf," 06z-12z");
268  else if(pcpn_time==2)
269  strcat(tbuf," 00z-06z");
270  else if(pcpn_time==1)
271  strcat(tbuf," 18z-00z");
272  else if(pcpn_time==0)
273  strcat(tbuf," 12z-18z");
274  }
275 
276 else
277  strcat(tbuf," ending at 12z");
278 
279 XSetForeground(display,gc,qmap[15]);
280 XSetBackground(display,gc,0);
281 
282 if(pdata[pcpn_day].level==1)
283  strcat(tbuf," - Level 1");
284 
285 else if(pdata[pcpn_day].level==2)
286  strcat(tbuf," - Level 2");
287 
288 
289 if(pdata[pcpn_day].used[time_pos]==4)
290  strcat(tbuf," Saved");
291 
292 
293 else if(pdata[pcpn_day].used[time_pos]==3 ||
294  pdata[pcpn_day].used[time_pos]==2)
295  strcat(tbuf," Modified");
296 
297 else if(pdata[pcpn_day].used[time_pos]==1)
298  strcat(tbuf," Not Modified");
299 
300 else
301  strcat(tbuf," - No Data");
302 
303 XSetFont(display,gc,font[2]);
304 
305 yheight=info_font[2]->ascent;
306 
307 XDrawString(display,pixm,gc,35,ymax/10-yheight,
308  tbuf,strlen(tbuf));
309 
310 }
311 
312 else if(flf_on==1) {
313 
314 time_pos=pcpn_time;
315 
316 if(pcpn_time < 2)
317  ltime=zdata[pcpn_day].data_time - 24L*3600L;
318 
319 else
320  ltime=zdata[pcpn_day].data_time;
321 
322 gm=gmtime(&ltime);
323 
324 sprintf(tbuf,"Freezing Level %02d-%02d-%02d",gm->tm_mon+1,gm->tm_mday,gm->tm_year);
325 
326 if(pcpn_time==3)
327  strcat(tbuf," 06z");
328 else if(pcpn_time==2)
329  strcat(tbuf," 00z");
330 else if(pcpn_time==1)
331  strcat(tbuf," 18z");
332 else if(pcpn_time==0)
333  strcat(tbuf," 12z");
334 
335 XSetForeground(display,gc,qmap[15]);
336 XSetBackground(display,gc,0);
337 
338 if(zdata[pcpn_day].level[pcpn_time]==1)
339  strcat(tbuf," - Level 1");
340 
341 else if(zdata[pcpn_day].level[pcpn_time]==2)
342  strcat(tbuf," - Level 2");
343 
344 
345 if(zdata[pcpn_day].used[time_pos]==6)
346  strcat(tbuf," Calculated");
347 
348 
349 else if(zdata[pcpn_day].used[time_pos]==4)
350  strcat(tbuf," Saved");
351 
352 
353 else if(zdata[pcpn_day].used[time_pos]==3 ||
354  zdata[pcpn_day].used[time_pos]==2)
355  strcat(tbuf," Modified");
356 
357 else if(zdata[pcpn_day].used[time_pos]==1)
358  strcat(tbuf," Not Modified");
359 
360 else
361  strcat(tbuf," - No Data");
362 
363 XSetFont(display,gc,font[2]);
364 
365 yheight=info_font[2]->ascent;
366 
367 XDrawString(display,pixm,gc,35,ymax/10-yheight,
368  tbuf,strlen(tbuf));
369 
370 }
371 
372 XSetForeground(display,gc,nmap[15]);
373 
374 XSetFunction(display,gc,GXcopy);
375 
376 if(change_topo_flag==1)
378 
379 else if(change_isohyet_flag==1)
381 
382 else if(change_pcpn_flag==1)
384 
385 else if(change_diff_flag==1)
386  redraw_diff_legend(pixm);
387 
388 else if(change_frz_flag==1)
389  redraw_frz_legend(pixm);
390 
391 else if(change_rpcpn_flag==1)
392  redraw_rpcpn_legend(pixm);
393 
394 else if(first_through != 0)
396 
397 XCopyArea(display,pixm,window,gc,0,0,xsize/10,ysize/10,xbegin/10,ybegin/10);
398 
399 XUndefineCursor(display,window);
400 
401 XDefineCursor(display,window,dotbox_cursor);
402 
403 
404 }
int points_flag
Definition: daily_qc.c:283
int add_isohyet_flag
Definition: daily_qc.c:256
int change_rpcpn_flag
Definition: daily_qc.c:266
int pcpn_time
Definition: daily_qc.c:248
int old_isom
Definition: daily_qc.c:141
int plot_view
Definition: daily_qc.c:200
int contour_pcp_flag
Definition: daily_qc.c:235
XFontStruct * info_font[10]
Definition: daily_qc.c:230
int contour_isoh_flag
Definition: daily_qc.c:252
int pcpn_time_step
Definition: daily_qc.c:238
int change_frz_flag
Definition: daily_qc.c:61
int add_topo_flag
Definition: daily_qc.c:260
int change_pcpn_flag
Definition: daily_qc.c:265
int change_isohyet_flag
Definition: daily_qc.c:264
int change_topo_flag
Definition: daily_qc.c:261
Widget top_level
Definition: daily_qc.c:214
Pixmap pixb
Definition: daily_qc.c:209
int qpf_on
Definition: daily_qc.c:48
int dflag[10]
Definition: daily_qc.c:293
unsigned long qmap[16]
Definition: daily_qc.c:225
int pcpn_day
Definition: daily_qc.c:248
GC gc
Definition: daily_qc.c:224
int pcp_flag
Definition: daily_qc.c:246
void clear_drawable(Drawable pixw)
Definition: daily_qc.c:1607
signed long xclip
Definition: daily_qc.c:274
Display * display
Definition: daily_qc.c:228
signed long yclip
Definition: daily_qc.c:274
unsigned long nmap[16]
Definition: daily_qc.c:225
Font font[10]
Definition: daily_qc.c:231
int map_flag
Definition: daily_qc.c:283
Cursor dotbox_cursor
Definition: daily_qc.c:222
int first_through
Definition: daily_qc.c:166
int flf_on
Definition: daily_qc.c:47
Pixmap pixm
Definition: daily_qc.c:208
Window window
Definition: daily_qc.c:229
int fgbgflag
Definition: daily_qc.c:244
Widget drawing_area
Definition: daily_qc.c:214
int isom
Definition: daily_qc.c:141
int change_map_flag
Definition: daily_qc.c:249
int contour_topo_flag
Definition: daily_qc.c:251
int change_diff_flag
Definition: daily_qc.c:126
int grids_flag
Definition: daily_qc.c:283
Cursor watch_cursor
Definition: daily_qc.c:220
int display_flag
Definition: daily_qc.c:268
void redraw_pcpn_legend(Drawable)
void draw_map(Drawable, int, int)
void plot_topo(Pixmap, int, int)
void redraw_isohyet_legend(Drawable)
void contour_topo(Pixmap, int, int)
void plot_stations(Pixmap, int, int, int)
void plot_map(Pixmap, int, int, int)
void redraw_legend_display(Drawable)
void redraw_topo_legend(Drawable)
void contour_pcpn(Pixmap pixm, int, int, char *, int)
void plot_pcpn(Pixmap pixm, int, int, char *, int)
void contour_isohyets(int, Pixmap, int, int)
void plot_isohyets(int, Pixmap, int, int)
void plot_zstations(Drawable pix, int type, int h, int display_flag)
Definition: plot_stations.c:5
float dmult[4]
Definition: misc.h:540
long xmin[4]
Definition: misc.h:534
long xmax[4]
Definition: misc.h:536
long ymax[4]
Definition: misc.h:537
long xoff[4]
Definition: misc.h:532
long ymin[4]
Definition: misc.h:535
long yoff[4]
Definition: misc.h:533
long ycen[4]
Definition: misc.h:539
long xcen[4]
Definition: misc.h:538
Definition: misc.h:216
time_t data_time
Definition: misc.h:218
time_t data_time
Definition: misc_new.h:437
void write_screen()
Definition: wri.c:2