`sig
type button_t =
LEFT_BUTTON
| MIDDLE_BUTTON
| RIGHT_BUTTON
| OTHER_BUTTON of int
type mouse_button_state_t = DOWN | UP
type special_key_t =
KEY_F1
| KEY_F2
| KEY_F3
| KEY_F4
| KEY_F5
| KEY_F6
| KEY_F7
| KEY_F8
| KEY_F9
| KEY_F10
| KEY_F11
| KEY_F12
| KEY_LEFT
| KEY_UP
| KEY_RIGHT
| KEY_DOWN
| KEY_PAGE_UP
| KEY_PAGE_DOWN
| KEY_HOME
| KEY_END
| KEY_INSERT
| KEY_OTHER of int
type entry_exit_state_t = LEFT | ENTERED
type menu_state_t = MENU_NOT_IN_USE | MENU_IN_USE
type visibility_state_t = NOT_VISIBLE | VISIBLE
type window_status_t =
HIDDEN
| FULLY_RETAINED
| PARTIALLY_RETAINED
| FULLY_COVERED
type color_index_component_t = RED | GREEN | BLUE
type layer_t = NORMAL | OVERLAY
type font_t =
STROKE_ROMAN
| STROKE_MONO_ROMAN
| BITMAP_9_BY_15
| BITMAP_8_BY_13
| BITMAP_TIMES_ROMAN_10
| BITMAP_TIMES_ROMAN_24
| BITMAP_HELVETICA_10
| BITMAP_HELVETICA_12
| BITMAP_HELVETICA_18
type glut_get_t =
WINDOW_X
| WINDOW_Y
| WINDOW_WIDTH
| WINDOW_HEIGHT
| WINDOW_BUFFER_SIZE
| WINDOW_STENCIL_SIZE
| WINDOW_DEPTH_SIZE
| WINDOW_RED_SIZE
| WINDOW_GREEN_SIZE
| WINDOW_BLUE_SIZE
| WINDOW_ALPHA_SIZE
| WINDOW_ACCUM_RED_SIZE
| WINDOW_ACCUM_GREEN_SIZE
| WINDOW_ACCUM_BLUE_SIZE
| WINDOW_ACCUM_ALPHA_SIZE
| WINDOW_DOUBLEBUFFER
| WINDOW_RGBA
| WINDOW_PARENT
| WINDOW_NUM_CHILDREN
| WINDOW_COLORMAP_SIZE
| WINDOW_NUM_SAMPLES
| WINDOW_STEREO
| WINDOW_CURSOR
| SCREEN_WIDTH
| SCREEN_HEIGHT
| SCREEN_WIDTH_MM
| SCREEN_HEIGHT_MM
| MENU_NUM_ITEMS
| INIT_WINDOW_X
| INIT_WINDOW_Y
| INIT_WINDOW_WIDTH
| INIT_WINDOW_HEIGHT
| INIT_DISPLAY_MODE
| ELAPSED_TIME
| WINDOW_FORMAT_ID
type glut_get_bool_t = DISPLAY_MODE_POSSIBLE
val rgb : int
val rgba : int
val index : int
val single : int
val double : int
val accum : int
val alpha : int
val depth : int
val stencil : int
val multisample : int
val stereo : int
val luminance : int
type device_get_t =
HAS_KEYBOARD
| HAS_MOUSE
| HAS_SPACEBALL
| HAS_DIAL_AND_BUTTON_BOX
| HAS_TABLET
| NUM_MOUSE_BUTTONS
| NUM_SPACEBALL_BUTTONS
| NUM_BUTTON_BOX_BUTTONS
| NUM_DIALS
| NUM_TABLET_BUTTONS
| DEVICE_IGNORE_KEY_REPEAT
| DEVICE_KEY_REPEAT
| HAS_JOYSTICK
| OWNS_JOYSTICK
| JOYSTICK_BUTTONS
| JOYSTICK_AXES
| JOYSTICK_POLL_RATE
type layerget_t =
OVERLAY_POSSIBLE
| HAS_OVERLAY
| NORMAL_DAMAGED
| OVERLAY_DAMAGED
type video_resize_t =
VIDEO_RESIZE_POSSIBLE
| VIDEO_RESIZE_IN_USE
| VIDEO_RESIZE_X_DELTA
| VIDEO_RESIZE_Y_DELTA
| VIDEO_RESIZE_WIDTH_DELTA
| VIDEO_RESIZE_HEIGHT_DELTA
| VIDEO_RESIZE_X
| VIDEO_RESIZE_Y
| VIDEO_RESIZE_WIDTH
| VIDEO_RESIZE_HEIGHT
val active_shift : int
val active_ctrl : int
val active_alt : int
type cursor_t =
CURSOR_RIGHT_ARROW
| CURSOR_LEFT_ARROW
| CURSOR_INFO
| CURSOR_DESTROY
| CURSOR_HELP
| CURSOR_CYCLE
| CURSOR_SPRAY
| CURSOR_WAIT
| CURSOR_TEXT
| CURSOR_CROSSHAIR
| CURSOR_UP_DOWN
| CURSOR_LEFT_RIGHT
| CURSOR_TOP_SIDE
| CURSOR_BOTTOM_SIDE
| CURSOR_LEFT_SIDE
| CURSOR_RIGHT_SIDE
| CURSOR_TOP_LEFT_CORNER
| CURSOR_TOP_RIGHT_CORNER
| CURSOR_BOTTOM_RIGHT_CORNER
| CURSOR_BOTTOM_LEFT_CORNER
| CURSOR_INHERIT
| CURSOR_NONE
| CURSOR_FULL_CROSSHAIR
type game_mode_t =
GAME_MODE_ACTIVE
| GAME_MODE_POSSIBLE
| GAME_MODE_WIDTH
| GAME_MODE_HEIGHT
| GAME_MODE_PIXEL_DEPTH
| GAME_MODE_REFRESH_RATE
| GAME_MODE_DISPLAY_CHANGED
type key_repeat_t = KEY_REPEAT_OFF | KEY_REPEAT_ON | KEY_REPEAT_DEFAULT
exception BadEnum of string
exception InvalidState of string
val init : argv:string array -> string array
val initDisplayMode :
?double_buffer:bool ->
?index:bool ->
?accum:bool ->
?alpha:bool ->
?depth:bool ->
?stencil:bool ->
?multisample:bool -> ?stereo:bool -> ?luminance:bool -> unit -> unit
val initWindowPosition : x:int -> y:int -> unit
val initWindowSize : w:int -> h:int -> unit
val mainLoop : unit -> unit
val createWindow : title:string -> int
val postRedisplay : unit -> unit
val swapBuffers : unit -> unit
val createSubWindow : win:int -> x:int -> y:int -> w:int -> h:int -> int
val destroyWindow : win:int -> unit
val getWindow : unit -> int
val setWindow : win:int -> unit
val setWindowTitle : title:string -> unit
val setIconTitle : title:string -> unit
val positionWindow : x:int -> y:int -> unit
val reshapeWindow : w:int -> h:int -> unit
val popWindow : unit -> unit
val pushWindow : unit -> unit
val iconifyWindow : unit -> unit
val showWindow : unit -> unit
val hideWindow : unit -> unit
val fullScreen : unit -> unit
val setCursor : Glut.cursor_t -> unit
val establishOverlay : unit -> unit
val removeOverlay : unit -> unit
val useLayer : Glut.layer_t -> unit
val postOverlayRedisplay : unit -> unit
val showOverlay : unit -> unit
val hideOverlay : unit -> unit
val createMenu : cb:(value:int -> unit) -> int
val destroyMenu : menu:int -> unit
val getMenu : unit -> int
val setMenu : menu:int -> unit
val addMenuEntry : label:string -> value:int -> unit
val addSubMenu : label:string -> submenu:int -> unit
val changeToMenuEntry : item:int -> label:string -> value:int -> unit
val changeToSubMenu : item:int -> label:string -> submenu:int -> unit
val removeMenuItem : item:int -> unit
val attachMenu : button:Glut.button_t -> unit
val detachMenu : button:Glut.button_t -> unit
val displayFunc : cb:(unit -> unit) -> unit
val reshapeFunc : cb:(w:int -> h:int -> unit) -> unit
val keyboardFunc : cb:(key:int -> x:int -> y:int -> unit) -> unit
val mouseFunc :
cb:(button:Glut.button_t ->
state:Glut.mouse_button_state_t -> x:int -> y:int -> unit) ->
unit
val motionFunc : cb:(x:int -> y:int -> unit) -> unit
val passiveMotionFunc : cb:(x:int -> y:int -> unit) -> unit
val entryFunc : cb:(state:Glut.entry_exit_state_t -> unit) -> unit
val visibilityFunc : cb:(state:Glut.visibility_state_t -> unit) -> unit
val idleFunc : cb:(unit -> unit) option -> unit
val timerFunc : ms:int -> cb:(value:'a -> unit) -> value:'a -> unit
val specialFunc :
cb:(key:Glut.special_key_t -> x:int -> y:int -> unit) -> unit
val spaceballMotionFunc : cb:(x:int -> y:int -> z:int -> unit) -> unit
val spaceballRotateFunc : cb:(x:int -> y:int -> z:int -> unit) -> unit
val spaceballButtonFunc : cb:(button:int -> state:int -> unit) -> unit
val buttonBoxFunc : cb:(button:int -> state:int -> unit) -> unit
val dialsFunc : cb:(dial:int -> value:int -> unit) -> unit
val tabletMotionFunc : cb:(x:int -> y:int -> unit) -> unit
val tabletButtonFunc :
cb:(button:int -> state:int -> x:int -> y:int -> unit) -> unit
val menuStatusFunc :
cb:(status:Glut.menu_state_t -> x:int -> y:int -> unit) -> unit
val overlayDisplayFunc : cb:(unit -> unit) -> unit
val setColor : cell:int -> red:float -> green:float -> blue:float -> unit
val getColor : index:int -> component:int -> float
val copyColormap : win:int -> unit
val get : gtype:Glut.glut_get_t -> int
val getBool : gtype:Glut.glut_get_bool_t -> bool
val deviceGet : dgtype:Glut.device_get_t -> int
val extensionSupported : name:string -> bool
val getModifiers : unit -> int
val layerGetTransparentIndex : unit -> int
val layerGetInUse : unit -> Glut.layer_t
val layerGet : lgtype:Glut.layerget_t -> bool
val bitmapCharacter : font:Glut.font_t -> c:int -> unit
val bitmapWidth : font:Glut.font_t -> c:int -> int
val strokeCharacter : font:Glut.font_t -> c:int -> unit
val strokeWidth : font:Glut.font_t -> c:int -> int
val wireSphere : radius:float -> slices:int -> stacks:int -> unit
val solidSphere : radius:float -> slices:int -> stacks:int -> unit
val wireCone :
base:float -> height:float -> slices:int -> stacks:int -> unit
val solidCone :
base:float -> height:float -> slices:int -> stacks:int -> unit
val wireCube : size:float -> unit
val solidCube : size:float -> unit
val wireTorus :
innerRadius:float -> outerRadius:float -> sides:int -> rings:int -> unit
val solidTorus :
innerRadius:float -> outerRadius:float -> sides:int -> rings:int -> unit
val wireDodecahedron : unit -> unit
val solidDodecahedron : unit -> unit
val wireTeapot : size:float -> unit
val solidTeapot : size:float -> unit
val wireOctahedron : unit -> unit
val solidOctahedron : unit -> unit
val wireTetrahedron : unit -> unit
val solidTetrahedron : unit -> unit
val wireIcosahedron : unit -> unit
val solidIcosahedron : unit -> unit
val gameModeString : str:string -> unit
val enterGameMode : unit -> unit
val leaveGameMode : unit -> unit
val gameModeGet : mode:Glut.game_mode_t -> int
val initDisplayString : str:string -> unit
val warpPointer : x:int -> y:int -> unit
val bitmapLength : font:Glut.font_t -> str:string -> int
val strokeLength : font:Glut.font_t -> str:string -> int
val windowStatusFunc : cb:(state:Glut.window_status_t -> unit) -> unit
val postWindowRedisplay : win:int -> unit
val postWindowOverlayRedisplay : win:int -> unit
val keyboardUpFunc : cb:(key:int -> x:int -> y:int -> unit) -> unit
val specialUpFunc :
cb:(key:Glut.special_key_t -> x:int -> y:int -> unit) -> unit
val ignoreKeyRepeat : ignore:bool -> unit
val setKeyRepeat : mode:Glut.key_repeat_t -> unit
val joystickFunc :
cb:(buttonMask:int -> x:int -> y:int -> z:int -> unit) ->
pollInterval:int -> unit
val forceJoystickFunc : unit -> unit
val videoResizeGet : Glut.video_resize_t -> int
val setupVideoResizing : unit -> unit
val stopVideoResizing : unit -> unit
val videoResize : x:int -> y:int -> width:int -> height:int -> unit
val videoPan : x:int -> y:int -> width:int -> height:int -> unit
val reportErrors : unit -> unit
val string_of_button : Glut.button_t -> string
val string_of_button_state : Glut.mouse_button_state_t -> string
val string_of_special : Glut.special_key_t -> string
val string_of_window_status : Glut.window_status_t -> string
val string_of_vis_state : Glut.visibility_state_t -> string
val string_of_cursor : Glut.cursor_t -> string
val int_of_cursor : Glut.cursor_t -> int
end`