GSI Object Oriented Online Offline (Go4) GO4-6.4.0
Loading...
Searching...
No Matches
TGo4HisDrawOptions.cpp
Go to the documentation of this file.
1// $Id$
2//-----------------------------------------------------------------------
3// The GSI Online Offline Object Oriented (Go4) Project
4// Experiment Data Processing at EE department, GSI
5//-----------------------------------------------------------------------
6// Copyright (C) 2000- GSI Helmholtzzentrum fuer Schwerionenforschung GmbH
7// Planckstr. 1, 64291 Darmstadt, Germany
8// Contact: http://go4.gsi.de
9//-----------------------------------------------------------------------
10// This software can be used under the license agreements as stated
11// in Go4License.txt file which is part of the distribution.
12//-----------------------------------------------------------------------
13
14#include "TGo4HisDrawOptions.h"
15
16#include "TROOT.h"
17#include "TPad.h"
18#include "TColor.h"
19#include "TAttLine.h"
20#include "TAttFill.h"
21#include "TAttMarker.h"
22
23#include "TGo4Picture.h"
24#include "TGo4ViewPanel.h"
25#include "TGo4MdiArea.h"
26
27#include <QColorDialog>
28
29TGo4HisDrawOptions::TGo4HisDrawOptions( QWidget *parent, const char *name, Qt::WindowFlags fl )
30 : QWidget( parent, fl )
31{
32 setObjectName( name ? name : "Go4HisDrawOptions");
33 setupUi(this);
34
35 QObject::connect(DrawOption, QOverload<int>::of(&QComboBox::activated), this, &TGo4HisDrawOptions::SetDrawOptions);
36 QObject::connect(ErrorBars, QOverload<int>::of(&QComboBox::activated), this, &TGo4HisDrawOptions::SetErrorBars);
37 QObject::connect(Coordinates, QOverload<int>::of(&QComboBox::activated), this, &TGo4HisDrawOptions::SetCoordinates);
38 QObject::connect(XStyle, QOverload<int>::of(&QComboBox::activated), this, &TGo4HisDrawOptions::XaxisStyle);
39 QObject::connect(YStyle, QOverload<int>::of(&QComboBox::activated), this, &TGo4HisDrawOptions::YaxisStyle);
40 QObject::connect(ZStyle, QOverload<int>::of(&QComboBox::activated), this, &TGo4HisDrawOptions::ZaxisStyle);
41 QObject::connect(AutoScaleBox, &QCheckBox::toggled, this, &TGo4HisDrawOptions::SetAutoScale);
42 QObject::connect(LineColor, &QPushButton::clicked, this, &TGo4HisDrawOptions::SetLineColor);
43 QObject::connect(FillColor, &QPushButton::clicked, this, &TGo4HisDrawOptions::SetFillColor);
44 QObject::connect(MarkerColor, &QPushButton::clicked, this, &TGo4HisDrawOptions::SetMarkerColor);
45
46
47 fbSettingPanelData = true;
48
50
52
53 AutoScaleBox->setVisible(false);
54
55 LineColor->setEnabled(false);
56 FillColor->setEnabled(false);
57 MarkerColor->setEnabled(false);
58
59 fbSettingPanelData = false;
60}
61
62void TGo4HisDrawOptions::panelSlot(TGo4ViewPanel *panel, TPad *pad, int signalid)
63{
64 switch (signalid) {
67 break;
70 TGo4Picture *padopt = panel->GetPadOptions(pad);
71 if (!padopt) break;
72
73 int ndim = padopt->GetFullRangeDim();
74 if (ndim <= 0) ndim = 1;
75
76 const char *drawopt = nullptr;
77 TObject *obj = panel->GetSelectedObject(pad, &drawopt);
78
79 int viewtype = view_Histo1;
80
81 TString buf(drawopt);
82 buf.ToLower();
83
84 if (obj && obj->InheritsFrom("TGraphPolar"))
85 viewtype = view_Polar;
86 else if (obj && (obj->InheritsFrom("TGraph") || obj->InheritsFrom("TMultiGraph")))
87 viewtype = view_Graph;
88 else if (ndim==1)
89 viewtype = view_Histo1;
90 else if (buf.Contains("lego") || buf.Contains("surf"))
91 viewtype = view_Histo2ext;
92 else
93 viewtype = view_Histo2;
94
95 fbSettingPanelData = true;
96
97 if (fiLastView!=viewtype) UpdateView(viewtype, panel->IsWebCanvas());
98
99 int ErrorStyle = 0, CoordStyle = 0, DrawStyle = 0;
100 DecodeDrawOption(drawopt, ErrorStyle, CoordStyle, DrawStyle);
101
102 Coordinates->setEnabled(!panel->IsWebCanvas());
103 if (panel->IsWebCanvas()) CoordStyle = 0;
104
105 DrawOption->setCurrentIndex(DrawStyle);
106 ErrorBars->setCurrentIndex(ErrorStyle);
107 Coordinates->setCurrentIndex(CoordStyle);
108 XStyle->setCurrentIndex(padopt->GetLogScale(0));
109 YStyle->setCurrentIndex(padopt->GetLogScale(1));
110 ZStyle->setCurrentIndex(padopt->GetLogScale(2));
111 ZStyle->setEnabled(ndim>1);
112 AutoScaleBox->setChecked(padopt->IsAutoScale());
113
114 LineColor->setEnabled(dynamic_cast<TAttLine*>(obj) != nullptr);
115 FillColor->setEnabled(dynamic_cast<TAttFill*>(obj) != nullptr);
116 MarkerColor->setEnabled(dynamic_cast<TAttMarker*>(obj) != nullptr);
117
118 fbSettingPanelData = false;
119
120 break; }
121 default:
122 break;
123 }
124}
125
126void TGo4HisDrawOptions::UpdateView(int viewtype, bool webcanvas)
127{
128 int lines = 30;
129 ErrorBars->clear();
130 DrawOption->clear();
131 Coordinates->clear();
132
133 switch(viewtype) {
134 case view_Histo1:
135 DrawOption->addItem( QIcon(":/icons/h1_t.png"), " scatter");
136 DrawOption->addItem( QIcon(""), "AH no axis");
137 DrawOption->addItem( QIcon(""), "*H stars");
138 DrawOption->addItem( QIcon(""), "L lines");
139 DrawOption->addItem( QIcon(""), "LF2 lines+fill");
140 DrawOption->addItem( QIcon(""), "C curve");
141 DrawOption->addItem( QIcon(""), "B barchart");
142 DrawOption->addItem( QIcon(""), "P polymarkers");
143 DrawOption->addItem( QIcon(""), "P0 polymarkers");
144 DrawOption->addItem( QIcon(""), "9H high resol");
145 DrawOption->addItem( QIcon(""), "][ no right");
146 DrawOption->addItem( QIcon(""), "TEXT digits b/w");
147 DrawOption->addItem( QIcon(""), "BAR barchart");
148 DrawOption->addItem( QIcon(":/icons/lego.png"), " lego b/w");
149 DrawOption->addItem( QIcon(":/icons/lego1.png"), " lego1 shadow");
150 DrawOption->addItem( QIcon(":/icons/lego2.png"), " lego2 color");
151 DrawOption->addItem( QIcon(":/icons/surf.png"), " mesh b/w");
152 DrawOption->addItem( QIcon(":/icons/surf1.png"), " mesh color");
153 DrawOption->addItem( QIcon(":/icons/surf2.png"), " surf c");
154 DrawOption->addItem( QIcon(":/icons/surf3.png"), " mesh+contour");
155 DrawOption->addItem( QIcon(":/icons/surf4.png"), " gourand");
156 DrawOption->addItem( QIcon(":/icons/surf5.png"), " col contour");
157 DrawOption->addItem( QIcon(""), "");
158 lines=30;
159 break;
160 case view_Histo2:
161 case view_Histo2ext:
162 DrawOption->addItem( QIcon(":/icons/h1_t.png"), " scatter");
163 DrawOption->addItem( QIcon(":/icons/col.png"), " pixel c");
164 DrawOption->addItem( QIcon(":/icons/cont0.png")," cont0 c");
165 DrawOption->addItem( QIcon(":/icons/lego2.png")," lego2 color");
166 DrawOption->addItem( QIcon(":/icons/surf2.png")," surf c");
167 DrawOption->addItem( QIcon(":/icons/surf1.png")," mesh color");
168 DrawOption->addItem( QIcon(":/icons/cont1.png")," cont1 c");
169 DrawOption->addItem( QIcon(":/icons/cont1.png")," cont4");
170 DrawOption->addItem( QIcon(":/icons/lego1.png")," lego1 shadow");
171 DrawOption->addItem( QIcon(":/icons/lego.png"), " lego b/w");
172 DrawOption->addItem( QIcon(":/icons/cont2.png")," cont2 dot b/w");
173 DrawOption->addItem( QIcon(":/icons/cont3.png")," cont3 b/w");
174 DrawOption->addItem( QIcon(":/icons/surf.png"), " mesh b/w");
175 DrawOption->addItem( QIcon(":/icons/surf3.png")," mesh+contour");
176 DrawOption->addItem( QIcon(":/icons/surf4.png")," gourand");
177 DrawOption->addItem( QIcon(":/icons/surf5.png")," col contour");
178 DrawOption->addItem( QIcon(""), "ARR arrow mode");
179 DrawOption->addItem( QIcon(""), "BOX boxes");
180 DrawOption->addItem( QIcon(""), "TEXT content");
181 lines = 30;
182#ifndef __NOGO4ASI__
183 if (!webcanvas) DrawOption->addItem( QIcon(":/icons/asimage.png"), " ASImage");
184 DrawOption->addItem( QIcon(""), "");
185#else
186 DrawOption->addItem( QIcon(""), "");
187#endif
188 break;
189 case view_Graph:
190 DrawOption->addItem("P: default");
191 DrawOption->addItem("*: stars");
192 DrawOption->addItem("L: line");
193 DrawOption->addItem("F: fill");
194 DrawOption->addItem("F1: fill 1");
195 DrawOption->addItem("F2: fill 2");
196 DrawOption->addItem("C: smooth");
197 DrawOption->addItem("B: bar");
198 DrawOption->addItem("LP: line + mark");
199 DrawOption->addItem("L*: line + *");
200 DrawOption->addItem("FP: fill + mark");
201 DrawOption->addItem("F*: fill + *");
202 DrawOption->addItem("CP: smooth + mark");
203 DrawOption->addItem("C*: smooth + *");
204 DrawOption->addItem("BP: smooth + mark");
205 DrawOption->addItem("B*: smooth + *");
206 lines=30;
207 break;
208 case view_Polar:
209 DrawOption->addItem(": opt as is");
210 DrawOption->addItem("P: polym");
211 DrawOption->addItem("F: fill");
212 DrawOption->addItem("PF: P+F");
213 lines = 10;
214 break;
215 }
216
217 DrawOption->setMaxVisibleItems(lines);
218
219 switch(viewtype) {
220 case view_Histo1:
221 ErrorBars->addItem("No Errors");
222 ErrorBars->addItem("E: simple");
223 ErrorBars->addItem("E1: edges");
224 ErrorBars->addItem("E2: rectangles");
225 ErrorBars->addItem("E3: fill");
226 ErrorBars->addItem("E4: contour");
227 break;
228 case view_Histo2:
229 ErrorBars->addItem("No palette");
230 ErrorBars->addItem(QIcon(":/icons/colz.png")," +scale");
231 break;
232 case view_Histo2ext:
233 ErrorBars->addItem("No palette");
234 ErrorBars->addItem(QIcon(":/icons/colz.png")," +scale");
235 ErrorBars->addItem(" - front");
236 ErrorBars->addItem(" - back");
237 ErrorBars->addItem(" - fr & bk");
238 ErrorBars->addItem(QIcon(":/icons/colz.png")," scale - fr");
239 ErrorBars->addItem(QIcon(":/icons/colz.png"), " scale - bk");
240 ErrorBars->addItem(QIcon(":/icons/colz.png"), " scale - fr & bk");
241 break;
242 case view_Graph:
243 ErrorBars->addItem("errors as is");
244 ErrorBars->addItem("X: no errors");
245 ErrorBars->addItem(">: arrow");
246 ErrorBars->addItem("|>: full arrow");
247 ErrorBars->addItem("2: err opt 2");
248 ErrorBars->addItem("3: err opt 3");
249 ErrorBars->addItem("4: err opt 4");
250 ErrorBars->addItem("[]: asym err");
251 break;
252 case view_Polar:
253 ErrorBars->addItem(": err as is");
254 ErrorBars->addItem("E: error bars");
255 ErrorBars->addItem("N: no labels");
256 ErrorBars->addItem("EN: E+N");
257 break;
258 }
259
260 switch(viewtype) {
261 case view_Histo1:
262 case view_Histo2:
263 case view_Histo2ext:
264 Coordinates->addItem("Cartesian");
265 Coordinates->addItem("Polar");
266 Coordinates->addItem("Spheric");
267 Coordinates->addItem("Rapidity");
268 Coordinates->addItem("Cylindric");
269 break;
270 case view_Graph:
271 Coordinates->addItem("A: norm axis");
272 Coordinates->addItem("AI: supp. axis");
273 Coordinates->addItem("AX+: top");
274 Coordinates->addItem("AY+: right");
275 Coordinates->addItem("AX+Y+: x & y");
276 Coordinates->addItem("A1: ylow = ymin");
277 break;
278 case view_Polar:
279 Coordinates->addItem(": axis as is");
280 Coordinates->addItem("A: force axis");
281 Coordinates->addItem("O: orthogonal");
282 Coordinates->addItem("AO: A+O");
283 break;
284 }
285
286 fiLastView = viewtype;
287}
288
290{
291 if (fbSettingPanelData) return;
292
294 if (!panel) return;
295
296 TString buf;
297 const char *drawopt = nullptr;
298
299 if ((kind >= 0) && (kind <= 2)) {
300 CodeDrawOptions(ErrorBars->currentIndex(), Coordinates->currentIndex(), DrawOption->currentIndex(), buf);
301 if (buf.Length() > 0)
302 drawopt = buf.Data();
303 }
304
305 panel->ChangeDrawOption(kind, value, drawopt);
306}
307
312
317
322
327
332
337
339{
340 ChangeDrawOptionForCurrentPanel(10, on ? 1 : 0);
341}
342
344 int& HisErrorStyle,
345 int& HisCoordStyle,
346 int& HisDrawStyle)
347{
348 HisDrawStyle = 0;
349 HisErrorStyle = 0;
350 HisCoordStyle = 0;
351 if (fiLastView==view_Histo2) HisDrawStyle = 1;
352
353 if (!drawopt || (*drawopt == 0)) return;
354
355 TString buf(drawopt);
356 buf.ToLower();
357
358// check for error options in string:
359
360 if (fiLastView==view_Polar) {
361 if (buf.Contains("p") && buf.Contains("f")) HisDrawStyle = 3; else
362 if (buf.Contains("f")) HisDrawStyle = 2; else
363 if (buf.Contains("p")) HisDrawStyle = 1; else HisDrawStyle = 0;
364
365 if (buf.Contains("a") && buf.Contains("o")) HisCoordStyle = 3; else
366 if (buf.Contains("o")) HisCoordStyle = 2; else
367 if (buf.Contains("a")) HisCoordStyle = 1; else HisCoordStyle = 0;
368
369 if (buf.Contains("e") && buf.Contains("n")) HisErrorStyle = 3; else
370 if (buf.Contains("n")) HisErrorStyle = 2; else
371 if (buf.Contains("e")) HisErrorStyle = 1; else HisErrorStyle = 0;
372
373 return;
374 }
375
376 if (fiLastView==view_Graph) {
377
378 if (buf.Contains("b") && buf.Contains("*")) HisDrawStyle = 15; else
379 if (buf.Contains("b") && buf.Contains("p")) HisDrawStyle = 14; else
380 if (buf.Contains("c") && buf.Contains("*")) HisDrawStyle = 13; else
381 if (buf.Contains("c") && buf.Contains("p")) HisDrawStyle = 12; else
382 if (buf.Contains("f") && buf.Contains("*")) HisDrawStyle = 11; else
383 if (buf.Contains("f") && buf.Contains("p")) HisDrawStyle = 10; else
384 if (buf.Contains("l") && buf.Contains("*")) HisDrawStyle = 9; else
385 if (buf.Contains("l") && buf.Contains("p")) HisDrawStyle = 8; else
386 if (buf.Contains("b")) HisDrawStyle = 7; else
387 if (buf.Contains("c")) HisDrawStyle = 6; else
388 if (buf.Contains("f2")) HisDrawStyle = 5; else
389 if (buf.Contains("f1")) HisDrawStyle = 4; else
390 if (buf.Contains("f")) HisDrawStyle = 3; else
391 if (buf.Contains("l")) HisDrawStyle = 2; else
392 if (buf.Contains("*")) HisDrawStyle = 1;
393
394 if (buf.Contains("x+") && buf.Contains("y+")) HisCoordStyle = 4; else
395 if (buf.Contains("y+")) HisCoordStyle = 3; else
396 if (buf.Contains("x+")) HisCoordStyle = 2; else
397 if (buf.Contains("a1")) HisCoordStyle = 5; else
398 if (buf.Contains("ai")) HisCoordStyle = 1; else
399 if (buf.Contains("a")) HisCoordStyle = 0; else HisCoordStyle = 1;
400
401 if (buf.Contains("x") && (HisCoordStyle!=4) && (HisCoordStyle!=2)) HisErrorStyle = 1; else
402 if (buf.Contains("|>")) HisErrorStyle = 3; else
403 if (buf.Contains(">")) HisErrorStyle = 2; else
404 if (buf.Contains("2") && (HisDrawStyle != 5)) HisErrorStyle = 4; else
405 if (buf.Contains("3")) HisErrorStyle = 5; else
406 if (buf.Contains("4")) HisErrorStyle = 6; else
407 if (buf.Contains("[]")) HisErrorStyle = 7;
408
409 return;
410 }
411
412 if (fiLastView==view_Histo1) {
413 if(buf.Contains("e1")) HisErrorStyle = 2; else
414 if(buf.Contains("e2")) HisErrorStyle = 3; else
415 if(buf.Contains("e3")) HisErrorStyle = 4; else
416 if(buf.Contains("e4")) HisErrorStyle = 5; else
417 if(buf.Contains("e") && !buf.Contains("text") && !buf.Contains("lego") && !buf.Contains("image")) HisErrorStyle = 1;
418 } else { // Histo2
419 if (buf.Contains("lego") || buf.Contains("surf")) {
420 if (buf.Contains("fb") && buf.Contains("bb") && buf.Contains("z")) HisErrorStyle = 7; else
421 if (buf.Contains("bb") && buf.Contains("z")) HisErrorStyle = 6; else
422 if (buf.Contains("fb") && buf.Contains("z")) HisErrorStyle = 5; else
423 if (buf.Contains("fb") && buf.Contains("bb")) HisErrorStyle = 4; else
424 if (buf.Contains("bb")) HisErrorStyle = 3; else
425 if (buf.Contains("fb")) HisErrorStyle = 2; else
426 if (buf.Contains("z")) HisErrorStyle = 1;
427 } else
428 if (buf.Contains("z")) HisErrorStyle = 1;
429 }
430
431 // check coordinate specs in string:
432 if(buf.Contains(",pol")) HisCoordStyle = 1; else
433 if(buf.Contains(",sph")) HisCoordStyle = 2; else
434 if(buf.Contains(",psr")) HisCoordStyle = 3; else
435 if(buf.Contains(",cyl")) HisCoordStyle = 4;
436
437 // check draw options itself:
438
439 if (fiLastView==view_Histo1) {
440 if(buf.Contains("surf5")) HisDrawStyle = 21; else
441 if(buf.Contains("surf4")) HisDrawStyle = 20; else
442 if(buf.Contains("surf3")) HisDrawStyle = 19; else
443 if(buf.Contains("surf2")) HisDrawStyle = 18; else
444 if(buf.Contains("surf1")) HisDrawStyle = 17; else
445 if(buf.Contains("surf")) HisDrawStyle = 16; else
446 if(buf.Contains("lego2")) HisDrawStyle = 15; else
447 if(buf.Contains("lego1")) HisDrawStyle = 14; else
448 if(buf.Contains("lego")) HisDrawStyle = 13; else
449 if(buf.Contains("lego3")) HisDrawStyle = 13; else // from gededitor
450 if(buf.Contains("bar")) HisDrawStyle = 12; else
451 if(buf.Contains("text")) HisDrawStyle = 11; else
452 if(buf.Contains("][")) HisDrawStyle = 10; else
453 if(buf.Contains("9h")) HisDrawStyle = 9; else
454 if(buf.Contains("p0")) HisDrawStyle = 8; else
455 if(*drawopt == 'p') HisDrawStyle = 7; else
456 if(*drawopt == 'P') HisDrawStyle = 7; else
457 if(*drawopt == 'b') HisDrawStyle = 6; else
458 if(*drawopt == 'B') HisDrawStyle = 6; else
459 if((*drawopt == 'c') && !buf.Contains("nostack")) HisDrawStyle = 5; else
460 if((*drawopt == 'C') && !buf.Contains("nostack")) HisDrawStyle = 5; else
461 if(buf.Contains("lf2")) HisDrawStyle = 4; else
462 if(*drawopt == 'l') HisDrawStyle = 3; else
463 if(*drawopt == 'L') HisDrawStyle = 3; else
464 if(buf.Contains("*h")) HisDrawStyle = 2; else
465 if(buf.Contains("ah")) HisDrawStyle = 1;
466
467 if ((HisDrawStyle >= 16) && ((HisCoordStyle == 0) || (HisCoordStyle == 2)))
468 HisCoordStyle = 1;
469 } else { // Histo2
470 if(buf.Contains("hist")) HisDrawStyle = 0; else
471 if(buf.Contains("col")) HisDrawStyle = 1; else
472 if(buf.Contains("lego3")) HisDrawStyle = 9; else // from gededitor
473 if(buf.Contains("lego1")) HisDrawStyle = 8; else
474 if(buf.Contains("lego2")) HisDrawStyle = 3; else
475 if(buf.Contains("lego")) HisDrawStyle = 9; else
476 if(buf.Contains("cont0")) HisDrawStyle = 2; else
477 if(buf.Contains("cont1")) HisDrawStyle = 6; else
478 if(buf.Contains("cont2")) HisDrawStyle = 10; else
479 if(buf.Contains("cont3")) HisDrawStyle = 11; else
480 if(buf.Contains("cont4")) HisDrawStyle = 7; else
481 if(buf.Contains("cont")) HisDrawStyle = 2; else
482 if(buf.Contains("surf1")) HisDrawStyle = 5; else
483 if(buf.Contains("surf2")) HisDrawStyle = 4; else
484 if(buf.Contains("surf3")) HisDrawStyle = 13; else
485 if(buf.Contains("surf4")) HisDrawStyle = 14; else
486 if(buf.Contains("surf5")) HisDrawStyle = 15; else
487 if(buf.Contains("surf")) HisDrawStyle = 12; else
488 if(buf.Contains("arr")) HisDrawStyle = 16; else
489 if(buf.Contains("box")) HisDrawStyle = 17; else
490 if(buf.Contains("text")) HisDrawStyle = 18; else
491 if(buf.Contains("asimage")) HisDrawStyle = 19;
492 }
493}
494
496 int HisCoordStyle,
497 int HisDrawStyle,
498 TString &buf)
499{
500 buf = "";
501
502 if (fiLastView==view_Polar) {
503 switch (HisDrawStyle) {
504 case 0: buf = ""; break;
505 case 1: buf = "P"; break;
506 case 2: buf = "F"; break;
507 case 3: buf = "PF"; break;
508 }
509
510 switch (HisErrorStyle) {
511 case 0: break;
512 case 1: buf.Append("E"); break;
513 case 2: buf.Append("N"); break;
514 case 3: buf.Append("EN"); break;
515 }
516
517 switch (HisCoordStyle) {
518 case 0: break;
519 case 1: buf.Append("A"); break;
520 case 2: buf.Append("O"); break;
521 case 3: buf.Append("AO"); break;
522 }
523 return;
524 }
525
526 if (fiLastView == view_Graph) {
527
528 switch (HisDrawStyle) {
529 case 0: buf = "P"; break;
530 case 1: buf = "*"; break;
531 case 2: buf = "L"; break;
532 case 3: buf = "F"; break;
533 case 4: buf = "F1"; break;
534 case 5: buf = "F2"; break;
535 case 6: buf = "C"; break;
536 case 7: buf = "B"; break;
537 case 8: buf = "LP"; break;
538 case 9: buf = "L*"; break;
539 case 10: buf = "FP"; break;
540 case 11: buf = "F*"; break;
541 case 12: buf = "CP"; break;
542 case 13: buf = "C*"; break;
543 case 14: buf = "BP"; break;
544 case 15: buf = "B*"; break;
545 default: buf = "P";
546 }
547
548 switch (HisErrorStyle) {
549 case 0: break;
550 case 1: buf.Append("X"); break;
551 case 2: buf.Append(">"); break;
552 case 3: buf.Append("|>"); break;
553 case 4: buf.Append("2"); break;
554 case 5: buf.Append("3"); break;
555 case 6: buf.Append("4"); break;
556 case 7: buf.Append("[]"); break;
557 }
558
559 switch (HisCoordStyle) {
560 case 0: buf.Append("A"); break;
561 case 1: buf.Append("AI"); break;
562 case 2: buf.Append("AX+"); break;
563 case 3: buf.Append("AY+"); break;
564 case 4: buf.Append("AX+Y+"); break;
565 case 5: buf.Append("A1"); break;
566 }
567
568 return;
569 }
570
571 if (fiLastView==view_Histo1) {
572
573 switch (HisDrawStyle) {
574 case 0: buf = ""; break;
575 case 1: buf = "ah"; break;
576 case 2: buf = "*h"; break;
577 case 3: buf = "l"; break;
578 case 4: buf = "lf2"; break;
579 case 5: buf = "c"; break;
580 case 6: buf = "b"; break;
581 case 7: buf = "p"; break;
582 case 8: buf = "p0"; break;
583 case 9: buf = "9h"; break;
584 case 10: buf = "]["; break;
585 case 11: buf = "text"; break;
586 case 12: buf = "bar"; break;
587 case 13: buf = "lego3"; break; // for geditor, "lego"
588 case 14: buf = "lego1"; break;
589 case 15: buf = "lego2"; break;
590 case 16: buf = "surf"; break;
591 case 17: buf = "surf1"; break;
592 case 18: buf = "surf2"; break;
593 case 19: buf = "surf3"; break;
594 case 20: buf = "surf4"; break;
595 case 21: buf = "surf5"; break;
596 }
597 if ((HisDrawStyle >= 16) && ((HisCoordStyle == 0) || (HisCoordStyle == 2)))
598 HisCoordStyle = 1;
599 } else // Histo2
600
601 switch (HisDrawStyle) {
602 case 0: buf = "hist"; break;
603 case 1: buf = "col"; break;
604 case 2: buf = "cont0"; break;
605 case 3: buf = "lego2"; break;
606 case 4: buf = "surf2"; break;
607 case 5: buf = "surf1"; break;
608 case 6: buf = "cont1"; break;
609 case 7: buf = "cont4"; break;
610 case 8: buf = "lego1"; break;
611 case 9: buf = "lego3"; break;
612 case 10: buf = "cont2"; break;
613 case 11: buf = "cont3"; break;
614 case 12: buf = "surf"; break;
615 case 13: buf = "surf3"; break;
616 case 14: buf = "surf4"; break;
617 case 15: buf = "surf5"; break;
618 case 16: buf = "arr"; break;
619 case 17: buf = "box"; break;
620 case 18: buf = "text"; break;
621#ifndef __NOGO4ASI__
622 case 19: buf = "asimage"; break;
623#else
624 case 19: buf = ""; break;
625#endif
626 }
627
628 switch (HisCoordStyle) {
629 case 0: break;
630 case 1: buf.Append(",pol"); break;
631 case 2: buf.Append(",sph"); break;
632 case 3: buf.Append(",psr"); break;
633 case 4: buf.Append(",cyl"); break;
634 }
635
637 switch (HisErrorStyle) {
638 case 0: break;
639 case 1: buf.Append("E"); break;
640 case 2: buf.Append("E1"); break;
641 case 3: buf.Append("E2"); break;
642 case 4: buf.Append("E3"); break;
643 case 5: buf.Append("E4"); break;
644 }
645 else
646 switch (HisErrorStyle) {
647 case 0: break;
648 case 1: buf.Append("Z"); break;
649 case 2: buf.Append("FB"); break;
650 case 3: buf.Append("BB"); break;
651 case 4: buf.Append("BBFB"); break;
652 case 5: buf.Append("ZFB"); break;
653 case 6: buf.Append("ZBB"); break;
654 case 7: buf.Append("ZBBFB"); break;
655 }
656}
657
658
663
668
673
675{
677 if (!panel) return;
678
679 TPad *pad = panel->GetActivePad();
680 TObject *obj = panel->GetSelectedObject(pad, nullptr);
681
682 Color_t icol = 0;
683
684 switch (kind) {
685 case 0: {
686 TAttLine* att = dynamic_cast<TAttLine*> (obj);
687 if (!att) return;
688 icol = att->GetLineColor();
689 break;
690 }
691 case 1: {
692 TAttFill* att = dynamic_cast<TAttFill*> (obj);
693 if (!att) return;
694 icol = att->GetFillColor();
695 break;
696 }
697 case 2: {
698 TAttMarker* att = dynamic_cast<TAttMarker*> (obj);
699 if (!att) return;
700 icol = att->GetMarkerColor();
701 break;
702 }
703 }
704
705 TColor* rcol = gROOT->GetColor(icol);
706
707 QColor qcol;
708
709 if (rcol)
710 qcol.setRgb(rcol->GetRed(), rcol->GetGreen(), rcol->GetBlue());
711
712 QColor c = QColorDialog::getColor(qcol);
713 if (!c.isValid()) return;
714
715 icol = TColor::GetColor(c.red(), c.green(), c.blue());
716
717 switch (kind) {
718 case 0: {
719 TAttLine* att = dynamic_cast<TAttLine*> (obj);
720 if (att) att->SetLineColor(icol);
721 break;
722 }
723 case 1: {
724 TAttFill* att = dynamic_cast<TAttFill*> (obj);
725 if (att) att->SetFillColor(icol);
726 break;
727 }
728 case 2: {
729 TAttMarker* att = dynamic_cast<TAttMarker*> (obj);
730 if (att) att->SetMarkerColor(icol);
731 break;
732 }
733 }
734
735 panel->MarkPadModified(pad);
736
737 panel->ShootRepaintTimer(pad);
738
739 panel->ActivateInGedEditor(obj);
740}
@ panel_Activated
Definition QGo4Widget.h:90
@ panel_ActiveUpdated
Definition QGo4Widget.h:93
virtual void SetMarkerColor()
virtual void CodeDrawOptions(int HisErrorStyle, int HisCoordStyle, int HisDrawStyle, TString &buf)
virtual void DecodeDrawOption(const char *drawopt, int &HisErrorStyle, int &HisCoordStyle, int &HisDrawStyle)
virtual void SetDrawOptions(int t)
virtual void SetAutoScale(bool on)
virtual void SetCoordinates(int t)
virtual void YaxisStyle(int t)
TGo4HisDrawOptions(QWidget *parent=nullptr, const char *name=nullptr, Qt::WindowFlags fl=Qt::Widget)
virtual void SetErrorBars(int t)
virtual void panelSlot(TGo4ViewPanel *panel, TPad *pad, int signalid)
virtual void ChangeDrawOptionForCurrentPanel(int kind, int value)
virtual void ChangeColor(int kind)
virtual void XaxisStyle(int t)
virtual void ZaxisStyle(int t)
virtual void UpdateView(int viewtype, bool webcanvas=false)
void panelSignal(TGo4ViewPanel *, TPad *, int)
static TGo4MdiArea * Instance()
TGo4ViewPanel * GetActivePanel()
Picture cconfiguration in Go4.
Definition TGo4Picture.h:40
Int_t GetLogScale(Int_t nscale=0) const
bool IsAutoScale() const
Int_t GetFullRangeDim() const
virtual void ShootRepaintTimer()
virtual void MarkPadModified(TPad *pad)
virtual void ChangeDrawOption(int kind, int value, const char *drawopt)
virtual TGo4Picture * GetPadOptions(TPad *pad)
virtual TObject * GetSelectedObject(TPad *pad, const char **drawopt)
virtual TPad * GetActivePad()
virtual bool IsWebCanvas() const
virtual void ActivateInGedEditor(TObject *obj)