1 /*
2  * This file is part of gtkD.
3  *
4  * gtkD is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU Lesser General Public License
6  * as published by the Free Software Foundation; either version 3
7  * of the License, or (at your option) any later version, with
8  * some exceptions, please read the COPYING file.
9  *
10  * gtkD is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public License
16  * along with gtkD; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA
18  */
19  
20 // generated automatically - do not change
21 // find conversion definition on APILookup.txt
22 // implement new conversion functionalities on the wrap.utils pakage
23 
24 module gtkc.gdktypes;
25 
26 
27 public import gtkc.glibtypes;
28 public import gtkc.gobjecttypes;
29 public import gtkc.giotypes;
30 public import gtkc.pangotypes;
31 public import gtkc.gdkpixbuftypes;
32 
33 const int GDK_MAX_TIMECOORD_AXES = 128;
34 
35 
36 /**
37  * typedef guint32			 GdkWChar;
38  * Specifies a wide character type, used to represent character codes.
39  * This is needed since some native languages have character sets which have
40  * more than 256 characters (Japanese and Chinese, for example).
41  * Wide character values between 0 and 127 are always identical in meaning to
42  * the ASCII character codes. The wide character value 0 is often used to
43  * terminate strings of wide characters in a similar way to normal strings
44  * using the char type.
45  * An alternative to wide characters is multi-byte characters, which extend
46  * normal char strings to cope with larger character sets. As the name suggests,
47  * multi-byte characters use a different number of bytes to store different
48  * character codes. For example codes 0-127 (i.e. the ASCII codes) often
49  * use just one byte of memory, while other codes may use 2, 3 or even 4 bytes.
50  * Multi-byte characters have the advantage that they can often be used in an
51  * application with little change, since strings are still represented as arrays
52  * of char values. However multi-byte strings are much easier to manipulate since
53  * the character are all of the same size.
54  * Applications typically use wide characters to represent character codes
55  * internally, and multi-byte strings when saving the characters to a file.
56  * The gdk_wcstombs() and gdk_mbstowcs() functions can be used to convert from
57  * one representation to the other.
58  * See the 'Extended Characters' section of the GNU C Library Reference Manual
59  * for more detailed information on wide and multi-byte characters.
60  */
61 public alias uint GdkWChar;
62 
63 /**
64  * typedef void GdkXEvent;	 /+* Can be cast to window system specific
65  * Used to represent native events (XEvents for the X11
66  * backend, MSGs for Win32).
67  */
68 public alias void GdkXEvent;
69 
70 /**
71  * typedef gpointer GdkNativeWindow;
72  * Used to represent native windows (Windows for the X11 backend,
73  * HWNDs for Win32).
74  */
75 public alias void* GdkNativeWindow;
76 
77 /**
78  * typedef GdkAtom GdkSelection;
79  * Warning
80  * GdkSelection is deprecated and should not be used in newly-written code.
81  * The GdkSelection enumeration contains predefined
82  * atom values for several common selections.
83  */
84 public alias GdkAtom GdkSelection;
85 
86 /**
87  * typedef GdkAtom GdkSelectionType;
88  * Warning
89  * GdkSelectionType is deprecated and should not be used in newly-written code.
90  * The GdkSelectionType enumeration contains predefined
91  * atom values used to represent the types of data transferred
92  * in response to a request for a target. See the
93  * ICCCM for details about what data should be transferred
94  * for each of these types. Other atoms can be used,
95  * and the recommended practice for GTK+ is to to use mime
96  * types for this purpose. However, supporting these types
97  * may be useful for compatibility with older programs.
98  */
99 public alias GdkAtom GdkSelectionType;
100 
101 /**
102  * typedef GdkAtom GdkTarget;
103  * Warning
104  * GdkTarget is deprecated and should not be used in newly-written code.
105  * The GdkTarget enumeration contains predefined atom values which are
106  * used to describe possible targets for a selection. Other atoms can be
107  * used, and the recommended practice for GTK+ is to to use mime types
108  * for this purpose. However, supporting these types may be useful for
109  * compatibility with older programs.
110  */
111 public alias GdkAtom GdkTarget;
112 /**
113  * Returned by gdk_pointer_grab() and gdk_keyboard_grab() to indicate
114  * success or the reason for the failure of the grab attempt.
115  * GDK_GRAB_SUCCESS
116  * the resource was successfully grabbed.
117  * GDK_GRAB_ALREADY_GRABBED
118  * the resource is actively grabbed by another client.
119  * GDK_GRAB_INVALID_TIME
120  * the resource was grabbed more recently than the
121  *  specified time.
122  * GDK_GRAB_NOT_VIEWABLE
123  * the grab window or the confine_to window are not
124  *  viewable.
125  * GDK_GRAB_FROZEN
126  * the resource is frozen by an active grab of another client.
127  */
128 public enum GdkGrabStatus
129 {
130 	SUCCESS = 0,
131 	ALREADY_GRABBED = 1,
132 	INVALID_TIME = 2,
133 	NOT_VIEWABLE = 3,
134 	FROZEN = 4
135 }
136 alias GdkGrabStatus GrabStatus;
137 
138 /**
139  * Warning
140  * GdkFillRule is deprecated and should not be used in newly-written code.
141  * The method for determining which pixels are included in a region, when
142  * creating a GdkRegion from a polygon.
143  * The fill rule is only relevant for polygons which overlap themselves.
144  * GDK_EVEN_ODD_RULE
145  * areas which are overlapped an odd number of times are
146  * included in the region, while areas overlapped an even number of times are not.
147  * GDK_WINDING_RULE
148  * overlapping areas are always included.
149  */
150 public enum GdkFillRule
151 {
152 	EVEN_ODD_RULE,
153 	WINDING_RULE
154 }
155 alias GdkFillRule FillRule;
156 
157 /**
158  * Specifies the possible values returned by gdk_region_rect_in().
159  * GDK_OVERLAP_RECTANGLE_IN
160  * if the rectangle is inside the GdkRegion.
161  * GDK_OVERLAP_RECTANGLE_OUT
162  * if the rectangle is outside the GdkRegion.
163  * GDK_OVERLAP_RECTANGLE_PART
164  * if the rectangle is partly inside the GdkRegion.
165  */
166 public enum GdkOverlapType
167 {
168 	RECTANGLE_IN,
169 	RECTANGLE_OUT,
170 	RECTANGLE_PART
171 }
172 alias GdkOverlapType OverlapType;
173 
174 /**
175  * A set of bit flags used to indicate which fields
176  * GdkGCValues structure are set.
177  * GDK_GC_FOREGROUND
178  * the foreground is set.
179  * GDK_GC_BACKGROUND
180  * the background is set.
181  * GDK_GC_FONT
182  * the font is set.
183  * GDK_GC_FUNCTION
184  * the function is set.
185  * GDK_GC_FILL
186  * the fill is set.
187  * GDK_GC_TILE
188  * the tile is set.
189  * GDK_GC_STIPPLE
190  * the stipple is set.
191  * GDK_GC_CLIP_MASK
192  * the clip_mask is set.
193  * GDK_GC_SUBWINDOW
194  * the subwindow_mode is set.
195  * GDK_GC_TS_X_ORIGIN
196  * the ts_x_origin is set.
197  * GDK_GC_TS_Y_ORIGIN
198  * the ts_y_origin is set.
199  * GDK_GC_CLIP_X_ORIGIN
200  * the clip_x_origin is set.
201  * GDK_GC_CLIP_Y_ORIGIN
202  * the clip_y_origin is set.
203  * GDK_GC_EXPOSURES
204  * the graphics_exposures is set.
205  * GDK_GC_LINE_WIDTH
206  * the line_width is set.
207  * GDK_GC_LINE_STYLE
208  * the line_style is set.
209  * GDK_GC_CAP_STYLE
210  * the cap_style is set.
211  * GDK_GC_JOIN_STYLE
212  * the join_style is set.
213  */
214 public enum GdkGCValuesMask
215 {
216 	FOREGROUND = 1 << 0,
217 	BACKGROUND = 1 << 1,
218 	FONT = 1 << 2,
219 	FUNCTION = 1 << 3,
220 	FILL = 1 << 4,
221 	TILE = 1 << 5,
222 	STIPPLE = 1 << 6,
223 	CLIP_MASK = 1 << 7,
224 	SUBWINDOW = 1 << 8,
225 	TS_X_ORIGIN = 1 << 9,
226 	TS_Y_ORIGIN = 1 << 10,
227 	CLIP_X_ORIGIN = 1 << 11,
228 	CLIP_Y_ORIGIN = 1 << 12,
229 	EXPOSURES = 1 << 13,
230 	LINE_WIDTH = 1 << 14,
231 	LINE_STYLE = 1 << 15,
232 	CAP_STYLE = 1 << 16,
233 	JOIN_STYLE = 1 << 17
234 }
235 alias GdkGCValuesMask GCValuesMask;
236 
237 /**
238  * Determines how the bit values for the source pixels are combined with
239  * the bit values for destination pixels to produce the final result. The
240  * sixteen values here correspond to the 16 different possible 2x2 truth
241  * tables. Only a couple of these values are usually useful; for colored
242  * images, only GDK_COPY, GDK_XOR and GDK_INVERT are generally
243  * useful. For bitmaps, GDK_AND and GDK_OR are also useful.
244  * GDK_COPY
245  * dst = src
246  * GDK_INVERT
247  * dst = NOT dst
248  * GDK_XOR
249  * dst = src XOR dst
250  * GDK_CLEAR
251  * dst = 0
252  * GDK_AND
253  * dst = dst AND src
254  * GDK_AND_REVERSE
255  * dst = src AND (NOT dst)
256  * GDK_AND_INVERT
257  * dst = (NOT src) AND dst
258  * GDK_NOOP
259  * dst = dst
260  * GDK_OR
261  * dst = src OR dst
262  * GDK_EQUIV
263  * dst = (NOT src) XOR dst
264  * GDK_OR_REVERSE
265  * dst = src OR (NOT dst)
266  * GDK_COPY_INVERT
267  * dst = NOT src
268  * GDK_OR_INVERT
269  * dst = (NOT src) OR dst
270  * GDK_NAND
271  * dst = (NOT src) OR (NOT dst)
272  * GDK_NOR
273  * dst = (NOT src) AND (NOT dst)
274  * GDK_SET
275  * dst = 1
276  */
277 public enum GdkFunction
278 {
279 	COPY,
280 	INVERT,
281 	XOR,
282 	CLEAR,
283 	AND,
284 	AND_REVERSE,
285 	AND_INVERT,
286 	NOOP,
287 	OR,
288 	EQUIV,
289 	OR_REVERSE,
290 	COPY_INVERT,
291 	OR_INVERT,
292 	NAND,
293 	NOR,
294 	SET
295 }
296 alias GdkFunction Funct;
297 
298 /**
299  * Determines how primitives are drawn.
300  * GDK_SOLID
301  * draw with the foreground color.
302  * GDK_TILED
303  * draw with a tiled pixmap.
304  * GDK_STIPPLED
305  * draw using the stipple bitmap. Pixels corresponding
306  *  to bits in the stipple bitmap that are set will be drawn in the
307  *  foreground color; pixels corresponding to bits that are
308  *  not set will be left untouched.
309  * GDK_OPAQUE_STIPPLED
310  * draw using the stipple bitmap. Pixels corresponding
311  *  to bits in the stipple bitmap that are set will be drawn in the
312  *  foreground color; pixels corresponding to bits that are
313  *  not set will be drawn with the background color.
314  */
315 public enum GdkFill
316 {
317 	SOLID,
318 	TILED,
319 	STIPPLED,
320 	OPAQUE_STIPPLED
321 }
322 alias GdkFill Fill;
323 
324 /**
325  * Determines how drawing onto a window will affect child
326  * windows of that window.
327  * GDK_CLIP_BY_CHILDREN
328  * only draw onto the window itself.
329  * GDK_INCLUDE_INFERIORS
330  * draw onto the window and child windows.
331  */
332 public enum GdkSubwindowMode
333 {
334 	CLIP_BY_CHILDREN = 0,
335 	INCLUDE_INFERIORS = 1
336 }
337 alias GdkSubwindowMode SubwindowMode;
338 
339 /**
340  * Determines how lines are drawn.
341  * GDK_LINE_SOLID
342  * lines are drawn solid.
343  * GDK_LINE_ON_OFF_DASH
344  * even segments are drawn; odd segments are not drawn.
345  * GDK_LINE_DOUBLE_DASH
346  * even segments are normally. Odd segments are drawn
347  *  in the background color if the fill style is GDK_SOLID, or in the background
348  *  color masked by the stipple if the fill style is GDK_STIPPLED.
349  */
350 public enum GdkLineStyle
351 {
352 	SOLID,
353 	ON_OFF_DASH,
354 	DOUBLE_DASH
355 }
356 alias GdkLineStyle LineStyle;
357 
358 /**
359  * Determines how the end of lines are drawn.
360  * GDK_CAP_NOT_LAST
361  * the same as GDK_CAP_BUTT for lines of non-zero width.
362  *  for zero width lines, the final point on the line will not be drawn.
363  * GDK_CAP_BUTT
364  * the ends of the lines are drawn squared off and extending
365  *  to the coordinates of the end point.
366  * GDK_CAP_ROUND
367  * the ends of the lines are drawn as semicircles with the
368  *  diameter equal to the line width and centered at the end point.
369  * GDK_CAP_PROJECTING
370  * the ends of the lines are drawn squared off and extending
371  *  half the width of the line beyond the end point.
372  */
373 public enum GdkCapStyle
374 {
375 	NOT_LAST,
376 	BUTT,
377 	ROUND,
378 	PROJECTING
379 }
380 alias GdkCapStyle CapStyle;
381 
382 /**
383  * Determines how the joins between segments of a polygon are drawn.
384  * GDK_JOIN_MITER
385  * the sides of each line are extended to meet at an angle.
386  * GDK_JOIN_ROUND
387  * the sides of the two lines are joined by a circular arc.
388  * GDK_JOIN_BEVEL
389  * the sides of the two lines are joined by a straight line which
390  *  makes an equal angle with each line.
391  */
392 public enum GdkJoinStyle
393 {
394 	MITER,
395 	ROUND,
396 	BEVEL
397 }
398 alias GdkJoinStyle JoinStyle;
399 
400 /**
401  * Selects whether or not GdkRGB applies dithering
402  * to the image on display.
403  * Since GdkRGB currently only handles images with 8 bits per component,
404  * dithering on 24 bit per pixel displays is a moot point.
405  * GDK_RGB_DITHER_NONE
406  * Never use dithering.
407  * GDK_RGB_DITHER_NORMAL
408  * Use dithering in 8 bits per pixel (and below)
409  * only.
410  * GDK_RGB_DITHER_MAX
411  * Use dithering in 16 bits per pixel and below.
412  */
413 public enum GdkRgbDither
414 {
415 	NONE,
416 	NORMAL,
417 	MAX
418 }
419 alias GdkRgbDither RgbDither;
420 
421 /**
422  * Specifies the type of a GdkImage.
423  * GDK_IMAGE_NORMAL
424  * The original X image type, which is quite slow since the
425  * image has to be transferred from the client to the server to display it.
426  * GDK_IMAGE_SHARED
427  * A faster image type, which uses shared memory to transfer
428  * the image data between client and server. However this will only be available
429  * if client and server are on the same machine and the shared memory extension
430  * is supported by the server.
431  * GDK_IMAGE_FASTEST
432  * Specifies that GDK_IMAGE_SHARED should be tried first,
433  * and if that fails then GDK_IMAGE_NORMAL will be used.
434  */
435 public enum GdkImageType
436 {
437 	NORMAL,
438 	SHARED,
439 	FASTEST
440 }
441 alias GdkImageType ImageType;
442 
443 /**
444  * An error code in the GDK_PIXBUF_ERROR domain. Many gdk-pixbuf;
445  * operations can cause errors in this domain, or in the G_FILE_ERROR
446  * domain.
447  * GDK_PIXBUF_ERROR_CORRUPT_IMAGE
448  * An image file was broken somehow.
449  * GDK_PIXBUF_ERROR_INSUFFICIENT_MEMORY
450  * Not enough memory.
451  * GDK_PIXBUF_ERROR_BAD_OPTION
452  * A bad option was passed to a pixbuf save module.
453  * GDK_PIXBUF_ERROR_UNKNOWN_TYPE
454  * Unknown image type.
455  * GDK_PIXBUF_ERROR_UNSUPPORTED_OPERATION
456  * Don't know how to perform the
457  *  given operation on the type of image at hand.
458  * GDK_PIXBUF_ERROR_FAILED
459  * Generic failure code, something went wrong.
460  */
461 public enum GdkPixbufError
462 {
463 	/+* image data hosed +/
464 	CORRUPT_IMAGE,
465 	/+* no mem to load image +/
466 	INSUFFICIENT_MEMORY,
467 	/+* bad option passed to save routine +/
468 	BAD_OPTION,
469 	/+* unsupported image type (sort of an ENOSYS) +/
470 	UNKNOWN_TYPE,
471 	/+* unsupported operation (load, save) for image type +/
472 	UNSUPPORTED_OPERATION,
473 	FAILED
474 }
475 alias GdkPixbufError PixbufError;
476 
477 /**
478  * This enumeration defines the color spaces that are supported by
479  * the gdk-pixbuf; library. Currently only RGB is supported.
480  * GDK_COLORSPACE_RGB
481  * Indicates a red/green/blue additive color space.
482  */
483 public enum GdkColorspace
484 {
485 	RGB
486 }
487 alias GdkColorspace Colorspace;
488 
489 /**
490  * These values can be passed to
491  * gdk_pixbuf_render_to_drawable_alpha() to control how the alpha
492  * channel of an image should be handled. This function can create a
493  * bilevel clipping mask (black and white) and use it while painting
494  * the image. In the future, when the X Window System gets an alpha
495  * channel extension, it will be possible to do full alpha
496  * compositing onto arbitrary drawables. For now both cases fall
497  * back to a bilevel clipping mask.
498  * GDK_PIXBUF_ALPHA_BILEVEL
499  * A bilevel clipping mask (black and white)
500  *  will be created and used to draw the image. Pixels below 0.5 opacity
501  *  will be considered fully transparent, and all others will be
502  *  considered fully opaque.
503  * GDK_PIXBUF_ALPHA_FULL
504  * For now falls back to GDK_PIXBUF_ALPHA_BILEVEL.
505  *  In the future it will do full alpha compositing.
506  */
507 public enum GdkPixbufAlphaMode
508 {
509 	BILEVEL,
510 	FULL
511 }
512 alias GdkPixbufAlphaMode PixbufAlphaMode;
513 
514 /**
515  * This enumeration describes the different interpolation modes that
516  *  can be used with the scaling functions. GDK_INTERP_NEAREST is
517  *  the fastest scaling method, but has horrible quality when
518  *  scaling down. GDK_INTERP_BILINEAR is the best choice if you
519  *  aren't sure what to choose, it has a good speed/quality balance.
520  * Note
521  * 	Cubic filtering is missing from the list; hyperbolic
522  * 	interpolation is just as fast and results in higher quality.
523  * GDK_INTERP_NEAREST
524  * Nearest neighbor sampling; this is the fastest
525  *  and lowest quality mode. Quality is normally unacceptable when scaling
526  *  down, but may be OK when scaling up.
527  * GDK_INTERP_TILES
528  * This is an accurate simulation of the PostScript
529  *  image operator without any interpolation enabled. Each pixel is
530  *  rendered as a tiny parallelogram of solid color, the edges of which
531  *  are implemented with antialiasing. It resembles nearest neighbor for
532  *  enlargement, and bilinear for reduction.
533  * GDK_INTERP_BILINEAR
534  * Best quality/speed balance; use this mode by
535  *  default. Bilinear interpolation. For enlargement, it is
536  *  equivalent to point-sampling the ideal bilinear-interpolated image.
537  *  For reduction, it is equivalent to laying down small tiles and
538  *  integrating over the coverage area.
539  * GDK_INTERP_HYPER
540  * This is the slowest and highest quality
541  *  reconstruction function. It is derived from the hyperbolic filters in
542  *  Wolberg's "Digital Image Warping", and is formally defined as the
543  *  hyperbolic-filter sampling the ideal hyperbolic-filter interpolated
544  *  image (the filter is designed to be idempotent for 1:1 pixel mapping).
545  */
546 public enum GdkInterpType
547 {
548 	NEAREST,
549 	TILES,
550 	BILINEAR,
551 	HYPER
552 }
553 alias GdkInterpType InterpType;
554 
555 /**
556  * The possible rotations which can be passed to gdk_pixbuf_rotate_simple().
557  * To make them easier to use, their numerical values are the actual degrees.
558  * GDK_PIXBUF_ROTATE_NONE
559  * No rotation.
560  * GDK_PIXBUF_ROTATE_COUNTERCLOCKWISE
561  * Rotate by 90 degrees.
562  * GDK_PIXBUF_ROTATE_UPSIDEDOWN
563  * Rotate by 180 degrees.
564  * GDK_PIXBUF_ROTATE_CLOCKWISE
565  * Rotate by 270 degrees.
566  */
567 public enum GdkPixbufRotation
568 {
569 	ROTATE_NONE = 0,
570 	ROTATE_COUNTERCLOCKWISE = 90,
571 	ROTATE_UPSIDEDOWN = 180,
572 	ROTATE_CLOCKWISE = 270
573 }
574 alias GdkPixbufRotation PixbufRotation;
575 
576 /**
577  * A set of values that describe the manner in which the
578  * pixel values for a visual are converted into RGB
579  * values for display.
580  * GDK_VISUAL_STATIC_GRAY
581  * Each pixel value indexes a grayscale value directly.
582  * GDK_VISUAL_GRAYSCALE
583  * Each pixel is an index into a color map that maps pixel
584  *  values into grayscale values. The color map can be changed by an application.
585  * GDK_VISUAL_STATIC_COLOR
586  * Each pixel value is an index into a predefined,
587  *  unmodifiable color map that maps pixel values into RGB values.
588  * GDK_VISUAL_PSEUDO_COLOR
589  * Each pixel is an index into a color map that maps
590  *  pixel values into rgb values. The color map can be changed by an application.
591  * GDK_VISUAL_TRUE_COLOR
592  * Each pixel value directly contains red, green,
593  *  and blue components. The red_mask,
594  *  green_mask, and
595  *  blue_mask fields of the GdkVisual
596  *  structure describe how the components are assembled into a pixel value.
597  * GDK_VISUAL_DIRECT_COLOR
598  * Each pixel value contains red, green, and blue
599  *  components as for GDK_VISUAL_TRUE_COLOR, but the components are mapped via a
600  *  color table into the final output table instead of being converted directly.
601  */
602 public enum GdkVisualType
603 {
604 	STATIC_GRAY,
605 	GRAYSCALE,
606 	STATIC_COLOR,
607 	PSEUDO_COLOR,
608 	TRUE_COLOR,
609 	DIRECT_COLOR
610 }
611 alias GdkVisualType VisualType;
612 
613 /**
614  * A set of values describing the possible byte-orders
615  * for storing pixel values in memory.
616  * GDK_LSB_FIRST
617  * The values are stored with the least-significant byte
618  *  first. For instance, the 32-bit value 0xffeecc would be stored
619  *  in memory as 0xcc, 0xee, 0xff, 0x00.
620  * GDK_MSB_FIRST
621  * The values are stored with the most-significant byte
622  * first. For instance, the 32-bit value 0xffeecc would be stored
623  * in memory as 0x00, 0xcc, 0xee, 0xff.
624  */
625 public enum GdkByteOrder
626 {
627 	LSB_FIRST,
628 	MSB_FIRST
629 }
630 alias GdkByteOrder ByteOrder;
631 
632 /**
633  * Warning
634  * GdkFontType is deprecated and should not be used in newly-written code.
635  * Indicates the type of a font. The possible values
636  * are currently:
637  * GDK_FONT_FONT
638  * the font is a single font.
639  * GDK_FONT_FONTSET
640  * the font is a fontset.
641  */
642 public enum GdkFontType
643 {
644 	FONT,
645 	FONTSET
646 }
647 alias GdkFontType FontType;
648 
649 /**
650  * The standard cursors available.
651  * GDK_X_CURSOR
652  * GDK_ARROW
653  * GDK_BASED_ARROW_DOWN
654  * GDK_BASED_ARROW_UP
655  * GDK_BOAT
656  * GDK_BOGOSITY
657  * GDK_BOTTOM_LEFT_CORNER
658  * GDK_BOTTOM_RIGHT_CORNER
659  * GDK_BOTTOM_SIDE
660  * GDK_BOTTOM_TEE
661  * GDK_BOX_SPIRAL
662  * GDK_CENTER_PTR
663  * GDK_CIRCLE
664  * GDK_CLOCK
665  * GDK_COFFEE_MUG
666  * GDK_CROSS
667  * GDK_CROSS_REVERSE
668  * GDK_CROSSHAIR
669  * GDK_DIAMOND_CROSS
670  * GDK_DOT
671  * GDK_DOTBOX
672  * GDK_DOUBLE_ARROW
673  * GDK_DRAFT_LARGE
674  * GDK_DRAFT_SMALL
675  * GDK_DRAPED_BOX
676  * GDK_EXCHANGE
677  * GDK_FLEUR
678  * GDK_GOBBLER
679  * GDK_GUMBY
680  * GDK_HAND1
681  * GDK_HAND2
682  * GDK_HEART
683  * GDK_ICON
684  * GDK_IRON_CROSS
685  * GDK_LEFT_PTR
686  * GDK_LEFT_SIDE
687  * GDK_LEFT_TEE
688  * GDK_LEFTBUTTON
689  * GDK_LL_ANGLE
690  * GDK_LR_ANGLE
691  * GDK_MAN
692  * GDK_MIDDLEBUTTON
693  * GDK_MOUSE
694  * GDK_PENCIL
695  * GDK_PIRATE
696  * GDK_PLUS
697  * GDK_QUESTION_ARROW
698  * GDK_RIGHT_PTR
699  * GDK_RIGHT_SIDE
700  * GDK_RIGHT_TEE
701  * GDK_RIGHTBUTTON
702  * GDK_RTL_LOGO
703  * GDK_SAILBOAT
704  * GDK_SB_DOWN_ARROW
705  * GDK_SB_H_DOUBLE_ARROW
706  * GDK_SB_LEFT_ARROW
707  * GDK_SB_RIGHT_ARROW
708  * GDK_SB_UP_ARROW
709  * GDK_SB_V_DOUBLE_ARROW
710  * GDK_SHUTTLE
711  * GDK_SIZING
712  * GDK_SPIDER
713  * GDK_SPRAYCAN
714  * GDK_STAR
715  * GDK_TARGET
716  * GDK_TCROSS
717  * GDK_TOP_LEFT_ARROW
718  * GDK_TOP_LEFT_CORNER
719  * GDK_TOP_RIGHT_CORNER
720  * GDK_TOP_SIDE
721  * GDK_TOP_TEE
722  * GDK_TREK
723  * GDK_UL_ANGLE
724  * GDK_UMBRELLA
725  * GDK_UR_ANGLE
726  * GDK_WATCH
727  * GDK_XTERM
728  * GDK_LAST_CURSOR
729  * last cursor type
730  * GDK_BLANK_CURSOR
731  * Blank cursor. Since 2.16
732  * GDK_CURSOR_IS_PIXMAP
733  * type of cursors constructed with
734  *  gdk_cursor_new_from_pixmap() or gdk_cursor_new_from_pixbuf()
735  */
736 public enum GdkCursorType
737 {
738 	X_CURSOR = 0,
739 	ARROW = 2,
740 	BASED_ARROW_DOWN = 4,
741 	BASED_ARROW_UP = 6,
742 	BOAT = 8,
743 	BOGOSITY = 10,
744 	BOTTOM_LEFT_CORNER = 12,
745 	BOTTOM_RIGHT_CORNER = 14,
746 	BOTTOM_SIDE = 16,
747 	BOTTOM_TEE = 18,
748 	BOX_SPIRAL = 20,
749 	CENTER_PTR = 22,
750 	CIRCLE = 24,
751 	CLOCK = 26,
752 	COFFEE_MUG = 28,
753 	CROSS = 30,
754 	CROSS_REVERSE = 32,
755 	CROSSHAIR = 34,
756 	DIAMOND_CROSS = 36,
757 	DOT = 38,
758 	DOTBOX = 40,
759 	DOUBLE_ARROW = 42,
760 	DRAFT_LARGE = 44,
761 	DRAFT_SMALL = 46,
762 	DRAPED_BOX = 48,
763 	EXCHANGE = 50,
764 	FLEUR = 52,
765 	GOBBLER = 54,
766 	GUMBY = 56,
767 	HAND1 = 58,
768 	HAND2 = 60,
769 	HEART = 62,
770 	ICON = 64,
771 	IRON_CROSS = 66,
772 	LEFT_PTR = 68,
773 	LEFT_SIDE = 70,
774 	LEFT_TEE = 72,
775 	LEFTBUTTON = 74,
776 	LL_ANGLE = 76,
777 	LR_ANGLE = 78,
778 	MAN = 80,
779 	MIDDLEBUTTON = 82,
780 	MOUSE = 84,
781 	PENCIL = 86,
782 	PIRATE = 88,
783 	PLUS = 90,
784 	QUESTION_ARROW = 92,
785 	RIGHT_PTR = 94,
786 	RIGHT_SIDE = 96,
787 	RIGHT_TEE = 98,
788 	RIGHTBUTTON = 100,
789 	RTL_LOGO = 102,
790 	SAILBOAT = 104,
791 	SB_DOWN_ARROW = 106,
792 	SB_H_DOUBLE_ARROW = 108,
793 	SB_LEFT_ARROW = 110,
794 	SB_RIGHT_ARROW = 112,
795 	SB_UP_ARROW = 114,
796 	SB_V_DOUBLE_ARROW = 116,
797 	SHUTTLE = 118,
798 	SIZING = 120,
799 	SPIDER = 122,
800 	SPRAYCAN = 124,
801 	STAR = 126,
802 	TARGET = 128,
803 	TCROSS = 130,
804 	TOP_LEFT_ARROW = 132,
805 	TOP_LEFT_CORNER = 134,
806 	TOP_RIGHT_CORNER = 136,
807 	TOP_SIDE = 138,
808 	TOP_TEE = 140,
809 	TREK = 142,
810 	UL_ANGLE = 144,
811 	UMBRELLA = 146,
812 	UR_ANGLE = 148,
813 	WATCH = 150,
814 	XTERM = 152,
815 	LAST_CURSOR,
816 	BLANK_CURSOR = -2,
817 	CURSOR_IS_PIXMAP = -1
818 }
819 alias GdkCursorType CursorType;
820 
821 /**
822  * Describes the kind of window.
823  * GDK_WINDOW_ROOT
824  * root window; this window has no parent, covers the entire screen, and is created by the window system
825  * GDK_WINDOW_TOPLEVEL
826  * toplevel window (used to implement GtkWindow)
827  * GDK_WINDOW_CHILD
828  * child window (used to implement e.g. GtkEntry)
829  * GDK_WINDOW_DIALOG
830  * useless/deprecated compatibility type
831  * GDK_WINDOW_TEMP
832  * override redirect temporary window (used to implement GtkMenu)
833  * GDK_WINDOW_FOREIGN
834  * foreign window (see gdk_window_foreign_new())
835  * GDK_WINDOW_OFFSCREEN
836  * offscreen window (see the section called “Offscreen Windows”). Since 2.18
837  */
838 public enum GdkWindowType
839 {
840 	ROOT,
841 	TOPLEVEL,
842 	CHILD,
843 	DIALOG,
844 	TEMP,
845 	FOREIGN,
846 	OFFSCREEN
847 }
848 alias GdkWindowType WindowType;
849 
850 /**
851  * GDK_INPUT_OUTPUT windows are the standard kind of window you might expect.
852  * GDK_INPUT_ONLY windows are invisible; they are used to trap events, but
853  * you can't draw on them.
854  * GDK_INPUT_OUTPUT
855  * window for graphics and events
856  * GDK_INPUT_ONLY
857  * window for events only
858  */
859 public enum GdkWindowClass
860 {
861 	INPUT_OUTPUT,
862 	INPUT_ONLY
863 }
864 alias GdkWindowClass WindowClass;
865 
866 /**
867  * Used to indicate which fields of a GdkGeometry struct should be paid attention
868  * to. Also, the presence/absence of GDK_HINT_POS, GDK_HINT_USER_POS, and
869  * GDK_HINT_USER_SIZE is significant, though they don't directly refer to
870  * GdkGeometry fields. GDK_HINT_USER_POS will be set automatically by GtkWindow
871  * if you call gtk_window_move(). GDK_HINT_USER_POS and GDK_HINT_USER_SIZE
872  * should be set if the user specified a size/position using a --geometry
873  * command-line argument; gtk_window_parse_geometry() automatically sets these
874  * flags.
875  * GDK_HINT_POS
876  * indicates that the program has positioned the window
877  * GDK_HINT_MIN_SIZE
878  * min size fields are set
879  * GDK_HINT_MAX_SIZE
880  * max size fields are set
881  * GDK_HINT_BASE_SIZE
882  * base size fields are set
883  * GDK_HINT_ASPECT
884  * aspect ratio fields are set
885  * GDK_HINT_RESIZE_INC
886  * resize increment fields are set
887  * GDK_HINT_WIN_GRAVITY
888  * window gravity field is set
889  * GDK_HINT_USER_POS
890  * indicates that the window's position was explicitly set by the user
891  * GDK_HINT_USER_SIZE
892  * indicates that the window's size was explicitly set by the user
893  */
894 public enum GdkWindowHints
895 {
896 	HINT_POS = 1 << 0,
897 	HINT_MIN_SIZE = 1 << 1,
898 	HINT_MAX_SIZE = 1 << 2,
899 	HINT_BASE_SIZE = 1 << 3,
900 	HINT_ASPECT = 1 << 4,
901 	HINT_RESIZE_INC = 1 << 5,
902 	HINT_WIN_GRAVITY = 1 << 6,
903 	HINT_USER_POS = 1 << 7,
904 	HINT_USER_SIZE = 1 << 8
905 }
906 alias GdkWindowHints WindowHints;
907 
908 /**
909  * Defines the reference point of a window and the meaning of coordinates
910  * passed to gtk_window_move(). See gtk_window_move() and the "implementation
911  * notes" section of the
912  * Extended
913  * Window Manager Hints specification for more details.
914  * GDK_GRAVITY_NORTH_WEST
915  * the reference point is at the top left corner.
916  * GDK_GRAVITY_NORTH
917  * the reference point is in the middle of the top edge.
918  * GDK_GRAVITY_NORTH_EAST
919  * the reference point is at the top right corner.
920  * GDK_GRAVITY_WEST
921  * the reference point is at the middle of the left edge.
922  * GDK_GRAVITY_CENTER
923  * the reference point is at the center of the window.
924  * GDK_GRAVITY_EAST
925  * the reference point is at the middle of the right edge.
926  * GDK_GRAVITY_SOUTH_WEST
927  * the reference point is at the lower left corner.
928  * GDK_GRAVITY_SOUTH
929  * the reference point is at the middle of the lower edge.
930  * GDK_GRAVITY_SOUTH_EAST
931  * the reference point is at the lower right corner.
932  * GDK_GRAVITY_STATIC
933  * the reference point is at the top left corner of the
934  *  window itself, ignoring window manager decorations.
935  */
936 public enum GdkGravity
937 {
938 	NORTH_WEST = 1,
939 	NORTH,
940 	NORTH_EAST,
941 	WEST,
942 	CENTER,
943 	EAST,
944 	SOUTH_WEST,
945 	SOUTH,
946 	SOUTH_EAST,
947 	STATIC
948 }
949 alias GdkGravity Gravity;
950 
951 /**
952  * Determines a window edge or corner.
953  * GDK_WINDOW_EDGE_NORTH_WEST
954  * the top left corner.
955  * GDK_WINDOW_EDGE_NORTH
956  * the top edge.
957  * GDK_WINDOW_EDGE_NORTH_EAST
958  * the top right corner.
959  * GDK_WINDOW_EDGE_WEST
960  * the left edge.
961  * GDK_WINDOW_EDGE_EAST
962  * the right edge.
963  * GDK_WINDOW_EDGE_SOUTH_WEST
964  * the lower left corner.
965  * GDK_WINDOW_EDGE_SOUTH
966  * the lower edge.
967  * GDK_WINDOW_EDGE_SOUTH_EAST
968  * the lower right corner.
969  */
970 public enum GdkWindowEdge
971 {
972 	NORTH_WEST,
973 	NORTH,
974 	NORTH_EAST,
975 	WEST,
976 	EAST,
977 	SOUTH_WEST,
978 	SOUTH,
979 	SOUTH_EAST
980 }
981 alias GdkWindowEdge WindowEdge;
982 
983 /**
984  * These are hints for the window manager that indicate what type of function
985  * the window has. The window manager can use this when determining decoration
986  * and behaviour of the window. The hint must be set before mapping the window.
987  * See the
988  * Extended
989  * Window Manager Hints specification for more details about
990  * window types.
991  * GDK_WINDOW_TYPE_HINT_NORMAL
992  * Normal toplevel window.
993  * GDK_WINDOW_TYPE_HINT_DIALOG
994  * Dialog window.
995  * GDK_WINDOW_TYPE_HINT_MENU
996  * Window used to implement a menu; GTK+ uses
997  *  this hint only for torn-off menus, see GtkTearoffMenuItem.
998  * GDK_WINDOW_TYPE_HINT_TOOLBAR
999  * Window used to implement toolbars.
1000  * GDK_WINDOW_TYPE_HINT_SPLASHSCREEN
1001  * Window used to display a splash
1002  *  screen during application startup.
1003  * GDK_WINDOW_TYPE_HINT_UTILITY
1004  * Utility windows which are not detached
1005  *  toolbars or dialogs.
1006  * GDK_WINDOW_TYPE_HINT_DOCK
1007  * Used for creating dock or panel windows.
1008  * GDK_WINDOW_TYPE_HINT_DESKTOP
1009  * Used for creating the desktop background
1010  * window.
1011  * GDK_WINDOW_TYPE_HINT_DROPDOWN_MENU
1012  * A menu that belongs to a menubar.
1013  * GDK_WINDOW_TYPE_HINT_POPUP_MENU
1014  * A menu that does not belong to a menubar,
1015  *  e.g. a context menu.
1016  * GDK_WINDOW_TYPE_HINT_TOOLTIP
1017  * A tooltip.
1018  * GDK_WINDOW_TYPE_HINT_NOTIFICATION
1019  * A notification - typically a "bubble"
1020  *  that belongs to a status icon.
1021  * GDK_WINDOW_TYPE_HINT_COMBO
1022  * A popup from a combo box.
1023  * GDK_WINDOW_TYPE_HINT_DND
1024  * A window that is used to implement a DND cursor.
1025  */
1026 public enum GdkWindowTypeHint
1027 {
1028 	NORMAL,
1029 	DIALOG,
1030 	MENU, /+* Torn off menu +/
1031 	TOOLBAR,
1032 	SPLASHSCREEN,
1033 	UTILITY,
1034 	DOCK,
1035 	DESKTOP,
1036 	DROPDOWN_MENU, /+* A drop down menu (from a menubar) +/
1037 	POPUP_MENU, /+* A popup menu (from right-click) +/
1038 	TOOLTIP,
1039 	NOTIFICATION,
1040 	COMBO,
1041 	DND
1042 }
1043 alias GdkWindowTypeHint WindowTypeHint;
1044 
1045 /**
1046  * Used to indicate which fields in the GdkWindowAttr struct should be
1047  * honored. For example, if you filled in the "cursor" and "x" fields of
1048  * GdkWindowAttr, pass "GDK_WA_X | GDK_WA_CURSOR" to gdk_window_new(). Fields
1049  * in GdkWindowAttr not covered by a bit in this enum are required; for example,
1050  * the width/height, wclass, and window_type fields are required, they have no
1051  * corresponding flag in GdkWindowAttributesType.
1052  * GDK_WA_TITLE
1053  * Honor the title field
1054  * GDK_WA_X
1055  * Honor the X coordinate field
1056  * GDK_WA_Y
1057  * Honor the Y coordinate field
1058  * GDK_WA_CURSOR
1059  * Honor the cursor field
1060  * GDK_WA_COLORMAP
1061  * Honor the colormap field
1062  * GDK_WA_VISUAL
1063  * Honor the visual field
1064  * GDK_WA_WMCLASS
1065  * Honor the wmclass_class and wmclass_name fields
1066  * GDK_WA_NOREDIR
1067  * Honor the override_redirect field
1068  * GDK_WA_TYPE_HINT
1069  * Honor the type_hint field
1070  */
1071 public enum GdkWindowAttributesType
1072 {
1073 	WA_TITLE = 1 << 1,
1074 	WA_X = 1 << 2,
1075 	WA_Y = 1 << 3,
1076 	WA_CURSOR = 1 << 4,
1077 	WA_COLORMAP = 1 << 5,
1078 	WA_VISUAL = 1 << 6,
1079 	WA_WMCLASS = 1 << 7,
1080 	WA_NOREDIR = 1 << 8,
1081 	WA_TYPE_HINT = 1 << 9
1082 }
1083 alias GdkWindowAttributesType WindowAttributesType;
1084 
1085 /**
1086  * Specifies the result of applying a GdkFilterFunc to a native event.
1087  * GDK_FILTER_CONTINUE
1088  * event not handled, continue processing.
1089  * GDK_FILTER_TRANSLATE
1090  * native event translated into a GDK event and stored
1091  *  in the event structure that was passed in.
1092  * GDK_FILTER_REMOVE
1093  * event handled, terminate processing.
1094  */
1095 public enum GdkFilterReturn
1096 {
1097 	CONTINUE, /+* Event not handled, continu processesing +/
1098 	TRANSLATE, /+* Native event translated into a GDK event and
1099 	stored inn the "event" structure that was
1100 	passed inn +/
1101 	REMOVE /+* Terminate processing, removing event +/
1102 }
1103 alias GdkFilterReturn FilterReturn;
1104 
1105 /**
1106  * A set of bit-flags to indicate the state of modifier keys and mouse buttons
1107  * in various event types. Typical modifier keys are Shift, Control, Meta, Super,
1108  * Hyper, Alt, Compose, Apple, CapsLock or ShiftLock.
1109  * Like the X Window System, GDK supports 8 modifier keys and 5 mouse buttons.
1110  * Since 2.10, GDK recognizes which of the Meta, Super or Hyper keys are mapped
1111  * to Mod2 - Mod5, and indicates this by setting GDK_SUPER_MASK, GDK_HYPER_MASK
1112  * or GDK_META_MASK in the state field of key events.
1113  * GDK_SHIFT_MASK
1114  * the Shift key.
1115  * GDK_LOCK_MASK
1116  * a Lock key (depending on the modifier mapping of the
1117  *  X server this may either be CapsLock or ShiftLock).
1118  * GDK_CONTROL_MASK
1119  * the Control key.
1120  * GDK_MOD1_MASK
1121  * the fourth modifier key (it depends on the modifier
1122  *  mapping of the X server which key is interpreted as this modifier, but
1123  *  normally it is the Alt key).
1124  * GDK_MOD2_MASK
1125  * the fifth modifier key (it depends on the modifier
1126  *  mapping of the X server which key is interpreted as this modifier).
1127  * GDK_MOD3_MASK
1128  * the sixth modifier key (it depends on the modifier
1129  *  mapping of the X server which key is interpreted as this modifier).
1130  * GDK_MOD4_MASK
1131  * the seventh modifier key (it depends on the modifier
1132  *  mapping of the X server which key is interpreted as this modifier).
1133  * GDK_MOD5_MASK
1134  * the eighth modifier key (it depends on the modifier
1135  *  mapping of the X server which key is interpreted as this modifier).
1136  * GDK_BUTTON1_MASK
1137  * the first mouse button.
1138  * GDK_BUTTON2_MASK
1139  * the second mouse button.
1140  * GDK_BUTTON3_MASK
1141  * the third mouse button.
1142  * GDK_BUTTON4_MASK
1143  * the fourth mouse button.
1144  * GDK_BUTTON5_MASK
1145  * the fifth mouse button.
1146  * GDK_SUPER_MASK
1147  * the Super modifier. Since 2.10
1148  * GDK_HYPER_MASK
1149  * the Hyper modifier. Since 2.10
1150  * GDK_META_MASK
1151  * the Meta modifier. Since 2.10
1152  * GDK_RELEASE_MASK
1153  * not used in GDK itself. GTK+ uses it to differentiate
1154  *  between (keyval, modifiers) pairs from key press and release events.
1155  * GDK_MODIFIER_MASK
1156  * a mask covering all modifier types.
1157  */
1158 public enum GdkModifierType
1159 {
1160 	SHIFT_MASK = 1 << 0,
1161 	LOCK_MASK = 1 << 1,
1162 	CONTROL_MASK = 1 << 2,
1163 	MOD1_MASK = 1 << 3,
1164 	MOD2_MASK = 1 << 4,
1165 	MOD3_MASK = 1 << 5,
1166 	MOD4_MASK = 1 << 6,
1167 	MOD5_MASK = 1 << 7,
1168 	BUTTON1_MASK = 1 << 8,
1169 	BUTTON2_MASK = 1 << 9,
1170 	BUTTON3_MASK = 1 << 10,
1171 	BUTTON4_MASK = 1 << 11,
1172 	BUTTON5_MASK = 1 << 12,
1173 	/+* The next few modifiers are used by XKB, so we skip to the end.
1174 	 * Bits 15 - 25 are currently unused. Bit 29 is used internally.
1175 	+/
1176 	SUPER_MASK = 1 << 26,
1177 	HYPER_MASK = 1 << 27,
1178 	META_MASK = 1 << 28,
1179 	RELEASE_MASK = 1 << 30,
1180 	MODIFIER_MASK = 0x5c001fff
1181 }
1182 alias GdkModifierType ModifierType;
1183 
1184 /**
1185  * These are hints originally defined by the Motif toolkit.
1186  * The window manager can use them when determining how to decorate
1187  * the window. The hint must be set before mapping the window.
1188  * GDK_DECOR_ALL
1189  * all decorations should be applied.
1190  * GDK_DECOR_BORDER
1191  * a frame should be drawn around the window.
1192  * GDK_DECOR_RESIZEH
1193  * the frame should have resize handles.
1194  * GDK_DECOR_TITLE
1195  * a titlebar should be placed above the window.
1196  * GDK_DECOR_MENU
1197  * a button for opening a menu should be included.
1198  * GDK_DECOR_MINIMIZE
1199  * a minimize button should be included.
1200  * GDK_DECOR_MAXIMIZE
1201  * a maximize button should be included.
1202  */
1203 public enum GdkWMDecoration
1204 {
1205 	DECOR_ALL = 1 << 0,
1206 	DECOR_BORDER = 1 << 1,
1207 	DECOR_RESIZEH = 1 << 2,
1208 	DECOR_TITLE = 1 << 3,
1209 	DECOR_MENU = 1 << 4,
1210 	DECOR_MINIMIZE = 1 << 5,
1211 	DECOR_MAXIMIZE = 1 << 6
1212 }
1213 alias GdkWMDecoration WMDecoration;
1214 
1215 /**
1216  * These are hints originally defined by the Motif toolkit.
1217  * The window manager can use them when determining the functions
1218  * to offer for the window.
1219  * The hint must be set before mapping the window.
1220  * GDK_FUNC_ALL
1221  * all functions should be offered.
1222  * GDK_FUNC_RESIZE
1223  * the window should be resizable.
1224  * GDK_FUNC_MOVE
1225  * the window should be movable.
1226  * GDK_FUNC_MINIMIZE
1227  * the window should be minimizable.
1228  * GDK_FUNC_MAXIMIZE
1229  * the window should be maximizable.
1230  * GDK_FUNC_CLOSE
1231  * the window should be closable.
1232  */
1233 public enum GdkWMFunction
1234 {
1235 	FUNC_ALL = 1 << 0,
1236 	FUNC_RESIZE = 1 << 1,
1237 	FUNC_MOVE = 1 << 2,
1238 	FUNC_MINIMIZE = 1 << 3,
1239 	FUNC_MAXIMIZE = 1 << 4,
1240 	FUNC_CLOSE = 1 << 5
1241 }
1242 alias GdkWMFunction WMFunction;
1243 
1244 /**
1245  * Specifies the type of the event.
1246  * Do not confuse these events with the signals that GTK+ widgets emit.
1247  * Although many of these events result in corresponding signals being emitted,
1248  * the events are often transformed or filtered along the way.
1249  * GDK_NOTHING
1250  * a special code to indicate a null event.
1251  * GDK_DELETE
1252  * the window manager has requested that the toplevel window be
1253  * hidden or destroyed, usually when the user clicks on a special icon in the
1254  * title bar.
1255  * GDK_DESTROY
1256  * the window has been destroyed.
1257  * GDK_EXPOSE
1258  * all or part of the window has become visible and needs to be
1259  * redrawn.
1260  * GDK_MOTION_NOTIFY
1261  * the pointer (usually a mouse) has moved.
1262  * GDK_BUTTON_PRESS
1263  * a mouse button has been pressed.
1264  * GDK_2BUTTON_PRESS
1265  * a mouse button has been double-clicked (clicked twice
1266  * within a short period of time). Note that each click also generates a
1267  * GDK_BUTTON_PRESS event.
1268  * GDK_3BUTTON_PRESS
1269  * a mouse button has been clicked 3 times in a short period
1270  * of time. Note that each click also generates a GDK_BUTTON_PRESS event.
1271  * GDK_BUTTON_RELEASE
1272  * a mouse button has been released.
1273  * GDK_KEY_PRESS
1274  * a key has been pressed.
1275  * GDK_KEY_RELEASE
1276  * a key has been released.
1277  * GDK_ENTER_NOTIFY
1278  * the pointer has entered the window.
1279  * GDK_LEAVE_NOTIFY
1280  * the pointer has left the window.
1281  * GDK_FOCUS_CHANGE
1282  * the keyboard focus has entered or left the window.
1283  * GDK_CONFIGURE
1284  * the size, position or stacking order of the window has changed.
1285  * Note that GTK+ discards these events for GDK_WINDOW_CHILD windows.
1286  * GDK_MAP
1287  * the window has been mapped.
1288  * GDK_UNMAP
1289  * the window has been unmapped.
1290  * GDK_PROPERTY_NOTIFY
1291  * a property on the window has been changed or deleted.
1292  * GDK_SELECTION_CLEAR
1293  * the application has lost ownership of a selection.
1294  * GDK_SELECTION_REQUEST
1295  * another application has requested a selection.
1296  * GDK_SELECTION_NOTIFY
1297  * a selection has been received.
1298  * GDK_PROXIMITY_IN
1299  * an input device has moved into contact with a sensing
1300  * surface (e.g. a touchscreen or graphics tablet).
1301  * GDK_PROXIMITY_OUT
1302  * an input device has moved out of contact with a sensing
1303  * surface.
1304  * GDK_DRAG_ENTER
1305  * the mouse has entered the window while a drag is in progress.
1306  * GDK_DRAG_LEAVE
1307  * the mouse has left the window while a drag is in progress.
1308  * GDK_DRAG_MOTION
1309  * the mouse has moved in the window while a drag is in
1310  * progress.
1311  * GDK_DRAG_STATUS
1312  * the status of the drag operation initiated by the window
1313  * has changed.
1314  * GDK_DROP_START
1315  * a drop operation onto the window has started.
1316  * GDK_DROP_FINISHED
1317  * the drop operation initiated by the window has completed.
1318  * GDK_CLIENT_EVENT
1319  * a message has been received from another application.
1320  * GDK_VISIBILITY_NOTIFY
1321  * the window visibility status has changed.
1322  * GDK_NO_EXPOSE
1323  * indicates that the source region was completely available
1324  * when parts of a drawable were copied. This is not very useful.
1325  * GDK_SCROLL
1326  * the scroll wheel was turned
1327  * GDK_WINDOW_STATE
1328  * the state of a window has changed. See GdkWindowState
1329  * for the possible window states
1330  * GDK_SETTING
1331  * a setting has been modified.
1332  * GDK_OWNER_CHANGE
1333  * the owner of a selection has changed. This event type
1334  *  was added in 2.6
1335  * GDK_GRAB_BROKEN
1336  * a pointer or keyboard grab was broken. This event type
1337  *  was added in 2.8.
1338  * GDK_DAMAGE
1339  * the content of the window has been changed. This event type
1340  *  was added in 2.14.
1341  * GDK_EVENT_LAST
1342  * marks the end of the GdkEventType enumeration. Added in 2.18
1343  */
1344 public enum GdkEventType
1345 {
1346 	NOTHING = -1,
1347 	DELETE = 0,
1348 	DESTROY = 1,
1349 	EXPOSE = 2,
1350 	MOTION_NOTIFY = 3,
1351 	BUTTON_PRESS = 4,
1352 	DOUBLE_BUTTON_PRESS = 5,
1353 	TRIPLE_BUTTON_PRESS = 6,
1354 	BUTTON_RELEASE = 7,
1355 	KEY_PRESS = 8,
1356 	KEY_RELEASE = 9,
1357 	ENTER_NOTIFY = 10,
1358 	LEAVE_NOTIFY = 11,
1359 	FOCUS_CHANGE = 12,
1360 	CONFIGURE = 13,
1361 	MAP = 14,
1362 	UNMAP = 15,
1363 	PROPERTY_NOTIFY = 16,
1364 	SELECTION_CLEAR = 17,
1365 	SELECTION_REQUEST = 18,
1366 	SELECTION_NOTIFY = 19,
1367 	PROXIMITY_IN = 20,
1368 	PROXIMITY_OUT = 21,
1369 	DRAG_ENTER = 22,
1370 	DRAG_LEAVE = 23,
1371 	DRAG_MOTION = 24,
1372 	DRAG_STATUS = 25,
1373 	DROP_START = 26,
1374 	DROP_FINISHED = 27,
1375 	CLIENT_EVENT = 28,
1376 	VISIBILITY_NOTIFY = 29,
1377 	NO_EXPOSE = 30,
1378 	SCROLL = 31,
1379 	WINDOW_STATE = 32,
1380 	SETTING = 33,
1381 	OWNER_CHANGE = 34,
1382 	GRAB_BROKEN = 35,
1383 	DAMAGE = 36,
1384 	EVENT_LAST /+* helper variable for decls +/
1385 }
1386 alias GdkEventType EventType;
1387 
1388 /**
1389  * A set of bit-flags to indicate which events a window is to receive.
1390  * Most of these masks map onto one or more of the GdkEventType event types
1391  * above.
1392  * GDK_POINTER_MOTION_HINT_MASK is a special mask which is used to reduce the
1393  * number of GDK_MOTION_NOTIFY events received. Normally a GDK_MOTION_NOTIFY
1394  * event is received each time the mouse moves. However, if the application
1395  * spends a lot of time processing the event (updating the display, for example),
1396  * it can lag behind the position of the mouse. When using
1397  * GDK_POINTER_MOTION_HINT_MASK, fewer GDK_MOTION_NOTIFY events will be sent,
1398  * some of which are marked as a hint (the is_hint member is TRUE).
1399  * To receive more motion events after a motion hint event, the application
1400  * needs to asks for more, by calling gdk_event_request_motions().
1401  * GDK_EXPOSURE_MASK
1402  * receive expose events
1403  * GDK_POINTER_MOTION_MASK
1404  * receive all pointer motion events
1405  * GDK_POINTER_MOTION_HINT_MASK
1406  * see the explanation above
1407  * GDK_BUTTON_MOTION_MASK
1408  * receive pointer motion events while any button is pressed
1409  * GDK_BUTTON1_MOTION_MASK
1410  * receive pointer motion events while 1 button is pressed
1411  * GDK_BUTTON2_MOTION_MASK
1412  * receive pointer motion events while 2 button is pressed
1413  * GDK_BUTTON3_MOTION_MASK
1414  * receive pointer motion events while 3 button is pressed
1415  * GDK_BUTTON_PRESS_MASK
1416  * receive button press events
1417  * GDK_BUTTON_RELEASE_MASK
1418  * receive button release events
1419  * GDK_KEY_PRESS_MASK
1420  * receive key press events
1421  * GDK_KEY_RELEASE_MASK
1422  * receive key release events
1423  * GDK_ENTER_NOTIFY_MASK
1424  * receive window enter events
1425  * GDK_LEAVE_NOTIFY_MASK
1426  * receive window leave events
1427  * GDK_FOCUS_CHANGE_MASK
1428  * receive focus change events
1429  * GDK_STRUCTURE_MASK
1430  * receive events about window configuration change
1431  * GDK_PROPERTY_CHANGE_MASK
1432  * receive property change events
1433  * GDK_VISIBILITY_NOTIFY_MASK
1434  * receive visibility change events
1435  * GDK_PROXIMITY_IN_MASK
1436  * receive proximity in events
1437  * GDK_PROXIMITY_OUT_MASK
1438  * receive proximity out events
1439  * GDK_SUBSTRUCTURE_MASK
1440  * receive events about window configuration changes of
1441  *  child windows
1442  * GDK_SCROLL_MASK
1443  * receive scroll events
1444  * GDK_ALL_EVENTS_MASK
1445  * the combination of all the above event masks.
1446  */
1447 public enum GdkEventMask
1448 {
1449 	EXPOSURE_MASK = 1 << 1,
1450 	POINTER_MOTION_MASK = 1 << 2,
1451 	POINTER_MOTION_HINT_MASK = 1 << 3,
1452 	BUTTON_MOTION_MASK = 1 << 4,
1453 	BUTTON1_MOTION_MASK = 1 << 5,
1454 	BUTTON2_MOTION_MASK = 1 << 6,
1455 	BUTTON3_MOTION_MASK = 1 << 7,
1456 	BUTTON_PRESS_MASK = 1 << 8,
1457 	BUTTON_RELEASE_MASK = 1 << 9,
1458 	KEY_PRESS_MASK = 1 << 10,
1459 	KEY_RELEASE_MASK = 1 << 11,
1460 	ENTER_NOTIFY_MASK = 1 << 12,
1461 	LEAVE_NOTIFY_MASK = 1 << 13,
1462 	FOCUS_CHANGE_MASK = 1 << 14,
1463 	STRUCTURE_MASK = 1 << 15,
1464 	PROPERTY_CHANGE_MASK = 1 << 16,
1465 	VISIBILITY_NOTIFY_MASK = 1 << 17,
1466 	PROXIMITY_IN_MASK = 1 << 18,
1467 	PROXIMITY_OUT_MASK = 1 << 19,
1468 	SUBSTRUCTURE_MASK = 1 << 20,
1469 	SCROLL_MASK = 1 << 21,
1470 	ALL_EVENTS_MASK = 0x3FFFFE
1471 }
1472 alias GdkEventMask EventMask;
1473 
1474 /**
1475  * Specifies the direction for GdkEventScroll.
1476  * GDK_SCROLL_UP
1477  * the window is scrolled up.
1478  * GDK_SCROLL_DOWN
1479  * the window is scrolled down.
1480  * GDK_SCROLL_LEFT
1481  * the window is scrolled to the left.
1482  * GDK_SCROLL_RIGHT
1483  * the window is scrolled to the right.
1484  */
1485 public enum GdkScrollDirection
1486 {
1487 	UP,
1488 	DOWN,
1489 	LEFT,
1490 	RIGHT
1491 }
1492 alias GdkScrollDirection ScrollDirection;
1493 
1494 /**
1495  * Specifies the visiblity status of a window for a GdkEventVisibility.
1496  * GDK_VISIBILITY_UNOBSCURED
1497  * the window is completely visible.
1498  * GDK_VISIBILITY_PARTIAL
1499  * the window is partially visible.
1500  * GDK_VISIBILITY_FULLY_OBSCURED
1501  * the window is not visible at all.
1502  */
1503 public enum GdkVisibilityState
1504 {
1505 	UNOBSCURED,
1506 	PARTIAL,
1507 	FULLY_OBSCURED
1508 }
1509 alias GdkVisibilityState VisibilityState;
1510 
1511 /**
1512  * Specifies the crossing mode for GdkEventCrossing.
1513  * GDK_CROSSING_NORMAL
1514  * crossing because of pointer motion.
1515  * GDK_CROSSING_GRAB
1516  * crossing because a grab is activated.
1517  * GDK_CROSSING_UNGRAB
1518  * crossing because a grab is deactivated.
1519  * GDK_CROSSING_GTK_GRAB
1520  * crossing because a GTK+ grab is activated.
1521  * GDK_CROSSING_GTK_UNGRAB
1522  * crossing because a GTK+ grab is deactivated.
1523  * GDK_CROSSING_STATE_CHANGED
1524  * crossing because a GTK+ widget changed state (e.g.
1525  *  sensitivity).
1526  */
1527 public enum GdkCrossingMode
1528 {
1529 	NORMAL,
1530 	GRAB,
1531 	UNGRAB,
1532 	GTK_GRAB,
1533 	GTK_UNGRAB,
1534 	STATE_CHANGED
1535 }
1536 alias GdkCrossingMode CrossingMode;
1537 
1538 /**
1539  * Specifies the kind of crossing for GdkEventCrossing.
1540  * See the X11 protocol specification of LeaveNotify for
1541  * full details of crossing event generation.
1542  * GDK_NOTIFY_ANCESTOR
1543  * the window is entered from an ancestor or
1544  *  left towards an ancestor.
1545  * GDK_NOTIFY_VIRTUAL
1546  * the pointer moves between an ancestor and an
1547  *  inferior of the window.
1548  * GDK_NOTIFY_INFERIOR
1549  * the window is entered from an inferior or
1550  *  left towards an inferior.
1551  * GDK_NOTIFY_NONLINEAR
1552  *  the window is entered from or left towards
1553  *  a window which is neither an ancestor nor an inferior.
1554  * GDK_NOTIFY_NONLINEAR_VIRTUAL
1555  * the pointer moves between two windows
1556  *  which are not ancestors of each other and the window is part of
1557  *  the ancestor chain between one of these windows and their least
1558  *  common ancestor.
1559  * GDK_NOTIFY_UNKNOWN
1560  * an unknown type of enter/leave event occurred.
1561  */
1562 public enum GdkNotifyType
1563 {
1564 	ANCESTOR = 0,
1565 	VIRTUAL = 1,
1566 	INFERIOR = 2,
1567 	NONLINEAR = 3,
1568 	NONLINEAR_VIRTUAL = 4,
1569 	UNKNOWN = 5
1570 }
1571 alias GdkNotifyType NotifyType;
1572 
1573 /**
1574  * Specifies the type of a property change for a GdkEventProperty.
1575  * GDK_PROPERTY_NEW_VALUE
1576  * the property value was changed.
1577  * GDK_PROPERTY_DELETE
1578  * the property was deleted.
1579  */
1580 public enum GdkPropertyState
1581 {
1582 	NEW_VALUE,
1583 	DELETE
1584 }
1585 alias GdkPropertyState PropertyState;
1586 
1587 /**
1588  * Specifies the state of a toplevel window.
1589  * GDK_WINDOW_STATE_WITHDRAWN
1590  * the window is not shown.
1591  * GDK_WINDOW_STATE_ICONIFIED
1592  * the window is minimized.
1593  * GDK_WINDOW_STATE_MAXIMIZED
1594  * the window is maximized.
1595  * GDK_WINDOW_STATE_STICKY
1596  * the window is sticky.
1597  * GDK_WINDOW_STATE_FULLSCREEN
1598  * the window is maximized without decorations.
1599  * GDK_WINDOW_STATE_ABOVE
1600  * the window is kept above other windows.
1601  * GDK_WINDOW_STATE_BELOW
1602  * the window is kept below other windows.
1603  */
1604 public enum GdkWindowState
1605 {
1606 	WITHDRAWN = 1 << 0,
1607 	ICONIFIED = 1 << 1,
1608 	MAXIMIZED = 1 << 2,
1609 	STICKY = 1 << 3,
1610 	FULLSCREEN = 1 << 4,
1611 	ABOVE = 1 << 5,
1612 	BELOW = 1 << 6
1613 }
1614 alias GdkWindowState WindowState;
1615 
1616 /**
1617  * Specifies the kind of modification applied to a setting in a GdkEventSetting.
1618  * GDK_SETTING_ACTION_NEW
1619  * a setting was added.
1620  * GDK_SETTING_ACTION_CHANGED
1621  * a setting was changed.
1622  * GDK_SETTING_ACTION_DELETED
1623  * a setting was deleted.
1624  */
1625 public enum GdkSettingAction
1626 {
1627 	NEW,
1628 	CHANGED,
1629 	DELETED
1630 }
1631 alias GdkSettingAction SettingAction;
1632 
1633 /**
1634  * Specifies why a selection ownership was changed.
1635  * GDK_OWNER_CHANGE_NEW_OWNER
1636  * some other app claimed the ownership
1637  * GDK_OWNER_CHANGE_DESTROY
1638  * the window was destroyed
1639  * GDK_OWNER_CHANGE_CLOSE
1640  * the client was closed
1641  */
1642 public enum GdkOwnerChange
1643 {
1644 	NEW_OWNER,
1645 	DESTROY,
1646 	CLOSE
1647 }
1648 alias GdkOwnerChange OwnerChange;
1649 
1650 /**
1651  * Used in GdkDragContext to indicate the protocol according to
1652  * which DND is done.
1653  * GDK_DRAG_PROTO_MOTIF
1654  * The Motif DND protocol.
1655  * GDK_DRAG_PROTO_XDND
1656  * The Xdnd protocol.
1657  * GDK_DRAG_PROTO_ROOTWIN
1658  * An extension to the Xdnd protocol for
1659  *  unclaimed root window drops.
1660  * GDK_DRAG_PROTO_NONE
1661  * no protocol.
1662  * GDK_DRAG_PROTO_WIN32_DROPFILES
1663  * The simple WM_DROPFILES protocol.
1664  * GDK_DRAG_PROTO_OLE2
1665  * The complex OLE2 DND protocol (not implemented).
1666  * GDK_DRAG_PROTO_LOCAL
1667  * Intra-application DND.
1668  */
1669 public enum GdkDragProtocol
1670 {
1671 	MOTIF,
1672 	XDND,
1673 	ROOTWIN, /+* A root window with nobody claiming
1674 	 * drags +/
1675 	NONE, /+* Not a valid drag window +/
1676 	WIN32_DROPFILES, /+* The simple WM_DROPFILES dnd +/
1677 	OLE2, /+* The complex OLE2 dnd (not implemented) +/
1678 	LOCAL /+* Intra-app +/
1679 }
1680 alias GdkDragProtocol DragProtocol;
1681 
1682 /**
1683  * Used in GdkDragContext to indicate what the destination
1684  * should do with the dropped data.
1685  * GDK_ACTION_DEFAULT
1686  * Means nothing, and should not be used.
1687  * GDK_ACTION_COPY
1688  * Copy the data.
1689  * GDK_ACTION_MOVE
1690  * Move the data, i.e. first copy it, then delete
1691  *  it from the source using the DELETE target of the X selection protocol.
1692  * GDK_ACTION_LINK
1693  * Add a link to the data. Note that this is only
1694  *  useful if source and destination agree on what it means.
1695  * GDK_ACTION_PRIVATE
1696  * Special action which tells the source that the
1697  *  destination will do something that the source doesn't understand.
1698  * GDK_ACTION_ASK
1699  * Ask the user what to do with the data.
1700  */
1701 public enum GdkDragAction
1702 {
1703 	ACTION_DEFAULT = 1 << 0,
1704 	ACTION_COPY = 1 << 1,
1705 	ACTION_MOVE = 1 << 2,
1706 	ACTION_LINK = 1 << 3,
1707 	ACTION_PRIVATE = 1 << 4,
1708 	ACTION_ASK = 1 << 5
1709 }
1710 alias GdkDragAction DragAction;
1711 
1712 /**
1713  * Describes how existing data is combined with new data when
1714  * using gdk_property_change().
1715  * GDK_PROP_MODE_REPLACE
1716  * the new data replaces the existing data.
1717  * GDK_PROP_MODE_PREPEND
1718  * the new data is prepended to the existing data.
1719  * GDK_PROP_MODE_APPEND
1720  * the new data is appended to the existing data.
1721  */
1722 public enum GdkPropMode
1723 {
1724 	MODE_REPLACE,
1725 	MODE_PREPEND,
1726 	MODE_APPEND
1727 }
1728 alias GdkPropMode PropMode;
1729 
1730 /**
1731  * A set of bit flags used to specify conditions for which
1732  * an input callback will be triggered. The three members
1733  * of this enumeration correspond to the readfds,
1734  * writefds, and exceptfds arguments to the
1735  * select system call.
1736  * GDK_INPUT_READ
1737  * the file descriptor has become available for reading.
1738  * (Or, as is standard in Unix, a socket or pipe was closed
1739  * at the other end; this is the case if a subsequent read
1740  * on the file descriptor returns a count of zero.)
1741  * GDK_INPUT_WRITE
1742  * the file descriptor has become available for writing.
1743  * GDK_INPUT_EXCEPTION
1744  * an exception was raised on the file descriptor.
1745  */
1746 public enum GdkInputCondition
1747 {
1748 	READ = 1 << 0,
1749 	WRITE = 1 << 1,
1750 	EXCEPTION = 1 << 2
1751 }
1752 alias GdkInputCondition InputCondition;
1753 
1754 /**
1755  * An enumeration describing the type of an input device
1756  * in general terms.
1757  * GDK_SOURCE_MOUSE
1758  * the device is a mouse. (This will be reported for the core
1759  *  pointer, even if it is something else, such as a trackball.)
1760  * GDK_SOURCE_PEN
1761  * the device is a stylus of a graphics tablet or similar device.
1762  * GDK_SOURCE_ERASER
1763  * the device is an eraser. Typically, this would be the other end
1764  *  of a stylus on a graphics tablet.
1765  * GDK_SOURCE_CURSOR
1766  * the device is a graphics tablet "puck" or similar device.
1767  */
1768 public enum GdkInputSource
1769 {
1770 	SOURCE_MOUSE,
1771 	SOURCE_PEN,
1772 	SOURCE_ERASER,
1773 	SOURCE_CURSOR
1774 }
1775 alias GdkInputSource InputSource;
1776 
1777 /**
1778  * An enumeration that describes the mode of an input device.
1779  * GDK_MODE_DISABLED
1780  * the device is disabled and will not report any events.
1781  * GDK_MODE_SCREEN
1782  * the device is enabled. The device's coordinate space
1783  *  maps to the entire screen.
1784  * GDK_MODE_WINDOW
1785  * the device is enabled. The device's coordinate space
1786  *  is mapped to a single window. The manner in which this window
1787  *  is chosen is undefined, but it will typically be the same
1788  *  way in which the focus window for key events is determined.
1789  */
1790 public enum GdkInputMode
1791 {
1792 	MODE_DISABLED,
1793 	MODE_SCREEN,
1794 	MODE_WINDOW
1795 }
1796 alias GdkInputMode InputMode;
1797 
1798 /**
1799  * An enumeration describing the way in which a device
1800  * axis (valuator) maps onto the predefined valuator
1801  * types that GTK+ understands.
1802  * GDK_AXIS_IGNORE
1803  * the axis is ignored.
1804  * GDK_AXIS_X
1805  * the axis is used as the x axis.
1806  * GDK_AXIS_Y
1807  * the axis is used as the y axis.
1808  * GDK_AXIS_PRESSURE
1809  * the axis is used for pressure information.
1810  * GDK_AXIS_XTILT
1811  * the axis is used for x tilt information.
1812  * GDK_AXIS_YTILT
1813  * the axis is used for x tilt information.
1814  * GDK_AXIS_WHEEL
1815  * the axis is used for wheel information.
1816  * GDK_AXIS_LAST
1817  * a constant equal to the numerically highest axis value.
1818  */
1819 public enum GdkAxisUse
1820 {
1821 	IGNORE,
1822 	X,
1823 	Y,
1824 	PRESSURE,
1825 	XTILT,
1826 	YTILT,
1827 	WHEEL,
1828 	LAST
1829 }
1830 alias GdkAxisUse AxisUse;
1831 
1832 /**
1833  * An enumeration used to specify which extension events
1834  * are desired for a particular widget.
1835  * GDK_EXTENSION_EVENTS_NONE
1836  * no extension events are desired.
1837  * GDK_EXTENSION_EVENTS_ALL
1838  * all extension events are desired.
1839  * GDK_EXTENSION_EVENTS_CURSOR
1840  * extension events are desired only if a cursor
1841  *  will be displayed for the device.
1842  */
1843 public enum GdkExtensionMode
1844 {
1845 	EVENTS_NONE,
1846 	EVENTS_ALL,
1847 	EVENTS_CURSOR
1848 }
1849 alias GdkExtensionMode ExtensionMode;
1850 
1851 /**
1852  * An opaque type representing a string as an index into a table
1853  * of strings on the X server.
1854  */
1855 alias _GdkAtom* GdkAtom;
1856 public struct _GdkAtom;
1857 
1858 /**
1859  * Main Gtk struct.
1860  * The GdkDisplay struct is the GDK representation
1861  * of an X display. All its fields are private and should not be accessed directly.
1862  * Since 2.2
1863  */
1864 public struct GdkDisplay{}
1865 
1866 
1867 /**
1868  * A table of pointers to functions for getting quantities related to
1869  * the current pointer position. Each GdkDisplay has a table of this type,
1870  * which can be set using gdk_display_set_pointer_hooks().
1871  * This is only useful for such low-level tools as an event recorder.
1872  * Applications should never have any reason to use this facility
1873  * get_pointer ()
1874  * Obtains the current pointer position and modifier state.
1875  * The position is given in coordinates relative to the window containing
1876  * the pointer, which is returned in window.
1877  * window_get_pointer ()
1878  * Obtains the window underneath the mouse pointer.
1879  * Current pointer position and modifier state are returned in x, y and
1880  * mask. The position is given in coordinates relative to window.
1881  * window_at_pointer ()
1882  * Obtains the window underneath the mouse pointer,
1883  * returning the location of that window in win_x, win_y. Returns NULL
1884  * if the window under the mouse pointer is not known to GDK (for example,
1885  * belongs to another application).
1886  * Since 2.2
1887  */
1888 public struct GdkDisplayPointerHooks
1889 {
1890 	extern(C) void function(GdkDisplay* display, GdkScreen** screen, int* x, int* y, GdkModifierType* mask) getPointer;
1891 	extern(C) GdkWindow* function(GdkDisplay* display, GdkWindow* window, int* x, int* y, GdkModifierType* mask) windowGetPointer;
1892 	extern(C) GdkWindow* function(GdkDisplay* display, int* winX, int* winY) windowAtPointer;
1893 }
1894 
1895 
1896 /**
1897  * Main Gtk struct.
1898  * The GdkDisplayManager struct has no interesting
1899  * fields.
1900  * Since 2.2
1901  */
1902 public struct GdkDisplayManager{}
1903 
1904 
1905 /**
1906  * Main Gtk struct.
1907  * This is a currently just a placeholder typedef for the first argument of
1908  * the window_at_pointer function in GdkPointerHooks. It will be used
1909  * when GDK gets multihead support.
1910  * Since 2.2
1911  */
1912 public struct GdkScreen{}
1913 
1914 
1915 /**
1916  * Defines the x and y coordinates of a point.
1917  * gint x;
1918  * the x coordinate of the point.
1919  * gint y;
1920  * the y coordinate of the point.
1921  */
1922 public struct GdkPoint
1923 {
1924 	int x;
1925 	int y;
1926 }
1927 
1928 
1929 /**
1930  * Main Gtk struct.
1931  * Defines the position and size of a rectangle.
1932  * gint x;
1933  * the x coordinate of the left edge of the rectangle.
1934  * gint y;
1935  * the y coordinate of the top of the rectangle.
1936  * gint width;
1937  * the width of the rectangle.
1938  * gint height;
1939  * the height of the rectangle.
1940  */
1941 public struct GdkRectangle
1942 {
1943 	int x;
1944 	int y;
1945 	int width;
1946 	int height;
1947 }
1948 
1949 
1950 /**
1951  * A GdkRegion represents a set of pixels on the screen.
1952  * In GTK3, GdkRegion will be replaced by cairo_region_t. All the functions
1953  * listed in this section will go away and you will have to use the relevant
1954  * Cairo functions. The conversion can be done using simple serch and replace.
1955  */
1956 public struct GdkRegion{}
1957 
1958 
1959 /**
1960  * A GdkSpan represents a horizontal line of pixels starting
1961  * at the pixel with coordinates x, y and ending before x + width, y.
1962  * gint x;
1963  * x coordinate of the first pixel.
1964  * gint y;
1965  * y coordinate of the first pixel.
1966  * gint width;
1967  * number of pixels in the span.
1968  */
1969 public struct GdkSpan
1970 {
1971 	int x;
1972 	int y;
1973 	int width;
1974 }
1975 
1976 
1977 /**
1978  * Main Gtk struct.
1979  * The GdkGC structure represents a graphics context.
1980  * It is an opaque structure with no user-visible
1981  * elements.
1982  */
1983 public struct GdkGC{}
1984 
1985 
1986 /**
1987  * The GdkGCValues structure holds a set of values used
1988  * to create or modify a graphics context.
1989  * GdkColor foreground;
1990  * the foreground color. Note that gdk_gc_get_values()
1991  * only sets the pixel value.
1992  * GdkColor background;
1993  * the background color. Note that gdk_gc_get_values()
1994  * only sets the pixel value.
1995  * GdkFont *font;
1996  * the default font.
1997  * GdkFunction function;
1998  * the bitwise operation used when drawing.
1999  * GdkFill fill;
2000  * the fill style.
2001  * GdkPixmap *tile;
2002  * the tile pixmap.
2003  * GdkPixmap *stipple;
2004  * the stipple bitmap.
2005  * GdkPixmap *clip_mask;
2006  * the clip mask bitmap.
2007  * GdkSubwindowMode subwindow_mode;
2008  * the subwindow mode.
2009  * gint ts_x_origin;
2010  * the x origin of the tile or stipple.
2011  * gint ts_y_origin;
2012  * the y origin of the tile or stipple.
2013  * gint clip_x_origin;
2014  * the x origin of the clip mask.
2015  * gint clip_y_origin;
2016  * the y origin of the clip mask.
2017  * gint graphics_exposures;
2018  * whether graphics exposures are enabled.
2019  * gint line_width;
2020  * the line width.
2021  * GdkLineStyle line_style;
2022  * the way dashed lines are drawn.
2023  * GdkCapStyle cap_style;
2024  * the way the ends of lines are drawn.
2025  * GdkJoinStyle join_style;
2026  * the way joins between lines are drawn.
2027  */
2028 public struct GdkGCValues
2029 {
2030 	GdkColor foreground;
2031 	GdkColor background;
2032 	GdkFont *font;
2033 	GdkFunction funct;
2034 	GdkFill fill;
2035 	GdkPixmap *tile;
2036 	GdkPixmap *stipple;
2037 	GdkPixmap *clipMask;
2038 	GdkSubwindowMode subwindowMode;
2039 	int tsXOrigin;
2040 	int tsYOrigin;
2041 	int clipXOrigin;
2042 	int clipYOrigin;
2043 	int graphicsExposures;
2044 	int lineWidth;
2045 	GdkLineStyle lineStyle;
2046 	GdkCapStyle capStyle;
2047 	GdkJoinStyle joinStyle;
2048 }
2049 
2050 
2051 /**
2052  * Main Gtk struct.
2053  * An opaque structure representing an object that can be
2054  * drawn onto. This can be a GdkPixmap, a GdkBitmap,
2055  * or a GdkWindow.
2056  */
2057 public struct GdkDrawable{}
2058 
2059 
2060 /**
2061  * Specifies the start and end point of a line for use by the gdk_draw_segments()
2062  * function.
2063  * gint x1;
2064  * the x coordinate of the start point.
2065  * gint y1;
2066  * the y coordinate of the start point.
2067  * gint x2;
2068  * the x coordinate of the end point.
2069  * gint y2;
2070  * the y coordinate of the end point.
2071  */
2072 public struct GdkSegment
2073 {
2074 	int x1;
2075 	int y1;
2076 	int x2;
2077 	int y2;
2078 }
2079 
2080 
2081 /**
2082  * Specifies a trapezpoid for use by the gdk_draw_trapezoids().
2083  * The trapezoids used here have parallel, horizontal top and
2084  * bottom edges.
2085  * double y1;
2086  * the y coordinate of the start point.
2087  * double x11;
2088  * the x coordinate of the top left corner
2089  * double x21;
2090  * the x coordinate of the top right corner
2091  * double y2;
2092  * the y coordinate of the end point.
2093  * double x12;
2094  * the x coordinate of the bottom left corner
2095  * double x22;
2096  * the x coordinate of the bottom right corner
2097  */
2098 public struct GdkTrapezoid
2099 {
2100 	double y1, x11, x21, y2, x12, x22;
2101 }
2102 
2103 
2104 /**
2105  * Main Gtk struct.
2106  * An opaque structure representing an offscreen drawable.
2107  * Pointers to structures of type GdkPixmap, GdkBitmap,
2108  * and GdkWindow, can often be used interchangeably.
2109  * The type GdkDrawable refers generically to any of
2110  * these types.
2111  */
2112 public struct GdkPixmap{}
2113 
2114 
2115 /**
2116  * An opaque structure representing an offscreen drawable of depth
2117  * 1. Pointers to structures of type GdkPixmap, GdkBitmap, and
2118  * GdkWindow, can often be used interchangeably. The type GdkDrawable
2119  * refers generically to any of these types.
2120  */
2121 public struct GdkBitmap{}
2122 
2123 
2124 /**
2125  * Warning
2126  * GdkRgbCmap is deprecated and should not be used in newly-written code.
2127  * A private data structure which maps color indices to actual RGB
2128  * colors. This is used only for gdk_draw_indexed_image().
2129  * guint32 colors[256];
2130  * The colors, represented as 0xRRGGBB integer values.
2131  * gint n_colors;
2132  * The number of colors in the cmap.
2133  */
2134 public struct GdkRgbCmap
2135 {
2136 	uint colors[256];
2137 	int nColors;
2138 }
2139 
2140 
2141 /**
2142  * Main Gtk struct.
2143  * The GdkImage struct contains information on the image and the pixel data.
2144  * GObject parent_instance;
2145  * the parent instance
2146  */
2147 public struct GdkImage
2148 {
2149 	GObject parentInstance;
2150 	GdkImageType type; /+* read only. +/
2151 	GdkVisual *visual; /+* read only. visual used to create the image +/
2152 	GdkByteOrder byteOrder; /+* read only. +/
2153 	int width; /+* read only. +/
2154 	int height; /+* read only. +/
2155 	ushort depth; /+* read only. +/
2156 	ushort bpp; /+* read only. bytes per pixel +/
2157 	ushort bpl; /+* read only. bytes per line +/
2158 	ushort bitsPerPixel; /+* read only. bits per pixel +/
2159 	void* mem;
2160 	GdkColormap *colormap; /+* read only. +/
2161 }
2162 
2163 
2164 /**
2165  * Main Gtk struct.
2166  * This is the main structure in the gdk-pixbuf; library. It is
2167  * used to represent images. It contains information about the
2168  * image's pixel data, its color space, bits per sample, width and
2169  * height, and the rowstride (the number of bytes between the start of
2170  * one row and the start of the next).
2171  */
2172 public struct GdkPixbuf{}
2173 
2174 
2175 /**
2176  * The GdkColor structure is used to describe an
2177  * allocated or unallocated color.
2178  * guint32 pixel;
2179  * For allocated colors, the value used to
2180  * draw this color on the screen.
2181  * guint16 red;
2182  * The red component of the color. This is
2183  * a value between 0 and 65535, with 65535 indicating
2184  * full intensitiy.
2185  * guint16 green;
2186  * The green component of the color.
2187  * guint16 blue;
2188  * The blue component of the color.
2189  */
2190 public struct GdkColor
2191 {
2192 	uint pixel;
2193 	ushort red;
2194 	ushort green;
2195 	ushort blue;
2196 }
2197 
2198 
2199 /**
2200  * Main Gtk struct.
2201  * The colormap structure contains the following public fields.
2202  */
2203 public struct GdkColormap
2204 {
2205 	int size;
2206 	GdkColor *colors;
2207 }
2208 
2209 
2210 /**
2211  * Main Gtk struct.
2212  * The GdkVisual structure contains information about
2213  * a particular visual.
2214  * $(DDOC_COMMENT example)
2215  * GObject parent_instance;
2216  * inherited portion from GObject
2217  */
2218 public struct GdkVisual
2219 {
2220 	GObject parentInstance;
2221 	GdkVisualType type;
2222 	int depth;
2223 	GdkByteOrder byteOrder;
2224 	int colormapSize;
2225 	int bitsPerRgb;
2226 	uint redMask;
2227 	int redShift;
2228 	int redPrec;
2229 	uint greenMask;
2230 	int greenShift;
2231 	int greenPrec;
2232 	uint blueMask;
2233 	int blueShift;
2234 	int bluePrec;
2235 }
2236 
2237 
2238 /**
2239  * Main Gtk struct.
2240  * Warning
2241  * GdkFont is deprecated and should not be used in newly-written code.
2242  * The GdkFont structure represents a font or fontset. It
2243  * contains the following public fields. A new GdkFont
2244  * structure is returned by gdk_font_load() or gdk_fontset_load(),
2245  * and is reference counted with gdk_font_ref() and gdk_font_unref()
2246  * GdkFontType type;
2247  * a value of type GdkFontType which indicates
2248  * whether this font is a single font or a fontset.
2249  * gint ascent;
2250  * the maximum distance that the font, when drawn,
2251  * ascends above the baseline.
2252  * gint descent;
2253  * the maximum distance that the font, when drawn,
2254  * descends below the baseline.
2255  */
2256 public struct GdkFont
2257 {
2258 	GdkFontType type;
2259 	int ascent;
2260 	int descent;
2261 }
2262 
2263 
2264 /**
2265  * Main Gtk struct.
2266  * A GdkCursor structure represents a cursor.
2267  */
2268 public struct GdkCursor
2269 {
2270 	GdkCursorType type;
2271 }
2272 
2273 
2274 /**
2275  * Main Gtk struct.
2276  * An opaque structure representing an onscreen drawable.
2277  * Pointers to structures of type GdkPixmap, GdkBitmap,
2278  * and GdkWindow, can often be used interchangeably.
2279  * The type GdkDrawable refers generically to any of
2280  * these types.
2281  */
2282 public struct GdkWindow{}
2283 
2284 
2285 /**
2286  * The GdkGeometry struct gives the window manager information about
2287  * a window's geometry constraints. Normally you would set these on
2288  * the GTK+ level using gtk_window_set_geometry_hints(). GtkWindow
2289  * then sets the hints on the GdkWindow it creates.
2290  * gdk_window_set_geometry_hints() expects the hints to be fully valid already and
2291  * simply passes them to the window manager; in contrast,
2292  * gtk_window_set_geometry_hints() performs some interpretation. For example,
2293  * GtkWindow will apply the hints to the geometry widget instead of the toplevel
2294  * window, if you set a geometry widget. Also, the
2295  * min_width/min_height/max_width/max_height fields may be set to -1, and
2296  * GtkWindow will substitute the size request of the window or geometry widget. If
2297  * the minimum size hint is not provided, GtkWindow will use its requisition as
2298  * the minimum size. If the minimum size is provided and a geometry widget is set,
2299  * GtkWindow will take the minimum size as the minimum size of the geometry widget
2300  * rather than the entire window. The base size is treated similarly.
2301  * The canonical use-case for gtk_window_set_geometry_hints() is to get a terminal
2302  * widget to resize properly. Here, the terminal text area should be the geometry
2303  * widget; GtkWindow will then automatically set the base size to the size of
2304  * other widgets in the terminal window, such as the menubar and scrollbar. Then,
2305  * the width_inc and height_inc fields should be set to the size of one character
2306  * in the terminal. Finally, the base size should be set to the size of one
2307  * character. The net effect is that the minimum size of the terminal
2308  * will have a 1x1 character terminal area, and only terminal sizes on
2309  * the "character grid" will be allowed.
2310  * Here's an example of how the terminal example would be implemented, assuming
2311  * a terminal area widget called "terminal" and a toplevel window "toplevel":
2312  * $(DDOC_COMMENT example)
2313  * The other useful fields are the min_aspect and max_aspect fields; these
2314  * contain a width/height ratio as a floating point number. If a geometry widget is
2315  * set, the aspect applies to the geometry widget rather than the entire window.
2316  * The most common use of these hints is probably to set min_aspect and
2317  * max_aspect to the same value, thus forcing the window to keep a constant aspect
2318  * ratio.
2319  * gint min_width;
2320  * minimum width of window (or -1 to use requisition, with GtkWindow only)
2321  * gint min_height;
2322  * minimum height of window (or -1 to use requisition, with GtkWindow only)
2323  * gint max_width;
2324  * maximum width of window (or -1 to use requisition, with GtkWindow only)
2325  * gint max_height;
2326  * maximum height of window (or -1 to use requisition, with GtkWindow only)
2327  * gint base_width;
2328  * allowed window widths are base_width + width_inc * N where N is any integer (-1 allowed with GtkWindow)
2329  * gint base_height;
2330  * allowed window widths are base_height + height_inc * N where N is any integer (-1 allowed with GtkWindow)
2331  * gint width_inc;
2332  * width resize increment
2333  * gint height_inc;
2334  * height resize increment
2335  * gdouble min_aspect;
2336  * minimum width/height ratio
2337  * gdouble max_aspect;
2338  * maximum width/height ratio
2339  * GdkGravity win_gravity;
2340  * window gravity, see gtk_window_set_gravity()
2341  */
2342 public struct GdkGeometry
2343 {
2344 	int minWidth;
2345 	int minHeight;
2346 	int maxWidth;
2347 	int maxHeight;
2348 	int baseWidth;
2349 	int baseHeight;
2350 	int widthInc;
2351 	int heightInc;
2352 	double minAspect;
2353 	double maxAspect;
2354 	GdkGravity winGravity;
2355 }
2356 
2357 
2358 /**
2359  * Attributes to use for a newly-created window.
2360  * gchar *title;
2361  * title of the window (for toplevel windows)
2362  * gint event_mask;
2363  * event mask (see gdk_window_set_events())
2364  * gint x;
2365  * X coordinate relative to parent window (see gdk_window_move())
2366  * gint y;
2367  * Y coordinate relative to parent window (see gdk_window_move())
2368  * gint width;
2369  * width of window
2370  * gint height;
2371  * height of window
2372  * GdkWindowClass wclass;
2373  * GDK_INPUT_OUTPUT (normal window) or GDK_INPUT_ONLY (invisible window that receives events)
2374  * GdkVisual *visual;
2375  * GdkVisual for window
2376  * GdkColormap *colormap;
2377  * GdkColormap for window
2378  * GdkWindowType window_type;
2379  * type of window
2380  * GdkCursor *cursor;
2381  * cursor for the window (see gdk_window_set_cursor())
2382  * gchar *wmclass_name;
2383  * don't use (see gtk_window_set_wmclass())
2384  * gchar *wmclass_class;
2385  * don't use (see gtk_window_set_wmclass())
2386  * gboolean override_redirect;
2387  * TRUE to bypass the window manager
2388  * GdkWindowTypeHint type_hint;
2389  * a hint of the function of the window
2390  */
2391 public struct GdkWindowAttr
2392 {
2393 	char *title;
2394 	int eventMask;
2395 	int x, y;
2396 	int width;
2397 	int height;
2398 	GdkWindowClass wclass;
2399 	GdkVisual *visual;
2400 	GdkColormap *colormap;
2401 	GdkWindowType windowType;
2402 	GdkCursor *cursor;
2403 	char *wmclassName;
2404 	char *wmclassClass;
2405 	int overrideRedirect;
2406 	GdkWindowTypeHint typeHint;
2407 }
2408 
2409 
2410 /**
2411  * A table of pointers to functions for getting quantities related to
2412  * the current pointer position. GDK has one global table of this type,
2413  * which can be set using gdk_set_pointer_hooks().
2414  * This is only useful for such low-level tools as an event recorder.
2415  * Applications should never have any reason to use this facility
2416  * get_pointer ()
2417  * Obtains the current pointer position and modifier state.
2418  * The position is given in coordinates relative to the window containing
2419  * the pointer, which is returned in window.
2420  * window_at_pointer ()
2421  * Obtains the window underneath the mouse pointer,
2422  * returning the location of that window in win_x, win_y. Returns NULL
2423  * if the window under the mouse pointer is not known to GDK (for example,
2424  * belongs to another application).
2425  */
2426 public struct GdkPointerHooks
2427 {
2428 	extern(C) GdkWindow* function(GdkWindow* window, int* x, int* y, GdkModifierType* mask) getPointer;
2429 	extern(C) GdkWindow* function(GdkScreen* screen, /+* unused +/int *winX, int* winY) windowAtPointer;
2430 }
2431 
2432 
2433 /**
2434  * Contains the fields which are common to all event structs.
2435  * Any event pointer can safely be cast to a pointer to a GdkEventAny to access
2436  * these fields.
2437  * GdkEventType type;
2438  * the type of the event.
2439  * GdkWindow *window;
2440  * the window which received the event.
2441  * gint8 send_event;
2442  * TRUE if the event was sent explicitly (e.g. using
2443  * XSendEvent).
2444  */
2445 public struct GdkEventAny
2446 {
2447 	GdkEventType type;
2448 	GdkWindow *window;
2449 	byte sendEvent;
2450 }
2451 
2452 
2453 /**
2454  * Describes a key press or key release event.
2455  * GdkEventType type;
2456  * the type of the event (GDK_KEY_PRESS or GDK_KEY_RELEASE).
2457  * GdkWindow *window;
2458  * the window which received the event.
2459  * gint8 send_event;
2460  * TRUE if the event was sent explicitly (e.g. using
2461  * XSendEvent).
2462  * guint32 time;
2463  * the time of the event in milliseconds.
2464  * guint state;
2465  * a bit-mask representing the state of the modifier keys (e.g. Control,
2466  * Shift and Alt) and the pointer buttons. See GdkModifierType.
2467  * guint keyval;
2468  * the key that was pressed or released. See the
2469  * <gdk/gdkkeysyms.h>
2470  * header file for a complete list of GDK key codes.
2471  * gint length;
2472  * the length of string.
2473  * gchar *string;
2474  * a string containing the an approximation of the text that
2475  * would result from this keypress. The only correct way to handle text
2476  * input of text is using input methods (see GtkIMContext), so this
2477  * field is deprecated and should never be used.
2478  * (gdk_unicode_to_keyval() provides a non-deprecated way of getting
2479  * an approximate translation for a key.) The string is encoded in the encoding
2480  * of the current locale (Note: this for backwards compatibility:
2481  * strings in GTK+ and GDK are typically in UTF-8.) and NUL-terminated.
2482  * In some cases, the translation of the key code will be a single
2483  * NUL byte, in which case looking at length is necessary to distinguish
2484  * it from the an empty translation.
2485  * guint16 hardware_keycode;
2486  * the raw code of the key that was pressed or released.
2487  * guint8 group;
2488  * the keyboard group.
2489  * guint is_modifier : 1;
2490  * a flag that indicates if hardware_keycode is mapped to a
2491  * modifier. Since 2.10
2492  */
2493 public struct GdkEventKey
2494 {
2495 	GdkEventType type;
2496 	GdkWindow *window;
2497 	byte sendEvent;
2498 	uint time;
2499 	uint state;
2500 	uint keyval;
2501 	int length;
2502 	char *string;
2503 	ushort hardwareKeycode;
2504 	ubyte group;
2505 	uint bitfield0;
2506 	//uint isModifier : 1;
2507 }
2508 
2509 
2510 /**
2511  * Used for button press and button release events. The
2512  * type field will be one of GDK_BUTTON_PRESS,
2513  * GDK_2BUTTON_PRESS, GDK_3BUTTON_PRESS, and GDK_BUTTON_RELEASE.
2514  * Double and triple-clicks result in a sequence of events being received.
2515  * For double-clicks the order of events will be:
2516  * GDK_BUTTON_PRESS
2517  * GDK_BUTTON_RELEASE
2518  * GDK_BUTTON_PRESS
2519  * GDK_2BUTTON_PRESS
2520  * GDK_BUTTON_RELEASE
2521  * Note that the first click is received just like a normal
2522  * button press, while the second click results in a GDK_2BUTTON_PRESS being
2523  * received just after the GDK_BUTTON_PRESS.
2524  * Triple-clicks are very similar to double-clicks, except that GDK_3BUTTON_PRESS
2525  * is inserted after the third click. The order of the events is:
2526  * GDK_BUTTON_PRESS
2527  * GDK_BUTTON_RELEASE
2528  * GDK_BUTTON_PRESS
2529  * GDK_2BUTTON_PRESS
2530  * GDK_BUTTON_RELEASE
2531  * GDK_BUTTON_PRESS
2532  * GDK_3BUTTON_PRESS
2533  * GDK_BUTTON_RELEASE
2534  * For a double click to occur, the second button press must occur within 1/4 of
2535  * a second of the first. For a triple click to occur, the third button press
2536  * must also occur within 1/2 second of the first button press.
2537  * GdkEventType type;
2538  * the type of the event (GDK_BUTTON_PRESS, GDK_2BUTTON_PRESS,
2539  * GDK_3BUTTON_PRESS or GDK_BUTTON_RELEASE).
2540  * GdkWindow *window;
2541  * the window which received the event.
2542  * gint8 send_event;
2543  * TRUE if the event was sent explicitly (e.g. using
2544  * XSendEvent).
2545  * guint32 time;
2546  * the time of the event in milliseconds.
2547  * gdouble x;
2548  * the x coordinate of the pointer relative to the window.
2549  * gdouble y;
2550  * the y coordinate of the pointer relative to the window.
2551  * gdouble *axes;
2552  * x, y translated to the axes of device, or NULL if device is
2553  * the mouse.
2554  * guint state;
2555  * a bit-mask representing the state of the modifier keys (e.g. Control,
2556  * Shift and Alt) and the pointer buttons. See GdkModifierType.
2557  * guint button;
2558  * the button which was pressed or released, numbered from 1 to 5.
2559  * Normally button 1 is the left mouse button, 2 is the middle button,
2560  * and 3 is the right button. On 2-button mice, the middle button can often
2561  * be simulated by pressing both mouse buttons together.
2562  * GdkDevice *device;
2563  * the device where the event originated.
2564  * gdouble x_root;
2565  * the x coordinate of the pointer relative to the root of the screen.
2566  * gdouble y_root;
2567  * the y coordinate of the pointer relative to the root of the screen.
2568  */
2569 public struct GdkEventButton
2570 {
2571 	GdkEventType type;
2572 	GdkWindow *window;
2573 	byte sendEvent;
2574 	uint time;
2575 	double x;
2576 	double y;
2577 	double *axes;
2578 	uint state;
2579 	uint button;
2580 	GdkDevice *device;
2581 	double xRoot, yRoot;
2582 }
2583 
2584 
2585 /**
2586  * Generated from button presses for the buttons 4 to 7. Wheel mice are
2587  * usually configured to generate button press events for buttons 4 and 5
2588  * when the wheel is turned.
2589  * GdkEventType type;
2590  * the type of the event (GDK_SCROLL).
2591  * GdkWindow *window;
2592  * the window which received the event.
2593  * gint8 send_event;
2594  * TRUE if the event was sent explicitly (e.g. using
2595  * XSendEvent).
2596  * guint32 time;
2597  * the time of the event in milliseconds.
2598  * gdouble x;
2599  * the x coordinate of the pointer relative to the window.
2600  * gdouble y;
2601  * the y coordinate of the pointer relative to the window.
2602  * guint state;
2603  * a bit-mask representing the state of the modifier keys (e.g. Control,
2604  * Shift and Alt) and the pointer buttons. See GdkModifierType.
2605  * GdkScrollDirection direction;
2606  * the direction to scroll to (one of GDK_SCROLL_UP,
2607  * GDK_SCROLL_DOWN, GDK_SCROLL_LEFT and GDK_SCROLL_RIGHT).
2608  * GdkDevice *device;
2609  * the device where the event originated.
2610  * gdouble x_root;
2611  * the x coordinate of the pointer relative to the root of the screen.
2612  * gdouble y_root;
2613  * the y coordinate of the pointer relative to the root of the screen.
2614  */
2615 public struct GdkEventScroll
2616 {
2617 	GdkEventType type;
2618 	GdkWindow *window;
2619 	byte sendEvent;
2620 	uint time;
2621 	double x;
2622 	double y;
2623 	uint state;
2624 	GdkScrollDirection direction;
2625 	GdkDevice *device;
2626 	double xRoot, yRoot;
2627 }
2628 
2629 
2630 /**
2631  * Generated when the pointer moves.
2632  * GdkEventType type;
2633  * the type of the event.
2634  * GdkWindow *window;
2635  * the window which received the event.
2636  * gint8 send_event;
2637  * TRUE if the event was sent explicitly (e.g. using
2638  * XSendEvent).
2639  * guint32 time;
2640  * the time of the event in milliseconds.
2641  * gdouble x;
2642  * the x coordinate of the pointer relative to the window.
2643  * gdouble y;
2644  * the y coordinate of the pointer relative to the window.
2645  * gdouble *axes;
2646  * x, y translated to the axes of device, or NULL if device is
2647  * the mouse.
2648  * guint state;
2649  * a bit-mask representing the state of the modifier keys (e.g. Control,
2650  * Shift and Alt) and the pointer buttons. See GdkModifierType.
2651  * gint16 is_hint;
2652  * set to 1 if this event is just a hint, see the GDK_POINTER_MOTION_HINT_MASK
2653  * value of GdkEventMask.
2654  * GdkDevice *device;
2655  * the device where the event originated.
2656  * gdouble x_root;
2657  * the x coordinate of the pointer relative to the root of the screen.
2658  * gdouble y_root;
2659  * the y coordinate of the pointer relative to the root of the screen.
2660  */
2661 public struct GdkEventMotion
2662 {
2663 	GdkEventType type;
2664 	GdkWindow *window;
2665 	byte sendEvent;
2666 	uint time;
2667 	double x;
2668 	double y;
2669 	double *axes;
2670 	uint state;
2671 	short isHint;
2672 	GdkDevice *device;
2673 	double xRoot, yRoot;
2674 }
2675 
2676 
2677 /**
2678  * Generated when all or part of a window becomes visible and needs to be
2679  * redrawn.
2680  * GdkEventType type;
2681  * the type of the event (GDK_EXPOSE or GDK_DAMAGE).
2682  * GdkWindow *window;
2683  * the window which received the event.
2684  * gint8 send_event;
2685  * TRUE if the event was sent explicitly (e.g. using
2686  * XSendEvent).
2687  * GdkRectangle area;
2688  * bounding box of region.
2689  * GdkRegion *region;
2690  * the region that needs to be redrawn.
2691  * gint count;
2692  * the number of contiguous GDK_EXPOSE events following this one.
2693  * The only use for this is "exposure compression", i.e. handling all contiguous
2694  * GDK_EXPOSE events in one go, though GDK performs some exposure compression
2695  * so this is not normally needed.
2696  */
2697 public struct GdkEventExpose
2698 {
2699 	GdkEventType type;
2700 	GdkWindow *window;
2701 	byte sendEvent;
2702 	GdkRectangle area;
2703 	GdkRegion *region;
2704 	int count; /+* If non-zero, how many more events follow. +/
2705 }
2706 
2707 
2708 /**
2709  * Generated when the window visibility status has changed.
2710  * GdkEventType type;
2711  * the type of the event (GDK_VISIBILITY_NOTIFY).
2712  * GdkWindow *window;
2713  * the window which received the event.
2714  * gint8 send_event;
2715  * TRUE if the event was sent explicitly (e.g. using
2716  * XSendEvent).
2717  * GdkVisibilityState state;
2718  * the new visibility state (GDK_VISIBILITY_FULLY_OBSCURED,
2719  * GDK_VISIBILITY_PARTIAL or GDK_VISIBILITY_UNOBSCURED).
2720  */
2721 public struct GdkEventVisibility
2722 {
2723 	GdkEventType type;
2724 	GdkWindow *window;
2725 	byte sendEvent;
2726 	GdkVisibilityState state;
2727 }
2728 
2729 
2730 /**
2731  * Generated when the pointer enters or leaves a window.
2732  * GdkEventType type;
2733  * the type of the event (GDK_ENTER_NOTIFY or GDK_LEAVE_NOTIFY).
2734  * GdkWindow *window;
2735  * the window which received the event.
2736  * gint8 send_event;
2737  * TRUE if the event was sent explicitly (e.g. using
2738  * XSendEvent).
2739  * GdkWindow *subwindow;
2740  * the window that was entered or left.
2741  * guint32 time;
2742  * the time of the event in milliseconds.
2743  * gdouble x;
2744  * the x coordinate of the pointer relative to the window.
2745  * gdouble y;
2746  * the y coordinate of the pointer relative to the window.
2747  * gdouble x_root;
2748  * the x coordinate of the pointer relative to the root of the screen.
2749  * gdouble y_root;
2750  * the y coordinate of the pointer relative to the root of the screen.
2751  * GdkCrossingMode mode;
2752  * the crossing mode (GDK_CROSSING_NORMAL, GDK_CROSSING_GRAB,
2753  * GDK_CROSSING_UNGRAB, GDK_CROSSING_GTK_GRAB, GDK_CROSSING_GTK_UNGRAB or
2754  * GDK_CROSSING_STATE_CHANGED). GDK_CROSSING_GTK_GRAB, GDK_CROSSING_GTK_UNGRAB,
2755  * and GDK_CROSSING_STATE_CHANGED were added in 2.14 and are always synthesized,
2756  * never native.
2757  * GdkNotifyType detail;
2758  * the kind of crossing that happened (GDK_NOTIFY_INFERIOR,
2759  * GDK_NOTIFY_ANCESTOR, GDK_NOTIFY_VIRTUAL, GDK_NOTIFY_NONLINEAR or
2760  * GDK_NOTIFY_NONLINEAR_VIRTUAL).
2761  * gboolean focus;
2762  * TRUE if window is the focus window or an inferior.
2763  * guint state;
2764  * a bit-mask representing the state of the modifier keys (e.g. Control,
2765  * Shift and Alt) and the pointer buttons. See GdkModifierType.
2766  */
2767 public struct GdkEventCrossing
2768 {
2769 	GdkEventType type;
2770 	GdkWindow *window;
2771 	byte sendEvent;
2772 	GdkWindow *subwindow;
2773 	uint time;
2774 	double x;
2775 	double y;
2776 	double xRoot;
2777 	double yRoot;
2778 	GdkCrossingMode mode;
2779 	GdkNotifyType detail;
2780 	int focus;
2781 	uint state;
2782 }
2783 
2784 
2785 /**
2786  * Describes a change of keyboard focus.
2787  * GdkEventType type;
2788  * the type of the event (GDK_FOCUS_CHANGE).
2789  * GdkWindow *window;
2790  * the window which received the event.
2791  * gint8 send_event;
2792  * TRUE if the event was sent explicitly (e.g. using XSendEvent).
2793  * gint16 in;
2794  * TRUE if the window has gained the keyboard focus, FALSE if it has lost
2795  * the focus.
2796  */
2797 public struct GdkEventFocus
2798 {
2799 	GdkEventType type;
2800 	GdkWindow *window;
2801 	byte sendEvent;
2802 	short inn;
2803 }
2804 
2805 
2806 /**
2807  * Generated when a window size or position has changed.
2808  * GdkEventType type;
2809  * the type of the event (GDK_CONFIGURE).
2810  * GdkWindow *window;
2811  * the window which received the event.
2812  * gint8 send_event;
2813  * TRUE if the event was sent explicitly (e.g. using XSendEvent).
2814  * gint x;
2815  * the new x coordinate of the window, relative to its parent.
2816  * gint y;
2817  * the new y coordinate of the window, relative to its parent.
2818  * gint width;
2819  * the new width of the window.
2820  * gint height;
2821  * the new height of the window.
2822  */
2823 public struct GdkEventConfigure
2824 {
2825 	GdkEventType type;
2826 	GdkWindow *window;
2827 	byte sendEvent;
2828 	int x, y;
2829 	int width;
2830 	int height;
2831 }
2832 
2833 
2834 /**
2835  * Describes a property change on a window.
2836  * GdkEventType type;
2837  * the type of the event (GDK_PROPERTY_NOTIFY).
2838  * GdkWindow *window;
2839  * the window which received the event.
2840  * gint8 send_event;
2841  * TRUE if the event was sent explicitly (e.g. using XSendEvent).
2842  * GdkAtom atom;
2843  * the property that was changed.
2844  * guint32 time;
2845  * the time of the event in milliseconds.
2846  * guint state;
2847  * whether the property was changed (GDK_PROPERTY_NEW_VALUE) or
2848  * deleted (GDK_PROPERTY_DELETE).
2849  */
2850 public struct GdkEventProperty
2851 {
2852 	GdkEventType type;
2853 	GdkWindow *window;
2854 	byte sendEvent;
2855 	GdkAtom atom;
2856 	uint time;
2857 	uint state;
2858 }
2859 
2860 
2861 /**
2862  * Generated when a selection is requested or ownership of a selection
2863  * is taken over by another client application.
2864  * GdkEventType type;
2865  * the type of the event (GDK_SELECTION_CLEAR, GDK_SELECTION_NOTIFY or
2866  * GDK_SELECTION_REQUEST).
2867  * GdkWindow *window;
2868  * the window which received the event.
2869  * gint8 send_event;
2870  * TRUE if the event was sent explicitly (e.g. using XSendEvent).
2871  * GdkAtom selection;
2872  * the selection.
2873  * GdkAtom target;
2874  * the target to which the selection should be converted.
2875  * GdkAtom property;
2876  * the property in which to place the result of the conversion.
2877  * guint32 time;
2878  * the time of the event in milliseconds.
2879  * GdkNativeWindow requestor;
2880  * the native window on which to place property.
2881  */
2882 public struct GdkEventSelection
2883 {
2884 	GdkEventType type;
2885 	GdkWindow *window;
2886 	byte sendEvent;
2887 	GdkAtom selection;
2888 	GdkAtom target;
2889 	GdkAtom property;
2890 	uint time;
2891 	GdkNativeWindow requestor;
2892 }
2893 
2894 
2895 /**
2896  * Generated during DND operations.
2897  * GdkEventType type;
2898  * the type of the event (GDK_DRAG_ENTER, GDK_DRAG_LEAVE,
2899  * GDK_DRAG_MOTION, GDK_DRAG_STATUS, GDK_DROP_START or GDK_DROP_FINISHED).
2900  * GdkWindow *window;
2901  * the window which received the event.
2902  * gint8 send_event;
2903  * TRUE if the event was sent explicitly (e.g. using XSendEvent).
2904  * GdkDragContext *context;
2905  * the GdkDragContext for the current DND operation.
2906  * guint32 time;
2907  * the time of the event in milliseconds.
2908  * gshort x_root;
2909  * the x coordinate of the pointer relative to the root of the screen,
2910  * only set for GDK_DRAG_MOTION and GDK_DROP_START.
2911  * gshort y_root;
2912  * the y coordinate of the pointer relative to the root of the screen,
2913  * only set for GDK_DRAG_MOTION and GDK_DROP_START.
2914  */
2915 public struct GdkEventDND
2916 {
2917 	GdkEventType type;
2918 	GdkWindow *window;
2919 	byte sendEvent;
2920 	GdkDragContext *context;
2921 	uint time;
2922 	short xRoot, yRoot;
2923 }
2924 
2925 
2926 /**
2927  * Proximity events are generated when using GDK's wrapper for the
2928  * XInput extension. The XInput extension is an add-on for standard X
2929  * that allows you to use nonstandard devices such as graphics tablets.
2930  * A proximity event indicates that the stylus has moved in or out of
2931  * contact with the tablet, or perhaps that the user's finger has moved
2932  * in or out of contact with a touch screen.
2933  * GdkEventType type;
2934  * the type of the event (GDK_PROXIMITY_IN or GDK_PROXIMITY_OUT).
2935  * GdkWindow *window;
2936  * the window which received the event.
2937  * gint8 send_event;
2938  * TRUE if the event was sent explicitly (e.g. using XSendEvent).
2939  * guint32 time;
2940  * the time of the event in milliseconds.
2941  * GdkDevice *device;
2942  * the device where the event originated.
2943  */
2944 public struct GdkEventProximity
2945 {
2946 	GdkEventType type;
2947 	GdkWindow *window;
2948 	byte sendEvent;
2949 	uint time;
2950 	GdkDevice *device;
2951 }
2952 
2953 
2954 /**
2955  * An event sent by another client application.
2956  * GdkEventType type;
2957  * the type of the event (GDK_CLIENT_EVENT).
2958  * GdkWindow *window;
2959  * the window which received the event.
2960  * gint8 send_event;
2961  * TRUE if the event was sent explicitly (e.g. using XSendEvent).
2962  * GdkAtom message_type;
2963  * the type of the message, which can be defined by the
2964  * application.
2965  * gushort data_format;
2966  * the format of the data, given as the number of bits in each
2967  * data element, i.e. 8, 16, or 32. 8-bit data uses the b array of the data
2968  * union, 16-bit data uses the s array, and 32-bit data uses the l array.
2969  */
2970 public struct GdkEventClient
2971 {
2972 	GdkEventType type;
2973 	GdkWindow *window;
2974 	byte sendEvent;
2975 	GdkAtom messageType;
2976 	ushort dataFormat;
2977 	union Data
2978 	{
2979 		char b[20];
2980 		short s[10];
2981 		long l[5];
2982 	}
2983 	Data data;
2984 }
2985 
2986 
2987 /**
2988  * Generated when the area of a GdkDrawable being copied, with gdk_draw_drawable()
2989  * or gdk_window_copy_area(), was completely available.
2990  * FIXME: add more here.
2991  * GdkEventType type;
2992  * the type of the event (GDK_NO_EXPOSE).
2993  * GdkWindow *window;
2994  * the window which received the event.
2995  * gint8 send_event;
2996  * TRUE if the event was sent explicitly (e.g. using XSendEvent).
2997  */
2998 public struct GdkEventNoExpose
2999 {
3000 	GdkEventType type;
3001 	GdkWindow *window;
3002 	byte sendEvent;
3003 }
3004 
3005 
3006 /**
3007  * Generated when the state of a toplevel window changes.
3008  * GdkEventType type;
3009  * the type of the event (GDK_WINDOW_STATE).
3010  * GdkWindow *window;
3011  * the window which received the event.
3012  * gint8 send_event;
3013  * TRUE if the event was sent explicitly (e.g. using XSendEvent).
3014  * GdkWindowState changed_mask;
3015  * mask specifying what flags have changed.
3016  * GdkWindowState new_window_state;
3017  * the new window state, a combination of GdkWindowState bits.
3018  */
3019 public struct GdkEventWindowState
3020 {
3021 	GdkEventType type;
3022 	GdkWindow *window;
3023 	byte sendEvent;
3024 	GdkWindowState changedMask;
3025 	GdkWindowState newWindowState;
3026 }
3027 
3028 
3029 /**
3030  * Generated when a setting is modified.
3031  * GdkEventType type;
3032  * the type of the event (GDK_SETTING).
3033  * GdkWindow *window;
3034  * the window which received the event.
3035  * gint8 send_event;
3036  * TRUE if the event was sent explicitly (e.g. using XSendEvent).
3037  * GdkSettingAction action;
3038  * what happened to the setting (GDK_SETTING_ACTION_NEW,
3039  * GDK_SETTING_ACTION_CHANGED or GDK_SETTING_ACTION_DELETED).
3040  * char *name;
3041  * the name of the setting.
3042  */
3043 public struct GdkEventSetting
3044 {
3045 	GdkEventType type;
3046 	GdkWindow *window;
3047 	byte sendEvent;
3048 	GdkSettingAction action;
3049 	char *name;
3050 }
3051 
3052 
3053 /**
3054  * Generated when the owner of a selection changes. On X11, this information is
3055  * only available if the X server supports the XFIXES extension.
3056  * GdkEventType type;
3057  * the type of the event (GDK_OWNER_CHANGE).
3058  * GdkWindow *window;
3059  * the window which received the event
3060  * gint8 send_event;
3061  * TRUE if the event was sent explicitly (e.g. using XSendEvent).
3062  * GdkNativeWindow owner;
3063  * the new owner of the selection
3064  * GdkOwnerChange reason;
3065  * the reason for the ownership change as a GdkOwnerChange value
3066  * GdkAtom selection;
3067  * the atom identifying the selection
3068  * guint32 time;
3069  * the timestamp of the event
3070  * guint32 selection_time;
3071  * the time at which the selection ownership was taken over
3072  * Since 2.6
3073  */
3074 public struct GdkEventOwnerChange
3075 {
3076 	GdkEventType type;
3077 	GdkWindow *window;
3078 	byte sendEvent;
3079 	GdkNativeWindow owner;
3080 	GdkOwnerChange reason;
3081 	GdkAtom selection;
3082 	uint time;
3083 	uint selectionTime;
3084 }
3085 
3086 
3087 /**
3088  * Generated when a pointer or keyboard grab is broken. On X11, this happens
3089  * when the grab window becomes unviewable (i.e. it or one of its ancestors
3090  * is unmapped), or if the same application grabs the pointer or keyboard
3091  * again. Note that implicit grabs (which are initiated by button presses)
3092  * can also cause GdkEventGrabBroken events.
3093  * GdkEventType type;
3094  * the type of the event (GDK_GRAB_BROKEN)
3095  * GdkWindow *window;
3096  * the window which received the event, i.e. the window
3097  * that previously owned the grab
3098  * gint8 send_event;
3099  * TRUE if the event was sent explicitly (e.g. using XSendEvent).
3100  * gboolean keyboard;
3101  * TRUE if a keyboard grab was broken, FALSE if a pointer
3102  * grab was broken
3103  * gboolean implicit;
3104  * TRUE if the broken grab was implicit
3105  * GdkWindow *grab_window;
3106  * If this event is caused by another grab in the same
3107  * application, grab_window contains the new grab window. Otherwise
3108  * grab_window is NULL.
3109  * Since 2.8
3110  */
3111 public struct GdkEventGrabBroken
3112 {
3113 	GdkEventType type;
3114 	GdkWindow *window;
3115 	byte sendEvent;
3116 	int keyboard;
3117 	int implicit;
3118 	GdkWindow *grabWindow;
3119 }
3120 
3121 
3122 /**
3123  * Main Gtk struct.
3124  * A GdkKeymap defines the translation from keyboard state
3125  * (including a hardware key, a modifier mask, and active keyboard group)
3126  * to a keyval. This translation has two phases. The first phase is
3127  * to determine the effective keyboard group and level for the keyboard
3128  * state; the second phase is to look up the keycode/group/level triplet
3129  * in the keymap and see what keyval it corresponds to.
3130  */
3131 public struct GdkKeymap{}
3132 
3133 
3134 /**
3135  * A GdkKeymapKey is a hardware key that can
3136  * be mapped to a keyval.
3137  * guint keycode;
3138  * the hardware keycode. This is an identifying number for a
3139  * physical key.
3140  * gint group;
3141  * indicates movement in a horizontal direction. Usually groups are used
3142  * for two different languages. In group 0, a key might have two English
3143  * characters, and in group 1 it might have two Hebrew characters. The Hebrew
3144  * characters will be printed on the key next to the English characters.
3145  * gint level;
3146  * indicates which symbol on the key will be used, in a vertical direction. So on a standard US keyboard, the key with the number "1" on it also has the
3147  * exclamation point ("!") character on it. The level indicates whether to use
3148  * the "1" or the "!" symbol. The letter keys are considered to have a lowercase
3149  * letter at level 0, and an uppercase letter at level 1, though only the
3150  * uppercase letter is printed.
3151  */
3152 public struct GdkKeymapKey
3153 {
3154 	uint keycode;
3155 	int group;
3156 	int level;
3157 }
3158 
3159 
3160 /**
3161  * Main Gtk struct.
3162  * A GdkDragContext holds information about a
3163  * drag in progress. It is used on both source and destination sides.
3164  * GObject parent_instance;
3165  * the parent instance
3166  */
3167 public struct GdkDragContext
3168 {
3169 	GObject parentInstance;
3170 	GdkDragProtocol protocol;
3171 	int isSource;
3172 	GdkWindow *sourceWindow;
3173 	GdkWindow *destWindow;
3174 	GList *targets;
3175 	GdkDragAction actions;
3176 	GdkDragAction suggestedAction;
3177 	GdkDragAction action;
3178 	uint startTime;
3179 }
3180 
3181 
3182 /**
3183  * Main Gtk struct.
3184  * A GdkDevice structure contains
3185  * a detailed description of an extended input device. All
3186  * fields are read-only; but you can use gdk_device_set_source(),
3187  * gdk_device_set_mode(), gdk_device_set_key() and gdk_device_set_axis_use()
3188  * to configure various aspects of the device.
3189  * GObject parent_instance;
3190  * the parent instance
3191  */
3192 public struct GdkDevice
3193 {
3194 	GObject parentInstance;
3195 	/+* All fields are read-only +/
3196 	char *name;
3197 	GdkInputSource source;
3198 	GdkInputMode mode;
3199 	int hasCursor; /+* TRUE if the X pointer follows device motion +/
3200 	int numAxes;
3201 	GdkDeviceAxis *axes;
3202 	int numKeys;
3203 	GdkDeviceKey *keys;
3204 }
3205 
3206 
3207 /**
3208  * The GdkDeviceKey structure contains information
3209  * about the mapping of one device macro button onto a normal X key event.
3210  * It has the following fields:
3211  * guint keyval;
3212  * the keyval to generate when the macro button is pressed.
3213  * If this is 0, no keypress will be generated.
3214  * GdkModifierType modifiers;
3215  * the modifiers set for the generated key event.
3216  */
3217 public struct GdkDeviceKey
3218 {
3219 	uint keyval;
3220 	GdkModifierType modifiers;
3221 }
3222 
3223 
3224 /**
3225  * The GdkDeviceAxis structure contains information
3226  * about the range and mapping of a device axis.
3227  * GdkAxisUse use;
3228  * specifies how the axis is used.
3229  * gdouble min;
3230  * the minimal value that will be reported by this axis.
3231  * gdouble max;
3232  * the maximal value that will be reported by this axis.
3233  */
3234 public struct GdkDeviceAxis
3235 {
3236 	GdkAxisUse use;
3237 	double min;
3238 	double max;
3239 }
3240 
3241 
3242 /**
3243  * The GdkTimeCoord structure stores a single event in a
3244  * motion history. It contains the following fields:
3245  * guint32 time;
3246  * The timestamp for this event.
3247  * gdouble axes[GDK_MAX_TIMECOORD_AXES];
3248  * the values of the device's axes.
3249  */
3250 public struct GdkTimeCoord
3251 {
3252 	uint time;
3253 	double axes[GDK_MAX_TIMECOORD_AXES];
3254 }
3255 
3256 
3257 /**
3258  * Main Gtk struct.
3259  * An opaque structure representing an application launch context.
3260  */
3261 public struct GdkAppLaunchContext{}
3262 
3263 
3264 /*
3265  * Warning
3266  * gdk_visual_ref is deprecated and should not be used in newly-written code.
3267  * Deprecated equivalent of g_object_ref().
3268  * v :
3269  * a GdkVisual
3270  * Returns :
3271  * the same visual
3272  */
3273 // TODO
3274 // #define gdk_visual_ref(v) g_object_ref(v)
3275 
3276 /*
3277  * Warning
3278  * gdk_visual_unref is deprecated and should not be used in newly-written code.
3279  * Deprecated equivalent of g_object_unref().
3280  * v :
3281  * a GdkVisual
3282  */
3283 // TODO
3284 // #define gdk_visual_unref(v) g_object_unref(v)
3285 
3286 /*
3287  * Warning
3288  * gdk_window_copy_area is deprecated and should not be used in newly-written code.
3289  * Deprecated equivalent to gdk_draw_drawable(), see that function for docs
3290  * drawable :
3291  * a GdkDrawable
3292  * gc :
3293  * a GdkGC sharing the drawable's visual and colormap
3294  * x :
3295  * X position in drawable where the rectangle should be drawn
3296  * y :
3297  * Y position in drawable where the rectangle should be drawn
3298  * source_drawable :
3299  * the source GdkDrawable, which may be the same as drawable
3300  * source_x :
3301  * X position in src of rectangle to draw
3302  * source_y :
3303  * Y position in src of rectangle to draw
3304  * width :
3305  * width of rectangle to draw, or -1 for entire src width
3306  * height :
3307  * height of rectangle to draw, or -1 for entire src height
3308  */
3309 // TODO
3310 // #define gdk_window_copy_area(drawable,gc,x,y,source_drawable,source_x,source_y,width,height)
3311 
3312 /*
3313  * Converts a GdkAtom into a pointer type.
3314  * atom :
3315  * a GdkAtom.
3316  */
3317 // TODO
3318 // #define GDK_ATOM_TO_POINTER(atom) (atom)
3319 
3320 /*
3321  * Extracts a GdkAtom from a pointer. The GdkAtom must have been
3322  * stored in the pointer with GDK_ATOM_TO_POINTER().
3323  * ptr :
3324  * a pointer containing a GdkAtom.
3325  */
3326 // TODO
3327 // #define GDK_POINTER_TO_ATOM(ptr) ((GdkAtom)(ptr))
3328 
3329 /*
3330  * Returns the display of a GdkWindow.
3331  * win :
3332  * a GdkWindow.
3333  * Returns :
3334  * an Xlib Display*.
3335  */
3336 // TODO
3337 // #define GDK_WINDOW_XDISPLAY(win) (GDK_SCREEN_X11 (GDK_WINDOW_SCREEN (win))->xdisplay)
3338 
3339 /*
3340  * Returns the X window belonging to a GdkWindow.
3341  * win :
3342  * a GdkWindow.
3343  * Returns :
3344  * the Xlib Window of win.
3345  */
3346 // TODO
3347 // #define GDK_WINDOW_XID(win) (GDK_DRAWABLE_IMPL_X11(((GdkWindowObject *)win)->impl)->xid)
3348 
3349 /*
3350  * Returns the display of a GdkPixmap.
3351  * pix :
3352  * a GdkPixmap.
3353  * Returns :
3354  * an Xlib Display*.
3355  */
3356 // TODO
3357 // #define GDK_PIXMAP_XDISPLAY(pix) (GDK_SCREEN_X11 (GDK_PIXMAP_SCREEN (pix))->xdisplay)
3358 
3359 /*
3360  * Returns the X pixmap belonging to a GdkPixmap.
3361  * pix :
3362  * a GdkPixmap.
3363  * Returns :
3364  * the Xlib XPixmap of win.
3365  */
3366 // TODO
3367 // #define GDK_PIXMAP_XID(pix) (GDK_DRAWABLE_IMPL_X11(((GdkPixmapObject *)pix)->impl)->xid)
3368 
3369 /*
3370  * Returns the display of a GdkDisplay.
3371  * display :
3372  * a GdkDisplay.
3373  */
3374 // TODO
3375 // #define GDK_DISPLAY_XDISPLAY(display) (GDK_DISPLAY_X11(display)->xdisplay)
3376 
3377 /*
3378  * Returns the display of a GdkDrawable.
3379  * win :
3380  * a GdkDrawable.
3381  * Returns :
3382  * an Xlib Display*.
3383  */
3384 // TODO
3385 // #define GDK_DRAWABLE_XDISPLAY(win) (GDK_IS_WINDOW (win) ? GDK_WINDOW_XDISPLAY (win) : GDK_PIXMAP_XDISPLAY (win))
3386 
3387 /*
3388  * Returns the X resource (window or pixmap) belonging to a GdkDrawable.
3389  * win :
3390  * a GdkDrawable.
3391  * Returns :
3392  * the ID of win's X resource.
3393  */
3394 // TODO
3395 // #define GDK_DRAWABLE_XID(win) (GDK_IS_WINDOW (win) ? GDK_WINDOW_XID (win) : GDK_PIXMAP_XID (win))
3396 
3397 /*
3398  * Returns the display of a GdkImage.
3399  * image :
3400  * a GdkImage.
3401  * Returns :
3402  * an Xlib Display*.
3403  */
3404 // TODO
3405 // #define GDK_IMAGE_XDISPLAY(image) (gdk_x11_image_get_xdisplay (image))
3406 
3407 /*
3408  * Returns the X image belonging to a GdkImage.
3409  * image :
3410  * a GdkImage.
3411  * Returns :
3412  * an XImage*.
3413  */
3414 // TODO
3415 // #define GDK_IMAGE_XIMAGE(image) (gdk_x11_image_get_ximage (image))
3416 
3417 /*
3418  * Returns the display of a GdkGC.
3419  * gc :
3420  * a GdkGC.
3421  * Returns :
3422  * an Xlib Display*.
3423  */
3424 // TODO
3425 // #define GDK_GC_XDISPLAY(gc) (GDK_SCREEN_XDISPLAY(GDK_GC_X11(gc)->screen))
3426 
3427 /*
3428  * Returns the display of a GdkColormap.
3429  * cmap :
3430  * a GdkColormap.
3431  * Returns :
3432  * an Xlib Display*.
3433  */
3434 // TODO
3435 // #define GDK_COLORMAP_XDISPLAY(cmap) (gdk_x11_colormap_get_xdisplay (cmap))
3436 
3437 /*
3438  * Returns the X colormap belonging to a GdkColormap.
3439  * cmap :
3440  * a GdkColormap.
3441  * Returns :
3442  * an Xlib Colormap.
3443  */
3444 // TODO
3445 // #define GDK_COLORMAP_XCOLORMAP(cmap) (gdk_x11_colormap_get_xcolormap (cmap))
3446 
3447 /*
3448  * Returns the display of a GdkScreen.
3449  * screen :
3450  * a GdkScreen.
3451  * Returns :
3452  * an Xlib Display*.
3453  */
3454 // TODO
3455 // #define GDK_SCREEN_XDISPLAY(screen) (GDK_SCREEN_X11 (screen)->xdisplay)
3456 
3457 /*
3458  * Returns the index of a GdkScreen.
3459  * screen :
3460  * a GdkScreen
3461  * Returns :
3462  * the position of screen among the screens of
3463  * its display.
3464  */
3465 // TODO
3466 // #define GDK_SCREEN_XNUMBER(screen) (GDK_SCREEN_X11 (screen)->screen_num)
3467 
3468 /*
3469  * Returns the screen of a GdkScreen.
3470  * screen :
3471  * a GdkScreen
3472  * Returns :
3473  * an Xlib Screen*.
3474  */
3475 // TODO
3476 // #define GDK_SCREEN_XSCREEN(screen) (GDK_SCREEN_X11 (screen)->xscreen)
3477 
3478 /*
3479  * Returns the X visual belonging to a GdkVisual.
3480  * vis :
3481  * a GdkVisual.
3482  * Returns :
3483  * an Xlib Visual*.
3484  */
3485 // TODO
3486 // #define GDK_VISUAL_XVISUAL(vis) (((GdkVisualPrivate *) vis)->xvisual)
3487 
3488 /*
3489  * Warning
3490  * GDK_FONT_XDISPLAY is deprecated and should not be used in newly-written code.
3491  * Returns the display of a GdkFont.
3492  * font :
3493  * a GdkFont.
3494  * Returns :
3495  * an Xlib Display*.
3496  */
3497 // TODO
3498 // #define GDK_FONT_XDISPLAY(font) (gdk_x11_font_get_xdisplay (font))
3499 
3500 /*
3501  * Warning
3502  * GDK_FONT_XFONT is deprecated and should not be used in newly-written code.
3503  * Returns the X font belonging to a GdkFont.
3504  * font :
3505  * a GdkFont.
3506  * Returns :
3507  * an Xlib XFontStruct* or an XFontSet.
3508  */
3509 // TODO
3510 // #define GDK_FONT_XFONT(font) (gdk_x11_font_get_xfont (font))
3511 
3512 /*
3513  * Returns the X cursor belonging to a GdkCursor.
3514  * cursor :
3515  * a GdkCursor.
3516  * Returns :
3517  * an Xlib Cursor.
3518  */
3519 // TODO
3520 // #define GDK_CURSOR_XCURSOR(cursor) (gdk_x11_cursor_get_xcursor (cursor))
3521 
3522 /*
3523  * Returns the display of a GdkCursor.
3524  * cursor :
3525  * a GdkCursor.
3526  * Returns :
3527  * an Xlib Display*.
3528  */
3529 // TODO
3530 // #define GDK_CURSOR_XDISPLAY(cursor) (gdk_x11_cursor_get_xdisplay (cursor))
3531 
3532 /*
3533  * Returns the X GC of a GdkGC.
3534  * gc :
3535  * a GdkGC.
3536  * Returns :
3537  * an Xlib GC.
3538  */
3539 // TODO
3540 // #define GDK_GC_XGC(gc)		 (GDK_GC_X11(gc)->xgc)
3541 
3542 /*
3543  * Returns the X GC of a GdkGC.
3544  * gc :
3545  * a GdkGC.
3546  * Returns :
3547  * an Xlib GC.
3548  */
3549 // TODO
3550 // #define GDK_GC_GET_XGC(gc)	 (GDK_GC_X11(gc)->dirty_mask ? _gdk_x11_gc_flush (gc) : ((GdkGCX11 *)(gc))->xgc)
3551 
3552 /*
3553  * Warning
3554  * gdk_font_lookup is deprecated and should not be used in newly-written code.
3555  * Obtains the GdkFont for the given Xlib font ID, or NULL if no GdkFont has
3556  * been created for xid.
3557  * xid :
3558  * an Xlib font ID
3559  */
3560 // TODO
3561 // #define gdk_font_lookup(xid)	 ((GdkFont*) gdk_xid_table_lookup (xid))
3562 
3563 /*
3564  * Warning
3565  * gdk_font_lookup_for_display is deprecated and should not be used in newly-written code.
3566  * Obtains the GdkFont for the given Xlib font ID on display, or NULL if no
3567  * GdkFont has been created for xid.
3568  * display :
3569  * a GdkDisplay
3570  * xid :
3571  * an Xlib font ID
3572  * Since: 2.2
3573  */
3574 // TODO
3575 // #define gdk_font_lookup_for_display(display, xid) ((GdkFont*) gdk_xid_table_lookup_for_display (display, ((xid)|XID_FONT_BIT)))
3576 
3577 /*
3578  * Warning
3579  * GdkSpanFunc is deprecated and should not be used in newly-written code.
3580  * This defines the type of the function passed to
3581  * gdk_region_spans_intersect_foreach().
3582  * span :
3583  * a GdkSpan.
3584  * data :
3585  * the user data passed to gdk_region_spans_intersect_foreach().
3586  */
3587 // void (*GdkSpanFunc) (GdkSpan *span,  gpointer data);
3588 public alias extern(C) void function(GdkSpan* span, void* data) GdkSpanFunc;
3589 
3590 /*
3591  * A function of this type is responsible for freeing the pixel array
3592  * of a pixbuf. The gdk_pixbuf_new_from_data() function lets you
3593  * pass in a pre-allocated pixel array so that a pixbuf can be
3594  * created from it; in this case you will need to pass in a function
3595  * of GdkPixbufDestroyNotify so that the pixel data can be freed
3596  * when the pixbuf is finalized.
3597  * pixels :
3598  * The pixel array of the pixbuf that is being finalized.
3599  * data :
3600  * User closure data.
3601  * See Also
3602  * GdkPixbuf, gdk_pixbuf_new_from_data().
3603  */
3604 // void (*GdkPixbufDestroyNotify) (guchar *pixels,  gpointer data);
3605 public alias extern(C) void function(guchar* pixels, void* data) GdkPixbufDestroyNotify;
3606 
3607 /*
3608  * Specifies the type of the function passed to
3609  * gdk_pixbuf_save_to_callback(). It is called once for each block of
3610  * bytes that is "written" by gdk_pixbuf_save_to_callback(). If
3611  * successful it should return TRUE. If an error occurs it should set
3612  * error and return FALSE, in which case gdk_pixbuf_save_to_callback()
3613  * will fail with the same error.
3614  * buf :
3615  * bytes to be written.
3616  * count :
3617  * number of bytes in buf.
3618  * error :
3619  * A location to return an error. [out]
3620  * data :
3621  * user data passed to gdk_pixbuf_save_to_callback(). [closure]
3622  * Returns :
3623  * TRUE if successful, FALSE (with error set) if failed.
3624  * Since 2.4
3625  */
3626 // gboolean (*GdkPixbufSaveFunc) (const gchar *buf,  gsize count,  GError **error,  gpointer data);
3627 public alias extern(C) int function(char* buf, gsize count, GError** error, void* data) GdkPixbufSaveFunc;
3628 
3629 /*
3630  * Specifies the type of function used to filter native events before they are
3631  * converted to GDK events.
3632  * When a filter is called, event is unpopulated, except for
3633  * event->window. The filter may translate the native
3634  * event to a GDK event and store the result in event, or handle it without
3635  * translation. If the filter translates the event and processing should
3636  * continue, it should return GDK_FILTER_TRANSLATE.
3637  * xevent :
3638  * the native event to filter.
3639  * event :
3640  * the GDK event to which the X event will be translated.
3641  * data :
3642  * user data set when the filter was installed.
3643  * Returns :
3644  * a GdkFilterReturn value.
3645  */
3646 // GdkFilterReturn (*GdkFilterFunc) (GdkXEvent *xevent,  GdkEvent *event,  gpointer data);
3647 public alias extern(C) GdkFilterReturn function(GdkXEvent* xevent, GdkEvent* event, void* data) GdkFilterFunc;
3648 
3649 /*
3650  * Specifies the type of function passed to gdk_event_handler_set() to handle
3651  * all GDK events.
3652  * event :
3653  * the GdkEvent to process.
3654  * data :
3655  * user data set when the event handler was installed with
3656  * gdk_event_handler_set().
3657  */
3658 // void (*GdkEventFunc) (GdkEvent *event,  gpointer data);
3659 public alias extern(C) void function(GdkEvent* event, void* data) GdkEventFunc;
3660 
3661 /*
3662  * A callback function that will be called when some condition
3663  * occurs.
3664  * data :
3665  * the user data passed to gdk_input_add() or gdk_input_add_full().
3666  * source :
3667  * the source where the condition occurred.
3668  * condition :
3669  * the triggering condition.
3670  */
3671 // void (*GdkInputFunction) (gpointer data,  gint source,  GdkInputCondition condition);
3672 public alias extern(C) void function(void* data, int source, GdkInputCondition condition) GdkInputFunction;
3673 
3674 /*
3675  * Warning
3676  * GdkDestroyNotify is deprecated and should not be used in newly-written code.
3677  * A callback function called when a piece of user data is
3678  * no longer being stored by GDK. Will typically free the
3679  * structure or object that data points to.
3680  * data :
3681  * the user data.
3682  */
3683 // void (*GdkDestroyNotify) (gpointer data);
3684 public alias extern(C) void function(void* data) GdkDestroyNotify;
3685 /**
3686  * The GdkEvent struct contains a union of all of the event structs,
3687  * and allows access to the data fields in a number of ways.
3688  * The event type is always the first field in all of the event structs, and
3689  * can always be accessed with the following code, no matter what type of event
3690  * it is:
3691  */
3692 public struct GdkEvent
3693 {
3694 	union
3695 	{
3696 		GdkEventType type;
3697 		GdkEventAny any;
3698 		GdkEventExpose expose;
3699 		GdkEventNoExpose noExpose;
3700 		GdkEventVisibility visibility;
3701 		GdkEventMotion motion;
3702 		GdkEventButton button;
3703 		GdkEventScroll scroll;
3704 		GdkEventKey key;
3705 		GdkEventCrossing crossing;
3706 		GdkEventFocus focusChange;
3707 		GdkEventConfigure configure;
3708 		GdkEventProperty property;
3709 		GdkEventSelection selection;
3710 		GdkEventOwnerChange ownerChange;
3711 		GdkEventProximity proximity;
3712 		GdkEventClient client;
3713 		GdkEventDND dnd;
3714 		GdkEventWindowState windowState;
3715 		GdkEventSetting setting;
3716 		GdkEventGrabBroken grabBroken;
3717 	}
3718 }