12 #ifndef ROOT_TVirtualX
13 #define ROOT_TVirtualX
39 R__EXTERN Atom_t gWM_DELETE_WINDOW;
40 R__EXTERN Atom_t gMOTIF_WM_HINTS;
41 R__EXTERN Atom_t gROOT_MESSAGE;
43 const int kNumCursors = 19;
44 enum ECursor { kBottomLeft, kBottomRight, kTopLeft, kTopRight,
45 kBottomSide, kLeftSide, kTopSide, kRightSide,
46 kMove, kCross, kArrowHor, kArrowVer, kHand, kRotate,
47 kPointer, kArrowRight, kCaret, kWatch, kNoDrop };
53 class TVirtualX :
public TNamed,
public TAttLine,
public TAttFill,
public TAttText,
public TAttMarker {
56 enum EDrawMode { kCopy = 1, kXor, kInvert };
57 enum EBoxMode { kHollow, kFilled };
58 enum ETextMode { kClear, kOpaque };
59 enum ETextSetMode { kCheck, kLoad };
65 TVirtualX(): fDrawMode() { }
66 TVirtualX(
const char *name,
const char *title);
67 virtual ~TVirtualX() { }
69 virtual Bool_t Init(
void *display=0);
70 virtual void ClearWindow();
71 virtual void ClosePixmap();
72 virtual void CloseWindow();
73 virtual void CopyPixmap(Int_t wid, Int_t xpos, Int_t ypos);
74 virtual void CreateOpenGLContext(Int_t wid=0);
75 virtual void DeleteOpenGLContext(Int_t wid=0);
78 virtual Double_t GetOpenGLScalingFactor();
79 virtual Window_t CreateOpenGLWindow(Window_t parentID, UInt_t width, UInt_t height,
const std::vector<std::pair<UInt_t, Int_t> > &format);
80 virtual Handle_t CreateOpenGLContext(Window_t windowID, Handle_t sharedContext);
81 virtual Bool_t MakeOpenGLContextCurrent(Handle_t ctx, Window_t windowID);
82 virtual Handle_t GetCurrentOpenGLContext();
83 virtual void FlushOpenGLBuffer(Handle_t ctx);
85 virtual void DrawBox(Int_t x1, Int_t y1, Int_t x2, Int_t y2, EBoxMode mode);
86 virtual void DrawCellArray(Int_t x1, Int_t y1, Int_t x2, Int_t y2,
87 Int_t nx, Int_t ny, Int_t *ic);
88 virtual void DrawFillArea(Int_t n, TPoint *xy);
89 virtual void DrawLine(Int_t x1, Int_t y1, Int_t x2, Int_t y2);
90 virtual void DrawPolyLine(Int_t n, TPoint *xy);
91 virtual void DrawPolyMarker(Int_t n, TPoint *xy);
92 virtual void DrawText(Int_t x, Int_t y, Float_t angle, Float_t mgn,
const char *text,
94 virtual void DrawText(Int_t x, Int_t y, Float_t angle, Float_t mgn,
const wchar_t *text,
96 virtual UInt_t ExecCommand(TGWin32Command *code);
97 virtual void GetCharacterUp(Float_t &chupx, Float_t &chupy);
98 EDrawMode GetDrawMode() {
return fDrawMode; }
99 virtual Int_t GetDoubleBuffer(Int_t wid);
100 virtual void GetGeometry(Int_t wid, Int_t &x, Int_t &y, UInt_t &w, UInt_t &h);
101 virtual const char *DisplayName(
const char * = 0);
102 virtual Handle_t GetNativeEvent()
const;
103 virtual ULong_t GetPixel(Color_t cindex);
104 virtual void GetPlanes(Int_t &nplanes);
105 virtual void GetRGB(Int_t index, Float_t &r, Float_t &g, Float_t &b);
106 virtual void GetTextExtent(UInt_t &w, UInt_t &h,
char *mess);
107 virtual void GetTextExtent(UInt_t &w, UInt_t &h,
wchar_t *mess);
108 virtual Int_t GetFontAscent()
const;
109 virtual Int_t GetFontAscent(
const char *mess)
const;
110 virtual Int_t GetFontDescent()
const;
111 virtual Int_t GetFontDescent(
const char *mess)
const;
112 virtual Float_t GetTextMagnitude();
113 virtual Window_t GetWindowID(Int_t wid);
114 virtual Bool_t HasTTFonts()
const;
115 virtual Int_t InitWindow(ULong_t window);
116 virtual Int_t AddWindow(ULong_t qwid, UInt_t w, UInt_t h);
117 virtual Int_t AddPixmap(ULong_t pixid, UInt_t w, UInt_t h);
118 virtual void RemoveWindow(ULong_t qwid);
119 virtual void MoveWindow(Int_t wid, Int_t x, Int_t y);
120 virtual Int_t OpenPixmap(UInt_t w, UInt_t h);
121 virtual void QueryPointer(Int_t &ix, Int_t &iy);
122 virtual Pixmap_t ReadGIF(Int_t x0, Int_t y0,
const char *file, Window_t
id=0);
123 virtual Int_t RequestLocator(Int_t mode, Int_t ctyp, Int_t &x, Int_t &y);
124 virtual Int_t RequestString(Int_t x, Int_t y,
char *text);
125 virtual void RescaleWindow(Int_t wid, UInt_t w, UInt_t h);
126 virtual Int_t ResizePixmap(Int_t wid, UInt_t w, UInt_t h);
127 virtual void ResizeWindow(Int_t wid);
128 virtual void SelectWindow(Int_t wid);
129 virtual void SelectPixmap(Int_t qpixid);
130 virtual void SetCharacterUp(Float_t chupx, Float_t chupy);
131 virtual void SetClipOFF(Int_t wid);
132 virtual void SetClipRegion(Int_t wid, Int_t x, Int_t y, UInt_t w, UInt_t h);
133 virtual void SetCursor(Int_t win, ECursor cursor);
134 virtual void SetDoubleBuffer(Int_t wid, Int_t mode);
135 virtual void SetDoubleBufferOFF();
136 virtual void SetDoubleBufferON();
137 virtual void SetDrawMode(EDrawMode mode);
138 virtual void SetFillColor(Color_t cindex);
139 virtual void SetFillStyle(Style_t style);
140 virtual void SetLineColor(Color_t cindex);
141 virtual void SetLineType(Int_t n, Int_t *dash);
142 virtual void SetLineStyle(Style_t linestyle);
143 virtual void SetLineWidth(Width_t width);
144 virtual void SetMarkerColor(Color_t cindex);
145 virtual void SetMarkerSize(Float_t markersize);
146 virtual void SetMarkerStyle(Style_t markerstyle);
147 virtual void SetOpacity(Int_t percent);
148 virtual void SetRGB(Int_t cindex, Float_t r, Float_t g, Float_t b);
149 virtual void SetTextAlign(Short_t talign=11);
150 virtual void SetTextColor(Color_t cindex);
151 virtual Int_t SetTextFont(
char *fontname, ETextSetMode mode);
152 virtual void SetTextFont(Font_t fontnumber);
153 virtual void SetTextMagnitude(Float_t mgn);
154 virtual void SetTextSize(Float_t textsize);
155 virtual void Sync(Int_t mode);
156 virtual void UpdateWindow(Int_t mode);
157 virtual void Warp(Int_t ix, Int_t iy, Window_t
id = 0);
158 virtual Int_t WriteGIF(
char *name);
159 virtual void WritePixmap(Int_t wid, UInt_t w, UInt_t h,
char *pxname);
160 virtual Window_t GetCurrentWindow()
const;
161 virtual Int_t SupportsExtension(
const char *ext)
const;
164 virtual void GetWindowAttributes(Window_t
id, WindowAttributes_t &attr);
165 virtual void MapWindow(Window_t
id);
166 virtual void MapSubwindows(Window_t
id);
167 virtual void MapRaised(Window_t
id);
168 virtual void UnmapWindow(Window_t
id);
169 virtual void DestroyWindow(Window_t
id);
170 virtual void DestroySubwindows(Window_t
id);
171 virtual void RaiseWindow(Window_t
id);
172 virtual void LowerWindow(Window_t
id);
173 virtual void MoveWindow(Window_t
id, Int_t x, Int_t y);
174 virtual void MoveResizeWindow(Window_t
id, Int_t x, Int_t y, UInt_t w, UInt_t h);
175 virtual void ResizeWindow(Window_t
id, UInt_t w, UInt_t h);
176 virtual void IconifyWindow(Window_t
id);
177 virtual Bool_t NeedRedraw(ULong_t tgwindow, Bool_t force);
178 virtual void ReparentWindow(Window_t
id, Window_t pid, Int_t x, Int_t y);
179 virtual void SetWindowBackground(Window_t
id, ULong_t color);
180 virtual void SetWindowBackgroundPixmap(Window_t
id, Pixmap_t pxm);
181 virtual Window_t CreateWindow(Window_t parent, Int_t x, Int_t y,
182 UInt_t w, UInt_t h, UInt_t border,
183 Int_t depth, UInt_t clss,
184 void *visual, SetWindowAttributes_t *attr,
186 virtual Int_t OpenDisplay(
const char *dpyName);
187 virtual void CloseDisplay();
188 virtual Display_t GetDisplay()
const;
189 virtual Visual_t GetVisual()
const;
190 virtual Int_t GetScreen()
const;
191 virtual Int_t GetDepth()
const;
192 virtual UInt_t ScreenWidthMM()
const;
193 virtual Colormap_t GetColormap()
const;
194 virtual Atom_t InternAtom(
const char *atom_name, Bool_t only_if_exist);
195 virtual Window_t GetDefaultRootWindow()
const;
196 virtual Window_t GetParent(Window_t
id)
const;
197 virtual FontStruct_t LoadQueryFont(
const char *font_name);
198 virtual FontH_t GetFontHandle(FontStruct_t fs);
199 virtual void DeleteFont(FontStruct_t fs);
200 virtual GContext_t CreateGC(Drawable_t
id, GCValues_t *gval);
201 virtual void ChangeGC(GContext_t gc, GCValues_t *gval);
202 virtual void CopyGC(GContext_t org, GContext_t dest, Mask_t mask);
203 virtual void DeleteGC(GContext_t gc);
204 virtual Cursor_t CreateCursor(ECursor cursor);
205 virtual void SetCursor(Window_t
id, Cursor_t curid);
206 virtual Pixmap_t CreatePixmap(Drawable_t
id, UInt_t w, UInt_t h);
207 virtual Pixmap_t CreatePixmap(Drawable_t
id,
const char *bitmap, UInt_t width,
208 UInt_t height, ULong_t forecolor, ULong_t backcolor,
210 virtual Pixmap_t CreateBitmap(Drawable_t
id,
const char *bitmap,
211 UInt_t width, UInt_t height);
212 virtual void DeletePixmap(Pixmap_t pmap);
213 virtual Bool_t CreatePictureFromFile(Drawable_t
id,
const char *filename,
214 Pixmap_t &pict, Pixmap_t &pict_mask,
215 PictureAttributes_t &attr);
216 virtual Bool_t CreatePictureFromData(Drawable_t
id,
char **data,
217 Pixmap_t &pict, Pixmap_t &pict_mask,
218 PictureAttributes_t &attr);
219 virtual Pixmap_t CreatePixmapFromData(
unsigned char *bits, UInt_t width, UInt_t height);
220 virtual Bool_t ReadPictureDataFromFile(
const char *filename,
char ***ret_data);
221 virtual void DeletePictureData(
void *data);
222 virtual void SetDashes(GContext_t gc, Int_t offset,
const char *dash_list,
224 virtual Bool_t ParseColor(Colormap_t cmap,
const char *cname, ColorStruct_t &color);
225 virtual Bool_t AllocColor(Colormap_t cmap, ColorStruct_t &color);
226 virtual void QueryColor(Colormap_t cmap, ColorStruct_t &color);
227 virtual void FreeColor(Colormap_t cmap, ULong_t pixel);
228 virtual Int_t EventsPending();
229 virtual void NextEvent(Event_t &event);
230 virtual void Bell(Int_t percent);
231 virtual void CopyArea(Drawable_t src, Drawable_t dest, GContext_t gc,
232 Int_t src_x, Int_t src_y, UInt_t width,
233 UInt_t height, Int_t dest_x, Int_t dest_y);
234 virtual void ChangeWindowAttributes(Window_t
id, SetWindowAttributes_t *attr);
235 virtual void ChangeProperty(Window_t
id, Atom_t property, Atom_t type,
236 UChar_t *data, Int_t len);
237 virtual void DrawLine(Drawable_t
id, GContext_t gc, Int_t x1, Int_t y1, Int_t x2, Int_t y2);
238 virtual void ClearArea(Window_t
id, Int_t x, Int_t y, UInt_t w, UInt_t h);
239 virtual Bool_t CheckEvent(Window_t
id, EGEventType type, Event_t &ev);
240 virtual void SendEvent(Window_t
id, Event_t *ev);
241 virtual void DispatchClientMessage(UInt_t messageID);
242 virtual void WMDeleteNotify(Window_t
id);
243 virtual void SetKeyAutoRepeat(Bool_t on = kTRUE);
244 virtual void GrabKey(Window_t
id, Int_t keycode, UInt_t modifier, Bool_t grab = kTRUE);
245 virtual void GrabButton(Window_t
id, EMouseButton button, UInt_t modifier,
246 UInt_t evmask, Window_t confine, Cursor_t cursor,
247 Bool_t grab = kTRUE);
248 virtual void GrabPointer(Window_t
id, UInt_t evmask, Window_t confine,
249 Cursor_t cursor, Bool_t grab = kTRUE,
250 Bool_t owner_events = kTRUE);
251 virtual void SetWindowName(Window_t
id,
char *name);
252 virtual void SetIconName(Window_t
id,
char *name);
253 virtual void SetIconPixmap(Window_t
id, Pixmap_t pix);
254 virtual void SetClassHints(Window_t
id,
char *className,
char *resourceName);
255 virtual void SetMWMHints(Window_t
id, UInt_t value, UInt_t funcs, UInt_t input);
256 virtual void SetWMPosition(Window_t
id, Int_t x, Int_t y);
257 virtual void SetWMSize(Window_t
id, UInt_t w, UInt_t h);
258 virtual void SetWMSizeHints(Window_t
id, UInt_t wmin, UInt_t hmin,
259 UInt_t wmax, UInt_t hmax, UInt_t winc, UInt_t hinc);
260 virtual void SetWMState(Window_t
id, EInitialState state);
261 virtual void SetWMTransientHint(Window_t
id, Window_t main_id);
262 virtual void DrawString(Drawable_t
id, GContext_t gc, Int_t x, Int_t y,
263 const char *s, Int_t len);
264 virtual Int_t TextWidth(FontStruct_t font,
const char *s, Int_t len);
265 virtual void GetFontProperties(FontStruct_t font, Int_t &max_ascent, Int_t &max_descent);
266 virtual void GetGCValues(GContext_t gc, GCValues_t &gval);
267 virtual FontStruct_t GetGCFont(GContext_t gc);
268 virtual FontStruct_t GetFontStruct(FontH_t fh);
269 virtual void FreeFontStruct(FontStruct_t fs);
270 virtual void ClearWindow(Window_t
id);
271 virtual Int_t KeysymToKeycode(UInt_t keysym);
272 virtual void FillRectangle(Drawable_t
id, GContext_t gc, Int_t x, Int_t y,
274 virtual void DrawRectangle(Drawable_t
id, GContext_t gc, Int_t x, Int_t y,
276 virtual void DrawSegments(Drawable_t
id, GContext_t gc, Segment_t *seg, Int_t nseg);
277 virtual void SelectInput(Window_t
id, UInt_t evmask);
278 virtual Window_t GetInputFocus();
279 virtual void SetInputFocus(Window_t
id);
280 virtual Window_t GetPrimarySelectionOwner();
281 virtual void SetPrimarySelectionOwner(Window_t
id);
282 virtual void ConvertPrimarySelection(Window_t
id, Atom_t clipboard, Time_t when);
283 virtual void LookupString(Event_t *event,
char *buf, Int_t buflen, UInt_t &keysym);
284 virtual void GetPasteBuffer(Window_t
id, Atom_t atom, TString &text, Int_t &nchar,
286 virtual void TranslateCoordinates(Window_t src, Window_t dest, Int_t src_x,Int_t src_y,
287 Int_t &dest_x, Int_t &dest_y, Window_t &child);
288 virtual void GetWindowSize(Drawable_t
id, Int_t &x, Int_t &y, UInt_t &w, UInt_t &h);
289 virtual void FillPolygon(Window_t
id, GContext_t gc, Point_t *points, Int_t npnt);
290 virtual void QueryPointer(Window_t
id, Window_t &rootw, Window_t &childw,
291 Int_t &root_x, Int_t &root_y, Int_t &win_x,
292 Int_t &win_y, UInt_t &mask);
293 virtual void SetForeground(GContext_t gc, ULong_t foreground);
294 virtual void SetClipRectangles(GContext_t gc, Int_t x, Int_t y, Rectangle_t *recs, Int_t n);
295 virtual void Update(Int_t mode = 0);
296 virtual Region_t CreateRegion();
297 virtual void DestroyRegion(Region_t reg);
298 virtual void UnionRectWithRegion(Rectangle_t *rect, Region_t src, Region_t dest);
299 virtual Region_t PolygonRegion(Point_t *points, Int_t np, Bool_t winding);
300 virtual void UnionRegion(Region_t rega, Region_t regb, Region_t result);
301 virtual void IntersectRegion(Region_t rega, Region_t regb, Region_t result);
302 virtual void SubtractRegion(Region_t rega, Region_t regb, Region_t result);
303 virtual void XorRegion(Region_t rega, Region_t regb, Region_t result);
304 virtual Bool_t EmptyRegion(Region_t reg);
305 virtual Bool_t PointInRegion(Int_t x, Int_t y, Region_t reg);
306 virtual Bool_t EqualRegion(Region_t rega, Region_t regb);
307 virtual void GetRegionBox(Region_t reg, Rectangle_t *rect);
308 virtual char **ListFonts(
const char *fontname, Int_t max, Int_t &count);
309 virtual void FreeFontNames(
char **fontlist);
310 virtual Drawable_t CreateImage(UInt_t width, UInt_t height);
311 virtual void GetImageSize(Drawable_t
id, UInt_t &width, UInt_t &height);
312 virtual void PutPixel(Drawable_t
id, Int_t x, Int_t y, ULong_t pixel);
313 virtual void PutImage(Drawable_t
id, GContext_t gc, Drawable_t img, Int_t dx, Int_t dy,
314 Int_t x, Int_t y, UInt_t w, UInt_t h);
315 virtual void DeleteImage(Drawable_t img);
316 virtual unsigned char *GetColorBits(Drawable_t wid, Int_t x = 0, Int_t y = 0, UInt_t w = 0, UInt_t h = 0);
317 virtual void ShapeCombineMask(Window_t
id, Int_t x, Int_t y, Pixmap_t mask);
320 virtual void DeleteProperty(Window_t, Atom_t&);
321 virtual Int_t GetProperty(Window_t, Atom_t, Long_t, Long_t, Bool_t, Atom_t,
322 Atom_t*, Int_t*, ULong_t*, ULong_t*,
unsigned char**);
323 virtual void ChangeActivePointerGrab(Window_t, UInt_t, Cursor_t);
324 virtual void ConvertSelection(Window_t, Atom_t&, Atom_t&, Atom_t&, Time_t&);
325 virtual Bool_t SetSelectionOwner(Window_t, Atom_t&);
326 virtual void ChangeProperties(Window_t
id, Atom_t property, Atom_t type,
327 Int_t format, UChar_t *data, Int_t len);
328 virtual void SetDNDAware(Window_t, Atom_t *);
329 virtual void SetTypeList(Window_t win, Atom_t prop, Atom_t *typelist);
330 virtual Window_t FindRWindow(Window_t win, Window_t dragwin, Window_t input,
int x,
int y,
int maxd);
331 virtual Bool_t IsDNDAware(Window_t win, Atom_t *typelist);
333 virtual void BeginModalSessionFor(Window_t window);
335 virtual Bool_t IsCmdThread()
const {
return kTRUE; }
337 virtual void MapGCFont(GContext_t, FontStruct_t);
339 static TVirtualX *&Instance();
341 ClassDef(TVirtualX,0)
345 #define gVirtualX (TVirtualX::Instance())
346 R__EXTERN TVirtualX *(*gPtr2VirtualX)();
348 R__EXTERN TVirtualX *gGXBatch;