11 #ifndef ROOT_THistPainter
12 #define ROOT_THistPainter
35 class TPainter3dAlgorithms;
36 class TGraph2DPainter;
38 const Int_t kMaxCuts = 16;
40 struct THistRenderingRegion
42 std::pair<Int_t, Int_t> fPixelRange;
43 std::pair<Int_t, Int_t> fBinRange;
47 class THistPainter :
public TVirtualHistPainter {
55 TPainter3dAlgorithms *fLego;
56 TGraph2DPainter *fGraph2DPainter;
61 Int_t fCutsOpt[kMaxCuts];
62 TCutG *fCuts[kMaxCuts];
64 Int_t fShowProjection;
70 mutable TString fObjectInfo;
74 virtual ~THistPainter();
75 virtual void DefineColorLevels(Int_t ndivz);
76 virtual Int_t DistancetoPrimitive(Int_t px, Int_t py);
77 virtual void DrawPanel();
78 virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py);
79 virtual TList *GetContourList(Double_t contour)
const;
80 virtual char *GetObjectInfo(Int_t px, Int_t py)
const;
81 virtual TList *GetStack()
const {
return fStack;}
82 virtual Int_t GetXHighlightBin()
const {
return fXHighlightBin; }
83 virtual Int_t GetYHighlightBin()
const {
return fYHighlightBin; }
84 virtual void HighlightBin(Int_t px, Int_t py);
85 virtual Bool_t IsInside(Int_t x, Int_t y);
86 virtual Bool_t IsInside(Double_t x, Double_t y);
87 virtual Int_t MakeChopt(Option_t *option);
88 virtual Int_t MakeCuts(
char *cutsopt);
89 virtual void Paint(Option_t *option=
"");
90 virtual void PaintArrows(Option_t *option);
91 virtual void PaintAxis(Bool_t drawGridOnly=kFALSE);
92 virtual void PaintBar(Option_t *option);
93 virtual void PaintBarH(Option_t *option);
94 virtual void PaintBoxes(Option_t *option);
95 virtual void PaintCandlePlot(Option_t *option);
96 virtual void PaintColorLevels(Option_t *option);
97 virtual void PaintColorLevelsFast(Option_t *option);
98 virtual std::vector<THistRenderingRegion> ComputeRenderingRegions(TAxis *pAxis, Int_t nPixels,
bool isLog);
100 virtual void PaintTH2PolyBins(Option_t *option);
101 virtual void PaintTH2PolyColorLevels(Option_t *option);
102 virtual void PaintTH2PolyScatterPlot(Option_t *option);
103 virtual void PaintTH2PolyText(Option_t *option);
104 virtual void PaintContour(Option_t *option);
105 virtual Int_t PaintContourLine(Double_t elev1, Int_t icont1, Double_t x1, Double_t y1,
106 Double_t elev2, Int_t icont2, Double_t x2, Double_t y2,
107 Double_t *xarr, Double_t *yarr, Int_t *itarr, Double_t *levels);
108 virtual void PaintErrors(Option_t *option);
109 virtual void Paint2DErrors(Option_t *option);
110 virtual void PaintFrame();
111 virtual void PaintFunction(Option_t *option);
112 virtual void PaintHighlightBin(Option_t *option=
"");
113 virtual void PaintHist(Option_t *option);
114 virtual void PaintH3(Option_t *option=
"");
115 virtual void PaintH3Box(Int_t iopt);
116 virtual void PaintH3BoxRaster();
117 virtual void PaintH3Iso();
118 virtual Int_t PaintInit();
119 virtual Int_t PaintInitH();
120 virtual void PaintLego(Option_t *option);
121 virtual void PaintLegoAxis(TGaxis *axis, Double_t ang);
122 virtual void PaintPalette();
123 virtual void PaintScatterPlot(Option_t *option);
124 virtual void PaintStat(Int_t dostat, TF1 *fit);
125 virtual void PaintStat2(Int_t dostat, TF1 *fit);
126 virtual void PaintStat3(Int_t dostat, TF1 *fit);
127 virtual void PaintSurface(Option_t *option);
128 virtual void PaintTriangles(Option_t *option);
129 virtual void PaintTable(Option_t *option);
130 virtual void PaintText(Option_t *option);
131 virtual void PaintTitle();
132 virtual void PaintTF3();
133 virtual void ProcessMessage(
const char *mess,
const TObject *obj);
134 static Int_t ProjectAitoff2xy(Double_t l, Double_t b, Double_t &Al, Double_t &Ab);
135 static Int_t ProjectMercator2xy(Double_t l, Double_t b, Double_t &Al, Double_t &Ab);
136 static Int_t ProjectSinusoidal2xy(Double_t l, Double_t b, Double_t &Al, Double_t &Ab);
137 static Int_t ProjectParabolic2xy(Double_t l, Double_t b, Double_t &Al, Double_t &Ab);
138 virtual void RecalculateRange();
139 virtual void RecursiveRemove(TObject *) {;}
140 virtual void SetHighlight();
141 virtual void SetHistogram(TH1 *h);
142 virtual void SetStack(TList *stack) {fStack = stack;}
143 virtual void SetShowProjection(
const char *option,Int_t nbins);
144 virtual void ShowProjectionX(Int_t px, Int_t py);
145 virtual void ShowProjectionY(Int_t px, Int_t py);
146 virtual void ShowProjection3(Int_t px, Int_t py);
147 virtual Int_t TableInit();
149 static const char *GetBestFormat(Double_t v, Double_t e,
const char *f);
150 static void PaintSpecialObjects(
const TObject *obj, Option_t *option);
152 ClassDef(THistPainter,0)