xutil.pp 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386
  1. unit xutil;
  2. interface
  3. uses
  4. ctypes,x,xlib,keysym;
  5. {$define MACROS}
  6. {$ifndef os2}
  7. {$LinkLib c}
  8. {$LinkLib X11}
  9. const
  10. libX11='X11';
  11. {$else}
  12. const
  13. libX11='X11';
  14. {$endif}
  15. {
  16. Automatically converted by H2Pas 0.99.15 from xutil.h
  17. The following command line parameters were used:
  18. -p
  19. -T
  20. -S
  21. -d
  22. -c
  23. xutil.h
  24. }
  25. {$PACKRECORDS C}
  26. const
  27. NoValue = $0000;
  28. XValue = $0001;
  29. YValue = $0002;
  30. WidthValue = $0004;
  31. HeightValue = $0008;
  32. AllValues = $000F;
  33. XNegative = $0010;
  34. YNegative = $0020;
  35. type
  36. PXSizeHints = ^TXSizeHints;
  37. TXSizeHints = record
  38. flags : clong;
  39. x, y : cint;
  40. width, height : cint;
  41. min_width, min_height : cint;
  42. max_width, max_height : cint;
  43. width_inc, height_inc : cint;
  44. min_aspect, max_aspect : record
  45. x : cint;
  46. y : cint;
  47. end;
  48. base_width, base_height : cint;
  49. win_gravity : cint;
  50. end;
  51. const
  52. USPosition = 1 shl 0;
  53. USSize = 1 shl 1;
  54. PPosition = 1 shl 2;
  55. PSize = 1 shl 3;
  56. PMinSize = 1 shl 4;
  57. PMaxSize = 1 shl 5;
  58. PResizeInc = 1 shl 6;
  59. PAspect = 1 shl 7;
  60. PBaseSize = 1 shl 8;
  61. PWinGravity = 1 shl 9;
  62. PAllHints = PPosition or PSize or PMinSize or PMaxSize or PResizeInc or PAspect;
  63. type
  64. PXWMHints = ^TXWMHints;
  65. TXWMHints = record
  66. flags : clong;
  67. input : TBool;
  68. initial_state : cint;
  69. icon_pixmap : TPixmap;
  70. icon_window : TWindow;
  71. icon_x, icon_y : cint;
  72. icon_mask : TPixmap;
  73. window_group : TXID;
  74. end;
  75. const
  76. InputHint = 1 shl 0;
  77. StateHint = 1 shl 1;
  78. IconPixmapHint = 1 shl 2;
  79. IconWindowHint = 1 shl 3;
  80. IconPositionHint = 1 shl 4;
  81. IconMaskHint = 1 shl 5;
  82. WindowGroupHint = 1 shl 6;
  83. AllHints = InputHint or StateHint or IconPixmapHint or IconWindowHint or IconPositionHint or IconMaskHint or WindowGroupHint;
  84. XUrgencyHint = 1 shl 8;
  85. WithdrawnState = 0;
  86. NormalState = 1;
  87. IconicState = 3;
  88. DontCareState = 0;
  89. ZoomState = 2;
  90. InactiveState = 4;
  91. type
  92. PXTextProperty = ^TXTextProperty;
  93. TXTextProperty = record
  94. value : pcuchar;
  95. encoding : TAtom;
  96. format : cint;
  97. nitems : culong;
  98. end;
  99. const
  100. XNoMemory = -1;
  101. XLocaleNotSupported = -2;
  102. XConverterNotFound = -3;
  103. type
  104. PXICCEncodingStyle = ^TXICCEncodingStyle;
  105. TXICCEncodingStyle = (XStringStyle,XCompoundTextStyle,XTextStyle,
  106. XStdICCTextStyle,XUTF8StringStyle);
  107. PPXIconSize = ^PXIconSize;
  108. PXIconSize = ^TXIconSize;
  109. TXIconSize = record
  110. min_width, min_height : cint;
  111. max_width, max_height : cint;
  112. width_inc, height_inc : cint;
  113. end;
  114. PXClassHint = ^TXClassHint;
  115. TXClassHint = record
  116. res_name : Pchar;
  117. res_class : Pchar;
  118. end;
  119. type
  120. PXComposeStatus = ^TXComposeStatus;
  121. TXComposeStatus = record
  122. compose_ptr : TXPointer;
  123. chars_matched : cint;
  124. end;
  125. type
  126. PXRegion = ^TXRegion;
  127. TXRegion = record
  128. end;
  129. TRegion = PXRegion;
  130. PRegion = ^TRegion;
  131. const
  132. RectangleOut = 0;
  133. RectangleIn = 1;
  134. RectanglePart = 2;
  135. type
  136. PXVisualInfo = ^TXVisualInfo;
  137. TXVisualInfo = record
  138. visual : PVisual;
  139. visualid : TVisualID;
  140. screen : cint;
  141. depth : cint;
  142. _class : cint;
  143. red_mask : culong;
  144. green_mask : culong;
  145. blue_mask : culong;
  146. colormap_size : cint;
  147. bits_per_rgb : cint;
  148. end;
  149. const
  150. VisualNoMask = $0;
  151. VisualIDMask = $1;
  152. VisualScreenMask = $2;
  153. VisualDepthMask = $4;
  154. VisualClassMask = $8;
  155. VisualRedMaskMask = $10;
  156. VisualGreenMaskMask = $20;
  157. VisualBlueMaskMask = $40;
  158. VisualColormapSizeMask = $80;
  159. VisualBitsPerRGBMask = $100;
  160. VisualAllMask = $1FF;
  161. type
  162. PPXStandardColormap = ^PXStandardColormap;
  163. PXStandardColormap = ^TXStandardColormap;
  164. TXStandardColormap = record
  165. colormap : TColormap;
  166. red_max : culong;
  167. red_mult : culong;
  168. green_max : culong;
  169. green_mult : culong;
  170. blue_max : culong;
  171. blue_mult : culong;
  172. base_pixel : culong;
  173. visualid : TVisualID;
  174. killid : TXID;
  175. end;
  176. const
  177. BitmapSuccess = 0;
  178. BitmapOpenFailed = 1;
  179. BitmapFileInvalid = 2;
  180. BitmapNoMemory = 3;
  181. XCSUCCESS = 0;
  182. XCNOMEM = 1;
  183. XCNOENT = 2;
  184. ReleaseByFreeingColormap : TXID = TXID(1);
  185. type
  186. PXContext = ^TXContext;
  187. TXContext = cint;
  188. function XAllocClassHint:PXClassHint;cdecl;external libX11;
  189. function XAllocIconSize:PXIconSize;cdecl;external libX11;
  190. function XAllocSizeHints:PXSizeHints;cdecl;external libX11;
  191. function XAllocStandardColormap:PXStandardColormap;cdecl;external libX11;
  192. function XAllocWMHints:PXWMHints;cdecl;external libX11;
  193. function XClipBox(para1:TRegion; para2:PXRectangle):cint;cdecl;external libX11;
  194. function XCreateRegion:TRegion;cdecl;external libX11;
  195. function XDefaultString:Pchar;cdecl;external libX11;
  196. function XDeleteContext(para1:PDisplay; para2:TXID; para3:TXContext):cint;cdecl;external libX11;
  197. function XDestroyRegion(para1:TRegion):cint;cdecl;external libX11;
  198. function XEmptyRegion(para1:TRegion):cint;cdecl;external libX11;
  199. function XEqualRegion(para1:TRegion; para2:TRegion):cint;cdecl;external libX11;
  200. function XFindContext(para1:PDisplay; para2:TXID; para3:TXContext; para4:PXPointer):cint;cdecl;external libX11;
  201. function XGetClassHint(para1:PDisplay; para2:TWindow; para3:PXClassHint):TStatus;cdecl;external libX11;
  202. function XGetIconSizes(para1:PDisplay; para2:TWindow; para3:PPXIconSize; para4:Pcint):TStatus;cdecl;external libX11;
  203. function XGetNormalHints(para1:PDisplay; para2:TWindow; para3:PXSizeHints):TStatus;cdecl;external libX11;
  204. function XGetRGBColormaps(para1:PDisplay; para2:TWindow; para3:PPXStandardColormap; para4:Pcint; para5:TAtom):TStatus;cdecl;external libX11;
  205. function XGetSizeHints(para1:PDisplay; para2:TWindow; para3:PXSizeHints; para4:TAtom):TStatus;cdecl;external libX11;
  206. function XGetStandardColormap(para1:PDisplay; para2:TWindow; para3:PXStandardColormap; para4:TAtom):TStatus;cdecl;external libX11;
  207. function XGetTextProperty(para1:PDisplay; para2:TWindow; para3:PXTextProperty; para4:TAtom):TStatus;cdecl;external libX11;
  208. function XGetVisualInfo(para1:PDisplay; para2:clong; para3:PXVisualInfo; para4:Pcint):PXVisualInfo;cdecl;external libX11;
  209. function XGetWMClientMachine(para1:PDisplay; para2:TWindow; para3:PXTextProperty):TStatus;cdecl;external libX11;
  210. function XGetWMHints(para1:PDisplay; para2:TWindow):PXWMHints;cdecl;external libX11;
  211. function XGetWMIconName(para1:PDisplay; para2:TWindow; para3:PXTextProperty):TStatus;cdecl;external libX11;
  212. function XGetWMName(para1:PDisplay; para2:TWindow; para3:PXTextProperty):TStatus;cdecl;external libX11;
  213. function XGetWMNormalHints(para1:PDisplay; para2:TWindow; para3:PXSizeHints; para4:Pclong):TStatus;cdecl;external libX11;
  214. function XGetWMSizeHints(para1:PDisplay; para2:TWindow; para3:PXSizeHints; para4:Pclong; para5:TAtom):TStatus;cdecl;external libX11;
  215. function XGetZoomHints(para1:PDisplay; para2:TWindow; para3:PXSizeHints):TStatus;cdecl;external libX11;
  216. function XIntersectRegion(para1:TRegion; para2:TRegion; para3:TRegion):cint;cdecl;external libX11;
  217. procedure XConvertCase(para1:TKeySym; para2:PKeySym; para3:PKeySym);cdecl;external libX11;
  218. function XLookupString(para1:PXKeyEvent; para2:Pchar; para3:cint; para4:PKeySym; para5:PXComposeStatus):cint;cdecl;external libX11;
  219. function XMatchVisualInfo(para1:PDisplay; para2:cint; para3:cint; para4:cint; para5:PXVisualInfo):TStatus;cdecl;external libX11;
  220. function XOffsetRegion(para1:TRegion; para2:cint; para3:cint):cint;cdecl;external libX11;
  221. function XPointInRegion(para1:TRegion; para2:cint; para3:cint):TBoolResult;cdecl;external libX11;
  222. function XPolygonRegion(para1:PXPoint; para2:cint; para3:cint):TRegion;cdecl;external libX11;
  223. function XRectInRegion(para1:TRegion; para2:cint; para3:cint; para4:cuint; para5:cuint):cint;cdecl;external libX11;
  224. function XSaveContext(para1:PDisplay; para2:TXID; para3:TXContext; para4:Pchar):cint;cdecl;external libX11;
  225. function XSetClassHint(para1:PDisplay; para2:TWindow; para3:PXClassHint):cint;cdecl;external libX11;
  226. function XSetIconSizes(para1:PDisplay; para2:TWindow; para3:PXIconSize; para4:cint):cint;cdecl;external libX11;
  227. function XSetNormalHints(para1:PDisplay; para2:TWindow; para3:PXSizeHints):cint;cdecl;external libX11;
  228. procedure XSetRGBColormaps(para1:PDisplay; para2:TWindow; para3:PXStandardColormap; para4:cint; para5:TAtom);cdecl;external libX11;
  229. function XSetSizeHints(para1:PDisplay; para2:TWindow; para3:PXSizeHints; para4:TAtom):cint;cdecl;external libX11;
  230. function XSetStandardProperties(para1:PDisplay; para2:TWindow; para3:Pchar; para4:Pchar; para5:TPixmap;
  231. para6:PPchar; para7:cint; para8:PXSizeHints):cint;cdecl;external libX11;
  232. procedure XSetTextProperty(para1:PDisplay; para2:TWindow; para3:PXTextProperty; para4:TAtom);cdecl;external libX11;
  233. procedure XSetWMClientMachine(para1:PDisplay; para2:TWindow; para3:PXTextProperty);cdecl;external libX11;
  234. function XSetWMHints(para1:PDisplay; para2:TWindow; para3:PXWMHints):cint;cdecl;external libX11;
  235. procedure XSetWMIconName(para1:PDisplay; para2:TWindow; para3:PXTextProperty);cdecl;external libX11;
  236. procedure XSetWMName(para1:PDisplay; para2:TWindow; para3:PXTextProperty);cdecl;external libX11;
  237. procedure XSetWMNormalHints(ADisplay:PDisplay; AWindow:TWindow; AHints:PXSizeHints);cdecl;external libX11;
  238. procedure XSetWMProperties(ADisplay:PDisplay; AWindow:TWindow; AWindowName:PXTextProperty; AIconName:PXTextProperty; AArgv:PPchar;
  239. AArgc:cint; ANormalHints:PXSizeHints; AWMHints:PXWMHints; AClassHints:PXClassHint);cdecl;external libX11;
  240. procedure XmbSetWMProperties(para1:PDisplay; para2:TWindow; para3:Pchar; para4:Pchar; para5:PPchar;
  241. para6:cint; para7:PXSizeHints; para8:PXWMHints; para9:PXClassHint);cdecl;external libX11;
  242. procedure Xutf8SetWMProperties(para1:PDisplay; para2:TWindow; para3:Pchar; para4:Pchar; para5:PPchar;
  243. para6:cint; para7:PXSizeHints; para8:PXWMHints; para9:PXClassHint);cdecl;external libX11;
  244. procedure XSetWMSizeHints(para1:PDisplay; para2:TWindow; para3:PXSizeHints; para4:TAtom);cdecl;external libX11;
  245. function XSetRegion(para1:PDisplay; para2:TGC; para3:TRegion):cint;cdecl;external libX11;
  246. procedure XSetStandardColormap(para1:PDisplay; para2:TWindow; para3:PXStandardColormap; para4:TAtom);cdecl;external libX11;
  247. function XSetZoomHints(para1:PDisplay; para2:TWindow; para3:PXSizeHints):cint;cdecl;external libX11;
  248. function XShrinkRegion(para1:TRegion; para2:cint; para3:cint):cint;cdecl;external libX11;
  249. function XStringListToTextProperty(para1:PPchar; para2:cint; para3:PXTextProperty):TStatus;cdecl;external libX11;
  250. function XSubtractRegion(para1:TRegion; para2:TRegion; para3:TRegion):cint;cdecl;external libX11;
  251. function XmbTextListToTextProperty(para1:PDisplay; para2:PPchar; para3:cint; para4:TXICCEncodingStyle; para5:PXTextProperty):cint;cdecl;external libX11;
  252. function XwcTextListToTextProperty(para1:PDisplay; para2:PPWideChar; para3:cint; para4:TXICCEncodingStyle; para5:PXTextProperty):cint;cdecl;external libX11;
  253. function Xutf8TextListToTextProperty(para1:PDisplay; para2:PPchar; para3:cint; para4:TXICCEncodingStyle; para5:PXTextProperty):cint;cdecl;external libX11;
  254. procedure XwcFreeStringList(para1:PPWideChar);cdecl;external libX11;
  255. function XTextPropertyToStringList(para1:PXTextProperty; para2:PPPchar; para3:Pcint):TStatus;cdecl;external libX11;
  256. function XmbTextPropertyToTextList(para1:PDisplay; para2:PXTextProperty; para3:PPPchar; para4:Pcint):cint;cdecl;external libX11;
  257. function XwcTextPropertyToTextList(para1:PDisplay; para2:PXTextProperty; para3:PPPWideChar; para4:Pcint):cint;cdecl;external libX11;
  258. function Xutf8TextPropertyToTextList(para1:PDisplay; para2:PXTextProperty; para3:PPPchar; para4:Pcint):cint;cdecl;external libX11;
  259. function XUnionRectWithRegion(para1:PXRectangle; para2:TRegion; para3:TRegion):cint;cdecl;external libX11;
  260. function XUnionRegion(para1:TRegion; para2:TRegion; para3:TRegion):cint;cdecl;external libX11;
  261. function XWMGeometry(para1:PDisplay; para2:cint; para3:Pchar; para4:Pchar; para5:cuint;
  262. para6:PXSizeHints; para7:Pcint; para8:Pcint; para9:Pcint; para10:Pcint;
  263. para11:Pcint):cint;cdecl;external libX11;
  264. function XXorRegion(para1:TRegion; para2:TRegion; para3:TRegion):cint;cdecl;external libX11;
  265. {$ifdef MACROS}
  266. function XDestroyImage(ximage : PXImage) : cint;
  267. function XGetPixel(ximage : PXImage; x, y : cint) : culong;
  268. function XPutPixel(ximage : PXImage; x, y : cint; pixel : culong) : cint;
  269. function XSubImage(ximage : PXImage; x, y : cint; width, height : cuint) : PXImage;
  270. function XAddPixel(ximage : PXImage; value : clong) : cint;
  271. function IsKeypadKey(keysym : TKeySym) : Boolean;
  272. function IsPrivateKeypadKey(keysym : TKeySym) : Boolean;
  273. function IsCursorKey(keysym : TKeySym) : Boolean;
  274. function IsPFKey(keysym : TKeySym) : Boolean;
  275. function IsFunctionKey(keysym : TKeySym) : Boolean;
  276. function IsMiscFunctionKey(keysym : TKeySym) : Boolean;
  277. function IsModifierKey(keysym : TKeySym) : Boolean;
  278. {function XUniqueContext : TXContext;
  279. function XStringToContext(_string : Pchar) : TXContext;}
  280. {$endif MACROS}
  281. implementation
  282. {$ifdef MACROS}
  283. function XDestroyImage(ximage : PXImage) : cint;
  284. begin
  285. XDestroyImage := ximage^.f.destroy_image(ximage);
  286. end;
  287. function XGetPixel(ximage : PXImage; x, y : cint) : culong;
  288. begin
  289. XGetPixel:=ximage^.f.get_pixel(ximage, x, y);
  290. end;
  291. function XPutPixel(ximage : PXImage; x, y : cint; pixel : culong) : cint;
  292. begin
  293. XPutPixel:=ximage^.f.put_pixel(ximage, x, y, pixel);
  294. end;
  295. function XSubImage(ximage : PXImage; x, y : cint; width, height : cuint) : PXImage;
  296. begin
  297. XSubImage:=ximage^.f.sub_image(ximage, x, y, width, height);
  298. end;
  299. function XAddPixel(ximage : PXImage; value : clong) : cint;
  300. begin
  301. XAddPixel:=ximage^.f.add_pixel(ximage, value);
  302. end;
  303. function IsKeypadKey(keysym : TKeySym) : Boolean;
  304. begin
  305. IsKeypadKey:=(keysym >= XK_KP_Space) and (keysym <= XK_KP_Equal);
  306. end;
  307. function IsPrivateKeypadKey(keysym : TKeySym) : Boolean;
  308. begin
  309. IsPrivateKeypadKey:=(keysym >= $11000000) and (keysym <= $1100FFFF);
  310. end;
  311. function IsCursorKey(keysym : TKeySym) : Boolean;
  312. begin
  313. IsCursorKey:=(keysym >= XK_Home) and (keysym < XK_Select);
  314. end;
  315. function IsPFKey(keysym : TKeySym) : Boolean;
  316. begin
  317. IsPFKey:=(keysym >= XK_KP_F1) and (keysym <= XK_KP_F4);
  318. end;
  319. function IsFunctionKey(keysym : TKeySym) : Boolean;
  320. begin
  321. IsFunctionKey:=(keysym >= XK_F1) and (keysym <= XK_F35);
  322. end;
  323. function IsMiscFunctionKey(keysym : TKeySym) : Boolean;
  324. begin
  325. IsMiscFunctionKey:=(keysym >= XK_Select) and (keysym <= XK_Break);
  326. end;
  327. function IsModifierKey(keysym : TKeySym) : Boolean;
  328. begin
  329. IsModifierKey := ((keysym >= XK_Shift_L) And (keysym <= XK_Hyper_R)) Or
  330. (keysym = XK_Mode_switch) Or (keysym = XK_Num_Lock);
  331. end;
  332. {...needs xresource
  333. function XUniqueContext : TXContext;
  334. begin
  335. XUniqueContext:=TXContext(XrmUniqueQuark);
  336. end;
  337. function XStringToContext(_string : Pchar) : TXContext;
  338. begin
  339. XStringToContext:=TXContext(XrmStringToQuark(_string));
  340. end;}
  341. {$endif MACROS}
  342. end.