gdkprivate.pp 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340
  1. {
  2. $Id$
  3. }
  4. {****************************************************************************
  5. Interface
  6. ****************************************************************************}
  7. {$ifdef read_interface}
  8. type
  9. PDisplay = pointer;
  10. PXImage = pointer;
  11. PVisual = pointer;
  12. TWindow = longint;
  13. TCursor = longint;
  14. TAtom = longint;
  15. TGC = longint;
  16. TColorMap = longint;
  17. TXStandardColorMap = array [0..9] of longint;
  18. TVisualID = longint;
  19. PXEvent = pointer;
  20. TRegion = pointer;
  21. TXID = longint;
  22. Time_T = longint;
  23. PGdkWindowPrivate = ^TGdkWindowPrivate;
  24. TGdkWindowPrivate = record
  25. window : TGdkWindow;
  26. parent : PGdkWindow;
  27. xwindow : TWindow;
  28. xdisplay : PDisplay;
  29. x : gint16;
  30. y : gint16;
  31. width : guint16;
  32. height : guint16;
  33. resize_count : guint8;
  34. window_type : guint8;
  35. ref_count : guint;
  36. flag0 : {$ifdef win32}longint{$else}word{$endif};
  37. extension_events : gint;
  38. filters : PGList;
  39. colormap : PGdkColormap;
  40. children : PGList;
  41. end;
  42. const
  43. bm_TGdkWindowPrivate_destroyed = $3;
  44. bp_TGdkWindowPrivate_destroyed = 0;
  45. bm_TGdkWindowPrivate_mapped = $4;
  46. bp_TGdkWindowPrivate_mapped = 2;
  47. bm_TGdkWindowPrivate_guffaw_gravity = $8;
  48. bp_TGdkWindowPrivate_guffaw_gravity = 3;
  49. function destroyed(var a : TGdkWindowPrivate) : guint;
  50. procedure set_destroyed(var a : TGdkWindowPrivate; __destroyed : guint);
  51. function mapped(var a : TGdkWindowPrivate) : guint;
  52. procedure set_mapped(var a : TGdkWindowPrivate; __mapped : guint);
  53. function guffaw_gravity(var a : TGdkWindowPrivate) : guint;
  54. procedure set_guffaw_gravity(var a : TGdkWindowPrivate; __guffaw_gravity : guint);
  55. type
  56. PGdkImagePrivate = ^TGdkImagePrivate;
  57. TGdkImagePrivate = record
  58. image : TGdkImage;
  59. ximage : PXImage;
  60. xdisplay : PDisplay;
  61. x_shm_info : gpointer;
  62. image_put : procedure (window:PGdkDrawable; gc:PGdkGC; image:PGdkImage; xsrc:gint; ysrc:gint; xdest:gint; ydest:gint; width:gint; height:gint);cdecl;
  63. end;
  64. PGdkGCPrivate = ^TGdkGCPrivate;
  65. TGdkGCPrivate = record
  66. gc : TGdkGC;
  67. xgc : TGC;
  68. xdisplay : PDisplay;
  69. ref_count : guint;
  70. end;
  71. TGdkColorInfoFlags = (GDK_COLOR_WRITEABLE := 1 shl 0);
  72. PGdkColorInfo = ^TGdkColorInfo;
  73. TGdkColorInfo = record
  74. flags : TGdkColorInfoFlags;
  75. ref_count : guint;
  76. end;
  77. PGdkColormapPrivate = ^TGdkColormapPrivate;
  78. TGdkColormapPrivate = record
  79. colormap : TGdkColormap;
  80. xcolormap : TColormap;
  81. xdisplay : PDisplay;
  82. visual : PGdkVisual;
  83. private_val : gint;
  84. hash : PGHashTable;
  85. info : PGdkColorInfo;
  86. last_sync_time : time_t;
  87. ref_count : guint;
  88. end;
  89. PGdkVisualPrivate = ^TGdkVisualPrivate;
  90. TGdkVisualPrivate = record
  91. visual : TGdkVisual;
  92. xvisual : PVisual;
  93. end;
  94. PGdkFontPrivate = ^TGdkFontPrivate;
  95. TGdkFontPrivate = record
  96. font : TGdkFont;
  97. xfont : gpointer;
  98. xdisplay : PDisplay;
  99. ref_count : guint;
  100. names : PGSList;
  101. end;
  102. PGdkCursorPrivate = ^TGdkCursorPrivate;
  103. TGdkCursorPrivate = record
  104. cursor : TGdkCursor;
  105. xcursor : TCursor;
  106. xdisplay : PDisplay;
  107. end;
  108. PGdkDndCursorInfo = ^TGdkDndCursorInfo;
  109. TGdkDndCursorInfo = record
  110. gdk_cursor_dragdefault : TCursor;
  111. gdk_cursor_dragok : TCursor;
  112. drag_pm_default : PGdkWindow;
  113. drag_pm_ok : PGdkWindow;
  114. default_hotspot : TGdkPoint;
  115. ok_hotspot : TGdkPoint;
  116. xids : PGList;
  117. end;
  118. PGdkDndGlobals = ^TGdkDndGlobals;
  119. TGdkDndGlobals = record
  120. gdk_XdeEnter : TGdkAtom;
  121. gdk_XdeLeave : TGdkAtom;
  122. gdk_XdeRequest : TGdkAtom;
  123. gdk_XdeDataAvailable : TGdkAtom;
  124. gdk_XdeDataShow : TGdkAtom;
  125. gdk_XdeCancel : TGdkAtom;
  126. gdk_XdeTypelist : TGdkAtom;
  127. c : PGdkDndCursorInfo;
  128. drag_startwindows : PPGdkWindow;
  129. drag_numwindows : guint;
  130. drag_really : gboolean;
  131. drag_perhaps : gboolean;
  132. dnd_grabbed : gboolean;
  133. dnd_drag_target : TWindow;
  134. drag_dropcoords : TGdkPoint;
  135. dnd_drag_start : TGdkPoint;
  136. dnd_drag_oldpos : TGdkPoint;
  137. dnd_drag_dropzone : TGdkRectangle;
  138. real_sw : PGdkWindowPrivate;
  139. dnd_drag_curwin : TWindow;
  140. last_drop_time : Time_T;
  141. end;
  142. PGdkEventFilter = ^TGdkEventFilter;
  143. TGdkEventFilter = record
  144. thefunction : TGdkFilterFunc;
  145. data : gpointer;
  146. end;
  147. PGdkClientFilter = ^TGdkClientFilter;
  148. TGdkClientFilter = record
  149. thetype : TGdkAtom;
  150. thefunction : TGdkFilterFunc;
  151. data : gpointer;
  152. end;
  153. {$ifdef USE_XIM}
  154. PGdkICPrivate = ^TGdkICPrivate;
  155. TGdkICPrivate = record
  156. xic : XIC;
  157. attr : PGdkICAttr;
  158. mask : TGdkICAttributesType;
  159. end;
  160. {$endif}
  161. PGdkColorContextPrivate = ^TGdkColorContextPrivate;
  162. TGdkColorContextPrivate = record
  163. color_context : TGdkColorContext;
  164. xdisplay : PDisplay;
  165. std_cmap : TXStandardColormap;
  166. end;
  167. PGdkRegionPrivate = ^TGdkRegionPrivate;
  168. TGdkRegionPrivate = record
  169. region : TGdkRegion;
  170. xregion : TRegion;
  171. end;
  172. TGdkDebugFlag = (GDK_DEBUG_MISC := 1 shl 0,GDK_DEBUG_EVENTS := 1 shl 1,
  173. GDK_DEBUG_DND := 1 shl 2,GDK_DEBUG_COLOR_CONTEXT := 1 shl 3,
  174. GDK_DEBUG_XIM := 1 shl 4);
  175. procedure gdk_xid_table_insert(xid:TXID; data:gpointer);cdecl;external gdkdll name 'gdk_xid_table_insert';
  176. function gdk_xid_table_lookup(xid:TXID):gpointer;cdecl;external gdkdll name 'gdk_xid_table_lookup';
  177. function GDK_window_lookup(xid : longint) : PGdkWindow;
  178. function GDK_pixmap_lookup(xid : longint) : PGdkPixmap;
  179. function GDK_font_lookup(xid : longint) : PGdkFont;
  180. {$ifndef os2}
  181. var
  182. gdk_selection_property : TAtom;external gdkdll name 'gdk_selection_property';
  183. gdk_progclass : Pgchar;external gdkdll name 'gdk_progclass';
  184. gdk_error_code : gint;external gdkdll name 'gdk_error_code';
  185. gdk_null_window_warnings : gint;external gdkdll name 'gdk_null_window_warnings';
  186. {$endif}
  187. {$ifndef gtkwin}
  188. procedure gdk_events_init;cdecl;external gdkdll name 'gdk_events_init';
  189. procedure gdk_window_init;cdecl;external gdkdll name 'gdk_window_init';
  190. procedure gdk_visual_init;cdecl;external gdkdll name 'gdk_visual_init';
  191. procedure gdk_dnd_init;cdecl;external gdkdll name 'gdk_dnd_init';
  192. procedure gdk_image_init;cdecl;external gdkdll name 'gdk_image_init';
  193. procedure gdk_image_exit;cdecl;external gdkdll name 'gdk_image_exit';
  194. function gdk_colormap_lookup(xcolormap:TColormap):PGdkColormap;cdecl;external gdkdll name 'gdk_colormap_lookup';
  195. function gdk_visual_lookup(xvisual:pVisual):PGdkVisual;cdecl;external gdkdll name 'gdk_visual_lookup';
  196. procedure gdk_window_add_colormap_windows(window:PGdkWindow);cdecl;external gdkdll name 'gdk_window_add_colormap_windows';
  197. procedure gdk_window_destroy_notify(window:PGdkWindow);cdecl;external gdkdll name 'gdk_window_destroy_notify';
  198. procedure gdk_xid_table_remove(xid:TXID);cdecl;external gdkdll name 'gdk_xid_table_remove';
  199. function gdk_send_xevent(window:TWindow; propagate:gboolean; event_mask:glong; event_send:pXEvent):gint;cdecl;external gdkdll name 'gdk_send_xevent';
  200. {$ifndef gtkdarwin}
  201. procedure gdk_dnd_display_drag_cursor(x:gint; y:gint; drag_ok:gboolean; change_made:gboolean);cdecl;external gdkdll name 'gdk_dnd_display_drag_cursor';
  202. {$endif not gtkdarwin}
  203. function gdk_window_xid_at(base:TWindow; bx:gint; by:gint; x:gint; y:gint; excludes:PGList; excl_child:gboolean):TWindow;cdecl;external gdkdll name 'gdk_window_xid_at';
  204. function gdk_window_xid_at_coords(x:gint; y:gint; excludes:PGList; excl_child:gboolean):TWindow;cdecl;external gdkdll name 'gdk_window_xid_at_coords';
  205. {$ifndef os2}
  206. var
  207. gdk_use_xshm : gint;external gdkdll name 'gdk_use_xshm';
  208. gdk_display_name : Pgchar;external gdkdll name 'gdk_display_name';
  209. gdk_display : PDisplay;external gdkdll name 'gdk_display';
  210. gdk_screen : gint;external gdkdll name 'gdk_screen';
  211. gdk_root_window : TWindow;external gdkdll name 'gdk_root_window';
  212. gdk_leader_window : TWindow;external gdkdll name 'gdk_leader_window';
  213. gdk_root_parent : TGdkWindowPrivate;external gdkdll name 'gdk_root_parent';
  214. gdk_wm_delete_window : TAtom;external gdkdll name 'gdk_wm_delete_window';
  215. gdk_wm_take_focus : TAtom;external gdkdll name 'gdk_wm_take_focus';
  216. gdk_wm_protocols : TAtom;external gdkdll name 'gdk_wm_protocols';
  217. gdk_dnd : TGdkDndGlobals;external gdkdll name 'gdk_dnd';
  218. gdk_error_warnings : gint;external gdkdll name 'gdk_error_warnings';
  219. gdk_default_filters : PGList;external gdkdll name 'gdk_default_filters';
  220. gdk_nevent_masks : longint;external gdkdll name 'gdk_nevent_masks';
  221. gdk_xgrab_window : PGdkWindowPrivate;external gdkdll name 'gdk_xgrab_window';
  222. {$endif}
  223. {$ifdef USE_XIM}
  224. function gdk_im_open:gint;cdecl;external gdkdll name 'gdk_im_open';
  225. procedure gdk_im_close;cdecl;external gdkdll name 'gdk_im_close';
  226. procedure gdk_ic_cleanup;cdecl;external gdkdll name 'gdk_ic_cleanup';
  227. var
  228. gdk_xim_ic : PGdkICPrivate;external gdkdll name 'gdk_xim_ic';
  229. gdk_xim_window : PGdkWindow;external gdkdll name 'gdk_xim_window';
  230. {$endif}
  231. {$endif win32}
  232. {$endif read_interface}
  233. {****************************************************************************
  234. Implementation
  235. ****************************************************************************}
  236. {$ifdef read_implementation}
  237. function destroyed(var a : TGdkWindowPrivate) : guint;
  238. begin
  239. destroyed:=(a.flag0 and bm_TGdkWindowPrivate_destroyed) shr bp_TGdkWindowPrivate_destroyed;
  240. end;
  241. procedure set_destroyed(var a : TGdkWindowPrivate; __destroyed : guint);
  242. begin
  243. a.flag0:=a.flag0 or ((__destroyed shl bp_TGdkWindowPrivate_destroyed) and bm_TGdkWindowPrivate_destroyed);
  244. end;
  245. function mapped(var a : TGdkWindowPrivate) : guint;
  246. begin
  247. mapped:=(a.flag0 and bm_TGdkWindowPrivate_mapped) shr bp_TGdkWindowPrivate_mapped;
  248. end;
  249. procedure set_mapped(var a : TGdkWindowPrivate; __mapped : guint);
  250. begin
  251. a.flag0:=a.flag0 or ((__mapped shl bp_TGdkWindowPrivate_mapped) and bm_TGdkWindowPrivate_mapped);
  252. end;
  253. function guffaw_gravity(var a : TGdkWindowPrivate) : guint;
  254. begin
  255. guffaw_gravity:=(a.flag0 and bm_TGdkWindowPrivate_guffaw_gravity) shr bp_TGdkWindowPrivate_guffaw_gravity;
  256. end;
  257. procedure set_guffaw_gravity(var a : TGdkWindowPrivate; __guffaw_gravity : guint);
  258. begin
  259. a.flag0:=a.flag0 or ((__guffaw_gravity shl bp_TGdkWindowPrivate_guffaw_gravity) and bm_TGdkWindowPrivate_guffaw_gravity);
  260. end;
  261. function GDK_window_lookup(xid : longint) : PGdkWindow;
  262. begin
  263. gdk_window_lookup:=PGdkWindow(gdk_xid_table_lookup(xid));
  264. end;
  265. function GDK_pixmap_lookup(xid : longint) : PGdkPixmap;
  266. begin
  267. gdk_pixmap_lookup:=PGdkPixmap(gdk_xid_table_lookup(xid));
  268. end;
  269. function GDK_font_lookup(xid : longint) : PGdkFont;
  270. begin
  271. gdk_font_lookup:=PGdkFont(gdk_xid_table_lookup(xid));
  272. end;
  273. {$endif read_implementation}
  274. {
  275. $Log$
  276. Revision 1.5 2004-05-02 19:14:47 jonas
  277. * fixed darwin incompatibilities
  278. Revision 1.4 2003/08/06 07:28:21 michael
  279. + Patch from Marc Weustinck to fix Win32 version
  280. Revision 1.3 2003/03/02 02:08:50 hajny
  281. + OS/2 support for GTK and X11 added by Yuri
  282. Revision 1.2 2002/09/07 15:42:58 peter
  283. * old logs removed and tabs fixed
  284. Revision 1.1 2002/01/29 17:55:07 peter
  285. * splitted to base and extra
  286. }