source: Sophya/trunk/SophyaPI/PIGcont/picntools.cc@ 1829

Last change on this file since 1829 was 1829, checked in by perderos, 24 years ago

Creation du module PIGcont, Drawer de trace de contour / a partir
de l'adaptation du code de trace de contour de GNUplot, interfacage
avec la librairie PI .

Olivier Perdereau 19/12/2001

File size: 20.7 KB
RevLine 
[1829]1// This may look like C code, but it is really -*- C++ -*-
2// Outils de manipulation des Contours O. Perdereau 11/2001
3// LAL (Orsay) / IN2P3-CNRS DAPNIA/SPP (Saclay) / CEA
4
5#include <stdlib.h>
6
7
8#include "picntools.h"
9#include <iostream.h>
10#include "piscdrawwdg.h"
11#include "pi3ddrw.h"
12#include "pigncont.h"
13#include "perrors.h"
14#include "exceptions.h"
15
16//++
17// Class PICnTools
18// Lib PI
19// include pidrwtools.h
20//
21// Classe de fenêtre de dialogue permettant de modifier interactivement
22// Les attributs graphique des "Drawer" attachés aux "PIBaseWdg".
23//--
24// Links Parents
25// PIWindow
26//--
27//++
28// Links Voir aussi
29// PIDrawer
30// PIBaseWdg
31//--
32//++
33// Links Ainsi que
34// PIScDrawWdg
35// PIImage
36// PIDraw3DWdg
37//--
38
39//++
40// Titre Méthodes statiques
41//--
42//++
43// void ShowPICnTools()
44// Méthode statique permettant l'affichage de la fenêtre de contrôle des
45// attributs graphiques des "Drawer". L'instance de la classe
46// "PICnTools" est créée si nécessaire.
47// void HidePICnTools()
48// Désacative (cache) la fenêtre "PICnTools" (méthode statique).
49// void SetCurrentBaseWdg(PIBaseWdgGen* cbw)
50// Méthode statique permettant de sélectionner le "PIBaseWdg" courant.
51// PIBaseWdgGen* GetCurrentBaseWdg()
52// Retourne le "PIBaseWdg" courant (méthode statique).
53//--
54
55
56PICnTools* PICnTools::cwdrwt = NULL;
57PIBaseWdgGen* PICnTools::mCurBW = NULL;
58PIContourDrawer* PICnTools::mCurCDrw = NULL;
59
60/* --Methode-- */
61void PICnTools::ShowPICnTools()
62{
63if (cwdrwt == NULL) cwdrwt = new PICnTools(PIApplicationGetApp());
64// cout << " from PICnTools::ShowPICnTools() - hello "<<endl;
65cwdrwt->Show();
66}
67
68/* --Methode-- */
69void PICnTools::HidePICnTools()
70{
71if (cwdrwt == NULL) return;
72cwdrwt->Hide();
73}
74
75void PICnTools::SetCurrentBaseWdg(PIBaseWdgGen* cbw)
76{
77if (mCurBW == cbw) return;
78mCurBW = cbw;
79}
80
81/* --Methode-- */
82PIBaseWdgGen* PICnTools::GetCurrentBaseWdg()
83{
84return(mCurBW);
85}
86/* --Methode-- */
87void PICnTools::SetCurrentCnDrw( PIContourDrawer* pcd)
88{
89
90 mCurCDrw = pcd ;
91}
92
93/* --Methode-- */
94PIContourDrawer* PICnTools::GetCurrentCnDrw()
95{
96return(mCurCDrw);
97}
98
99/* --Methode-- */
100PICnTools::PICnTools(PIApplication* par)
101: PIWindow((PIMsgHandler*)par, "PIContourTools", PIWK_normal, 240, 240, 150, 150)
102{
103int bsx, bsy, spx, spy;
104
105// On definit la taille a partir de la taille par defaut des composantes
106// PIApplicationPrefCompSize(bsx, bsy);
107par->PrefCompSize(bsx, bsy);
108
109// Espacements entre elts
110spx = bsx/10;
111spy = bsy/4;
112
113int wszx = 5*spx+5.5*bsx;
114int wszy = (1+8*0.85)*bsy+12*(1.85)*spy+15;
115SetSize(wszx, wszy);
116
117//int cpx = spx*2;
118//int offy = cpy+bsy+spy*2;
119
120// Option-Menu Marker, Line, couleur, etc...
121int cpx = 2*spx; // current position
122int cpy = 2*spy;
123
124int bsyo = bsy;
125int spyo = spy;
126bsy = 0.85*bsy; spy = 0.85*spy;
127
128mLab[0] = new PILabel(this, " Couleurs des contours ", 2*bsx, 1.25*bsy, cpx, cpy);
129mLab[0]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
130
131
132cpx += spx+2*bsx;
133mOpt[1] = new PIOptMenu(this, "cwt-opt-1", bsx*1.75, bsy, cpx, cpy);
134mOpt[1]->AppendItem("No.CMap", 200);
135int kcc;
136// Groupement des tables de couleurs
137mCasc[0] = new PIMenu(mOpt[1]->Menu(), "PIStd-128Col");
138mCasc[1] = new PIMenu(mOpt[1]->Menu(), "MIDAS-CMap");
139
140int nsct1,nsct2,nsct3;
141// D'abord les tables standard de PI 32 couleurs
142nsct1 = 5; // Les 5 premieres tables
143for(kcc=0; kcc<nsct1; kcc++)
144 mOpt[1]->AppendItem(PIColorMap::GetStandardColorMapName(kcc).c_str(), 201+kcc);
145// Ensuite les tables standard de PI 128 couleurs
146nsct2 = 9; // Les 4 tables suivantes
147for(kcc=nsct1; kcc<nsct2; kcc++)
148 mCasc[0]->AppendItem(PIColorMap::GetStandardColorMapName(kcc).c_str(), 201+kcc);
149mOpt[1]->AppendPDMenu(mCasc[0]);
150// Apres les tables importees de MIDAS
151nsct3 = PIColorMap::NumberStandardColorMaps()-1; // Les reste jusqu'a l'avant derniere
152for(kcc=nsct2; kcc<nsct3; kcc++)
153 mCasc[1]->AppendItem(PIColorMap::GetStandardColorMapName(kcc).c_str(), 201+kcc);
154
155mOpt[1]->AppendPDMenu(mCasc[1]);
156// Les tables qui restent ( Col16 , ... )
157for(kcc=nsct3; kcc<PIColorMap::NumberStandardColorMaps(); kcc++)
158mOpt[1]->AppendItem(PIColorMap::GetStandardColorMapName(kcc).c_str(), 201+kcc);
159
160mOpt[1]->SetValue(200);
161mOpt[1]->SetBinding(PIBK_elastic, PIBK_elastic, PIBK_elastic, PIBK_elastic);
162cpx += spx+1.75*bsx;
163
164mOpt[0] = new PIOptMenu(this, "cwt-opt-0", bsx*1.75, bsy, cpx, cpy);
165mOpt[0]->AppendItem("Def.Col", 100);
166mOpt[0]->AppendItem("Black", 101);
167mOpt[0]->AppendItem("White", 102);
168mOpt[0]->AppendItem("Grey", 103);
169mOpt[0]->AppendItem("Red", 104);
170mOpt[0]->AppendItem("Blue", 105);
171mOpt[0]->AppendItem("Green", 106);
172mOpt[0]->AppendItem("Yellow", 107);
173mOpt[0]->AppendItem("Magenta", 108);
174mOpt[0]->AppendItem("Cyan", 109);
175mOpt[0]->AppendItem("Turquoise", 110);
176mOpt[0]->AppendItem("NavyBlue", 111);
177mOpt[0]->AppendItem("Orange", 112);
178mOpt[0]->AppendItem("SiennaRed", 113);
179mOpt[0]->AppendItem("Purple", 114);
180mOpt[0]->AppendItem("LimeGreen", 115);
181mOpt[0]->AppendItem("Gold", 116);
182mOpt[0]->AppendItem("Violet", 117);
183mOpt[0]->AppendItem("VioletRed", 118);
184mOpt[0]->AppendItem("BlueViolet", 119);
185mOpt[0]->AppendItem("DarkViolet", 120);
186mOpt[0]->SetValue(100);
187mOpt[0]->SetBinding(PIBK_elastic, PIBK_elastic, PIBK_elastic, PIBK_elastic);
188
189
190cpx = 2*spx;
191cpy += spy+bsyo;
192
193cmapv = new PICMapView(this, "CMapView",wszx-4*spx,20 ,cpx,cpy);
194cmapv->SetBinding(PIBK_elastic, PIBK_elastic, PIBK_elastic, PIBK_elastic);
195
196
197
198cpx = 2*spx; // current position
199cpy += spy+bsy;
200
201// check boxes : lines on/off ; marker on/off
202mCkb[0] = new PICheckBox(this,"LineON", 2001, bsx, bsy, cpx, cpy);
203mCkb[0]->SetState(false);
204mCkb[0]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
205
206// type de ligne pour les niveaux
207cpx += spx+1.75*bsx;
208mOpt[5] = new PIOptMenu(this, "bwt-opt-5", bsx*1.75, bsy, cpx, cpy);
209mOpt[5]->AppendItem("Def.Line", 600);
210mOpt[5]->AppendItem("Thin-Line", 601);
211mOpt[5]->AppendItem("Normal-Line", 602);
212mOpt[5]->AppendItem("Thick-Line", 603);
213mOpt[5]->AppendItem("ThinDashed", 604);
214mOpt[5]->AppendItem("Dashed-Line", 605);
215mOpt[5]->AppendItem("ThickDashed", 606);
216mOpt[5]->AppendItem("ThinDotted", 607);
217mOpt[5]->AppendItem("Dotted-Line", 608);
218mOpt[5]->AppendItem("ThickDotted", 609);
219mOpt[5]->SetValue(600);
220mOpt[5]->SetBinding(PIBK_elastic, PIBK_elastic, PIBK_elastic, PIBK_elastic);
221
222if(mCkb[0]->GetState()==false)
223 mOpt[5]->SetUnSensitive();
224
225
226cpx = 2*spx;
227cpy += spy+bsy;
228//cpx += spx+bsx;
229
230mCkb[1] = new PICheckBox(this,"MarkerON", 2002, bsx, bsy, cpx, cpy);
231mCkb[1]->SetState(true);
232mCkb[1]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
233cpx += spx+1.75*bsx;
234
235mOpt[2] = new PIOptMenu(this, "bwt-opt-2", bsx*1.75, bsy, cpx, cpy);
236mOpt[2]->AppendItem("Def.Mrk", 300);
237mOpt[2]->AppendItem("Mrk Dot(.)", 301);
238mOpt[2]->AppendItem("Mrk Plus(+)", 302);
239mOpt[2]->AppendItem("Mrk Cross(x)", 303);
240mOpt[2]->AppendItem("Mrk Circle", 304);
241mOpt[2]->AppendItem("Mrk FCircle", 305);
242mOpt[2]->AppendItem("Mrk Box", 306);
243mOpt[2]->AppendItem("Mrk FBox", 307);
244mOpt[2]->AppendItem("Mrk Triangle", 308);
245mOpt[2]->AppendItem("Mrk FTriangle", 309);
246mOpt[2]->AppendItem("Mrk Star", 310);
247mOpt[2]->AppendItem("Mrk FStar", 311);
248mOpt[2]->SetValue(300);
249mOpt[2]->SetBinding(PIBK_elastic, PIBK_elastic, PIBK_elastic, PIBK_elastic);
250if(mCkb[1]->GetState()==false)
251 mOpt[2]->SetUnSensitive();
252
253cpx += spx+1.75*bsx;
254mOpt[3] = new PIOptMenu(this, "bwt-opt-3", bsx*1.75, bsy, cpx, cpy);
255mOpt[3]->AppendItem("Mrk 1 pt", 401);
256mOpt[3]->AppendItem("Mrk 3 pt", 403);
257mOpt[3]->AppendItem("Mrk 5 pt", 405);
258mOpt[3]->AppendItem("Mrk 7 pt", 407);
259mOpt[3]->AppendItem("Mrk 9 pt", 409);
260mOpt[3]->AppendItem("Mrk 11 pt", 411);
261mOpt[3]->AppendItem("Mrk 13 pt", 413);
262mOpt[3]->AppendItem("Mrk 15 pt", 415);
263mOpt[3]->SetValue(405);
264mOpt[3]->SetBinding(PIBK_elastic, PIBK_elastic, PIBK_elastic, PIBK_elastic);
265if(mCkb[1]->GetState()==false)
266 mOpt[3]->SetUnSensitive();
267
268
269
270cpx = 2*spx;
271cpy += spy+bsy;
272mLab[1] = new PILabel(this, " Label des contours ", 2*bsx, 1.25*bsy, cpx, cpy);
273mLab[1]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
274cpx += spx+2*bsx;
275// check boxes : label on/off
276mCkb[2] = new PICheckBox(this,"LabelON", 2003, bsx, bsy, cpx, cpy);
277mCkb[2]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
278mCkb[2]->SetState(false);
279
280// fonte pour les niveaux
281cpx = 2*spx;
282cpy += spy+bsy;
283mOpt[4] = new PIOptMenu(this, "bwt-opt-4", bsx*1.75, bsy, cpx, cpy);
284mOpt[4]->AppendItem("Def.Font", 500);
285mOpt[4]->AppendItem("Courier", 501);
286mOpt[4]->AppendItem("Helvetica", 502);
287mOpt[4]->AppendItem("Times", 503);
288mOpt[4]->AppendItem("Symbol-Font", 504);
289mOpt[4]->SetValue(500);
290mOpt[4]->SetBinding(PIBK_elastic, PIBK_elastic, PIBK_elastic, PIBK_elastic);
291if(mCkb[2]->GetState()==false) mOpt[4]->SetUnSensitive();
292
293
294cpx += spx+1.75*bsx;
295mOpt[6] = new PIOptMenu(this, "bwt-opt-6", bsx*1.75, bsy, cpx, cpy);
296mOpt[6]->AppendItem("Def.FontAtt", 700);
297mOpt[6]->AppendItem("Roman-Font", 701);
298mOpt[6]->AppendItem("Bold-Font", 702);
299mOpt[6]->AppendItem("Italic-Font", 703);
300mOpt[6]->AppendItem("BoldItalic", 704);
301mOpt[6]->SetValue(700);
302mOpt[6]->SetBinding(PIBK_elastic, PIBK_elastic, PIBK_elastic, PIBK_elastic);
303if(mCkb[2]->GetState()==false) mOpt[6]->SetUnSensitive();
304
305cpx += spx+1.75*bsx;
306mOpt[7] = new PIOptMenu(this, "bwt-opt-7", bsx*1.75, bsy, cpx, cpy);
307mOpt[7]->AppendItem("Def.FontSz", 800);
308mOpt[7]->AppendItem("Tiny FontSz", 801);
309mOpt[7]->AppendItem("Small FontSz", 802);
310mOpt[7]->AppendItem("Normal FontSz", 803);
311mOpt[7]->AppendItem("Big FontSz", 804);
312mOpt[7]->AppendItem("Huge FontSz", 805);
313mOpt[7]->SetBinding(PIBK_elastic, PIBK_elastic, PIBK_elastic, PIBK_elastic);
314if(mCkb[2]->GetState()==false) mOpt[7]->SetUnSensitive();
315
316cpy += spyo+bsyo;
317cpx = 2*spx;
318mButcf[0] = new PIButton(this, "GetAtt", 2800, bsx, bsy, cpx, cpy);
319mButcf[0]->SetBinding(PIBK_elastic, PIBK_elastic, PIBK_elastic, PIBK_elastic);
320
321cpx += bsx+spx;
322mButcf[1] = new PIButton(this, "SetAtt", 2900, bsx, bsy, cpx, cpy);
323mButcf[1]->SetBinding(PIBK_elastic, PIBK_elastic, PIBK_elastic, PIBK_elastic);
324
325cpx += bsx+spx;
326mButcf[4] = new PIButton(this, "Refresh", 2950, bsx, bsy, cpx, cpy);
327mButcf[4]->SetBinding(PIBK_elastic, PIBK_elastic, PIBK_elastic, PIBK_elastic);
328
329
330cpx = 2*spx;
331cpy += spy+bsyo;
332mLab[2] = new PILabel(this, " Options de calcul des contours ", 3*bsx, bsy, cpx, cpy);
333mLab[2]->SetBinding(PIBK_elastic, PIBK_elastic, PIBK_elastic, PIBK_elastic);
334
335cpy += spy+bsyo;
336
337mOpt[8] = new PIOptMenu(this, "bwt-opt-8", bsx*1.75, bsy, cpx, cpy);
338mOpt[8]->AppendItem("Int. Lin.", 900);
339mOpt[8]->AppendItem("CubicCpl", 901);
340mOpt[8]->AppendItem("B-Spline", 902);
341mOpt[8]->SetBinding(PIBK_elastic, PIBK_elastic, PIBK_elastic, PIBK_elastic);
342
343
344cpx += spx+1.75*bsx;
345mOpt[9] = new PIOptMenu(this, "bwt-opt-9", bsx*1.75, bsy, cpx, cpy);
346mOpt[9]->AppendItem("LevelAuto", 910);
347mOpt[9]->AppendItem("LevelNum ", 911);
348mOpt[9]->AppendItem("LevelInc ", 912);
349mOpt[9]->AppendItem("LevelDisc", 913);
350mOpt[9]->SetBinding(PIBK_elastic, PIBK_elastic, PIBK_elastic, PIBK_elastic);
351
352cpy += spy+bsyo;
353cpx = 2*spx;
354
355mLab[3] = new PILabel(this, "# Contours", bsx, bsy, cpx, cpy);
356mLab[3]->SetBinding(PIBK_elastic, PIBK_elastic, PIBK_elastic, PIBK_elastic);
357cpx += spx+bsx;
358
359mTxt[0] = new PIText(this, "Nlev",bsx, (int)(bsy*1.3), cpx, cpy);
360mTxt[0]->SetBinding(PIBK_elastic, PIBK_elastic, PIBK_elastic, PIBK_elastic);
361mTxt[0]->SetText("5");
362cpx += spx+bsx;
363mLab[4] = new PILabel(this, "Niveaux", bsx, bsy, cpx, cpy);
364mLab[4]->SetBinding(PIBK_elastic, PIBK_elastic, PIBK_elastic, PIBK_elastic);
365cpx += spx+bsx;
366mTxt[1] = new PIText(this, "levels",(int)(bsx*2), (int)(bsy*1.3), cpx, cpy);
367mTxt[1]->SetBinding(PIBK_elastic, PIBK_elastic, PIBK_elastic, PIBK_elastic);
368
369
370bsy = bsyo; spy = spyo;
371
372
373cpx = (wszx-3.2*bsx-2*spx)/2;
374cpy += 2*spy+bsy;
375mButcf[2] = new PIButton(this, "SetPArm", 3100, bsx*1.2, bsyo, cpx, cpy);
376mButcf[2]->SetBinding(PIBK_elastic, PIBK_elastic, PIBK_elastic, PIBK_elastic);
377cpx += bsx*1.2+spx;
378
379/******
380mButcf[3] = new PIButton(this, "Calc", 3200, bsx*0.8, bsyo, cpx, cpy);
381mButcf[3]->ActivatePress(true);
382mButcf[3]->SetBinding(PIBK_elastic, PIBK_elastic, PIBK_elastic, PIBK_elastic);
383*****/
384cpx += bsx*0.8+spx;
385
386
387mButcf[3] = new PIButton(this, "Dismiss", 3777, bsx*1.2, bsyo, cpx, cpy);
388mButcf[3]->SetBinding(PIBK_elastic, PIBK_elastic, PIBK_elastic, PIBK_elastic);
389
390cwdrwt = this;
391
392}
393
394/* --Methode-- */
395PICnTools::~PICnTools()
396{
397
398if (cwdrwt == this) cwdrwt = NULL;
399
400mCurCDrw = NULL;
401int i;
402for(i=0; i<5; i++)
403 delete mLab[i];
404for(i=0; i<2; i++)
405 delete mCkb[i];
406
407for(i=0; i<5; i++) delete mButcf[i];
408for(i=0; i<2; i++) delete mButdr[i];
409for(i=0; i<10; i++) delete mOpt[i];
410for(i=0; i<2; i++) delete mCasc[i];
411for(i=0; i<2; i++) delete mTxt[i];
412
413delete mNlb;
414
415delete cmapv;
416}
417
418// Declaration des differents attributs graphiques
419#define MYNMXCOLORS 21
420static PIColors cols[MYNMXCOLORS] = { PI_NotDefColor,
421 PI_Black, PI_White, PI_Grey,
422 PI_Red, PI_Blue, PI_Green,
423 PI_Yellow, PI_Magenta,
424 PI_Cyan , PI_Turquoise, PI_NavyBlue,
425 PI_Orange, PI_SiennaRed, PI_Purple,
426 PI_LimeGreen, PI_Gold, PI_Violet, PI_VioletRed,
427 PI_BlueViolet, PI_DarkViolet };
428
429static PIMarker mrk[12] = { PI_NotDefMarker, PI_DotMarker,
430 PI_PlusMarker, PI_CrossMarker,
431 PI_CircleMarker, PI_FCircleMarker,
432 PI_BoxMarker, PI_FBoxMarker,
433 PI_TriangleMarker, PI_FTriangleMarker,
434 PI_StarMarker, PI_FStarMarker };
435static PILineAtt line[10] = { PI_NotDefLineAtt, PI_ThinLine, PI_NormalLine, PI_ThickLine,
436 PI_ThinDashedLine, PI_DashedLine, PI_ThickDashedLine,
437 PI_ThinDottedLine, PI_DottedLine, PI_ThickDottedLine };
438
439static PIFontName fntname[5] = { PI_DefaultFont, PI_CourierFont, PI_HelveticaFont,
440 PI_TimesFont, PI_SymbolFont};
441static PIFontAtt fntatt[5] = { PI_NotDefFontAtt, PI_RomanFont, PI_BoldFont,
442 PI_ItalicFont, PI_BoldItalicFont };
443static PIFontSize fntsz[6] = { PI_NotDefFontSize, PI_TinySizeFont, PI_SmallSizeFont,
444 PI_NormalSizeFont, PI_BigSizeFont, PI_HugeSizeFont };
445
446/* --Methode-- */
447void PICnTools::Show()
448{
449PIWindow::Show();
450
451mNDr = 0;
452
453
454UpdateAttFromDrawer();
455return;
456}
457
458static t_contour_kind crbe_algo[3]={CONTOUR_KIND_LINEAR,CONTOUR_KIND_CUBIC_SPL,CONTOUR_KIND_BSPLINE};
459static t_contour_levels_kind lev_kind[4]={LEVELS_AUTO,LEVELS_NUM,LEVELS_INCREMENTAL,LEVELS_DISCRETE};
460
461/* --Methode-- */
462void PICnTools::UpdateAttFromDrawer()
463{
464
465PIContourDrawer* dr = mCurCDrw;
466
467mOpt[0]->SetValue(100);
468mOpt[1]->SetValue(200);
469mOpt[2]->SetValue(300);
470mOpt[3]->SetValue(405);
471mOpt[4]->SetValue(500);
472mOpt[5]->SetValue(600);
473mOpt[6]->SetValue(700);
474mOpt[7]->SetValue(800);
475mOpt[8]->SetValue(800);
476mOpt[9]->SetValue(800);
477
478// etats des check
479
480
481
482if (!dr) return;
483
484mCkb[0]->SetState(mCurCDrw->IsLineOn());
485mCkb[1]->SetState(mCurCDrw->IsMarkOn());
486mCkb[2]->SetState(mCurCDrw->IsLabelOn());
487
488
489int ii,jj,kk;
490PIColors fc = dr->GetFgColAtt();
491for(kk=0; kk<MYNMXCOLORS; kk++)
492 if (fc == cols[kk]) { mOpt[0]->SetValue(100+kk); break; }
493CMapId cmi = dr->GetColMapId();
494if (cmi == CMAP_OTHER) mOpt[1]->SetValue(200);
495else for(kk=0; kk<PIColorMap::NumberStandardColorMaps(); kk++)
496 if (cmi == PIColorMap::GetStandardColorMapId(kk)) { mOpt[1]->SetValue(201+kk); break; }
497PIMarker mk = dr->GetMarker();
498for(kk=0; kk<12; kk++)
499 if (mk == mrk[kk]) { mOpt[2]->SetValue(300+kk); break; }
500kk = dr->GetMarkerSz();
501if (kk < 1) kk = 1;
502if (kk > 15) kk = 15;
503if (kk%2 == 0) kk++;
504mOpt[3]->SetValue(400+kk);
505PIFontName fnm = dr->GetFontName();
506PIFontAtt fat = dr->GetFontAtt();
507PIFontSize fsz = dr->GetFontSz();
508for(ii=0; ii<5; ii++)
509 if (fnm == fntname[ii]) break;
510for(kk=0; kk<5; kk++)
511 if (fat == fntatt[kk]) break;
512for(jj=0; jj<5; jj++)
513 if (fsz == fntsz[jj]) break;
514
515if (ii >= 5) ii = 1;
516if (kk >= 5) kk = 1;
517if (jj >= 6) jj = 3;
518mOpt[4]->SetValue(500+ii);
519mOpt[6]->SetValue(700+kk);
520mOpt[7]->SetValue(800+jj);
521
522PILineAtt lat = dr->GetLineAtt();
523for(kk=0; kk<10; kk++)
524 if (lat == line[kk]) { mOpt[5]->SetValue(600+kk); break; }
525
526// parametres pour calcul des niveaux
527t_contour_kind kind = dr->GetCntKind() ;
528for (ii=0 ; ii<3 ; ii++)
529 if(crbe_algo[ii]==kind)
530 {mOpt[8]->SetValue(900+ii); break;}
531
532t_contour_levels_kind lvkind = dr->GetCntLevelKind() ;
533for (ii=0 ; ii<4 ; ii++)
534 if(crbe_algo[ii]==kind)
535 {mOpt[9]->SetValue(910+ii); break;}
536
537int nlv = dr->NLevels();
538char txt[24];
539sprintf(txt,"%d",nlv);
540mTxt[0]->SetText(txt);
541// cout << " nlv "<<nlv<< endl;
542if(dr->Levels()!=NULL){
543 string strg=" ";
544 for(int kk=0 ; kk<nlv ; kk++) {
545 cout << " dr->Level("<<kk<<") "<<endl;
546 cout <<dr->Level(kk)<<endl;
547 sprintf(txt,"%g",dr->Level(kk));
548 strg += txt;
549 }
550 mTxt[1]->SetText(strg);
551
552}
553
554
555return;
556}
557
558
559
560
561
562
563
564/* --Methode-- */
565//setting des parms du calcul des crbes de niveau
566void PICnTools::SetCalcParm(){
567
568PIContourDrawer* dr = mCurCDrw;
569if(dr==NULL)return;
570int k,ii,jj,kk;
571
572k = mOpt[8]->GetValue()-900; // type de ligne
573dr->SetCntKind(crbe_algo[k]);
574
575k = mOpt[9]->GetValue()-910; // choix des niveaux des courbes
576dr->SetCntLevelKind(lev_kind[k]);
577
578string str=mTxt[0]->GetText();
579ii=atoi(str.c_str());
580dr->SetNLevel(ii);
581char *buff;
582char *tmp;
583str=mTxt[1]->GetText();
584buff=strdup(str.c_str());
585double * zlev=NULL;
586//out << " k= "<<k<<endl;
587if(k==2) {
588 zlev = new double[2];
589 tmp = strtok(buff,",");
590 zlev[0] = atof(tmp);
591 tmp = strtok(NULL,",");
592 zlev[1]= atof(tmp);
593 dr->SetMyLevels(zlev,2);
594 // cas LEVELS_INCREMENTAL
595}else if (k==3){
596 // cas LEVELS_DISCRETE
597 zlev = new double[ii];
598 tmp = strtok(buff,",");
599 for(jj=0 ; jj<ii ; jj++){
600 zlev[jj]= atof(tmp);
601 cout << " jj "<<zlev[jj]<<endl;
602 tmp = strtok(NULL,",");
603 }
604 dr->SetMyLevels(zlev,ii);
605
606
607
608}
609
610//
611//
612
613dr->CalcContour();
614dr->Refresh();
615
616if(zlev!=NULL) {
617 delete[] zlev;
618 zlev=NULL;
619}
620
621}
622
623/* --Methode-- */
624void PICnTools::SetGraphicAtt(bool refr)
625{
626
627 if ( mCurCDrw== NULL ) return;
628 // etats des boutons
629
630 mCurCDrw->SetLineOn(mCkb[0]->GetState());
631 mCurCDrw->SetMarkOn(mCkb[1]->GetState());
632 mCurCDrw->SetLabelOn(mCkb[2]->GetState());
633
634
635 int k,ii,jj,kk;
636 k = mOpt[0]->GetValue()-100; // -> COULEUR
637 if ( (k < 0) || (k >= MYNMXCOLORS) ) k = 0;
638 mCurCDrw->SetColAtt(cols[k]);
639 double zmin=0;
640 double zmax=1.;
641 if(mCurCDrw!=NULL){
642 zmin = mCurCDrw->Zmin();
643 zmax = mCurCDrw->Zmax();
644 }
645
646 k = mOpt[1]->GetValue()-200; // --> COLOR MAP
647 if (k == 0){
648 mCurCDrw->SetColMapId(CMAP_OTHER);
649
650 }else{
651 mCurCDrw->SetColMapId(PIColorMap::GetStandardColorMapId(k-1));
652 cmapv->SetColMapId(PIColorMap::GetStandardColorMapId(k-1),false, zmin , zmax,true);
653 }
654 k = mOpt[2]->GetValue()-300; // Marker
655 if ( (k < 0) || (k > 11) ) k = 0;
656 kk = mOpt[3]->GetValue()-400; // marker SIZE
657 if ( (kk < 1) || (kk > 27) ) kk = 1;
658 mCurCDrw->SetMarkerAtt(kk, mrk[k]);
659
660 ii = (mOpt[4]->GetValue()-500);
661 jj = (mOpt[6]->GetValue()-700);
662 kk = (mOpt[7]->GetValue()-800);
663 mCurCDrw->SetFont(fntname[ii], fntsz[kk], fntatt[jj]);
664
665 k = mOpt[5]->GetValue()-600;
666 if ( (k < 0) || (k > 9) ) k = 0;
667 mCurCDrw->SetLineAtt(line[k]);
668
669 if (refr)
670 if (mCurBW !=NULL)
671 mCurBW->Refresh();
672 else
673 mCurCDrw->Refresh();
674 else
675 mCurCDrw->Refresh();
676
677}
678
679/* --Methode-- */
680void PICnTools::Process(PIMessage msg, PIMsgHandler* /*sender*/, void* /*data*/)
681{
682 char strg[64];
683 PIMessage mod = ModMsg(msg);
684 msg = UserMsg(msg);
685 double zmin=0;
686 double zmax=1.;
687 if(mCurCDrw!=NULL){
688 zmin = mCurCDrw->Zmin();
689 zmax = mCurCDrw->Zmax();
690 }
691
692 if(msg>=200&&msg<300){
693 int k = mOpt[1]->GetValue()-200; // _> COLOR MAP
694 if (k == 0){
695 cmapv->SetColMapId(CMAP_OTHER,false, zmin , zmax,true);
696 }else{
697 cmapv->SetColMapId(PIColorMap::GetStandardColorMapId(k-1),false , zmin , zmax,true);
698 }
699
700 }
701 switch (msg) {
702 case 2001 :
703 if(mCkb[0]->GetState()==false)
704 mOpt[5]->SetUnSensitive();
705 else
706 mOpt[5]->SetSensitive();
707
708 break;
709
710 case 2002 :
711 if(mCkb[1]->GetState()==false){
712 mOpt[2]->SetUnSensitive();
713 mOpt[3]->SetUnSensitive();
714 }else{
715 mOpt[2]->SetSensitive();
716 mOpt[3]->SetSensitive();
717 }
718
719 case 2003 :
720 if(mCkb[2]->GetState()==false){
721 mOpt[4]->SetUnSensitive();
722 mOpt[6]->SetUnSensitive();
723 mOpt[7]->SetUnSensitive();
724 }else{
725 mOpt[4]->SetSensitive();
726 mOpt[6]->SetSensitive();
727 mOpt[7]->SetSensitive();
728 }
729
730
731 break;
732 case 2800 :
733 UpdateAttFromDrawer();
734 break;
735
736 case 2900 :
737 SetGraphicAtt(false);
738 break;
739
740 case 2950 :
741 SetGraphicAtt(true);
742 break;
743
744 case 3100 :
745 SetCalcParm();
746 break;
747
748
749 case 3200 :
750
751 break;
752
753 case 3777 :
754 Hide();
755 break;
756
757 /* On ne change pas les options choisies Reza+cmv 2/10/98
758 mOpt[0]->SetValue(100);
759 mOpt[1]->SetValue(200);
760 mOpt[2]->SetValue(300);
761 mOpt[3]->SetValue(405);
762 mOpt[4]->SetValue(500);
763 mOpt[5]->SetValue(600);
764 */
765 break;
766
767 default :
768 break;
769 }
770
771return;
772}
773
774
775
Note: See TracBrowser for help on using the repository browser.