Mapper
plot_maxmin.c
Go to the documentation of this file.
1 
2 #include "prototypes_new.h"
3 
4 
5 void plot_maxmin(int isom,Pixmap pixm,int h, int display_flag,int type)
6 
7 {
8 extern int tscale;
9 extern float delim[][16];
10 extern Display *display;
11 extern int npoint[2],zoom;
12 extern GC gc;
13 extern struct maxmin *maxmin;
14 extern unsigned long mnmap[16];
15 extern unsigned long nmap[16];
16 extern Widget drawing_area;
17 extern struct display_set display_set[4];
18 int i,j,k,m;
19 int color,MY=10;
20 float xrat,yrat,mult,dmult,cmult;
21 long nx[4],ny[4];
22 Dimension width,height;
23 Arg args[10];
24 unsigned long XSIZE,YSIZE;
25 XPoint point[5];
27 signed long xcen,ycen;
28 int iflag,maxi,maxj,mini,minj,nlong,di[4][4],dj[4][4];
29 int ceni,cenj;
30 float ddi;
31 float xk,yk;
32 int kk;
33 float deltax,deltay;
34 float vx,vy;
35 
36 di[0][0]=-1;
37 di[0][1]= 0;
38 di[0][2]= 0;
39 di[0][3]=-1;
40 
41 dj[0][0]=-1;
42 dj[0][1]=-1;
43 dj[0][2]= 0;
44 dj[0][3]= 0;
45 
46 di[1][0]= 0;
47 di[1][1]= 1;
48 di[1][2]= 1;
49 di[1][3]= 0;
50 
51 dj[1][0]=-1;
52 dj[1][1]=-1;
53 dj[1][2]= 0;
54 dj[1][3]= 0;
55 
56 di[2][0]= 0;
57 di[2][1]= 1;
58 di[2][2]= 1;
59 di[2][3]= 0;
60 
61 dj[2][0]= 0;
62 dj[2][1]= 0;
63 dj[2][2]= 1;
64 dj[2][3]= 1;
65 
66 di[3][0]=-1;
67 di[3][1]= 0;
68 di[3][2]= 0;
69 di[3][3]=-1;
70 
71 dj[3][0]= 0;
72 dj[3][1]= 0;
73 dj[3][2]= 1;
74 dj[3][3]= 1;
75 
83 
84 XtSetArg(args[0],XtNwidth,&width);
85 XtSetArg(args[1],XtNheight,&height);
86 XtGetValues(drawing_area,args,2);
87 
88 XSIZE=(long)width*10L;
89 YSIZE=(long)height*10L;
90 
91 xrat=(float)XSIZE/(float)12800;
92 yrat=(float)YSIZE/(float)9600;
93 
94 if(xrat < yrat)
95  mult=xrat;
96 
97 else
98  mult=yrat;
99 
101 lint1=(long)npoint[0]*(long)MY;
102 lint2=(long)npoint[1]*(long)MY;
103 
104 XSetFillRule(display,gc,WindingRule);
105 
106 mini=minj=0;
107 maxi=maxmin->maxi;
108 maxj=maxmin->maxj;
109 ceni=maxi/2;
110 cenj=maxj/2;
111 
112 if(zoom > 1) {
113 
114  iflag=0;
115 
116  for(i=0;i<maxi;i++) {
117 
118  nlong=(xmin+((float)maxmin->coord[i][cenj].x*cmult-lint1))*zoom + xcen;
119 
120 
121  if(iflag==0 && nlong < xmin)
122  continue;
123 
124  if(iflag==1 && nlong < xmax)
125  continue;
126 
127  if(iflag==0)
128  mini=i;
129 
130  if(iflag==1)
131  maxi=i;
132 
133  iflag++;
134 
135 
136  }
137 
138  iflag=0;
139 
140  for(j=0;j<maxj;j++) {
141 
142  nlong=(ymin+((float)maxmin->coord[ceni][j].y*cmult-lint2))*zoom + ycen;
143 
144 
145  if(iflag==0 && nlong < 0)
146  continue;
147 
148  if(iflag==1 && nlong < YSIZE)
149  continue;
150 
151  if(iflag==0)
152  minj=j;
153 
154 
155  if(iflag==1)
156  maxj=j;
157 
158  iflag++;
159 
160  }
161 
162  }
163 
164 printf("maxj %d maxi %d\n",maxj,maxi);
165 
166 
167 for(i=mini;i<maxi;i++) {
168 
169 for(j=minj;j<maxj;j++) {
170 
171  if(type==0) {
172 
173  if(maxmin->maxvalue[isom][i][j] < 0)
174  continue;
175 
176  ddi=(float)(maxmin->maxvalue[isom][i][j])/(10);
177 
178  }
179 
180  else if(type==1) {
181 
182  if(maxmin->minvalue[isom][i][j] < 0)
183  continue;
184 
185  ddi=(float)(maxmin->minvalue[isom][i][j])/(10);
186 
187 
188 
189 
190  }
191 
192  if(ddi <= -300)
193  continue;
194 
195  if(ddi < delim[tscale][0])
196  color=mnmap[0];
197 
198  else if(ddi >= delim[tscale][14])
199  color=mnmap[15];
200 
201  else {
202 
203  for(h=0;h < 14;h++) {
204 
205  if(ddi >= delim[tscale][h] &&
206  ddi < delim[tscale][h+1]) {
207 
208  color=mnmap[h];
209  break;
210 
211  }
212 
213  }
214 
215  }
216 
217  if(color==0)
218  continue;
219 
220  XSetForeground(display,gc,color);
221 
222  if(j==0) {
223 
224  if(i==0 || i==maxi-1)
225  continue;
226 
227  for(k=2;k<4;k++) {
228 
229  xk=0;
230  yk=0;
231 
232  for(kk=0;kk<4;kk++) {
233 
234  if(zoom <= 1) {
235 
236  xk=xk+xmin+(float)maxmin->coord[i+di[k][kk]][j+dj[k][kk]].x*cmult;
237  yk=yk+ymin+(float)maxmin->coord[i+di[k][kk]][j+dj[k][kk]].y*cmult;
238  vy=ymin+(float)maxmin->coord[i][j].y*cmult;
239  }
240 
241  else {
242 
243  xk=xk+(xmin+((float)maxmin->coord[i+di[k][kk]][j+dj[k][kk]].x*cmult-
244  lint1))*zoom + xcen;
245  yk=yk+(ymin+((float)maxmin->coord[i+di[k][kk]][j+dj[k][kk]].y*cmult-
246  lint2))*zoom + ycen;
247  vy=(ymin+((float)maxmin->coord[i][j].y*cmult-lint2))*zoom + ycen;
248  }
249 
250  }
251 
252  nx[k]=xk/4;
253  ny[k]=yk/4;
254 
255  }
256 
257  deltay= ny[3] - vy;
258 
259  nx[1]=nx[2];
260  nx[0]=nx[3];
261  ny[1]=vy - deltay;
262  ny[0]=vy - deltay;
263 
264 
265  }
266 
267  else if(i==0) {
268 
269  if(j==0 || j==maxj-1)
270  continue;
271 
272 
273  for(k=1;k<3;k++) {
274 
275  xk=0;
276  yk=0;
277 
278  for(kk=0;kk<4;kk++) {
279 
280  if(zoom <= 1) {
281 
282  xk=xk+xmin+(float)maxmin->coord[i+di[k][kk]][j+dj[k][kk]].x*cmult;
283  yk=yk+ymin+(float)maxmin->coord[i+di[k][kk]][j+dj[k][kk]].y*cmult;
284  vx=xmin+(float)maxmin->coord[i][j].x*cmult;
285  }
286 
287  else {
288 
289  xk=xk+(xmin+((float)maxmin->coord[i+di[k][kk]][j+dj[k][kk]].x*cmult-
290  lint1))*zoom + xcen;
291  yk=yk+(ymin+((float)maxmin->coord[i+di[k][kk]][j+dj[k][kk]].y*cmult-
292  lint2))*zoom + ycen;
293  vx=(xmin+((float)maxmin->coord[i][j].x*cmult-lint1))*zoom + xcen;
294 
295  }
296 
297  }
298 
299  nx[k]=xk/4;
300  ny[k]=yk/4;
301 
302 
303  }
304 
305  deltax=nx[1] - vx;
306 
307  ny[0]=ny[1];
308  ny[3]=ny[2];
309  nx[0]=vx - deltax;
310  nx[3]=vx - deltax;
311 
312 
313  }
314 
315  else if(j==maxj-1) {
316 
317  if(i==0 || i==maxi-1)
318  continue;
319 
320  for(k=0;k<2;k++) {
321 
322  xk=0;
323  yk=0;
324 
325  for(kk=0;kk<4;kk++) {
326 
327  if(zoom <= 1) {
328 
329  xk=xk+xmin+(float)maxmin->coord[i+di[k][kk]][j+dj[k][kk]].x*cmult;
330  yk=yk+ymin+(float)maxmin->coord[i+di[k][kk]][j+dj[k][kk]].y*cmult;
331  vy=ymin+(float)maxmin->coord[i][j].y*cmult;
332  }
333 
334  else {
335 
336  xk=xk+(xmin+((float)maxmin->coord[i+di[k][kk]][j+dj[k][kk]].x*cmult-
337  lint1))*zoom + xcen;
338  yk=yk+(ymin+((float)maxmin->coord[i+di[k][kk]][j+dj[k][kk]].y*cmult-
339  lint2))*zoom + ycen;
340  vy=(ymin+((float)maxmin->coord[i][j].y*cmult-
341  lint2))*zoom + ycen;
342 
343  }
344 
345  }
346 
347  nx[k]=xk/4;
348  ny[k]=yk/4;
349 
350  }
351 
352  deltay=vy -ny[0];
353 
354  nx[2]=nx[0];
355  nx[3]=nx[1];
356  ny[2]=vy + deltay;
357  ny[3]=vy + deltay;
358 
359  }
360 
361  else if(i==maxi-1) {
362 
363  if(j==0 || j==maxj-1)
364  continue;
365 
366  for(k=0;k<4;k++) {
367 
368  if(k==1 || k==2)
369  continue;
370 
371  xk=0;
372  yk=0;
373 
374  for(kk=0;kk<4;kk++) {
375 
376  if(zoom <= 1) {
377 
378  xk=xk+xmin+(float)maxmin->coord[i+di[k][kk]][j+dj[k][kk]].x*cmult;
379  yk=yk+ymin+(float)maxmin->coord[i+di[k][kk]][j+dj[k][kk]].y*cmult;
380  vx=xmin+(float)maxmin->coord[i][j].x*cmult;
381 
382  }
383 
384  else {
385 
386  xk=xk+(xmin+((float)maxmin->coord[i+di[k][kk]][j+dj[k][kk]].x*cmult-
387  lint1))*zoom + xcen;
388  yk=yk+(ymin+((float)maxmin->coord[i+di[k][kk]][j+dj[k][kk]].y*cmult-
389  lint2))*zoom + ycen;
390  vx=(xmin+((float)maxmin->coord[i][j].x*cmult-lint1))*zoom + xcen;
391  }
392 
393  }
394 
395  nx[k]=xk/4;
396  ny[k]=yk/4;
397 
398  }
399 
400  deltax= vx - nx[0];
401 
402  ny[1]=ny[0];
403  ny[2]=ny[3];
404 
405  nx[1]=vx + deltax;
406  nx[2]=vx + deltax;
407 
408 
409  }
410 
411 
412  else {
413 
414  for(k=0;k<4;k++) {
415 
416  xk=0;
417  yk=0;
418 
419  for(kk=0;kk<4;kk++) {
420 
421  if(zoom <= 1) {
422 
423  xk=xk+xmin+(float)maxmin->coord[i+di[k][kk]][j+dj[k][kk]].x*cmult;
424  yk=yk+ymin+(float)maxmin->coord[i+di[k][kk]][j+dj[k][kk]].y*cmult;
425 
426  }
427 
428 
429 
430  else {
431 
432  xk=xk+(xmin+((float)maxmin->coord[i+di[k][kk]][j+dj[k][kk]].x*cmult-
433  lint1))*zoom + xcen;
434  yk=yk+(ymin+((float)maxmin->coord[i+di[k][kk]][j+dj[k][kk]].y*cmult-
435  lint2))*zoom + ycen;
436 
437  }
438 
439  }
440 
441  nx[k]=xk/4;
442  ny[k]=yk/4;
443 
444  }
445 
446  }
447 
448  for(k=0;k<4;k++) {
449 
450  point[k].x=(nx[k]+5)/MY;
451  point[k].y=(ny[k]+5)/MY;
452 
453  }
454 
455  point[4].x=point[0].x;
456  point[4].y=point[0].y;
457 
458  XFillPolygon(display,pixm,gc,point,5,Convex,CoordModeOrigin);
459 
460  }
461 
462 }
463 
464 return;
465 
466 }
467 
468 
469 
470 
471 
472 
473 
474 
475 
476 
477 
478 
479 
480 
481 
482 
483 
484 
485 
486 
487 
488 
489 
490 
491 
492 
493 
494 
495 
496 
497 
498 
499 
500 
501 
502 
503 
504 
505 
506 
507 
508 
509 
510 
511 
512 
513 
514 
515 
516 
517 
518 
519 
520 
521 
522 
523 
524 
525 
526 
527 
528 
529 
530 
static int i
Display * display
Definition: mapper.c:159
float mult
Definition: edit_stations.c:6
printf("fbuf is %s\n", fbuf)
int j
Definition: mapp2h.h:48
int k
Definition: mapp2h.h:48
unsigned long nmap[20]
Definition: mapper.c:116
int display_flag
Definition: mapper.c:100
void plot_maxmin(int isom, Pixmap pixm, int h, int display_flag, int type)
Definition: plot_maxmin.c:5
float xrat
long xmax
int dj[4]
int color
float yrat
long ny[4]
long ymax
long lint1
GC gc
Definition: mapper.c:163
float cmult
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]
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 y
Definition: misc_new.h:681
short int x
Definition: misc_new.h:680
int maxj
Definition: misc_new.h:768
short int *** maxvalue
Definition: misc_new.h:765
struct icoord ** coord
Definition: misc_new.h:764
short int *** minvalue
Definition: misc_new.h:766
int maxi
Definition: misc_new.h:767
Definition: mapp2h.h:29
int y
Definition: mapp2h.h:30
int x
Definition: mapp2h.h:30