mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-05-03 16:23:50 +02:00
149 lines
4.9 KiB
PHP
149 lines
4.9 KiB
PHP
{%MainUnit ../gdk2x.pas}
|
|
|
|
{$IFDEF read_forward_definitions}
|
|
PPPGdkTimeCoord = ^PPGdkTimeCoord;
|
|
{$ENDIF read_forward_definitions}
|
|
|
|
{$IFDEF read_interface_rest}
|
|
|
|
type
|
|
{ information about a device axis }
|
|
{ reported x resolution }
|
|
{ reported x minimum/maximum values }
|
|
{ calibrated resolution (for aspect ration) - only relative values
|
|
between axes used }
|
|
{ calibrated minimum/maximum values }
|
|
PGdkAxisInfo = ^TGdkAxisInfo;
|
|
TGdkAxisInfo = record
|
|
xresolution : gint;
|
|
xmin_value : gint;
|
|
xmax_value : gint;
|
|
resolution : gint;
|
|
min_value : gint;
|
|
max_value : gint;
|
|
end;
|
|
|
|
|
|
const
|
|
GDK_INPUT_NUM_EVENTC = 6;
|
|
{$ifndef XINPUT_NONE}
|
|
{ information about the axes }
|
|
{ Information about XInput device }
|
|
{ minimum key code for device }
|
|
{ true if we need to select a different set of events, but
|
|
can't because this is the core pointer }
|
|
{ Mask of buttons (used for button grabs) }
|
|
{ true if we've claimed the device as active. (used only for XINPUT_GXI) }
|
|
{$endif}
|
|
{ !XINPUT_NONE }
|
|
|
|
type
|
|
PGdkDevicePrivate = ^TGdkDevicePrivate;
|
|
TGdkDevicePrivate = record
|
|
info : TGdkDevice;
|
|
deviceid : guint32;
|
|
display : PGdkDisplay;
|
|
axes : PGdkAxisInfo;
|
|
xdevice : Pointer; // PXDevice;
|
|
min_keycode : gint;
|
|
buttonpress_type : longint;
|
|
buttonrelease_type : longint;
|
|
keypress_type : longint;
|
|
keyrelease_type : longint;
|
|
motionnotify_type : longint;
|
|
proximityin_type : longint;
|
|
proximityout_type : longint;
|
|
changenotify_type : longint;
|
|
needs_update : gint;
|
|
button_state : gint;
|
|
claimed : gint;
|
|
end;
|
|
|
|
P_GdkDeviceClass = ^T_GdkDeviceClass;
|
|
T_GdkDeviceClass = record
|
|
parent_class : TGObjectClass;
|
|
end;
|
|
|
|
{ gdk window }
|
|
{ Extension mode (GDK_EXTENSION_EVENTS_ALL/CURSOR) }
|
|
{ position relative to root window }
|
|
{ rectangles relative to window of windows obscuring this one }
|
|
{ Is there a pointer grab for this window ? }
|
|
PGdkInputWindow = ^TGdkInputWindow;
|
|
TGdkInputWindow = record
|
|
window : PGdkWindow;
|
|
mode : TGdkExtensionMode;
|
|
root_x : gint;
|
|
root_y : gint;
|
|
obscuring : PGdkRectangle;
|
|
num_obscuring : gint;
|
|
grabbed : gint;
|
|
end;
|
|
|
|
{ Global data }
|
|
// Private function GDK_IS_CORE(d : pointer) : boolean;
|
|
|
|
{ Function declarations }
|
|
function gdk_input_window_find(window:PGdkWindow):PGdkInputWindow;cdecl;external;
|
|
|
|
procedure gdk_input_window_destroy(window:PGdkWindow);cdecl;external;
|
|
|
|
function _gdk_device_allocate_history(device:PGdkDevice; n_events:gint):PPGdkTimeCoord;cdecl;external;
|
|
|
|
procedure _gdk_init_input_core;cdecl;external;
|
|
|
|
{ The following functions are provided by each implementation
|
|
(xfree, gxi, and none)
|
|
}
|
|
function _gdk_input_enable_window(window:PGdkWindow; gdkdev:PGdkDevicePrivate):gint;cdecl;external;
|
|
|
|
function _gdk_input_disable_window(window:PGdkWindow; gdkdev:PGdkDevicePrivate):gint;cdecl;external;
|
|
|
|
function _gdk_input_window_none_event(event:PGdkEvent; xevent:PXEvent):gint;cdecl;external;
|
|
|
|
procedure _gdk_input_configure_event(xevent:PXConfigureEvent; window:PGdkWindow);cdecl;external;
|
|
|
|
procedure _gdk_input_enter_event(xevent:PXCrossingEvent; window:PGdkWindow);cdecl;external;
|
|
|
|
function _gdk_input_other_event(event:PGdkEvent; xevent:PXEvent; window:PGdkWindow):gint;cdecl;external;
|
|
|
|
function _gdk_input_grab_pointer(window:PGdkWindow; owner_events:gint; event_mask:TGdkEventMask; confine_to:PGdkWindow; time:guint32):gint;cdecl;external;
|
|
|
|
procedure _gdk_input_ungrab_pointer(display:PGdkDisplay; time:guint32);cdecl;external;
|
|
|
|
function _gdk_device_get_history(device:PGdkDevice; window:PGdkWindow; start:guint32; stop:guint32; events:PPPGdkTimeCoord;
|
|
n_events:Pgint):gboolean;cdecl;external;
|
|
|
|
{$ifndef XINPUT_NONE}
|
|
|
|
const
|
|
GDK_MAX_DEVICE_CLASSES = 13;
|
|
|
|
function gdk_input_common_init(display:PGdkDisplay; include_core:gint):gint;cdecl;external;
|
|
|
|
function gdk_input_find_device(display:PGdkDisplay; id:guint32):PGdkDevicePrivate;cdecl;external;
|
|
|
|
procedure gdk_input_get_root_relative_geometry(display:PDisplay; w:TWindow; x_ret:Plongint; y_ret:Plongint; width_ret:Plongint;
|
|
height_ret:Plongint);cdecl;external;
|
|
|
|
procedure gdk_input_common_find_events(window:PGdkWindow; gdkdev:PGdkDevicePrivate; mask:gint; classes:Pointer {PXEventClass}; num_classes:Plongint);cdecl;external;
|
|
|
|
procedure gdk_input_common_select_events(window:PGdkWindow; gdkdev:PGdkDevicePrivate);cdecl;external;
|
|
|
|
function gdk_input_common_other_event(event:PGdkEvent; xevent:PXEvent; input_window:PGdkInputWindow; gdkdev:PGdkDevicePrivate):gint;cdecl;external;
|
|
|
|
{$endif}
|
|
{$ENDIF read_interface_rest}
|
|
|
|
//------------------------------------------------------------------------------
|
|
|
|
{$IFDEF read_implementation}
|
|
{ Private
|
|
function GDK_IS_CORE(d : pointer) : boolean;
|
|
begin
|
|
GDK_IS_CORE:= (PGdkDevice(d)) = _gdk_core_pointer;
|
|
end;}
|
|
|
|
{$ENDIF read_implementation}
|
|
|