source: Sophya/trunk/SophyaPI/PIext/servnobjm.cc@ 293

Last change on this file since 293 was 293, checked in by ercodmgr, 26 years ago

Adaptation aux "normes DPC", introduction des classes CmdExecutor, ...
Fenetre d'aide en lignes, gestion de modules, ... Reza 11/05/99

File size: 20.1 KB
Line 
1#include <stdio.h>
2#include <stdlib.h>
3#include <ctype.h>
4
5#include <iostream.h>
6#include <string>
7#include <list>
8#include <map>
9#if defined(__KCC__)
10using std::string ;
11#include <list.h>
12#include <map.h>
13#endif
14
15#include "strutil.h"
16#include "datatypes.h"
17
18#include "nobjmgr.h"
19#include "servnobjm.h"
20#include "pistdimgapp.h"
21
22#include "pclassids.h"
23#include "histos.h"
24#include "histos2.h"
25#include "ntuple.h"
26#include "hisprof.h"
27#include "generaldata.h"
28
29#include "cimage.h"
30#include "cvector.h"
31#include "matrix.h"
32
33// Si le module StarReco++ a ete compile (Pour les StarList, Transfo, etc ...
34#ifdef SANS_EVOLPLANCK
35#include "stlist.h"
36#include "star.h"
37#endif
38
39
40/* --Methode-- */
41Services2NObjMgr::Services2NObjMgr(PIStdImgApp* app, string& tmpdir)
42{
43TmpDir = tmpdir;
44PDynLinkMgr::SetTmpDir(tmpdir);
45mImgapp = app;
46dynlink = NULL;
47InitGrAttNames();
48}
49
50/* --Methode-- */
51Services2NObjMgr::~Services2NObjMgr()
52{
53CloseDLL();
54}
55
56/* --Methode-- */
57void Services2NObjMgr::Nobj_ComputeExpressions(PPersist* obj, string& expx, string& expy, string& expz,
58 string& expwt, string& expcut, NTuple* nt, Histo* h1, Histo2D* h2, HProf* hp)
59{
60int cid = obj->ClassId();
61
62string vardec;
63switch (cid) {
64 case ClassId_Vector :
65 vardec = "double i,val; \n";
66 vardec += "i = _zz61qq_[0]; val = _zz61qq_[1]; \n";
67 break;
68
69 case ClassId_Matrix :
70 vardec = "double i,j,val; \n";
71 vardec += "i = _zz61qq_[0]; j = _zz61qq_[1]; val = _zz61qq_[2]; \n";
72 break;
73
74 case ClassId_Histo1D :
75 case ClassId_HProf :
76 vardec = "double i,x,val,err; \n";
77 vardec += "i = _zz61qq_[0]; x = _zz61qq_[1]; val = _zz61qq_[2]; err = _zz61qq_[3]; \n";
78 break;
79
80 case ClassId_Histo2D :
81 vardec = "double i,j,x,y,val,err; \n";
82 vardec += "i = _zz61qq_[0]; j = _zz61qq_[1]; \n";
83 vardec += "x = _zz61qq_[2]; y = _zz61qq_[3]; \n";
84 vardec += "val = _zz61qq_[4]; err = _zz61qq_[5]; \n";
85 break;
86
87 case ClassId_Image :
88 case ClassId_Image + kuint_1 :
89 case ClassId_Image + kint_1 :
90 case ClassId_Image + kr_8 :
91 case ClassId_Image + kuint_4 :
92 case ClassId_Image + kuint_2 :
93 case ClassId_Image + kint_2 :
94 case ClassId_Image + kint_4 :
95 case ClassId_Image + kr_4 :
96 vardec = "double x,y,pix,i,j,val; \n";
97 vardec += "x = i = _zz61qq_[0]; y = j = _zz61qq_[1]; pix = val = _zz61qq_[2]; \n";
98 break;
99
100#ifdef SANS_EVOLPLANCK
101 case ClassId_StarList :
102 vardec = "double x,y,flux,fond; \n";
103 vardec += "x = _zz61qq_[0]; y = _zz61qq_[1]; flux = _zz61qq_[2]; fond = _zz61qq_[3]; \n";
104 break;
105#endif
106
107 case ClassId_NTuple :
108 vardec = ((NTuple*)obj)->VarList_C("_zz61qq_");
109 break;
110
111 case ClassId_GeneralFitData :
112 vardec = ((GeneralFitData*)obj)->VarList_C("_zz61qq_");
113 break;
114
115 default :
116 cerr << "NamedObjMgr_ComputeExpressions() Error , N/A to " << PClassIdToClassName(cid) << endl;
117 return;
118 }
119
120PlotExprFunc f = LinkExprFunc(vardec, expx, expy, expz, expwt, expcut);
121if (!f) {
122 cerr << "NamedObjMgr_ComputeExpressions() Error Creation PlotExprFunc " << endl;
123 return;
124 }
125
126float x[10], xnt[10];
127
128int i,j,k;
129for(i=0; i<10; i++) x[i] = xnt[i] = 0.;
130
131TRY {
132switch (cid) {
133 case ClassId_Vector :
134 {
135 Vector* vv = (Vector*)obj;
136 for(k=0; k<vv->NElts(); k++) {
137 x[0] = k; x[1] = (*vv)(k);
138 if (f(x, xnt, xnt+1, xnt+2, xnt+3) != 0) {
139 if (nt) nt->Fill(xnt);
140 if (h1) h1->Add(xnt[0], xnt[3]);
141 if (h2) h2->Add(xnt[0], xnt[1], xnt[3]);
142 if (hp) hp->Add(xnt[0], xnt[1], xnt[3]);
143 }
144 }
145 }
146 break;
147
148 case ClassId_Matrix :
149 {
150 Matrix* mm = (Matrix*)obj;
151 for(j=0; j<mm->NCol(); j++)
152 for(i=0; i<mm->NRows(); i++) {
153 x[0] = i; x[1] = j; x[2] = (*mm)(i,j);
154 if (f(x, xnt, xnt+1, xnt+2, xnt+3) != 0) {
155 if (nt) nt->Fill(xnt);
156 if (h1) h1->Add(xnt[0], xnt[3]);
157 if (h2) h2->Add(xnt[0], xnt[1], xnt[3]);
158 if (hp) hp->Add(xnt[0], xnt[1], xnt[3]);
159 }
160 }
161 }
162 break;
163
164 case ClassId_Histo1D :
165 case ClassId_HProf :
166 {
167 Histo* hh = (Histo*)obj;
168 for(k=0; k<hh->NBins(); k++) {
169 x[0] = k; x[1] = hh->BinCenter(k);
170 x[2] = (*hh)(k); x[3] = hh->Error(k);
171 if (f(x, xnt, xnt+1, xnt+2, xnt+3) != 0) {
172 if (nt) nt->Fill(xnt);
173 if (h1) h1->Add(xnt[0], xnt[3]);
174 if (h2) h2->Add(xnt[0], xnt[1], xnt[3]);
175 if (hp) hp->Add(xnt[0], xnt[1], xnt[3]);
176 }
177 }
178 }
179 break;
180
181 case ClassId_Histo2D :
182 {
183 Histo2D* hh = (Histo2D*)obj;
184 for(j=0; j<hh->NBinY(); j++)
185 for(i=0; i<hh->NBinX(); i++) {
186 x[0] = i; x[1] = j;
187 hh->BinCenter(i,j,x[2],x[3]);
188 x[4] = (*hh)(i,j); x[5] = hh->Error(i, j);
189 if (f(x, xnt, xnt+1, xnt+2, xnt+3) != 0) {
190 if (nt) nt->Fill(xnt);
191 if (h1) h1->Add(xnt[0], xnt[3]);
192 if (h2) h2->Add(xnt[0], xnt[1], xnt[3]);
193 if (hp) hp->Add(xnt[0], xnt[1], xnt[3]);
194 }
195 }
196 }
197 break;
198
199
200 case ClassId_Image :
201 case ClassId_Image + kuint_1 :
202 case ClassId_Image + kint_1 :
203 case ClassId_Image + kr_8 :
204 case ClassId_Image + kuint_4 :
205 case ClassId_Image + kuint_2 :
206 case ClassId_Image + kint_2 :
207 case ClassId_Image + kint_4 :
208 case ClassId_Image + kr_4 :
209 {
210 RzImage* img = (RzImage*)obj;
211 for(j=0; j<img->YSize(); j++)
212 for(i=0; i<img->XSize(); i++) {
213 x[0] = i; x[1] = j; x[2] = img->FValue(i, j);
214 if (f(x, xnt, xnt+1, xnt+2, xnt+3) != 0) {
215 if (nt) nt->Fill(xnt);
216 if (h1) h1->Add(xnt[0], xnt[3]);
217 if (h2) h2->Add(xnt[0], xnt[1], xnt[3]);
218 if (hp) hp->Add(xnt[0], xnt[1], xnt[3]);
219 }
220 }
221 }
222 break;
223
224#ifdef SANS_EVOLPLANCK
225 case ClassId_StarList :
226 {
227 StarList* stl = (StarList*)obj;
228 BStar *sti;
229 for(k=0; k<stl->NbStars(); k++) {
230 sti = stl->Star(k);
231 if ( (!sti) || !(sti->Nice(BStar::flagOK)) ) continue;
232 x[0] = sti->PosX(); x[1] = sti->PosY();
233 x[2] = sti->Flux(); x[3] = sti->Fond();
234 if (f(x, xnt, xnt+1, xnt+2, xnt+3) != 0) {
235 if (nt) nt->Fill(xnt);
236 if (h1) h1->Add(xnt[0], xnt[3]);
237 if (h2) h2->Add(xnt[0], xnt[1], xnt[3]);
238 if (hp) hp->Add(xnt[0], xnt[1], xnt[3]);
239 }
240 }
241 }
242 break;
243#endif
244
245 case ClassId_NTuple :
246 {
247 NTuple* ntp = (NTuple*)obj;
248 r_4* xn;
249 for(k=0; k<ntp->NEntry(); k++) {
250 xn = ntp->GetVec(k);
251 if (f(xn, xnt, xnt+1, xnt+2, xnt+3) != 0) {
252 if (nt) nt->Fill(xnt);
253 if (h1) h1->Add(xnt[0], xnt[3]);
254 if (h2) h2->Add(xnt[0], xnt[1], xnt[3]);
255 if (hp) hp->Add(xnt[0], xnt[1], xnt[3]);
256 }
257 }
258 }
259 break;
260
261 case ClassId_GeneralFitData :
262 {
263 GeneralFitData* data = (GeneralFitData*)obj;
264 r_4* xn;
265 int iok = 2*data->NVar()+2;
266 for(k=0; k<data->NData(); k++) {
267 xn = data->GetVecR4(k);
268 if(xn[iok]<0.001) continue;
269 if (f(xn, xnt, xnt+1, xnt+2, xnt+3) != 0) {
270 if (nt) nt->Fill(xnt);
271 if (h1) h1->Add(xnt[0], xnt[3]);
272 if (h2) h2->Add(xnt[0], xnt[1], xnt[3]);
273 if (hp) hp->Add(xnt[0], xnt[1], xnt[3]);
274 }
275 }
276 }
277 break;
278
279 default :
280 cout << "NamedObjMgr_ComputeExpressions() Erreur: N/A to " << PClassIdToClassName(cid) << endl;
281 return;
282 }
283} CATCH(merr) {
284 fflush(stdout);
285 cout << endl;
286 cerr << endl;
287 string es = PeidaExc(merr);
288 cerr << "NamedObjMgr_ComputeExpressions() Exception :" << merr << es;
289 } ENDTRY;
290
291
292// Fermeture du fichier .so
293CloseDLL();
294return;
295}
296
297
298/* --Methode-- */
299PlotExprFunc Services2NObjMgr::LinkExprFunc(string& vardec, string& expx, string& expy, string& expz,
300 string& expwt, string& cut)
301{
302FILE *fip;
303string fname = TmpDir + "expf_pia_dl.c";
304string fnamer = TmpDir + "expf_pia_dl";
305string cmd;
306int rc;
307
308cmd = "rm -f " + fname;
309rc = system(cmd.c_str());
310//DBG printf("LinkExprFunc_Do> %s (Rc=%d)\n", cmd.c_str(), rc);
311
312if ((fip = fopen(fname.c_str(), "w")) == NULL) {
313 string sn = fname;
314 cout << "NamedObjMgr/LinkExprFunc_Erreur: Pb. Ouverture " << sn << endl;
315 return(NULL);
316 }
317
318// constitution du fichier a compiler
319fputs("#include <math.h> \n", fip);
320fputs("int expf_pia_dl_func(float* _zz61qq_, float* _rx_61qq_, float* _ry_61qq_, float* _rz_61qq_, float* _wt_61qq_) \n{\n", fip);
321fprintf(fip,"%s \n", vardec.c_str());
322fprintf(fip, "if (!(%s)) { *_rx_61qq_ = *_ry_61qq_ = *_rz_61qq_ = *_wt_61qq_ = 0.; return(0); } \n", cut.c_str());
323fprintf(fip, "*_rx_61qq_ = %s ; \n", expx.c_str());
324fprintf(fip, "*_ry_61qq_ = %s ; \n", expy.c_str());
325fprintf(fip, "*_rz_61qq_ = %s ; \n", expz.c_str());
326fprintf(fip, "*_wt_61qq_ = %s ; \n", expwt.c_str());
327fputs("return(1); \n} \n", fip);
328fclose(fip);
329
330return((PlotExprFunc)LinkFunctionFromFile(fnamer, "expf_pia_dl_func"));
331}
332
333
334/* --Methode-- */
335DlFunction Services2NObjMgr::LinkFunctionFromFile(string& fnamer, char* funcname)
336{
337string fname = fnamer + ".c" ;
338string fnameobj = fnamer + ".o" ;
339string fnameso = fnamer + ".so";
340
341// Le link dynamique
342CloseDLL();
343dynlink = PDynLinkMgr::BuildFromCFile(fname);
344if (dynlink == NULL) {
345 cerr << "NamedObjMgr/LinkFunctionFromFile_Erreur: Erreur ouverture SO " << endl;
346 return(NULL);
347 }
348
349DlFunction retfunc = dynlink->GetFunction(funcname);
350if (retfunc == NULL) {
351 string sn = funcname;
352 cerr << "NamedObjMgr/LinkExprFunc_Erreur: Erreur linking " << sn << endl;
353 CloseDLL();
354 return(NULL);
355 }
356else return(retfunc);
357}
358
359/* --Methode-- */
360void Services2NObjMgr::CloseDLL()
361{
362if (dynlink) delete dynlink; dynlink = NULL;
363}
364
365/* --Methode-- */
366string Services2NObjMgr::FileName2Name(string const & fn)
367{
368
369char fsep[2] = {FILESEP, '\0'};
370char tsep[2] = {'.', '\0'};
371size_t p = fn.find_last_of(fsep);
372size_t l = fn.length();
373if (p >= l) p = 0;
374else p++;
375size_t q = fn.find_first_of(tsep,p);
376if (q < p) q = l;
377return(fn.substr(p,q-p));
378}
379
380
381typedef vector<string> GraTok;
382
383/* --Methode-- */
384int Services2NObjMgr::DecodeDispOption(string& gratt, bool& fgsrgr)
385{
386int ropt = Disp_Next;
387if (!mImgapp) return(ropt);
388
389for(int i=0; i<gratt.length(); i++) gratt[i] = tolower(gratt[i]);
390
391if (fgsrgr) mImgapp->SaveGraphicAtt();
392
393if (gratt.substr(0,3) == "def") { // Remise aux valeurs par defaut = non defini
394 mImgapp->SetColAtt();
395 mImgapp->SetLineAtt();
396 mImgapp->SetFontAtt();
397 mImgapp->SetMarkerAtt();
398 mImgapp->SetColMapId();
399 mImgapp->SetZoomAtt();
400 return(ropt);
401 }
402
403// On separe en mots separes par des virgules
404gratt = ","+gratt;
405size_t p = 0;
406size_t q = 0;
407size_t l = gratt.length();
408string token;
409
410GraTok grt;
411
412while (q < l) {
413 p = gratt.find_first_not_of(" ,",q+1); // au debut d'un token
414 if (p>=l) break;
415 q = gratt.find_first_of(" ,",p); // la fin du token;
416 token = gratt.substr(p,q-p);
417 grt.push_back(token);
418 }
419
420
421static GrAttNames::iterator it;
422
423int k;
424bool fgcont = true;
425fgsrgr = false;
426
427for(k=0; k<grt.size(); k++) {
428// cout << "--DBG--SetGraphicAttributes() " << grt[k] << endl;
429
430 // Decodage option affichage (win, next, etc
431 fgcont = true;
432 if ( (grt[k] == "win") || (grt[k] == "w") ) ropt = Disp_Win;
433 else if ( (grt[k] == "same") || (grt[k] == "s") ) ropt = Disp_Same;
434 else if ( (grt[k] == "stack") || (grt[k] == "st") ) ropt = Disp_Stack;
435 else fgcont = false;
436 if (fgcont) continue;
437
438 // Si c'est une couleur
439 it = GrAcolors.find(grt[k]);
440 if (it != GrAcolors.end()) { mImgapp->SetColAtt((PIColors)((*it).second.a1)); fgsrgr = true; continue; }
441 // Si c'est un attribut de lignes
442 it = GrAlines.find(grt[k]);
443 if (it != GrAlines.end()) { mImgapp->SetLineAtt((PILineAtt)((*it).second.a1)); fgsrgr = true; continue; }
444 // Si c'est un attribut de fontes
445 it = GrAfonts.find(grt[k]);
446 if (it != GrAfonts.end()) { mImgapp->SetFontAtt((PIFontSize)((*it).second.a2), (PIFontAtt)((*it).second.a1) );
447 fgsrgr = true; continue; }
448 // Si c'est un attribut de markers
449 it = GrAmarkers.find(grt[k]);
450 if (it != GrAmarkers.end()) { mImgapp->SetMarkerAtt((*it).second.a2, (PIMarker)((*it).second.a1) );
451 fgsrgr = true; continue; }
452 // Si c'est un colormap
453 it = GrAcmap.find(grt[k]);
454 if (it != GrAcmap.end()) { mImgapp->SetColMapId( (CMapId)((*it).second.a1) ); fgsrgr = true; continue; }
455 // Si c'est un facteur de zoom
456 it = GrAzoom.find(grt[k]);
457 if (it != GrAzoom.end()) { mImgapp->SetZoomAtt( (*it).second.a1 ); fgsrgr = true; continue; }
458 // Si c'est un attribut d'axe
459 it = GrAaxes.find(grt[k]);
460 if (it != GrAaxes.end()) { mImgapp->SetAxesAtt( (*it).second.a1 ); fgsrgr = true; continue; }
461
462 }
463
464return(ropt);
465}
466
467/* --Methode-- */
468char* Services2NObjMgr::PClassIdToClassName(int cid)
469{
470switch (cid) {
471 case ClassId_Poly1 :
472 return("Poly1");
473 case ClassId_Poly2 :
474 return("Poly2");
475 case ClassId_Matrix :
476 return("Matrix");
477 case ClassId_Vector :
478 return("Vector");
479
480 case ClassId_DVList :
481 return("DVList");
482
483 case ClassId_Histo1D :
484 return("Histo1D");
485 case ClassId_Histo2D :
486 return("Histo2D");
487 case ClassId_HProf :
488 return("HProf");
489 case ClassId_NTuple :
490 return("NTuple");
491 case ClassId_GeneralFitData :
492 return("GeneralFitData");
493
494 case ClassId_Image :
495 return("RzImage");
496 case ClassId_Image + kuint_1 :
497 return("ImageU1");
498 case ClassId_Image + kint_1 :
499 return("ImageI1");
500 case ClassId_Image + kuint_2 :
501 return("ImageU2");
502 case ClassId_Image + kint_2 :
503 return("ImageI2");
504 case ClassId_Image + kuint_4 :
505 return("ImageU4");
506 case ClassId_Image + kint_4 :
507 return("ImageI4");
508 case ClassId_Image + kr_4 :
509 return("ImageR4");
510 case ClassId_Image + kr_8 :
511 return("ImageR8");
512
513 case ClassId_ZFidu :
514 return("ZFidu");
515
516#ifdef SANS_EVOLPLANCK
517 case ClassId_StarList :
518 return("StarList");
519 case ClassId_Transfo :
520 return("Transfo");
521 case ClassId_PSF :
522 return("PSF");
523
524 case ClassId_Star + BStar_Type :
525 return("BStar");
526 case ClassId_Star + RzStar_Type :
527 return("RzStar");
528 case ClassId_Star + PSFStar_Type :
529 return("PSFStar");
530 case ClassId_Star + MCStar_Type :
531 return("MCStar");
532 case ClassId_Star + CircRFixStar_Type :
533 return("CircRFixStar");
534 case ClassId_Star + PSFDHStar_Type :
535 return("PSFDHStar");
536 case ClassId_Star + PSFSEStar_Type :
537 return("PSFSEStar");
538 case ClassId_Star + MCDHStar_Type :
539 return("MCDHStar");
540#endif
541
542// - Ajout objet PPF
543 default:
544 return("Unknown");
545 }
546}
547
548/* --Methode-- */
549char* Services2NObjMgr::PClassIdToShortClassName(int cid)
550{
551switch (cid) {
552 case ClassId_Poly1 :
553 case ClassId_Poly2 :
554 return("Poly");
555 case ClassId_Matrix :
556 return("Mtx");
557 case ClassId_Vector :
558 return("Vec");
559 case ClassId_DVList :
560 return("Dvl");
561
562 case ClassId_Histo1D :
563 return("H1D");
564 case ClassId_Histo2D :
565 return("H2D");
566 case ClassId_HProf :
567 return("HPF");
568 case ClassId_NTuple :
569 return("NT");
570 case ClassId_GeneralFitData :
571 return("GFD");
572
573 case ClassId_Image :
574 case ClassId_Image + kuint_1 :
575 case ClassId_Image + kint_1 :
576 case ClassId_Image + kuint_2 :
577 case ClassId_Image + kint_2 :
578 case ClassId_Image + kuint_4 :
579 case ClassId_Image + kint_4 :
580 case ClassId_Image + kr_4 :
581 case ClassId_Image + kr_8 :
582 return("Img");
583
584 case ClassId_ZFidu :
585 return("Fidu");
586
587#ifdef SANS_EVOLPLANCK
588 case ClassId_StarList :
589 return("Stl");
590 case ClassId_Transfo :
591 return("Tr");
592 case ClassId_PSF :
593 return("PSF");
594
595 case ClassId_Star + BStar_Type :
596 case ClassId_Star + RzStar_Type :
597 case ClassId_Star + PSFStar_Type :
598 case ClassId_Star + MCStar_Type :
599 case ClassId_Star + CircRFixStar_Type :
600 case ClassId_Star + PSFDHStar_Type :
601 case ClassId_Star + PSFSEStar_Type :
602 case ClassId_Star + MCDHStar_Type :
603 return("Star");
604#endif
605
606// - Ajout objet PPF
607 default:
608 return("U");
609 }
610}
611
612// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
613// Initialisation des chaines de caracteres designant les attributs graphiques
614
615/* --Methode-- */
616void Services2NObjMgr::InitGrAttNames()
617{
618gratt_item gi;
619// Les couleurs
620gi.a2 = 0;
621gi.a1 = PI_NotDefColor;
622GrAcolors["defcol"] = gi;
623gi.a1 = PI_Black;
624GrAcolors["black"] = gi;
625gi.a1 = PI_White;
626GrAcolors["white"] = gi;
627gi.a1 = PI_Grey;
628GrAcolors["grey"] = gi;
629gi.a1 = PI_Red;
630GrAcolors["red"] = gi;
631gi.a1 = PI_Blue;
632GrAcolors["blue"] = gi;
633gi.a1 = PI_Green;
634GrAcolors["green"] = gi;
635gi.a1 = PI_Yellow;
636GrAcolors["yellow"] = gi;
637gi.a1 = PI_Magenta;
638GrAcolors["magenta"] = gi;
639
640gi.a1 = PI_Cyan;
641GrAcolors["cyan"] = gi;
642gi.a1 = PI_Turquoise;
643GrAcolors["turquoise"] = gi;
644gi.a1 = PI_NavyBlue;
645GrAcolors["navyblue"] = gi;
646gi.a1 = PI_Orange;
647GrAcolors["orange"] = gi;
648gi.a1 = PI_SiennaRed;
649GrAcolors["siennared"] = gi;
650gi.a1 = PI_Purple;
651GrAcolors["purple"] = gi;
652gi.a1 = PI_LimeGreen;
653GrAcolors["limegreen"] = gi;
654gi.a1 = PI_Gold;
655GrAcolors["gold"] = gi;
656
657// Les attributs de lignes
658gi.a2 = 0;
659gi.a1 = PI_NotDefLineAtt;
660GrAlines["defline"] = gi;
661gi.a1 = PI_NormalLine;
662GrAlines["normalline"] = gi;
663gi.a1 = PI_ThinLine;
664GrAlines["thinline"] = gi;
665gi.a1 = PI_ThickLine;
666GrAlines["thickline"] = gi;
667gi.a1 = PI_DashedLine;
668GrAlines["dashedline"] = gi;
669gi.a1 = PI_ThinDashedLine;
670GrAlines["thindashedline"] = gi;
671gi.a1 = PI_ThickDashedLine;
672GrAlines["thickdashedline"] = gi;
673gi.a1 = PI_DottedLine;
674GrAlines["dottedline"] = gi;
675gi.a1 = PI_ThinDottedLine;
676GrAlines["thindottedline"] = gi;
677gi.a1 = PI_ThickDottedLine;
678GrAlines["thickdottedline"] = gi;
679
680// Les fontes
681gi.a2 = PI_NotDefFontSize;
682gi.a1 = PI_NotDefFontAtt;
683GrAlines["deffont"] = gi;
684
685gi.a2 = PI_NormalSizeFont;
686gi.a1 = PI_RomanFont;
687GrAlines["normalfont"] = gi;
688gi.a1 = PI_BoldFont;
689GrAlines["boldfont"] = gi;
690gi.a1 = PI_ItalicFont;
691GrAlines["italicfont"] = gi;
692gi.a2 = PI_SmallSizeFont;
693gi.a1 = PI_RomanFont;
694GrAlines["smallfont"] = gi;
695gi.a1 = PI_BoldFont;
696GrAlines["smallboldfont"] = gi;
697gi.a1 = PI_ItalicFont;
698GrAlines["smallitalicfont"] = gi;
699gi.a2 = PI_BigSizeFont;
700gi.a1 = PI_RomanFont;
701GrAlines["bigfont"] = gi;
702gi.a1 = PI_BoldFont;
703GrAlines["bigboldfont"] = gi;
704gi.a1 = PI_ItalicFont;
705GrAlines["bigitalicfont"] = gi;
706gi.a2 = PI_HugeSizeFont;
707gi.a1 = PI_RomanFont;
708GrAlines["hugefont"] = gi;
709gi.a1 = PI_BoldFont;
710GrAlines["hugeboldfont"] = gi;
711gi.a1 = PI_ItalicFont;
712GrAlines["hugeitalicfont"] = gi;
713
714
715// Les markers
716const char* mrkn[11] = { "dotmarker", "plusmarker", "crossmarker",
717 "circlemarker", "fcirclemarker", "boxmarker", "fboxmarker",
718 "trianglemarker", "ftrianglemarker", "starmarker", "fstarmarker"};
719PIMarker mrk[11] = { PI_DotMarker, PI_PlusMarker, PI_CrossMarker,
720 PI_CircleMarker, PI_FCircleMarker, PI_BoxMarker, PI_FBoxMarker,
721 PI_TriangleMarker, PI_FTriangleMarker, PI_StarMarker, PI_FStarMarker};
722
723gi.a2 = 0;
724gi.a1 = PI_NotDefMarker;
725GrAmarkers["defmarker"] = gi;
726
727for(int j=0; j<11; j++) {
728 string smrk;
729 char buff[16];
730 for(int m=1; m<10; m+=2) {
731 sprintf(buff,"%d",m);
732 smrk = (string)mrkn[j] + (string)buff;
733 gi.a1 = mrk[j]; gi.a2 = m;
734 GrAmarkers[smrk] = gi;
735 }
736 }
737
738// Les tables de couleurs
739gi.a2 = 0;
740gi.a1 = CMAP_OTHER;
741GrAcmap["defcmap"] = gi;
742gi.a1 = CMAP_GREY32;
743GrAcmap["grey32"] = gi;
744gi.a1 = CMAP_GREYINV32;
745GrAcmap["greyinv32"] = gi;
746gi.a1 = CMAP_COLRJ32;
747GrAcmap["colrj32"] = gi;
748gi.a1 = CMAP_COLBR32;
749GrAcmap["colbr32"] = gi;
750gi.a1 = CMAP_GREY128;
751GrAcmap["grey128"] = gi;
752gi.a1 = CMAP_GREYINV128;
753GrAcmap["greyinv128"] = gi;
754gi.a1 = CMAP_COLRJ128;
755GrAcmap["colrj128"] = gi;
756gi.a1 = CMAP_COLBR128;
757GrAcmap["colbr128"] = gi;
758
759// La valeur de zoom
760gi.a2 = 0;
761gi.a1 = 0;
762GrAzoom["defzoom"] = gi;
763gi.a1 = 1;
764GrAzoom["zoomx1"] = gi;
765gi.a1 = 2;
766GrAzoom["zoomx2"] = gi;
767gi.a1 = 3;
768GrAzoom["zoomx3"] = gi;
769gi.a1 = 4;
770GrAzoom["zoomx4"] = gi;
771gi.a1 = 5;
772GrAzoom["zoomx5"] = gi;
773gi.a1 = -2;
774GrAzoom["zoom/2"] = gi;
775gi.a1 = -3;
776GrAzoom["zoom/3"] = gi;
777gi.a1 = -4;
778GrAzoom["zoom/4"] = gi;
779gi.a1 = -5;
780GrAzoom["zoom/5"] = gi;
781
782// Attributs d'axes
783gi.a2 = 0;
784gi.a1 = (int)(kBoxAxes | kExtTicks | kLabels);
785GrAaxes["stdaxes"] = gi;
786GrAaxes["defaxes"] = gi;
787GrAaxes["boxaxes"] = gi;
788gi.a1 = (int)kAxesDflt;
789GrAaxes["simpleaxes"] = gi;
790gi.a1 = (int)(kBoxAxes | kExtTicks | kLabels | kGridOn);
791GrAaxes["boxaxesgrid"] = gi;
792
793gi.a1 = (int)(kBoxAxes | kTicks | kLabels | kMinTicks | kMajTicks);
794GrAaxes["fineaxes"] = gi;
795 gi.a1 = (int)(kBoxAxes | kTicks | kLabels | kMinTicks | kMajTicks | kGridOn);
796GrAaxes["grid"] = gi;
797GrAaxes["fineaxesgrid"] = gi;
798
799}
Note: See TracBrowser for help on using the repository browser.