Mapper
contour_frz.c
Go to the documentation of this file.
1 
2 #include "prototypes_new.h"
3 
4 void contour_frz(Pixmap pixm,int h, int display_flag,char *file,int num)
5 
6 {
7 
8 extern int wfo_all;
9 extern int wfo_in_use[20];
10 extern int pcp_in_use[500];
11 extern struct pcp *pcp;
12 extern Font font[10];
13 extern Display *display;
14 extern int npoint[2],zoom;
15 extern int zscale;
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,m,l;
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[5],dj[5],dy,dx,pnum,kk,mm;
33 float value[5];
34 float x[5],y[5],xx[5],yy[5];
35 int line_style,cap_style,join_style;
36 unsigned line_width;
37 int xint,yint,dup_flag[5];
38 
39 if(pcp_in_use[num]==-1)
40  return;
41 
42 read_file(file,num,pcp);
43 
44 dx=1;dy=1;
45 
46 di[0]=0;dj[0]=0;
47 di[1]=1;dj[1]=0;
48 di[2]=1;dj[2]=1;
49 di[3]=0;dj[3]=1;
50 di[4]=0;dj[4]=0;
51 
52 XSetFont(display,gc,font[0]);
53 
61 
62 XtSetArg(args[0],XtNwidth,&width);
63 XtSetArg(args[1],XtNheight,&height);
64 XtGetValues(drawing_area,args,2);
65 
66 XSIZE=(long)width*10L;
67 YSIZE=(long)height*10L;
68 
69 xrat=(float)XSIZE/(float)12800;
70 yrat=(float)YSIZE/(float)9600;
71 
72 if(xrat < yrat)
73  mult=xrat;
74 
75 else
76  mult=yrat;
77 
79 lint1=(long)npoint[0]*(long)MY;
80 lint2=(long)npoint[1]*(long)MY;
81 
82 line_width=2;
83 line_style=LineSolid;
84 cap_style=CapButt;
85 join_style=JoinMiter;
86 
87 XSetLineAttributes(display,gc,line_width,line_style,cap_style,join_style);
88 
89 for(i=0;i<hrap_grid->maxi-1;i++) {
90 
91 for(j=0;j<hrap_grid->maxj-1;j++) {
92 
93  if(hrap_grid->owner[i][j]==-1)
94  continue;
95 
96  if(wfo_all != 1) {
97 
98  for(m=0;m<20;m++) {
99 
100  if(wfo_in_use[m] == -1)
101  break;
102 
103  if(hrap_grid->owner[i][j]== wfo_in_use[m] &&
104  hrap_grid->owner[i+1][j]== wfo_in_use[m] &&
105  hrap_grid->owner[i+1][j+1]==wfo_in_use[m] &&
106  hrap_grid->owner[i][j+1]== wfo_in_use[m])
107 
108  break;
109 
110  }
111 
112  if(wfo_in_use[m]==-1)
113  continue;
114 
115  }
116 
117 
118  value[0]=(float)pcp->value[i][j]/100;
119  value[1]=(float)pcp->value[i+1][j]/100;
120  value[2]=(float)pcp->value[i+1][j+1]/100;
121  value[3]=(float)pcp->value[i][j+1]/100;
122 
123  if(value[0]<=0.001 && value[0]>=-0.001 &&
124  value[1]<=0.001 && value[1]>=-0.001 &&
125  value[2]<=0.001 && value[2]>=-0.001 &&
126  value[3]<=0.001 && value[3]>=-0.001)
127  continue;
128 
129  value[4]=value[0];
130 
131  for(l=0;l<16;l++) {
132  if(xmap[l]==0)
133  continue;
134 
135  pnum=0;
136 
137  for(m=0;m<4;m++) {
138 
139  if((delim[zscale][l] >= value[m] &&
140  delim[zscale][l] < value[m+1]) ||
141  (delim[zscale][l] < value[m] &&
142  delim[zscale][l] >= value[m+1])) {
143 
144  if(value[m]==value[m+1])
145  continue;
146 
147  x[pnum]=(float)hrap_grid->coord[i+di[m+1]][j+dj[m+1]].x +
148  (float)(hrap_grid->coord[i+di[m]][j+dj[m]].x-
149  hrap_grid->coord[i+di[m+1]][j+dj[m+1]].x)/
150  (value[m]-value[m+1])*
151  (delim[zscale][l]-value[m+1]);
152 
153  y[pnum]=(float)hrap_grid->coord[i+di[m+1]][j+dj[m+1]].y +
154  (float)(hrap_grid->coord[i+di[m]][j+dj[m]].y-
155  hrap_grid->coord[i+di[m+1]][j+dj[m+1]].y)/
156  (value[m]-value[m+1])*
157  (delim[zscale][l]-value[m+1]);
158 
159  for(h=0;h<pnum;h++){
160 
161  if(x[h]==x[pnum] && y[h]==y[pnum])
162  goto hop;
163 
164  }
165 
166  if(pnum==2) {
167 
168  for(kk=0;kk<3;kk++) {
169 
170  dup_flag[kk]=0;
171 
172  for(mm=0;mm<4;mm++) {
173 
174  xint=(int)x[kk];
175  yint=(int)y[kk];
176 
177  if(xint/10==hrap_grid->coord[i+di[mm]][j+dj[mm]].x/10 &&
178  yint/10==hrap_grid->coord[i+di[mm]][j+dj[mm]].y/10)
179  dup_flag[kk]=1;
180 
181 
182  }
183  }
184  }
185  pnum++;
186 
187  hop:
188 
189  pnum=pnum;
190 
191  }
192 
193  }
194 
195 if(pnum==3) {
196 
197  mm=0;
198  for(kk=0;kk<3;kk++){
199 
200  if(dup_flag[kk]==0) {
201  xx[mm]=x[kk];
202  yy[mm++]=y[kk];
203 
204 
205  }
206 
207  }
208 
209 
210 
211  for(kk=0;kk<2;kk++){
212 
213  x[kk]=xx[kk];
214  y[kk]=yy[kk];
215 
216  }
217  pnum=mm;
218 
219  }
220 
221 if(pnum != 2 && pnum != 4)
222  continue;
223 
224  color=xmap[l];
225  XSetForeground(display,gc,color);
226 
227  if(zoom <= 1) {
228 
229  for(k=0;k<pnum;k++) {
230 
231  nx[k]=xmin+x[k]*cmult;
232  ny[k]=ymin+y[k]*cmult;
233 
234  }
235  }
236 
237  else {
238 
239  for(k=0;k<pnum;k++) {
240 
241  nx[k]=(xmin+(x[k]*cmult-lint1))*zoom + xcen;
242  ny[k]=(ymin+(y[k]*cmult-lint2))*zoom + ycen;
243 
244  }
245 
246 }
247  for(k=0;k<pnum;k++) {
248 
249  point[k].x=(nx[k]+5)/MY;
250  point[k].y=(ny[k]+5)/MY;
251 
252 
253  }
254 
255 
256 
257  if(pnum==2)
258  XDrawLine(display,pixm,gc,point[0].x,point[0].y,point[1].x,point[1].y);
259 
260  else {
261 
262  if(delim[zscale][l] < value[1]) {
263 
264  XDrawLine(display,pixm,gc,point[1].x,point[1].y,point[2].x,point[2].y);
265  XDrawLine(display,pixm,gc,point[3].x,point[3].y,point[0].x,point[0].y);
266 
267  }
268 
269  else {
270 
271  XDrawLine(display,pixm,gc,point[0].x,point[0].y,point[1].x,point[1].y);
272  XDrawLine(display,pixm,gc,point[2].x,point[2].y,point[3].x,point[3].y);
273 
274  }
275 
276  }
277  }
278 
279  }
280 }
281 
282 
283 line_width=0;
284 line_style=LineSolid;
285 cap_style=CapButt;
286 join_style=JoinMiter;
287 
288 XSetLineAttributes(display,gc,line_width,line_style,cap_style,join_style);
289 
290 
291 return;
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 
348 
349 
350 
351 
352 
353 
354 
355 
356 
357 
static int i
void contour_frz(Pixmap pixm, int h, int display_flag, char *file, int num)
Definition: contour_frz.c:4
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
double yy
Definition: mapp2h.h:41
int j
Definition: mapp2h.h:48
int k
Definition: mapp2h.h:48
double xx
Definition: mapp2h.h:41
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
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
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
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