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

Last change on this file since 2381 was 2381, checked in by ansari, 22 years ago

modifs suite ajout colormap MultiCol64 - Reza 15/5/2003

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