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 25 module gdk.c.types; 26 27 public import cairo.c.types; 28 public import gdkpixbuf.c.types; 29 public import gio.c.types; 30 public import glib.c.types; 31 public import gobject.c.types; 32 public import pango.c.types; 33 34 35 /** 36 * Positioning hints for aligning a surface relative to a rectangle. 37 * 38 * These hints determine how the surface should be positioned in the case that 39 * the surface would fall off-screen if placed in its ideal position. 40 * 41 * For example, %GDK_ANCHOR_FLIP_X will replace %GDK_GRAVITY_NORTH_WEST with 42 * %GDK_GRAVITY_NORTH_EAST and vice versa if the surface extends beyond the left 43 * or right edges of the monitor. 44 * 45 * If %GDK_ANCHOR_SLIDE_X is set, the surface can be shifted horizontally to fit 46 * on-screen. If %GDK_ANCHOR_RESIZE_X is set, the surface can be shrunken 47 * horizontally to fit. 48 * 49 * In general, when multiple flags are set, flipping should take precedence over 50 * sliding, which should take precedence over resizing. 51 */ 52 public enum GdkAnchorHints 53 { 54 /** 55 * allow flipping anchors horizontally 56 */ 57 FLIP_X = 1, 58 /** 59 * allow flipping anchors vertically 60 */ 61 FLIP_Y = 2, 62 /** 63 * allow sliding surface horizontally 64 */ 65 SLIDE_X = 4, 66 /** 67 * allow sliding surface vertically 68 */ 69 SLIDE_Y = 8, 70 /** 71 * allow resizing surface horizontally 72 */ 73 RESIZE_X = 16, 74 /** 75 * allow resizing surface vertically 76 */ 77 RESIZE_Y = 32, 78 /** 79 * allow flipping anchors on both axes 80 */ 81 FLIP = 3, 82 /** 83 * allow sliding surface on both axes 84 */ 85 SLIDE = 12, 86 /** 87 * allow resizing surface on both axes 88 */ 89 RESIZE = 48, 90 } 91 alias GdkAnchorHints AnchorHints; 92 93 /** 94 * Flags describing the current capabilities of a device/tool. 95 */ 96 public enum GdkAxisFlags 97 { 98 /** 99 * X axis is present 100 */ 101 X = 2, 102 /** 103 * Y axis is present 104 */ 105 Y = 4, 106 /** 107 * Scroll X delta axis is present 108 */ 109 DELTA_X = 8, 110 /** 111 * Scroll Y delta axis is present 112 */ 113 DELTA_Y = 16, 114 /** 115 * Pressure axis is present 116 */ 117 PRESSURE = 32, 118 /** 119 * X tilt axis is present 120 */ 121 XTILT = 64, 122 /** 123 * Y tilt axis is present 124 */ 125 YTILT = 128, 126 /** 127 * Wheel axis is present 128 */ 129 WHEEL = 256, 130 /** 131 * Distance axis is present 132 */ 133 DISTANCE = 512, 134 /** 135 * Z-axis rotation is present 136 */ 137 ROTATION = 1024, 138 /** 139 * Slider axis is present 140 */ 141 SLIDER = 2048, 142 } 143 alias GdkAxisFlags AxisFlags; 144 145 /** 146 * Defines how device axes are interpreted by GTK. 147 * 148 * Note that the X and Y axes are not really needed; pointer devices 149 * report their location via the x/y members of events regardless. Whether 150 * X and Y are present as axes depends on the GDK backend. 151 */ 152 public enum GdkAxisUse 153 { 154 /** 155 * the axis is ignored. 156 */ 157 IGNORE = 0, 158 /** 159 * the axis is used as the x axis. 160 */ 161 X = 1, 162 /** 163 * the axis is used as the y axis. 164 */ 165 Y = 2, 166 /** 167 * the axis is used as the scroll x delta 168 */ 169 DELTA_X = 3, 170 /** 171 * the axis is used as the scroll y delta 172 */ 173 DELTA_Y = 4, 174 /** 175 * the axis is used for pressure information. 176 */ 177 PRESSURE = 5, 178 /** 179 * the axis is used for x tilt information. 180 */ 181 XTILT = 6, 182 /** 183 * the axis is used for y tilt information. 184 */ 185 YTILT = 7, 186 /** 187 * the axis is used for wheel information. 188 */ 189 WHEEL = 8, 190 /** 191 * the axis is used for pen/tablet distance information 192 */ 193 DISTANCE = 9, 194 /** 195 * the axis is used for pen rotation information 196 */ 197 ROTATION = 10, 198 /** 199 * the axis is used for pen slider information 200 */ 201 SLIDER = 11, 202 /** 203 * a constant equal to the numerically highest axis value. 204 */ 205 LAST = 12, 206 } 207 alias GdkAxisUse AxisUse; 208 209 /** 210 * Specifies the crossing mode for enter and leave events. 211 */ 212 public enum GdkCrossingMode 213 { 214 /** 215 * crossing because of pointer motion. 216 */ 217 NORMAL = 0, 218 /** 219 * crossing because a grab is activated. 220 */ 221 GRAB = 1, 222 /** 223 * crossing because a grab is deactivated. 224 */ 225 UNGRAB = 2, 226 /** 227 * crossing because a GTK grab is activated. 228 */ 229 GTK_GRAB = 3, 230 /** 231 * crossing because a GTK grab is deactivated. 232 */ 233 GTK_UNGRAB = 4, 234 /** 235 * crossing because a GTK widget changed 236 * state (e.g. sensitivity). 237 */ 238 STATE_CHANGED = 5, 239 /** 240 * crossing because a touch sequence has begun, 241 * this event is synthetic as the pointer might have not left the surface. 242 */ 243 TOUCH_BEGIN = 6, 244 /** 245 * crossing because a touch sequence has ended, 246 * this event is synthetic as the pointer might have not left the surface. 247 */ 248 TOUCH_END = 7, 249 /** 250 * crossing because of a device switch (i.e. 251 * a mouse taking control of the pointer after a touch device), this event 252 * is synthetic as the pointer didn’t leave the surface. 253 */ 254 DEVICE_SWITCH = 8, 255 } 256 alias GdkCrossingMode CrossingMode; 257 258 /** 259 * A pad feature. 260 */ 261 public enum GdkDevicePadFeature 262 { 263 /** 264 * a button 265 */ 266 BUTTON = 0, 267 /** 268 * a ring-shaped interactive area 269 */ 270 RING = 1, 271 /** 272 * a straight interactive area 273 */ 274 STRIP = 2, 275 } 276 alias GdkDevicePadFeature DevicePadFeature; 277 278 /** 279 * Indicates the specific type of tool being used being a tablet. Such as an 280 * airbrush, pencil, etc. 281 */ 282 public enum GdkDeviceToolType 283 { 284 /** 285 * Tool is of an unknown type. 286 */ 287 UNKNOWN = 0, 288 /** 289 * Tool is a standard tablet stylus. 290 */ 291 PEN = 1, 292 /** 293 * Tool is standard tablet eraser. 294 */ 295 ERASER = 2, 296 /** 297 * Tool is a brush stylus. 298 */ 299 BRUSH = 3, 300 /** 301 * Tool is a pencil stylus. 302 */ 303 PENCIL = 4, 304 /** 305 * Tool is an airbrush stylus. 306 */ 307 AIRBRUSH = 5, 308 /** 309 * Tool is a mouse. 310 */ 311 MOUSE = 6, 312 /** 313 * Tool is a lens cursor. 314 */ 315 LENS = 7, 316 } 317 alias GdkDeviceToolType DeviceToolType; 318 319 /** 320 * Used in `GdkDrop` and `GdkDrag` to indicate the actions that the 321 * destination can and should do with the dropped data. 322 */ 323 public enum GdkDragAction 324 { 325 /** 326 * Copy the data. 327 */ 328 COPY = 1, 329 /** 330 * Move the data, i.e. first copy it, then delete 331 * it from the source using the DELETE target of the X selection protocol. 332 */ 333 MOVE = 2, 334 /** 335 * Add a link to the data. Note that this is only 336 * useful if source and destination agree on what it means, and is not 337 * supported on all platforms. 338 */ 339 LINK = 4, 340 /** 341 * Ask the user what to do with the data. 342 */ 343 ASK = 8, 344 } 345 alias GdkDragAction DragAction; 346 347 /** 348 * Used in `GdkDrag` to the reason of a cancelled DND operation. 349 */ 350 public enum GdkDragCancelReason 351 { 352 /** 353 * There is no suitable drop target. 354 */ 355 NO_TARGET = 0, 356 /** 357 * Drag cancelled by the user 358 */ 359 USER_CANCELLED = 1, 360 /** 361 * Unspecified error. 362 */ 363 ERROR = 2, 364 } 365 alias GdkDragCancelReason DragCancelReason; 366 367 /** 368 * Specifies the type of the event. 369 */ 370 public enum GdkEventType 371 { 372 /** 373 * the window manager has requested that the toplevel surface be 374 * hidden or destroyed, usually when the user clicks on a special icon in the 375 * title bar. 376 */ 377 DELETE = 0, 378 /** 379 * the pointer (usually a mouse) has moved. 380 */ 381 MOTION_NOTIFY = 1, 382 /** 383 * a mouse button has been pressed. 384 */ 385 BUTTON_PRESS = 2, 386 /** 387 * a mouse button has been released. 388 */ 389 BUTTON_RELEASE = 3, 390 /** 391 * a key has been pressed. 392 */ 393 KEY_PRESS = 4, 394 /** 395 * a key has been released. 396 */ 397 KEY_RELEASE = 5, 398 /** 399 * the pointer has entered the surface. 400 */ 401 ENTER_NOTIFY = 6, 402 /** 403 * the pointer has left the surface. 404 */ 405 LEAVE_NOTIFY = 7, 406 /** 407 * the keyboard focus has entered or left the surface. 408 */ 409 FOCUS_CHANGE = 8, 410 /** 411 * an input device has moved into contact with a sensing 412 * surface (e.g. a touchscreen or graphics tablet). 413 */ 414 PROXIMITY_IN = 9, 415 /** 416 * an input device has moved out of contact with a sensing 417 * surface. 418 */ 419 PROXIMITY_OUT = 10, 420 /** 421 * the mouse has entered the surface while a drag is in progress. 422 */ 423 DRAG_ENTER = 11, 424 /** 425 * the mouse has left the surface while a drag is in progress. 426 */ 427 DRAG_LEAVE = 12, 428 /** 429 * the mouse has moved in the surface while a drag is in 430 * progress. 431 */ 432 DRAG_MOTION = 13, 433 /** 434 * a drop operation onto the surface has started. 435 */ 436 DROP_START = 14, 437 /** 438 * the scroll wheel was turned 439 */ 440 SCROLL = 15, 441 /** 442 * a pointer or keyboard grab was broken. 443 */ 444 GRAB_BROKEN = 16, 445 /** 446 * A new touch event sequence has just started. 447 */ 448 TOUCH_BEGIN = 17, 449 /** 450 * A touch event sequence has been updated. 451 */ 452 TOUCH_UPDATE = 18, 453 /** 454 * A touch event sequence has finished. 455 */ 456 TOUCH_END = 19, 457 /** 458 * A touch event sequence has been canceled. 459 */ 460 TOUCH_CANCEL = 20, 461 /** 462 * A touchpad swipe gesture event, the current state 463 * is determined by its phase field. 464 */ 465 TOUCHPAD_SWIPE = 21, 466 /** 467 * A touchpad pinch gesture event, the current state 468 * is determined by its phase field. 469 */ 470 TOUCHPAD_PINCH = 22, 471 /** 472 * A tablet pad button press event. 473 */ 474 PAD_BUTTON_PRESS = 23, 475 /** 476 * A tablet pad button release event. 477 */ 478 PAD_BUTTON_RELEASE = 24, 479 /** 480 * A tablet pad axis event from a "ring". 481 */ 482 PAD_RING = 25, 483 /** 484 * A tablet pad axis event from a "strip". 485 */ 486 PAD_STRIP = 26, 487 /** 488 * A tablet pad group mode change. 489 */ 490 PAD_GROUP_MODE = 27, 491 /** 492 * marks the end of the GdkEventType enumeration. 493 */ 494 EVENT_LAST = 28, 495 } 496 alias GdkEventType EventType; 497 498 /** 499 * Used to represent the different paint clock phases that can be requested. 500 * 501 * The elements of the enumeration correspond to the signals of `GdkFrameClock`. 502 */ 503 public enum GdkFrameClockPhase 504 { 505 /** 506 * no phase 507 */ 508 NONE = 0, 509 /** 510 * corresponds to GdkFrameClock::flush-events. Should not be handled by applications. 511 */ 512 FLUSH_EVENTS = 1, 513 /** 514 * corresponds to GdkFrameClock::before-paint. Should not be handled by applications. 515 */ 516 BEFORE_PAINT = 2, 517 /** 518 * corresponds to GdkFrameClock::update. 519 */ 520 UPDATE = 4, 521 /** 522 * corresponds to GdkFrameClock::layout. Should not be handled by applicatiosn. 523 */ 524 LAYOUT = 8, 525 /** 526 * corresponds to GdkFrameClock::paint. 527 */ 528 PAINT = 16, 529 /** 530 * corresponds to GdkFrameClock::resume-events. Should not be handled by applications. 531 */ 532 RESUME_EVENTS = 32, 533 /** 534 * corresponds to GdkFrameClock::after-paint. Should not be handled by applications. 535 */ 536 AFTER_PAINT = 64, 537 } 538 alias GdkFrameClockPhase FrameClockPhase; 539 540 /** 541 * Indicates which monitor a surface should span over when in fullscreen mode. 542 */ 543 public enum GdkFullscreenMode 544 { 545 /** 546 * Fullscreen on current monitor only. 547 */ 548 CURRENT_MONITOR = 0, 549 /** 550 * Span across all monitors when fullscreen. 551 */ 552 ALL_MONITORS = 1, 553 } 554 alias GdkFullscreenMode FullscreenMode; 555 556 /** 557 * Error enumeration for `GdkGLContext`. 558 */ 559 public enum GdkGLError 560 { 561 /** 562 * OpenGL support is not available 563 */ 564 NOT_AVAILABLE = 0, 565 /** 566 * The requested visual format is not supported 567 */ 568 UNSUPPORTED_FORMAT = 1, 569 /** 570 * The requested profile is not supported 571 */ 572 UNSUPPORTED_PROFILE = 2, 573 /** 574 * The shader compilation failed 575 */ 576 COMPILATION_FAILED = 3, 577 /** 578 * The shader linking failed 579 */ 580 LINK_FAILED = 4, 581 } 582 alias GdkGLError GLError; 583 584 /** 585 * Defines the reference point of a surface and is used in #GdkPopupLayout. 586 */ 587 public enum GdkGravity 588 { 589 /** 590 * the reference point is at the top left corner. 591 */ 592 NORTH_WEST = 1, 593 /** 594 * the reference point is in the middle of the top edge. 595 */ 596 NORTH = 2, 597 /** 598 * the reference point is at the top right corner. 599 */ 600 NORTH_EAST = 3, 601 /** 602 * the reference point is at the middle of the left edge. 603 */ 604 WEST = 4, 605 /** 606 * the reference point is at the center of the surface. 607 */ 608 CENTER = 5, 609 /** 610 * the reference point is at the middle of the right edge. 611 */ 612 EAST = 6, 613 /** 614 * the reference point is at the lower left corner. 615 */ 616 SOUTH_WEST = 7, 617 /** 618 * the reference point is at the middle of the lower edge. 619 */ 620 SOUTH = 8, 621 /** 622 * the reference point is at the lower right corner. 623 */ 624 SOUTH_EAST = 9, 625 /** 626 * the reference point is at the top left corner of the 627 * surface itself, ignoring window manager decorations. 628 */ 629 STATIC = 10, 630 } 631 alias GdkGravity Gravity; 632 633 /** 634 * An enumeration describing the type of an input device in general terms. 635 */ 636 public enum GdkInputSource 637 { 638 /** 639 * the device is a mouse. (This will be reported for the core 640 * pointer, even if it is something else, such as a trackball.) 641 */ 642 MOUSE = 0, 643 /** 644 * the device is a stylus of a graphics tablet or similar device. 645 */ 646 PEN = 1, 647 /** 648 * the device is a keyboard. 649 */ 650 KEYBOARD = 2, 651 /** 652 * the device is a direct-input touch device, such 653 * as a touchscreen or tablet 654 */ 655 TOUCHSCREEN = 3, 656 /** 657 * the device is an indirect touch device, such 658 * as a touchpad 659 */ 660 TOUCHPAD = 4, 661 /** 662 * the device is a trackpoint 663 */ 664 TRACKPOINT = 5, 665 /** 666 * the device is a "pad", a collection of buttons, 667 * rings and strips found in drawing tablets 668 */ 669 TABLET_PAD = 6, 670 } 671 alias GdkInputSource InputSource; 672 673 /** 674 * Describes how well an event matches a given keyval and modifiers. 675 * 676 * `GdkKeyMatch` values are returned by [method@Gdk.KeyEvent.matches]. 677 */ 678 public enum GdkKeyMatch 679 { 680 /** 681 * The key event does not match 682 */ 683 NONE = 0, 684 /** 685 * The key event matches if keyboard state 686 * (specifically, the currently active group) is ignored 687 */ 688 PARTIAL = 1, 689 /** 690 * The key event matches 691 */ 692 EXACT = 2, 693 } 694 alias GdkKeyMatch KeyMatch; 695 696 /** 697 * `GdkMemoryFormat` describes a format that bytes can have in memory. 698 * 699 * It describes formats by listing the contents of the memory passed to it. 700 * So GDK_MEMORY_A8R8G8B8 will be 1 byte (8 bits) of alpha, followed by a 701 * byte each of red, green and blue. It is not endian-dependent, so 702 * CAIRO_FORMAT_ARGB32 is represented by different `GdkMemoryFormats` 703 * on architectures with different endiannesses. 704 * 705 * Its naming is modelled after VkFormat (see 706 * https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkFormat 707 * for details). 708 */ 709 public enum GdkMemoryFormat 710 { 711 /** 712 * 4 bytes; for blue, green, red, alpha. 713 * The color values are premultiplied with the alpha value. 714 */ 715 B8G8R8A8_PREMULTIPLIED = 0, 716 /** 717 * 4 bytes; for alpha, red, green, blue. 718 * The color values are premultiplied with the alpha value. 719 */ 720 A8R8G8B8_PREMULTIPLIED = 1, 721 /** 722 * 4 bytes; for red, green, blue, alpha 723 * The color values are premultiplied with the alpha value. 724 */ 725 R8G8B8A8_PREMULTIPLIED = 2, 726 /** 727 * 4 bytes; for blue, green, red, alpha. 728 */ 729 B8G8R8A8 = 3, 730 /** 731 * 4 bytes; for alpha, red, green, blue. 732 */ 733 A8R8G8B8 = 4, 734 /** 735 * 4 bytes; for red, green, blue, alpha. 736 */ 737 R8G8B8A8 = 5, 738 /** 739 * 4 bytes; for alpha, blue, green, red. 740 */ 741 A8B8G8R8 = 6, 742 /** 743 * 3 bytes; for red, green, blue. The data is opaque. 744 */ 745 R8G8B8 = 7, 746 /** 747 * 3 bytes; for blue, green, red. The data is opaque. 748 */ 749 B8G8R8 = 8, 750 /** 751 * The number of formats. This value will change as 752 * more formats get added, so do not rely on its concrete integer. 753 */ 754 N_FORMATS = 9, 755 } 756 alias GdkMemoryFormat MemoryFormat; 757 758 /** 759 * Flags to indicate the state of modifier keys and mouse buttons 760 * in events. 761 * 762 * Typical modifier keys are Shift, Control, Meta, Super, Hyper, Alt, Compose, 763 * Apple, CapsLock or ShiftLock. 764 * 765 * Note that GDK may add internal values to events which include values outside 766 * of this enumeration. Your code should preserve and ignore them. You can use 767 * %GDK_MODIFIER_MASK to remove all private values. 768 */ 769 public enum GdkModifierType 770 { 771 /** 772 * the Shift key. 773 */ 774 SHIFT_MASK = 1, 775 /** 776 * a Lock key (depending on the modifier mapping of the 777 * X server this may either be CapsLock or ShiftLock). 778 */ 779 LOCK_MASK = 2, 780 /** 781 * the Control key. 782 */ 783 CONTROL_MASK = 4, 784 /** 785 * the fourth modifier key (it depends on the modifier 786 * mapping of the X server which key is interpreted as this modifier, but 787 * normally it is the Alt key). 788 */ 789 ALT_MASK = 8, 790 /** 791 * the first mouse button. 792 */ 793 BUTTON1_MASK = 256, 794 /** 795 * the second mouse button. 796 */ 797 BUTTON2_MASK = 512, 798 /** 799 * the third mouse button. 800 */ 801 BUTTON3_MASK = 1024, 802 /** 803 * the fourth mouse button. 804 */ 805 BUTTON4_MASK = 2048, 806 /** 807 * the fifth mouse button. 808 */ 809 BUTTON5_MASK = 4096, 810 /** 811 * the Super modifier 812 */ 813 SUPER_MASK = 67108864, 814 /** 815 * the Hyper modifier 816 */ 817 HYPER_MASK = 134217728, 818 /** 819 * the Meta modifier 820 */ 821 META_MASK = 268435456, 822 } 823 alias GdkModifierType ModifierType; 824 825 /** 826 * Specifies the kind of crossing for enter and leave events. 827 * 828 * See the X11 protocol specification of LeaveNotify for 829 * full details of crossing event generation. 830 */ 831 public enum GdkNotifyType 832 { 833 /** 834 * the surface is entered from an ancestor or 835 * left towards an ancestor. 836 */ 837 ANCESTOR = 0, 838 /** 839 * the pointer moves between an ancestor and an 840 * inferior of the surface. 841 */ 842 VIRTUAL = 1, 843 /** 844 * the surface is entered from an inferior or 845 * left towards an inferior. 846 */ 847 INFERIOR = 2, 848 /** 849 * the surface is entered from or left towards 850 * a surface which is neither an ancestor nor an inferior. 851 */ 852 NONLINEAR = 3, 853 /** 854 * the pointer moves between two surfaces 855 * which are not ancestors of each other and the surface is part of 856 * the ancestor chain between one of these surfaces and their least 857 * common ancestor. 858 */ 859 NONLINEAR_VIRTUAL = 4, 860 /** 861 * an unknown type of enter/leave event occurred. 862 */ 863 UNKNOWN = 5, 864 } 865 alias GdkNotifyType NotifyType; 866 867 /** 868 * Flags about a paintable object. 869 * 870 * Implementations use these for optimizations such as caching. 871 */ 872 public enum GdkPaintableFlags 873 { 874 /** 875 * The size is immutable. 876 * The [signal@GdkPaintable::invalidate-size] signal will never be 877 * emitted. 878 */ 879 SIZE = 1, 880 /** 881 * The content is immutable. 882 * The [signal@GdkPaintable::invalidate-contents] signal will never be 883 * emitted. 884 */ 885 CONTENTS = 2, 886 } 887 alias GdkPaintableFlags PaintableFlags; 888 889 /** 890 * Specifies the direction for scroll events. 891 */ 892 public enum GdkScrollDirection 893 { 894 /** 895 * the surface is scrolled up. 896 */ 897 UP = 0, 898 /** 899 * the surface is scrolled down. 900 */ 901 DOWN = 1, 902 /** 903 * the surface is scrolled to the left. 904 */ 905 LEFT = 2, 906 /** 907 * the surface is scrolled to the right. 908 */ 909 RIGHT = 3, 910 /** 911 * the scrolling is determined by the delta values 912 * in scroll events. See gdk_scroll_event_get_deltas() 913 */ 914 SMOOTH = 4, 915 } 916 alias GdkScrollDirection ScrollDirection; 917 918 /** 919 * Flags describing the seat capabilities. 920 */ 921 public enum GdkSeatCapabilities 922 { 923 /** 924 * No input capabilities 925 */ 926 NONE = 0, 927 /** 928 * The seat has a pointer (e.g. mouse) 929 */ 930 POINTER = 1, 931 /** 932 * The seat has touchscreen(s) attached 933 */ 934 TOUCH = 2, 935 /** 936 * The seat has drawing tablet(s) attached 937 */ 938 TABLET_STYLUS = 4, 939 /** 940 * The seat has keyboard(s) attached 941 */ 942 KEYBOARD = 8, 943 /** 944 * The seat has drawing tablet pad(s) attached 945 */ 946 TABLET_PAD = 16, 947 /** 948 * The union of all pointing capabilities 949 */ 950 ALL_POINTING = 7, 951 /** 952 * The union of all capabilities 953 */ 954 ALL = 15, 955 } 956 alias GdkSeatCapabilities SeatCapabilities; 957 958 /** 959 * This enumeration describes how the red, green and blue components 960 * of physical pixels on an output device are laid out. 961 */ 962 public enum GdkSubpixelLayout 963 { 964 /** 965 * The layout is not known 966 */ 967 UNKNOWN = 0, 968 /** 969 * Not organized in this way 970 */ 971 NONE = 1, 972 /** 973 * The layout is horizontal, the order is RGB 974 */ 975 HORIZONTAL_RGB = 2, 976 /** 977 * The layout is horizontal, the order is BGR 978 */ 979 HORIZONTAL_BGR = 3, 980 /** 981 * The layout is vertical, the order is RGB 982 */ 983 VERTICAL_RGB = 4, 984 /** 985 * The layout is vertical, the order is BGR 986 */ 987 VERTICAL_BGR = 5, 988 } 989 alias GdkSubpixelLayout SubpixelLayout; 990 991 /** 992 * Determines a surface edge or corner. 993 */ 994 public enum GdkSurfaceEdge 995 { 996 /** 997 * the top left corner. 998 */ 999 NORTH_WEST = 0, 1000 /** 1001 * the top edge. 1002 */ 1003 NORTH = 1, 1004 /** 1005 * the top right corner. 1006 */ 1007 NORTH_EAST = 2, 1008 /** 1009 * the left edge. 1010 */ 1011 WEST = 3, 1012 /** 1013 * the right edge. 1014 */ 1015 EAST = 4, 1016 /** 1017 * the lower left corner. 1018 */ 1019 SOUTH_WEST = 5, 1020 /** 1021 * the lower edge. 1022 */ 1023 SOUTH = 6, 1024 /** 1025 * the lower right corner. 1026 */ 1027 SOUTH_EAST = 7, 1028 } 1029 alias GdkSurfaceEdge SurfaceEdge; 1030 1031 /** 1032 * Specifies the state of a toplevel surface. 1033 * 1034 * On platforms that support information about individual edges, the 1035 * %GDK_TOPLEVEL_STATE_TILED state will be set whenever any of the individual 1036 * tiled states is set. On platforms that lack that support, the tiled state 1037 * will give an indication of tiledness without any of the per-edge states 1038 * being set. 1039 */ 1040 public enum GdkToplevelState 1041 { 1042 /** 1043 * the surface is minimized 1044 */ 1045 MINIMIZED = 1, 1046 /** 1047 * the surface is maximized 1048 */ 1049 MAXIMIZED = 2, 1050 /** 1051 * the surface is sticky 1052 */ 1053 STICKY = 4, 1054 /** 1055 * the surface is maximized without decorations 1056 */ 1057 FULLSCREEN = 8, 1058 /** 1059 * the surface is kept above other surfaces 1060 */ 1061 ABOVE = 16, 1062 /** 1063 * the surface is kept below other surfaces 1064 */ 1065 BELOW = 32, 1066 /** 1067 * the surface is presented as focused (with active decorations) 1068 */ 1069 FOCUSED = 64, 1070 /** 1071 * the surface is in a tiled state 1072 */ 1073 TILED = 128, 1074 /** 1075 * whether the top edge is tiled 1076 */ 1077 TOP_TILED = 256, 1078 /** 1079 * whether the top edge is resizable 1080 */ 1081 TOP_RESIZABLE = 512, 1082 /** 1083 * whether the right edge is tiled 1084 */ 1085 RIGHT_TILED = 1024, 1086 /** 1087 * whether the right edge is resizable 1088 */ 1089 RIGHT_RESIZABLE = 2048, 1090 /** 1091 * whether the bottom edge is tiled 1092 */ 1093 BOTTOM_TILED = 4096, 1094 /** 1095 * whether the bottom edge is resizable 1096 */ 1097 BOTTOM_RESIZABLE = 8192, 1098 /** 1099 * whether the left edge is tiled 1100 */ 1101 LEFT_TILED = 16384, 1102 /** 1103 * whether the left edge is resizable 1104 */ 1105 LEFT_RESIZABLE = 32768, 1106 } 1107 alias GdkToplevelState ToplevelState; 1108 1109 /** 1110 * Specifies the current state of a touchpad gesture. 1111 * 1112 * All gestures are guaranteed to begin with an event with phase 1113 * %GDK_TOUCHPAD_GESTURE_PHASE_BEGIN, followed by 0 or several events 1114 * with phase %GDK_TOUCHPAD_GESTURE_PHASE_UPDATE. 1115 * 1116 * A finished gesture may have 2 possible outcomes, an event with phase 1117 * %GDK_TOUCHPAD_GESTURE_PHASE_END will be emitted when the gesture is 1118 * considered successful, this should be used as the hint to perform any 1119 * permanent changes. 1120 * 1121 * Cancelled gestures may be so for a variety of reasons, due to hardware 1122 * or the compositor, or due to the gesture recognition layers hinting the 1123 * gesture did not finish resolutely (eg. a 3rd finger being added during 1124 * a pinch gesture). In these cases, the last event will report the phase 1125 * %GDK_TOUCHPAD_GESTURE_PHASE_CANCEL, this should be used as a hint 1126 * to undo any visible/permanent changes that were done throughout the 1127 * progress of the gesture. 1128 */ 1129 public enum GdkTouchpadGesturePhase 1130 { 1131 /** 1132 * The gesture has begun. 1133 */ 1134 BEGIN = 0, 1135 /** 1136 * The gesture has been updated. 1137 */ 1138 UPDATE = 1, 1139 /** 1140 * The gesture was finished, changes 1141 * should be permanently applied. 1142 */ 1143 END = 2, 1144 /** 1145 * The gesture was cancelled, all 1146 * changes should be undone. 1147 */ 1148 CANCEL = 3, 1149 } 1150 alias GdkTouchpadGesturePhase TouchpadGesturePhase; 1151 1152 /** 1153 * Error enumeration for #GdkVulkanContext. 1154 */ 1155 public enum GdkVulkanError 1156 { 1157 /** 1158 * Vulkan is not supported on this backend or has not been 1159 * compiled in. 1160 */ 1161 UNSUPPORTED = 0, 1162 /** 1163 * Vulkan support is not available on this Surface 1164 */ 1165 NOT_AVAILABLE = 1, 1166 } 1167 alias GdkVulkanError VulkanError; 1168 1169 struct GdkAppLaunchContext; 1170 1171 struct GdkButtonEvent; 1172 1173 struct GdkCairoContext; 1174 1175 struct GdkClipboard; 1176 1177 struct GdkContentDeserializer; 1178 1179 struct GdkContentFormats; 1180 1181 struct GdkContentFormatsBuilder; 1182 1183 struct GdkContentProvider 1184 { 1185 GObject parent; 1186 } 1187 1188 /** 1189 * Class structure for #GdkContentProvider. 1190 */ 1191 struct GdkContentProviderClass 1192 { 1193 GObjectClass parentClass; 1194 /** */ 1195 extern(C) void function(GdkContentProvider* provider) contentChanged; 1196 /** */ 1197 extern(C) void function(GdkContentProvider* provider, GdkClipboard* clipboard) attachClipboard; 1198 /** */ 1199 extern(C) void function(GdkContentProvider* provider, GdkClipboard* clipboard) detachClipboard; 1200 /** 1201 * 1202 * Params: 1203 * provider = a #GdkContentProvider 1204 * Returns: The formats of the provider 1205 */ 1206 extern(C) GdkContentFormats* function(GdkContentProvider* provider) refFormats; 1207 /** 1208 * 1209 * Params: 1210 * provider = a #GdkContentProvider 1211 * Returns: The storable formats of the provider 1212 */ 1213 extern(C) GdkContentFormats* function(GdkContentProvider* provider) refStorableFormats; 1214 /** */ 1215 extern(C) void function(GdkContentProvider* provider, const(char)* mimeType, GOutputStream* stream, int ioPriority, GCancellable* cancellable, GAsyncReadyCallback callback, void* userData) writeMimeTypeAsync; 1216 /** 1217 * 1218 * Params: 1219 * provider = a `GdkContentProvider` 1220 * result = a `GAsyncResult` 1221 * Returns: %TRUE if the operation was completed successfully. Otherwise 1222 * @error will be set to describe the failure. 1223 * 1224 * Throws: GException on failure. 1225 */ 1226 extern(C) int function(GdkContentProvider* provider, GAsyncResult* result, GError** err) writeMimeTypeFinish; 1227 /** 1228 * 1229 * Params: 1230 * provider = a `GdkContentProvider` 1231 * value = the `GValue` to fill 1232 * Returns: %TRUE if the value was set successfully. Otherwise 1233 * @error will be set to describe the failure. 1234 * 1235 * Throws: GException on failure. 1236 */ 1237 extern(C) int function(GdkContentProvider* provider, GValue* value, GError** err) getValue; 1238 void*[8] padding; 1239 } 1240 1241 struct GdkContentSerializer; 1242 1243 struct GdkCrossingEvent; 1244 1245 struct GdkCursor; 1246 1247 struct GdkDNDEvent; 1248 1249 struct GdkDeleteEvent; 1250 1251 struct GdkDevice; 1252 1253 struct GdkDevicePad; 1254 1255 struct GdkDevicePadInterface; 1256 1257 struct GdkDeviceTool; 1258 1259 struct GdkDisplay; 1260 1261 struct GdkDisplayManager; 1262 1263 struct GdkDrag; 1264 1265 struct GdkDragSurface; 1266 1267 /** 1268 * The `GdkDragSurfaceInterface` implementation is private to GDK. 1269 */ 1270 struct GdkDragSurfaceInterface; 1271 1272 struct GdkDrawContext; 1273 1274 struct GdkDrop; 1275 1276 struct GdkEvent; 1277 1278 /** 1279 * `GdkEventSequence` is an opaque type representing a sequence 1280 * of related touch events. 1281 */ 1282 struct GdkEventSequence; 1283 1284 struct GdkFocusEvent; 1285 1286 struct GdkFrameClock; 1287 1288 struct GdkFrameClockClass; 1289 1290 struct GdkFrameClockPrivate; 1291 1292 struct GdkFrameTimings; 1293 1294 struct GdkGLContext; 1295 1296 struct GdkGLTexture; 1297 1298 struct GdkGLTextureClass; 1299 1300 struct GdkGrabBrokenEvent; 1301 1302 struct GdkKeyEvent; 1303 1304 /** 1305 * A `GdkKeymapKey` is a hardware key that can be mapped to a keyval. 1306 */ 1307 struct GdkKeymapKey 1308 { 1309 /** 1310 * the hardware keycode. This is an identifying number for a 1311 * physical key. 1312 */ 1313 uint keycode; 1314 /** 1315 * indicates movement in a horizontal direction. Usually groups are used 1316 * for two different languages. In group 0, a key might have two English 1317 * characters, and in group 1 it might have two Hebrew characters. The Hebrew 1318 * characters will be printed on the key next to the English characters. 1319 */ 1320 int group; 1321 /** 1322 * indicates which symbol on the key will be used, in a vertical direction. 1323 * So on a standard US keyboard, the key with the number “1” on it also has the 1324 * exclamation point ("!") character on it. The level indicates whether to use 1325 * the “1” or the “!” symbol. The letter keys are considered to have a lowercase 1326 * letter at level 0, and an uppercase letter at level 1, though only the 1327 * uppercase letter is printed. 1328 */ 1329 int level; 1330 } 1331 1332 struct GdkMemoryTexture; 1333 1334 struct GdkMemoryTextureClass; 1335 1336 struct GdkMonitor; 1337 1338 struct GdkMonitorClass; 1339 1340 struct GdkMotionEvent; 1341 1342 struct GdkPadEvent; 1343 1344 struct GdkPaintable; 1345 1346 /** 1347 * The list of functions that can be implemented for the `GdkPaintable` 1348 * interface. 1349 * 1350 * Note that apart from the #GdkPaintableInterface.snapshot() function, no 1351 * virtual function of this interface is mandatory to implement, though it 1352 * is a good idea to implement #GdkPaintableInterface.get_current_image() 1353 * for non-static paintables and #GdkPaintableInterface.get_flags() if the 1354 * image is not dynamic as the default implementation returns no flags and 1355 * that will make the implementation likely quite slow. 1356 */ 1357 struct GdkPaintableInterface 1358 { 1359 GTypeInterface gIface; 1360 /** */ 1361 extern(C) void function(GdkPaintable* paintable, GdkSnapshot* snapshot, double width, double height) snapshot; 1362 /** 1363 * 1364 * Params: 1365 * paintable = a `GdkPaintable` 1366 * Returns: An immutable paintable for the current 1367 * contents of @paintable. 1368 */ 1369 extern(C) GdkPaintable* function(GdkPaintable* paintable) getCurrentImage; 1370 /** 1371 * 1372 * Params: 1373 * paintable = a `GdkPaintable` 1374 * Returns: The `GdkPaintableFlags` for this paintable 1375 */ 1376 extern(C) GdkPaintableFlags function(GdkPaintable* paintable) getFlags; 1377 /** 1378 * 1379 * Params: 1380 * paintable = a `GdkPaintable` 1381 * Returns: the intrinsic width of @paintable or 0 if none. 1382 */ 1383 extern(C) int function(GdkPaintable* paintable) getIntrinsicWidth; 1384 /** 1385 * 1386 * Params: 1387 * paintable = a `GdkPaintable` 1388 * Returns: the intrinsic height of @paintable or 0 if none. 1389 */ 1390 extern(C) int function(GdkPaintable* paintable) getIntrinsicHeight; 1391 /** 1392 * 1393 * Params: 1394 * paintable = a `GdkPaintable` 1395 * Returns: the intrinsic aspect ratio of @paintable or 0 if none. 1396 */ 1397 extern(C) double function(GdkPaintable* paintable) getIntrinsicAspectRatio; 1398 } 1399 1400 struct GdkPopup; 1401 1402 struct GdkPopupInterface; 1403 1404 struct GdkPopupLayout; 1405 1406 struct GdkProximityEvent; 1407 1408 struct GdkRGBA 1409 { 1410 /** 1411 * The intensity of the red channel from 0.0 to 1.0 inclusive 1412 */ 1413 float red; 1414 /** 1415 * The intensity of the green channel from 0.0 to 1.0 inclusive 1416 */ 1417 float green; 1418 /** 1419 * The intensity of the blue channel from 0.0 to 1.0 inclusive 1420 */ 1421 float blue; 1422 /** 1423 * The opacity of the color from 0.0 for completely translucent to 1424 * 1.0 for opaque 1425 */ 1426 float alpha; 1427 } 1428 1429 /** 1430 * A `GdkRectangle` data type for representing rectangles. 1431 * 1432 * `GdkRectangle` is identical to `cairo_rectangle_t`. Together with Cairo’s 1433 * `cairo_region_t` data type, these are the central types for representing 1434 * sets of pixels. 1435 * 1436 * The intersection of two rectangles can be computed with 1437 * [method@Gdk.Rectangle.intersect]; to find the union of two rectangles use 1438 * [method@Gdk.Rectangle.union]. 1439 * 1440 * The `cairo_region_t` type provided by Cairo is usually used for managing 1441 * non-rectangular clipping of graphical operations. 1442 * 1443 * The Graphene library has a number of other data types for regions and 1444 * volumes in 2D and 3D. 1445 */ 1446 struct GdkRectangle 1447 { 1448 /** 1449 * the x coordinate of the top left corner 1450 */ 1451 int x; 1452 /** 1453 * the y coordinate of the top left corner 1454 */ 1455 int y; 1456 /** 1457 * the width of the rectangle 1458 */ 1459 int width; 1460 /** 1461 * the height of the rectangle 1462 */ 1463 int height; 1464 } 1465 1466 struct GdkScrollEvent; 1467 1468 struct GdkSeat 1469 { 1470 GObject parentInstance; 1471 } 1472 1473 struct GdkSnapshot; 1474 1475 struct GdkSnapshotClass; 1476 1477 struct GdkSurface; 1478 1479 struct GdkSurfaceClass; 1480 1481 struct GdkTexture; 1482 1483 struct GdkTextureClass; 1484 1485 /** 1486 * A #GdkTimeCoord stores a single event in a motion history. 1487 */ 1488 struct GdkTimeCoord 1489 { 1490 /** 1491 * The timestamp for this event. 1492 */ 1493 uint time; 1494 /** 1495 * Flags indicating what axes are present 1496 */ 1497 GdkAxisFlags flags; 1498 /** 1499 * axis values 1500 */ 1501 double[12] axes; 1502 } 1503 1504 struct GdkToplevel; 1505 1506 struct GdkToplevelInterface; 1507 1508 struct GdkToplevelLayout; 1509 1510 struct GdkToplevelSize; 1511 1512 struct GdkTouchEvent; 1513 1514 struct GdkTouchpadEvent; 1515 1516 struct GdkVulkanContext; 1517 1518 /** 1519 * The type of a function that can be registered with gdk_content_register_deserializer(). 1520 * 1521 * When the function gets called to operate on content, it can call functions on the 1522 * @deserializer object to obtain the mime type, input stream, user data, etc. for its 1523 * operation. 1524 * 1525 * Params: 1526 * deserializer = a #GdkContentDeserializer 1527 */ 1528 public alias extern(C) void function(GdkContentDeserializer* deserializer) GdkContentDeserializeFunc; 1529 1530 /** 1531 * The type of a function that can be registered with gdk_content_register_serializer(). 1532 * 1533 * When the function gets called to operate on content, it can call functions on the 1534 * @serializer object to obtain the mime type, output stream, user data, etc. for its 1535 * operation. 1536 * 1537 * Params: 1538 * serializer = a #GdkContentSerializer 1539 */ 1540 public alias extern(C) void function(GdkContentSerializer* serializer) GdkContentSerializeFunc; 1541 1542 /** 1543 * Defines all possible DND actions. 1544 * 1545 * This can be used in [method@Gdk.Drop.status] messages when any drop 1546 * can be accepted or a more specific drop method is not yet known. 1547 */ 1548 enum ACTION_ALL = 7; 1549 alias GDK_ACTION_ALL = ACTION_ALL; 1550 1551 /** 1552 * The middle button. 1553 */ 1554 enum BUTTON_MIDDLE = 2; 1555 alias GDK_BUTTON_MIDDLE = BUTTON_MIDDLE; 1556 1557 /** 1558 * The primary button. This is typically the left mouse button, or the 1559 * right button in a left-handed setup. 1560 */ 1561 enum BUTTON_PRIMARY = 1; 1562 alias GDK_BUTTON_PRIMARY = BUTTON_PRIMARY; 1563 1564 /** 1565 * The secondary button. This is typically the right mouse button, or the 1566 * left button in a left-handed setup. 1567 */ 1568 enum BUTTON_SECONDARY = 3; 1569 alias GDK_BUTTON_SECONDARY = BUTTON_SECONDARY; 1570 1571 /** 1572 * Represents the current time, and can be used anywhere a time is expected. 1573 */ 1574 enum CURRENT_TIME = 0; 1575 alias GDK_CURRENT_TIME = CURRENT_TIME; 1576 1577 /** 1578 * Use this macro as the return value for continuing the propagation of 1579 * an event handler. 1580 */ 1581 enum EVENT_PROPAGATE = false; 1582 alias GDK_EVENT_PROPAGATE = EVENT_PROPAGATE; 1583 1584 /** 1585 * Use this macro as the return value for stopping the propagation of 1586 * an event handler. 1587 */ 1588 enum EVENT_STOP = true; 1589 alias GDK_EVENT_STOP = EVENT_STOP; 1590 1591 /** 1592 * A mask covering all entries in `GdkModifierType`. 1593 */ 1594 enum MODIFIER_MASK = 469769999; 1595 alias GDK_MODIFIER_MASK = MODIFIER_MASK; 1596 1597 /** 1598 * This is the priority that the idle handler processing surface updates 1599 * is given in the main loop. 1600 */ 1601 enum PRIORITY_REDRAW = 120; 1602 alias GDK_PRIORITY_REDRAW = PRIORITY_REDRAW;