00001 #ifndef ROOT_TVirtualPadPainter
00002 #define ROOT_TVirtualPadPainter
00003
00004 #ifndef ROOT_Rtypes
00005 #include "Rtypes.h"
00006 #endif
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 class TVirtualPad;
00017
00018 class TVirtualPadPainter {
00019 public:
00020 enum EBoxMode {kHollow, kFilled};
00021 enum ETextMode {kClear, kOpaque};
00022
00023 virtual ~TVirtualPadPainter();
00024
00025
00026 virtual Color_t GetLineColor() const = 0;
00027 virtual Style_t GetLineStyle() const = 0;
00028 virtual Width_t GetLineWidth() const = 0;
00029
00030 virtual void SetLineColor(Color_t lcolor) = 0;
00031 virtual void SetLineStyle(Style_t lstyle) = 0;
00032 virtual void SetLineWidth(Width_t lwidth) = 0;
00033
00034
00035 virtual Color_t GetFillColor() const = 0;
00036 virtual Style_t GetFillStyle() const = 0;
00037 virtual Bool_t IsTransparent() const = 0;
00038
00039 virtual void SetFillColor(Color_t fcolor) = 0;
00040 virtual void SetFillStyle(Style_t fstyle) = 0;
00041 virtual void SetOpacity(Int_t percent) = 0;
00042
00043
00044 virtual Short_t GetTextAlign() const = 0;
00045 virtual Float_t GetTextAngle() const = 0;
00046 virtual Color_t GetTextColor() const = 0;
00047 virtual Font_t GetTextFont() const = 0;
00048 virtual Float_t GetTextSize() const = 0;
00049 virtual Float_t GetTextMagnitude() const = 0;
00050
00051 virtual void SetTextAlign(Short_t align=11) = 0;
00052 virtual void SetTextAngle(Float_t tangle=0) = 0;
00053 virtual void SetTextColor(Color_t tcolor=1) = 0;
00054 virtual void SetTextFont(Font_t tfont=62) = 0;
00055 virtual void SetTextSize(Float_t tsize=1) = 0;
00056 virtual void SetTextSizePixels(Int_t npixels) = 0;
00057
00058
00059
00060 virtual Int_t CreateDrawable(UInt_t w, UInt_t h) = 0;
00061 virtual void ClearDrawable() = 0;
00062 virtual void CopyDrawable(Int_t device, Int_t px, Int_t py) = 0;
00063 virtual void DestroyDrawable() = 0;
00064 virtual void SelectDrawable(Int_t device) = 0;
00065
00066
00067 virtual void InitPainter();
00068 virtual void InvalidateCS();
00069 virtual void LockPainter();
00070
00071
00072 virtual void DrawLine(Double_t x1, Double_t y1, Double_t x2, Double_t y2) = 0;
00073 virtual void DrawLineNDC(Double_t u1, Double_t v1, Double_t u2, Double_t v2) = 0;
00074
00075 virtual void DrawBox(Double_t x1, Double_t y1, Double_t x2, Double_t y2, EBoxMode mode) = 0;
00076
00077 virtual void DrawFillArea(Int_t n, const Double_t *x, const Double_t *y) = 0;
00078 virtual void DrawFillArea(Int_t n, const Float_t *x, const Float_t *y) = 0;
00079
00080 virtual void DrawPolyLine(Int_t n, const Double_t *x, const Double_t *y) = 0;
00081 virtual void DrawPolyLine(Int_t n, const Float_t *x, const Float_t *y) = 0;
00082 virtual void DrawPolyLineNDC(Int_t n, const Double_t *u, const Double_t *v) = 0;
00083
00084 virtual void DrawPolyMarker(Int_t n, const Double_t *x, const Double_t *y) = 0;
00085 virtual void DrawPolyMarker(Int_t n, const Float_t *x, const Float_t *y) = 0;
00086
00087 virtual void DrawText(Double_t x, Double_t y, const char *text, ETextMode mode) = 0;
00088 virtual void DrawTextNDC(Double_t u, Double_t v, const char *text, ETextMode mode) = 0;
00089
00090
00091 virtual void SaveImage(TVirtualPad *pad, const char *fileName, Int_t type) const = 0;
00092
00093
00094 static TVirtualPadPainter *PadPainter(Option_t *opt = "");
00095
00096 ClassDef(TVirtualPadPainter, 0)
00097 };
00098
00099 #endif