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

Last change on this file since 1905 was 1905, checked in by ansari, 24 years ago

Adaptation a l'introduction de la classe PIGraphicAtt - Reza 18/02/2002

File size: 21.0 KB
Line 
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#include "machdefs.h"
8#include <string>
9#include <iostream.h>
10
11#include "picntools.h"
12#include "pigncont.h"
13
14//++
15// Class PICnTools
16// Lib PIGcont
17// include pidcntools.h
18//
19// Classe de fenêtre de dialogue permettant de modifier interactivement
20// les attributs graphique des "PIContourDrawer" ainsi que
21// les parametres de calcul des contours.
22//--
23// Links Parents
24// PIWindow
25//--
26//++
27// Links Voir aussi
28// PIDrawer
29// PIBaseWdg
30// PIContourDrawer
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 "PIContourDrawer". L'instance de la classe
46// "PICnTools" est créée si nécessaire. Un seul "PIContourDrawer" est gere.
47// void HidePICnTools()
48// Désactive (cache) la fenêtre "PICnTools" (méthode statique).
49// void SetCurrentBaseWdg(PIBaseWdgGen* cbw)
50// Méthode statique permettant de s'attacher au "PIBaseWdg" courant.
51// PIBaseWdgGen* GetCurrentBaseWdg()
52// Retourne le "PIBaseWdg" courant (méthode statique).
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).
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
72/* --Methode-- */
73void PICnTools::HidePICnTools()
74{
75if (cwdrwt == NULL) return;
76cwdrwt->Hide();
77}
78
79void PICnTools::SetCurrentBaseWdg(PIBaseWdgGen* cbw)
80{
81if (mCurBW == cbw) return;
82mCurBW = cbw;
83}
84
85/* --Methode-- */
86PIBaseWdgGen* PICnTools::GetCurrentBaseWdg()
87{
88return(mCurBW);
89}
90/* --Methode-- */
91void PICnTools::SetCurrentCnDrw( PIContourDrawer* pcd)
92{
93
94 mCurCDrw = pcd ;
95}
96
97/* --Methode-- */
98PIContourDrawer* PICnTools::GetCurrentCnDrw()
99{
100return(mCurCDrw);
101}
102
103/* --Methode-- */
104PICnTools::PICnTools(PIApplication* par)
105: PIWindow((PIMsgHandler*)par, "PIContourTools", PIWK_normal, 240, 240, 150, 150)
106{
107int bsx, bsy, spx, spy;
108
109// On definit la taille a partir de la taille par defaut des composantes
110// PIApplicationPrefCompSize(bsx, bsy);
111par->PrefCompSize(bsx, bsy);
112
113// Espacements entre elts
114spx = bsx/10;
115spy = bsy/4;
116
117int wszx = 5*spx+5.5*bsx;
118int wszy = (1+8*0.85)*bsy+12*(1.85)*spy+15;
119SetSize(wszx, wszy);
120
121//int cpx = spx*2;
122//int offy = cpy+bsy+spy*2;
123
124// Option-Menu Marker, Line, couleur, etc...
125int cpx = 2*spx; // current position
126int cpy = 2*spy;
127
128int bsyo = bsy;
129int spyo = spy;
130bsy = 0.85*bsy; spy = 0.85*spy;
131
132mLab[0] = new PILabel(this, " Couleurs des contours ", 2*bsx, 1.25*bsy, cpx, cpy);
133mLab[0]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
134
135
136cpx += spx+2*bsx;
137mOpt[1] = new PIOptMenu(this, "cwt-opt-1", bsx*1.75, bsy, cpx, cpy);
138mOpt[1]->AppendItem("No.CMap", 200);
139int kcc;
140// Groupement des tables de couleurs
141mCasc[0] = new PIMenu(mOpt[1]->Menu(), "PIStd-128Col");
142mCasc[1] = new PIMenu(mOpt[1]->Menu(), "MIDAS-CMap");
143
144int nsct1,nsct2,nsct3;
145// D'abord les tables standard de PI 32 couleurs
146nsct1 = 5; // Les 5 premieres tables
147for(kcc=0; kcc<nsct1; kcc++)
148 mOpt[1]->AppendItem(PIColorMap::GetStandardColorMapName(kcc).c_str(), 201+kcc);
149// Ensuite les tables standard de PI 128 couleurs
150nsct2 = 9; // Les 4 tables suivantes
151for(kcc=nsct1; kcc<nsct2; kcc++)
152 mCasc[0]->AppendItem(PIColorMap::GetStandardColorMapName(kcc).c_str(), 201+kcc);
153mOpt[1]->AppendPDMenu(mCasc[0]);
154// Apres les tables importees de MIDAS
155nsct3 = PIColorMap::NumberStandardColorMaps()-1; // Les reste jusqu'a l'avant derniere
156for(kcc=nsct2; kcc<nsct3; kcc++)
157 mCasc[1]->AppendItem(PIColorMap::GetStandardColorMapName(kcc).c_str(), 201+kcc);
158
159mOpt[1]->AppendPDMenu(mCasc[1]);
160// Les tables qui restent ( Col16 , ... )
161for(kcc=nsct3; kcc<PIColorMap::NumberStandardColorMaps(); kcc++)
162mOpt[1]->AppendItem(PIColorMap::GetStandardColorMapName(kcc).c_str(), 201+kcc);
163
164mOpt[1]->SetValue(200);
165mOpt[1]->SetBinding(PIBK_elastic, PIBK_elastic, PIBK_elastic, PIBK_elastic);
166cpx += spx+1.75*bsx;
167
168mOpt[0] = new PIOptMenu(this, "cwt-opt-0", bsx*1.75, bsy, cpx, cpy);
169mOpt[0]->AppendItem("Def.Col", 100);
170mOpt[0]->AppendItem("Black", 101);
171mOpt[0]->AppendItem("White", 102);
172mOpt[0]->AppendItem("Grey", 103);
173mOpt[0]->AppendItem("Red", 104);
174mOpt[0]->AppendItem("Blue", 105);
175mOpt[0]->AppendItem("Green", 106);
176mOpt[0]->AppendItem("Yellow", 107);
177mOpt[0]->AppendItem("Magenta", 108);
178mOpt[0]->AppendItem("Cyan", 109);
179mOpt[0]->AppendItem("Turquoise", 110);
180mOpt[0]->AppendItem("NavyBlue", 111);
181mOpt[0]->AppendItem("Orange", 112);
182mOpt[0]->AppendItem("SiennaRed", 113);
183mOpt[0]->AppendItem("Purple", 114);
184mOpt[0]->AppendItem("LimeGreen", 115);
185mOpt[0]->AppendItem("Gold", 116);
186mOpt[0]->AppendItem("Violet", 117);
187mOpt[0]->AppendItem("VioletRed", 118);
188mOpt[0]->AppendItem("BlueViolet", 119);
189mOpt[0]->AppendItem("DarkViolet", 120);
190mOpt[0]->SetValue(100);
191mOpt[0]->SetBinding(PIBK_elastic, PIBK_elastic, PIBK_elastic, PIBK_elastic);
192
193
194cpx = 2*spx;
195cpy += spy+bsyo;
196
197cmapv = new PICMapView(this, "CMapView",wszx-4*spx,20 ,cpx,cpy);
198cmapv->SetBinding(PIBK_elastic, PIBK_elastic, PIBK_elastic, PIBK_elastic);
199
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;
276mLab[1] = new PILabel(this, " Label des contours ", 2*bsx, 1.25*bsy, cpx, cpy);
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);
315mOpt[7]->AppendItem("Large FontSz", 804);
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;
336mLab[2] = new PILabel(this, " Options de calcul des contours ", 3*bsx, bsy, cpx, cpy);
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
359mLab[3] = new PILabel(this, "# Contours", bsx, bsy, cpx, cpy);
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,
443 PI_NormalSizeFont, PI_LargeSizeFont, PI_HugeSizeFont };
444
445/* --Methode-- */
446void PICnTools::Show()
447{
448PIWindow::Show();
449
450mNDr = 0;
451
452
453UpdateAttFromDrawer();
454return;
455}
456// Liste des differentes options de calcul
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());
486
487
488int ii,jj,kk;
489PIColors fc = dr->GetGraphicAtt().GetFgColor();
490for(kk=0; kk<MYNMXCOLORS; kk++)
491 if (fc == cols[kk]) { mOpt[0]->SetValue(100+kk); break; }
492CMapId cmi = dr->GetGraphicAtt().GetColMapId();
493if (cmi == CMAP_OTHER) mOpt[1]->SetValue(200);
494else for(kk=0; kk<PIColorMap::NumberStandardColorMaps(); kk++)
495 if (cmi == PIColorMap::GetStandardColorMapId(kk)) { mOpt[1]->SetValue(201+kk); break; }
496PIMarker mk = dr->GetGraphicAtt().GetMarker();
497for(kk=0; kk<12; kk++)
498 if (mk == mrk[kk]) { mOpt[2]->SetValue(300+kk); break; }
499kk = dr->GetGraphicAtt().GetMarkerSz();
500if (kk < 1) kk = 1;
501if (kk > 15) kk = 15;
502if (kk%2 == 0) kk++;
503mOpt[3]->SetValue(400+kk);
504PIFontName fnm = dr->GetGraphicAtt().GetFontName();
505PIFontAtt fat = dr->GetGraphicAtt().GetFontAtt();
506PIFontSize fsz = dr->GetGraphicAtt().GetFontSz();
507for(ii=0; ii<5; ii++)
508 if (fnm == fntname[ii]) break;
509for(kk=0; kk<5; kk++)
510 if (fat == fntatt[kk]) break;
511for(jj=0; jj<5; jj++)
512 if (fsz == fntsz[jj]) break;
513
514if (ii >= 5) ii = 1;
515if (kk >= 5) kk = 1;
516if (jj >= 6) jj = 3;
517mOpt[4]->SetValue(500+ii);
518mOpt[6]->SetValue(700+kk);
519mOpt[7]->SetValue(800+jj);
520
521PILineAtt lat = dr->GetGraphicAtt().GetLineAtt();
522for(kk=0; kk<10; kk++)
523 if (lat == line[kk]) { mOpt[5]->SetValue(600+kk); break; }
524
525// parametres pour calcul des niveaux
526t_contour_kind kind = dr->GetCntKind() ;
527for (ii=0 ; ii<3 ; ii++)
528 if(crbe_algo[ii]==kind)
529 {mOpt[8]->SetValue(900+ii); break;}
530
531t_contour_levels_kind lvkind = dr->GetCntLevelKind() ;
532for (ii=0 ; ii<4 ; ii++)
533 if(crbe_algo[ii]==kind)
534 {mOpt[9]->SetValue(910+ii); break;}
535
536int nlv = dr->NLevels();
537char txt[24];
538sprintf(txt,"%d",nlv);
539mTxt[0]->SetText(txt);
540// cout << " nlv "<<nlv<< endl;
541if(dr->Levels()!=NULL){
542 string strg=" ";
543 for(int kk=0 ; kk<nlv ; kk++) {
544 cout << " dr->Level("<<kk<<") "<<endl;
545 cout <<dr->Level(kk)<<endl;
546 sprintf(txt,"%g",dr->Level(kk));
547 strg += txt;
548 }
549 mTxt[1]->SetText(strg);
550
551}
552
553
554return;
555}
556
557
558
559
560
561
562
563/* --Methode-- */
564//setting des parms du calcul des crbes de niveau
565void PICnTools::SetCalcParm(){
566
567PIContourDrawer* dr = mCurCDrw;
568if(dr==NULL)return;
569int k,ii,jj,kk;
570
571k = mOpt[8]->GetValue()-900; // type de ligne
572dr->SetCntKind(crbe_algo[k]);
573
574k = mOpt[9]->GetValue()-910; // choix des niveaux des courbes
575dr->SetCntLevelKind(lev_kind[k]);
576
577string str=mTxt[0]->GetText();
578ii=atoi(str.c_str());
579dr->SetNLevel(ii);
580char *buff;
581char *tmp;
582str=mTxt[1]->GetText();
583buff=strdup(str.c_str());
584double * zlev=NULL;
585//out << " k= "<<k<<endl;
586if(k==2) {
587 zlev = new double[2];
588 tmp = strtok(buff,",");
589 zlev[0] = atof(tmp);
590 tmp = strtok(NULL,",");
591 zlev[1]= atof(tmp);
592 dr->SetMyLevels(zlev,2);
593 // cas LEVELS_INCREMENTAL
594}else if (k==3){
595 // cas LEVELS_DISCRETE
596 zlev = new double[ii];
597 tmp = strtok(buff,",");
598 for(jj=0 ; jj<ii ; jj++){
599 zlev[jj]= atof(tmp);
600 cout << " jj "<<zlev[jj]<<endl;
601 tmp = strtok(NULL,",");
602 }
603 dr->SetMyLevels(zlev,ii);
604
605
606
607}
608
609//
610//
611
612dr->CalcContour();
613dr->Refresh();
614
615if(zlev!=NULL) {
616 delete[] zlev;
617 zlev=NULL;
618}
619
620}
621
622/* --Methode-- */
623void PICnTools::SetGraphicAtt(bool refr)
624{
625
626 if ( mCurCDrw== NULL ) return;
627 // etats des boutons
628
629 mCurCDrw->SetLineOn(mCkb[0]->GetState());
630 mCurCDrw->SetMarkOn(mCkb[1]->GetState());
631 mCurCDrw->SetLabelOn(mCkb[2]->GetState());
632
633
634 int k,ii,jj,kk;
635 k = mOpt[0]->GetValue()-100; // -> COULEUR
636 if ( (k < 0) || (k >= MYNMXCOLORS) ) k = 0;
637 mCurCDrw->GetGraphicAtt().SetColAtt(cols[k]);
638 double zmin=0;
639 double zmax=1.;
640 if(mCurCDrw!=NULL){
641 zmin = mCurCDrw->Zmin();
642 zmax = mCurCDrw->Zmax();
643 }
644
645 k = mOpt[1]->GetValue()-200; // --> COLOR MAP
646 if (k == 0){
647 mCurCDrw->GetGraphicAtt().SetColMapId(CMAP_OTHER);
648
649 }else{
650 mCurCDrw->GetGraphicAtt().SetColMapId(PIColorMap::GetStandardColorMapId(k-1));
651 cmapv->SetColMapId(PIColorMap::GetStandardColorMapId(k-1),false, zmin , zmax,true);
652 }
653 k = mOpt[2]->GetValue()-300; // Marker
654 if ( (k < 0) || (k > 11) ) k = 0;
655 kk = mOpt[3]->GetValue()-400; // marker SIZE
656 if ( (kk < 1) || (kk > 27) ) kk = 1;
657 mCurCDrw->GetGraphicAtt().SetMarkerAtt(kk, mrk[k]);
658
659 ii = (mOpt[4]->GetValue()-500);
660 jj = (mOpt[6]->GetValue()-700);
661 kk = (mOpt[7]->GetValue()-800);
662 mCurCDrw->GetGraphicAtt().SetFontAtt(fntname[ii], fntsz[kk], fntatt[jj]);
663
664 k = mOpt[5]->GetValue()-600;
665 if ( (k < 0) || (k > 9) ) k = 0;
666 mCurCDrw->GetGraphicAtt().SetLineAtt(line[k]);
667
668 if (refr)
669 if (mCurBW !=NULL)
670 mCurBW->Refresh();
671 else
672 mCurCDrw->Refresh();
673 else
674 mCurCDrw->Refresh();
675
676}
677
678/* --Methode-- */
679void PICnTools::Process(PIMessage msg, PIMsgHandler* /*sender*/, void* /*data*/)
680{
681 char strg[64];
682 PIMessage mod = ModMsg(msg);
683 msg = UserMsg(msg);
684 double zmin=0;
685 double zmax=1.;
686 if(mCurCDrw!=NULL){
687 zmin = mCurCDrw->Zmin();
688 zmax = mCurCDrw->Zmax();
689 }
690
691 if(msg>=200&&msg<300){
692 int k = mOpt[1]->GetValue()-200; // _> COLOR MAP
693 if (k == 0){
694 cmapv->SetColMapId(CMAP_OTHER,false, zmin , zmax,true);
695 }else{
696 cmapv->SetColMapId(PIColorMap::GetStandardColorMapId(k-1),false , zmin , zmax,true);
697 }
698
699 }
700 switch (msg) {
701 case 2001 :
702 if(mCkb[0]->GetState()==false)
703 mOpt[5]->SetUnSensitive();
704 else
705 mOpt[5]->SetSensitive();
706
707 break;
708
709 case 2002 :
710 if(mCkb[1]->GetState()==false){
711 mOpt[2]->SetUnSensitive();
712 mOpt[3]->SetUnSensitive();
713 }else{
714 mOpt[2]->SetSensitive();
715 mOpt[3]->SetSensitive();
716 }
717
718 case 2003 :
719 if(mCkb[2]->GetState()==false){
720 mOpt[4]->SetUnSensitive();
721 mOpt[6]->SetUnSensitive();
722 mOpt[7]->SetUnSensitive();
723 }else{
724 mOpt[4]->SetSensitive();
725 mOpt[6]->SetSensitive();
726 mOpt[7]->SetSensitive();
727 }
728
729
730 break;
731 case 2800 :
732 UpdateAttFromDrawer();
733 break;
734
735 case 2900 :
736 SetGraphicAtt(false);
737 break;
738
739 case 2950 :
740 SetGraphicAtt(true);
741 break;
742
743 case 3100 :
744 SetCalcParm();
745 break;
746
747
748 case 3200 :
749
750 break;
751
752 case 3777 :
753 Hide();
754 break;
755
756 /* On ne change pas les options choisies Reza+cmv 2/10/98
757 mOpt[0]->SetValue(100);
758 mOpt[1]->SetValue(200);
759 mOpt[2]->SetValue(300);
760 mOpt[3]->SetValue(405);
761 mOpt[4]->SetValue(500);
762 mOpt[5]->SetValue(600);
763 */
764 break;
765
766 default :
767 break;
768 }
769
770return;
771}
772
773
774
Note: See TracBrowser for help on using the repository browser.