46 class EventTranslator;
58 class TGCocoa :
public TVirtualX {
61 TGCocoa(
const char *name,
const char *title);
70 virtual Bool_t Init(
void *display);
71 virtual Int_t OpenDisplay(
const char *displayName);
72 virtual const char *DisplayName(
const char *);
73 virtual Int_t SupportsExtension(
const char *extensionName)
const;
74 virtual void CloseDisplay();
75 virtual Display_t GetDisplay()
const;
76 virtual Visual_t GetVisual()
const;
77 virtual Int_t GetScreen()
const;
78 virtual UInt_t ScreenWidthMM()
const;
79 virtual Int_t GetDepth()
const;
80 virtual void Update(Int_t mode);
83 void ReconfigureDisplay();
84 ROOT::MacOSX::X11::Rectangle GetDisplayGeometry()
const;
90 virtual Window_t GetDefaultRootWindow()
const;
92 virtual Int_t InitWindow(ULong_t window);
93 virtual Window_t GetWindowID(Int_t wid);
94 virtual void SelectWindow(Int_t wid);
95 virtual void ClearWindow();
96 virtual void GetGeometry(Int_t wid, Int_t &x, Int_t &y, UInt_t &w, UInt_t &h);
97 virtual void MoveWindow(Int_t wid, Int_t x, Int_t y);
98 virtual void RescaleWindow(Int_t wid, UInt_t w, UInt_t h);
99 virtual void ResizeWindow(Int_t wid);
100 virtual void UpdateWindow(Int_t mode);
101 virtual Window_t GetCurrentWindow()
const;
102 virtual void CloseWindow();
103 virtual Int_t AddWindow(ULong_t qwid, UInt_t w, UInt_t h);
104 virtual void RemoveWindow(ULong_t qwid);
108 virtual Window_t CreateWindow(Window_t parent, Int_t x, Int_t y,
109 UInt_t w, UInt_t h, UInt_t border,
110 Int_t depth, UInt_t clss,
111 void *visual, SetWindowAttributes_t *attr,
115 virtual void DestroyWindow(Window_t wid);
116 virtual void DestroySubwindows(Window_t wid);
118 virtual void GetWindowAttributes(Window_t wid, WindowAttributes_t &attr);
119 virtual void ChangeWindowAttributes(Window_t wid, SetWindowAttributes_t *attr);
120 virtual void SelectInput(Window_t wid, UInt_t evmask);
122 void ReparentChild(Window_t wid, Window_t pid, Int_t x, Int_t y);
123 void ReparentTopLevel(Window_t wid, Window_t pid, Int_t x, Int_t y);
124 virtual void ReparentWindow(Window_t wid, Window_t pid, Int_t x, Int_t y);
126 virtual void MapWindow(Window_t wid);
127 virtual void MapSubwindows(Window_t wid);
128 virtual void MapRaised(Window_t wid);
129 virtual void UnmapWindow(Window_t wid);
130 virtual void RaiseWindow(Window_t wid);
131 virtual void LowerWindow(Window_t wid);
133 virtual void MoveWindow(Window_t wid, Int_t x, Int_t y);
134 virtual void MoveResizeWindow(Window_t wid, Int_t x, Int_t y, UInt_t w, UInt_t h);
135 virtual void ResizeWindow(Window_t wid, UInt_t w, UInt_t h);
136 virtual void IconifyWindow(Window_t wid);
137 virtual void TranslateCoordinates(Window_t src, Window_t dest, Int_t src_x,Int_t src_y,
138 Int_t &dest_x, Int_t &dest_y, Window_t &child);
139 virtual void GetWindowSize(Drawable_t wid, Int_t &x, Int_t &y, UInt_t &w, UInt_t &h);
142 virtual void SetWindowBackground(Window_t wid, ULong_t color);
143 virtual void SetWindowBackgroundPixmap(Window_t wid, Pixmap_t pxm);
145 virtual Window_t GetParent(Window_t wid)
const;
147 virtual void SetWindowName(Window_t wid,
char *name);
148 virtual void SetIconName(Window_t wid,
char *name);
149 virtual void SetIconPixmap(Window_t wid, Pixmap_t pix);
150 virtual void SetClassHints(Window_t wid,
char *className,
char *resourceName);
152 virtual void ShapeCombineMask(Window_t wid, Int_t x, Int_t y, Pixmap_t mask);
159 virtual void SetMWMHints(Window_t winID, UInt_t value, UInt_t decorators, UInt_t inputMode);
160 virtual void SetWMPosition(Window_t winID, Int_t x, Int_t y);
161 virtual void SetWMSize(Window_t winID, UInt_t w, UInt_t h);
162 virtual void SetWMSizeHints(Window_t winID, UInt_t wMin, UInt_t hMin, UInt_t wMax, UInt_t hMax, UInt_t wInc, UInt_t hInc);
163 virtual void SetWMState(Window_t winID, EInitialState state);
164 virtual void SetWMTransientHint(Window_t winID, Window_t mainWinID);
171 void DrawLineAux(Drawable_t wid,
const GCValues_t &gcVals, Int_t x1, Int_t y1, Int_t x2, Int_t y2);
172 virtual void DrawLine(Drawable_t wid, GContext_t gc, Int_t x1, Int_t y1, Int_t x2, Int_t y2);
173 void DrawSegmentsAux(Drawable_t wid,
const GCValues_t &gcVals,
const Segment_t *segments, Int_t nSegments);
174 virtual void DrawSegments(Drawable_t wid, GContext_t gc, Segment_t *segments, Int_t nSegments);
175 void DrawRectangleAux(Drawable_t wid,
const GCValues_t &gcVals, Int_t x, Int_t y, UInt_t w, UInt_t h);
176 virtual void DrawRectangle(Drawable_t wid, GContext_t gc, Int_t x, Int_t y, UInt_t w, UInt_t h);
177 void FillRectangleAux(Drawable_t wid,
const GCValues_t &gcVals, Int_t x, Int_t y, UInt_t w, UInt_t h);
178 virtual void FillRectangle(Drawable_t wid, GContext_t gc, Int_t x, Int_t y, UInt_t w, UInt_t h);
179 void FillPolygonAux(Window_t wid,
const GCValues_t &gcVals,
const Point_t *polygon, Int_t nPoints) ;
180 virtual void FillPolygon(Window_t wid, GContext_t gc, Point_t *polygon, Int_t nPoints);
181 void CopyAreaAux(Drawable_t src, Drawable_t dst,
const GCValues_t &gc, Int_t srcX, Int_t srcY, UInt_t width,
182 UInt_t height, Int_t dstX, Int_t dstY);
183 virtual void CopyArea(Drawable_t src, Drawable_t dst, GContext_t gc, Int_t srcX, Int_t srcY, UInt_t width,
184 UInt_t height, Int_t dstX, Int_t dstY);
185 void DrawStringAux(Drawable_t wid,
const GCValues_t &gc, Int_t x, Int_t y,
const char *s, Int_t len);
186 virtual void DrawString(Drawable_t wid, GContext_t gc, Int_t x, Int_t y,
const char *s, Int_t len);
187 void ClearAreaAux(Window_t wid, Int_t x, Int_t y, UInt_t w, UInt_t h);
188 virtual void ClearArea(Window_t wid, Int_t x, Int_t y, UInt_t w, UInt_t h);
189 virtual void ClearWindow(Window_t wid);
197 virtual Int_t OpenPixmap(UInt_t w, UInt_t h);
198 virtual Int_t ResizePixmap(Int_t wid, UInt_t w, UInt_t h);
199 virtual void SelectPixmap(Int_t qpixid);
200 virtual void CopyPixmap(Int_t wid, Int_t xpos, Int_t ypos);
201 virtual void ClosePixmap();
203 virtual Pixmap_t CreatePixmap(Drawable_t wid, UInt_t w, UInt_t h);
204 virtual Pixmap_t CreatePixmap(Drawable_t wid,
const char *bitmap, UInt_t width, UInt_t height,
205 ULong_t foregroundColor, ULong_t backgroundColor,
207 virtual Pixmap_t CreatePixmapFromData(
unsigned char *bits, UInt_t width, UInt_t height);
208 virtual Pixmap_t CreateBitmap(Drawable_t wid,
const char *bitmap,
209 UInt_t width, UInt_t height);
210 void DeletePixmapAux(Pixmap_t pixmapID);
211 virtual void DeletePixmap(Pixmap_t pixmapID);
214 virtual Int_t AddPixmap(ULong_t pixid, UInt_t w, UInt_t h);
215 virtual unsigned char *GetColorBits(Drawable_t wid, Int_t x, Int_t y, UInt_t w, UInt_t h);
222 virtual Drawable_t CreateImage(UInt_t width, UInt_t height);
223 virtual void GetImageSize(Drawable_t wid, UInt_t &width, UInt_t &height);
224 virtual void PutPixel(Drawable_t wid, Int_t x, Int_t y, ULong_t pixel);
225 virtual void PutImage(Drawable_t wid, GContext_t gc, Drawable_t img, Int_t dx, Int_t dy,
226 Int_t x, Int_t y, UInt_t w, UInt_t h);
227 virtual void DeleteImage(Drawable_t img);
233 virtual void GrabButton(Window_t wid, EMouseButton button, UInt_t modifier,
234 UInt_t evmask, Window_t confine, Cursor_t cursor,
235 Bool_t grab = kTRUE);
236 virtual void GrabPointer(Window_t wid, UInt_t evmask, Window_t confine,
237 Cursor_t cursor, Bool_t grab = kTRUE,
238 Bool_t owner_events = kTRUE);
239 virtual void ChangeActivePointerGrab(Window_t, UInt_t, Cursor_t);
245 virtual void SetKeyAutoRepeat(Bool_t on = kTRUE);
246 virtual void GrabKey(Window_t wid, Int_t keycode, UInt_t modifier, Bool_t grab = kTRUE);
247 virtual Int_t KeysymToKeycode(UInt_t keysym);
248 virtual Window_t GetInputFocus();
249 virtual void SetInputFocus(Window_t wid);
250 virtual void LookupString(Event_t *event,
char *buf, Int_t buflen, UInt_t &keysym);
256 virtual FontStruct_t LoadQueryFont(
const char *font_name);
257 virtual FontH_t GetFontHandle(FontStruct_t fs);
258 virtual void DeleteFont(FontStruct_t fs);
259 virtual Bool_t HasTTFonts()
const;
260 virtual Int_t TextWidth(FontStruct_t font,
const char *s, Int_t len);
261 virtual void GetFontProperties(FontStruct_t font, Int_t &max_ascent, Int_t &max_descent);
262 virtual FontStruct_t GetFontStruct(FontH_t fh);
263 virtual void FreeFontStruct(FontStruct_t fs);
264 virtual char **ListFonts(
const char *fontname, Int_t max, Int_t &count);
265 virtual void FreeFontNames(
char **fontlist);
271 virtual Bool_t ParseColor(Colormap_t cmap,
const char *cname, ColorStruct_t &color);
272 virtual Bool_t AllocColor(Colormap_t cmap, ColorStruct_t &color);
273 virtual void QueryColor(Colormap_t cmap, ColorStruct_t &color);
274 virtual void FreeColor(Colormap_t cmap, ULong_t pixel);
275 virtual ULong_t GetPixel(Color_t cindex);
276 virtual void GetPlanes(Int_t &nplanes);
277 virtual void GetRGB(Int_t index, Float_t &r, Float_t &g, Float_t &b);
278 virtual void SetRGB(Int_t cindex, Float_t r, Float_t g, Float_t b);
279 virtual Colormap_t GetColormap()
const;
286 virtual GContext_t CreateGC(Drawable_t wid, GCValues_t *gval);
287 virtual void SetForeground(GContext_t gc, ULong_t foreground);
288 virtual void ChangeGC(GContext_t gc, GCValues_t *gval);
289 virtual void CopyGC(GContext_t org, GContext_t dest, Mask_t mask);
290 virtual void GetGCValues(GContext_t gc, GCValues_t &gval);
291 virtual void DeleteGC(GContext_t gc);
297 virtual Cursor_t CreateCursor(ECursor cursor);
298 virtual void SetCursor(Window_t wid, Cursor_t curid);
299 virtual void SetCursor(Int_t win, ECursor cursor);
300 virtual void QueryPointer(Int_t &x, Int_t &y);
301 virtual void QueryPointer(Window_t wid, Window_t &rootw, Window_t &childw,
302 Int_t &root_x, Int_t &root_y, Int_t &win_x,
303 Int_t &win_y, UInt_t &mask);
311 virtual Double_t GetOpenGLScalingFactor();
312 virtual Window_t CreateOpenGLWindow(Window_t parentID, UInt_t width, UInt_t height,
const std::vector<std::pair<UInt_t, Int_t> > &format);
313 virtual Handle_t CreateOpenGLContext(Window_t windowID, Handle_t sharedContext);
314 virtual void CreateOpenGLContext(Int_t wid);
315 virtual Bool_t MakeOpenGLContextCurrent(Handle_t ctx, Window_t windowID);
316 virtual Handle_t GetCurrentOpenGLContext();
317 virtual void FlushOpenGLBuffer(Handle_t ctxID);
319 virtual void DeleteOpenGLContext(Int_t ctxID);
325 virtual void SetDoubleBuffer(Int_t wid, Int_t mode);
326 virtual void SetDoubleBufferOFF();
327 virtual void SetDoubleBufferON();
328 virtual void SetDrawMode(EDrawMode mode);
334 virtual void SendEvent(Window_t wid, Event_t *ev);
335 virtual void NextEvent(Event_t &event);
336 virtual Int_t EventsPending();
337 virtual Bool_t CheckEvent(Window_t wid, EGEventType type, Event_t &ev);
338 virtual Handle_t GetNativeEvent()
const;
346 virtual Atom_t InternAtom(
const char *atom_name, Bool_t only_if_exist);
348 virtual void SetPrimarySelectionOwner(Window_t wid);
349 virtual Bool_t SetSelectionOwner(Window_t windowID, Atom_t &selectionID);
350 virtual Window_t GetPrimarySelectionOwner();
352 virtual void ConvertPrimarySelection(Window_t wid, Atom_t clipboard, Time_t when);
353 virtual void ConvertSelection(Window_t, Atom_t&, Atom_t&, Atom_t&, Time_t&);
354 virtual Int_t GetProperty(Window_t, Atom_t, Long_t, Long_t, Bool_t, Atom_t,
355 Atom_t*, Int_t*, ULong_t*, ULong_t*,
unsigned char**);
356 virtual void GetPasteBuffer(Window_t wid, Atom_t atom, TString &text, Int_t &nchar,
359 virtual void ChangeProperty(Window_t wid, Atom_t property, Atom_t type,
360 UChar_t *data, Int_t len);
361 virtual void ChangeProperties(Window_t wid, Atom_t property, Atom_t type,
362 Int_t format, UChar_t *data, Int_t len);
363 virtual void DeleteProperty(Window_t, Atom_t&);
365 virtual void SetDNDAware(Window_t, Atom_t *);
366 virtual Bool_t IsDNDAware(Window_t win, Atom_t *typelist);
368 virtual void SetTypeList(Window_t win, Atom_t prop, Atom_t *typelist);
370 virtual Window_t FindRWindow(Window_t win, Window_t dragwin, Window_t input,
int x,
int y,
int maxd);
376 virtual UInt_t ExecCommand(TGWin32Command *code);
377 virtual void GetCharacterUp(Float_t &chupx, Float_t &chupy);
379 virtual Int_t GetDoubleBuffer(Int_t wid);
381 virtual Pixmap_t ReadGIF(Int_t x0, Int_t y0,
const char *file, Window_t wid);
382 virtual Int_t RequestLocator(Int_t mode, Int_t ctyp, Int_t &x, Int_t &y);
383 virtual Int_t RequestString(Int_t x, Int_t y,
char *text);
385 virtual void SetCharacterUp(Float_t chupx, Float_t chupy);
386 virtual void SetClipOFF(Int_t wid);
387 virtual void SetClipRegion(Int_t wid, Int_t x, Int_t y, UInt_t w, UInt_t h);
389 virtual void SetTextMagnitude(Float_t mgn);
391 virtual void Sync(Int_t mode);
392 virtual void Warp(Int_t ix, Int_t iy, Window_t wid);
393 virtual Int_t WriteGIF(
char *name);
394 virtual void WritePixmap(Int_t wid, UInt_t w, UInt_t h,
char *pxname);
396 virtual Bool_t NeedRedraw(ULong_t tgwindow, Bool_t force);
399 virtual Bool_t CreatePictureFromFile(Drawable_t wid,
const char *filename,
400 Pixmap_t &pict, Pixmap_t &pict_mask,
401 PictureAttributes_t &attr);
402 virtual Bool_t CreatePictureFromData(Drawable_t wid,
char **data,
403 Pixmap_t &pict, Pixmap_t &pict_mask,
404 PictureAttributes_t &attr);
405 virtual Bool_t ReadPictureDataFromFile(
const char *filename,
char ***ret_data);
406 virtual void DeletePictureData(
void *data);
407 virtual void SetDashes(GContext_t gc, Int_t offset,
const char *dash_list, Int_t n);
410 virtual void Bell(Int_t percent);
412 virtual void WMDeleteNotify(Window_t wid);
414 virtual void SetClipRectangles(GContext_t gc, Int_t x, Int_t y, Rectangle_t *recs, Int_t n);
415 virtual Region_t CreateRegion();
416 virtual void DestroyRegion(Region_t reg);
417 virtual void UnionRectWithRegion(Rectangle_t *rect, Region_t src, Region_t dest);
418 virtual Region_t PolygonRegion(Point_t *points, Int_t np, Bool_t winding);
419 virtual void UnionRegion(Region_t rega, Region_t regb, Region_t result);
420 virtual void IntersectRegion(Region_t rega, Region_t regb, Region_t result);
421 virtual void SubtractRegion(Region_t rega, Region_t regb, Region_t result);
422 virtual void XorRegion(Region_t rega, Region_t regb, Region_t result);
423 virtual Bool_t EmptyRegion(Region_t reg);
424 virtual Bool_t PointInRegion(Int_t x, Int_t y, Region_t reg);
425 virtual Bool_t EqualRegion(Region_t rega, Region_t regb);
426 virtual void GetRegionBox(Region_t reg, Rectangle_t *rect);
429 virtual Bool_t IsCmdThread()
const {
return kTRUE; }
432 ROOT::MacOSX::X11::EventTranslator *GetEventTranslator()
const;
433 ROOT::MacOSX::X11::CommandBuffer *GetCommandBuffer()
const;
437 Bool_t IsCocoaDraw()
const;
440 void *GetCurrentContext();
442 Drawable_t fSelectedDrawable;
444 std::unique_ptr<ROOT::MacOSX::Details::CocoaPrivate> fPimpl;
451 bool MakeProcessForeground();
452 Atom_t FindAtom(
const std::string &atomName,
bool addIfNotFound);
453 void SetApplicationIcon();
455 bool fForegroundProcess;
456 std::vector<GCValues_t> fX11Contexts;
458 ROOT::MacOSX::X11::name_to_atom_map fNameToAtom;
459 std::vector<std::string> fAtomToName;
461 std::map<Atom_t, Window_t> fSelectionOwners;
462 typedef std::map<Atom_t, Window_t>::iterator selection_iterator;
465 mutable bool fDisplayShapeChanged;
466 mutable ROOT::MacOSX::X11::Rectangle fDisplayRect;
469 static Atom_t fgDeleteWindowAtom;
473 TGCocoa(
const TGCocoa &rhs);
474 TGCocoa &operator = (
const TGCocoa &rhs);
476 ClassDef(TGCocoa, 0);