GammaWare  Head Version for release 0.9
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Level.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  * Copyright (C) 2004 by Olivier Stezowski *
3  * stezow(AT)ipnl.in2p3.fr *
4  * *
5  * This program is free software; you can redistribute it and/or modify *
6  * it under the terms of the GNU General Public License as published by *
7  * the Free Software Foundation; either version 2 of the License, or *
8  * (at your option) any later version. *
9  * *
10  * This program is distributed in the hope that it will be useful, *
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13  * GNU General Public License for more details. *
14  * *
15  * You should have received a copy of the GNU General Public License *
16  * along with this program; if not, write to the *
17  * Free Software Foundation, Inc., *
18  * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
19  ***************************************************************************/
20 
23 #ifndef Gw_Level
24 #include "Level.h"
25 #endif
26 
27 #ifndef ROOT_TCanvas
28 //#include <TVirtualPad.h>
29 #include <TCanvas.h>
30 #endif
31 
32 #ifndef ROOT_TROOT
33 #include <TROOT.h>
34 #endif
35 
36 #ifndef ROOT_TClass
37 #include <TClass.h>
38 #endif
39 
40 #ifndef ROOT_TVirtualX
41 #include <TVirtualX.h>
42 #endif
43 
44 using namespace Gw;
45 
47 
48 const Short_t Level::fgkMaxLevelLabel = 4;
49 const Int_t Level::fgkMaxColor = 4;
50 const Int_t Level::fgkMaxStyle = 2;
51  Style_t Level::fgDefaultStyle[fgkMaxStyle] = {1, 2};
52  Color_t Level::fgDefaultColor[fgkMaxColor] = {9, 2, 1, 6};
53  Float_t Level::fgDefaultLabelSize = 0.03;
54  Color_t Level::fgDefaultLabelColor = 1;
55  Bool_t Level::fgMovable = false;
56 
57 
58 
59 //__________________________________________________________
61  : TLine(),
62  fVisLabel("0000"),
63  fPosLabel("0123"),
64  fLabel0(),
65  fLabel1(),
66  fLabel2(),
67  fLabel3(),
68  fExtra(),
69  fHasExtra(false),
70  fDefaultStyle(kKnown),
71  fDefaultColor(kPlus),
72  fLog("Level"),
73  fIsSelected(false),
74  fIsVisible(true),
75  fIsModified(false),
76  fDY(0.0)
77 {
78  TLine::SetX1(0); TLine::SetX2(0); TLine::SetY1(0); TLine::SetY2(0);
79  fExtra.SetX1(0);
80  fExtra.SetX2(0);
81  fExtra.SetLineColor(17); fExtra.SetLineStyle(2); fExtra.SetBit(TObject::kInvalidObject);
82 
83  fLabel0.SetX(0); fLabel0.SetY(0); fLabel0.SetTextAlign(21); fLabel0.SetBit(TObject::kCannotPick);
84  fLabel1.SetX(0); fLabel1.SetY(0); fLabel1.SetTextAlign(21); fLabel1.SetBit(TObject::kCannotPick);
85  fLabel2.SetX(0); fLabel2.SetY(0); fLabel2.SetTextAlign(23); fLabel2.SetBit(TObject::kCannotPick);
86  fLabel3.SetX(0); fLabel3.SetY(0); fLabel3.SetTextAlign(23); fLabel3.SetBit(TObject::kCannotPick);
87 
88  fLabel0.SetTextSize(GetDefaultLabelSize()); fLabel1.SetTextSize(GetDefaultLabelSize());
89  fLabel2.SetTextSize(GetDefaultLabelSize()); fLabel3.SetTextSize(GetDefaultLabelSize());
90 }
91 
92 //__________________________________________________________
94 {
95 }
96 
97 
98 //__________________________________________________________
100 {
101  Style_t st = GetDefaultStyle(style);
102  SetLineStyle(st);
103  fDefaultStyle = style;
104 }
105 
106 //__________________________________________________________
108 {
109  Color_t co = GetDefaultColor(color);
110  SetLineColor(co);
111  fDefaultColor = color;
112 }
113 
114 
115 //__________________________________________________________
117 {
118  fLabel0.SetTextSize(size);
119  fLabel1.SetTextSize(size);
120  fLabel2.SetTextSize(size);
121  fLabel3.SetTextSize(size);
122 }
123 
124 //__________________________________________________________
125 void Level::SetLabelsColor(Color_t color)
126 {
127  fLabel0.SetTextColor(color);
128  fLabel1.SetTextColor(color);
129  fLabel2.SetTextColor(color);
130  fLabel3.SetTextColor(color);
131 }
132 
133 //__________________________________________________________
134 void Level::SetExtraLine(Double_t x1, Double_t x2)
135 {
137 }
138 
139 //__________________________________________________________
140 void Level::SetExtraLineX1(Double_t x1)
141 {
142  if ( fExtra.TestBit(TObject::kInvalidObject) ) { // not yet initialised
143  fExtra.SetBit(TObject::kCannotPick);
144  fExtra.SetX1(TLine::GetX1());fExtra.SetX2(TLine::GetX2());
145  fExtra.SetBit(TObject::kInvalidObject, false);
146  }
147 
148  if ( x1 < GetX1() ) {
149  fExtra.SetX1(x1);
150  fExtra.SetX2(TMath::Max(TLine::GetX1(),fExtra.GetX2()));
151  fHasExtra = true;
152  }
153 }
154 
155 //__________________________________________________________
156 void Level::SetExtraLineX2(Double_t x2)
157 {
158  if ( fExtra.TestBit(TObject::kInvalidObject) ) { // not yet initialised
159  fExtra.SetBit(TObject::kCannotPick);
160  fExtra.SetX1(TLine::GetX1());fExtra.SetX2(TLine::GetX2());
161  fExtra.SetBit(TObject::kInvalidObject, false);
162  }
163 
164  if ( x2 > GetX2() ) {
165  fExtra.SetX2(x2);
166  fExtra.SetX1(TMath::Min(TLine::GetX2(),fExtra.GetX1()));
167  fHasExtra = true;
168  }
169 }
170 
171 //__________________________________________________________
172 void Level::SetVisLabel(const char *s)
173 {
174  TString st = s; Short_t end = (st.Length() < fgkMaxLevelLabel) ? st.Length(): fgkMaxLevelLabel;
175 
176  for( Short_t i = 0; i < end; i++ ) {
177  if ( st[i] == '0' ) {
178  fVisLabel[i] = '0';
179  }
180  else {
181  fVisLabel[i] = '1';
182  }
183  }
184 }
185 
186 //__________________________________________________________
187 void Level::SetPosLabel(const char *s)
188 {
189  TString st = s; Short_t end = (st.Length() < fgkMaxLevelLabel) ? st.Length(): fgkMaxLevelLabel;
190 
191  for( Short_t i = 0; i < end; ++i ) {
192  if (st.CountChar(st[i]) > 1) {
193  fPosLabel = "0123";
194  fLog.SetProcessMethod("SetPosLabel(const char* )");
195  fLog << warning << Form("Unambiguous position label pattern, set to %s", fPosLabel.Data()) << dolog;
196  return;
197  }
198  }
199  fPosLabel = s;
200 }
201 
202 
203 //__________________________________________________________
204 void Level::SetLabel(const char *label, Int_t which)
205 {
206  if (which < 0 || which >= fgkMaxLevelLabel) return;
207  switch (which) {
208  case 0:
209  fLabel0.SetText(fLabel0.GetX(),fLabel0.GetY(),label);
210  break;
211  case 1:
212  fLabel1.SetText(fLabel1.GetX(),fLabel1.GetY(),label);
213  break;
214  case 2:
215  fLabel2.SetText(fLabel2.GetX(),fLabel2.GetY(),label);
216  break;
217  case 3:
218  fLabel3.SetText(fLabel3.GetX(),fLabel3.GetY(),label);
219  break;
220  }
221 }
222 
223 //__________________________________________________________
224 void Level::SetLabels(const char *l0, const char *l1, const char *l2, const char *l3)
225 {
226  fLabel0.SetText(fLabel0.GetX(),fLabel0.GetY(),l0);
227  fLabel1.SetText(fLabel1.GetX(),fLabel1.GetY(),l1);
228  fLabel2.SetText(fLabel2.GetX(),fLabel2.GetY(),l2);
229  fLabel3.SetText(fLabel3.GetX(),fLabel3.GetY(),l3);
230 }
231 
232 //__________________________________________________________
233 void Level::ExtraLine(Bool_t extra)
234 {
235  fHasExtra = extra;
236  if (fHasExtra)
237  fExtra.SetBit(TObject::kInvalidObject, false);
238  else
239  fExtra.SetBit(TObject::kInvalidObject, true);
240 }
241 
242 //__________________________________________________________
244 {
248 }
249 
250 //__________________________________________________________
251 TLatex & Level::GetLabel(Int_t which)
252 {
253  if ( which <= 0 ) return fLabel0;
254 
255  if ( which == 1 ) return fLabel1;
256  if ( which == 2 ) return fLabel2;
257 
258  return fLabel3;
259 }
260 
261 //__________________________________________________________
262 void Level::SetX1(Double_t x1)
263 {
264  Double_t dx = x1-TLine::GetX1(); TLine::SetX1(x1);
265 
266  for (Int_t i = 0; i <= 3; i+=3) {
267  Int_t idx = fPosLabel[i] - '0';
268  GetLabel(idx).SetX(GetLabel(idx).GetX()+dx);
269  }
270 }
271 
272 //__________________________________________________________
273 void Level::SetX2(Double_t x2)
274 {
275  Double_t dx = x2-TLine::GetX2(); TLine::SetX2(x2);
276 
277  for (Int_t i = 1; i <= 2; ++i) {
278  Int_t idx = fPosLabel[i] - '0';
279  GetLabel(idx).SetX(GetLabel(idx).GetX()+dx);
280  }
281 }
282 
283 //__________________________________________________________
284 void Level::SetY1(Double_t y1)
285 {
286  Double_t dy = y1-TLine::GetY1();
287 
288  for (Int_t i = 0; i < fgkMaxLevelLabel; ++i) {
289  Int_t align = 21;
290  if (i > 1) align = 23;
291 
292  Int_t idx = fPosLabel[i] - '0';
293  GetLabel(idx).SetY(GetLabel(idx).GetY()+dy);
294  GetLabel(idx).SetTextAlign(align);
295 
296  }
297 
298  // a level is always horizontal
299  TLine::SetY1(y1); TLine::SetY2(y1);
300 }
301 
302 //__________________________________________________________
303 void Level::SetY2(Double_t y2)
304 {
305  Double_t dy = y2-TLine::GetY2();
306 
307  for (Int_t i = 0; i < fgkMaxLevelLabel; ++i) {
308  Int_t align = 21;
309  if (i > 1) align = 23;
310 
311  Int_t idx = fPosLabel[i] - '0';
312  GetLabel(idx).SetY(GetLabel(idx).GetY()+dy);
313  GetLabel(idx).SetTextAlign(align);
314 
315  }
316 
317  // a level is always horizontal
318  TLine::SetY1(y2); TLine::SetY2(y2); fExtra.SetY1(y2); fExtra.SetY2(y2);
319 }
320 
321 //__________________________________________________________
322 Int_t Level::Compare(const TObject *lev) const
323 {
324  if ( GetY1() == ((Level *)lev)->GetY1() )
325  return 0;
326  else if ( GetY1() < ((Level *)lev)->GetY1() )
327  return -1;
328  else
329  return 1;
330 }
331 
332 //__________________________________________________________
333 void Level::Paint(Option_t* option)
334 {
335  if ( !IsVisible() ) return;
336 
337  if (!fExtra.TestBit(TObject::kInvalidObject))
338  fExtra.Paint(option);
339 
340  TLine::Paint(option);
341 
342  Int_t idx = 0;
343 
344  if ( fVisLabel[0] == '1' ) {
345  idx = fPosLabel[0] -'0';
346  GetLabel(idx).Paint(option);
347  }
348  if ( fVisLabel[1] == '1' ) {
349  idx = fPosLabel[1] - '0';
350  GetLabel(idx).Paint(option);
351  }
352  if ( fVisLabel[2] == '1' ) {
353  idx = fPosLabel[2] -'0';
354  GetLabel(idx).Paint(option);
355  }
356 
357  if ( fVisLabel[3] == '1' ) {
358  idx = fPosLabel[3] - '0';
359  GetLabel(idx).Paint(option);
360  }
361 }
362 
363 //__________________________________________________________
364 void Level::Draw(Option_t* option)
365 {
366  if ( !IsVisible() ) return;
367 
368  TLine::Draw(option);
369 
370  //fExtra.Draw(option);
371 
372  Int_t idx = 0;
373 
374  if ( fVisLabel[0] == '1' ) {
375  idx = fPosLabel[0] -'0';
376  GetLabel(idx).Draw(option);
377  }
378  if ( fVisLabel[1] == '1' ) {
379  idx = fPosLabel[1] - '0';
380  GetLabel(idx).Draw(option);
381  }
382  if ( fVisLabel[2] == '1' ) {
383  idx = fPosLabel[2] -'0';
384  GetLabel(idx).Draw(option);
385  }
386 
387  if ( fVisLabel[3] == '1' ) {
388  idx = fPosLabel[3] - '0';
389  GetLabel(idx).Draw(option);
390  }
391 }
392 
393 //__________________________________________________________
394 void Level::ExecuteEvent(Int_t event, Int_t px, Int_t py)
395 {
396 
397  // Execute action corresponding to one event.
398  // This member function is called when a line is clicked with the locator
399  //
400  // If Left button clicked on one of the line end points, this point
401  // follows the cursor until button is released.
402  //
403  // if Middle button clicked, the line is moved parallel to itself
404  // until the button is released.
405 
406  if ( !IsMovable() ) return;
407 
408  Int_t kMaxDiff = 20;
409  static Int_t d1,d2,px1,px2,py1,py2;
410  static Int_t pxold, pyold, px1old, py1old, px2old, py2old;
411  static Bool_t p1, p2, pL;
412  Double_t dpx,dpy,xp1,yp1;
413  Int_t dx, dy;
414  Double_t vx0,vx1,vx2,vx3,vy0,vy1,vy2,vy3;
415  vx0 = fLabel0.GetX() - GetX1(); vy0 = fLabel0.GetY() - GetY1(); // offsets label 0
416  vx1 = fLabel1.GetX() - GetX2(); vy1 = fLabel1.GetY() - GetY1(); // offsets label 1
417  vx2 = fLabel2.GetX() - GetX2(); vy2 = fLabel2.GetY() - GetY1(); // offsets label 2
418  vx3 = fLabel3.GetX() - GetX1(); vy3 = fLabel3.GetY() - GetY1(); // offsets label 3
419 
420  if (!gPad->IsEditable()) return;
421  switch (event) {
422 
423  case kButton1Down:
424  gVirtualX->SetLineColor(-1);
425  TAttLine::Modify(); //Change line attributes only if necessary
426 
427  // No break !!!
428 
429  case kMouseMotion:
430 
431  if (TestBit(kLineNDC)) {
432  px1 = gPad->UtoPixel(fX1);
433  py1 = gPad->VtoPixel(fY1);
434  px2 = gPad->UtoPixel(fX2);
435  py2 = gPad->VtoPixel(fY2);
436  } else {
437  px1 = gPad->XtoAbsPixel(gPad->XtoPad(fX1));
438  py1 = gPad->YtoAbsPixel(gPad->YtoPad(fY1));
439  px2 = gPad->XtoAbsPixel(gPad->XtoPad(fX2));
440  py2 = gPad->YtoAbsPixel(gPad->YtoPad(fY2));
441  }
442  p1 = p2 = pL = kFALSE;
443 
444  d1 = TMath::Abs(px1 - px) + TMath::Abs(py1-py); //simply take sum of pixels differences
445  if (d1 < kMaxDiff) { //*-*================>OK take point number 1
446  px1old = px1; py1old = py1;
447  p1 = kTRUE;
448  gPad->SetCursor(kPointer);
449  return;
450  }
451  d2 = TMath::Abs(px2 - px) + TMath::Abs(py2-py); //simply take sum of pixels differences
452  if (d2 < kMaxDiff) { //*-*================>OK take point number 2
453  px2old = px2; py2old = py2;
454  p2 = kTRUE;
455  gPad->SetCursor(kPointer);
456  return;
457  }
458 
459  pL = kTRUE;
460  pxold = px; pyold = py;
461  gPad->SetCursor(kMove);
462 
463  break;
464 
465  case kButton1Motion:
466 
467  if (p1) {
468  gVirtualX->DrawLine(px1old, py1old, px2, py2);
469  gVirtualX->DrawLine(px, py, px2, py2);
470  px1old = px;
471  py1old = py;
472  }
473  if (p2) {
474  gVirtualX->DrawLine(px1, py1, px2old, py2old);
475  gVirtualX->DrawLine(px1, py1, px, py);
476  px2old = px;
477  py2old = py;
478  }
479  if (pL) {
480  gVirtualX->DrawLine(px1, py1, px2, py2);
481  dx = px-pxold; dy = py-pyold;
482  px1 += dx; py1 += dy; px2 += dx; py2 += dy;
483  gVirtualX->DrawLine(px1, py1, px2, py2);
484  pxold = px;
485  pyold = py;
486  }
487  break;
488 
489  case kButton1Up:
490 
491  if (TestBit(kLineNDC)) {
492  dpx = gPad->GetX2() - gPad->GetX1();
493  dpy = gPad->GetY2() - gPad->GetY1();
494  xp1 = gPad->GetX1();
495  yp1 = gPad->GetY1();
496  if (p1) {
497  fX1 = (gPad->AbsPixeltoX(px)-xp1)/dpx;
498  fY1 = (gPad->AbsPixeltoY(py)-yp1)/dpy;
499  fY2 = fY1;
500  }
501  if (p2) {
502  fX2 = (gPad->AbsPixeltoX(px)-xp1)/dpx;
503  fY2 = (gPad->AbsPixeltoY(py)-yp1)/dpy;
504  fY1 = fY2;
505  }
506  if (pL) {
507  fX1 = (gPad->AbsPixeltoX(px1)-xp1)/dpx;
508  fY1 = (gPad->AbsPixeltoY(py1)-yp1)/dpy;
509  fX2 = (gPad->AbsPixeltoX(px2)-xp1)/dpx;
510  fY2 = (gPad->AbsPixeltoY(py2)-yp1)/dpy;
511  }
512  if (fX1 <= fX2 ) {
513  //vx = fLabel0.GetX()-fX1;
514  fLabel0.SetX(fX1+vx0); fLabel0.SetY(fY1+vy0);
515  fLabel1.SetX(fX2); fLabel1.SetY(fY1);
516  fLabel2.SetX(fX2); fLabel2.SetY(fY1);
517  fLabel3.SetX(fX1); fLabel3.SetY(fY1);
518  } else {
519  fLabel1.SetX(fX1); fLabel1.SetY(fY1);
520  fLabel0.SetX(fX2+vx0); fLabel0.SetY(fY1+vy0);
521  fLabel3.SetX(fX2); fLabel3.SetY(fY1);
522  fLabel2.SetX(fX1); fLabel2.SetY(fY1);
523  }
524  } else {
525  if (p1) {
526  fX1 = gPad->PadtoX(gPad->AbsPixeltoX(px));
527  fY1 = gPad->PadtoY(gPad->AbsPixeltoY(py));
528  fY2 = fY1;
529  }
530  if (p2) {
531  fX2 = gPad->PadtoX(gPad->AbsPixeltoX(px));
532  fY2 = gPad->PadtoY(gPad->AbsPixeltoY(py));
533  fY1 = fY2;
534  }
535  if (pL) {
536  fX1 = gPad->PadtoX(gPad->AbsPixeltoX(px1));
537  fY1 = gPad->PadtoY(gPad->AbsPixeltoY(py1));
538  fX2 = gPad->PadtoX(gPad->AbsPixeltoX(px2));
539  fY2 = gPad->PadtoY(gPad->AbsPixeltoY(py2));
540  }
541  if (fX1 > fX2) {
542  Double_t fX3;
543  fX3 = fX1;
544  fX1 = fX2;
545  fX2 = fX3;
546  }
547  fLabel0.SetX(fX1+vx0); fLabel0.SetY(fY1+vy0);
548  fLabel1.SetX(fX2+vx1); fLabel1.SetY(fY1+vy1);
549  fLabel2.SetX(fX2+vx2); fLabel2.SetY(fY1+vy2);
550  fLabel3.SetX(fX1+vx3); fLabel3.SetY(fY1+vy3);
551 
552  if (fHasExtra) {
553  if (fExtra.GetX1() < fX1)
554  fExtra.SetX2(fX1);
555 
556  if (fExtra.GetX2() > fX2)
557  fExtra.SetX1(fX2);
558 
559  fExtra.SetY1(fY1); fExtra.SetY2(fY1);
560  }
561  /*if (fX1 <= fX2 ) {
562  fLabel0.SetX(fX1+vx0); fLabel0.SetY(fY1+vy0);
563  fLabel1.SetX(fX2); fLabel1.SetY(fY1);
564  fLabel2.SetX(fX2); fLabel2.SetY(fY1);
565  fLabel3.SetX(fX1); fLabel3.SetY(fY1);
566  } else {
567  fLabel1.SetX(fX1); fLabel1.SetY(fY1);
568  fLabel0.SetX(fX2+vx0); fLabel0.SetY(fY1+vy0);
569  fLabel3.SetX(fX2); fLabel3.SetY(fY1);
570  fLabel2.SetX(fX1); fLabel2.SetY(fY1);
571  }*/
572  }
573  gPad->Modified(kTRUE);
574  gVirtualX->SetLineColor(-1);
575  break;
576 
577  case kButton1Locate:
578 
579  ExecuteEvent(kButton1Down, px, py);
580  while (1) {
581  px = py = 0;
582  event = gVirtualX->RequestLocator(1,1,px,py);
583 
584  ExecuteEvent(kButton1Motion, px, py);
585 
586  if (event != -1) { // button is released
587  ExecuteEvent(kButton1Up, px, py);
588  return;
589  }
590  }
591  }
592 
593 }
virtual const char * GetLabel0()
Get labels title.
Definition: Level.h:158
virtual Bool_t IsVisible()
return visible
Definition: Level.h:219
virtual void SetColor(EDefaultColor color)
Set color.
Definition: Level.cpp:107
virtual void Paint(Option_t *option="")
used to paint a level
Definition: Level.cpp:333
virtual void SetLabelsColor(Color_t color)
set all labels color
Definition: Level.cpp:125
LogMessage & warning(LogMessage &)
virtual EDefaultStyle GetDefaultStyle()
return default style
Definition: Level.h:237
virtual void SetLabelsSize(Float_t size)
set all labels size
Definition: Level.cpp:116
ClassImp(Level)
virtual EDefaultColor GetDefaultColor()
return default color
Definition: Level.h:240
void SetExtraLineX2(Double_t)
Definition: Level.cpp:156
virtual void ExtraLine(Bool_t extra=true)
Set extraline drawning.
Definition: Level.cpp:233
virtual void Draw(Option_t *option="")
Definition: Level.cpp:364
virtual const char * GetLabel3()
Definition: Level.h:161
virtual ~Level()
Definition: Level.cpp:93
virtual const char * GetLabel1()
Definition: Level.h:159
virtual const char * GetLabel2()
Definition: Level.h:160
static Float_t GetDefaultLabelSize()
Definition: Level.h:63
header file for a general Level
virtual TLatex & GetLabel(Int_t)
All labels are shifted when moving a level to another position.
Definition: Level.cpp:251
LogMessage & dolog(LogMessage &)
virtual void SetDefaultLabels()
Set default labels.
Definition: Level.cpp:243
virtual void SetPosLabel(const char *)
set position for levels
Definition: Level.cpp:187
virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py)
to execute an event for this level
Definition: Level.cpp:394
virtual void SetX2(Double_t)
All labels are shifted when moving a level to another position.
Definition: Level.cpp:273
virtual void SetY1(Double_t)
All labels are shifted when moving a level to another position.
Definition: Level.cpp:284
virtual void SetLabels(const char *l0, const char *l1, const char *l2, const char *l3)
set label titles
Definition: Level.cpp:224
virtual Int_t Compare(const TObject *) const
used to sort a list of levels
Definition: Level.cpp:322
static Bool_t IsMovable()
Definition: Level.h:72
virtual void SetVisLabel(const char *)
Used to determine which label should be drawn.
Definition: Level.cpp:172
EDefaultStyle
Definition: Level.h:58
virtual void SetLabel(const char *, Int_t)
to set labels
Definition: Level.cpp:204
virtual void SetX1(Double_t)
All labels are shifted when moving a level to another position.
Definition: Level.cpp:262
Level()
Definition: Level.cpp:60
EDefaultColor
Definition: Level.h:59
virtual void SetProcessMethod(const char *)
To set the current method.
virtual void SetY2(Double_t)
All labels are shifted when moving a level to another position.
Definition: Level.cpp:303
void SetExtraLine(Double_t, Double_t)
extra line
Definition: Level.cpp:134
const Int_t size
Definition: BenchIO.C:24
virtual void SetStyle(EDefaultStyle style)
Set style.
Definition: Level.cpp:99
static Color_t GetDefaultLabelColor()
Definition: Level.h:64
void SetExtraLineX1(Double_t)
Definition: Level.cpp:140
Base class describing a general level.
Definition: Level.h:53