Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-09-24 09:25:30

0001 // @(#)root/x11:$Id$
0002 // Author: Rene Brun, Olivier Couet, Fons Rademakers   28/11/94
0003 
0004 /*************************************************************************
0005  * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers.               *
0006  * All rights reserved.                                                  *
0007  *                                                                       *
0008  * For the licensing terms see $ROOTSYS/LICENSE.                         *
0009  * For the list of contributors see $ROOTSYS/README/CREDITS.             *
0010  *************************************************************************/
0011 
0012 #ifndef ROOT_TGX11
0013 #define ROOT_TGX11
0014 
0015 #include "TVirtualX.h"
0016 #include <map>
0017 #include <memory>
0018 
0019 #ifdef Status
0020 // Convert Status from a CPP macro to a typedef:
0021 typedef Status X11Status_t;
0022 #undef Status
0023 typedef X11Status_t Status;
0024 #endif
0025 
0026 #ifdef None
0027 // Convert None from a CPP macro to a static const int:
0028 static const unsigned long gX11None = None;
0029 #undef None
0030 static const unsigned long None = gX11None;
0031 #endif
0032 
0033 
0034 typedef unsigned long XID;
0035 typedef XID Drawable;
0036 typedef XID Cursor;
0037 typedef XID Colormap;
0038 typedef XID Window;
0039 
0040 struct RXGCValues;
0041 struct RXColor;
0042 struct RXImage;
0043 struct RXPoint;
0044 struct RXpmAttributes;
0045 struct RXSetWindowAttributes;
0046 struct RXVisualInfo;
0047 struct RVisual;
0048 
0049 /// Description of a X11 color.
0050 struct XColor_t {
0051    ULong_t  fPixel;               ///< color pixel value
0052    UShort_t fRed;                 ///< red value in range [0,kBIGGEST_RGB_VALUE]
0053    UShort_t fGreen;               ///< green value
0054    UShort_t fBlue;                ///< blue value
0055    Bool_t   fDefined;             ///< true if pixel value is defined
0056    XColor_t() { fPixel = 0; fRed = fGreen = fBlue = 0; fDefined = kFALSE; }
0057 };
0058 
0059 class TExMap;
0060 
0061 struct XWindow_t;
0062 
0063 
0064 class TGX11 : public TVirtualX {
0065 
0066 friend struct XWindow_t;
0067 
0068 private:
0069    std::unordered_map<Int_t,std::unique_ptr<XWindow_t>> fWindows; // map of windows
0070    TExMap    *fColors;                ///< Hash list of colors
0071    Cursor     fCursors[kNumCursors];  ///< List of cursors
0072    void      *fXEvent;                ///< Current native (X11) event
0073 
0074    Int_t  AddWindowHandle();
0075    void   FindBestVisual();
0076    void   FindUsableVisual(RXVisualInfo *vlist, Int_t nitems);
0077    void   PutImage(Int_t offset, Int_t itran, Int_t x0, Int_t y0, Int_t nx,
0078                    Int_t ny, Int_t xmin, Int_t ymin, Int_t xmax, Int_t ymax,
0079                    UChar_t *image, Drawable_t id);
0080    void   SetColor(XWindow_t *ctxt, void *gc, Int_t ci);
0081    void   SetInput(Int_t inp);
0082    void   ImgPickPalette(RXImage *image, Int_t &ncol, Int_t *&R, Int_t *&G, Int_t *&B);
0083 
0084    //---- Private methods used for GUI ----
0085    void MapGCValues(GCValues_t &gval, ULong_t &xmask, RXGCValues &xgval, Bool_t tox = kTRUE);
0086    void MapSetWindowAttributes(SetWindowAttributes_t *attr,
0087                                ULong_t &xmask, RXSetWindowAttributes &xattr);
0088    void MapCursor(ECursor cursor, Int_t &xcursor);
0089    void MapColorStruct(ColorStruct_t *color, RXColor &xcolor);
0090    void MapPictureAttributes(PictureAttributes_t &attr, RXpmAttributes &xpmattr,
0091                              Bool_t toxpm = kTRUE);
0092    void MapModifierState(UInt_t &state, UInt_t &xstate, Bool_t tox = kTRUE);
0093 
0094    // void MapEvent(Event_t &ev, XEvent &xev, Bool_t tox = kTRUE);
0095    void MapEvent(Event_t &ev, void *xev, Bool_t tox = kTRUE);
0096 
0097    void MapEventMask(UInt_t &emask, UInt_t &xemask, Bool_t tox = kTRUE);
0098    void MapKeySym(UInt_t &keysym, UInt_t &xkeysym, Bool_t tox = kTRUE);
0099 
0100 protected:
0101    void      *fDisplay;            ///< Pointer to display
0102    RVisual   *fVisual;             ///< Pointer to visual used by all windows
0103    Drawable   fRootWin;            ///< Root window used as parent of all windows
0104    Drawable   fVisRootWin;         ///< Root window with fVisual to be used to create GC's and XImages
0105    Colormap   fColormap;           ///< Default colormap, 0 if b/w
0106    ULong_t    fBlackPixel;         ///< Value of black pixel in colormap
0107    ULong_t    fWhitePixel;         ///< Value of white pixel in colormap
0108    Int_t      fScreenNumber;       ///< Screen number
0109    Float_t    fCharacterUpX;       ///< Character Up vector along X
0110    Float_t    fCharacterUpY;       ///< Character Up vector along Y
0111    Float_t    fTextMagnitude;      ///< Text Magnitude
0112    Int_t      fDepth;              ///< Number of color planes
0113    Int_t      fRedDiv;             ///< Red value divider, -1 if no TrueColor visual
0114    Int_t      fGreenDiv;           ///< Green value divider
0115    Int_t      fBlueDiv;            ///< Blue value divider
0116    Int_t      fRedShift;           ///< Bits to left shift red, -1 if no TrueColor visual
0117    Int_t      fGreenShift;         ///< Bits to left shift green
0118    Int_t      fBlueShift;          ///< Bits to left shift blue
0119    Bool_t     fHasTTFonts;         ///< True when TrueType fonts are used
0120    Bool_t     fHasXft;             ///< True when XftFonts are used
0121 
0122    // needed by TGX11TTF
0123    enum EAlign {
0124       kAlignNone,
0125       kTLeft, kTCenter, kTRight, kMLeft, kMCenter, kMRight,
0126       kBLeft, kBCenter, kBRight };
0127 
0128    Bool_t     AllocColor(Colormap cmap, RXColor *color);
0129    void       QueryColors(Colormap cmap, RXColor *colors, Int_t ncolors);
0130    void      *GetGC(Int_t which) const;
0131    Window_t  GetWindow(WinContext_t wctxt) const;
0132    void      *GetGCW(WinContext_t wctxt, Int_t which) const;
0133    EAlign     GetTextAlignW(WinContext_t wctxt) const;
0134 
0135    XColor_t  &GetColor(Int_t cid);
0136 
0137    TGX11(TGX11 &&org);
0138    TGX11(const TGX11 &org) = delete;
0139 
0140 public:
0141    TGX11();
0142    TGX11(const char *name, const char *title);
0143    ~TGX11() override;
0144 
0145    Bool_t    Init(void *display) override;
0146    void      ClearWindow() override;
0147    void      ClosePixmap() override;
0148    void      CloseWindow() override;
0149    void      CopyPixmap(Int_t wid, Int_t xpos, Int_t ypos) override;
0150    void      GetCharacterUp(Float_t &chupx, Float_t &chupy) override;
0151    Int_t     GetDoubleBuffer(Int_t wid) override;
0152    void      GetGeometry(Int_t wid, Int_t &x, Int_t &y, UInt_t &w, UInt_t &h) override;
0153    const char *DisplayName(const char *dpyName = nullptr) override;
0154    Handle_t  GetNativeEvent() const override { return (Handle_t) fXEvent; }
0155    ULong_t   GetPixel(Color_t cindex) override;
0156    void      GetPlanes(Int_t &nplanes) override;
0157    void      GetRGB(Int_t index, Float_t &r, Float_t &g, Float_t &b) override;
0158    void      GetTextExtent(UInt_t &w, UInt_t &h, char *mess) override;
0159    void      GetTextExtent(UInt_t &, UInt_t &, wchar_t *) override {}
0160    Float_t   GetTextMagnitude() override { return fTextMagnitude; }
0161    Window_t  GetWindowID(Int_t wid) override;
0162    Bool_t    HasTTFonts() const override { return fHasTTFonts; }
0163    Int_t     InitWindow(ULong_t window) override;
0164    Int_t     AddWindow(ULong_t qwid, UInt_t w, UInt_t h) override;
0165    Int_t     AddPixmap(ULong_t pixid, UInt_t w, UInt_t h) override;
0166    void      RemoveWindow(ULong_t qwid) override;
0167    void      MoveWindow(Int_t wid, Int_t x, Int_t y) override;
0168    Int_t     OpenDisplay(void *display);
0169    Int_t     OpenPixmap(UInt_t w, UInt_t h) override;
0170    void      QueryPointer(Int_t &ix, Int_t &iy) override;
0171    Pixmap_t  ReadGIF(Int_t x0, Int_t y0, const char *file, Window_t id = 0) override;
0172    Int_t     RequestLocator(Int_t mode, Int_t ctyp, Int_t &x, Int_t &y) override;
0173    Int_t     RequestString(Int_t x, Int_t y, char *text) override;
0174    void      RescaleWindow(Int_t wid, UInt_t w, UInt_t h) override;
0175    Int_t     ResizePixmap(Int_t wid, UInt_t w, UInt_t h) override;
0176    void      ResizeWindow(Int_t wid) override;
0177    void      SelectWindow(Int_t wid) override;
0178    void      SetCharacterUp(Float_t chupx, Float_t chupy) override;
0179    void      SetClipOFF(Int_t wid) override;
0180    void      SetClipRegion(Int_t wid, Int_t x, Int_t y, UInt_t w, UInt_t h) override;
0181    void      SetCursor(Int_t win, ECursor cursor) override;
0182    void      SetDoubleBuffer(Int_t wid, Int_t mode) override;
0183    void      SetDoubleBufferOFF() override;
0184    void      SetDoubleBufferON() override;
0185    void      SetDrawMode(EDrawMode mode) override;
0186    void      Sync(Int_t mode) override;
0187    void      UpdateWindow(Int_t mode) override;
0188    void      Warp(Int_t ix, Int_t iy, Window_t id = 0) override;
0189    Int_t     WriteGIF(char *name) override;
0190    void      WritePixmap(Int_t wid, UInt_t w, UInt_t h, char *pxname) override;
0191    Window_t  GetCurrentWindow() const override;
0192    Int_t     SupportsExtension(const char *ext) const override;
0193 
0194    //---- Methods used for old graphics -----
0195    void      SetFillColor(Color_t cindex) override;
0196    Color_t   GetFillColor() const override;
0197    void      SetFillStyle(Style_t style) override;
0198    Style_t   GetFillStyle() const override;
0199    void      SetLineColor(Color_t cindex) override;
0200    void      SetLineType(Int_t n, Int_t *dash) override;
0201    void      SetLineStyle(Style_t linestyle) override;
0202    Style_t   GetLineStyle() const override;
0203    void      SetLineWidth(Width_t width) override;
0204    Width_t   GetLineWidth() const override;
0205    void      SetMarkerColor(Color_t cindex) override;
0206    void      SetMarkerSize(Float_t markersize) override;
0207    void      SetMarkerStyle(Style_t markerstyle) override;
0208    void      SetOpacity(Int_t percent) override;
0209    void      SetRGB(Int_t cindex, Float_t r, Float_t g, Float_t b) override;
0210    void      SetTextAlign(Short_t talign=11) override;
0211    void      SetTextColor(Color_t cindex) override;
0212    Int_t     SetTextFont(char *fontname, ETextSetMode mode) override;
0213    void      SetTextFont(Font_t fontnumber) override;
0214    void      SetTextMagnitude(Float_t mgn=1) override { fTextMagnitude = mgn;}
0215    void      SetTextSize(Float_t textsize) override;
0216    void      DrawBox(Int_t x1, Int_t y1, Int_t x2, Int_t y2, EBoxMode mode) override;
0217    void      DrawCellArray(Int_t x1, Int_t y1, Int_t x2, Int_t y2, Int_t nx, Int_t ny, Int_t *ic) override;
0218    void      DrawFillArea(Int_t n, TPoint *xy) override;
0219    void      DrawLine(Int_t x1, Int_t y1, Int_t x2, Int_t y2) override;
0220    void      DrawPolyLine(Int_t n, TPoint *xy) override;
0221    void      DrawLinesSegments(Int_t n, TPoint *xy) override;
0222    void      DrawPolyMarker(Int_t n, TPoint *xy) override;
0223    void      DrawText(Int_t x, Int_t y, Float_t angle, Float_t mgn, const char *text, ETextMode mode) override;
0224    void      DrawText(Int_t x, Int_t y, Float_t angle, Float_t mgn, const wchar_t *text, ETextMode mode) override;
0225 
0226    //---- Methods used for new graphics -----
0227    WinContext_t GetWindowContext(Int_t wid) override;
0228    void      SetAttFill(WinContext_t wctxt, const TAttFill &att) override;
0229    void      SetAttLine(WinContext_t wctxt, const TAttLine &att) override;
0230    void      SetAttMarker(WinContext_t wctxt, const TAttMarker &att) override;
0231    void      SetAttText(WinContext_t wctxt, const TAttText &att) override;
0232    void      SetDrawModeW(WinContext_t wctxt, EDrawMode mode) override;
0233    EDrawMode GetDrawModeW(WinContext_t wctxt) override;
0234    void      ClearWindowW(WinContext_t wctxt) override;
0235    void      UpdateWindowW(WinContext_t wctxt, Int_t mode) override;
0236    void      SetOpacityW(WinContext_t wctxt, Int_t percent) override;
0237    void      CopyPixmapW(WinContext_t wctxt, Int_t wid, Int_t xpos, Int_t ypos) override;
0238 
0239    void      DrawBoxW(WinContext_t wctxt, Int_t x1, Int_t y1, Int_t x2, Int_t y2, EBoxMode mode) override;
0240    void      DrawFillAreaW(WinContext_t wctxt, Int_t n, TPoint *xy) override;
0241    void      DrawLineW(WinContext_t wctxt, Int_t x1, Int_t y1, Int_t x2, Int_t y2) override;
0242    void      DrawPolyLineW(WinContext_t wctxt, Int_t n, TPoint *xy) override;
0243    void      DrawLinesSegmentsW(WinContext_t wctxt, Int_t n, TPoint *xy) override;
0244    void      DrawPolyMarkerW(WinContext_t wctxt, Int_t n, TPoint *xy) override;
0245    void      DrawTextW(WinContext_t wctxt, Int_t x, Int_t y, Float_t angle, Float_t mgn, const char *text, ETextMode mode) override;
0246    void      DrawTextW(WinContext_t, Int_t, Int_t, Float_t, Float_t, const wchar_t *, ETextMode) override {}
0247 
0248    //---- Methods used for GUI -----
0249    void         GetWindowAttributes(Window_t id, WindowAttributes_t &attr) override;
0250    void         MapWindow(Window_t id) override;
0251    void         MapSubwindows(Window_t id) override;
0252    void         MapRaised(Window_t id) override;
0253    void         UnmapWindow(Window_t id) override;
0254    void         DestroyWindow(Window_t id) override;
0255    void         DestroySubwindows(Window_t id) override;
0256    void         RaiseWindow(Window_t id) override;
0257    void         LowerWindow(Window_t id) override;
0258    void         MoveWindow(Window_t id, Int_t x, Int_t y) override;
0259    void         MoveResizeWindow(Window_t id, Int_t x, Int_t y, UInt_t w, UInt_t h) override;
0260    void         ResizeWindow(Window_t id, UInt_t w, UInt_t h) override;
0261    void         IconifyWindow(Window_t id) override;
0262    void         ReparentWindow(Window_t id, Window_t pid, Int_t x, Int_t y) override;
0263    void         SetWindowBackground(Window_t id, ULong_t color) override;
0264    void         SetWindowBackgroundPixmap(Window_t id, Pixmap_t pxm) override;
0265    Window_t     CreateWindow(Window_t parent, Int_t x, Int_t y,
0266                              UInt_t w, UInt_t h, UInt_t border,
0267                              Int_t depth, UInt_t clss,
0268                              void *visual, SetWindowAttributes_t *attr,
0269                              UInt_t wtype) override;
0270    Int_t        OpenDisplay(const char *dpyName) override;
0271    void         CloseDisplay() override;
0272    Display_t    GetDisplay() const override;
0273    Visual_t     GetVisual() const override;
0274    Int_t        GetScreen() const override;
0275    Int_t        GetDepth() const override;
0276    Colormap_t   GetColormap() const override;
0277    Atom_t       InternAtom(const char *atom_name, Bool_t only_if_exist) override;
0278    Window_t     GetDefaultRootWindow() const override;
0279    Window_t     GetParent(Window_t id) const override;
0280    FontStruct_t LoadQueryFont(const char *font_name) override;
0281    FontH_t      GetFontHandle(FontStruct_t fs) override;
0282    void         DeleteFont(FontStruct_t fs) override;
0283    GContext_t   CreateGC(Drawable_t id, GCValues_t *gval) override;
0284    void         ChangeGC(GContext_t gc, GCValues_t *gval) override;
0285    void         CopyGC(GContext_t org, GContext_t dest, Mask_t mask) override;
0286    void         DeleteGC(GContext_t gc) override;
0287    Cursor_t     CreateCursor(ECursor cursor) override;
0288    void         SetCursor(Window_t id, Cursor_t curid) override;
0289    Pixmap_t     CreatePixmap(Drawable_t id, UInt_t w, UInt_t h) override;
0290    Pixmap_t     CreatePixmap(Drawable_t id, const char *bitmap, UInt_t width,
0291                              UInt_t height, ULong_t forecolor, ULong_t backcolor,
0292                              Int_t depth) override;
0293    unsigned char *GetColorBits(Drawable_t wid, Int_t x = 0, Int_t y = 0, UInt_t w = 0, UInt_t h = 0) override;
0294    Pixmap_t     CreatePixmapFromData(unsigned char *bits, UInt_t width, UInt_t height) override;
0295    Pixmap_t     CreateBitmap(Drawable_t id, const char *bitmap,
0296                              UInt_t width, UInt_t height) override;
0297    void         DeletePixmap(Pixmap_t pmap) override;
0298    Bool_t       CreatePictureFromFile(Drawable_t id, const char *filename,
0299                                       Pixmap_t &pict, Pixmap_t &pict_mask,
0300                                       PictureAttributes_t &attr) override;
0301    Bool_t       CreatePictureFromData(Drawable_t id, char **data,
0302                                       Pixmap_t &pict, Pixmap_t &pict_mask,
0303                                       PictureAttributes_t &attr) override;
0304    Bool_t       ReadPictureDataFromFile(const char *filename, char ***ret_data) override;
0305    void         DeletePictureData(void *data) override;
0306    void         SetDashes(GContext_t gc, Int_t offset, const char *dash_list, Int_t n) override;
0307    Bool_t       ParseColor(Colormap_t cmap, const char *cname, ColorStruct_t &color) override;
0308    Bool_t       AllocColor(Colormap_t cmap, ColorStruct_t &color) override;
0309    void         QueryColor(Colormap_t cmap, ColorStruct_t &color) override;
0310    void         FreeColor(Colormap_t cmap, ULong_t pixel) override;
0311    Int_t        EventsPending() override;
0312    void         NextEvent(Event_t &event) override;
0313    void         Bell(Int_t percent) override;
0314    void         CopyArea(Drawable_t src, Drawable_t dest, GContext_t gc,
0315                          Int_t src_x, Int_t src_y, UInt_t width, UInt_t height,
0316                          Int_t dest_x, Int_t dest_y) override;
0317    void         ChangeWindowAttributes(Window_t id, SetWindowAttributes_t *attr) override;
0318    void         ChangeProperty(Window_t id, Atom_t property, Atom_t type,
0319                                UChar_t *data, Int_t len) override;
0320    void         SetWindowHint(Window_t id, EWindowHint hint) override;
0321    void         DrawLine(Drawable_t id, GContext_t gc, Int_t x1, Int_t y1, Int_t x2, Int_t y2) override;
0322    void         ClearArea(Window_t id, Int_t x, Int_t y, UInt_t w, UInt_t h) override;
0323    Bool_t       CheckEvent(Window_t id, EGEventType type, Event_t &ev) override;
0324    void         SendEvent(Window_t id, Event_t *ev) override;
0325    void         WMDeleteNotify(Window_t id) override;
0326    void         SetKeyAutoRepeat(Bool_t on = kTRUE) override;
0327    void         GrabKey(Window_t id, Int_t keycode, UInt_t modifier, Bool_t grab = kTRUE) override;
0328    void         GrabButton(Window_t id, EMouseButton button, UInt_t modifier,
0329                            UInt_t evmask, Window_t confine, Cursor_t cursor,
0330                            Bool_t grab = kTRUE) override;
0331    void         GrabPointer(Window_t id, UInt_t evmask, Window_t confine,
0332                             Cursor_t cursor, Bool_t grab = kTRUE,
0333                             Bool_t owner_events = kTRUE) override;
0334    void         SetWindowName(Window_t id, char *name) override;
0335    void         SetIconName(Window_t id, char *name) override;
0336    void         SetIconPixmap(Window_t id, Pixmap_t pic) override;
0337    void         SetClassHints(Window_t id, char *className, char *resourceName) override;
0338    void         SetMWMHints(Window_t id, UInt_t value, UInt_t funcs, UInt_t input) override;
0339    void         SetWMPosition(Window_t id, Int_t x, Int_t y) override;
0340    void         SetWMSize(Window_t id, UInt_t w, UInt_t h) override;
0341    void         SetWMSizeHints(Window_t id, UInt_t wmin, UInt_t hmin,
0342                                UInt_t wmax, UInt_t hmax, UInt_t winc, UInt_t hinc) override;
0343    void         SetWMState(Window_t id, EInitialState state) override;
0344    void         SetWMTransientHint(Window_t id, Window_t main_id) override;
0345    void         DrawString(Drawable_t id, GContext_t gc, Int_t x, Int_t y,
0346                            const char *s, Int_t len) override;
0347    Int_t        TextWidth(FontStruct_t font, const char *s, Int_t len) override;
0348    void         GetFontProperties(FontStruct_t font, Int_t &max_ascent, Int_t &max_descent) override;
0349    void         GetGCValues(GContext_t gc, GCValues_t &gval) override;
0350    FontStruct_t GetFontStruct(FontH_t fh) override;
0351    void         FreeFontStruct(FontStruct_t fs) override;
0352    void         ClearWindow(Window_t id) override;
0353    Int_t        KeysymToKeycode(UInt_t keysym) override;
0354    void         FillRectangle(Drawable_t id, GContext_t gc, Int_t x, Int_t y,
0355                               UInt_t w, UInt_t h) override;
0356    void         DrawRectangle(Drawable_t id, GContext_t gc, Int_t x, Int_t y,
0357                               UInt_t w, UInt_t h) override;
0358    void         DrawSegments(Drawable_t id, GContext_t gc, Segment_t *seg, Int_t nseg) override;
0359    void         SelectInput(Window_t id, UInt_t evmask) override;
0360    Window_t     GetInputFocus() override;
0361    void         SetInputFocus(Window_t id) override;
0362    Window_t     GetPrimarySelectionOwner() override;
0363    void         SetPrimarySelectionOwner(Window_t id) override;
0364    void         ConvertPrimarySelection(Window_t id, Atom_t clipboard, Time_t when) override;
0365    void         LookupString(Event_t *event, char *buf, Int_t buflen, UInt_t &keysym) override;
0366    void         GetPasteBuffer(Window_t id, Atom_t atom, TString &text,
0367                                Int_t &nchar, Bool_t del) override;
0368    void         TranslateCoordinates(Window_t src, Window_t dest, Int_t src_x,
0369                     Int_t src_y, Int_t &dest_x, Int_t &dest_y, Window_t &child) override;
0370    void         GetWindowSize(Drawable_t id, Int_t &x, Int_t &y, UInt_t &w, UInt_t &h) override;
0371    void         FillPolygon(Window_t id, GContext_t gc, Point_t *points, Int_t npnt) override;
0372    void         QueryPointer(Window_t id, Window_t &rootw, Window_t &childw,
0373                              Int_t &root_x, Int_t &root_y, Int_t &win_x,
0374                              Int_t &win_y, UInt_t &mask) override;
0375    void         SetForeground(GContext_t gc, ULong_t foreground) override;
0376    void         SetClipRectangles(GContext_t gc, Int_t x, Int_t y, Rectangle_t *recs, Int_t n) override;
0377    void         Update(Int_t mode = 0) override;
0378    Region_t     CreateRegion() override;
0379    void         DestroyRegion(Region_t reg) override;
0380    void         UnionRectWithRegion(Rectangle_t *rect, Region_t src, Region_t dest) override;
0381    Region_t     PolygonRegion(Point_t *points, Int_t np, Bool_t winding) override;
0382    void         UnionRegion(Region_t rega, Region_t regb, Region_t result) override;
0383    void         IntersectRegion(Region_t rega, Region_t regb, Region_t result) override;
0384    void         SubtractRegion(Region_t rega, Region_t regb, Region_t result) override;
0385    void         XorRegion(Region_t rega, Region_t regb, Region_t result) override;
0386    Bool_t       EmptyRegion(Region_t reg) override;
0387    Bool_t       PointInRegion(Int_t x, Int_t y, Region_t reg) override;
0388    Bool_t       EqualRegion(Region_t rega, Region_t regb) override;
0389    void         GetRegionBox(Region_t reg, Rectangle_t *) override;
0390    char       **ListFonts(const char *fontname, Int_t max, Int_t &count) override;
0391    void         FreeFontNames(char **fontlist) override;
0392    Drawable_t   CreateImage(UInt_t width, UInt_t height) override;
0393    void         GetImageSize(Drawable_t id, UInt_t &width, UInt_t &height) override;
0394    void         PutPixel(Drawable_t id, Int_t x, Int_t y, ULong_t pixel) override;
0395    void         PutImage(Drawable_t id, GContext_t gc, Drawable_t img,
0396                          Int_t dx, Int_t dy, Int_t x, Int_t y,
0397                          UInt_t w, UInt_t h) override;
0398    void         DeleteImage(Drawable_t img) override;
0399    void         ShapeCombineMask(Window_t id, Int_t x, Int_t y, Pixmap_t mask) override;
0400    UInt_t       ScreenWidthMM() const override;
0401 
0402    void         DeleteProperty(Window_t, Atom_t&) override;
0403    Int_t        GetProperty(Window_t, Atom_t, Long_t, Long_t, Bool_t, Atom_t,
0404                             Atom_t*, Int_t*, ULong_t*, ULong_t*, unsigned char**) override;
0405    void         ChangeActivePointerGrab(Window_t, UInt_t, Cursor_t) override;
0406    void         ConvertSelection(Window_t, Atom_t&, Atom_t&, Atom_t&, Time_t&) override;
0407    Bool_t       SetSelectionOwner(Window_t, Atom_t&) override;
0408    void         ChangeProperties(Window_t id, Atom_t property, Atom_t type,
0409                                  Int_t format, UChar_t *data, Int_t len) override;
0410    void         SetDNDAware(Window_t, Atom_t *) override;
0411    void         SetTypeList(Window_t win, Atom_t prop, Atom_t *typelist) override;
0412    Window_t     FindRWindow(Window_t win, Window_t dragwin, Window_t input, int x, int y, int maxd) override;
0413    Bool_t       IsDNDAware(Window_t win, Atom_t *typelist) override;
0414 
0415    ClassDefOverride(TGX11,0)  //Interface to X11
0416 };
0417 
0418 #endif