mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-06-30 09:28:15 +02:00
397 lines
15 KiB
ObjectPascal
397 lines
15 KiB
ObjectPascal
unit xutil;
|
|
interface
|
|
uses
|
|
x,xlib,keysym;
|
|
|
|
{$define MACROS}
|
|
|
|
{$ifndef os2}
|
|
{$LinkLib c}
|
|
{$LinkLib X11}
|
|
const
|
|
libX11='X11';
|
|
{$else}
|
|
const
|
|
libX11='X11';
|
|
{$endif}
|
|
|
|
{
|
|
Automatically converted by H2Pas 0.99.15 from xutil.h
|
|
The following command line parameters were used:
|
|
-p
|
|
-T
|
|
-S
|
|
-d
|
|
-c
|
|
xutil.h
|
|
}
|
|
|
|
{$PACKRECORDS C}
|
|
|
|
const
|
|
NoValue = $0000;
|
|
XValue = $0001;
|
|
YValue = $0002;
|
|
WidthValue = $0004;
|
|
HeightValue = $0008;
|
|
AllValues = $000F;
|
|
XNegative = $0010;
|
|
YNegative = $0020;
|
|
type
|
|
|
|
PXSizeHints = ^TXSizeHints;
|
|
TXSizeHints = record
|
|
flags : longint;
|
|
x : longint;
|
|
y : longint;
|
|
width : longint;
|
|
height : longint;
|
|
min_width : longint;
|
|
min_height : longint;
|
|
max_width : longint;
|
|
max_height : longint;
|
|
width_inc : longint;
|
|
height_inc : longint;
|
|
min_aspect : record
|
|
x : longint;
|
|
y : longint;
|
|
end;
|
|
max_aspect : record
|
|
x : longint;
|
|
y : longint;
|
|
end;
|
|
base_width : longint;
|
|
base_height : longint;
|
|
win_gravity : longint;
|
|
end;
|
|
|
|
const
|
|
USPosition = 1 shl 0;
|
|
USSize = 1 shl 1;
|
|
PPosition = 1 shl 2;
|
|
PSize = 1 shl 3;
|
|
PMinSize = 1 shl 4;
|
|
PMaxSize = 1 shl 5;
|
|
PResizeInc = 1 shl 6;
|
|
PAspect = 1 shl 7;
|
|
PBaseSize = 1 shl 8;
|
|
PWinGravity = 1 shl 9;
|
|
PAllHints = ((((PPosition or PSize) or PMinSize) or PMaxSize) or PResizeInc) or PAspect;
|
|
type
|
|
|
|
PXWMHints = ^TXWMHints;
|
|
TXWMHints = record
|
|
flags : longint;
|
|
input : TBool;
|
|
initial_state : longint;
|
|
icon_pixmap : TPixmap;
|
|
icon_window : TWindow;
|
|
icon_x : longint;
|
|
icon_y : longint;
|
|
icon_mask : TPixmap;
|
|
window_group : TXID;
|
|
end;
|
|
|
|
const
|
|
InputHint = 1 shl 0;
|
|
StateHint = 1 shl 1;
|
|
IconPixmapHint = 1 shl 2;
|
|
IconWindowHint = 1 shl 3;
|
|
IconPositionHint = 1 shl 4;
|
|
IconMaskHint = 1 shl 5;
|
|
WindowGroupHint = 1 shl 6;
|
|
AllHints = (((((InputHint or StateHint) or IconPixmapHint) or IconWindowHint) or IconPositionHint) or IconMaskHint) or WindowGroupHint;
|
|
XUrgencyHint = 1 shl 8;
|
|
WithdrawnState = 0;
|
|
NormalState = 1;
|
|
IconicState = 3;
|
|
DontCareState = 0;
|
|
ZoomState = 2;
|
|
InactiveState = 4;
|
|
type
|
|
|
|
PXTextProperty = ^TXTextProperty;
|
|
TXTextProperty = record
|
|
value : Pbyte;
|
|
encoding : TAtom;
|
|
format : longint;
|
|
nitems : dword;
|
|
end;
|
|
|
|
const
|
|
XNoMemory = -(1);
|
|
XLocaleNotSupported = -(2);
|
|
XConverterNotFound = -(3);
|
|
type
|
|
|
|
PXICCEncodingStyle = ^TXICCEncodingStyle;
|
|
TXICCEncodingStyle = (XStringStyle,XCompoundTextStyle,XTextStyle,
|
|
XStdICCTextStyle);
|
|
|
|
PPXIconSize = ^PXIconSize;
|
|
PXIconSize = ^TXIconSize;
|
|
TXIconSize = record
|
|
min_width : longint;
|
|
min_height : longint;
|
|
max_width : longint;
|
|
max_height : longint;
|
|
width_inc : longint;
|
|
height_inc : longint;
|
|
end;
|
|
|
|
PXClassHint = ^TXClassHint;
|
|
TXClassHint = record
|
|
res_name : Pchar;
|
|
res_class : Pchar;
|
|
end;
|
|
|
|
type
|
|
|
|
PXComposeStatus = ^TXComposeStatus;
|
|
TXComposeStatus = record
|
|
compose_ptr : TXPointer;
|
|
chars_matched : longint;
|
|
end;
|
|
|
|
type
|
|
|
|
PXRegion = ^TXRegion;
|
|
TXRegion = record
|
|
end;
|
|
TRegion = PXRegion;
|
|
PRegion = ^TRegion;
|
|
|
|
const
|
|
RectangleOut = 0;
|
|
RectangleIn = 1;
|
|
RectanglePart = 2;
|
|
type
|
|
|
|
PXVisualInfo = ^TXVisualInfo;
|
|
TXVisualInfo = record
|
|
visual : PVisual;
|
|
visualid : TVisualID;
|
|
screen : longint;
|
|
depth : longint;
|
|
_class : longint;
|
|
red_mask : dword;
|
|
green_mask : dword;
|
|
blue_mask : dword;
|
|
colormap_size : longint;
|
|
bits_per_rgb : longint;
|
|
end;
|
|
|
|
const
|
|
VisualNoMask = $0;
|
|
VisualIDMask = $1;
|
|
VisualScreenMask = $2;
|
|
VisualDepthMask = $4;
|
|
VisualClassMask = $8;
|
|
VisualRedMaskMask = $10;
|
|
VisualGreenMaskMask = $20;
|
|
VisualBlueMaskMask = $40;
|
|
VisualColormapSizeMask = $80;
|
|
VisualBitsPerRGBMask = $100;
|
|
VisualAllMask = $1FF;
|
|
type
|
|
|
|
PPXStandardColormap = ^PXStandardColormap;
|
|
PXStandardColormap = ^TXStandardColormap;
|
|
TXStandardColormap = record
|
|
colormap : TColormap;
|
|
red_max : dword;
|
|
red_mult : dword;
|
|
green_max : dword;
|
|
green_mult : dword;
|
|
blue_max : dword;
|
|
blue_mult : dword;
|
|
base_pixel : dword;
|
|
visualid : TVisualID;
|
|
killid : TXID;
|
|
end;
|
|
|
|
const
|
|
BitmapSuccess = 0;
|
|
BitmapOpenFailed = 1;
|
|
BitmapFileInvalid = 2;
|
|
BitmapNoMemory = 3;
|
|
XCSUCCESS = 0;
|
|
XCNOMEM = 1;
|
|
XCNOENT = 2;
|
|
ReleaseByFreeingColormap : TXID = TXID(1);
|
|
|
|
type
|
|
PXContext = ^TXContext;
|
|
TXContext = longint;
|
|
|
|
function XAllocClassHint:PXClassHint;cdecl;external libX11;
|
|
function XAllocIconSize:PXIconSize;cdecl;external libX11;
|
|
function XAllocSizeHints:PXSizeHints;cdecl;external libX11;
|
|
function XAllocStandardColormap:PXStandardColormap;cdecl;external libX11;
|
|
function XAllocWMHints:PXWMHints;cdecl;external libX11;
|
|
function XClipBox(para1:TRegion; para2:PXRectangle):longint;cdecl;external libX11;
|
|
function XCreateRegion:TRegion;cdecl;external libX11;
|
|
function XDefaultString:Pchar;cdecl;external libX11;
|
|
function XDeleteContext(para1:PDisplay; para2:TXID; para3:TXContext):longint;cdecl;external libX11;
|
|
function XDestroyRegion(para1:TRegion):longint;cdecl;external libX11;
|
|
function XEmptyRegion(para1:TRegion):longint;cdecl;external libX11;
|
|
function XEqualRegion(para1:TRegion; para2:TRegion):longint;cdecl;external libX11;
|
|
function XFindContext(para1:PDisplay; para2:TXID; para3:TXContext; para4:PXPointer):longint;cdecl;external libX11;
|
|
function XGetClassHint(para1:PDisplay; para2:TWindow; para3:PXClassHint):TStatus;cdecl;external libX11;
|
|
function XGetIconSizes(para1:PDisplay; para2:TWindow; para3:PPXIconSize; para4:Plongint):TStatus;cdecl;external libX11;
|
|
function XGetNormalHints(para1:PDisplay; para2:TWindow; para3:PXSizeHints):TStatus;cdecl;external libX11;
|
|
function XGetRGBColormaps(para1:PDisplay; para2:TWindow; para3:PPXStandardColormap; para4:Plongint; para5:TAtom):TStatus;cdecl;external libX11;
|
|
function XGetSizeHints(para1:PDisplay; para2:TWindow; para3:PXSizeHints; para4:TAtom):TStatus;cdecl;external libX11;
|
|
function XGetStandardColormap(para1:PDisplay; para2:TWindow; para3:PXStandardColormap; para4:TAtom):TStatus;cdecl;external libX11;
|
|
function XGetTextProperty(para1:PDisplay; para2:TWindow; para3:PXTextProperty; para4:TAtom):TStatus;cdecl;external libX11;
|
|
function XGetVisualInfo(para1:PDisplay; para2:longint; para3:PXVisualInfo; para4:Plongint):PXVisualInfo;cdecl;external libX11;
|
|
function XGetWMClientMachine(para1:PDisplay; para2:TWindow; para3:PXTextProperty):TStatus;cdecl;external libX11;
|
|
function XGetWMHints(para1:PDisplay; para2:TWindow):PXWMHints;cdecl;external libX11;
|
|
function XGetWMIconName(para1:PDisplay; para2:TWindow; para3:PXTextProperty):TStatus;cdecl;external libX11;
|
|
function XGetWMName(para1:PDisplay; para2:TWindow; para3:PXTextProperty):TStatus;cdecl;external libX11;
|
|
function XGetWMNormalHints(para1:PDisplay; para2:TWindow; para3:PXSizeHints; para4:Plongint):TStatus;cdecl;external libX11;
|
|
function XGetWMSizeHints(para1:PDisplay; para2:TWindow; para3:PXSizeHints; para4:Plongint; para5:TAtom):TStatus;cdecl;external libX11;
|
|
function XGetZoomHints(para1:PDisplay; para2:TWindow; para3:PXSizeHints):TStatus;cdecl;external libX11;
|
|
function XIntersectRegion(para1:TRegion; para2:TRegion; para3:TRegion):longint;cdecl;external libX11;
|
|
procedure XConvertCase(para1:TKeySym; para2:PKeySym; para3:PKeySym);cdecl;external libX11;
|
|
function XLookupString(para1:PXKeyEvent; para2:Pchar; para3:longint; para4:PKeySym; para5:PXComposeStatus):longint;cdecl;external libX11;
|
|
function XMatchVisualInfo(para1:PDisplay; para2:longint; para3:longint; para4:longint; para5:PXVisualInfo):TStatus;cdecl;external libX11;
|
|
function XOffsetRegion(para1:TRegion; para2:longint; para3:longint):longint;cdecl;external libX11;
|
|
function XPointInRegion(para1:TRegion; para2:longint; para3:longint):TBool;cdecl;external libX11;
|
|
function XPolygonRegion(para1:PXPoint; para2:longint; para3:longint):TRegion;cdecl;external libX11;
|
|
function XRectInRegion(para1:TRegion; para2:longint; para3:longint; para4:dword; para5:dword):longint;cdecl;external libX11;
|
|
function XSaveContext(para1:PDisplay; para2:TXID; para3:TXContext; para4:Pchar):longint;cdecl;external libX11;
|
|
function XSetClassHint(para1:PDisplay; para2:TWindow; para3:PXClassHint):longint;cdecl;external libX11;
|
|
function XSetIconSizes(para1:PDisplay; para2:TWindow; para3:PXIconSize; para4:longint):longint;cdecl;external libX11;
|
|
function XSetNormalHints(para1:PDisplay; para2:TWindow; para3:PXSizeHints):longint;cdecl;external libX11;
|
|
procedure XSetRGBColormaps(para1:PDisplay; para2:TWindow; para3:PXStandardColormap; para4:longint; para5:TAtom);cdecl;external libX11;
|
|
function XSetSizeHints(para1:PDisplay; para2:TWindow; para3:PXSizeHints; para4:TAtom):longint;cdecl;external libX11;
|
|
function XSetStandardProperties(para1:PDisplay; para2:TWindow; para3:Pchar; para4:Pchar; para5:TPixmap;
|
|
para6:PPchar; para7:longint; para8:PXSizeHints):longint;cdecl;external libX11;
|
|
procedure XSetTextProperty(para1:PDisplay; para2:TWindow; para3:PXTextProperty; para4:TAtom);cdecl;external libX11;
|
|
procedure XSetWMClientMachine(para1:PDisplay; para2:TWindow; para3:PXTextProperty);cdecl;external libX11;
|
|
function XSetWMHints(para1:PDisplay; para2:TWindow; para3:PXWMHints):longint;cdecl;external libX11;
|
|
procedure XSetWMIconName(para1:PDisplay; para2:TWindow; para3:PXTextProperty);cdecl;external libX11;
|
|
procedure XSetWMName(para1:PDisplay; para2:TWindow; para3:PXTextProperty);cdecl;external libX11;
|
|
procedure XSetWMNormalHints(para1:PDisplay; para2:TWindow; para3:PXSizeHints);cdecl;external libX11;
|
|
procedure XSetWMProperties(para1:PDisplay; para2:TWindow; para3:PXTextProperty; para4:PXTextProperty; para5:PPchar;
|
|
para6:longint; para7:PXSizeHints; para8:PXWMHints; para9:PXClassHint);cdecl;external libX11;
|
|
procedure XmbSetWMProperties(para1:PDisplay; para2:TWindow; para3:Pchar; para4:Pchar; para5:PPchar;
|
|
para6:longint; para7:PXSizeHints; para8:PXWMHints; para9:PXClassHint);cdecl;external libX11;
|
|
procedure XSetWMSizeHints(para1:PDisplay; para2:TWindow; para3:PXSizeHints; para4:TAtom);cdecl;external libX11;
|
|
function XSetRegion(para1:PDisplay; para2:TGC; para3:TRegion):longint;cdecl;external libX11;
|
|
procedure XSetStandardColormap(para1:PDisplay; para2:TWindow; para3:PXStandardColormap; para4:TAtom);cdecl;external libX11;
|
|
function XSetZoomHints(para1:PDisplay; para2:TWindow; para3:PXSizeHints):longint;cdecl;external libX11;
|
|
function XShrinkRegion(para1:TRegion; para2:longint; para3:longint):longint;cdecl;external libX11;
|
|
function XStringListToTextProperty(para1:PPchar; para2:longint; para3:PXTextProperty):TStatus;cdecl;external libX11;
|
|
function XSubtractRegion(para1:TRegion; para2:TRegion; para3:TRegion):longint;cdecl;external libX11;
|
|
function XmbTextListToTextProperty(para1:PDisplay; para2:PPchar; para3:longint; para4:TXICCEncodingStyle; para5:PXTextProperty):longint;cdecl;external libX11;
|
|
function XwcTextListToTextProperty(para1:PDisplay; para2:PPWideChar; para3:longint; para4:TXICCEncodingStyle; para5:PXTextProperty):longint;cdecl;external libX11;
|
|
procedure XwcFreeStringList(para1:PPWideChar);cdecl;external libX11;
|
|
function XTextPropertyToStringList(para1:PXTextProperty; para2:PPPchar; para3:Plongint):TStatus;cdecl;external libX11;
|
|
function XmbTextPropertyToTextList(para1:PDisplay; para2:PXTextProperty; para3:PPPchar; para4:Plongint):longint;cdecl;external libX11;
|
|
function XwcTextPropertyToTextList(para1:PDisplay; para2:PXTextProperty; para3:PPPWideChar; para4:Plongint):longint;cdecl;external libX11;
|
|
function XUnionRectWithRegion(para1:PXRectangle; para2:TRegion; para3:TRegion):longint;cdecl;external libX11;
|
|
function XUnionRegion(para1:TRegion; para2:TRegion; para3:TRegion):longint;cdecl;external libX11;
|
|
function XWMGeometry(para1:PDisplay; para2:longint; para3:Pchar; para4:Pchar; para5:dword;
|
|
para6:PXSizeHints; para7:Plongint; para8:Plongint; para9:Plongint; para10:Plongint;
|
|
para11:Plongint):longint;cdecl;external libX11;
|
|
function XXorRegion(para1:TRegion; para2:TRegion; para3:TRegion):longint;cdecl;external libX11;
|
|
|
|
{$ifdef MACROS}
|
|
function XDestroyImage(ximage : PXImage) : longint;
|
|
function XGetPixel(ximage : PXImage; x, y : longint) : dword;
|
|
function XPutPixel(ximage : PXImage; x, y : longint; pixel : dword) : longint;
|
|
function XSubImage(ximage : PXImage; x, y : longint; width, height : dword) : PXImage;
|
|
function XAddPixel(ximage : PXImage; value : longint) : longint;
|
|
function IsKeypadKey(keysym : TKeySym) : Boolean;
|
|
function IsPrivateKeypadKey(keysym : TKeySym) : Boolean;
|
|
function IsCursorKey(keysym : TKeySym) : Boolean;
|
|
function IsPFKey(keysym : TKeySym) : Boolean;
|
|
function IsFunctionKey(keysym : TKeySym) : Boolean;
|
|
function IsMiscFunctionKey(keysym : TKeySym) : Boolean;
|
|
function IsModifierKey(keysym : TKeySym) : Boolean;
|
|
{function XUniqueContext : TXContext;
|
|
function XStringToContext(_string : Pchar) : TXContext;}
|
|
{$endif MACROS}
|
|
|
|
implementation
|
|
|
|
{$ifdef MACROS}
|
|
|
|
function XDestroyImage(ximage : PXImage) : longint;
|
|
|
|
begin
|
|
XDestroyImage := ximage^.f.destroy_image(ximage);
|
|
end;
|
|
|
|
function XGetPixel(ximage : PXImage; x, y : longint) : dword;
|
|
begin
|
|
XGetPixel:=ximage^.f.get_pixel(ximage, x, y);
|
|
end;
|
|
|
|
function XPutPixel(ximage : PXImage; x, y : longint; pixel : dword) : longint;
|
|
begin
|
|
XPutPixel:=ximage^.f.put_pixel(ximage, x, y, pixel);
|
|
end;
|
|
|
|
function XSubImage(ximage : PXImage; x, y : longint; width, height : dword) : PXImage;
|
|
begin
|
|
XSubImage:=ximage^.f.sub_image(ximage, x, y, width, height);
|
|
end;
|
|
|
|
function XAddPixel(ximage : PXImage; value : longint) : longint;
|
|
begin
|
|
XAddPixel:=ximage^.f.add_pixel(ximage, value);
|
|
end;
|
|
|
|
function IsKeypadKey(keysym : TKeySym) : Boolean;
|
|
begin
|
|
IsKeypadKey:=(keysym >= XK_KP_Space) and (keysym <= XK_KP_Equal);
|
|
end;
|
|
|
|
function IsPrivateKeypadKey(keysym : TKeySym) : Boolean;
|
|
begin
|
|
IsPrivateKeypadKey:=(keysym >= $11000000) and (keysym <= $1100FFFF);
|
|
end;
|
|
|
|
function IsCursorKey(keysym : TKeySym) : Boolean;
|
|
begin
|
|
IsCursorKey:=(keysym >= XK_Home) and (keysym < XK_Select);
|
|
end;
|
|
|
|
function IsPFKey(keysym : TKeySym) : Boolean;
|
|
begin
|
|
IsPFKey:=(keysym >= XK_KP_F1) and (keysym <= XK_KP_F4);
|
|
end;
|
|
|
|
function IsFunctionKey(keysym : TKeySym) : Boolean;
|
|
begin
|
|
IsFunctionKey:=(keysym >= XK_F1) and (keysym <= XK_F35);
|
|
end;
|
|
|
|
function IsMiscFunctionKey(keysym : TKeySym) : Boolean;
|
|
begin
|
|
IsMiscFunctionKey:=(keysym >= XK_Select) and (keysym <= XK_Break);
|
|
end;
|
|
|
|
function IsModifierKey(keysym : TKeySym) : Boolean;
|
|
begin
|
|
IsModifierKey := ((keysym >= XK_Shift_L) And (keysym <= XK_Hyper_R)) Or
|
|
(keysym = XK_Mode_switch) Or (keysym = XK_Num_Lock);
|
|
end;
|
|
|
|
{...needs xresource
|
|
function XUniqueContext : TXContext;
|
|
begin
|
|
XUniqueContext:=TXContext(XrmUniqueQuark);
|
|
end;
|
|
|
|
function XStringToContext(_string : Pchar) : TXContext;
|
|
begin
|
|
XStringToContext:=TXContext(XrmStringToQuark(_string));
|
|
end;}
|
|
{$endif MACROS}
|
|
|
|
end.
|