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

Last change on this file since 4037 was 3547, checked in by ansari, 17 years ago

Prise en compte table de couleur RGB32768 ds picntools.cc - Reza 17/11/2008

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