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

Last change on this file since 1837 was 1832, checked in by perderos, 24 years ago

remove some unused peida include files OP 19/12/2001

File size: 20.6 KB
RevLine 
[1829]1// This may look like C code, but it is really -*- C++ -*-
2// Outils de manipulation des Contours O. Perdereau 11/2001
3// LAL (Orsay) / IN2P3-CNRS DAPNIA/SPP (Saclay) / CEA
4
5#include <stdlib.h>
6
7
8#include "picntools.h"
9#include <iostream.h>
10#include "piscdrawwdg.h"
11#include "pi3ddrw.h"
12#include "pigncont.h"
13
14//++
15// Class PICnTools
16// Lib PI
17// include pidrwtools.h
18//
19// Classe de fenêtre de dialogue permettant de modifier interactivement
20// Les attributs graphique des "Drawer" attachés aux "PIBaseWdg".
21//--
22// Links Parents
23// PIWindow
24//--
25//++
26// Links Voir aussi
27// PIDrawer
28// PIBaseWdg
29//--
30//++
31// Links Ainsi que
32// PIScDrawWdg
33// PIImage
34// PIDraw3DWdg
35//--
36
37//++
38// Titre Méthodes statiques
39//--
40//++
41// void ShowPICnTools()
42// Méthode statique permettant l'affichage de la fenêtre de contrôle des
43// attributs graphiques des "Drawer". L'instance de la classe
44// "PICnTools" est créée si nécessaire.
45// void HidePICnTools()
46// Désacative (cache) la fenêtre "PICnTools" (méthode statique).
47// void SetCurrentBaseWdg(PIBaseWdgGen* cbw)
48// Méthode statique permettant de sélectionner le "PIBaseWdg" courant.
49// PIBaseWdgGen* GetCurrentBaseWdg()
50// Retourne le "PIBaseWdg" courant (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/* --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 des contours ", 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
195
196cpx = 2*spx; // current position
197cpy += spy+bsy;
198
199// check boxes : lines on/off ; marker on/off
200mCkb[0] = new PICheckBox(this,"LineON", 2001, bsx, bsy, cpx, cpy);
201mCkb[0]->SetState(false);
202mCkb[0]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
203
204// type de ligne pour les niveaux
205cpx += spx+1.75*bsx;
206mOpt[5] = new PIOptMenu(this, "bwt-opt-5", bsx*1.75, bsy, cpx, cpy);
207mOpt[5]->AppendItem("Def.Line", 600);
208mOpt[5]->AppendItem("Thin-Line", 601);
209mOpt[5]->AppendItem("Normal-Line", 602);
210mOpt[5]->AppendItem("Thick-Line", 603);
211mOpt[5]->AppendItem("ThinDashed", 604);
212mOpt[5]->AppendItem("Dashed-Line", 605);
213mOpt[5]->AppendItem("ThickDashed", 606);
214mOpt[5]->AppendItem("ThinDotted", 607);
215mOpt[5]->AppendItem("Dotted-Line", 608);
216mOpt[5]->AppendItem("ThickDotted", 609);
217mOpt[5]->SetValue(600);
218mOpt[5]->SetBinding(PIBK_elastic, PIBK_elastic, PIBK_elastic, PIBK_elastic);
219
220if(mCkb[0]->GetState()==false)
221 mOpt[5]->SetUnSensitive();
222
223
224cpx = 2*spx;
225cpy += spy+bsy;
226//cpx += spx+bsx;
227
228mCkb[1] = new PICheckBox(this,"MarkerON", 2002, bsx, bsy, cpx, cpy);
229mCkb[1]->SetState(true);
230mCkb[1]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
231cpx += spx+1.75*bsx;
232
233mOpt[2] = new PIOptMenu(this, "bwt-opt-2", bsx*1.75, bsy, cpx, cpy);
234mOpt[2]->AppendItem("Def.Mrk", 300);
235mOpt[2]->AppendItem("Mrk Dot(.)", 301);
236mOpt[2]->AppendItem("Mrk Plus(+)", 302);
237mOpt[2]->AppendItem("Mrk Cross(x)", 303);
238mOpt[2]->AppendItem("Mrk Circle", 304);
239mOpt[2]->AppendItem("Mrk FCircle", 305);
240mOpt[2]->AppendItem("Mrk Box", 306);
241mOpt[2]->AppendItem("Mrk FBox", 307);
242mOpt[2]->AppendItem("Mrk Triangle", 308);
243mOpt[2]->AppendItem("Mrk FTriangle", 309);
244mOpt[2]->AppendItem("Mrk Star", 310);
245mOpt[2]->AppendItem("Mrk FStar", 311);
246mOpt[2]->SetValue(300);
247mOpt[2]->SetBinding(PIBK_elastic, PIBK_elastic, PIBK_elastic, PIBK_elastic);
248if(mCkb[1]->GetState()==false)
249 mOpt[2]->SetUnSensitive();
250
251cpx += spx+1.75*bsx;
252mOpt[3] = new PIOptMenu(this, "bwt-opt-3", bsx*1.75, bsy, cpx, cpy);
253mOpt[3]->AppendItem("Mrk 1 pt", 401);
254mOpt[3]->AppendItem("Mrk 3 pt", 403);
255mOpt[3]->AppendItem("Mrk 5 pt", 405);
256mOpt[3]->AppendItem("Mrk 7 pt", 407);
257mOpt[3]->AppendItem("Mrk 9 pt", 409);
258mOpt[3]->AppendItem("Mrk 11 pt", 411);
259mOpt[3]->AppendItem("Mrk 13 pt", 413);
260mOpt[3]->AppendItem("Mrk 15 pt", 415);
261mOpt[3]->SetValue(405);
262mOpt[3]->SetBinding(PIBK_elastic, PIBK_elastic, PIBK_elastic, PIBK_elastic);
263if(mCkb[1]->GetState()==false)
264 mOpt[3]->SetUnSensitive();
265
266
267
268cpx = 2*spx;
269cpy += spy+bsy;
270mLab[1] = new PILabel(this, " Label des contours ", 2*bsx, 1.25*bsy, cpx, cpy);
271mLab[1]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
272cpx += spx+2*bsx;
273// check boxes : label on/off
274mCkb[2] = new PICheckBox(this,"LabelON", 2003, bsx, bsy, cpx, cpy);
275mCkb[2]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
276mCkb[2]->SetState(false);
277
278// fonte pour les niveaux
279cpx = 2*spx;
280cpy += spy+bsy;
281mOpt[4] = new PIOptMenu(this, "bwt-opt-4", bsx*1.75, bsy, cpx, cpy);
282mOpt[4]->AppendItem("Def.Font", 500);
283mOpt[4]->AppendItem("Courier", 501);
284mOpt[4]->AppendItem("Helvetica", 502);
285mOpt[4]->AppendItem("Times", 503);
286mOpt[4]->AppendItem("Symbol-Font", 504);
287mOpt[4]->SetValue(500);
288mOpt[4]->SetBinding(PIBK_elastic, PIBK_elastic, PIBK_elastic, PIBK_elastic);
289if(mCkb[2]->GetState()==false) mOpt[4]->SetUnSensitive();
290
291
292cpx += spx+1.75*bsx;
293mOpt[6] = new PIOptMenu(this, "bwt-opt-6", bsx*1.75, bsy, cpx, cpy);
294mOpt[6]->AppendItem("Def.FontAtt", 700);
295mOpt[6]->AppendItem("Roman-Font", 701);
296mOpt[6]->AppendItem("Bold-Font", 702);
297mOpt[6]->AppendItem("Italic-Font", 703);
298mOpt[6]->AppendItem("BoldItalic", 704);
299mOpt[6]->SetValue(700);
300mOpt[6]->SetBinding(PIBK_elastic, PIBK_elastic, PIBK_elastic, PIBK_elastic);
301if(mCkb[2]->GetState()==false) mOpt[6]->SetUnSensitive();
302
303cpx += spx+1.75*bsx;
304mOpt[7] = new PIOptMenu(this, "bwt-opt-7", bsx*1.75, bsy, cpx, cpy);
305mOpt[7]->AppendItem("Def.FontSz", 800);
306mOpt[7]->AppendItem("Tiny FontSz", 801);
307mOpt[7]->AppendItem("Small FontSz", 802);
308mOpt[7]->AppendItem("Normal FontSz", 803);
309mOpt[7]->AppendItem("Big FontSz", 804);
310mOpt[7]->AppendItem("Huge FontSz", 805);
311mOpt[7]->SetBinding(PIBK_elastic, PIBK_elastic, PIBK_elastic, PIBK_elastic);
312if(mCkb[2]->GetState()==false) mOpt[7]->SetUnSensitive();
313
314cpy += spyo+bsyo;
315cpx = 2*spx;
316mButcf[0] = new PIButton(this, "GetAtt", 2800, bsx, bsy, cpx, cpy);
317mButcf[0]->SetBinding(PIBK_elastic, PIBK_elastic, PIBK_elastic, PIBK_elastic);
318
319cpx += bsx+spx;
320mButcf[1] = new PIButton(this, "SetAtt", 2900, bsx, bsy, cpx, cpy);
321mButcf[1]->SetBinding(PIBK_elastic, PIBK_elastic, PIBK_elastic, PIBK_elastic);
322
323cpx += bsx+spx;
324mButcf[4] = new PIButton(this, "Refresh", 2950, bsx, bsy, cpx, cpy);
325mButcf[4]->SetBinding(PIBK_elastic, PIBK_elastic, PIBK_elastic, PIBK_elastic);
326
327
328cpx = 2*spx;
329cpy += spy+bsyo;
330mLab[2] = new PILabel(this, " Options de calcul des contours ", 3*bsx, bsy, cpx, cpy);
331mLab[2]->SetBinding(PIBK_elastic, PIBK_elastic, PIBK_elastic, PIBK_elastic);
332
333cpy += spy+bsyo;
334
335mOpt[8] = new PIOptMenu(this, "bwt-opt-8", bsx*1.75, bsy, cpx, cpy);
336mOpt[8]->AppendItem("Int. Lin.", 900);
337mOpt[8]->AppendItem("CubicCpl", 901);
338mOpt[8]->AppendItem("B-Spline", 902);
339mOpt[8]->SetBinding(PIBK_elastic, PIBK_elastic, PIBK_elastic, PIBK_elastic);
340
341
342cpx += spx+1.75*bsx;
343mOpt[9] = new PIOptMenu(this, "bwt-opt-9", bsx*1.75, bsy, cpx, cpy);
344mOpt[9]->AppendItem("LevelAuto", 910);
345mOpt[9]->AppendItem("LevelNum ", 911);
346mOpt[9]->AppendItem("LevelInc ", 912);
347mOpt[9]->AppendItem("LevelDisc", 913);
348mOpt[9]->SetBinding(PIBK_elastic, PIBK_elastic, PIBK_elastic, PIBK_elastic);
349
350cpy += spy+bsyo;
351cpx = 2*spx;
352
353mLab[3] = new PILabel(this, "# Contours", bsx, bsy, cpx, cpy);
354mLab[3]->SetBinding(PIBK_elastic, PIBK_elastic, PIBK_elastic, PIBK_elastic);
355cpx += spx+bsx;
356
357mTxt[0] = new PIText(this, "Nlev",bsx, (int)(bsy*1.3), cpx, cpy);
358mTxt[0]->SetBinding(PIBK_elastic, PIBK_elastic, PIBK_elastic, PIBK_elastic);
359mTxt[0]->SetText("5");
360cpx += spx+bsx;
361mLab[4] = new PILabel(this, "Niveaux", bsx, bsy, cpx, cpy);
362mLab[4]->SetBinding(PIBK_elastic, PIBK_elastic, PIBK_elastic, PIBK_elastic);
363cpx += spx+bsx;
364mTxt[1] = new PIText(this, "levels",(int)(bsx*2), (int)(bsy*1.3), cpx, cpy);
365mTxt[1]->SetBinding(PIBK_elastic, PIBK_elastic, PIBK_elastic, PIBK_elastic);
366
367
368bsy = bsyo; spy = spyo;
369
370
371cpx = (wszx-3.2*bsx-2*spx)/2;
372cpy += 2*spy+bsy;
373mButcf[2] = new PIButton(this, "SetPArm", 3100, bsx*1.2, bsyo, cpx, cpy);
374mButcf[2]->SetBinding(PIBK_elastic, PIBK_elastic, PIBK_elastic, PIBK_elastic);
375cpx += bsx*1.2+spx;
376
377/******
378mButcf[3] = new PIButton(this, "Calc", 3200, bsx*0.8, bsyo, cpx, cpy);
379mButcf[3]->ActivatePress(true);
380mButcf[3]->SetBinding(PIBK_elastic, PIBK_elastic, PIBK_elastic, PIBK_elastic);
381*****/
382cpx += bsx*0.8+spx;
383
384
385mButcf[3] = new PIButton(this, "Dismiss", 3777, bsx*1.2, bsyo, cpx, cpy);
386mButcf[3]->SetBinding(PIBK_elastic, PIBK_elastic, PIBK_elastic, PIBK_elastic);
387
388cwdrwt = this;
389
390}
391
392/* --Methode-- */
393PICnTools::~PICnTools()
394{
395
396if (cwdrwt == this) cwdrwt = NULL;
397
398mCurCDrw = NULL;
399int i;
400for(i=0; i<5; i++)
401 delete mLab[i];
402for(i=0; i<2; i++)
403 delete mCkb[i];
404
405for(i=0; i<5; i++) delete mButcf[i];
406for(i=0; i<2; i++) delete mButdr[i];
407for(i=0; i<10; i++) delete mOpt[i];
408for(i=0; i<2; i++) delete mCasc[i];
409for(i=0; i<2; i++) delete mTxt[i];
410
411delete mNlb;
412
413delete cmapv;
414}
415
416// Declaration des differents attributs graphiques
417#define MYNMXCOLORS 21
418static PIColors cols[MYNMXCOLORS] = { PI_NotDefColor,
419 PI_Black, PI_White, PI_Grey,
420 PI_Red, PI_Blue, PI_Green,
421 PI_Yellow, PI_Magenta,
422 PI_Cyan , PI_Turquoise, PI_NavyBlue,
423 PI_Orange, PI_SiennaRed, PI_Purple,
424 PI_LimeGreen, PI_Gold, PI_Violet, PI_VioletRed,
425 PI_BlueViolet, PI_DarkViolet };
426
427static PIMarker mrk[12] = { PI_NotDefMarker, PI_DotMarker,
428 PI_PlusMarker, PI_CrossMarker,
429 PI_CircleMarker, PI_FCircleMarker,
430 PI_BoxMarker, PI_FBoxMarker,
431 PI_TriangleMarker, PI_FTriangleMarker,
432 PI_StarMarker, PI_FStarMarker };
433static PILineAtt line[10] = { PI_NotDefLineAtt, PI_ThinLine, PI_NormalLine, PI_ThickLine,
434 PI_ThinDashedLine, PI_DashedLine, PI_ThickDashedLine,
435 PI_ThinDottedLine, PI_DottedLine, PI_ThickDottedLine };
436
437static PIFontName fntname[5] = { PI_DefaultFont, PI_CourierFont, PI_HelveticaFont,
438 PI_TimesFont, PI_SymbolFont};
439static PIFontAtt fntatt[5] = { PI_NotDefFontAtt, PI_RomanFont, PI_BoldFont,
440 PI_ItalicFont, PI_BoldItalicFont };
441static PIFontSize fntsz[6] = { PI_NotDefFontSize, PI_TinySizeFont, PI_SmallSizeFont,
442 PI_NormalSizeFont, PI_BigSizeFont, PI_HugeSizeFont };
443
444/* --Methode-- */
445void PICnTools::Show()
446{
447PIWindow::Show();
448
449mNDr = 0;
450
451
452UpdateAttFromDrawer();
453return;
454}
455
456static t_contour_kind crbe_algo[3]={CONTOUR_KIND_LINEAR,CONTOUR_KIND_CUBIC_SPL,CONTOUR_KIND_BSPLINE};
457static t_contour_levels_kind lev_kind[4]={LEVELS_AUTO,LEVELS_NUM,LEVELS_INCREMENTAL,LEVELS_DISCRETE};
458
459/* --Methode-- */
460void PICnTools::UpdateAttFromDrawer()
461{
462
463PIContourDrawer* dr = mCurCDrw;
464
465mOpt[0]->SetValue(100);
466mOpt[1]->SetValue(200);
467mOpt[2]->SetValue(300);
468mOpt[3]->SetValue(405);
469mOpt[4]->SetValue(500);
470mOpt[5]->SetValue(600);
471mOpt[6]->SetValue(700);
472mOpt[7]->SetValue(800);
473mOpt[8]->SetValue(800);
474mOpt[9]->SetValue(800);
475
476// etats des check
477
478
479
480if (!dr) return;
481
482mCkb[0]->SetState(mCurCDrw->IsLineOn());
483mCkb[1]->SetState(mCurCDrw->IsMarkOn());
484mCkb[2]->SetState(mCurCDrw->IsLabelOn());
485
486
487int ii,jj,kk;
488PIColors fc = dr->GetFgColAtt();
489for(kk=0; kk<MYNMXCOLORS; kk++)
490 if (fc == cols[kk]) { mOpt[0]->SetValue(100+kk); break; }
491CMapId cmi = dr->GetColMapId();
492if (cmi == CMAP_OTHER) mOpt[1]->SetValue(200);
493else for(kk=0; kk<PIColorMap::NumberStandardColorMaps(); kk++)
494 if (cmi == PIColorMap::GetStandardColorMapId(kk)) { mOpt[1]->SetValue(201+kk); break; }
495PIMarker mk = dr->GetMarker();
496for(kk=0; kk<12; kk++)
497 if (mk == mrk[kk]) { mOpt[2]->SetValue(300+kk); break; }
498kk = dr->GetMarkerSz();
499if (kk < 1) kk = 1;
500if (kk > 15) kk = 15;
501if (kk%2 == 0) kk++;
502mOpt[3]->SetValue(400+kk);
503PIFontName fnm = dr->GetFontName();
504PIFontAtt fat = dr->GetFontAtt();
505PIFontSize fsz = dr->GetFontSz();
506for(ii=0; ii<5; ii++)
507 if (fnm == fntname[ii]) break;
508for(kk=0; kk<5; kk++)
509 if (fat == fntatt[kk]) break;
510for(jj=0; jj<5; jj++)
511 if (fsz == fntsz[jj]) break;
512
513if (ii >= 5) ii = 1;
514if (kk >= 5) kk = 1;
515if (jj >= 6) jj = 3;
516mOpt[4]->SetValue(500+ii);
517mOpt[6]->SetValue(700+kk);
518mOpt[7]->SetValue(800+jj);
519
520PILineAtt lat = dr->GetLineAtt();
521for(kk=0; kk<10; kk++)
522 if (lat == line[kk]) { mOpt[5]->SetValue(600+kk); break; }
523
524// parametres pour calcul des niveaux
525t_contour_kind kind = dr->GetCntKind() ;
526for (ii=0 ; ii<3 ; ii++)
527 if(crbe_algo[ii]==kind)
528 {mOpt[8]->SetValue(900+ii); break;}
529
530t_contour_levels_kind lvkind = dr->GetCntLevelKind() ;
531for (ii=0 ; ii<4 ; ii++)
532 if(crbe_algo[ii]==kind)
533 {mOpt[9]->SetValue(910+ii); break;}
534
535int nlv = dr->NLevels();
536char txt[24];
537sprintf(txt,"%d",nlv);
538mTxt[0]->SetText(txt);
539// cout << " nlv "<<nlv<< endl;
540if(dr->Levels()!=NULL){
541 string strg=" ";
542 for(int kk=0 ; kk<nlv ; kk++) {
543 cout << " dr->Level("<<kk<<") "<<endl;
544 cout <<dr->Level(kk)<<endl;
545 sprintf(txt,"%g",dr->Level(kk));
546 strg += txt;
547 }
548 mTxt[1]->SetText(strg);
549
550}
551
552
553return;
554}
555
556
557
558
559
560
561
562/* --Methode-- */
563//setting des parms du calcul des crbes de niveau
564void PICnTools::SetCalcParm(){
565
566PIContourDrawer* dr = mCurCDrw;
567if(dr==NULL)return;
568int k,ii,jj,kk;
569
570k = mOpt[8]->GetValue()-900; // type de ligne
571dr->SetCntKind(crbe_algo[k]);
572
573k = mOpt[9]->GetValue()-910; // choix des niveaux des courbes
574dr->SetCntLevelKind(lev_kind[k]);
575
576string str=mTxt[0]->GetText();
577ii=atoi(str.c_str());
578dr->SetNLevel(ii);
579char *buff;
580char *tmp;
581str=mTxt[1]->GetText();
582buff=strdup(str.c_str());
583double * zlev=NULL;
584//out << " k= "<<k<<endl;
585if(k==2) {
586 zlev = new double[2];
587 tmp = strtok(buff,",");
588 zlev[0] = atof(tmp);
589 tmp = strtok(NULL,",");
590 zlev[1]= atof(tmp);
591 dr->SetMyLevels(zlev,2);
592 // cas LEVELS_INCREMENTAL
593}else if (k==3){
594 // cas LEVELS_DISCRETE
595 zlev = new double[ii];
596 tmp = strtok(buff,",");
597 for(jj=0 ; jj<ii ; jj++){
598 zlev[jj]= atof(tmp);
599 cout << " jj "<<zlev[jj]<<endl;
600 tmp = strtok(NULL,",");
601 }
602 dr->SetMyLevels(zlev,ii);
603
604
605
606}
607
608//
609//
610
611dr->CalcContour();
612dr->Refresh();
613
614if(zlev!=NULL) {
615 delete[] zlev;
616 zlev=NULL;
617}
618
619}
620
621/* --Methode-- */
622void PICnTools::SetGraphicAtt(bool refr)
623{
624
625 if ( mCurCDrw== NULL ) return;
626 // etats des boutons
627
628 mCurCDrw->SetLineOn(mCkb[0]->GetState());
629 mCurCDrw->SetMarkOn(mCkb[1]->GetState());
630 mCurCDrw->SetLabelOn(mCkb[2]->GetState());
631
632
633 int k,ii,jj,kk;
634 k = mOpt[0]->GetValue()-100; // -> COULEUR
635 if ( (k < 0) || (k >= MYNMXCOLORS) ) k = 0;
636 mCurCDrw->SetColAtt(cols[k]);
637 double zmin=0;
638 double zmax=1.;
639 if(mCurCDrw!=NULL){
640 zmin = mCurCDrw->Zmin();
641 zmax = mCurCDrw->Zmax();
642 }
643
644 k = mOpt[1]->GetValue()-200; // --> COLOR MAP
645 if (k == 0){
646 mCurCDrw->SetColMapId(CMAP_OTHER);
647
648 }else{
649 mCurCDrw->SetColMapId(PIColorMap::GetStandardColorMapId(k-1));
650 cmapv->SetColMapId(PIColorMap::GetStandardColorMapId(k-1),false, zmin , zmax,true);
651 }
652 k = mOpt[2]->GetValue()-300; // Marker
653 if ( (k < 0) || (k > 11) ) k = 0;
654 kk = mOpt[3]->GetValue()-400; // marker SIZE
655 if ( (kk < 1) || (kk > 27) ) kk = 1;
656 mCurCDrw->SetMarkerAtt(kk, mrk[k]);
657
658 ii = (mOpt[4]->GetValue()-500);
659 jj = (mOpt[6]->GetValue()-700);
660 kk = (mOpt[7]->GetValue()-800);
661 mCurCDrw->SetFont(fntname[ii], fntsz[kk], fntatt[jj]);
662
663 k = mOpt[5]->GetValue()-600;
664 if ( (k < 0) || (k > 9) ) k = 0;
665 mCurCDrw->SetLineAtt(line[k]);
666
667 if (refr)
668 if (mCurBW !=NULL)
669 mCurBW->Refresh();
670 else
671 mCurCDrw->Refresh();
672 else
673 mCurCDrw->Refresh();
674
675}
676
677/* --Methode-- */
678void PICnTools::Process(PIMessage msg, PIMsgHandler* /*sender*/, void* /*data*/)
679{
680 char strg[64];
681 PIMessage mod = ModMsg(msg);
682 msg = UserMsg(msg);
683 double zmin=0;
684 double zmax=1.;
685 if(mCurCDrw!=NULL){
686 zmin = mCurCDrw->Zmin();
687 zmax = mCurCDrw->Zmax();
688 }
689
690 if(msg>=200&&msg<300){
691 int k = mOpt[1]->GetValue()-200; // _> COLOR MAP
692 if (k == 0){
693 cmapv->SetColMapId(CMAP_OTHER,false, zmin , zmax,true);
694 }else{
695 cmapv->SetColMapId(PIColorMap::GetStandardColorMapId(k-1),false , zmin , zmax,true);
696 }
697
698 }
699 switch (msg) {
700 case 2001 :
701 if(mCkb[0]->GetState()==false)
702 mOpt[5]->SetUnSensitive();
703 else
704 mOpt[5]->SetSensitive();
705
706 break;
707
708 case 2002 :
709 if(mCkb[1]->GetState()==false){
710 mOpt[2]->SetUnSensitive();
711 mOpt[3]->SetUnSensitive();
712 }else{
713 mOpt[2]->SetSensitive();
714 mOpt[3]->SetSensitive();
715 }
716
717 case 2003 :
718 if(mCkb[2]->GetState()==false){
719 mOpt[4]->SetUnSensitive();
720 mOpt[6]->SetUnSensitive();
721 mOpt[7]->SetUnSensitive();
722 }else{
723 mOpt[4]->SetSensitive();
724 mOpt[6]->SetSensitive();
725 mOpt[7]->SetSensitive();
726 }
727
728
729 break;
730 case 2800 :
731 UpdateAttFromDrawer();
732 break;
733
734 case 2900 :
735 SetGraphicAtt(false);
736 break;
737
738 case 2950 :
739 SetGraphicAtt(true);
740 break;
741
742 case 3100 :
743 SetCalcParm();
744 break;
745
746
747 case 3200 :
748
749 break;
750
751 case 3777 :
752 Hide();
753 break;
754
755 /* On ne change pas les options choisies Reza+cmv 2/10/98
756 mOpt[0]->SetValue(100);
757 mOpt[1]->SetValue(200);
758 mOpt[2]->SetValue(300);
759 mOpt[3]->SetValue(405);
760 mOpt[4]->SetValue(500);
761 mOpt[5]->SetValue(600);
762 */
763 break;
764
765 default :
766 break;
767 }
768
769return;
770}
771
772
773
Note: See TracBrowser for help on using the repository browser.