00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef ROOT_TVirtualX
00013 #define ROOT_TVirtualX
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef ROOT_TNamed
00028 #include "TNamed.h"
00029 #endif
00030 #ifndef ROOT_TAttLine
00031 #include "TAttLine.h"
00032 #endif
00033 #ifndef ROOT_TAttFill
00034 #include "TAttFill.h"
00035 #endif
00036 #ifndef ROOT_TAttText
00037 #include "TAttText.h"
00038 #endif
00039 #ifndef ROOT_TAttMarker
00040 #include "TAttMarker.h"
00041 #endif
00042 #ifndef ROOT_GuiTypes
00043 #include "GuiTypes.h"
00044 #endif
00045
00046
00047
00048 R__EXTERN Atom_t gWM_DELETE_WINDOW;
00049 R__EXTERN Atom_t gMOTIF_WM_HINTS;
00050 R__EXTERN Atom_t gROOT_MESSAGE;
00051
00052 const int kNumCursors = 19;
00053 enum ECursor { kBottomLeft, kBottomRight, kTopLeft, kTopRight,
00054 kBottomSide, kLeftSide, kTopSide, kRightSide,
00055 kMove, kCross, kArrowHor, kArrowVer, kHand, kRotate,
00056 kPointer, kArrowRight, kCaret, kWatch, kNoDrop };
00057
00058 class TPoint;
00059 class TString;
00060 class TGWin32Command;
00061 #ifdef __cplusplus
00062 class GLUtesselator;
00063 #else
00064 extern "C" { struct GLUtesselator; }
00065 #endif
00066
00067 class TVirtualX : public TNamed, public TAttLine, public TAttFill, public TAttText, public TAttMarker {
00068
00069 public:
00070 enum EDrawMode { kCopy = 1, kXor, kInvert };
00071 enum EBoxMode { kHollow, kFilled };
00072 enum ETextMode { kClear, kOpaque };
00073 enum ETextSetMode { kCheck, kLoad };
00074
00075 protected:
00076 EDrawMode fDrawMode;
00077
00078 public:
00079 TVirtualX(): fDrawMode() { }
00080 TVirtualX(const char *name, const char *title);
00081 virtual ~TVirtualX() { }
00082
00083 virtual Bool_t Init(void *display=0);
00084 virtual void ClearWindow();
00085 virtual void ClosePixmap();
00086 virtual void CloseWindow();
00087 virtual void CopyPixmap(Int_t wid, Int_t xpos, Int_t ypos);
00088 virtual void CreateOpenGLContext(Int_t wid=0);
00089 virtual void DeleteOpenGLContext(Int_t wid=0);
00090 virtual void DrawBox(Int_t x1, Int_t y1, Int_t x2, Int_t y2, EBoxMode mode);
00091 virtual void DrawCellArray(Int_t x1, Int_t y1, Int_t x2, Int_t y2,
00092 Int_t nx, Int_t ny, Int_t *ic);
00093 virtual void DrawFillArea(Int_t n, TPoint *xy);
00094 virtual void DrawLine(Int_t x1, Int_t y1, Int_t x2, Int_t y2);
00095 virtual void DrawPolyLine(Int_t n, TPoint *xy);
00096 virtual void DrawPolyMarker(Int_t n, TPoint *xy);
00097 virtual void DrawText(Int_t x, Int_t y, Float_t angle, Float_t mgn, const char *text,
00098 ETextMode mode);
00099 virtual UInt_t ExecCommand(TGWin32Command *code);
00100 virtual void GetCharacterUp(Float_t &chupx, Float_t &chupy);
00101 EDrawMode GetDrawMode() { return fDrawMode; }
00102 virtual Int_t GetDoubleBuffer(Int_t wid);
00103 virtual void GetGeometry(Int_t wid, Int_t &x, Int_t &y, UInt_t &w, UInt_t &h);
00104 virtual const char *DisplayName(const char * = 0);
00105 virtual Handle_t GetNativeEvent() const;
00106 virtual ULong_t GetPixel(Color_t cindex);
00107 virtual void GetPlanes(Int_t &nplanes);
00108 virtual void GetRGB(Int_t index, Float_t &r, Float_t &g, Float_t &b);
00109 virtual void GetTextExtent(UInt_t &w, UInt_t &h, char *mess);
00110 virtual Int_t GetFontAscent() const;
00111 virtual Int_t GetFontDescent() const ;
00112 virtual Float_t GetTextMagnitude();
00113 virtual Window_t GetWindowID(Int_t wid);
00114 virtual Bool_t HasTTFonts() const;
00115 virtual Int_t InitWindow(ULong_t window);
00116 virtual Int_t AddWindow(ULong_t qwid, UInt_t w, UInt_t h);
00117 virtual Int_t AddPixmap(ULong_t pixid, UInt_t w, UInt_t h);
00118 virtual void RemoveWindow(ULong_t qwid);
00119 virtual void MoveWindow(Int_t wid, Int_t x, Int_t y);
00120 virtual Int_t OpenPixmap(UInt_t w, UInt_t h);
00121 virtual void QueryPointer(Int_t &ix, Int_t &iy);
00122 virtual Pixmap_t ReadGIF(Int_t x0, Int_t y0, const char *file, Window_t id=0);
00123 virtual Int_t RequestLocator(Int_t mode, Int_t ctyp, Int_t &x, Int_t &y);
00124 virtual Int_t RequestString(Int_t x, Int_t y, char *text);
00125 virtual void RescaleWindow(Int_t wid, UInt_t w, UInt_t h);
00126 virtual Int_t ResizePixmap(Int_t wid, UInt_t w, UInt_t h);
00127 virtual void ResizeWindow(Int_t wid);
00128 virtual void SelectWindow(Int_t wid);
00129 virtual void SelectPixmap(Int_t qpixid);
00130 virtual void SetCharacterUp(Float_t chupx, Float_t chupy);
00131 virtual void SetClipOFF(Int_t wid);
00132 virtual void SetClipRegion(Int_t wid, Int_t x, Int_t y, UInt_t w, UInt_t h);
00133 virtual void SetCursor(Int_t win, ECursor cursor);
00134 virtual void SetDoubleBuffer(Int_t wid, Int_t mode);
00135 virtual void SetDoubleBufferOFF();
00136 virtual void SetDoubleBufferON();
00137 virtual void SetDrawMode(EDrawMode mode);
00138 virtual void SetFillColor(Color_t cindex);
00139 virtual void SetFillStyle(Style_t style);
00140 virtual void SetLineColor(Color_t cindex);
00141 virtual void SetLineType(Int_t n, Int_t *dash);
00142 virtual void SetLineStyle(Style_t linestyle);
00143 virtual void SetLineWidth(Width_t width);
00144 virtual void SetMarkerColor(Color_t cindex);
00145 virtual void SetMarkerSize(Float_t markersize);
00146 virtual void SetMarkerStyle(Style_t markerstyle);
00147 virtual void SetOpacity(Int_t percent);
00148 virtual void SetRGB(Int_t cindex, Float_t r, Float_t g, Float_t b);
00149 virtual void SetTextAlign(Short_t talign=11);
00150 virtual void SetTextColor(Color_t cindex);
00151 virtual Int_t SetTextFont(char *fontname, ETextSetMode mode);
00152 virtual void SetTextFont(Font_t fontnumber);
00153 virtual void SetTextMagnitude(Float_t mgn);
00154 virtual void SetTextSize(Float_t textsize);
00155 virtual void UpdateWindow(Int_t mode);
00156 virtual void Warp(Int_t ix, Int_t iy, Window_t id = 0);
00157 virtual Int_t WriteGIF(char *name);
00158 virtual void WritePixmap(Int_t wid, UInt_t w, UInt_t h, char *pxname);
00159 virtual Window_t GetCurrentWindow() const;
00160 virtual Int_t SupportsExtension(const char *ext) const;
00161
00162
00163 virtual void GetWindowAttributes(Window_t id, WindowAttributes_t &attr);
00164 virtual void MapWindow(Window_t id);
00165 virtual void MapSubwindows(Window_t id);
00166 virtual void MapRaised(Window_t id);
00167 virtual void UnmapWindow(Window_t id);
00168 virtual void DestroyWindow(Window_t id);
00169 virtual void DestroySubwindows(Window_t id);
00170 virtual void RaiseWindow(Window_t id);
00171 virtual void LowerWindow(Window_t id);
00172 virtual void MoveWindow(Window_t id, Int_t x, Int_t y);
00173 virtual void MoveResizeWindow(Window_t id, Int_t x, Int_t y, UInt_t w, UInt_t h);
00174 virtual void ResizeWindow(Window_t id, UInt_t w, UInt_t h);
00175 virtual void IconifyWindow(Window_t id);
00176 virtual Bool_t NeedRedraw(ULong_t tgwindow, Bool_t force);
00177 virtual void ReparentWindow(Window_t id, Window_t pid, Int_t x, Int_t y);
00178 virtual void SetWindowBackground(Window_t id, ULong_t color);
00179 virtual void SetWindowBackgroundPixmap(Window_t id, Pixmap_t pxm);
00180 virtual Window_t CreateWindow(Window_t parent, Int_t x, Int_t y,
00181 UInt_t w, UInt_t h, UInt_t border,
00182 Int_t depth, UInt_t clss,
00183 void *visual, SetWindowAttributes_t *attr,
00184 UInt_t wtype);
00185 virtual Int_t OpenDisplay(const char *dpyName);
00186 virtual void CloseDisplay();
00187 virtual Display_t GetDisplay() const;
00188 virtual Visual_t GetVisual() const;
00189 virtual Int_t GetScreen() const;
00190 virtual Int_t GetDepth() const;
00191 virtual UInt_t ScreenWidthMM() const;
00192 virtual Colormap_t GetColormap() const;
00193 virtual Atom_t InternAtom(const char *atom_name, Bool_t only_if_exist);
00194 virtual Window_t GetDefaultRootWindow() const;
00195 virtual Window_t GetParent(Window_t id) const;
00196 virtual FontStruct_t LoadQueryFont(const char *font_name);
00197 virtual FontH_t GetFontHandle(FontStruct_t fs);
00198 virtual void DeleteFont(FontStruct_t fs);
00199 virtual GContext_t CreateGC(Drawable_t id, GCValues_t *gval);
00200 virtual void ChangeGC(GContext_t gc, GCValues_t *gval);
00201 virtual void CopyGC(GContext_t org, GContext_t dest, Mask_t mask);
00202 virtual void DeleteGC(GContext_t gc);
00203 virtual Cursor_t CreateCursor(ECursor cursor);
00204 virtual void SetCursor(Window_t id, Cursor_t curid);
00205 virtual Pixmap_t CreatePixmap(Drawable_t id, UInt_t w, UInt_t h);
00206 virtual Pixmap_t CreatePixmap(Drawable_t id, const char *bitmap, UInt_t width,
00207 UInt_t height, ULong_t forecolor, ULong_t backcolor,
00208 Int_t depth);
00209 virtual Pixmap_t CreateBitmap(Drawable_t id, const char *bitmap,
00210 UInt_t width, UInt_t height);
00211 virtual void DeletePixmap(Pixmap_t pmap);
00212 virtual Bool_t CreatePictureFromFile(Drawable_t id, const char *filename,
00213 Pixmap_t &pict, Pixmap_t &pict_mask,
00214 PictureAttributes_t &attr);
00215 virtual Bool_t CreatePictureFromData(Drawable_t id, char **data,
00216 Pixmap_t &pict, Pixmap_t &pict_mask,
00217 PictureAttributes_t &attr);
00218 virtual Pixmap_t CreatePixmapFromData(unsigned char *bits, UInt_t width, UInt_t height);
00219 virtual Bool_t ReadPictureDataFromFile(const char *filename, char ***ret_data);
00220 virtual void DeletePictureData(void *data);
00221 virtual void SetDashes(GContext_t gc, Int_t offset, const char *dash_list,
00222 Int_t n);
00223 virtual Bool_t ParseColor(Colormap_t cmap, const char *cname, ColorStruct_t &color);
00224 virtual Bool_t AllocColor(Colormap_t cmap, ColorStruct_t &color);
00225 virtual void QueryColor(Colormap_t cmap, ColorStruct_t &color);
00226 virtual void FreeColor(Colormap_t cmap, ULong_t pixel);
00227 virtual Int_t EventsPending();
00228 virtual void NextEvent(Event_t &event);
00229 virtual void Bell(Int_t percent);
00230 virtual void CopyArea(Drawable_t src, Drawable_t dest, GContext_t gc,
00231 Int_t src_x, Int_t src_y, UInt_t width,
00232 UInt_t height, Int_t dest_x, Int_t dest_y);
00233 virtual void ChangeWindowAttributes(Window_t id, SetWindowAttributes_t *attr);
00234 virtual void ChangeProperty(Window_t id, Atom_t property, Atom_t type,
00235 UChar_t *data, Int_t len);
00236 virtual void DrawLine(Drawable_t id, GContext_t gc, Int_t x1, Int_t y1, Int_t x2, Int_t y2);
00237 virtual void ClearArea(Window_t id, Int_t x, Int_t y, UInt_t w, UInt_t h);
00238 virtual Bool_t CheckEvent(Window_t id, EGEventType type, Event_t &ev);
00239 virtual void SendEvent(Window_t id, Event_t *ev);
00240 virtual void WMDeleteNotify(Window_t id);
00241 virtual void SetKeyAutoRepeat(Bool_t on = kTRUE);
00242 virtual void GrabKey(Window_t id, Int_t keycode, UInt_t modifier, Bool_t grab = kTRUE);
00243 virtual void GrabButton(Window_t id, EMouseButton button, UInt_t modifier,
00244 UInt_t evmask, Window_t confine, Cursor_t cursor,
00245 Bool_t grab = kTRUE);
00246 virtual void GrabPointer(Window_t id, UInt_t evmask, Window_t confine,
00247 Cursor_t cursor, Bool_t grab = kTRUE,
00248 Bool_t owner_events = kTRUE);
00249 virtual void SetWindowName(Window_t id, char *name);
00250 virtual void SetIconName(Window_t id, char *name);
00251 virtual void SetIconPixmap(Window_t id, Pixmap_t pix);
00252 virtual void SetClassHints(Window_t id, char *className, char *resourceName);
00253 virtual void SetMWMHints(Window_t id, UInt_t value, UInt_t funcs, UInt_t input);
00254 virtual void SetWMPosition(Window_t id, Int_t x, Int_t y);
00255 virtual void SetWMSize(Window_t id, UInt_t w, UInt_t h);
00256 virtual void SetWMSizeHints(Window_t id, UInt_t wmin, UInt_t hmin,
00257 UInt_t wmax, UInt_t hmax, UInt_t winc, UInt_t hinc);
00258 virtual void SetWMState(Window_t id, EInitialState state);
00259 virtual void SetWMTransientHint(Window_t id, Window_t main_id);
00260 virtual void DrawString(Drawable_t id, GContext_t gc, Int_t x, Int_t y,
00261 const char *s, Int_t len);
00262 virtual Int_t TextWidth(FontStruct_t font, const char *s, Int_t len);
00263 virtual void GetFontProperties(FontStruct_t font, Int_t &max_ascent, Int_t &max_descent);
00264 virtual void GetGCValues(GContext_t gc, GCValues_t &gval);
00265 virtual FontStruct_t GetFontStruct(FontH_t fh);
00266 virtual void FreeFontStruct(FontStruct_t fs);
00267 virtual void ClearWindow(Window_t id);
00268 virtual Int_t KeysymToKeycode(UInt_t keysym);
00269 virtual void FillRectangle(Drawable_t id, GContext_t gc, Int_t x, Int_t y,
00270 UInt_t w, UInt_t h);
00271 virtual void DrawRectangle(Drawable_t id, GContext_t gc, Int_t x, Int_t y,
00272 UInt_t w, UInt_t h);
00273 virtual void DrawSegments(Drawable_t id, GContext_t gc, Segment_t *seg, Int_t nseg);
00274 virtual void SelectInput(Window_t id, UInt_t evmask);
00275 virtual Window_t GetInputFocus();
00276 virtual void SetInputFocus(Window_t id);
00277 virtual Window_t GetPrimarySelectionOwner();
00278 virtual void SetPrimarySelectionOwner(Window_t id);
00279 virtual void ConvertPrimarySelection(Window_t id, Atom_t clipboard, Time_t when);
00280 virtual void LookupString(Event_t *event, char *buf, Int_t buflen, UInt_t &keysym);
00281 virtual void GetPasteBuffer(Window_t id, Atom_t atom, TString &text, Int_t &nchar,
00282 Bool_t del);
00283 virtual void TranslateCoordinates(Window_t src, Window_t dest, Int_t src_x,Int_t src_y,
00284 Int_t &dest_x, Int_t &dest_y, Window_t &child);
00285 virtual void GetWindowSize(Drawable_t id, Int_t &x, Int_t &y, UInt_t &w, UInt_t &h);
00286 virtual void FillPolygon(Window_t id, GContext_t gc, Point_t *points, Int_t npnt);
00287 virtual void QueryPointer(Window_t id, Window_t &rootw, Window_t &childw,
00288 Int_t &root_x, Int_t &root_y, Int_t &win_x,
00289 Int_t &win_y, UInt_t &mask);
00290 virtual void SetForeground(GContext_t gc, ULong_t foreground);
00291 virtual void SetClipRectangles(GContext_t gc, Int_t x, Int_t y, Rectangle_t *recs, Int_t n);
00292 virtual void Update(Int_t mode = 0);
00293 virtual Region_t CreateRegion();
00294 virtual void DestroyRegion(Region_t reg);
00295 virtual void UnionRectWithRegion(Rectangle_t *rect, Region_t src, Region_t dest);
00296 virtual Region_t PolygonRegion(Point_t *points, Int_t np, Bool_t winding);
00297 virtual void UnionRegion(Region_t rega, Region_t regb, Region_t result);
00298 virtual void IntersectRegion(Region_t rega, Region_t regb, Region_t result);
00299 virtual void SubtractRegion(Region_t rega, Region_t regb, Region_t result);
00300 virtual void XorRegion(Region_t rega, Region_t regb, Region_t result);
00301 virtual Bool_t EmptyRegion(Region_t reg);
00302 virtual Bool_t PointInRegion(Int_t x, Int_t y, Region_t reg);
00303 virtual Bool_t EqualRegion(Region_t rega, Region_t regb);
00304 virtual void GetRegionBox(Region_t reg, Rectangle_t *rect);
00305 virtual char **ListFonts(const char *fontname, Int_t max, Int_t &count);
00306 virtual void FreeFontNames(char **fontlist);
00307 virtual Drawable_t CreateImage(UInt_t width, UInt_t height);
00308 virtual void GetImageSize(Drawable_t id, UInt_t &width, UInt_t &height);
00309 virtual void PutPixel(Drawable_t id, Int_t x, Int_t y, ULong_t pixel);
00310 virtual void PutImage(Drawable_t id, GContext_t gc, Drawable_t img, Int_t dx, Int_t dy,
00311 Int_t x, Int_t y, UInt_t w, UInt_t h);
00312 virtual void DeleteImage(Drawable_t img);
00313 virtual unsigned char *GetColorBits(Drawable_t wid, Int_t x = 0, Int_t y = 0, UInt_t w = 0, UInt_t h = 0);
00314 virtual void ShapeCombineMask(Window_t id, Int_t x, Int_t y, Pixmap_t mask);
00315
00316
00317 virtual void DeleteProperty(Window_t, Atom_t&);
00318 virtual Int_t GetProperty(Window_t, Atom_t, Long_t, Long_t, Bool_t, Atom_t,
00319 Atom_t*, Int_t*, ULong_t*, ULong_t*, unsigned char**);
00320 virtual void ChangeActivePointerGrab(Window_t, UInt_t, Cursor_t);
00321 virtual void ConvertSelection(Window_t, Atom_t&, Atom_t&, Atom_t&, Time_t&);
00322 virtual Bool_t SetSelectionOwner(Window_t, Atom_t&);
00323 virtual void ChangeProperties(Window_t id, Atom_t property, Atom_t type,
00324 Int_t format, UChar_t *data, Int_t len);
00325 virtual void SetDNDAware(Window_t, Atom_t *);
00326 virtual void SetTypeList(Window_t win, Atom_t prop, Atom_t *typelist);
00327 virtual Window_t FindRWindow(Window_t win, Window_t dragwin, Window_t input, int x, int y, int maxd);
00328 virtual Bool_t IsDNDAware(Window_t win, Atom_t *typelist);
00329
00330 virtual Bool_t IsCmdThread() const { return kTRUE; }
00331
00332 static TVirtualX *&Instance();
00333
00334 ClassDef(TVirtualX,0)
00335 };
00336
00337 #ifndef __CINT__
00338 #define gVirtualX (TVirtualX::Instance())
00339 R__EXTERN TVirtualX *(*gPtr2VirtualX)();
00340 #endif
00341 R__EXTERN TVirtualX *gGXBatch;
00342
00343 #endif