#lang racket/base

(provide (except-out (all-defined-out) <<))

(define GTK_WINDOW_TOPLEVEL 0)
(define GTK_WINDOW_POPUP 1)

(define << arithmetic-shift)

(define GDK_EXPOSURE_MASK (1 . << . 1))
(define GDK_POINTER_MOTION_MASK (1 . << . 2))
(define GDK_POINTER_MOTION_HINT_MASK (1 . << . 3))
(define GDK_BUTTON_MOTION_MASK (1 . << . 4))
(define GDK_BUTTON1_MOTION_MASK (1 . << . 5))
(define GDK_BUTTON2_MOTION_MASK (1 . << . 6))
(define GDK_BUTTON3_MOTION_MASK (1 . << . 7))
(define GDK_BUTTON_PRESS_MASK (1 . << . 8))
(define GDK_BUTTON_RELEASE_MASK (1 . << . 9))
(define GDK_KEY_PRESS_MASK (1 . << . 10))
(define GDK_KEY_RELEASE_MASK (1 . << . 11))
(define GDK_ENTER_NOTIFY_MASK (1 . << . 12))
(define GDK_LEAVE_NOTIFY_MASK (1 . << . 13))
(define GDK_FOCUS_CHANGE_MASK (1 . << . 14))
(define GDK_STRUCTURE_MASK (1 . << . 15))
(define GDK_PROPERTY_CHANGE_MASK (1 . << . 16))
(define GDK_VISIBILITY_NOTIFY_MASK (1 . << . 17))
(define GDK_PROXIMITY_IN_MASK (1 . << . 18))
(define GDK_PROXIMITY_OUT_MASK (1 . << . 19))
(define GDK_SUBSTRUCTURE_MASK (1 . << . 20))
(define GDK_SCROLL_MASK (1 . << . 21))
(define GDK_SMOOTH_SCROLL_MASK (1 . << . 23)) ; added in v3.4
;; (define GDK_ALL_EVENTS_MASK #x3FFFFE) - as of 2.0, but #x3FFFFFE as of 3.22

(define GTK_TOPLEVEL (1 . << . 4))
(define GTK_NO_WINDOW (1 . << . 5))
(define GTK_REALIZED (1 . << . 6))
(define GTK_MAPPED   (1 . << . 7))
(define GTK_VISIBLE  (1 . << . 8))
(define GTK_SENSITIVE (1 . << . 9))
(define GTK_PARENT_SENSITIVE (1 . << . 10))
(define GTK_CAN_FOCUS (1 . << . 11))
(define GTK_HAS_FOCUS (1 . << . 12))
(define GTK_CAN_DEFAULT (1 . << . 13))
(define GTK_HAS_DEFAULT (1 . << . 14))
(define GTK_HAS_GRAB (1 . << . 15))
(define GTK_RC_STYLE (1 . << . 16))
(define GTK_COMPOSITE_CHILD (1 . << . 17))
(define GTK_NO_REPARENT (1 . << . 18))
(define GTK_APP_PAINTABLE (1 . << . 19))
(define GTK_RECEIVES_DEFAULT (1 . << . 20))
(define GTK_DOUBLE_BUFFERED (1 . << . 21))
(define GTK_NO_SHOW_ALL (1 . << . 22))

(define GDK_SHIFT_MASK (1 . << . 0))
(define GDK_LOCK_MASK (1 . << . 1))
(define GDK_CONTROL_MASK (1 . << . 2))
(define GDK_MOD1_MASK (1 . << . 3))
(define GDK_MOD2_MASK (1 . << . 4))
(define GDK_MOD3_MASK (1 . << . 5))
(define GDK_MOD4_MASK (1 . << . 6))
(define GDK_MOD5_MASK (1 . << . 7))
(define GDK_BUTTON1_MASK (1 . << . 8))
(define GDK_BUTTON2_MASK (1 . << . 9))
(define GDK_BUTTON3_MASK (1 . << . 10))
(define GDK_BUTTON4_MASK (1 . << . 11))
(define GDK_BUTTON5_MASK (1 . << . 12))
(define GDK_SUPER_MASK (1 . << . 26))
(define GDK_HYPER_MASK (1 . << . 27))
(define GDK_META_MASK (1 . << . 28))
(define GDK_RELEASE_MASK (1 . << . 30))

(define GDK_NOTHING -1)
(define GDK_DELETE 0)
(define GDK_DESTROY 1)
(define GDK_EXPOSE 2)
(define GDK_MOTION_NOTIFY 3)
(define GDK_BUTTON_PRESS 4)
(define GDK_2BUTTON_PRESS 5)
(define GDK_3BUTTON_PRESS 6)
(define GDK_BUTTON_RELEASE 7)
(define GDK_KEY_PRESS 8)
(define GDK_KEY_RELEASE 9)
(define GDK_ENTER_NOTIFY 10)
(define GDK_LEAVE_NOTIFY 11)
(define GDK_FOCUS_CHANGE 12)
(define GDK_CONFIGURE 13)
(define GDK_MAP 14)
(define GDK_UNMAP 15)
(define GDK_PROPERTY_NOTIFY 16)
(define GDK_SELECTION_CLEAR 17)
(define GDK_SELECTION_REQUEST 18)
(define GDK_SELECTION_NOTIFY 19)
(define GDK_PROXIMITY_IN 20)
(define GDK_PROXIMITY_OUT 21)
(define GDK_DRAG_ENTER 22)
(define GDK_DRAG_LEAVE 23)
(define GDK_DRAG_MOTION 24)
(define GDK_DRAG_STATUS 25)
(define GDK_DROP_START 26)
(define GDK_DROP_FINISHED 27)
(define GDK_CLIENT_EVENT 28)
(define GDK_VISIBILITY_NOTIFY 29)
(define GDK_NO_EXPOSE 30)
(define GDK_SCROLL 31)
(define GDK_WINDOW_STATE 32)
(define GDK_SETTING 33)
(define GDK_OWNER_CHANGE 34)
(define GDK_GRAB_BROKEN 35)
(define GDK_DAMAGE 36)

(define G_TYPE_STRING (16 . << . 2))

(define GTK_POLICY_ALWAYS 0)
(define GTK_POLICY_AUTOMATIC 1)
(define GTK_POLICY_NEVER 2)

(define GDK_WINDOW_STATE_WITHDRAWN  (1 . << . 0))
(define GDK_WINDOW_STATE_ICONIFIED  (1 . << . 1))
(define GDK_WINDOW_STATE_MAXIMIZED  (1 . << . 2))
(define GDK_WINDOW_STATE_STICKY     (1 . << . 3))
(define GDK_WINDOW_STATE_FULLSCREEN (1 . << . 4))
(define GDK_WINDOW_STATE_ABOVE      (1 . << . 5))
(define GDK_WINDOW_STATE_BELOW      (1 . << . 6))

(define GDK_HINT_POS (1 . << . 0))
(define GDK_HINT_MIN_SIZE (1 . << . 1))
(define GDK_HINT_MAX_SIZE (1 . << . 2))
(define GDK_HINT_BASE_SIZE (1 . << . 3))
(define GDK_HINT_ASPECT (1 . << . 4))
(define GDK_HINT_RESIZE_INC (1 . << . 5))
(define GDK_HINT_WIN_GRAVITY (1 . << . 6))
(define GDK_HINT_USER_POS (1 . << . 7))
(define GDK_HINT_USER_SIZE (1 . << . 8))

(define GDK_SCROLL_UP 0)
(define GDK_SCROLL_DOWN 1)
(define GDK_SCROLL_LEFT 2)
(define GDK_SCROLL_RIGHT 3)
(define GDK_SCROLL_SMOOTH 4)
