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

Last change on this file since 194 was 194, checked in by ercodmgr, 27 years ago

Petites erreurs Reza 11/02/99

File size: 19.4 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#ifndef SANS_StarReco
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#ifndef SANS_StarReco
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#ifndef SANS_StarReco
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 " + 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
459 }
460
461return(ropt);
462}
463
464/* --Methode-- */
465char* Services2NObjMgr::PClassIdToClassName(int cid)
466{
467switch (cid) {
468 case ClassId_Poly1 :
469 return("Poly1");
470 case ClassId_Poly2 :
471 return("Poly2");
472 case ClassId_Matrix :
473 return("Matrix");
474 case ClassId_Vector :
475 return("Vector");
476
477 case ClassId_DVList :
478 return("DVList");
479
480 case ClassId_Histo1D :
481 return("Histo1D");
482 case ClassId_Histo2D :
483 return("Histo2D");
484 case ClassId_HProf :
485 return("HProf");
486 case ClassId_NTuple :
487 return("NTuple");
488 case ClassId_GeneralFitData :
489 return("GeneralFitData");
490
491 case ClassId_Image :
492 return("RzImage");
493 case ClassId_Image + kuint_1 :
494 return("ImageU1");
495 case ClassId_Image + kint_1 :
496 return("ImageI1");
497 case ClassId_Image + kuint_2 :
498 return("ImageU2");
499 case ClassId_Image + kint_2 :
500 return("ImageI2");
501 case ClassId_Image + kuint_4 :
502 return("ImageU4");
503 case ClassId_Image + kint_4 :
504 return("ImageI4");
505 case ClassId_Image + kr_4 :
506 return("ImageR4");
507 case ClassId_Image + kr_8 :
508 return("ImageR8");
509
510 case ClassId_ZFidu :
511 return("ZFidu");
512
513#ifndef SANS_StarReco
514 case ClassId_StarList :
515 return("StarList");
516 case ClassId_Transfo :
517 return("Transfo");
518 case ClassId_PSF :
519 return("PSF");
520
521 case ClassId_Star + BStar_Type :
522 return("BStar");
523 case ClassId_Star + RzStar_Type :
524 return("RzStar");
525 case ClassId_Star + PSFStar_Type :
526 return("PSFStar");
527 case ClassId_Star + MCStar_Type :
528 return("MCStar");
529 case ClassId_Star + CircRFixStar_Type :
530 return("CircRFixStar");
531 case ClassId_Star + PSFDHStar_Type :
532 return("PSFDHStar");
533 case ClassId_Star + PSFSEStar_Type :
534 return("PSFSEStar");
535 case ClassId_Star + MCDHStar_Type :
536 return("MCDHStar");
537#endif
538
539// - Ajout objet PPF
540 default:
541 return("Unknown");
542 }
543}
544
545/* --Methode-- */
546char* Services2NObjMgr::PClassIdToShortClassName(int cid)
547{
548switch (cid) {
549 case ClassId_Poly1 :
550 case ClassId_Poly2 :
551 return("Poly");
552 case ClassId_Matrix :
553 return("Mtx");
554 case ClassId_Vector :
555 return("Vec");
556 case ClassId_DVList :
557 return("Dvl");
558
559 case ClassId_Histo1D :
560 return("H1D");
561 case ClassId_Histo2D :
562 return("H2D");
563 case ClassId_HProf :
564 return("HPF");
565 case ClassId_NTuple :
566 return("NT");
567 case ClassId_GeneralFitData :
568 return("GFD");
569
570 case ClassId_Image :
571 case ClassId_Image + kuint_1 :
572 case ClassId_Image + kint_1 :
573 case ClassId_Image + kuint_2 :
574 case ClassId_Image + kint_2 :
575 case ClassId_Image + kuint_4 :
576 case ClassId_Image + kint_4 :
577 case ClassId_Image + kr_4 :
578 case ClassId_Image + kr_8 :
579 return("Img");
580
581 case ClassId_ZFidu :
582 return("Fidu");
583
584#ifndef SANS_StarReco
585 case ClassId_StarList :
586 return("Stl");
587 case ClassId_Transfo :
588 return("Tr");
589 case ClassId_PSF :
590 return("PSF");
591
592 case ClassId_Star + BStar_Type :
593 case ClassId_Star + RzStar_Type :
594 case ClassId_Star + PSFStar_Type :
595 case ClassId_Star + MCStar_Type :
596 case ClassId_Star + CircRFixStar_Type :
597 case ClassId_Star + PSFDHStar_Type :
598 case ClassId_Star + PSFSEStar_Type :
599 case ClassId_Star + MCDHStar_Type :
600 return("Star");
601#endif
602
603// - Ajout objet PPF
604 default:
605 return("U");
606 }
607}
608
609// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
610// Initialisation des chaines de caracteres designant les attributs graphiques
611
612/* --Methode-- */
613void Services2NObjMgr::InitGrAttNames()
614{
615gratt_item gi;
616// Les couleurs
617gi.a2 = 0;
618gi.a1 = PI_NotDefColor;
619GrAcolors["defcol"] = gi;
620gi.a1 = PI_Black;
621GrAcolors["black"] = gi;
622gi.a1 = PI_White;
623GrAcolors["white"] = gi;
624gi.a1 = PI_Grey;
625GrAcolors["grey"] = gi;
626gi.a1 = PI_Red;
627GrAcolors["red"] = gi;
628gi.a1 = PI_Blue;
629GrAcolors["blue"] = gi;
630gi.a1 = PI_Green;
631GrAcolors["green"] = gi;
632gi.a1 = PI_Yellow;
633GrAcolors["yellow"] = gi;
634gi.a1 = PI_Magenta;
635GrAcolors["magenta"] = gi;
636
637gi.a1 = PI_Cyan;
638GrAcolors["cyan"] = gi;
639gi.a1 = PI_Turquoise;
640GrAcolors["turquoise"] = gi;
641gi.a1 = PI_NavyBlue;
642GrAcolors["navyblue"] = gi;
643gi.a1 = PI_Orange;
644GrAcolors["orange"] = gi;
645gi.a1 = PI_SiennaRed;
646GrAcolors["siennared"] = gi;
647gi.a1 = PI_Purple;
648GrAcolors["purple"] = gi;
649gi.a1 = PI_LimeGreen;
650GrAcolors["limegreen"] = gi;
651gi.a1 = PI_Gold;
652GrAcolors["gold"] = gi;
653
654// Les attributs de lignes
655gi.a2 = 0;
656gi.a1 = PI_NotDefLineAtt;
657GrAlines["defline"] = gi;
658gi.a1 = PI_NormalLine;
659GrAlines["normalline"] = gi;
660gi.a1 = PI_ThinLine;
661GrAlines["thinline"] = gi;
662gi.a1 = PI_ThickLine;
663GrAlines["thickline"] = gi;
664gi.a1 = PI_DashedLine;
665GrAlines["dashedline"] = gi;
666gi.a1 = PI_ThinDashedLine;
667GrAlines["thindashedline"] = gi;
668gi.a1 = PI_ThickDashedLine;
669GrAlines["thickdashedline"] = gi;
670gi.a1 = PI_DottedLine;
671GrAlines["dottedline"] = gi;
672gi.a1 = PI_ThinDottedLine;
673GrAlines["thindottedline"] = gi;
674gi.a1 = PI_ThickDottedLine;
675GrAlines["thickdottedline"] = gi;
676
677// Les fontes (a faire)
678gi.a2 = PI_NotDefFontSize;
679gi.a1 = PI_NotDefFontAtt;
680GrAlines["deffont"] = gi;
681
682gi.a2 = PI_NormalSizeFont;
683gi.a1 = PI_RomanFont;
684GrAlines["normalfont"] = gi;
685gi.a1 = PI_BoldFont;
686GrAlines["boldfont"] = gi;
687gi.a1 = PI_ItalicFont;
688GrAlines["italicfont"] = gi;
689gi.a2 = PI_SmallSizeFont;
690gi.a1 = PI_RomanFont;
691GrAlines["smallfont"] = gi;
692gi.a1 = PI_BoldFont;
693GrAlines["smallboldfont"] = gi;
694gi.a1 = PI_ItalicFont;
695GrAlines["smallitalicfont"] = gi;
696gi.a2 = PI_BigSizeFont;
697gi.a1 = PI_RomanFont;
698GrAlines["bigfont"] = gi;
699gi.a1 = PI_BoldFont;
700GrAlines["bigboldfont"] = gi;
701gi.a1 = PI_ItalicFont;
702GrAlines["bigitalicfont"] = gi;
703gi.a2 = PI_HugeSizeFont;
704gi.a1 = PI_RomanFont;
705GrAlines["hugefont"] = gi;
706gi.a1 = PI_BoldFont;
707GrAlines["hugeboldfont"] = gi;
708gi.a1 = PI_ItalicFont;
709GrAlines["hugeitalicfont"] = gi;
710
711
712// Les markers
713const char* mrkn[11] = { "dotmarker", "plusmarker", "crossmarker",
714 "circlemarker", "fcirclemarker", "boxmarker", "fboxmarker",
715 "trianglemarker", "ftrianglemarker", "starmarker", "fstarmarker"};
716PIMarker mrk[11] = { PI_DotMarker, PI_PlusMarker, PI_CrossMarker,
717 PI_CircleMarker, PI_FCircleMarker, PI_BoxMarker, PI_FBoxMarker,
718 PI_TriangleMarker, PI_FTriangleMarker, PI_StarMarker, PI_FStarMarker};
719
720gi.a2 = 0;
721gi.a1 = PI_NotDefMarker;
722GrAmarkers["defmarker"] = gi;
723
724for(int j=0; j<11; j++) {
725 string smrk;
726 char buff[16];
727 for(int m=1; m<10; m+=2) {
728 sprintf(buff,"%d",m);
729 smrk = (string)mrkn[j] + (string)buff;
730 gi.a1 = mrk[j]; gi.a2 = m;
731 GrAmarkers[smrk] = gi;
732 }
733 }
734
735// Les tables de couleurs
736gi.a2 = 0;
737gi.a1 = CMAP_OTHER;
738GrAcmap["defcmap"] = gi;
739gi.a1 = CMAP_GREY32;
740GrAcmap["grey32"] = gi;
741gi.a1 = CMAP_GREYINV32;
742GrAcmap["greyinv32"] = gi;
743gi.a1 = CMAP_COLRJ32;
744GrAcmap["colrj32"] = gi;
745gi.a1 = CMAP_COLBR32;
746GrAcmap["colbr32"] = gi;
747gi.a1 = CMAP_GREY128;
748GrAcmap["grey128"] = gi;
749gi.a1 = CMAP_GREYINV128;
750GrAcmap["greyinv128"] = gi;
751gi.a1 = CMAP_COLRJ128;
752GrAcmap["colrj128"] = gi;
753gi.a1 = CMAP_COLBR128;
754GrAcmap["colbr128"] = gi;
755
756// Les tables de couleurs
757gi.a2 = 0;
758gi.a1 = 0;
759GrAzoom["defzoom"] = gi;
760gi.a1 = 1;
761GrAzoom["zoomx1"] = gi;
762gi.a1 = 2;
763GrAzoom["zoomx2"] = gi;
764gi.a1 = 3;
765GrAzoom["zoomx3"] = gi;
766gi.a1 = 4;
767GrAzoom["zoomx4"] = gi;
768gi.a1 = 5;
769GrAzoom["zoomx5"] = gi;
770gi.a1 = -2;
771GrAzoom["zoom/2"] = gi;
772gi.a1 = -3;
773GrAzoom["zoom/3"] = gi;
774gi.a1 = -4;
775GrAzoom["zoom/4"] = gi;
776gi.a1 = -5;
777GrAzoom["zoom/5"] = gi;
778
779}
Note: See TracBrowser for help on using the repository browser.