"Delegating" part of TGLPadPainter. Line/fill/etc. attributes can be set inside TPad, but not only there: many of them are set by base sub-objects of 2d primitives (2d primitives usually inherit TAttLine or TAttFill etc.). And these sub-objects call gVirtualX->SetLineWidth ... etc. So, if I save some attributes in my painter, it will be mess - at any moment I do not know, where to take line attribute - from gVirtualX or from my own member. So! All attributed, _ALL_ go to/from gVirtualX.
virtual | ~TGLPadPainter() |
static TClass* | Class() |
virtual void | ClearDrawable() |
virtual void | CopyDrawable(Int_t id, Int_t px, Int_t py) |
virtual Int_t | CreateDrawable(UInt_t w, UInt_t h) |
virtual void | DestroyDrawable() |
virtual void | DrawBox(Double_t x1, Double_t y1, Double_t x2, Double_t y2, TVirtualPadPainter::EBoxMode mode) |
virtual void | DrawFillArea(Int_t n, const Double_t* x, const Double_t* y) |
virtual void | DrawFillArea(Int_t n, const Float_t* x, const Float_t* y) |
virtual void | DrawLine(Double_t x1, Double_t y1, Double_t x2, Double_t y2) |
virtual void | DrawLineNDC(Double_t u1, Double_t v1, Double_t u2, Double_t v2) |
virtual void | DrawPixels(const unsigned char* pixelData, UInt_t width, UInt_t height, Int_t dstX, Int_t dstY, Bool_t enableBlending) |
virtual void | DrawPolyLine(Int_t n, const Double_t* x, const Double_t* y) |
virtual void | DrawPolyLine(Int_t n, const Float_t* x, const Float_t* y) |
virtual void | DrawPolyLineNDC(Int_t n, const Double_t* u, const Double_t* v) |
virtual void | DrawPolyMarker(Int_t n, const Double_t* x, const Double_t* y) |
virtual void | DrawPolyMarker(Int_t n, const Float_t* x, const Float_t* y) |
virtual void | DrawText(Double_t x, Double_t y, const char* text, TVirtualPadPainter::ETextMode mode) |
virtual void | DrawText(Double_t, Double_t, const wchar_t*, TVirtualPadPainter::ETextMode) |
virtual void | DrawTextNDC(Double_t x, Double_t y, const char* text, TVirtualPadPainter::ETextMode mode) |
virtual void | DrawTextNDC(Double_t, Double_t, const wchar_t*, TVirtualPadPainter::ETextMode) |
virtual Color_t | GetFillColor() const |
virtual Style_t | GetFillStyle() const |
virtual Color_t | GetLineColor() const |
virtual Style_t | GetLineStyle() const |
virtual Width_t | GetLineWidth() const |
virtual Short_t | GetTextAlign() const |
virtual Float_t | GetTextAngle() const |
virtual Color_t | GetTextColor() const |
virtual Font_t | GetTextFont() const |
virtual Float_t | GetTextMagnitude() const |
virtual Float_t | GetTextSize() const |
virtual void | InitPainter() |
virtual void | InvalidateCS() |
virtual TClass* | IsA() const |
virtual Bool_t | IsTransparent() const |
virtual void | LockPainter() |
static TVirtualPadPainter* | TVirtualPadPainter::PadPainter(Option_t* opt = "") |
virtual void | SaveImage(TVirtualPad* pad, const char* fileName, Int_t type) const |
virtual void | SelectDrawable(Int_t device) |
virtual void | SetFillColor(Color_t fcolor) |
virtual void | SetFillStyle(Style_t fstyle) |
virtual void | SetLineColor(Color_t lcolor) |
virtual void | SetLineStyle(Style_t lstyle) |
virtual void | SetLineWidth(Width_t lwidth) |
virtual void | SetOpacity(Int_t percent) |
virtual void | SetTextAlign(Short_t align) |
virtual void | SetTextAngle(Float_t tangle) |
virtual void | SetTextColor(Color_t tcolor) |
virtual void | SetTextFont(Font_t tfont) |
virtual void | SetTextSize(Float_t tsize) |
virtual void | SetTextSizePixels(Int_t npixels) |
virtual void | ShowMembers(TMemberInspector& insp) const |
virtual void | Streamer(TBuffer&) |
void | StreamerNVirtual(TBuffer& ClassDef_StreamerNVirtual_b) |
TGLPadPainter() |
void | DrawGradient(const TLinearGradient* gradient, Int_t n, const Double_t* x, const Double_t* y) |
void | DrawGradient(const TRadialGradient* gradient, Int_t n, const Double_t* x, const Double_t* y) |
void | DrawPolygonWithGradient(Int_t n, const Double_t* x, const Double_t* y) |
void | DrawPolyMarker() |
void | DrawTesselation(Int_t n, const Double_t* x, const Double_t* y) |
TGLPadPainter& | operator=(const TGLPadPainter& rhs) |
void | RestoreModelviewMatrix() const |
void | RestoreProjectionMatrix() const |
void | RestoreViewport() |
void | SaveModelviewMatrix() const |
void | SaveProjectionMatrix() const |
void | SaveViewport() |
TGLPadPainter(const TGLPadPainter& rhs) |
static TVirtualPadPainter::ETextMode | TVirtualPadPainter::kClear | |
static TVirtualPadPainter::EBoxMode | TVirtualPadPainter::kFilled | |
static TVirtualPadPainter::EBoxMode | TVirtualPadPainter::kHollow | |
static TVirtualPadPainter::ETextMode | TVirtualPadPainter::kOpaque |
Delegate to gVirtualX. IsTransparent is implemented as inline function in TAttFill.
For gVirtualX this means select pixmap (or window) and all subsequent drawings will go into this pixmap. For OpenGL this means the change of coordinate system and viewport.
Init gl-pad painter: 1. 2D painter does not use depth test, should not modify depth-buffer content (except initial cleanup). 2. Disable cull face. 3. Disable lighting. 4. Set viewport (to the whole canvas area). 5. Set camera. 6. Unlock painter.
Locked state of painter means, that GL context can be invalid, so no GL calls can be executed.
Draw line segment in NDC coordinates.
Draw filled or hollow box.
Draw tesselated polygon (probably, outline only).
Draw tesselated polygon (never called, probably, since TPad::PaintFillArea for floats is deprecated).
Draw poly-line in user coordinates.
Draw text. This operation is especially dangerous if in locked state - ftgl will assert on zero texture size (which is result of bad GL context).
Draw text. This operation is especially dangerous if in locked state - ftgl will assert on zero texture size (which is result of bad GL context).
Draw text in NDC. This operation is especially dangerous if in locked state - ftgl will assert on zero texture size (which is result of bad GL context).
Draw text in NDC. This operation is especially dangerous if in locked state - ftgl will assert on zero texture size (which is result of bad GL context).
Save the projection matrix. Attention! GL_PROJECTION will become the current matrix after this call!
Restore the projection matrix. Attention! GL_PROJECTION will become the current matrix after this call!
Save the modelview matrix. Attention! GL_MODELVIEW will become the current matrix after this call!
Restore the modelview matrix. Attention! GL_MODELVIEW will become the current matrix after this call!
Using TImage save frame-buffer contents as a picture.
At the moment I assume both linear and radial gradients will work the same way - using a stencil buffer and some big rectangle(s) to fill with a gradient. Thus I have a 'common' part - the part responsible for a stencil test.