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

Last change on this file since 2322 was 2322, checked in by cmv, 23 years ago
  • passage xxstream.h en xxstream
  • compile avec gcc_3.2, gcc_2.96 et cxx En 3.2 le seek from ::end semble marcher (voir Eval/COS/pbseekios.cc)

rz+cmv 11/2/2003

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