gdkprivate-x11.inc 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243
  1. {%MainUnit ../gdk2x.pas}
  2. {$IFDEF read_forward_definitions}
  3. // remove this TXRenderColor, when it has been added to the X11 bindings of FPC
  4. TXRenderColor = record
  5. red: word;
  6. green: word;
  7. blue: word;
  8. alpha: word;
  9. end;
  10. PPXRectangle = ^PXRectangle;
  11. {$ENDIF read_forward_definitions}
  12. {$IFDEF read_interface_rest}
  13. type
  14. PGdkGCX11 = ^TGdkGCX11;
  15. TGdkGCX11 = record
  16. parent_instance : TGdkGC;
  17. xgc : TGC;
  18. screen : PGdkScreen;
  19. clip_region : PGdkRegion;
  20. dirty_mask : guint;
  21. fg_picture : TPicture;
  22. fg_picture_color : TXRenderColor;
  23. fg_pixel : gulong;
  24. end;
  25. PGdkGCX11Class = ^TGdkGCX11Class;
  26. TGdkGCX11Class = record
  27. parent_class : TGdkGCClass;
  28. end;
  29. PGdkCursorPrivate = ^TGdkCursorPrivate;
  30. TGdkCursorPrivate = record
  31. cursor : TGdkCursor;
  32. xcursor : TCursor;
  33. screen : PGdkScreen;
  34. end;
  35. PGdkVisualPrivate = ^TGdkVisualPrivate;
  36. TGdkVisualPrivate = record
  37. visual : TGdkVisual;
  38. xvisual : PVisual;
  39. screen : PGdkScreen;
  40. end;
  41. // Private function GDK_TYPE_GC_X11 : GType;
  42. function GDK_GC_X11(obj : pointer) : PGdkGCX11;
  43. function GDK_GC_X11_CLASS(klass : pointer) : PGdkGCX11Class;
  44. // Private function GDK_IS_GC_X11(obj : pointer) : boolean;
  45. // Private function GDK_IS_GC_X11_CLASS(klass : pointer) : boolean;
  46. // Private function GDK_GC_X11_GET_CLASS(obj : pointer) : PGdkGCX11Class;
  47. procedure _gdk_xid_table_insert(display:PGdkDisplay; xid:PXID; data:gpointer);cdecl;external;
  48. procedure _gdk_xid_table_remove(display:PGdkDisplay; xid:TXID);cdecl;external;
  49. function _gdk_send_xevent(display:PGdkDisplay; window:TWindow; propagate:gboolean; event_mask:glong; event_send:PXEvent):gint;cdecl;external;
  50. // Private function _gdk_gc_x11_get_type:GType;cdecl;external;
  51. {$ifdef HAVE_XFT}
  52. function _gdk_x11_have_render(display:PGdkDisplay):gboolean;cdecl;external;
  53. function _gdk_x11_gc_get_fg_picture(gc:PGdkGC):TPicture;cdecl;external;
  54. {$endif HAVE_XFT}
  55. function _gdk_x11_gc_new(drawable:PGdkDrawable; values:PGdkGCValues; values_mask:TGdkGCValuesMask):PGdkGC;cdecl;external;
  56. function gdk_colormap_lookup(xcolormap:TColormap):PGdkColormap;cdecl;external;
  57. function gdk_visual_lookup(xvisual:PVisual):PGdkVisual;cdecl;external;
  58. procedure gdk_window_add_colormap_windows(window:PGdkWindow);cdecl;external;
  59. function _gdk_x11_copy_to_image(drawable:PGdkDrawable; image:PGdkImage; src_x:gint; src_y:gint; dest_x:gint;
  60. dest_y:gint; width:gint; height:gint):PGdkImage;cdecl;external;
  61. function _gdk_x11_image_get_shm_pixmap(image:PGdkImage):TPixmap;cdecl;external;
  62. { Routines from gdkgeometry-x11.c }
  63. procedure _gdk_window_init_position(window:PGdkWindow);cdecl;external;
  64. procedure _gdk_window_move_resize_child(window:PGdkWindow; x:gint; y:gint; width:gint; height:gint);cdecl;external;
  65. procedure _gdk_window_process_expose(window:PGdkWindow; serial:gulong; area:PGdkRectangle);cdecl;external;
  66. procedure _gdk_selection_window_destroyed(window:PGdkWindow);cdecl;external;
  67. function _gdk_selection_filter_clear_event(event:PXSelectionClearEvent):gboolean;cdecl;external;
  68. procedure _gdk_region_get_xrectangles(region:PGdkRegion; x_offset:gint; y_offset:gint; rects:PPXRectangle; n_rects:Pgint);cdecl;external;
  69. function _gdk_moveresize_handle_event(event:PXEvent):gboolean;cdecl;external;
  70. function _gdk_moveresize_configure_done(display:PGdkDisplay; window:PGdkWindow):gboolean;cdecl;external;
  71. procedure _gdk_keymap_state_changed(display:PGdkDisplay);cdecl;external;
  72. function _gdk_x11_get_group_for_state(display:PGdkDisplay; state:TGdkModifierType):gint;cdecl;external;
  73. //function _gdk_x11_gc_flush(gc:PGdkGC):TGC;cdecl;external;
  74. procedure _gdk_x11_initialize_locale;cdecl;external;
  75. procedure _gdk_xgrab_check_unmap(window:PGdkWindow; serial:gulong);cdecl;external;
  76. procedure _gdk_xgrab_check_destroy(window:PGdkWindow);cdecl;external;
  77. function _gdk_x11_display_is_root_window(display:PGdkDisplay; xroot_window:TWindow):gboolean;cdecl;external;
  78. procedure _gdk_x11_events_init_screen(screen:PGdkScreen);cdecl;external;
  79. procedure _gdk_events_init(display:PGdkDisplay);cdecl;external;
  80. procedure _gdk_windowing_window_init(screen:PGdkScreen);cdecl;external;
  81. procedure _gdk_visual_init(screen:PGdkScreen);cdecl;external;
  82. procedure _gdk_dnd_init(display:PGdkDisplay);cdecl;external;
  83. procedure _gdk_windowing_image_init(display:PGdkDisplay);cdecl;external;
  84. procedure _gdk_input_init(display:PGdkDisplay);cdecl;external;
  85. var
  86. _gdk_x11_drawable_class : TGdkDrawableClass;cvar;external;
  87. _gdk_use_xshm : gboolean;cvar;external;
  88. (* Const before type ignored *)
  89. _gdk_nenvent_masks : longint;cvar;external;
  90. (* Const before type ignored *)
  91. _gdk_event_mask_table : array of longint;cvar;external;
  92. _gdk_selection_property : TGdkAtom;cvar;external;
  93. _gdk_synchronize : gboolean;cvar;external;
  94. function GDK_PIXMAP_SCREEN(pix : pointer) : PGdkScreen;
  95. function GDK_PIXMAP_DISPLAY(pix : pointer) : PGdkDisplay;
  96. function GDK_PIXMAP_XROOTWIN(pix : pointer) : TWindow;
  97. function GDK_DRAWABLE_DISPLAY(win : PGdkDrawable) : PGdkDisplay;
  98. function GDK_DRAWABLE_SCREEN(win : PGdkDrawable) : PGdkScreen;
  99. function GDK_DRAWABLE_XROOTWIN(win : PGdkDrawable) : TWindow;
  100. function GDK_SCREEN_DISPLAY(screen : PGdkScreen) : PGdkDisplay;
  101. function GDK_SCREEN_XROOTWIN(screen : PGdkScreen) : TWindow;
  102. function GDK_WINDOW_SCREEN(win : PGdkDrawable) : PGdkScreen;
  103. function GDK_WINDOW_DISPLAY(win : PGdkDrawable) : PGdkDisplay;
  104. function GDK_WINDOW_XROOTWIN(win : PGdkDrawable) : TWindow;
  105. function GDK_GC_DISPLAY(gc : PGdkGC) : PGdkDisplay;
  106. {$ENDIF read_interface_rest}
  107. //------------------------------------------------------------------------------
  108. {$IFDEF read_implementation}
  109. { Private
  110. function GDK_TYPE_GC_X11 : GType;
  111. begin
  112. GDK_TYPE_GC_X11:=_gdk_gc_x11_get_type;
  113. end;}
  114. function GDK_GC_X11(obj : pointer) : PGdkGCX11;
  115. begin
  116. GDK_GC_X11:=PGdkGCX11(obj);
  117. //GDK_GC_X11:=PGdkGCX11(G_TYPE_CHECK_INSTANCE_CAST(obj,GDK_TYPE_GC_X11));
  118. end;
  119. function GDK_GC_X11_CLASS(klass : pointer) : PGdkGCX11Class;
  120. begin
  121. GDK_GC_X11_CLASS:=PGdkGCX11Class(klass);
  122. //GDK_GC_X11_CLASS:=PGdkGCX11Class(G_TYPE_CHECK_CLASS_CAST(klass,GDK_TYPE_GC_X11));
  123. end;
  124. { Private
  125. function GDK_IS_GC_X11(obj : pointer) : boolean;
  126. begin
  127. GDK_IS_GC_X11:=G_TYPE_CHECK_INSTANCE_TYPE(obj,GDK_TYPE_GC_X11);
  128. end;
  129. function GDK_IS_GC_X11_CLASS(klass : pointer) : boolean;
  130. begin
  131. GDK_IS_GC_X11_CLASS:=G_TYPE_CHECK_CLASS_TYPE(klass,GDK_TYPE_GC_X11);
  132. end;
  133. function GDK_GC_X11_GET_CLASS(obj : pointer) : PGdkGCX11Class;
  134. begin
  135. GDK_GC_X11_GET_CLASS:=PGdkGCX11Class(G_TYPE_INSTANCE_GET_CLASS(obj,GDK_TYPE_GC_X11));
  136. end; }
  137. function GDK_PIXMAP_SCREEN(pix : pointer) : PGdkScreen;
  138. begin
  139. GDK_PIXMAP_SCREEN:=(GDK_DRAWABLE_IMPL_X11((PGdkPixmapObject(pix))^.impl))^.screen;
  140. end;
  141. function GDK_PIXMAP_DISPLAY(pix : pointer) : PGdkDisplay;
  142. begin
  143. GDK_PIXMAP_DISPLAY:=(GDK_SCREEN_X11(GDK_PIXMAP_SCREEN(pix)))^.display;
  144. end;
  145. function GDK_PIXMAP_XROOTWIN(pix : pointer) : TWindow;
  146. begin
  147. GDK_PIXMAP_XROOTWIN:=(GDK_SCREEN_X11(GDK_PIXMAP_SCREEN(pix)))^.xroot_window;
  148. end;
  149. function GDK_DRAWABLE_DISPLAY(win : PGdkDrawable) : PGdkDisplay;
  150. var
  151. if_local1 : PGdkDisplay;
  152. begin
  153. if GDK_IS_WINDOW(win) then
  154. if_local1:=GDK_WINDOW_DISPLAY(win)
  155. else
  156. if_local1:=GDK_PIXMAP_DISPLAY(win);
  157. GDK_DRAWABLE_DISPLAY:=if_local1;
  158. end;
  159. function GDK_DRAWABLE_SCREEN(win : PGdkDrawable) : PGdkScreen;
  160. var
  161. if_local1 : PGdkScreen;
  162. begin
  163. if GDK_IS_WINDOW(win) then
  164. if_local1:=GDK_WINDOW_SCREEN(win)
  165. else
  166. if_local1:=GDK_PIXMAP_SCREEN(win);
  167. GDK_DRAWABLE_SCREEN:=if_local1;
  168. end;
  169. function GDK_DRAWABLE_XROOTWIN(win : PGdkDrawable) : TWindow;
  170. var
  171. if_local1 : TWindow;
  172. begin
  173. if GDK_IS_WINDOW(win) then
  174. if_local1:=GDK_WINDOW_XROOTWIN(win)
  175. else
  176. if_local1:=GDK_PIXMAP_XROOTWIN(win);
  177. GDK_DRAWABLE_XROOTWIN:=if_local1;
  178. end;
  179. function GDK_SCREEN_DISPLAY(screen : PGdkScreen) : PGdkDisplay;
  180. begin
  181. GDK_SCREEN_DISPLAY:=(GDK_SCREEN_X11(screen))^.display;
  182. end;
  183. function GDK_SCREEN_XROOTWIN(screen : PGdkScreen) : TWindow;
  184. begin
  185. GDK_SCREEN_XROOTWIN:=(GDK_SCREEN_X11(screen))^.xroot_window;
  186. end;
  187. function GDK_WINDOW_SCREEN(win : PGdkDrawable) : PGdkScreen;
  188. begin
  189. GDK_WINDOW_SCREEN:=(GDK_DRAWABLE_IMPL_X11((PGdkWindowObject(win))^.impl))^.screen;
  190. end;
  191. function GDK_WINDOW_DISPLAY(win : PGdkDrawable) : PGdkDisplay;
  192. begin
  193. GDK_WINDOW_DISPLAY:=(GDK_SCREEN_X11(GDK_WINDOW_SCREEN(win)))^.display;
  194. end;
  195. function GDK_WINDOW_XROOTWIN(win : PGdkDrawable) : TWindow;
  196. begin
  197. GDK_WINDOW_XROOTWIN:=(GDK_SCREEN_X11(GDK_WINDOW_SCREEN(win)))^.xroot_window;
  198. end;
  199. function GDK_GC_DISPLAY(gc : PGdkGC) : PGdkDisplay;
  200. begin
  201. GDK_GC_DISPLAY:=GDK_SCREEN_DISPLAY((GDK_GC_X11(gc))^.screen);
  202. end;
  203. {$ENDIF read_implementation}