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

Last change on this file since 2250 was 2250, checked in by perderos, 23 years ago

Modifs pour decoder les options de contour/ntcont passees
en ligne + qqes petites modifs ds la fenetre des tools

O Perdereau LAL-Orsay
07/11/2002

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