Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
TVirtualPadPainter.h
Go to the documentation of this file.
1// @(#)root/base:$Id$
2// Author: Timur Pocheptsov 6/5/2009
3
4/*************************************************************************
5 * Copyright (C) 1995-2012, Rene Brun and Fons Rademakers. *
6 * All rights reserved. *
7 * *
8 * For the licensing terms see $ROOTSYS/LICENSE. *
9 * For the list of contributors see $ROOTSYS/README/CREDITS. *
10 *************************************************************************/
11
12#ifndef ROOT_TVirtualPadPainter
13#define ROOT_TVirtualPadPainter
14
15#include "Rtypes.h"
16#include "GuiTypes.h"
17
18class TVirtualPad;
19class TVirtualPS;
20class TImage;
21class TAttFill;
22class TAttLine;
23class TAttMarker;
24class TAttText;
25
27public:
29 enum ETextMode {
30// clang++ <v20 (-Wshadow) complains about shadowing Getline.h global enum EGetLineMode. Let's silence warning:
31#if defined(__clang__) && __clang_major__ < 20
32#pragma clang diagnostic push
33#pragma clang diagnostic ignored "-Wshadow"
34#endif
36#if defined(__clang__) && __clang_major__ < 20
37#pragma clang diagnostic pop
38#endif
40
42
43 virtual ~TVirtualPadPainter();
44
45 //Line attributes to be set up in TPad.
46 virtual Color_t GetLineColor() const = 0;
47 virtual Style_t GetLineStyle() const = 0;
48 virtual Width_t GetLineWidth() const = 0;
49
50 virtual void SetLineColor(Color_t lcolor) = 0;
51 virtual void SetLineStyle(Style_t lstyle) = 0;
52 virtual void SetLineWidth(Width_t lwidth) = 0;
53
54 //Fill attributes to be set up in TPad.
55 virtual Color_t GetFillColor() const = 0;
56 virtual Style_t GetFillStyle() const = 0;
57 virtual Bool_t IsTransparent() const = 0;
58
59 virtual void SetFillColor(Color_t fcolor) = 0;
60 virtual void SetFillStyle(Style_t fstyle) = 0;
61 virtual void SetOpacity(Int_t percent) = 0;
62
63 //Text attributes.
64 virtual Short_t GetTextAlign() const = 0;
65 virtual Float_t GetTextAngle() const = 0;
66 virtual Color_t GetTextColor() const = 0;
67 virtual Font_t GetTextFont() const = 0;
68 virtual Float_t GetTextSize() const = 0;
69 virtual Float_t GetTextMagnitude() const = 0;
70
71 virtual void SetTextAlign(Short_t align=11) = 0;
72 virtual void SetTextAngle(Float_t tangle=0) = 0;
73 virtual void SetTextColor(Color_t tcolor=1) = 0;
74 virtual void SetTextFont(Font_t tfont=62) = 0;
75 virtual void SetTextSize(Float_t tsize=1) = 0;
76 virtual void SetTextSizePixels(Int_t npixels) = 0;
77
78 //Marker attributes
79 virtual Color_t GetMarkerColor() const { return 0; }
80 virtual Style_t GetMarkerStyle() const { return 0; }
81 virtual Size_t GetMarkerSize() const { return 0; }
82
83 virtual void SetMarkerColor(Color_t /* mcolor */ = 1) {}
84 virtual void SetMarkerStyle(Style_t /* mstyle */ = 1) {}
85 virtual void SetMarkerSize(Size_t /* msize */ = 1) {}
86
87 virtual void SetAttFill(const TAttFill &att);
88 virtual void SetAttLine(const TAttLine &att);
89 virtual void SetAttMarker(const TAttMarker &att);
90 virtual void SetAttText(const TAttText &att);
91
92 virtual const TAttFill &GetAttFill() const;
93 virtual const TAttLine &GetAttLine() const;
94 virtual const TAttMarker &GetAttMarker() const;
95 virtual const TAttText &GetAttText() const;
96
97 //This part is an interface to X11 pixmap management and to save sub-pads off-screens for OpenGL.
98 //Currently, must be implemented only for X11/GDI
99 virtual Int_t CreateDrawable(UInt_t w, UInt_t h) = 0;//gVirtualX->OpenPixmap
100 virtual void ClearDrawable() = 0;//gVirtualX->Clear()
101 virtual void ClearWindow(Int_t /* device */) {} //gVirtualX->ClearWindowW()
102 virtual Int_t ResizeDrawable(Int_t /* device */, UInt_t /* w */, UInt_t /* h */) { return 0; } //gVirtualX->ResizePixmap
103 virtual void CopyDrawable(Int_t device, Int_t px, Int_t py) = 0;
104 virtual void DestroyDrawable(Int_t device) = 0;//gVirtualX->CloseWindow
105 virtual void SelectDrawable(Int_t device) = 0;//gVirtualX->SelectWindow
106 virtual void UpdateDrawable(Int_t /* mode */) {}
107 virtual void SetDrawMode(Int_t /* device */, Int_t /* mode */) {}
108 virtual void SetDoubleBuffer(Int_t /* device */, Int_t /* mode */) {}
109
110
111 //TASImage support.
112 virtual void DrawPixels(const unsigned char *pixelData, UInt_t width, UInt_t height,
113 Int_t dstX, Int_t dstY, Bool_t enableAlphaBlending) = 0;
114 //
115 //These functions are not required by X11/GDI.
116 virtual void InitPainter();
117 virtual void InvalidateCS();
118 virtual void LockPainter();
119 virtual void NewPage() {}
120
121 //Methods for text dimensions handling
122 virtual Bool_t HasTTFonts() const { return kFALSE; }
123 virtual void GetTextExtent(Font_t /* font */, Double_t /* size */, UInt_t & /* w */, UInt_t & /* h */, const char * /* mess */) {}
124 virtual void GetTextExtent(Font_t /* font */, Double_t /* size */, UInt_t & /* w */, UInt_t & /* h */, const wchar_t * /* mess */) {}
125 virtual void GetTextAscentDescent(Font_t /* font */, Double_t /* size */, UInt_t & /* w */, UInt_t & /* h */, const char * /* mess */) {}
126 virtual void GetTextAscentDescent(Font_t /* font */, Double_t /* size */, UInt_t & /* w */, UInt_t & /* h */, const wchar_t * /* mess */) {}
127 virtual UInt_t GetTextAdvance(Font_t /* font */, Double_t /* size */, const char * /* text */, Bool_t /* kern */ ) { return 0; }
128
129
130 //Now, drawing primitives.
132 virtual void DrawLineNDC(Double_t u1, Double_t v1, Double_t u2, Double_t v2) = 0;
133
135
136 virtual void DrawFillArea(Int_t n, const Double_t *x, const Double_t *y) = 0;
137 virtual void DrawFillArea(Int_t n, const Float_t *x, const Float_t *y) = 0;
138
139 virtual void DrawPolyLine(Int_t n, const Double_t *x, const Double_t *y) = 0;
140 virtual void DrawPolyLine(Int_t n, const Float_t *x, const Float_t *y) = 0;
141 virtual void DrawPolyLineNDC(Int_t n, const Double_t *u, const Double_t *v) = 0;
142
143 virtual void DrawSegments(Int_t n, Double_t *x, Double_t *y);
144 virtual void DrawSegmentsNDC(Int_t n, Double_t *u, Double_t *v);
145
146 virtual void DrawPolyMarker(Int_t n, const Double_t *x, const Double_t *y) = 0;
147 virtual void DrawPolyMarker(Int_t n, const Float_t *x, const Float_t *y) = 0;
148
149 virtual void DrawText(Double_t x, Double_t y, const char *text, ETextMode mode) = 0;
150 virtual void DrawText(Double_t x, Double_t y, const wchar_t *text, ETextMode mode) = 0;
151 virtual void DrawTextNDC(Double_t u, Double_t v, const char *text, ETextMode mode) = 0;
152 virtual void DrawTextNDC(Double_t u, Double_t v, const wchar_t *text, ETextMode mode) = 0;
153
154 virtual void DrawTextUrl(Double_t x, Double_t y, const char *text, const char *url);
155
156 virtual void DrawImage(TImage *img, Int_t x, Int_t y, Int_t flags = 0);
157
158 //gif, jpg, png, bmp output.
159 virtual void R__DEPRECATED(7,00, "Old method, replaced by SaveAsImage") SaveImage(TVirtualPad *pad, const char *fileName, Int_t type) const ;
160
161 // New API for all kind of image formats.
163 virtual Bool_t FillImageFromPad(TImage *image, TVirtualPad *pad) const;
164
165 virtual void OnPad(TVirtualPad *) {}
166
167 virtual Bool_t IsNative() const { return kFALSE; }
168 virtual Bool_t IsX11() const { return kFALSE; }
169 virtual Bool_t IsCocoa() const { return kFALSE; }
170 virtual TVirtualPS *GetPS() const { return nullptr; }
171 virtual Bool_t IsSupportAlpha() const { return kFALSE; }
172
173 static TVirtualPadPainter *PadPainter(Option_t *opt = "");
174
175 ClassDef(TVirtualPadPainter, 0)//Painter interface for pad.
176};
177
178#endif
#define R__DEPRECATED(MAJOR, MINOR, REASON)
Definition RConfig.hxx:486
#define h(i)
Definition RSha256.hxx:106
char * device
short Style_t
Style number (short)
Definition RtypesCore.h:97
short Color_t
Color number (short)
Definition RtypesCore.h:100
float Size_t
Attribute size (float)
Definition RtypesCore.h:104
short Width_t
Line width (short)
Definition RtypesCore.h:99
float Float_t
Float 4 bytes (float)
Definition RtypesCore.h:72
short Font_t
Font number (short)
Definition RtypesCore.h:96
short Short_t
Signed Short integer 2 bytes (short)
Definition RtypesCore.h:54
constexpr Bool_t kFALSE
Definition RtypesCore.h:109
const char Option_t
Option string (const char)
Definition RtypesCore.h:81
#define ClassDef(name, id)
Definition Rtypes.h:343
Option_t Option_t TPoint TPoint const char x2
Option_t Option_t TPoint TPoint const char x1
Option_t Option_t TPoint TPoint const char mode
Option_t Option_t TPoint TPoint const char y2
Option_t Option_t width
Option_t Option_t TPoint TPoint percent
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t type
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t height
Option_t Option_t TPoint TPoint const char text
Option_t Option_t TPoint TPoint const char y1
Fill Area Attributes class.
Definition TAttFill.h:21
Line Attributes class.
Definition TAttLine.h:21
Marker Attributes class.
Definition TAttMarker.h:22
Text Attributes class.
Definition TAttText.h:21
An abstract interface to image processing library.
Definition TImage.h:30
TVirtualPS is an abstract interface to Postscript, PDF, SVG.
Definition TVirtualPS.h:32
To make it possible to use GL for 2D graphic in a TPad/TCanvas.
virtual ~TVirtualPadPainter()
Virtual dtor.
virtual Bool_t IsSupportAlpha() const
virtual void SetAttFill(const TAttFill &att)
Set fill attributes.
virtual void DrawBox(Double_t x1, Double_t y1, Double_t x2, Double_t y2, EBoxMode mode)=0
virtual Float_t GetTextAngle() const =0
virtual Size_t GetMarkerSize() const
virtual Short_t GetTextAlign() const =0
virtual Font_t GetTextFont() const =0
virtual Bool_t HasTTFonts() const
virtual Bool_t IsX11() const
virtual const TAttText & GetAttText() const
Get text attributes.
virtual void DrawText(Double_t x, Double_t y, const wchar_t *text, ETextMode mode)=0
virtual ESaveImageResult SaveAsImage(TVirtualPad *pad, const char *fileName, Int_t type) const
Store pad as image of specified format Returns 1 if image stored, 0 - in case of failure,...
virtual void ClearDrawable()=0
virtual void SetOpacity(Int_t percent)=0
virtual void DrawImage(TImage *img, Int_t x, Int_t y, Int_t flags=0)
Draw image, need to be implemented in correspondent.
virtual void UpdateDrawable(Int_t)
virtual void SetTextAngle(Float_t tangle=0)=0
virtual void DrawPolyLine(Int_t n, const Double_t *x, const Double_t *y)=0
virtual Color_t GetLineColor() const =0
virtual void DrawTextUrl(Double_t x, Double_t y, const char *text, const char *url)
Draw text with url link By default only text is drawn.
virtual void SetAttMarker(const TAttMarker &att)
Set marker attributes.
virtual void DrawTextNDC(Double_t u, Double_t v, const wchar_t *text, ETextMode mode)=0
virtual Float_t GetTextSize() const =0
virtual Int_t ResizeDrawable(Int_t, UInt_t, UInt_t)
virtual Color_t GetFillColor() const =0
virtual void DrawSegmentsNDC(Int_t n, Double_t *u, Double_t *v)
Draw N segments in NDC coordinates on the pad Exclude segments where both points match.
virtual void SetLineStyle(Style_t lstyle)=0
virtual void DrawPixels(const unsigned char *pixelData, UInt_t width, UInt_t height, Int_t dstX, Int_t dstY, Bool_t enableAlphaBlending)=0
virtual Color_t GetMarkerColor() const
virtual void LockPainter()
Empty definition.
virtual void SetFillColor(Color_t fcolor)=0
virtual void SetDrawMode(Int_t, Int_t)
virtual void GetTextExtent(Font_t, Double_t, UInt_t &, UInt_t &, const char *)
virtual void DestroyDrawable(Int_t device)=0
virtual void DrawFillArea(Int_t n, const Float_t *x, const Float_t *y)=0
virtual Color_t GetTextColor() const =0
virtual void CopyDrawable(Int_t device, Int_t px, Int_t py)=0
virtual void DrawLine(Double_t x1, Double_t y1, Double_t x2, Double_t y2)=0
virtual Bool_t IsNative() const
virtual void DrawFillArea(Int_t n, const Double_t *x, const Double_t *y)=0
virtual Float_t GetTextMagnitude() const =0
virtual Int_t CreateDrawable(UInt_t w, UInt_t h)=0
virtual Style_t GetMarkerStyle() const
virtual Bool_t IsCocoa() const
virtual void SetLineColor(Color_t lcolor)=0
virtual Style_t GetLineStyle() const =0
virtual void SetAttLine(const TAttLine &att)
Set line attributes.
virtual void DrawLineNDC(Double_t u1, Double_t v1, Double_t u2, Double_t v2)=0
virtual void DrawPolyLine(Int_t n, const Float_t *x, const Float_t *y)=0
virtual void GetTextAscentDescent(Font_t, Double_t, UInt_t &, UInt_t &, const char *)
virtual void DrawSegments(Int_t n, Double_t *x, Double_t *y)
Draw N segments on the pad Exclude segments where both points match.
virtual void SetFillStyle(Style_t fstyle)=0
virtual void SetTextSize(Float_t tsize=1)=0
virtual void SetLineWidth(Width_t lwidth)=0
static TVirtualPadPainter * PadPainter(Option_t *opt="")
Create a pad painter of specified type.
virtual void DrawPolyLineNDC(Int_t n, const Double_t *u, const Double_t *v)=0
virtual void SetMarkerStyle(Style_t=1)
virtual void SetAttText(const TAttText &att)
Set text attributes.
virtual void DrawTextNDC(Double_t u, Double_t v, const char *text, ETextMode mode)=0
virtual Width_t GetLineWidth() const =0
virtual void DrawPolyMarker(Int_t n, const Float_t *x, const Float_t *y)=0
virtual void SelectDrawable(Int_t device)=0
virtual void const char * fileName
virtual void DrawPolyMarker(Int_t n, const Double_t *x, const Double_t *y)=0
virtual const TAttFill & GetAttFill() const
Get fill attributes.
virtual void InitPainter()
Empty definition.
virtual Bool_t IsTransparent() const =0
virtual void DrawText(Double_t x, Double_t y, const char *text, ETextMode mode)=0
virtual void SetTextAlign(Short_t align=11)=0
virtual void SetTextFont(Font_t tfont=62)=0
virtual void SetMarkerSize(Size_t=1)
virtual void SetTextSizePixels(Int_t npixels)=0
virtual Bool_t FillImageFromPad(TImage *image, TVirtualPad *pad) const
Fill TImage object by data from the pad Returns kFALSE if not supported or in case of failures.
virtual void ClearWindow(Int_t)
virtual UInt_t GetTextAdvance(Font_t, Double_t, const char *, Bool_t)
virtual void SetMarkerColor(Color_t=1)
virtual void const char Int_t type const
virtual void SetDoubleBuffer(Int_t, Int_t)
virtual Style_t GetFillStyle() const =0
virtual const TAttMarker & GetAttMarker() const
Get marker attributes.
virtual void GetTextAscentDescent(Font_t, Double_t, UInt_t &, UInt_t &, const wchar_t *)
virtual void SetTextColor(Color_t tcolor=1)=0
virtual void InvalidateCS()
Empty definition.
virtual void GetTextExtent(Font_t, Double_t, UInt_t &, UInt_t &, const wchar_t *)
virtual void OnPad(TVirtualPad *)
virtual TVirtualPS * GetPS() const
virtual const TAttLine & GetAttLine() const
Get line attributes.
TVirtualPad is an abstract base class for the Pad and Canvas classes.
Definition TVirtualPad.h:53
Double_t y[n]
Definition legend1.C:17
Double_t x[n]
Definition legend1.C:17
const Int_t n
Definition legend1.C:16