DAS  3.1.6 - 18/09/2017
2DPlot.c
Go to the documentation of this file.
1 #include <windows.h>
2 #include <stdio.h>
3 #include <stdlib.h>
4 #include <string.h>
5 #include <malloc.h>
6 #include <math.h>
7 #include <direct.h>
8 #include <fcntl.h>
9 #include <sys/stat.h>
10 #include "mgui.h"
11 #include "DAS_Spatram.h"
12 #include "dcl.h"
13 #include "dil.h"
14 #include "bil.h"
15 #include "DOAS.h"
16 
28 bil BIL; //Bortul Library Structure
31 
32 MOBJECT MDCreate_2DPlot(char *title);
33 
34 
35 
36 /*****************************************************/
37 /*****************************************************/
38 /*
39  Conversion of the x value of the draw area in CCD pixel
40 */
41 int D2D_X2Counts(int x)
42 {
43 
44  return (int)(( (x - 2 * OMUTEMP.oX) / (OMUTEMP.ptimeMat[OMUTEMP.dimx-1].ti_hour - OMUTEMP.ptimeMat[0].ti_hour + 1) ) / (OMUTEMP.COSTX) );
45 
46 }
47 /*****************************************************/
48 /*****************************************************/
49 /*
50  Conversion of the y value of the draw area in ADU counts
51 */
52 
53 double D2D_Y2Counts(int y)
54 {
55 
56  return - OMUTEMP.COSTY * (y - OMUTEMP.oY) + OMUTEMP.tmin;
57 
58 }
59 /*****************************************************/
60 
61 
62 /*****************************************************
63  * This Callback handles the mouse input events
64  * in the Object
65  *****************************************************/
66 void D2D_AreaInputTemp(MOBJECT obj, MEvent *pe, void *a_data)
67 {
68  static int x1, y1, x2, y2, dx, dy;
69  static int xp1, xp2, xp3, yp1, yp2, yp3, p, pol;
70  char buff[128];
71  static int s, f;
72 // int c;
73  MOBJECT shell;
74 
75  switch (pe->type)
76  {
77 
78  case E_SELECT:
79 
80  break;
81  case E_WINDOW_EXIT:
82 
83  break;
84  case E_BUTTON_PRESS:
85  break;
86  case E_WINDOW_ENTER:
87  case E_MOTION:
88  shell = MObjectShell(obj);
89  // Drag di un vertice del poligono
90  if((pe->mouse.state & Button1Mask) && pol)
91  {
92  if(pol == 2)
93  {
94  MDrawXorLine(obj, xp1, yp1, xp2, yp2);
95  MDrawXorLine(obj, xp1, yp1, xp3, yp3);
96  }
97  pol = 2;
98  xp1 = pe->mouse.x;
99  yp1 = pe->mouse.y;
100 
101  }
102  else
103  {
104  if((pe->mouse.state & Button1Mask) && x1 > 0 && f)
105  {
106  /*
107  * Erase the old line and draw the new one
108  * while dragging the mouse (draw in Xor mode)
109  */
110  if(f == 2)
111  MDrawXorBox(obj, x1, y1, (x2 - x1), (y2 - y1));
112  f = 2;
113  MDrawXorBox(obj, x1, y1, (pe->mouse.x - x1), (pe->mouse.y - y1));
114  }
115  // Drag the box
116  if((pe->mouse.state & Button3Mask) && f == 4)
117  {
118  // Clear previous box
119  MDrawXorBox(obj, x1, y1, (x2 - x1), (y2 - y1));
120  x1 += (pe->mouse.x - dx); x2 += (pe->mouse.x - dx);
121  y1 += (pe->mouse.y - dy); y2 += (pe->mouse.y - dy);
122  MDrawXorBox(obj, x1, y1, (x2 - x1), (y2 - y1));
123  dx = pe->mouse.x;
124  dy = pe->mouse.y;
125  }
126  else
127  {
128 // MDrawXorBox(obj, x2 - 25, y2 - 25, 50, 50);
129 
130  x2 = pe->mouse.x;
131 // BIL.BLENS.LocX = x2 / (int) BIL.BLENS.Pix;
132  y2 = pe->mouse.y;
133 // BIL.BLENS.LocY = y2 / (int) BIL.BLENS.Pix;
134 
135 // MDrawXorBox(obj, LocX[s] - 25, LocY[s] - 25, 50, 50);
136  if(x2 >= 0 && x2 < (int) MObjectGetWidth(obj) &&
137  y2 >= 0 && y2 < (int) MObjectGetHeight(obj) )
138  {
139  OMUTEMP.locx = (float)D2D_X2Counts(x2);
140  sprintf(buff, "%.1f", OMUTEMP.locx);
141  MObjectSetText(OMUTEMP.LBL_X, buff);
142 
143  OMUTEMP.locy = (float)D2D_Y2Counts(y2);
144  sprintf(buff, "%.1f", OMUTEMP.locy);
145  MObjectSetText(OMUTEMP.LBL_Y, buff);
146 
147  }
148 
149  }
150  }
151 
152  break;
153  case E_BUTTON_RELEASE:
154  break;
155  }
156 }
157 /*****************************************************/
158 
159 
160 /****************************************************************/
162 {
163 
164  OMUTEMP.wsize = MObjectGetWidth(obj);
165  OMUTEMP.hsize = MObjectGetHeight(obj);
166 
167  OMUTEMP.oX = 10; //Origine asse X
168  OMUTEMP.oY = OMUTEMP.hsize - 10; //Origine asse Y
169  OMUTEMP.eX = OMUTEMP.wsize - 10; //Fine asse X
170  OMUTEMP.eY = 10; //Fine asse Y
171 
172 
173 }
174 /****************************************************************/
175 
176 /****************************************************************/
177 void D2D_PlotAxis(MOBJECT ob, int sx, int sy, int ex, int ey, MTColor col)
178 {
179 
180  //Axis Y Left
181  //DrawArea
182  MDrawLine(ob, sx, sy, sx, ey, col);
183  //Image
184 // DrawYLine(mim, sx, ey, sy, 0,0,0);
185 
186  //Axis X Down
187  //DrawArea
188  MDrawLine(ob, sx, sy, ex, sy, col);
189 // DrawXLine(mim, sy, sx, ex + 1, 0,0,0);
190 
191  //Axis X Up
192  //DrawArea
193  MDrawLine(ob, sx, ey, ex, ey, col);
194 // DrawXLine(mim, sx, sx, ex, 0,0,0);
195 
196  //Axis Y Right
197  //DrawArea
198  MDrawLine(ob, ex, sy, ex, ey, col);
199 // DrawYLine(mim, ex, ey, sy, 0,0,0);
200 
201 }
202 /****************************************************************/
203 
204 
205 /****************************************************************/
206 
207 void D2D_PlotGrid(MOBJECT ob, MIMAGE mim, int sx, int sy, int ex, int ey, int nx, int ny)
208 {
209  int X1, X, Y1, Y;
210  int j;
211  double incry, incrx;
212  // Y Grid
213  incry = (sy - ey) / ny;
214  for(j = 1; j < ny; j++)
215  {
216  X = sx +1 ;
217  Y = sy - ((int)incry * j);
218  X1 = ex;
219  Y1 = sy - ((int)incry * j);
220  MDrawLine(ob, X, Y, X1, Y1, MTCL.white);
221 // DrawXLine(mim, Y, X, X1, 255,255,255);
222 
223  }
224  //X Grid
225  incrx = (double)(ex - sx) / nx;
226  for(j = 1; j < nx; j++)
227  {
228  X = sx + 1 + ((int)incrx * j);
229  Y = sy;
230  X1 = sx + 1 + ((int)incrx * j);
231  Y1 = ey + 1;
232  if(j == (nx/2))
233  {
234  MDrawLine(ob, X, Y, X1, Y1, MTCL.green);
235 // DrawYLine(mim, X, Y1, Y, 0, 255, 0);
236  }
237  else
238  {
239  MDrawLine(ob, X, Y, X1, Y1, MTCL.white);
240 // DrawYLine(mim, X, Y1, Y, 255,255,255);
241  }
242  }
243 }
244 
245 int D2D_findmaxmin(float plotmat[], int xinf, int xsup, int yinf, int ysup)
246 {
247 
248  int t, j, er = 0;
249 
250  float low = 65535;
251  float high= -65535;
252 /*
253  for(t = xinf; t < xsup; t++)
254  {
255  for(j = yinf; j < ysup; j++)
256  {
257  if(plotmat[t * xsup + j] < low) low = plotmat[t * xsup + j];
258  if(plotmat[t * xsup + j] > high) high = plotmat[t * xsup + j];
259  }
260  }
261  OMUTEMP.tmin = low;
262  OMUTEMP.tmax = high;
263  return 0;
264 */
265  for(t = xinf; t < xsup; t++)
266  {
267  for(j = yinf; j < ysup; j++)
268  {
269  er = MTButtonGetActivationStatus(OMUTEMP.tgb[j%ysup]);
270  if (er)
271  {
272 
273  if(plotmat[t * ysup + j] < low) low = plotmat[t * ysup + j];
274  if(plotmat[t * ysup + j] > high) high = plotmat[t * ysup + j];
275 
276  }
277  }
278  }
279  OMUTEMP.tmin = low ;
280  OMUTEMP.tmax = high + (float) 0.5;
281 
282 /*
283  for(t = 0 ; t < idx ; t++)
284  {
285  for(j = 0; j < idy ; j++)
286  {
287  er = MTButtonGetActivationStatus(OMUTEMP.tgb[j%idy]);
288  if (er)
289  {
290 
291  X = (int) (ox + (t * costx));
292  Y = (int) (oy - abs((int)((double)(plotmat[t * idy + j] - min) / costy)));
293  //Y = (int) (oy - ((plotmat[t * idx + j] - min) / costy));
294  X1 = (int) (ox + (t + 1) * costx);
295  Y1 = (int) (oy - abs((int)((double)(plotmat[t * idy + j + idy] - min) / costy)));
296  //Y1 = (int) (oy - ((plotmat[t * idx + j + 1] - min) / costy));
297  MDrawLine(obj, X, Y, X1, Y1, pe[j]);
298  }
299  }
300  }
301 
302  */
303  return 0;
304 }
305 
306 /****************************************************************/
307 void D2D_PoslblX(MOBJECT lbl, int xs, int xe, int xc)
308 {
309  int xd, i,k, xinf,xsup;
310  char buf[16];
311  int linter;
312  double linterinf, lintersup;
313 
314 
315 
316  if (xc)
317  {
318  k = (sizeof OMUTEMP.lblx / sizeof OMUTEMP.lblx[0] ); // number of labels
319 
320  MObjectMap(OMUTEMP.lblx[0]);
321  sprintf(buf,"%d", xs);
322  MObjectSetText(OMUTEMP.lblx[0], buf);
323 
324  MObjectMap(OMUTEMP.lblx[k/2]);
325  sprintf(buf,"%d", xc);
326  MObjectSetText(OMUTEMP.lblx[k/2], buf);
327 
328  MObjectMap(OMUTEMP.lblx[k-1]);
329  sprintf(buf,"%d", xe);
330  MObjectSetText(OMUTEMP.lblx[k -1], buf);
331 
332 
333  xinf = xc - xs;
334  xsup = xe - xc;
335 
336  linterinf = (double)xinf / (k/2);
337  lintersup = (double)xsup / (k/2);
338 
339  for (i = k/2 - 1 ;i> 0; i--)
340  {
341  MObjectMap(OMUTEMP.lblx[i]);
342  sprintf(buf,"%.0lf", xc - ((k/2 - i) * linterinf) );
343  MObjectSetText(OMUTEMP.lblx[i], buf);
344  }
345  for (i = k/2 + 1 ;i< k - 1; i++)
346  {
347  MObjectMap(OMUTEMP.lblx[i]);
348  sprintf(buf,"%.0lf", xc + ((i - k/2) * lintersup) );
349  MObjectSetText(OMUTEMP.lblx[i], buf);
350  }
351 
352  }
353  else
354  {
355  xd = xe - xs + 1;
356  linter = xd / (sizeof OMUTEMP.lblx / sizeof OMUTEMP.lblx[0] - 1);
357  k = (sizeof OMUTEMP.lblx / sizeof OMUTEMP.lblx[0] );
358 
359  MObjectMap(OMUTEMP.lblx[k/2]);
360  xc = xd / 2;
361  sprintf(buf,"%d", xc);
362  MObjectSetText(OMUTEMP.lblx[k/2], buf);
363  }
364 
365 }
366 /****************************************************************/
367 
368 
369 /****************************************************************/
370 
371 void D2D_PoslblY(float l, float h)
372 {
373 
374  float yd, i;
375  int k;
376  char buf[16];
377  float lintery;
378  yd = h - l;
379  lintery = yd / (sizeof OMUTEMP.lbly / sizeof OMUTEMP.lbly[0] );
380 
381  k=sizeof OMUTEMP.lbly / sizeof OMUTEMP.lbly[0] ;
382  for (i =l;i<= h;i+=lintery)
383  {
384  sprintf(buf,"%.1lf", i);
385  if(k==1)
386  sprintf(buf,"%.1lf", h);
387  MObjectSetText(OMUTEMP.lbly[k-1], buf);
388  k--;
389  }
390 }
391 /****************************************************************/
392 void D2D_PlotSpectrum(MOBJECT obj, float plotmat[], int idx,
393  int idy, unsigned long pe[], double costx, double costy, int min, int max,
394  int ox, int oy)
395 {
396  int t, j, k = 0,er = 0;
397  int X1, X, Y1, Y;
398 
399  for(t = 0 ; t < idx ; t++)
400  {
401  for(j = 0; j < idy ; j++)
402  {
403  er = MTButtonGetActivationStatus(OMUTEMP.tgb[j%idy]);
404  if (er)
405  {
406 
407  X = (int) (ox + (t * costx));
408  Y = (int) (oy - abs((int)((double)(plotmat[t * idy + j] - min) / costy)));
409  //Y = (int) (oy - ((plotmat[t * idx + j] - min) / costy));
410  X1 = (int) (ox + (t + 1) * costx);
411  Y1 = (int) (oy - abs((int)((double)(plotmat[t * idy + j + idy] - min) / costy)));
412  //Y1 = (int) (oy - ((plotmat[t * idx + j + 1] - min) / costy));
413  MDrawLine(obj, X, Y, X1, Y1, pe[j]);
414  }
415  }
416  }
417 }
418 /****************************************************************/
419 
420 void ToggleButtCB(MOBJECT p, MVALUE od, void *ad)
421 {
422 
423  RefreshDrArea(OMUTEMP.drawarea000);
424  MObjectRedraw(OMUTEMP.drawarea000);
425 
426 }
427 
429 {
430  maxplotw = MObjectGetWidth(obj);
431  maxploth = MObjectGetHeight(obj);
432 
433  //Assign limits to the Drawing coordinates
434  D2D_AssignOrigin(obj);
435  //Plot the axes
436  D2D_PlotAxis(obj, OMUTEMP.oX, OMUTEMP.oY, OMUTEMP.eX,OMUTEMP.eY, MTCL.black);
437  //Plot grid
438  D2D_PlotGrid(obj, BIL.BLENS.Imim, OMUTEMP.oX, OMUTEMP.oY, OMUTEMP.eX,OMUTEMP.eY, 24, 10);
439 
440  D2D_findmaxmin(OMUTEMP.pTempMat, 0, OMUTEMP.dimx, 0, OMUTEMP.dimy);
441 
442 // OMUTEMP.tmin = 0;
443 // OMUTEMP.tmax = 50;
444 
445  D2D_PoslblY(OMUTEMP.tmin, OMUTEMP.tmax);
446 
447 
448  D2D_PoslblX(OMUTEMP.lblx, (int) OMUTEMP.ptimeMat[0].ti_hour, (int) OMUTEMP.ptimeMat[OMUTEMP.dimx-1].ti_hour, (int)(OMUTEMP.ptimeMat[0].ti_hour + OMUTEMP.ptimeMat[OMUTEMP.dimx-1].ti_hour + 1)/2);
449 
450 
451  //Calculation of the adaptive parameters
452  OMUTEMP.COSTY = (double)(OMUTEMP.tmax - OMUTEMP.tmin) / (double)(OMUTEMP.oY - OMUTEMP.eY);
453  OMUTEMP.COSTX = (double)(OMUTEMP.eX - OMUTEMP.oX) / (double) (OMUTEMP.dimx);
454 
455  D2D_PlotSpectrum(obj, OMUTEMP.pTempMat, OMUTEMP.dimx, OMUTEMP.dimy, MTCL.PLColor, OMUTEMP.COSTX,
456  OMUTEMP.COSTY, (int)OMUTEMP.tmin, (int)OMUTEMP.tmax, OMUTEMP.oX, OMUTEMP.oY);
457 
458 
459  return 0;
460 }
461 
462 int DrawAreaTempCB(MOBJECT obj, MEvent *pexp, void *a_data)
463 {
464 
465  int er =0;
466 
467  er = RefreshDrArea(obj);
468 
469  return er;
470 
471 }
472 
474 {
476 
477  MOBJECT _rowform000;
478 // MOBJECT _tablefrm000;
479  MOBJECT _colform000;
480  MOBJECT _rowform001;
481 // MOBJECT _tablefrm001;
482  MOBJECT _rowform002;
483  MOBJECT _tablefrm002;
484  MOBJECT _colform001;
485  MOBJECT _scrollbar000;
486  MOBJECT _rowform004;
487  MOBJECT _rowform005;
488  MOBJECT _rowform006;
489  MOBJECT _rowform007;
490  MOBJECT _scrollbar001;
491 
492  MOBJECT lbl, tb;
493  MOBJECT rowfrm;
494 
495  int i;
496 
497  _shell000 = MCreateShell(title, 0);
498  MObjectSetBackgroundRGB(_shell000, DPAL.DB_BG[0], DPAL.DB_BG[1], DPAL.DB_BG[2]);
499  MObjectSetShadow(_shell000, WS_SHADOW_IN, 0, 0);
500 
501  _rowform000 = MCreateRowForm(_shell000);
502  MTopAttach(_rowform000, F_ATT_FORM, 1, NULL);
503  MObjectAlign(_rowform000, CENTER_ALIGN, TOP_ALIGN);
504  MObjectSetBackgroundRGB(_rowform000, DPAL.DB_BG[0], DPAL.DB_BG[1], DPAL.DB_BG[2]);
505  MObjectSetResize(_rowform000, True, True);
506 
507  tb = MCreateTableForm(_rowform000, 7);
508  MFormSetSpacing(tb, 1);
509  MObjectSetBackgroundRGB(tb, DPAL.DB_BG[0], DPAL.DB_BG[1], DPAL.DB_BG[2]);
510 
511 // _label000 = MCreateLabel(_tablefrm000, "Measurement Header", HELV_SMALL);
512 // MObjectSetForegroundRGB(_label000, 255, 255, 0);
513 
514  _colform000 = MCreateColForm(_rowform000);
515  MFormSetSpacing(_colform000, 1);
516  MObjectSetBackgroundRGB(_colform000, DPAL.DB_BG[0], DPAL.DB_BG[1], DPAL.DB_BG[2]);
517  MObjectSetResize(_colform000, True, True);
518 
519  _rowform001 = MCreateRowForm(_colform000);
520  MFormSetSpacing(_rowform001, 1);
521  MObjectAlign(_rowform001, LEFT_ALIGN, TOP_ALIGN);
522  MObjectSetBackgroundRGB(_rowform001, DPAL.DB_BG[0], DPAL.DB_BG[1], DPAL.DB_BG[2]);
523  MObjectSetResize(_rowform001, False, False);
524 
525  lbl = MCreateLabel(_rowform001, "Select Channel", HELV_SMALL);
527  MObjectSetForegroundRGB(lbl, DPAL.DB_FG_lblUP[0], DPAL.DB_FG_lblUP[1], DPAL.DB_FG_lblUP[2]);
528  MObjectSetBackgroundRGB(lbl, DPAL.DB_BG_lblUP[0], DPAL.DB_BG_lblUP[1], DPAL.DB_BG_lblUP[2]);
529  MObjectSetTransparency(lbl, 0);
530  MObjectSetShadow(lbl, WS_SHADOW_OUT, 1, 0);
532 
533  tb = MCreateTableForm(_rowform001, 1);
534  MFormSetSpacing(tb, 1);
537  MObjectSetBackgroundRGB(tb, DPAL.DB_BG[0], DPAL.DB_BG[1], DPAL.DB_BG[2]);
539 
540  OMUTEMP.tgb[0] = MCreateTButton(tb, " Optic ", HELV_SMALL);
541  MObjectSetBackgroundRGB(OMUTEMP.tgb[0], DPAL.DB_BG_RButt[0], DPAL.DB_BG_RButt[1], DPAL.DB_BG_RButt[2]);
542  MObjectSetForegroundRGB(OMUTEMP.tgb[0], DPAL.DB_FG_RButt[0], DPAL.DB_FG_RButt[1], DPAL.DB_FG_RButt[2]);
543  MObjectSetTransparency(OMUTEMP.tgb[0], 0);
544  MTButtonSetCallback(OMUTEMP.tgb[0], ToggleButtCB, 0);
545 
546  OMUTEMP.tgb[1] = MCreateTButton(tb, "Int SX ", HELV_SMALL);
547  MObjectSetBackgroundRGB(OMUTEMP.tgb[1], DPAL.DB_BG_RButt[0], DPAL.DB_BG_RButt[1], DPAL.DB_BG_RButt[2]);
548  MObjectSetForegroundRGB(OMUTEMP.tgb[1], DPAL.DB_FG_RButt[0], DPAL.DB_FG_RButt[1], DPAL.DB_FG_RButt[2]);
549  MObjectSetTransparency(OMUTEMP.tgb[1], 0);
550  MTButtonSetCallback(OMUTEMP.tgb[1], ToggleButtCB, 0);
551 
552  OMUTEMP.tgb[2] = MCreateTButton(tb, "Out SX ", HELV_SMALL);
553  MObjectSetBackgroundRGB(OMUTEMP.tgb[2], DPAL.DB_BG_RButt[0], DPAL.DB_BG_RButt[1], DPAL.DB_BG_RButt[2]);
554  MObjectSetForegroundRGB(OMUTEMP.tgb[2], DPAL.DB_FG_RButt[0], DPAL.DB_FG_RButt[1], DPAL.DB_FG_RButt[2]);
555  MObjectSetTransparency(OMUTEMP.tgb[2], 0);
556  MTButtonSetCallback(OMUTEMP.tgb[2], ToggleButtCB, 0);
557 
558  OMUTEMP.tgb[3] = MCreateTButton(tb, "Int DX ", HELV_SMALL);
559  MObjectSetBackgroundRGB(OMUTEMP.tgb[3], DPAL.DB_BG_RButt[0], DPAL.DB_BG_RButt[1], DPAL.DB_BG_RButt[2]);
560  MObjectSetForegroundRGB(OMUTEMP.tgb[3], DPAL.DB_FG_RButt[0], DPAL.DB_FG_RButt[1], DPAL.DB_FG_RButt[2]);
561  MObjectSetTransparency(OMUTEMP.tgb[3], 0);
562  MTButtonSetCallback(OMUTEMP.tgb[3], ToggleButtCB, 0);
563 
564  OMUTEMP.tgb[4] = MCreateTButton(tb, "Out DX ", HELV_SMALL);
565  MObjectSetBackgroundRGB(OMUTEMP.tgb[4], DPAL.DB_BG_RButt[0], DPAL.DB_BG_RButt[1], DPAL.DB_BG_RButt[2]);
566  MObjectSetForegroundRGB(OMUTEMP.tgb[4], DPAL.DB_FG_RButt[0], DPAL.DB_FG_RButt[1], DPAL.DB_FG_RButt[2]);
567  MObjectSetTransparency(OMUTEMP.tgb[4], 0);
568  MTButtonSetCallback(OMUTEMP.tgb[4], ToggleButtCB, 0);
569 
570  OMUTEMP.tgb[5] = MCreateTButton(tb, "Grating", HELV_SMALL);
571  MObjectSetBackgroundRGB(OMUTEMP.tgb[5], DPAL.DB_BG_RButt[0], DPAL.DB_BG_RButt[1], DPAL.DB_BG_RButt[2]);
572  MObjectSetForegroundRGB(OMUTEMP.tgb[5], DPAL.DB_FG_RButt[0], DPAL.DB_FG_RButt[1], DPAL.DB_FG_RButt[2]);
573  MObjectSetTransparency(OMUTEMP.tgb[5], 0);
574  MTButtonSetCallback(OMUTEMP.tgb[5], ToggleButtCB, 0);
575 
576  OMUTEMP.tgb[6] = MCreateTButton(tb, "Spare ", HELV_SMALL);
577  MObjectSetBackgroundRGB(OMUTEMP.tgb[6], DPAL.DB_BG_RButt[0], DPAL.DB_BG_RButt[1], DPAL.DB_BG_RButt[2]);
578  MObjectSetForegroundRGB(OMUTEMP.tgb[6], DPAL.DB_FG_RButt[0], DPAL.DB_FG_RButt[1], DPAL.DB_FG_RButt[2]);
579  MObjectSetTransparency(OMUTEMP.tgb[6], 0);
580  MTButtonSetCallback(OMUTEMP.tgb[6], ToggleButtCB, 0);
581 
582  OMUTEMP.tgb[7] = MCreateTButton(tb, "Elect. ", HELV_SMALL);
583  MObjectSetBackgroundRGB(OMUTEMP.tgb[7], DPAL.DB_BG_RButt[0], DPAL.DB_BG_RButt[1], DPAL.DB_BG_RButt[2]);
584  MObjectSetForegroundRGB(OMUTEMP.tgb[7], DPAL.DB_FG_RButt[0], DPAL.DB_FG_RButt[1], DPAL.DB_FG_RButt[2]);
585  MObjectSetTransparency(OMUTEMP.tgb[7], 0);
586  MTButtonSetCallback(OMUTEMP.tgb[7], ToggleButtCB, 0);
587 
588  OMUTEMP.tgb[8] = MCreateTButton(tb, "Spare ", HELV_SMALL);
589  MObjectSetBackgroundRGB(OMUTEMP.tgb[8], DPAL.DB_BG_RButt[0], DPAL.DB_BG_RButt[1], DPAL.DB_BG_RButt[2]);
590  MObjectSetForegroundRGB(OMUTEMP.tgb[8], DPAL.DB_FG_RButt[0], DPAL.DB_FG_RButt[1], DPAL.DB_FG_RButt[2]);
591  MObjectSetTransparency(OMUTEMP.tgb[8], 0);
592  MTButtonSetCallback(OMUTEMP.tgb[8], ToggleButtCB, 0);
593 
594  OMUTEMP.tgb[9] = MCreateTButton(tb, "Spare ", HELV_SMALL);
595  MObjectSetBackgroundRGB(OMUTEMP.tgb[9], DPAL.DB_BG_RButt[0], DPAL.DB_BG_RButt[1], DPAL.DB_BG_RButt[2]);
596  MObjectSetForegroundRGB(OMUTEMP.tgb[9], DPAL.DB_FG_RButt[0], DPAL.DB_FG_RButt[1], DPAL.DB_FG_RButt[2]);
597  MObjectSetTransparency(OMUTEMP.tgb[9], 0);
598 
599  OMUTEMP.tgb[10] = MCreateTButton(tb, "Spare ", HELV_SMALL);
600  MObjectSetBackgroundRGB(OMUTEMP.tgb[10], DPAL.DB_BG_RButt[0], DPAL.DB_BG_RButt[1], DPAL.DB_BG_RButt[2]);
601  MObjectSetForegroundRGB(OMUTEMP.tgb[10], DPAL.DB_FG_RButt[0], DPAL.DB_FG_RButt[1], DPAL.DB_FG_RButt[2]);
602  MObjectSetTransparency(OMUTEMP.tgb[10], 0);
603 
604  OMUTEMP.tgb[11] = MCreateTButton(tb, "Spare ", HELV_SMALL);
605  MObjectSetBackgroundRGB(OMUTEMP.tgb[11], DPAL.DB_BG_RButt[0], DPAL.DB_BG_RButt[1], DPAL.DB_BG_RButt[2]);
606  MObjectSetForegroundRGB(OMUTEMP.tgb[11], DPAL.DB_FG_RButt[0], DPAL.DB_FG_RButt[1], DPAL.DB_FG_RButt[2]);
607  MObjectSetTransparency(OMUTEMP.tgb[11], 0);
608 
609  OMUTEMP.tgb[12] = MCreateTButton(tb, "Spare ", HELV_SMALL);
610  MObjectSetBackgroundRGB(OMUTEMP.tgb[12], DPAL.DB_BG_RButt[0], DPAL.DB_BG_RButt[1], DPAL.DB_BG_RButt[2]);
611  MObjectSetForegroundRGB(OMUTEMP.tgb[12], DPAL.DB_FG_RButt[0], DPAL.DB_FG_RButt[1], DPAL.DB_FG_RButt[2]);
612  MObjectSetTransparency(OMUTEMP.tgb[12], 0);
613 
614  OMUTEMP.tgb[13] = MCreateTButton(tb, "Spare ", HELV_SMALL);
615  MObjectSetBackgroundRGB(OMUTEMP.tgb[13], DPAL.DB_BG_RButt[0], DPAL.DB_BG_RButt[1], DPAL.DB_BG_RButt[2]);
616  MObjectSetForegroundRGB(OMUTEMP.tgb[13], DPAL.DB_FG_RButt[0], DPAL.DB_FG_RButt[1], DPAL.DB_FG_RButt[2]);
617  MObjectSetTransparency(OMUTEMP.tgb[13], 0);
618 
619  OMUTEMP.tgb[14] = MCreateTButton(tb, "Spare ", HELV_SMALL);
620  MObjectSetBackgroundRGB(OMUTEMP.tgb[14], DPAL.DB_BG_RButt[0], DPAL.DB_BG_RButt[1], DPAL.DB_BG_RButt[2]);
621  MObjectSetForegroundRGB(OMUTEMP.tgb[14], DPAL.DB_FG_RButt[0], DPAL.DB_FG_RButt[1], DPAL.DB_FG_RButt[2]);
622  MObjectSetTransparency(OMUTEMP.tgb[14], 0);
623 
624  OMUTEMP.tgb[15] = MCreateTButton(tb, "Spare ", HELV_SMALL);
625  MObjectSetBackgroundRGB(OMUTEMP.tgb[15], DPAL.DB_BG_RButt[0], DPAL.DB_BG_RButt[1], DPAL.DB_BG_RButt[2]);
626  MObjectSetForegroundRGB(OMUTEMP.tgb[15], DPAL.DB_FG_RButt[0], DPAL.DB_FG_RButt[1], DPAL.DB_FG_RButt[2]);
627  MObjectSetTransparency(OMUTEMP.tgb[15], 0);
628 
629  OMUTEMP.tgb[16] = MCreateTButton(tb, "CCD ", HELV_SMALL);
630  MObjectSetBackgroundRGB(OMUTEMP.tgb[16], DPAL.DB_BG_RButt[0], DPAL.DB_BG_RButt[1], DPAL.DB_BG_RButt[2]);
631  MObjectSetForegroundRGB(OMUTEMP.tgb[16], DPAL.DB_FG_RButt[0], DPAL.DB_FG_RButt[1], DPAL.DB_FG_RButt[2]);
632  MObjectSetTransparency(OMUTEMP.tgb[16], 0);
633 
634 
635  lbl = MCreateLabel(_rowform001, "Percent", HELV_SMALL);
637  MObjectSetForegroundRGB(lbl, DPAL.DB_FG_lblUP[0], DPAL.DB_FG_lblUP[1], DPAL.DB_FG_lblUP[2]);
638  MObjectSetBackgroundRGB(lbl, DPAL.DB_BG_lblUP[0], DPAL.DB_BG_lblUP[1], DPAL.DB_BG_lblUP[2]);
639  MObjectSetTransparency(lbl, 0);
640  MObjectSetShadow(lbl, WS_SHADOW_OUT, 1, 0);
642 
643  tb = MCreateTableForm(_rowform001, 1);
644  MFormSetSpacing(tb, 1);
647  MObjectSetBackgroundRGB(tb, DPAL.DB_BG[0], DPAL.DB_BG[1], DPAL.DB_BG[2]);
649 
650  OMUTEMP.tgb[17] = MCreateTButton(tb, "Pwr CCD", HELV_SMALL);
651  MObjectSetBackgroundRGB(OMUTEMP.tgb[17], DPAL.DB_BG_RButt[0], DPAL.DB_BG_RButt[1], DPAL.DB_BG_RButt[2]);
652  MObjectSetForegroundRGB(OMUTEMP.tgb[17], DPAL.DB_FG_RButt[0], DPAL.DB_FG_RButt[1], DPAL.DB_FG_RButt[2]);
653  MObjectSetTransparency(OMUTEMP.tgb[17], 0);
654 
655  OMUTEMP.tgb[18] = MCreateTButton(tb, "Pwr Pelt", HELV_SMALL);
656  MObjectSetBackgroundRGB(OMUTEMP.tgb[18], DPAL.DB_BG_RButt[0], DPAL.DB_BG_RButt[1], DPAL.DB_BG_RButt[2]);
657  MObjectSetForegroundRGB(OMUTEMP.tgb[18], DPAL.DB_FG_RButt[0], DPAL.DB_FG_RButt[1], DPAL.DB_FG_RButt[2]);
658  MObjectSetTransparency(OMUTEMP.tgb[18], 0);
659 
660 
661 
662 
663  _rowform002 = MCreateRowForm(_colform000);
664  MObjectSetFGColorFromParent(_rowform002, False);
665  MObjectSetResize(_rowform002, True, True);
666 /*
667  _label002 = MCreateLabel(_rowform002, "VarY -> Blu Line", HELV_SMALL);
668  MObjectAlign(_label002, CENTER_ALIGN, TOP_ALIGN);
669  MObjectSetForegroundRGB(_label002, 255, 255, 0);
670  MObjectSetBackgroundRGB(_label002, 117, 117, 169);
671  MObjectSetTransparency(_label002, 0);
672  MObjectSetShadow(_label002, WS_SHADOW_IN, 1, 0);
673  MObjectSetResize(_label002, False, False);
674 */
675  _tablefrm002 = MCreateTableForm(_rowform002, 2);
676  MFormSetSpacing(_tablefrm002, 1);
677 // MTableFormShowGrid(_tablefrm002);
678  MObjectAlign(_tablefrm002, CENTER_ALIGN, TOP_ALIGN);
679  MObjectSetResize(_tablefrm002, True, True);
680 
681  _colform001 = MCreateColForm(_tablefrm002);
682 
683  _scrollbar000 = MCreateScrollBar(_colform001, SBT_VERT, 10, 110);
684  MScrollBarSetSliderColorShift(_scrollbar000, 50);
685 
686  rowfrm = MCreateRowForm(_colform001);
687  MFormSetSpacing(rowfrm, 1);
688  MObjectSetForegroundRGB(rowfrm, DPAL.DB_FG_lblUP[0], DPAL.DB_FG_lblUP[1], DPAL.DB_FG_lblUP[2]);
689  MObjectSetBackgroundRGB(rowfrm, DPAL.DB_BG_lblUP[0], DPAL.DB_BG_lblUP[1], DPAL.DB_BG_lblUP[2]);
690  MObjectSetResize(rowfrm, False, True);
691 
692  for (i=0;i<11;i++)
693  {
694  OMUTEMP.lbly[i] = MCreateLabel(rowfrm, "-------", HELV_SMALL);
695  MObjectSetForegroundRGB(OMUTEMP.lbly[i], DPAL.DB_FG_Albl[0], DPAL.DB_FG_Albl[1], DPAL.DB_FG_Albl[2]);
696  MObjectSetBackgroundRGB(OMUTEMP.lbly[i], DPAL.DB_BG_Albl[0], DPAL.DB_BG_Albl[1], DPAL.DB_BG_Albl[2]);
697  MObjectSetShadow(OMUTEMP.lbly[i], WS_SHADOW_IN, 1, 0);
698  MObjectSetResize(OMUTEMP.lbly[i], True, False);
699  MObjectSetTransparency(OMUTEMP.lbly[i], 0);
700  }
701 
702  _rowform004 = MCreateRowForm(_tablefrm002);
703 
704  OMUTEMP.drawarea000 = MCreateDrawArea(_rowform004, 763, 350);
708 
709  _rowform005 = MCreateRowForm(_tablefrm002);
710  MFormSetSpacing(_rowform005, 1);
711  MObjectSetResize(_rowform005, False, False);
712 
713  tb = MCreateTableForm(_rowform005, 2);
714  MFormSetSpacing(tb, 1);
715  // MTableFormShowGrid(_tablefrm002);
717  MObjectSetResize(tb, True, True);
718 
719  lbl = MCreateLabel(tb, "X:", HELV_SMALL);
721  MObjectSetForegroundRGB(lbl, DPAL.DB_FG_Plbl[0], DPAL.DB_FG_Plbl[1], DPAL.DB_FG_Plbl[2]);
722  MObjectSetBackgroundRGB(lbl, DPAL.DB_BG_Plbl[0], DPAL.DB_BG_Plbl[1], DPAL.DB_BG_Plbl[2]);
723  MObjectSetTransparency(lbl, 0);
724  MObjectSetShadow(lbl, WS_SHADOW_OUT, 1, 0);
726 
727  OMUTEMP.LBL_X = MCreateLabel(tb, "xxxx", HELV_SMALL);
729  MObjectSetForegroundRGB(OMUTEMP.LBL_X, DPAL.DB_FG_Albl[0], DPAL.DB_FG_Albl[1], DPAL.DB_FG_Albl[2]);
730  MObjectSetBackgroundRGB(OMUTEMP.LBL_X, DPAL.DB_BG_Albl[0], DPAL.DB_BG_Albl[1], DPAL.DB_BG_Albl[2]);
731  MObjectSetTransparency(OMUTEMP.LBL_X, 0);
732  MObjectSetShadow(OMUTEMP.LBL_X, WS_SHADOW_OUT, 1, 0);
733  MObjectSetResize(OMUTEMP.LBL_X, False, False);
734 
735  lbl = MCreateLabel(tb, "Y:", HELV_SMALL);
737  MObjectSetForegroundRGB(lbl, DPAL.DB_FG_Plbl[0], DPAL.DB_FG_Plbl[1], DPAL.DB_FG_Plbl[2]);
738  MObjectSetBackgroundRGB(lbl, DPAL.DB_BG_Plbl[0], DPAL.DB_BG_Plbl[1], DPAL.DB_BG_Plbl[2]);
739  MObjectSetTransparency(lbl, 0);
740  MObjectSetShadow(lbl, WS_SHADOW_OUT, 1, 0);
742 
743  OMUTEMP.LBL_Y = MCreateLabel(tb, "yyyy", HELV_SMALL);
745  MObjectSetForegroundRGB(OMUTEMP.LBL_Y, DPAL.DB_FG_Albl[0], DPAL.DB_FG_Albl[1], DPAL.DB_FG_Albl[2]);
746  MObjectSetBackgroundRGB(OMUTEMP.LBL_Y, DPAL.DB_BG_Albl[0], DPAL.DB_BG_Albl[1], DPAL.DB_BG_Albl[2]);
747  MObjectSetTransparency(OMUTEMP.LBL_Y, 0);
748  MObjectSetShadow(OMUTEMP.LBL_Y, WS_SHADOW_OUT, 1, 0);
749  MObjectSetResize(OMUTEMP.LBL_Y, False, False);
750 
751 
752  _rowform006 = MCreateRowForm(_tablefrm002);
753  MFormSetSpacing(_rowform006, 1);
754  MObjectSetResize(_rowform006, True, True);
755 
756  tb = MCreateTableForm(_rowform006, (sizeof OMUTEMP.lblx / sizeof OMUTEMP.lblx[0]));
757  MFormSetSpacing(tb, 1);
758 // MTableFormShowGrid(_tablefrm003);
759  MObjectSetBackgroundRGB(tb, 120, 177, 218);
761 
762 
763  for (i=0;i<(sizeof OMUTEMP.lblx / sizeof OMUTEMP.lblx[0]);i++)
764  {
765  OMUTEMP.lblx[i] = MCreateLabel(tb, "-----", HELV_SMALL);
766  MObjectSetForegroundRGB(OMUTEMP.lblx[i], DPAL.DB_FG_Albl[0], DPAL.DB_FG_Albl[1], DPAL.DB_FG_Albl[2]);
767  MObjectSetBackgroundRGB(OMUTEMP.lblx[i], DPAL.DB_BG_Albl[0], DPAL.DB_BG_Albl[1], DPAL.DB_BG_Albl[2]);
768  MObjectSetShadow(OMUTEMP.lblx[i], WS_SHADOW_IN, 1, 0);
769  MObjectSetResize(OMUTEMP.lblx[i], False, False);
770  MObjectSetTransparency(OMUTEMP.lblx[i], 0);
771  MObjectUnmap(OMUTEMP.lblx[i]);
772  }
773 
774  _rowform007 = MCreateRowForm(_rowform006);
775 
776  _scrollbar001 = MCreateScrollBar(_rowform007, SBT_HOR, 10, 110);
777 
778 
779 // MShellRealize( _shell000);
780 
781  return _shell000;
782 }
short DB_BG_lblUP[3]
Background Capital Letters Labels Color UP.
#define E_BUTTON_RELEASE
Definition: Mguidefs.h:276
mtcl MTCL
Definition: 2DPlot.c:30
void MObjectSetBackgroundRGB(MOBJECT obj, int r, int g, int b)
MOBJECT MCreateTButton(MOBJECT parent, const char *text, MTFont font)
MIMAGE Imim
Definition: bildef.h:14
float locy
Definition: bildef.h:116
MOBJECT lbl
Definition: DFileMan.c:42
#define WS_SHADOW_IN
Definition: Mguidefs.h:958
dil DIL
Definition: 2DPlot.c:26
short DB_FG_Plbl[3]
Foreground PASSIVE Label Colors.
INT32 MVALUE
Definition: Mguidefs.h:1422
void MDrawXorLine(MOBJECT p, int x1, int y1, int x2, int y2)
void MObjectSetShadow(MOBJECT obj, int type, int in, int out)
void MDrawLine(MOBJECT p, int x1, int y1, int x2, int y2, MTColor col)
double D2D_Y2Counts(int y)
Definition: 2DPlot.c:53
struct dtime * ptimeMat
Definition: bildef.h:101
MOBJECT LBL_X
Definition: bildef.h:115
MTColor black
int MObjectGetHeight(MOBJECT obj)
MOBJECT MCreateLabel(MOBJECT parent, const char *text, MTFont font)
Control Panel and push buttons colors .
void MObjectSetResize(MOBJECT obj, int resize_w, int resize_h)
MTColor white
Union for MGui events.
Definition: Mguidefs.h:828
int wsize
Definition: bildef.h:111
short DB_BG_Albl[3]
Background ACTIVE Label Colors.
#define False
Definition: Mguidefs.h:236
void MObjectAlign(MOBJECT obj, int h_align, int v_align)
Definition: Dildef.h:392
void MTableFormSetColAlign(MOBJECT form, int col, int al)
#define SBT_VERT
Definition: Mguidefs.h:1140
MOBJECT lblx[25]
Definition: bildef.h:106
unsigned char ti_hour
Definition: bildef.h:79
MOBJECT tgb[20]
Definition: bildef.h:105
void MObjectSetText(MOBJECT obj, const char *text)
int D2D_X2Counts(int x)
Definition: 2DPlot.c:41
MOBJECT lbly[11]
Definition: bildef.h:107
CARD32 MTColor
Definition: Mguidefs.h:183
short DB_BG_RButt[3]
Background Radio Buttons.
MMouseEvent mouse
Definition: Mguidefs.h:832
int maxplotw
Definition: Spat_Plot.c:51
palette DPAL
Definition: 2DPlot.c:27
MOBJECT LBL_Y
Definition: bildef.h:115
int MObjectGetWidth(MOBJECT obj)
float locx
Definition: bildef.h:116
MOBJECT MObjectShell(MOBJECT obj)
int RefreshDrArea(MOBJECT obj)
Redraw the draw arwa in a 2D Plot window.
Definition: 2DPlot.c:428
MOBJECT MCreateTableForm(MOBJECT parent, int n_cols)
MTColor green
int D2D_findmaxmin(float plotmat[], int xinf, int xsup, int yinf, int ysup)
Definition: 2DPlot.c:245
#define E_BUTTON_PRESS
Definition: Mguidefs.h:275
void MTButtonSetCallback(MOBJECT button, OBJ_VALUE_CB cb, void *data)
int dimx
Definition: bildef.h:113
#define CENTER_ALIGN
Definition: Mguidefs.h:917
int eY
Definition: bildef.h:112
void D2D_AssignOrigin(MOBJECT obj)
Definition: 2DPlot.c:161
MOBJECT MDCreate_2DPlot(char *title)
2DPlot Panel. Procedure that build the shell for the plotting of the LOG files.
Definition: 2DPlot.c:473
double COSTY
Definition: bildef.h:110
void MObjectSetFGColorFromParent(MOBJECT obj, int true_false)
#define HELV_SMALL
Definition: Mguidefs.h:881
MOBJECT MCreateScrollBar(MOBJECT parent, int type, long n, long max)
#define SBT_HOR
Definition: Mguidefs.h:1139
MOBJECT _shell000
Definition: DAS_Spatram.h:3052
void MScrollBarSetSliderColorShift(MOBJECT p, int percentage)
float tmax
Definition: bildef.h:114
Image description.
Definition: Mguidefs.h:436
short DB_FG_Albl[3]
Foreground ACTIVE Label Colors.
omutemp OMUTEMP
Definition: 2DPlot.c:29
MOBJECT MCreateDrawArea(MOBJECT parent, int width, int height)
MOBJECT MCreateColForm(MOBJECT parent)
void ToggleButtCB(MOBJECT p, MVALUE od, void *ad)
Definition: 2DPlot.c:420
void MObjectRedraw(MOBJECT obj)
short DB_BG_Plbl[3]
Background PASSIVE Label Colors.
void D2D_PlotAxis(MOBJECT ob, int sx, int sy, int ex, int ey, MTColor col)
Definition: 2DPlot.c:177
void MDrawAreaSetExposeCallback(MOBJECT obj, OBJ_EVENT_CB cb, void *ad)
Function prototypes.
void D2D_AreaInputTemp(MOBJECT obj, MEvent *pe, void *a_data)
Definition: 2DPlot.c:66
int oY
Definition: bildef.h:112
void MDrawAreaSetInputCallback(MOBJECT obj, OBJ_EVENT_CB cb, void *ad)
MOBJECT MCreateShell(const char *title, int flags)
void D2D_PlotSpectrum(MOBJECT obj, float plotmat[], int idx, int idy, unsigned long pe[], double costx, double costy, int min, int max, int ox, int oy)
Definition: 2DPlot.c:392
int maxploth
Definition: Spat_Plot.c:51
void D2D_PlotGrid(MOBJECT ob, MIMAGE mim, int sx, int sy, int ex, int ey, int nx, int ny)
Definition: 2DPlot.c:207
int hsize
Definition: bildef.h:111
structure for OMU temperatures .
Definition: bildef.h:97
float tmin
Definition: bildef.h:114
short DB_BG[3]
Default Background Color.
int oX
Definition: bildef.h:112
void MDrawXorBox(MOBJECT p, int x, int y, int w, int h)
void MObjectUnmap(MOBJECT obj)
short DB_FG_RButt[3]
Foreground Radio Buttons.
Function prototypes.
bil BIL
Definition: 2DPlot.c:28
static double p
Definition: SOLPOS.C:131
int eX
Definition: bildef.h:112
MTColor PLColor[264]
#define F_ATT_FORM
Definition: Mguidefs.h:1107
Bortul Image Library Structure .
Definition: bildef.h:250
Definition: Dildef.h:674
int DrawAreaTempCB(MOBJECT obj, MEvent *pexp, void *a_data)
Definition: 2DPlot.c:462
void MFormSetSpacing(MOBJECT p, int offset)
void * MOBJECT
Definition: Mguidefs.h:192
blens BLENS
Definition: bildef.h:252
#define True
Definition: Mguidefs.h:235
#define LEFT_ALIGN
Definition: Mguidefs.h:915
#define E_SELECT
Definition: Mguidefs.h:287
int MTButtonGetActivationStatus(MOBJECT o)
int dimy
Definition: bildef.h:113
unsigned int state
buttons and key modifiers mask
Definition: Mguidefs.h:620
void MObjectMap(MOBJECT obj)
#define E_MOTION
Definition: Mguidefs.h:277
void MObjectSetTransparency(MOBJECT obj, CARD8 level)
void MObjectSetForegroundRGB(MOBJECT obj, int r, int g, int b)
MOBJECT drawarea000
Definition: bildef.h:109
#define E_WINDOW_ENTER
Definition: Mguidefs.h:278
int type
Definition: Mguidefs.h:829
MOBJECT MCreateRowForm(MOBJECT parent)
int x
pointer x, y coordinates in event window
Definition: Mguidefs.h:616
void MTopAttach(MOBJECT child, int att_type, int off, MOBJECT obj)
#define TOP_ALIGN
Definition: Mguidefs.h:918
#define E_WINDOW_EXIT
Definition: Mguidefs.h:279
float * pTempMat
Definition: bildef.h:100
double COSTX
Definition: bildef.h:110
short DB_FG_lblUP[3]
Foreground Capital Letters Labels Color UP.
#define WS_SHADOW_OUT
Definition: Mguidefs.h:957
void D2D_PoslblY(float l, float h)
Definition: 2DPlot.c:371
void D2D_PoslblX(MOBJECT lbl, int xs, int xe, int xc)
Definition: 2DPlot.c:307
______________________________________________________________________________________
Generated on Mon Sep 18 2017 11:44:06 for DAS - Rel. 3.1.6 - 18/09/2017.