TVirtualPadPainter.h

Go to the documentation of this file.
00001 #ifndef ROOT_TVirtualPadPainter
00002 #define ROOT_TVirtualPadPainter
00003 
00004 #ifndef ROOT_Rtypes
00005 #include "Rtypes.h"
00006 #endif
00007 
00008 /*
00009 To make it possible to use gl for 2D graphic in a TPad/TCanvas,
00010 TVirtualPadPainter interface must be used instead of TVirtualX.
00011 Internally, non-gl implementation _should_ delegate all calls
00012 to gVirtualX, gl implementation will delegate part of calls
00013 to gVirtualX, and has to implement some of the calls from the scratch.
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    //Line attributes to be set up in TPad.
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    //Fill attributes to be set up in TPad.
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    //Text attributes.
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    //This part is an interface to X11 pixmap management and to save sub-pads off-screens for OpenGL.
00059    //Currently, must be implemented only for X11/GDI
00060    virtual Int_t    CreateDrawable(UInt_t w, UInt_t h) = 0;//gVirtualX->OpenPixmap
00061    virtual void     ClearDrawable() = 0;//gVirtualX->Clear()
00062    virtual void     CopyDrawable(Int_t device, Int_t px, Int_t py) = 0;
00063    virtual void     DestroyDrawable() = 0;//gVirtualX->CloseWindow
00064    virtual void     SelectDrawable(Int_t device) = 0;//gVirtualX->SelectWindow
00065    //
00066    //These functions are not required by X11/GDI.
00067    virtual void     InitPainter();
00068    virtual void     InvalidateCS();
00069    virtual void     LockPainter();
00070       
00071    //Now, drawing primitives.
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    //gif, jpg, png, bmp output.
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)//Painter interface for pad.
00097 };
00098 
00099 #endif

Generated on Tue Jul 5 14:10:34 2011 for ROOT_528-00b_version by  doxygen 1.5.1