mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-07-18 02:55:58 +02:00
336 lines
12 KiB
ObjectPascal
336 lines
12 KiB
ObjectPascal
{
|
|
$Id$
|
|
}
|
|
|
|
{****************************************************************************
|
|
Interface
|
|
****************************************************************************}
|
|
|
|
{$ifdef read_interface}
|
|
|
|
type
|
|
PDisplay = pointer;
|
|
PXImage = pointer;
|
|
PVisual = pointer;
|
|
TWindow = longint;
|
|
TCursor = longint;
|
|
TAtom = longint;
|
|
TGC = longint;
|
|
TColorMap = longint;
|
|
TXStandardColorMap = array [0..9] of longint;
|
|
TVisualID = longint;
|
|
PXEvent = pointer;
|
|
TRegion = pointer;
|
|
TXID = longint;
|
|
Time_T = longint;
|
|
|
|
PGdkWindowPrivate = ^TGdkWindowPrivate;
|
|
TGdkWindowPrivate = record
|
|
window : TGdkWindow;
|
|
parent : PGdkWindow;
|
|
xwindow : TWindow;
|
|
xdisplay : PDisplay;
|
|
x : gint16;
|
|
y : gint16;
|
|
width : guint16;
|
|
height : guint16;
|
|
resize_count : guint8;
|
|
window_type : guint8;
|
|
ref_count : guint;
|
|
flag0 : {$ifdef win32}longint{$else}word{$endif};
|
|
extension_events : gint;
|
|
filters : PGList;
|
|
colormap : PGdkColormap;
|
|
children : PGList;
|
|
end;
|
|
|
|
const
|
|
bm_TGdkWindowPrivate_destroyed = $3;
|
|
bp_TGdkWindowPrivate_destroyed = 0;
|
|
bm_TGdkWindowPrivate_mapped = $4;
|
|
bp_TGdkWindowPrivate_mapped = 2;
|
|
bm_TGdkWindowPrivate_guffaw_gravity = $8;
|
|
bp_TGdkWindowPrivate_guffaw_gravity = 3;
|
|
function destroyed(var a : TGdkWindowPrivate) : guint;
|
|
procedure set_destroyed(var a : TGdkWindowPrivate; __destroyed : guint);
|
|
function mapped(var a : TGdkWindowPrivate) : guint;
|
|
procedure set_mapped(var a : TGdkWindowPrivate; __mapped : guint);
|
|
function guffaw_gravity(var a : TGdkWindowPrivate) : guint;
|
|
procedure set_guffaw_gravity(var a : TGdkWindowPrivate; __guffaw_gravity : guint);
|
|
|
|
type
|
|
PGdkImagePrivate = ^TGdkImagePrivate;
|
|
TGdkImagePrivate = record
|
|
image : TGdkImage;
|
|
ximage : PXImage;
|
|
xdisplay : PDisplay;
|
|
x_shm_info : gpointer;
|
|
image_put : procedure (window:PGdkDrawable; gc:PGdkGC; image:PGdkImage; xsrc:gint; ysrc:gint; xdest:gint; ydest:gint; width:gint; height:gint);cdecl;
|
|
end;
|
|
|
|
PGdkGCPrivate = ^TGdkGCPrivate;
|
|
TGdkGCPrivate = record
|
|
gc : TGdkGC;
|
|
xgc : TGC;
|
|
xdisplay : PDisplay;
|
|
ref_count : guint;
|
|
end;
|
|
|
|
TGdkColorInfoFlags = (GDK_COLOR_WRITEABLE := 1 shl 0);
|
|
|
|
PGdkColorInfo = ^TGdkColorInfo;
|
|
TGdkColorInfo = record
|
|
flags : TGdkColorInfoFlags;
|
|
ref_count : guint;
|
|
end;
|
|
|
|
PGdkColormapPrivate = ^TGdkColormapPrivate;
|
|
TGdkColormapPrivate = record
|
|
colormap : TGdkColormap;
|
|
xcolormap : TColormap;
|
|
xdisplay : PDisplay;
|
|
visual : PGdkVisual;
|
|
private_val : gint;
|
|
hash : PGHashTable;
|
|
info : PGdkColorInfo;
|
|
last_sync_time : time_t;
|
|
ref_count : guint;
|
|
end;
|
|
|
|
PGdkVisualPrivate = ^TGdkVisualPrivate;
|
|
TGdkVisualPrivate = record
|
|
visual : TGdkVisual;
|
|
xvisual : PVisual;
|
|
end;
|
|
|
|
PGdkFontPrivate = ^TGdkFontPrivate;
|
|
TGdkFontPrivate = record
|
|
font : TGdkFont;
|
|
xfont : gpointer;
|
|
xdisplay : PDisplay;
|
|
ref_count : guint;
|
|
names : PGSList;
|
|
end;
|
|
|
|
PGdkCursorPrivate = ^TGdkCursorPrivate;
|
|
TGdkCursorPrivate = record
|
|
cursor : TGdkCursor;
|
|
xcursor : TCursor;
|
|
xdisplay : PDisplay;
|
|
end;
|
|
|
|
PGdkDndCursorInfo = ^TGdkDndCursorInfo;
|
|
TGdkDndCursorInfo = record
|
|
gdk_cursor_dragdefault : TCursor;
|
|
gdk_cursor_dragok : TCursor;
|
|
drag_pm_default : PGdkWindow;
|
|
drag_pm_ok : PGdkWindow;
|
|
default_hotspot : TGdkPoint;
|
|
ok_hotspot : TGdkPoint;
|
|
xids : PGList;
|
|
end;
|
|
|
|
PGdkDndGlobals = ^TGdkDndGlobals;
|
|
TGdkDndGlobals = record
|
|
gdk_XdeEnter : TGdkAtom;
|
|
gdk_XdeLeave : TGdkAtom;
|
|
gdk_XdeRequest : TGdkAtom;
|
|
gdk_XdeDataAvailable : TGdkAtom;
|
|
gdk_XdeDataShow : TGdkAtom;
|
|
gdk_XdeCancel : TGdkAtom;
|
|
gdk_XdeTypelist : TGdkAtom;
|
|
c : PGdkDndCursorInfo;
|
|
drag_startwindows : PPGdkWindow;
|
|
drag_numwindows : guint;
|
|
drag_really : gboolean;
|
|
drag_perhaps : gboolean;
|
|
dnd_grabbed : gboolean;
|
|
dnd_drag_target : TWindow;
|
|
drag_dropcoords : TGdkPoint;
|
|
dnd_drag_start : TGdkPoint;
|
|
dnd_drag_oldpos : TGdkPoint;
|
|
dnd_drag_dropzone : TGdkRectangle;
|
|
real_sw : PGdkWindowPrivate;
|
|
dnd_drag_curwin : TWindow;
|
|
last_drop_time : Time_T;
|
|
end;
|
|
|
|
|
|
PGdkEventFilter = ^TGdkEventFilter;
|
|
TGdkEventFilter = record
|
|
thefunction : TGdkFilterFunc;
|
|
data : gpointer;
|
|
end;
|
|
|
|
PGdkClientFilter = ^TGdkClientFilter;
|
|
TGdkClientFilter = record
|
|
thetype : TGdkAtom;
|
|
thefunction : TGdkFilterFunc;
|
|
data : gpointer;
|
|
end;
|
|
|
|
{$ifdef USE_XIM}
|
|
|
|
PGdkICPrivate = ^TGdkICPrivate;
|
|
TGdkICPrivate = record
|
|
xic : XIC;
|
|
attr : PGdkICAttr;
|
|
mask : TGdkICAttributesType;
|
|
end;
|
|
|
|
{$endif}
|
|
|
|
PGdkColorContextPrivate = ^TGdkColorContextPrivate;
|
|
TGdkColorContextPrivate = record
|
|
color_context : TGdkColorContext;
|
|
xdisplay : PDisplay;
|
|
std_cmap : TXStandardColormap;
|
|
end;
|
|
|
|
PGdkRegionPrivate = ^TGdkRegionPrivate;
|
|
TGdkRegionPrivate = record
|
|
region : TGdkRegion;
|
|
xregion : TRegion;
|
|
end;
|
|
|
|
|
|
TGdkDebugFlag = (GDK_DEBUG_MISC := 1 shl 0,GDK_DEBUG_EVENTS := 1 shl 1,
|
|
GDK_DEBUG_DND := 1 shl 2,GDK_DEBUG_COLOR_CONTEXT := 1 shl 3,
|
|
GDK_DEBUG_XIM := 1 shl 4);
|
|
|
|
procedure gdk_xid_table_insert(xid:TXID; data:gpointer);cdecl;external gdkdll name 'gdk_xid_table_insert';
|
|
function gdk_xid_table_lookup(xid:TXID):gpointer;cdecl;external gdkdll name 'gdk_xid_table_lookup';
|
|
|
|
function GDK_window_lookup(xid : longint) : PGdkWindow;
|
|
function GDK_pixmap_lookup(xid : longint) : PGdkPixmap;
|
|
function GDK_font_lookup(xid : longint) : PGdkFont;
|
|
|
|
{$ifndef os2}
|
|
var
|
|
gdk_selection_property : TAtom;external gdkdll name 'gdk_selection_property';
|
|
gdk_progclass : Pgchar;external gdkdll name 'gdk_progclass';
|
|
gdk_error_code : gint;external gdkdll name 'gdk_error_code';
|
|
gdk_null_window_warnings : gint;external gdkdll name 'gdk_null_window_warnings';
|
|
{$endif}
|
|
|
|
{$ifndef gtkwin}
|
|
procedure gdk_events_init;cdecl;external gdkdll name 'gdk_events_init';
|
|
procedure gdk_window_init;cdecl;external gdkdll name 'gdk_window_init';
|
|
procedure gdk_visual_init;cdecl;external gdkdll name 'gdk_visual_init';
|
|
procedure gdk_dnd_init;cdecl;external gdkdll name 'gdk_dnd_init';
|
|
procedure gdk_image_init;cdecl;external gdkdll name 'gdk_image_init';
|
|
procedure gdk_image_exit;cdecl;external gdkdll name 'gdk_image_exit';
|
|
function gdk_colormap_lookup(xcolormap:TColormap):PGdkColormap;cdecl;external gdkdll name 'gdk_colormap_lookup';
|
|
function gdk_visual_lookup(xvisual:pVisual):PGdkVisual;cdecl;external gdkdll name 'gdk_visual_lookup';
|
|
procedure gdk_window_add_colormap_windows(window:PGdkWindow);cdecl;external gdkdll name 'gdk_window_add_colormap_windows';
|
|
procedure gdk_window_destroy_notify(window:PGdkWindow);cdecl;external gdkdll name 'gdk_window_destroy_notify';
|
|
procedure gdk_xid_table_remove(xid:TXID);cdecl;external gdkdll name 'gdk_xid_table_remove';
|
|
function gdk_send_xevent(window:TWindow; propagate:gboolean; event_mask:glong; event_send:pXEvent):gint;cdecl;external gdkdll name 'gdk_send_xevent';
|
|
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';
|
|
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';
|
|
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';
|
|
|
|
{$ifndef os2}
|
|
var
|
|
gdk_use_xshm : gint;external gdkdll name 'gdk_use_xshm';
|
|
gdk_display_name : Pgchar;external gdkdll name 'gdk_display_name';
|
|
gdk_display : PDisplay;external gdkdll name 'gdk_display';
|
|
gdk_screen : gint;external gdkdll name 'gdk_screen';
|
|
gdk_root_window : TWindow;external gdkdll name 'gdk_root_window';
|
|
gdk_leader_window : TWindow;external gdkdll name 'gdk_leader_window';
|
|
gdk_root_parent : TGdkWindowPrivate;external gdkdll name 'gdk_root_parent';
|
|
gdk_wm_delete_window : TAtom;external gdkdll name 'gdk_wm_delete_window';
|
|
gdk_wm_take_focus : TAtom;external gdkdll name 'gdk_wm_take_focus';
|
|
gdk_wm_protocols : TAtom;external gdkdll name 'gdk_wm_protocols';
|
|
gdk_dnd : TGdkDndGlobals;external gdkdll name 'gdk_dnd';
|
|
gdk_error_warnings : gint;external gdkdll name 'gdk_error_warnings';
|
|
gdk_default_filters : PGList;external gdkdll name 'gdk_default_filters';
|
|
gdk_nevent_masks : longint;external gdkdll name 'gdk_nevent_masks';
|
|
gdk_xgrab_window : PGdkWindowPrivate;external gdkdll name 'gdk_xgrab_window';
|
|
{$endif}
|
|
|
|
{$ifdef USE_XIM}
|
|
function gdk_im_open:gint;cdecl;external gdkdll name 'gdk_im_open';
|
|
procedure gdk_im_close;cdecl;external gdkdll name 'gdk_im_close';
|
|
procedure gdk_ic_cleanup;cdecl;external gdkdll name 'gdk_ic_cleanup';
|
|
|
|
var
|
|
gdk_xim_ic : PGdkICPrivate;external gdkdll name 'gdk_xim_ic';
|
|
gdk_xim_window : PGdkWindow;external gdkdll name 'gdk_xim_window';
|
|
{$endif}
|
|
|
|
{$endif win32}
|
|
|
|
{$endif read_interface}
|
|
|
|
|
|
{****************************************************************************
|
|
Implementation
|
|
****************************************************************************}
|
|
|
|
{$ifdef read_implementation}
|
|
|
|
function destroyed(var a : TGdkWindowPrivate) : guint;
|
|
begin
|
|
destroyed:=(a.flag0 and bm_TGdkWindowPrivate_destroyed) shr bp_TGdkWindowPrivate_destroyed;
|
|
end;
|
|
|
|
procedure set_destroyed(var a : TGdkWindowPrivate; __destroyed : guint);
|
|
begin
|
|
a.flag0:=a.flag0 or ((__destroyed shl bp_TGdkWindowPrivate_destroyed) and bm_TGdkWindowPrivate_destroyed);
|
|
end;
|
|
|
|
function mapped(var a : TGdkWindowPrivate) : guint;
|
|
begin
|
|
mapped:=(a.flag0 and bm_TGdkWindowPrivate_mapped) shr bp_TGdkWindowPrivate_mapped;
|
|
end;
|
|
|
|
procedure set_mapped(var a : TGdkWindowPrivate; __mapped : guint);
|
|
begin
|
|
a.flag0:=a.flag0 or ((__mapped shl bp_TGdkWindowPrivate_mapped) and bm_TGdkWindowPrivate_mapped);
|
|
end;
|
|
|
|
function guffaw_gravity(var a : TGdkWindowPrivate) : guint;
|
|
begin
|
|
guffaw_gravity:=(a.flag0 and bm_TGdkWindowPrivate_guffaw_gravity) shr bp_TGdkWindowPrivate_guffaw_gravity;
|
|
end;
|
|
|
|
procedure set_guffaw_gravity(var a : TGdkWindowPrivate; __guffaw_gravity : guint);
|
|
begin
|
|
a.flag0:=a.flag0 or ((__guffaw_gravity shl bp_TGdkWindowPrivate_guffaw_gravity) and bm_TGdkWindowPrivate_guffaw_gravity);
|
|
end;
|
|
|
|
function GDK_window_lookup(xid : longint) : PGdkWindow;
|
|
begin
|
|
gdk_window_lookup:=PGdkWindow(gdk_xid_table_lookup(xid));
|
|
end;
|
|
|
|
function GDK_pixmap_lookup(xid : longint) : PGdkPixmap;
|
|
begin
|
|
gdk_pixmap_lookup:=PGdkPixmap(gdk_xid_table_lookup(xid));
|
|
end;
|
|
|
|
function GDK_font_lookup(xid : longint) : PGdkFont;
|
|
begin
|
|
gdk_font_lookup:=PGdkFont(gdk_xid_table_lookup(xid));
|
|
end;
|
|
|
|
{$endif read_implementation}
|
|
|
|
|
|
{
|
|
$Log$
|
|
Revision 1.4 2003-08-06 07:28:21 michael
|
|
+ Patch from Marc Weustinck to fix Win32 version
|
|
|
|
Revision 1.3 2003/03/02 02:08:50 hajny
|
|
+ OS/2 support for GTK and X11 added by Yuri
|
|
|
|
Revision 1.2 2002/09/07 15:42:58 peter
|
|
* old logs removed and tabs fixed
|
|
|
|
Revision 1.1 2002/01/29 17:55:07 peter
|
|
* splitted to base and extra
|
|
|
|
}
|