gtk2/gdk/gdktypes.h

1237 lines
32 KiB
C
Raw Normal View History

1997-11-24 22:37:52 +00:00
/* GDK - The GIMP Drawing Kit
* Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
1997-11-24 22:37:52 +00:00
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
1997-11-24 22:37:52 +00:00
*/
#ifndef __GDK_TYPES_H__
#define __GDK_TYPES_H__
/* GDK uses "glib". (And so does GTK).
*/
#include <glib.h>
#define GDK_NONE 0L
1997-11-24 22:37:52 +00:00
#define GDK_CURRENT_TIME 0L
#define GDK_PARENT_RELATIVE 1L
/* special deviceid for core pointer events */
#define GDK_CORE_POINTER 0xfedc
#ifdef __cplusplus
extern "C" {
#pragma }
1997-11-24 22:37:52 +00:00
#endif /* __cplusplus */
/* Type definitions for the basic structures.
*/
typedef gulong GdkAtom;
typedef struct _GdkColor GdkColor;
typedef struct _GdkColormap GdkColormap;
typedef struct _GdkVisual GdkVisual;
typedef struct _GdkWindowAttr GdkWindowAttr;
typedef struct _GdkWindow GdkWindow;
typedef struct _GdkWindow GdkPixmap;
typedef struct _GdkWindow GdkBitmap;
typedef struct _GdkWindow GdkDrawable;
typedef struct _GdkImage GdkImage;
typedef struct _GdkGCValues GdkGCValues;
typedef struct _GdkGC GdkGC;
typedef struct _GdkPoint GdkPoint;
typedef struct _GdkRectangle GdkRectangle;
typedef struct _GdkSegment GdkSegment;
typedef struct _GdkFont GdkFont;
typedef struct _GdkCursor GdkCursor;
typedef struct _GdkColorContextDither GdkColorContextDither;
typedef struct _GdkColorContext GdkColorContext;
1997-11-24 22:37:52 +00:00
typedef struct _GdkEventAny GdkEventAny;
typedef struct _GdkEventExpose GdkEventExpose;
typedef struct _GdkEventNoExpose GdkEventNoExpose;
typedef struct _GdkEventVisibility GdkEventVisibility;
typedef struct _GdkEventMotion GdkEventMotion;
typedef struct _GdkEventButton GdkEventButton;
typedef struct _GdkEventKey GdkEventKey;
typedef struct _GdkEventFocus GdkEventFocus;
typedef struct _GdkEventCrossing GdkEventCrossing;
typedef struct _GdkEventConfigure GdkEventConfigure;
typedef struct _GdkEventProperty GdkEventProperty;
typedef struct _GdkEventSelection GdkEventSelection;
typedef struct _GdkEventProximity GdkEventProximity;
typedef struct _GdkEventOther GdkEventOther;
typedef struct _GdkEventDragBegin GdkEventDragBegin;
1997-11-24 22:37:52 +00:00
typedef struct _GdkEventDragRequest GdkEventDragRequest;
typedef struct _GdkEventDropEnter GdkEventDropEnter;
1997-11-24 22:37:52 +00:00
typedef struct _GdkEventDropDataAvailable GdkEventDropDataAvailable;
typedef struct _GdkEventDropLeave GdkEventDropLeave;
typedef struct _GdkEventClient GdkEventClient;
typedef union _GdkEvent GdkEvent;
typedef struct _GdkDeviceKey GdkDeviceKey;
typedef struct _GdkDeviceInfo GdkDeviceInfo;
typedef struct _GdkTimeCoord GdkTimeCoord;
typedef struct _GdkRegion GdkRegion;
1997-11-24 22:37:52 +00:00
typedef gint (*GdkEventFunc) (GdkEvent *event,
gpointer data);
typedef void* GdkIC;
typedef void* GdkIM;
1997-11-24 22:37:52 +00:00
/* Types of windows.
* Root: There is only 1 root window and it is initialized
* at startup. Creating a window of type GDK_WINDOW_ROOT
* is an error.
1997-11-24 22:37:52 +00:00
* Toplevel: Windows which interact with the window manager.
* Child: Windows which are children of some other type of window.
* (Any other type of window). Most windows are child windows.
1997-11-24 22:37:52 +00:00
* Dialog: A special kind of toplevel window which interacts with
* the window manager slightly differently than a regular
* toplevel window. Dialog windows should be used for any
* transient window.
1997-11-24 22:37:52 +00:00
* Pixmap: Pixmaps are really just another kind of window which
* doesn't actually appear on the screen. It can't have
* children, either and is really just a convenience so
* that the drawing functions can work on both windows
* and pixmaps transparently. (ie. You shouldn't pass a
* pixmap to any procedure which accepts a window with the
* exception of the drawing functions).
* Foreign: A window that actually belongs to another application
1997-11-24 22:37:52 +00:00
*/
typedef enum
{
G_SV (GDK_WINDOW_ROOT, root),
G_SV (GDK_WINDOW_TOPLEVEL, toplevel),
G_SV (GDK_WINDOW_CHILD, child),
G_SV (GDK_WINDOW_DIALOG, dialog),
G_SV (GDK_WINDOW_TEMP, temp),
G_SV (GDK_WINDOW_PIXMAP, pixmap),
G_SV (GDK_WINDOW_FOREIGN, foreign)
} G_ENUM (GdkWindowType);
1997-11-24 22:37:52 +00:00
/* Classes of windows.
* InputOutput: Almost every window should be of this type. Such windows
* receive events and are also displayed on screen.
1997-11-24 22:37:52 +00:00
* InputOnly: Used only in special circumstances when events need to be
* stolen from another window or windows. Input only windows
* have no visible output, so they are handy for placing over
* top of a group of windows in order to grab the events (or
* filter the events) from those windows.
1997-11-24 22:37:52 +00:00
*/
typedef enum
{
G_SV (GDK_INPUT_OUTPUT, input-output),
G_SV (GDK_INPUT_ONLY, input-only)
} G_ENUM (GdkWindowClass);
1997-11-24 22:37:52 +00:00
/* Types of images.
* Normal: Normal X image type. These are slow as they involve passing
* the entire image through the X connection each time a draw
* request is required.
1997-11-24 22:37:52 +00:00
* Shared: Shared memory X image type. These are fast as the X server
* and the program actually use the same piece of memory. They
* should be used with care though as there is the possibility
* for both the X server and the program to be reading/writing
* the image simultaneously and producing undesired results.
1997-11-24 22:37:52 +00:00
*/
typedef enum
{
G_SV (GDK_IMAGE_NORMAL, normal),
G_SV (GDK_IMAGE_SHARED, shared),
G_SV (GDK_IMAGE_FASTEST, fastest)
} G_ENUM (GdkImageType);
1997-11-24 22:37:52 +00:00
/* Types of visuals.
* StaticGray:
* Grayscale:
* StaticColor:
* PseudoColor:
* TrueColor:
* DirectColor:
*/
typedef enum
{
G_SV (GDK_VISUAL_STATIC_GRAY, static-gray),
G_SV (GDK_VISUAL_GRAYSCALE, grayscale),
G_SV (GDK_VISUAL_STATIC_COLOR, static-color),
G_SV (GDK_VISUAL_PSEUDO_COLOR, pseudo-color),
G_SV (GDK_VISUAL_TRUE_COLOR, true-color),
G_SV (GDK_VISUAL_DIRECT_COLOR, direct-color)
} G_ENUM (GdkVisualType);
1997-11-24 22:37:52 +00:00
/* Types of font.
* GDK_FONT_FONT: the font is an XFontStruct.
* GDK_FONT_FONTSET: the font is an XFontSet used for I18N.
*/
typedef enum
{
G_SV (GDK_FONT_FONT, font),
G_SV (GDK_FONT_FONTSET, fontset)
} G_ENUM (GdkFontType);
1997-11-24 22:37:52 +00:00
/* Window attribute mask values.
* GDK_WA_TITLE: The "title" field is valid.
* GDK_WA_X: The "x" field is valid.
* GDK_WA_Y: The "y" field is valid.
* GDK_WA_CURSOR: The "cursor" field is valid.
* GDK_WA_COLORMAP: The "colormap" field is valid.
* GDK_WA_VISUAL: The "visual" field is valid.
*/
typedef enum
{
G_NV (GDK_WA_TITLE, title, 1 << 1),
G_NV (GDK_WA_X, x, 1 << 2),
G_NV (GDK_WA_Y, y, 1 << 3),
G_NV (GDK_WA_CURSOR, cursor, 1 << 4),
G_NV (GDK_WA_COLORMAP, colormap, 1 << 5),
G_NV (GDK_WA_VISUAL, visual, 1 << 6),
G_NV (GDK_WA_WMCLASS, wmclass, 1 << 7),
G_NV (GDK_WA_NOREDIR, noredir, 1 << 8)
} G_FLAGS (GdkWindowAttributesType);
1997-11-24 22:37:52 +00:00
/* Size restriction enumeration.
*/
typedef enum
{
G_NV (GDK_HINT_POS, pos, 1 << 0),
G_NV (GDK_HINT_MIN_SIZE, min-size, 1 << 1),
G_NV (GDK_HINT_MAX_SIZE, max-size, 1 << 2)
} G_FLAGS (GdkWindowHints);
1997-11-24 22:37:52 +00:00
/* GC function types.
* Copy: Overwrites destination pixels with the source pixels.
* Invert: Inverts the destination pixels.
* Xor: Xor's the destination pixels with the source pixels.
*/
typedef enum
{
G_SV (GDK_COPY, copy),
G_SV (GDK_INVERT, invert),
G_SV (GDK_XOR, xor)
} G_ENUM (GdkFunction);
1997-11-24 22:37:52 +00:00
/* GC fill types.
* Solid:
* Tiled:
* Stippled:
* OpaqueStippled:
*/
typedef enum
{
G_SV (GDK_SOLID, solid),
G_SV (GDK_TILED, tiled),
G_SV (GDK_STIPPLED, stippled),
G_SV (GDK_OPAQUE_STIPPLED, opaque-stippled)
} G_ENUM (GdkFill);
1997-11-24 22:37:52 +00:00
/* GC fill rule for polygons
* EvenOddRule
* WindingRule
*/
typedef enum
{
G_SV (GDK_EVEN_ODD_RULE, even-odd-rule),
G_SV (GDK_WINDING_RULE, winding-rule)
} G_ENUM (GdkFillRule);
1997-11-24 22:37:52 +00:00
/* GC line styles
* Solid:
* OnOffDash:
* DoubleDash:
*/
typedef enum
{
G_SV (GDK_LINE_SOLID, solid),
G_SV (GDK_LINE_ON_OFF_DASH, on-off-dash),
G_SV (GDK_LINE_DOUBLE_DASH, double-dash)
} G_ENUM (GdkLineStyle);
1997-11-24 22:37:52 +00:00
/* GC cap styles
* CapNotLast:
* CapButt:
* CapRound:
* CapProjecting:
*/
typedef enum
{
G_SV (GDK_CAP_NOT_LAST, not-last),
G_SV (GDK_CAP_BUTT, butt),
G_SV (GDK_CAP_ROUND, round),
G_SV (GDK_CAP_PROJECTING, projecting)
} G_ENUM (GdkCapStyle);
1997-11-24 22:37:52 +00:00
/* GC join styles
* JoinMiter:
* JoinRound:
* JoinBevel:
*/
typedef enum
{
G_SV (GDK_JOIN_MITER, miter),
G_SV (GDK_JOIN_ROUND, round),
G_SV (GDK_JOIN_BEVEL, bevel)
} G_ENUM (GdkJoinStyle);
1997-11-24 22:37:52 +00:00
/* Cursor types.
*/
typedef enum
{
#include <gdk/gdkcursors.h>
1997-12-06 20:53:46 +00:00
GDK_LAST_CURSOR,
GDK_CURSOR_IS_PIXMAP = -1
1997-11-24 22:37:52 +00:00
} GdkCursorType;
typedef enum {
G_SV (GDK_FILTER_CONTINUE, continue), /* Event not handled,
* continue processesing */
G_SV (GDK_FILTER_TRANSLATE, translate), /* Translated event stored */
G_SV (GDK_FILTER_REMOVE, remove) /* Terminate processing,
* removing event */
} G_ENUM (GdkFilterReturn);
typedef enum {
G_SV (GDK_VISIBILITY_UNOBSCURED, unobscured),
G_SV (GDK_VISIBILITY_PARTIAL, partial),
G_SV (GDK_VISIBILITY_FULLY_OBSCURED, fully-obscured)
} G_ENUM (GdkVisibilityState);
1997-11-24 22:37:52 +00:00
/* Event types.
* Nothing: No event occurred.
* Delete: A window delete event was sent by the window manager.
* The specified window should be deleted.
1997-11-24 22:37:52 +00:00
* Destroy: A window has been destroyed.
* Expose: Part of a window has been uncovered.
* NoExpose: Same as expose, but no expose event was generated.
* VisibilityNotify: A window has become fully/partially/not obscured.
1997-11-24 22:37:52 +00:00
* MotionNotify: The mouse has moved.
* ButtonPress: A mouse button was pressed.
* ButtonRelease: A mouse button was release.
* KeyPress: A key was pressed.
* KeyRelease: A key was released.
* EnterNotify: A window was entered.
* LeaveNotify: A window was exited.
* FocusChange: The focus window has changed. (The focus window gets
* keyboard events).
1997-11-24 22:37:52 +00:00
* Resize: A window has been resized.
* Map: A window has been mapped. (It is now visible on the screen).
* Unmap: A window has been unmapped. (It is no longer visible on
* the screen).
1997-11-24 22:37:52 +00:00
*/
typedef enum
{
G_NV (GDK_NOTHING, NOTHING, -1),
G_NV (GDK_DELETE, delete, 0),
G_NV (GDK_DESTROY, destroy, 1),
G_NV (GDK_EXPOSE, expose, 2),
G_NV (GDK_MOTION_NOTIFY, motion-notify, 3),
G_NV (GDK_BUTTON_PRESS, button-press, 4),
G_NV (GDK_2BUTTON_PRESS, 2button-press, 5),
G_NV (GDK_3BUTTON_PRESS, 3button-press, 6),
G_NV (GDK_BUTTON_RELEASE, button-release, 7),
G_NV (GDK_KEY_PRESS, key-press, 8),
G_NV (GDK_KEY_RELEASE, key-release, 9),
G_NV (GDK_ENTER_NOTIFY, enter-notify, 10),
G_NV (GDK_LEAVE_NOTIFY, leave-notify, 11),
G_NV (GDK_FOCUS_CHANGE, focus-change, 12),
G_NV (GDK_CONFIGURE, configure, 13),
G_NV (GDK_MAP, map, 14),
G_NV (GDK_UNMAP, unmap, 15),
G_NV (GDK_PROPERTY_NOTIFY, property-notify, 16),
G_NV (GDK_SELECTION_CLEAR, selection-clear, 17),
G_NV (GDK_SELECTION_REQUEST, selection-request,18),
G_NV (GDK_SELECTION_NOTIFY, selection-notify,19),
G_NV (GDK_PROXIMITY_IN, proximity-in, 20),
G_NV (GDK_PROXIMITY_OUT, proximity-out, 21),
G_NV (GDK_DRAG_BEGIN, drag-begin, 22),
G_NV (GDK_DRAG_REQUEST, drag-request, 23),
G_NV (GDK_DROP_ENTER, drop-enter, 24),
G_NV (GDK_DROP_LEAVE, drop-leave, 25),
G_NV (GDK_DROP_DATA_AVAIL, drop-data-avail, 26),
G_NV (GDK_CLIENT_EVENT, client-event, 27),
G_NV (GDK_VISIBILITY_NOTIFY, visibility-notify, 28),
G_NV (GDK_NO_EXPOSE, no-expose, 29),
G_NV (GDK_OTHER_EVENT, other-event, 9999) /* Deprecated, use
* filters instead */
} G_ENUM (GdkEventType);
1997-11-24 22:37:52 +00:00
/* Event masks. (Used to select what types of events a window
* will receive).
*/
typedef enum
{
G_NV (GDK_EXPOSURE_MASK, exposure-mask, 1 << 1),
G_NV (GDK_POINTER_MOTION_MASK, pointer-motion-mask, 1 << 2),
G_NV (GDK_POINTER_MOTION_HINT_MASK, pointer-motion-hint-mask, 1 << 3),
G_NV (GDK_BUTTON_MOTION_MASK, button-motion-mask, 1 << 4),
G_NV (GDK_BUTTON1_MOTION_MASK, button1-motion-mask, 1 << 5),
G_NV (GDK_BUTTON2_MOTION_MASK, button2-motion-mask, 1 << 6),
G_NV (GDK_BUTTON3_MOTION_MASK, button3-motion-mask, 1 << 7),
G_NV (GDK_BUTTON_PRESS_MASK, button-press-mask, 1 << 8),
G_NV (GDK_BUTTON_RELEASE_MASK, button-release-mask, 1 << 9),
G_NV (GDK_KEY_PRESS_MASK, key-press-mask, 1 << 10),
G_NV (GDK_KEY_RELEASE_MASK, key-release-mask, 1 << 11),
G_NV (GDK_ENTER_NOTIFY_MASK, enter-notify-mask, 1 << 12),
G_NV (GDK_LEAVE_NOTIFY_MASK, leave-notify-mask, 1 << 13),
G_NV (GDK_FOCUS_CHANGE_MASK, focus-change-mask, 1 << 14),
G_NV (GDK_STRUCTURE_MASK, structure-mask, 1 << 15),
G_NV (GDK_PROPERTY_CHANGE_MASK, property-change-mask, 1 << 16),
G_NV (GDK_VISIBILITY_NOTIFY_MASK, visibility-notify-mask, 1 << 17),
G_NV (GDK_PROXIMITY_IN_MASK, proximity-in-mask, 1 << 18),
G_NV (GDK_PROXIMITY_OUT_MASK, proximity-out-mask, 1 << 19),
G_NV (GDK_SUBSTRUCTURE_MASK, substructure-mask, 1 << 20),
G_NV (GDK_ALL_EVENTS_MASK, all-events-mask, 0x0FFFFF)
} G_FLAGS (GdkEventMask);
1997-11-24 22:37:52 +00:00
/* Types of enter/leave notifications.
* Ancestor:
* Virtual:
* Inferior:
* Nonlinear:
* NonlinearVirtual:
* Unknown: An unknown type of enter/leave event occurred.
*/
typedef enum
{
G_NV (GDK_NOTIFY_ANCESTOR, ancestor, 0),
G_NV (GDK_NOTIFY_VIRTUAL, virtual, 1),
G_NV (GDK_NOTIFY_INFERIOR, inferior, 2),
G_NV (GDK_NOTIFY_NONLINEAR, nonlinear, 3),
G_NV (GDK_NOTIFY_NONLINEAR_VIRTUAL, nonlinear-virtual, 4),
G_NV (GDK_NOTIFY_UNKNOWN, unknown, 5)
} G_ENUM (GdkNotifyType);
1997-11-24 22:37:52 +00:00
/* Enter/leave event modes.
* NotifyNormal
* NotifyGrab
* NotifyUngrab
*/
typedef enum
{
G_SV (GDK_CROSSING_NORMAL, crossing-normal),
G_SV (GDK_CROSSING_GRAB, crossing-grab),
G_SV (GDK_CROSSING_UNGRAB, crossing-ungrab)
} G_ENUM (GdkCrossingMode);
1997-11-24 22:37:52 +00:00
/* Types of modifiers.
*/
typedef enum
{
G_NV (GDK_SHIFT_MASK, shift-mask, 1 << 0),
G_NV (GDK_LOCK_MASK, lock-mask, 1 << 1),
G_NV (GDK_CONTROL_MASK, control-mask, 1 << 2),
G_NV (GDK_MOD1_MASK, mod1-mask, 1 << 3),
G_NV (GDK_MOD2_MASK, mod2-mask, 1 << 4),
G_NV (GDK_MOD3_MASK, mod3-mask, 1 << 5),
G_NV (GDK_MOD4_MASK, mod4-mask, 1 << 6),
G_NV (GDK_MOD5_MASK, mod5-mask, 1 << 7),
G_NV (GDK_BUTTON1_MASK, button1-mask, 1 << 8),
G_NV (GDK_BUTTON2_MASK, button2-mask, 1 << 9),
G_NV (GDK_BUTTON3_MASK, button3-mask, 1 << 10),
G_NV (GDK_BUTTON4_MASK, button4-mask, 1 << 11),
G_NV (GDK_BUTTON5_MASK, button5-mask, 1 << 12),
new functions gtk_selection_data_copy and gtk_selection_data_free. Tue Jun 9 01:57:23 1998 Tim Janik <timj@gtk.org> * gtk/gtkselection.h: * gtk/gtkselection.c: new functions gtk_selection_data_copy and gtk_selection_data_free. * gtk/gtkwidget.c (gtk_widget_class_init): fixed gtk_signal_new() call for "selection_received", which was completely bogus. * other fixups to gtk_signal_new() calls all over the place. * gtk/gtktypebuiltins.h: types as variables (formerly macros). * gtk/gtktypebuiltins_vars.c: type variable implementations. * gtk/gtktypebuiltins_ids.c: array entries for builtin type declarations. * gtk/gtktypebuiltins_evals.c: enum value arrays. * gtk/gtk-boxed.defs: gtk and gdk structure definitions, used to build gtk.defs. * gtk/gtk.defs: generated file with scheme syntax for type definitions of gtk and gdk structures and enums. * gtk/gtktypeutils.h: * gtk/gtktypeutils.c: reworked type ids, so they are variables not macros anymore (this fixes binary incompatibility with new enum definitions). * gtk/gtkwidget.c (gtk_widget_real_key_press_event): proccess possible key bindings for this widget. * gtk/gtkwindow.c (gtk_window_key_press_event): chain parent class' handler. * gtk/gtkobject.h: * gtk/gtkobject.c: removed gtk_object_class_new_user_signal_no_recurse() again. new functions gtk_object_class_user_signal_new () and gtk_object_class_user_signal_newv (), to feature the GtkSignalRunType flag on the signal creation. Mon Jun 8 20:52:21 1998 Tim Janik <timj@gtk.org> * gtk/gtkcontainer.h: new signal GtkContainer::set_focus_child.
1998-06-09 07:11:55 +00:00
G_NV (GDK_MODIFIER_MASK, modifier-mask, 0x1fff)
} G_FLAGS (GdkModifierType);
1997-11-24 22:37:52 +00:00
typedef enum
{
G_NV (GDK_CLIP_BY_CHILDREN, clip-by-children, 0),
G_NV (GDK_INCLUDE_INFERIORS, include-inferiors, 1)
} G_ENUM (GdkSubwindowMode);
1997-11-24 22:37:52 +00:00
typedef enum
{
G_NV (GDK_INPUT_READ, read, 1 << 0),
G_NV (GDK_INPUT_WRITE, write, 1 << 1),
G_NV (GDK_INPUT_EXCEPTION, exception, 1 << 2)
} G_FLAGS (GdkInputCondition);
1997-11-24 22:37:52 +00:00
typedef enum
{
G_NV (GDK_OK, ok, 0),
G_NV (GDK_ERROR, error, -1),
G_NV (GDK_ERROR_PARAM, error-param, -2),
G_NV (GDK_ERROR_FILE, error-file, -3),
G_NV (GDK_ERROR_MEM, error-mem, -4)
} G_ENUM (GdkStatus);
1997-11-24 22:37:52 +00:00
typedef enum
{
G_SV (GDK_LSB_FIRST, lsb-first),
G_SV (GDK_MSB_FIRST, msb-first)
} G_ENUM (GdkByteOrder);
1997-11-24 22:37:52 +00:00
typedef enum
{
G_NV (GDK_GC_FOREGROUND, foreground, 1 << 0),
G_NV (GDK_GC_BACKGROUND, background, 1 << 1),
G_NV (GDK_GC_FONT, font, 1 << 2),
G_NV (GDK_GC_FUNCTION, function, 1 << 3),
G_NV (GDK_GC_FILL, fill, 1 << 4),
G_NV (GDK_GC_TILE, tile, 1 << 5),
G_NV (GDK_GC_STIPPLE, stipple, 1 << 6),
G_NV (GDK_GC_CLIP_MASK, clip-mask, 1 << 7),
G_NV (GDK_GC_SUBWINDOW, subwindow, 1 << 8),
G_NV (GDK_GC_TS_X_ORIGIN, ts-x-origin, 1 << 9),
G_NV (GDK_GC_TS_Y_ORIGIN, ts-y-origin, 1 << 10),
G_NV (GDK_GC_CLIP_X_ORIGIN, clip-x-origin, 1 << 11),
G_NV (GDK_GC_CLIP_Y_ORIGIN, clip-y-origin, 1 << 12),
G_NV (GDK_GC_EXPOSURES, exposures, 1 << 13),
G_NV (GDK_GC_LINE_WIDTH, line-width, 1 << 14),
G_NV (GDK_GC_LINE_STYLE, line-style, 1 << 15),
G_NV (GDK_GC_CAP_STYLE, cap-style, 1 << 16),
G_NV (GDK_GC_JOIN_STYLE, join-style, 1 << 17)
} G_FLAGS (GdkGCValuesMask);
1997-11-24 22:37:52 +00:00
typedef enum
{
G_NV (GDK_SELECTION_PRIMARY, primary, 1),
G_NV (GDK_SELECTION_SECONDARY, secondary, 2)
} G_ENUM (GdkSelection);
1997-11-24 22:37:52 +00:00
typedef enum
{
G_SV (GDK_PROPERTY_NEW_VALUE, new-value),
G_SV (GDK_PROPERTY_DELETE, delete)
} G_ENUM (GdkPropertyState);
1997-11-24 22:37:52 +00:00
typedef enum
{
G_SV (GDK_PROP_MODE_REPLACE, replace),
G_SV (GDK_PROP_MODE_PREPEND, prepend),
G_SV (GDK_PROP_MODE_APPEND, append)
} G_ENUM (GdkPropMode);
1997-11-24 22:37:52 +00:00
/* These definitions are for version 1 of the OffiX D&D protocol,
taken from <OffiX/DragAndDropTypes.h> */
typedef enum
{
G_NV (GDK_DNDTYPE_NOTDND, NOTDND, -1),
G_NV (GDK_DNDTYPE_UNKNOWN, UNKNOWN, 0),
G_NV (GDK_DNDTYPE_RAWDATA, RAWDATA, 1),
G_NV (GDK_DNDTYPE_FILE, FILE, 2),
G_NV (GDK_DNDTYPE_FILES, FILES, 3),
G_NV (GDK_DNDTYPE_TEXT, text, 4),
G_NV (GDK_DNDTYPE_DIR, dir, 5),
G_NV (GDK_DNDTYPE_LINK, link, 6),
G_NV (GDK_DNDTYPE_EXE, exe, 7),
G_NV (GDK_DNDTYPE_URL, url, 8),
G_NV (GDK_DNDTYPE_MIME, mime, 9),
G_NV (GDK_DNDTYPE_END, end, 10)
} G_ENUM (GdkDndType);
1997-11-24 22:37:52 +00:00
/* Enums for XInput support */
typedef enum
{
G_SV (GDK_SOURCE_MOUSE, mouse),
G_SV (GDK_SOURCE_PEN, pen),
G_SV (GDK_SOURCE_ERASER, eraser),
G_SV (GDK_SOURCE_CURSOR, cursor)
} G_ENUM (GdkInputSource);
1997-11-24 22:37:52 +00:00
typedef enum
{
G_SV (GDK_MODE_DISABLED, disabled),
G_SV (GDK_MODE_SCREEN, screen),
G_SV (GDK_MODE_WINDOW, window)
} G_ENUM (GdkInputMode);
1997-11-24 22:37:52 +00:00
typedef enum
{
G_SV (GDK_AXIS_IGNORE, ignore),
G_SV (GDK_AXIS_X, x),
G_SV (GDK_AXIS_Y, y),
G_SV (GDK_AXIS_PRESSURE, pressure),
G_SV (GDK_AXIS_XTILT, xtilt),
G_SV (GDK_AXIS_YTILT, ytilt),
G_SV (GDK_AXIS_LAST, last)
} G_ENUM (GdkAxisUse);
1997-11-24 22:37:52 +00:00
/* The next two types define enums for predefined atoms relating
* to selections. In general, one will need to use gdk_intern_atom
*/
1997-11-24 22:37:52 +00:00
typedef enum
{
G_NV (GDK_TARGET_BITMAP, bitmap, 5),
G_NV (GDK_TARGET_COLORMAP, colormap, 7),
G_NV (GDK_TARGET_DRAWABLE, drawable, 17),
G_NV (GDK_TARGET_PIXMAP, pixmap, 20),
G_NV (GDK_TARGET_STRING, string, 31)
} G_ENUM (GdkTarget);
1997-11-24 22:37:52 +00:00
typedef enum
{
G_NV (GDK_SELECTION_TYPE_ATOM, atom, 4),
G_NV (GDK_SELECTION_TYPE_BITMAP, bitmap, 5),
G_NV (GDK_SELECTION_TYPE_COLORMAP, colormap, 7),
G_NV (GDK_SELECTION_TYPE_DRAWABLE, drawable, 17),
G_NV (GDK_SELECTION_TYPE_INTEGER, integer, 19),
G_NV (GDK_SELECTION_TYPE_PIXMAP, pixmap, 20),
G_NV (GDK_SELECTION_TYPE_WINDOW, window, 33),
G_NV (GDK_SELECTION_TYPE_STRING, string, 31)
} G_ENUM (GdkSelectionType);
1997-11-24 22:37:52 +00:00
typedef enum
{
G_SV (GDK_EXTENSION_EVENTS_NONE, none),
G_SV (GDK_EXTENSION_EVENTS_ALL, all),
G_SV (GDK_EXTENSION_EVENTS_CURSOR, cursor)
} G_ENUM (GdkExtensionMode);
1997-11-24 22:37:52 +00:00
typedef enum
{
GdkIMPreeditArea = 0x0001L,
GdkIMPreeditCallbacks = 0x0002L,
GdkIMPreeditPosition = 0x0004L,
GdkIMPreeditNothing = 0x0008L,
GdkIMPreeditNone = 0x0010L,
GdkIMStatusArea = 0x0100L,
GdkIMStatusCallbacks = 0x0200L,
GdkIMStatusNothing = 0x0400L,
GdkIMStatusNone = 0x0800L
} GdkIMStyle;
/* The next two enumeration values current match the
* Motif constants. If this is changed, the implementation
* of gdk_window_set_decorations/gdk_window_set_functions
* will need to change as well.
*/
typedef enum
{
G_NV (GDK_DECOR_ALL, all, 1 << 0),
G_NV (GDK_DECOR_BORDER, border, 1 << 1),
G_NV (GDK_DECOR_RESIZEH, resizeh, 1 << 2),
G_NV (GDK_DECOR_TITLE, title, 1 << 3),
G_NV (GDK_DECOR_MENU, menu, 1 << 4),
G_NV (GDK_DECOR_MINIMIZE, minimize, 1 << 5),
G_NV (GDK_DECOR_MAXIMIZE, maximize, 1 << 6)
} G_FLAGS (GdkWMDecoration);
typedef enum
{
G_NV (GDK_FUNC_ALL, all, 1 << 0),
G_NV (GDK_FUNC_RESIZE, resize, 1 << 1),
G_NV (GDK_FUNC_MOVE, move, 1 << 2),
G_NV (GDK_FUNC_MINIMIZE, minimize, 1 << 3),
G_NV (GDK_FUNC_MAXIMIZE, maximize, 1 << 4),
G_NV (GDK_FUNC_CLOSE, close, 1 << 5)
} G_FLAGS (GdkWMFunction);
#define GdkIMPreeditMask \
( GdkIMPreeditArea | GdkIMPreeditCallbacks | \
GdkIMPreeditPosition | GdkIMPreeditNothing | \
GdkIMPreeditNone )
#define GdkIMStatusMask \
( GdkIMStatusArea | GdkIMStatusCallbacks | \
GdkIMStatusNothing | GdkIMStatusNone )
typedef void (*GdkInputFunction) (gpointer data,
gint source,
1997-11-24 22:37:52 +00:00
GdkInputCondition condition);
typedef void (*GdkDestroyNotify) (gpointer data);
/* Color Context modes.
*
* GDK_CC_MODE_UNDEFINED - unknown
* GDK_CC_MODE_BW - default B/W
* GDK_CC_MODE_STD_CMAP - has a standard colormap
* GDK_CC_MODE_TRUE - is a TrueColor/DirectColor visual
* GDK_CC_MODE_MY_GRAY - my grayramp
* GDK_CC_MODE_PALETTE - has a pre-allocated palette
*/
typedef enum
{
G_SV (GDK_CC_MODE_UNDEFINED, undefined),
G_SV (GDK_CC_MODE_BW, bw),
G_SV (GDK_CC_MODE_STD_CMAP, std-cmap),
G_SV (GDK_CC_MODE_TRUE, true),
G_SV (GDK_CC_MODE_MY_GRAY, my-gray),
G_SV (GDK_CC_MODE_PALETTE, palette)
} G_ENUM (GdkColorContextMode);
/* Types of overlapping between a rectangle and a region
* GDK_OVERLAP_RECTANGLE_IN: rectangle is in region
* GDK_OVERLAP_RECTANGLE_OUT: rectangle in not in region
* GDK_OVERLAP_RECTANGLE_PART: rectangle in partially in region
*/
typedef enum
{
G_SV (GDK_OVERLAP_RECTANGLE_IN, in),
G_SV (GDK_OVERLAP_RECTANGLE_OUT, out),
G_SV (GDK_OVERLAP_RECTANGLE_PART, part)
} G_ENUM (GdkOverlapType);
1997-11-24 22:37:52 +00:00
/* The color type.
* A color consists of red, green and blue values in the
* range 0-65535 and a pixel value. The pixel value is highly
* dependent on the depth and colormap which this color will
* be used to draw into. Therefore, sharing colors between
* colormaps is a bad idea.
*/
struct _GdkColor
{
gulong pixel;
gushort red;
gushort green;
gushort blue;
};
/* The colormap type.
* Colormaps consist of 256 colors.
*/
struct _GdkColormap
{
gint size;
GdkColor *colors;
1997-11-24 22:37:52 +00:00
};
/* The visual type.
* "type" is the type of visual this is (PseudoColor, TrueColor, etc).
* "depth" is the bit depth of this visual.
* "colormap_size" is the size of a colormap for this visual.
* "bits_per_rgb" is the number of significant bits per red, green and blue.
* The red, green and blue masks, shifts and precisions refer
* to value needed to calculate pixel values in TrueColor and DirectColor
* visuals. The "mask" is the significant bits within the pixel. The
* "shift" is the number of bits left we must shift a primary for it
* to be in position (according to the "mask"). "prec" refers to how
* much precision the pixel value contains for a particular primary.
*/
struct _GdkVisual
{
GdkVisualType type;
gint depth;
GdkByteOrder byte_order;
gint colormap_size;
gint bits_per_rgb;
1997-11-24 22:37:52 +00:00
guint32 red_mask;
gint red_shift;
gint red_prec;
1997-11-24 22:37:52 +00:00
guint32 green_mask;
gint green_shift;
gint green_prec;
1997-11-24 22:37:52 +00:00
guint32 blue_mask;
gint blue_shift;
gint blue_prec;
};
struct _GdkWindowAttr
{
gchar *title;
gint event_mask;
gint16 x, y;
gint16 width;
gint16 height;
GdkWindowClass wclass;
GdkVisual *visual;
GdkColormap *colormap;
GdkWindowType window_type;
GdkCursor *cursor;
gchar *wmclass_name;
gchar *wmclass_class;
gboolean override_redirect;
1997-11-24 22:37:52 +00:00
};
struct _GdkWindow
{
gpointer user_data;
};
struct _GdkImage
{
GdkImageType type;
GdkVisual *visual; /* visual used to create the image */
GdkByteOrder byte_order;
guint16 width;
guint16 height;
guint16 depth;
guint16 bpp; /* bytes per pixel */
guint16 bpl; /* bytes per line */
gpointer mem;
1997-11-24 22:37:52 +00:00
};
struct _GdkGCValues
{
GdkColor foreground;
GdkColor background;
GdkFont *font;
GdkFunction function;
GdkFill fill;
GdkPixmap *tile;
GdkPixmap *stipple;
GdkPixmap *clip_mask;
1997-11-24 22:37:52 +00:00
GdkSubwindowMode subwindow_mode;
gint ts_x_origin;
gint ts_y_origin;
gint clip_x_origin;
gint clip_y_origin;
gint graphics_exposures;
gint line_width;
GdkLineStyle line_style;
GdkCapStyle cap_style;
GdkJoinStyle join_style;
1997-11-24 22:37:52 +00:00
};
struct _GdkGC
{
gint dummy_var;
};
struct _GdkPoint
{
gint16 x;
gint16 y;
};
struct _GdkRectangle
{
gint16 x;
gint16 y;
guint16 width;
guint16 height;
};
struct _GdkSegment
{
gint16 x1;
gint16 y1;
gint16 x2;
gint16 y2;
};
struct _GdkFont
{
GdkFontType type;
gint ascent;
gint descent;
};
struct _GdkCursor
{
GdkCursorType type;
};
struct _GdkColorContextDither
{
gint fast_rgb[32][32][32]; /* quick look-up table for faster rendering */
gint fast_err[32][32][32]; /* internal RGB error information */
gint fast_erg[32][32][32];
gint fast_erb[32][32][32];
};
struct _GdkColorContext
{
1997-12-18 00:27:10 +00:00
GdkVisual *visual;
GdkColormap *colormap;
1997-12-18 00:27:10 +00:00
gint num_colors; /* available no. of colors in colormap */
gint max_colors; /* maximum no. of colors */
gint num_allocated; /* no. of allocated colors */
1997-12-18 00:27:10 +00:00
GdkColorContextMode mode;
gint need_to_free_colormap;
GdkAtom std_cmap_atom;
1997-12-18 00:27:10 +00:00
gulong *clut; /* color look-up table */
GdkColor *cmap; /* colormap */
1997-12-18 00:27:10 +00:00
GHashTable *color_hash; /* hash table of allocated colors */
GdkColor *palette; /* preallocated palette */
gint num_palette; /* size of palette */
1997-12-18 00:27:10 +00:00
GdkColorContextDither *fast_dither; /* fast dither matrix */
1997-12-18 00:27:10 +00:00
struct
{
gint red;
gint green;
gint blue;
} shifts;
1997-12-18 00:27:10 +00:00
struct
{
gulong red;
gulong green;
gulong blue;
} masks;
struct
{
1997-12-18 00:27:10 +00:00
gint red;
gint green;
gint blue;
} bits;
1997-12-18 00:27:10 +00:00
gulong max_entry;
1997-12-18 00:27:10 +00:00
gulong black_pixel;
gulong white_pixel;
};
1997-11-24 22:37:52 +00:00
/* Types for XInput support */
struct _GdkDeviceKey
{
guint keyval;
GdkModifierType modifiers;
};
1997-11-24 22:37:52 +00:00
struct _GdkDeviceInfo
{
guint32 deviceid;
gchar *name;
GdkInputSource source;
GdkInputMode mode;
gint has_cursor; /* TRUE if the X pointer follows device motion */
gint num_axes;
GdkAxisUse *axes; /* Specifies use for each axis */
gint num_keys;
GdkDeviceKey *keys;
1997-11-24 22:37:52 +00:00
};
struct _GdkTimeCoord
{
guint32 time;
gdouble x;
gdouble y;
gdouble pressure;
gdouble xtilt;
gdouble ytilt;
};
/* Event filtering */
typedef void GdkXEvent; /* Can be cast to XEvent */
typedef GdkFilterReturn (*GdkFilterFunc) (GdkXEvent *xevent,
GdkEvent *event,
gpointer data);
1997-11-24 22:37:52 +00:00
struct _GdkEventAny
{
GdkEventType type;
GdkWindow *window;
gint8 send_event;
};
struct _GdkEventExpose
{
GdkEventType type;
GdkWindow *window;
gint8 send_event;
1997-11-24 22:37:52 +00:00
GdkRectangle area;
gint count; /* If non-zero, how many more events follow. */
};
struct _GdkEventNoExpose
{
GdkEventType type;
GdkWindow *window;
gint8 send_event;
/* XXX: does anyone need the X major_code or minor_code fields? */
};
struct _GdkEventVisibility
{
GdkEventType type;
GdkWindow *window;
gint8 send_event;
GdkVisibilityState state;
};
1997-11-24 22:37:52 +00:00
struct _GdkEventMotion
{
GdkEventType type;
GdkWindow *window;
gint8 send_event;
1997-11-24 22:37:52 +00:00
guint32 time;
gdouble x;
gdouble y;
gdouble pressure;
gdouble xtilt;
gdouble ytilt;
guint state;
gint16 is_hint;
GdkInputSource source;
guint32 deviceid;
gdouble x_root, y_root;
1997-11-24 22:37:52 +00:00
};
struct _GdkEventButton
{
GdkEventType type;
GdkWindow *window;
gint8 send_event;
1997-11-24 22:37:52 +00:00
guint32 time;
gdouble x;
gdouble y;
gdouble pressure;
gdouble xtilt;
gdouble ytilt;
guint state;
guint button;
GdkInputSource source;
guint32 deviceid;
gdouble x_root, y_root;
1997-11-24 22:37:52 +00:00
};
struct _GdkEventKey
{
GdkEventType type;
GdkWindow *window;
gint8 send_event;
1997-11-24 22:37:52 +00:00
guint32 time;
guint state;
guint keyval;
gint length;
gchar *string;
1997-11-24 22:37:52 +00:00
};
struct _GdkEventCrossing
{
GdkEventType type;
GdkWindow *window;
gint8 send_event;
1997-11-24 22:37:52 +00:00
GdkWindow *subwindow;
guint32 time;
gdouble x;
gdouble y;
gdouble x_root;
gdouble y_root;
GdkCrossingMode mode;
1997-11-24 22:37:52 +00:00
GdkNotifyType detail;
gboolean focus;
guint state;
1997-11-24 22:37:52 +00:00
};
struct _GdkEventFocus
{
GdkEventType type;
GdkWindow *window;
gint8 send_event;
1997-11-24 22:37:52 +00:00
gint16 in;
};
struct _GdkEventConfigure
{
GdkEventType type;
GdkWindow *window;
gint8 send_event;
1997-11-24 22:37:52 +00:00
gint16 x, y;
gint16 width;
gint16 height;
};
struct _GdkEventProperty
{
GdkEventType type;
GdkWindow *window;
gint8 send_event;
1997-11-24 22:37:52 +00:00
GdkAtom atom;
guint32 time;
guint state;
};
struct _GdkEventSelection
{
GdkEventType type;
GdkWindow *window;
gint8 send_event;
1997-11-24 22:37:52 +00:00
GdkAtom selection;
GdkAtom target;
GdkAtom property;
guint32 requestor;
guint32 time;
};
/* This event type will be used pretty rarely. It only is important
for XInput aware programs that are drawing their own cursor */
struct _GdkEventProximity
{
GdkEventType type;
GdkWindow *window;
gint8 send_event;
1997-11-24 22:37:52 +00:00
guint32 time;
GdkInputSource source;
guint32 deviceid;
};
struct _GdkEventDragRequest
{
GdkEventType type;
GdkWindow *window;
gint8 send_event;
1997-11-24 22:37:52 +00:00
guint32 requestor;
union {
struct {
guint protocol_version:4;
guint sendreply:1;
guint willaccept:1;
guint delete_data:1; /* Do *not* delete if link is sent, only
if data is sent */
guint senddata:1;
guint reserved:22;
} flags;
glong allflags;
} u;
guint8 isdrop; /* This gdk event can be generated by a couple of
X events - this lets the app know whether the
drop really occurred or we just set the data */
1997-11-24 22:37:52 +00:00
GdkPoint drop_coords;
gchar *data_type;
guint32 timestamp;
1997-11-24 22:37:52 +00:00
};
struct _GdkEventDragBegin
{
GdkEventType type;
GdkWindow *window;
gint8 send_event;
1997-11-24 22:37:52 +00:00
union {
struct {
guint protocol_version:4;
guint reserved:28;
} flags;
glong allflags;
} u;
};
struct _GdkEventDropEnter
{
GdkEventType type;
GdkWindow *window;
gint8 send_event;
1997-11-24 22:37:52 +00:00
guint32 requestor;
union {
struct {
guint protocol_version:4;
guint sendreply:1;
guint extended_typelist:1;
guint reserved:26;
} flags;
glong allflags;
} u;
};
struct _GdkEventDropLeave
{
GdkEventType type;
GdkWindow *window;
gint8 send_event;
1997-11-24 22:37:52 +00:00
guint32 requestor;
union {
struct {
guint protocol_version:4;
guint reserved:28;
} flags;
glong allflags;
} u;
};
struct _GdkEventDropDataAvailable
{
GdkEventType type;
GdkWindow *window;
gint8 send_event;
1997-11-24 22:37:52 +00:00
guint32 requestor;
union {
struct {
guint protocol_version:4;
guint isdrop:1;
guint reserved:25;
} flags;
glong allflags;
} u;
gchar *data_type; /* MIME type */
gulong data_numbytes;
gpointer data;
guint32 timestamp;
GdkPoint coords;
1997-11-24 22:37:52 +00:00
};
struct _GdkEventClient
{
GdkEventType type;
GdkWindow *window;
gint8 send_event;
1997-11-24 22:37:52 +00:00
GdkAtom message_type;
gushort data_format;
union {
char b[20];
short s[10];
long l[5];
} data;
};
struct _GdkEventOther
{
GdkEventType type;
GdkWindow *window;
gint8 send_event;
GdkXEvent *xevent;
1997-11-24 22:37:52 +00:00
};
union _GdkEvent
{
GdkEventType type;
GdkEventAny any;
GdkEventExpose expose;
GdkEventNoExpose no_expose;
GdkEventVisibility visibility;
GdkEventMotion motion;
GdkEventButton button;
GdkEventKey key;
GdkEventCrossing crossing;
GdkEventFocus focus_change;
GdkEventConfigure configure;
GdkEventProperty property;
GdkEventSelection selection;
GdkEventProximity proximity;
GdkEventDragBegin dragbegin;
GdkEventDragRequest dragrequest;
GdkEventDropEnter dropenter;
GdkEventDropLeave dropleave;
1997-11-24 22:37:52 +00:00
GdkEventDropDataAvailable dropdataavailable;
GdkEventClient client;
GdkEventOther other;
1997-11-24 22:37:52 +00:00
};
struct _GdkRegion
{
gpointer user_data;
};
1997-11-24 22:37:52 +00:00
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* __GDK_TYPES_H__ */