Skip to content

Commit df0136a

Browse files
authored
TPaletteAxis menu update (#11536)
1 parent 60e14f2 commit df0136a

File tree

2 files changed

+71
-40
lines changed

2 files changed

+71
-40
lines changed

hist/histpainter/inc/TPaletteAxis.h

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,7 @@
2323

2424
#include "TPave.h"
2525
#include "TGaxis.h"
26-
27-
class TH1;
26+
#include "TH1.h"
2827

2928
class TPaletteAxis : public TPave {
3029

@@ -53,14 +52,21 @@ class TPaletteAxis : public TPave {
5352
void Paint(Option_t *option="") override;
5453
void SavePrimitive(std::ostream &out, Option_t *option = "") override;
5554
void SetHistogram(TH1* h) {fH = h;}
56-
virtual void SetLabelColor(Int_t labelcolor) {fAxis.SetLabelColor(labelcolor);} // *MENU*
57-
virtual void SetLabelFont(Int_t labelfont) {fAxis.SetLabelFont(labelfont);} // *MENU*
58-
virtual void SetLabelOffset(Float_t labeloffset) {fAxis.SetLabelOffset(labeloffset);} // *MENU*
59-
virtual void SetLabelSize(Float_t labelsize) {fAxis.SetLabelSize(labelsize);} // *MENU*
60-
virtual void SetTitleOffset(Float_t titleoffset=1) {fAxis.SetTitleOffset(titleoffset);} // *MENU*
61-
virtual void SetTitleSize(Float_t titlesize) {fAxis.SetTitleSize(titlesize);} // *MENU*
62-
void SetLineColor(Color_t linecolor) override {fAxis.SetLineColor(linecolor);} // *MENU*
63-
void SetLineWidth(Width_t linewidth) override {fAxis.SetLineWidth(linewidth);} // *MENU*
55+
virtual void SetNdivisions(Int_t ndiv=10) {if (fH) fH->GetZaxis()->SetNdivisions(ndiv);} // *MENU*
56+
virtual void SetAxisColor(Int_t color=1, Float_t alpha=1) {if (fH) fH->GetZaxis()->SetAxisColor(color,alpha);} // *MENU*
57+
virtual void SetLabelColor(Int_t color=1) {if (fH) fH->GetZaxis()->SetLabelColor(color);} // *MENU*
58+
virtual void SetLabelFont(Int_t font=42) {if (fH) fH->GetZaxis()->SetLabelFont(font);} // *MENU*
59+
virtual void SetLabelOffset(Float_t offset=0.005) {if (fH) fH->GetZaxis()->SetLabelOffset(offset);} // *MENU*
60+
virtual void SetLabelSize(Float_t size=0.035) {if (fH) fH->GetZaxis()->SetLabelSize(size);} // *MENU*
61+
virtual void SetMaxDigits(Float_t maxdigits=5) {if (fH) fH->GetZaxis()->SetMaxDigits(maxdigits);} // *MENU*
62+
virtual void SetTickLength(Float_t length=0.03) {if (fH) fH->GetZaxis()->SetTickLength(length);} // *MENU*
63+
virtual void SetTitleOffset(Float_t offset=1) {if (fH) fH->GetZaxis()->SetTitleOffset(offset);} // *MENU*
64+
virtual void SetTitleSize(Float_t size=0.035) {if (fH) fH->GetZaxis()->SetTitleSize(size);} // *MENU*
65+
virtual void SetTitleColor(Int_t color=1) {if (fH) fH->GetZaxis()->SetTitleColor(color);} // *MENU*
66+
virtual void SetTitleFont(Int_t font=42) {if (fH) fH->GetZaxis()->SetTitleFont(font);} // *MENU*
67+
virtual void SetTitle(const char *title="") {if (fH) fH->GetZaxis()->SetTitle(title);} // *MENU*
68+
void SetLineWidth(Width_t width) override {fAxis.SetLineWidth(width);} // *MENU*
69+
6470
virtual void UnZoom(); // *MENU*
6571

6672
ClassDefOverride(TPaletteAxis,4) //class used to display a color palette axis for 2-d plots

hist/histpainter/src/TPaletteAxis.cxx

Lines changed: 55 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ End_Macro
120120

121121
TPaletteAxis::TPaletteAxis(): TPave()
122122
{
123-
fH = nullptr;
123+
fH = nullptr;
124124
SetName("");
125125
}
126126

@@ -132,6 +132,7 @@ TPaletteAxis::TPaletteAxis(Double_t x1, Double_t y1, Double_t x2, Double_t y2,
132132
: TPave(x1, y1, x2, y2)
133133
{
134134
fH = h;
135+
if (!fH) return;
135136
SetName("palette");
136137
TAxis *zaxis = fH->GetZaxis();
137138
fAxis.ImportAxisAttributes(zaxis);
@@ -259,26 +260,28 @@ void TPaletteAxis::ExecuteEvent(Int_t event, Int_t px, Int_t py)
259260
ratio2 = temp;
260261
}
261262
if (ratio2 - ratio1 > 0.05) {
262-
if (fH->GetDimension() == 2) {
263-
Double_t zmin = fH->GetMinimum();
264-
Double_t zmax = fH->GetMaximum();
265-
if (gPad->GetLogz()) {
266-
if (zmin <= 0 && zmax > 0) zmin = TMath::Min((Double_t)1,
267-
(Double_t)0.001 * zmax);
268-
zmin = TMath::Log10(zmin);
269-
zmax = TMath::Log10(zmax);
263+
if (fH) {
264+
if (fH->GetDimension() == 2) {
265+
Double_t zmin = fH->GetMinimum();
266+
Double_t zmax = fH->GetMaximum();
267+
if (gPad->GetLogz()) {
268+
if (zmin <= 0 && zmax > 0) zmin = TMath::Min((Double_t)1,
269+
(Double_t)0.001 * zmax);
270+
zmin = TMath::Log10(zmin);
271+
zmax = TMath::Log10(zmax);
272+
}
273+
Double_t newmin = zmin + (zmax - zmin) * ratio1;
274+
Double_t newmax = zmin + (zmax - zmin) * ratio2;
275+
if (newmin < zmin)newmin = fH->GetBinContent(fH->GetMinimumBin());
276+
if (newmax > zmax)newmax = fH->GetBinContent(fH->GetMaximumBin());
277+
if (gPad->GetLogz()) {
278+
newmin = TMath::Exp(2.302585092994 * newmin);
279+
newmax = TMath::Exp(2.302585092994 * newmax);
280+
}
281+
fH->SetMinimum(newmin);
282+
fH->SetMaximum(newmax);
283+
fH->SetBit(TH1::kIsZoomed);
270284
}
271-
Double_t newmin = zmin + (zmax - zmin) * ratio1;
272-
Double_t newmax = zmin + (zmax - zmin) * ratio2;
273-
if (newmin < zmin)newmin = fH->GetBinContent(fH->GetMinimumBin());
274-
if (newmax > zmax)newmax = fH->GetBinContent(fH->GetMaximumBin());
275-
if (gPad->GetLogz()) {
276-
newmin = TMath::Exp(2.302585092994 * newmin);
277-
newmax = TMath::Exp(2.302585092994 * newmax);
278-
}
279-
fH->SetMinimum(newmin);
280-
fH->SetMaximum(newmax);
281-
fH->SetBit(TH1::kIsZoomed);
282285
}
283286
gPad->Modified(kTRUE);
284287
}
@@ -308,6 +311,7 @@ void TPaletteAxis::ExecuteEvent(Int_t event, Int_t px, Int_t py)
308311

309312
Int_t TPaletteAxis::GetBinColor(Int_t i, Int_t j)
310313
{
314+
if (!fH) return 0;
311315
Double_t zc = fH->GetBinContent(i, j);
312316
return GetValueColor(zc);
313317
}
@@ -321,8 +325,12 @@ char *TPaletteAxis::GetObjectInfo(Int_t /* px */, Int_t py) const
321325
Double_t z;
322326
static char info[64];
323327

324-
Double_t zmin = fH->GetMinimum();
325-
Double_t zmax = fH->GetMaximum();
328+
Double_t zmin = 0.;
329+
Double_t zmax = 0.;
330+
if (fH) {
331+
zmin = fH->GetMinimum();
332+
zmax = fH->GetMaximum();
333+
}
326334
Int_t y1 = gPad->GetWh() - gPad->VtoPixel(fY1NDC);
327335
Int_t y2 = gPad->GetWh() - gPad->VtoPixel(fY2NDC);
328336
Int_t y = gPad->GetWh() - py;
@@ -362,6 +370,8 @@ char *TPaletteAxis::GetObjectInfo(Int_t /* px */, Int_t py) const
362370

363371
Int_t TPaletteAxis::GetValueColor(Double_t zc)
364372
{
373+
if (!fH) return 0;
374+
365375
Double_t wmin = fH->GetMinimum();
366376
Double_t wmax = fH->GetMaximum();
367377
Double_t wlmin = wmin;
@@ -375,7 +385,8 @@ Int_t TPaletteAxis::GetValueColor(Double_t zc)
375385
}
376386

377387
Int_t ncolors = gStyle->GetNumberOfColors();
378-
Int_t ndivz = fH->GetContour();
388+
Int_t ndivz =0;
389+
if (fH) ndivz = fH->GetContour();
379390
if (ndivz == 0) return 0;
380391
ndivz = TMath::Abs(ndivz);
381392
Int_t theColor, color;
@@ -396,6 +407,9 @@ Int_t TPaletteAxis::GetValueColor(Double_t zc)
396407

397408
void TPaletteAxis::Paint(Option_t *)
398409
{
410+
411+
if (!fH) return;
412+
399413
ConvertNDCtoPad();
400414

401415
SetFillStyle(1001);
@@ -555,7 +569,10 @@ void TPaletteAxis::Paint(Option_t *)
555569

556570
void TPaletteAxis::SavePrimitive(std::ostream &out, Option_t * /*= ""*/)
557571
{
558-
//char quote = '"';
572+
if (!fH) return;
573+
574+
char quote = '"';
575+
559576
out << " " << std::endl;
560577
if (gROOT->ClassSaved(TPaletteAxis::Class())) {
561578
out << " ";
@@ -569,12 +586,19 @@ void TPaletteAxis::SavePrimitive(std::ostream &out, Option_t * /*= ""*/)
569586
out << "palette = new " << ClassName() << "(" << fX1 << "," << fY1 << "," << fX2 << "," << fY2
570587
<< "," << fH->GetName() << ");" << std::endl;
571588
}
572-
out << " palette->SetLabelColor(" << fAxis.GetLabelColor() << ");" << std::endl;
573-
out << " palette->SetLabelFont(" << fAxis.GetLabelFont() << ");" << std::endl;
574-
out << " palette->SetLabelOffset(" << fAxis.GetLabelOffset() << ");" << std::endl;
575-
out << " palette->SetLabelSize(" << fAxis.GetLabelSize() << ");" << std::endl;
576-
out << " palette->SetTitleOffset(" << fAxis.GetTitleOffset() << ");" << std::endl;
577-
out << " palette->SetTitleSize(" << fAxis.GetTitleSize() << ");" << std::endl;
589+
out << " palette->SetNdivisions(" << fH->GetZaxis()->GetNdivisions() << ");" << std::endl;
590+
out << " palette->SetAxisColor(" << fH->GetZaxis()->GetAxisColor() << ");" << std::endl;
591+
out << " palette->SetLabelColor(" << fH->GetZaxis()->GetLabelColor() << ");" << std::endl;
592+
out << " palette->SetLabelFont(" << fH->GetZaxis()->GetLabelFont() << ");" << std::endl;
593+
out << " palette->SetLabelOffset(" << fH->GetZaxis()->GetLabelOffset() << ");" << std::endl;
594+
out << " palette->SetLabelSize(" << fH->GetZaxis()->GetLabelSize() << ");" << std::endl;
595+
out << " palette->SetMaxDigits(" << fH->GetZaxis()->GetMaxDigits() << ");" << std::endl;
596+
out << " palette->SetTickLength(" << fH->GetZaxis()->GetTickLength() << ");" << std::endl;
597+
out << " palette->SetTitleOffset(" << fH->GetZaxis()->GetTitleOffset() << ");" << std::endl;
598+
out << " palette->SetTitleSize(" << fH->GetZaxis()->GetTitleSize() << ");" << std::endl;
599+
out << " palette->SetTitleColor(" << fH->GetZaxis()->GetTitleColor() << ");" << std::endl;
600+
out << " palette->SetTitleFont(" << fH->GetZaxis()->GetTitleFont() << ");" << std::endl;
601+
out << " palette->SetTitle(" << quote << fH->GetZaxis()->GetTitle() << quote << ");" << std::endl;
578602
SaveFillAttributes(out, "palette", -1, -1);
579603
SaveLineAttributes(out, "palette", 1, 1, 1);
580604
}
@@ -585,6 +609,7 @@ void TPaletteAxis::SavePrimitive(std::ostream &out, Option_t * /*= ""*/)
585609

586610
void TPaletteAxis::UnZoom()
587611
{
612+
if (!fH) return;
588613
TView *view = gPad ? gPad->GetView() : nullptr;
589614
if (view) {
590615
delete view;

0 commit comments

Comments
 (0)