Mapper
plot_nexrad.c
Go to the documentation of this file.
1 
2 #include "prototypes.h"
3 
4 void plot_nexrad(Pixmap pixm,int h, int display_flag)
5 
6 {
7 
8 extern unsigned long nmap[20];
9 extern struct pcp *spf;
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 GC gc;
16 extern unsigned long xmap[16];
17 extern Widget drawing_area;
18 extern float delim[16];
19 extern struct display_set display_set[4];
20 extern struct hrap_grid *hrap_grid;
21 int i,j,k;
22 int color,MY=10;
23 float xrat,yrat,mult,dmult,cmult;
24 long nx[4],ny[4];
25 Dimension width,height;
26 Arg args[10];
27 unsigned long XSIZE,YSIZE;
28 XPoint point[5];
30 signed long xcen,ycen;
31 int di[4],dj[4],dy,dx,pts,yheight;
32 float value;
33 
34 XSetFont(display,gc,font[4]);
35 yheight=info_font[4]->ascent+2;
36 
37 dx=1;dy=1;
38 
39 di[0]=0;dj[0]=0;
40 di[1]=1;dj[1]=0;
41 di[2]=1;dj[2]=1;
42 di[3]=0;dj[3]=1;
43 
51 
52 XtSetArg(args[0],XtNwidth,&width);
53 XtSetArg(args[1],XtNheight,&height);
54 XtGetValues(drawing_area,args,2);
55 
56 XSIZE=(long)width*10L;
57 YSIZE=(long)height*10L;
58 
59 xrat=(float)XSIZE/(float)12800;
60 yrat=(float)YSIZE/(float)9600;
61 
62 if(xrat < yrat)
63  mult=xrat;
64 
65 else
66  mult=yrat;
67 
69 lint1=(long)npoint[0]*(long)MY;
70 lint2=(long)npoint[1]*(long)MY;
71 XSetFillRule(display,gc,WindingRule);
72 pts=0;
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)spf->value[i][j]/100;
79 
80  if(value<=0.01 && value >=-0.01)
81  continue;
82 
83  for(k=0;k<15;k++) {
84 
85  if(value >= delim[k] &&
86  value < delim[k+1]) {
87 
88  color=xmap[k];
89  break;
90 
91  }
92 
93  }
94 
95  if(k==15)
96  color=xmap[15];
97 
98  if(value < -99.98)
99  color=nmap[16];
100 
101  if(color==0)
102  continue;
103 
104  pts++;
105 
106  XSetForeground(display,gc,color);
107 
108  if(zoom <= 1) {
109 
110  for(k=0;k<4;k++) {
111 
112  nx[k]=xmin+(float)hrap_grid->coord[i+di[k]][j+dj[k]].x*cmult;
113  ny[k]=ymin+(float)hrap_grid->coord[i+di[k]][j+dj[k]].y*cmult;
114 
115  }
116  }
117 
118  else {
119 
120  for(k=0;k<4;k++) {
121 
122  nx[k]=xmin+((float)hrap_grid->coord[i+di[k]][j+dj[k]].x*
123  cmult-lint1)*zoom + xcen;
124  ny[k]=ymin+((float)hrap_grid->coord[i+di[k]][j+dj[k]].y*
125  cmult-lint2)*zoom + ycen;
126 
127 
128  }
129 
130  }
131 
132 
133  for(k=0;k<4;k++) {
134 
135  point[k].x=(nx[k]+5)/MY;
136  point[k].y=(ny[k]+5)/MY;
137 
138 
139  }
140 
141  point[4].x=point[0].x;
142  point[4].y=point[0].y;
143 
144  XFillPolygon(display,pixm,gc,point,5,Convex,CoordModeOrigin);
145 
146 
147  }
148 
149 }
150 
151 return;
152 
153 }
154 
155 
156 
157 
158 
159 
160 
161 
162 
163 
164 
165 
166 
167 
168 
169 
170 
171 
172 
173 
174 
175 
176 
177 
178 
179 
180 
181 
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 
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
unsigned long nmap[20]
Definition: mapper.c:116
struct pcp * spf
Definition: mapper.c:141
int display_flag
Definition: mapper.c:100
void plot_nexrad(Pixmap pixm, int h, int display_flag)
Definition: plot_nexrad.c:4
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
int pts
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 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
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