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

Last change on this file since 3436 was 2615, checked in by cmv, 21 years ago

using namespace sophya enleve de machdefs.h, nouveau sopnamsp.h cmv 10/09/2004

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