import opengl.platform.*;
// Auto-Generated by BindingsGenerator

alias GLUT_RGB = 0u;
alias GLUT_RGBA = GLUT_RGB;
alias GLUT_INDEX = 1u;
alias GLUT_SINGLE = 0u;
alias GLUT_DOUBLE = 2u;
alias GLUT_ACCUM = 4u;
alias GLUT_ALPHA = 8u;
alias GLUT_DEPTH = 16u;
alias GLUT_STENCIL = 32u;
alias GLUT_MULTISAMPLE = 128u;
alias GLUT_STEREO = 256u;
alias GLUT_LUMINANCE = 512u;
alias GLUT_NO_RECOVERY = 1024u;

/* Mouse buttons. */
alias GLUT_LEFT_BUTTON = 0;
alias GLUT_MIDDLE_BUTTON = 1;
alias GLUT_RIGHT_BUTTON = 2;

/* Mouse button  state. */
alias GLUT_DOWN = 0;
alias GLUT_UP = 1;

/* function keys */
alias GLUT_KEY_F1 = 1;
alias GLUT_KEY_F2 = 2;
alias GLUT_KEY_F3 = 3;
alias GLUT_KEY_F4 = 4;
alias GLUT_KEY_F5 = 5;
alias GLUT_KEY_F6 = 6;
alias GLUT_KEY_F7 = 7;
alias GLUT_KEY_F8 = 8;
alias GLUT_KEY_F9 = 9;
alias GLUT_KEY_F10 = 10;
alias GLUT_KEY_F11 = 11;
alias GLUT_KEY_F12 = 12;
/* directional keys */
alias GLUT_KEY_LEFT = 100;
alias GLUT_KEY_UP = 101;
alias GLUT_KEY_RIGHT = 102;
alias GLUT_KEY_DOWN = 103;
alias GLUT_KEY_PAGE_UP = 104;
alias GLUT_KEY_PAGE_DOWN = 105;
alias GLUT_KEY_HOME = 106;
alias GLUT_KEY_END = 107;
alias GLUT_KEY_INSERT = 108;

/* Entry/exit  state. */
alias GLUT_LEFT = 0;
alias GLUT_ENTERED = 1;

/* Menu usage  state. */
alias GLUT_MENU_NOT_IN_USE = 0;
alias GLUT_MENU_IN_USE = 1;

/* Visibility  state. */
alias GLUT_NOT_VISIBLE = 0;
alias GLUT_VISIBLE = 1;

/* Window status  state. */
alias GLUT_HIDDEN = 0;
alias GLUT_FULLY_RETAINED = 1;
alias GLUT_PARTIALLY_RETAINED = 2;
alias GLUT_FULLY_COVERED = 3;

/* Color index component selection values. */
alias GLUT_RED = 0;
alias GLUT_GREEN = 1;
alias GLUT_BLUE = 2;

/* Stroke font constants (use these in GLUT program). */
alias GLUT_STROKE_ROMAN = RawPointer(0);
alias GLUT_STROKE_MONO_ROMAN = RawPointer(1);


external glutStrokeRoman : RawPointer;

external glutStrokeMonoRoman : RawPointer;

external glutBitmap9By15 : RawPointer;

external glutBitmap8By13 : RawPointer;

external glutBitmapTimesRoman10 : RawPointer;

external glutBitmapTimesRoman24 : RawPointer;

external glutBitmapHelvetica10 : RawPointer;

external glutBitmapHelvetica12 : RawPointer;

external glutBitmapHelvetica18 : RawPointer;

/* Bitmap font constants (use these in GLUT program). */
alias GLUT_BITMAP_9_BY_15 = RawPointer(2);
alias GLUT_BITMAP_8_BY_13 = RawPointer(3);
alias GLUT_BITMAP_TIMES_ROMAN_10 = RawPointer(4);
alias GLUT_BITMAP_TIMES_ROMAN_24 = RawPointer(5);
alias GLUT_BITMAP_HELVETICA_10 = RawPointer(6);
alias GLUT_BITMAP_HELVETICA_12 = RawPointer(7);
alias GLUT_BITMAP_HELVETICA_18 = RawPointer(8);

alias GLUT_WINDOW_X = 100;
alias GLUT_WINDOW_Y = 101;
alias GLUT_WINDOW_WIDTH = 102;
alias GLUT_WINDOW_HEIGHT = 103;
alias GLUT_WINDOW_BUFFER_SIZE = 104;
alias GLUT_WINDOW_STENCIL_SIZE = 105;
alias GLUT_WINDOW_DEPTH_SIZE = 106;
alias GLUT_WINDOW_RED_SIZE = 107;
alias GLUT_WINDOW_GREEN_SIZE = 108;
alias GLUT_WINDOW_BLUE_SIZE = 109;
alias GLUT_WINDOW_ALPHA_SIZE = 110;
alias GLUT_WINDOW_ACCUM_RED_SIZE = 111;
alias GLUT_WINDOW_ACCUM_GREEN_SIZE = 112;
alias GLUT_WINDOW_ACCUM_BLUE_SIZE = 113;
alias GLUT_WINDOW_ACCUM_ALPHA_SIZE = 114;
alias GLUT_WINDOW_DOUBLEBUFFER = 115;
alias GLUT_WINDOW_RGBA = 116;
alias GLUT_WINDOW_PARENT = 117;
alias GLUT_WINDOW_NUM_CHILDREN = 118;
alias GLUT_WINDOW_COLORMAP_SIZE = 119;
alias GLUT_WINDOW_NUM_SAMPLES = 120;
alias GLUT_WINDOW_STEREO = 121;
alias GLUT_WINDOW_CURSOR = 122;
alias GLUT_SCREEN_WIDTH = 200;
alias GLUT_SCREEN_HEIGHT = 201;
alias GLUT_SCREEN_WIDTH_MM = 202;
alias GLUT_SCREEN_HEIGHT_MM = 203;
alias GLUT_MENU_NUM_ITEMS = 300;
alias GLUT_DISPLAY_MODE_POSSIBLE = 400;
alias GLUT_INIT_WINDOW_X = 500;
alias GLUT_INIT_WINDOW_Y = 501;
alias GLUT_INIT_WINDOW_WIDTH = 502;
alias GLUT_INIT_WINDOW_HEIGHT = 503;
alias GLUT_INIT_DISPLAY_MODE = 504;
alias GLUT_ELAPSED_TIME = 700;
alias GLUT_WINDOW_FORMAT_ID = 123;

/* glutDeviceGet parameters. */
alias GLUT_HAS_KEYBOARD = 600;
alias GLUT_HAS_MOUSE = 601;
alias GLUT_HAS_SPACEBALL = 602;
alias GLUT_HAS_DIAL_AND_BUTTON_BOX = 603;
alias GLUT_HAS_TABLET = 604;
alias GLUT_NUM_MOUSE_BUTTONS = 605;
alias GLUT_NUM_SPACEBALL_BUTTONS = 606;
alias GLUT_NUM_BUTTON_BOX_BUTTONS = 607;
alias GLUT_NUM_DIALS = 608;
alias GLUT_NUM_TABLET_BUTTONS = 609;
alias GLUT_DEVICE_IGNORE_KEY_REPEAT = 610;
alias GLUT_DEVICE_KEY_REPEAT = 611;
alias GLUT_HAS_JOYSTICK = 612;
alias GLUT_OWNS_JOYSTICK = 613;
alias GLUT_JOYSTICK_BUTTONS = 614;
alias GLUT_JOYSTICK_AXES = 615;
alias GLUT_JOYSTICK_POLL_RATE = 616;

/* glutLayerGet parameters. */
alias GLUT_OVERLAY_POSSIBLE = 800;
alias GLUT_LAYER_IN_USE = 801;
alias GLUT_HAS_OVERLAY = 802;
alias GLUT_TRANSPARENT_INDEX = 803;
alias GLUT_NORMAL_DAMAGED = 804;
alias GLUT_OVERLAY_DAMAGED = 805;

/* glutVideoResizeGet parameters. */
alias GLUT_VIDEO_RESIZE_POSSIBLE = 900;
alias GLUT_VIDEO_RESIZE_IN_USE = 901;
alias GLUT_VIDEO_RESIZE_X_DELTA = 902;
alias GLUT_VIDEO_RESIZE_Y_DELTA = 903;
alias GLUT_VIDEO_RESIZE_WIDTH_DELTA = 904;
alias GLUT_VIDEO_RESIZE_HEIGHT_DELTA = 905;
alias GLUT_VIDEO_RESIZE_X = 906;
alias GLUT_VIDEO_RESIZE_Y = 907;
alias GLUT_VIDEO_RESIZE_WIDTH = 908;
alias GLUT_VIDEO_RESIZE_HEIGHT = 909;

/* glutUseLayer parameters. */
alias GLUT_NORMAL = 0;
alias GLUT_OVERLAY = 1;

/* glutGetModifiers return mask. */
alias GLUT_ACTIVE_SHIFT = 1;
alias GLUT_ACTIVE_CTRL = 2;
alias GLUT_ACTIVE_ALT = 4;

/* glutSetCursor parameters. */
/* Basic arrows. */
alias GLUT_CURSOR_RIGHT_ARROW = 0;
alias GLUT_CURSOR_LEFT_ARROW = 1;
/* Symbolic cursor shapes. */
alias GLUT_CURSOR_INFO = 2;
alias GLUT_CURSOR_DESTROY = 3;
alias GLUT_CURSOR_HELP = 4;
alias GLUT_CURSOR_CYCLE = 5;
alias GLUT_CURSOR_SPRAY = 6;
alias GLUT_CURSOR_WAIT = 7;
alias GLUT_CURSOR_TEXT = 8;
alias GLUT_CURSOR_CROSSHAIR = 9;
/* Directional cursors. */
alias GLUT_CURSOR_UP_DOWN = 10;
alias GLUT_CURSOR_LEFT_RIGHT = 11;
/* Sizing cursors. */
alias GLUT_CURSOR_TOP_SIDE = 12;
alias GLUT_CURSOR_BOTTOM_SIDE = 13;
alias GLUT_CURSOR_LEFT_SIDE = 14;
alias GLUT_CURSOR_RIGHT_SIDE = 15;
alias GLUT_CURSOR_TOP_LEFT_CORNER = 16;
alias GLUT_CURSOR_TOP_RIGHT_CORNER = 17;
alias GLUT_CURSOR_BOTTOM_RIGHT_CORNER = 18;
alias GLUT_CURSOR_BOTTOM_LEFT_CORNER = 19;
/* Inherit from parent window. */
alias GLUT_CURSOR_INHERIT = 100;
/* Blank cursor. */
alias GLUT_CURSOR_NONE = 101;
/* Fullscreen crosshair (if available). */
alias GLUT_CURSOR_FULL_CROSSHAIR = 102;

alias GLUT_KEY_REPEAT_OFF = 0;
alias GLUT_KEY_REPEAT_ON = 1;
alias GLUT_KEY_REPEAT_DEFAULT = 2;

/* Joystick button masks. */
alias GLUT_JOYSTICK_BUTTON_A = 1;
alias GLUT_JOYSTICK_BUTTON_B = 2;
alias GLUT_JOYSTICK_BUTTON_C = 4;
alias GLUT_JOYSTICK_BUTTON_D = 8;

alias GLUT_GAME_MODE_ACTIVE = 0;
alias GLUT_GAME_MODE_POSSIBLE = 1;
alias GLUT_GAME_MODE_WIDTH = 2;
alias GLUT_GAME_MODE_HEIGHT = 3;
alias GLUT_GAME_MODE_PIXEL_DEPTH = 4;
alias GLUT_GAME_MODE_REFRESH_RATE = 5;
alias GLUT_GAME_MODE_DISPLAY_CHANGED = 6;

external (GLAPI) glutInit(
    argcp : Pointer[Int],
    argv : Pointer[Pointer[CChar]]);

external (GLAPI) glutInitDisplayMode(
    mode : UInt);

external (GLAPI) glutInitDisplayString(
    string : Pointer[CChar]);

external (GLAPI) glutInitWindowPosition(
    x : Int,
    y : Int);

external (GLAPI) glutInitWindowSize(
    width : Int,
    height : Int);

external (GLAPI) glutMainLoop();

external (GLAPI) glutCreateWindow(
    title : Pointer[CChar]) : Int;

external (GLAPI) glutCreateSubWindow(
    win : Int,
    x : Int,
    y : Int,
    width : Int,
    height : Int) : Int;

external (GLAPI) glutDestroyWindow(
    win : Int);

external (GLAPI) glutPostRedisplay();

external (GLAPI) glutPostWindowRedisplay(
    win : Int);

external (GLAPI) glutSwapBuffers();

external (GLAPI) glutGetWindow() : Int;

external (GLAPI) glutSetWindow(
    win : Int);

external (GLAPI) glutSetWindowTitle(
    title : Pointer[CChar]);

external (GLAPI) glutSetIconTitle(
    title : Pointer[CChar]);

external (GLAPI) glutPositionWindow(
    x : Int,
    y : Int);

external (GLAPI) glutReshapeWindow(
    width : Int,
    height : Int);

external (GLAPI) glutPopWindow();

external (GLAPI) glutPushWindow();

external (GLAPI) glutIconifyWindow();

external (GLAPI) glutShowWindow();

external (GLAPI) glutHideWindow();

external (GLAPI) glutFullScreen();

external (GLAPI) glutSetCursor(
    cursor : Int);

external (GLAPI) glutWarpPointer(
    x : Int,
    y : Int);

external (GLAPI) glutSurfaceTexture(
    target : Int,
    internalformat : Int,
    surfacewin : Int);

external (GLAPI) glutWMCloseFunc(
    func : CCodePointer[[],[]]);

external (GLAPI) glutCheckLoop();

external (GLAPI) glutEstablishOverlay();

external (GLAPI) glutRemoveOverlay();

external (GLAPI) glutUseLayer(
    layer : Int);

external (GLAPI) glutPostOverlayRedisplay();

external (GLAPI) glutPostWindowOverlayRedisplay(
    win : Int);

external (GLAPI) glutShowOverlay();

external (GLAPI) glutHideOverlay();

external (GLAPI) glutCreateMenu(
    argument0 : CCodePointer[[Int],[]]) : Int;

external (GLAPI) glutDestroyMenu(
    menu : Int);

external (GLAPI) glutGetMenu() : Int;

external (GLAPI) glutSetMenu(
    menu : Int);

external (GLAPI) glutAddMenuEntry(
    label : Pointer[CChar],
    value : Int);

external (GLAPI) glutAddSubMenu(
    label : Pointer[CChar],
    submenu : Int);

external (GLAPI) glutChangeToMenuEntry(
    item : Int,
    label : Pointer[CChar],
    value : Int);

external (GLAPI) glutChangeToSubMenu(
    item : Int,
    label : Pointer[CChar],
    submenu : Int);

external (GLAPI) glutRemoveMenuItem(
    item : Int);

external (GLAPI) glutAttachMenu(
    button : Int);

external (GLAPI) glutDetachMenu(
    button : Int);

external (GLAPI) glutDisplayFunc(
    func : CCodePointer[[],[]]);

external (GLAPI) glutReshapeFunc(
    func : CCodePointer[[Int,Int],[]]);

external (GLAPI) glutKeyboardFunc(
    func : CCodePointer[[CUChar,Int,Int],[]]);

external (GLAPI) glutMouseFunc(
    func : CCodePointer[[Int,Int,Int,Int],[]]);

external (GLAPI) glutMotionFunc(
    func : CCodePointer[[Int,Int],[]]);

external (GLAPI) glutPassiveMotionFunc(
    func : CCodePointer[[Int,Int],[]]);

external (GLAPI) glutEntryFunc(
    func : CCodePointer[[Int],[]]);

external (GLAPI) glutVisibilityFunc(
    func : CCodePointer[[Int],[]]);

external (GLAPI) glutIdleFunc(
    func : CCodePointer[[],[]]);

external (GLAPI) glutTimerFunc(
    millis : UInt,
    func : CCodePointer[[Int],[]],
    value : Int);

external (GLAPI) glutMenuStateFunc(
    func : CCodePointer[[Int],[]]);

external (GLAPI) glutSpecialFunc(
    func : CCodePointer[[Int,Int,Int],[]]);

external (GLAPI) glutSpaceballMotionFunc(
    func : CCodePointer[[Int,Int,Int],[]]);

external (GLAPI) glutSpaceballRotateFunc(
    func : CCodePointer[[Int,Int,Int],[]]);

external (GLAPI) glutSpaceballButtonFunc(
    func : CCodePointer[[Int,Int],[]]);

external (GLAPI) glutButtonBoxFunc(
    func : CCodePointer[[Int,Int],[]]);

external (GLAPI) glutDialsFunc(
    func : CCodePointer[[Int,Int],[]]);

external (GLAPI) glutTabletMotionFunc(
    func : CCodePointer[[Int,Int],[]]);

external (GLAPI) glutTabletButtonFunc(
    func : CCodePointer[[Int,Int,Int,Int],[]]);

external (GLAPI) glutMenuStatusFunc(
    func : CCodePointer[[Int,Int,Int],[]]);

external (GLAPI) glutOverlayDisplayFunc(
    func : CCodePointer[[],[]]);

external (GLAPI) glutWindowStatusFunc(
    func : CCodePointer[[Int],[]]);

external (GLAPI) glutKeyboardUpFunc(
    func : CCodePointer[[CUChar,Int,Int],[]]);

external (GLAPI) glutSpecialUpFunc(
    func : CCodePointer[[Int,Int,Int],[]]);

external (GLAPI) glutJoystickFunc(
    func : CCodePointer[[UInt,Int,Int,Int],[]],
    pollInterval : Int);

external (GLAPI) glutSetColor(
    argument0 : Int,
    red : Int,
    green : Int,
    blue : Int);

external (GLAPI) glutGetColor(
    ndx : Int,
    component : Int) : Int;

external (GLAPI) glutCopyColormap(
    win : Int);

external (GLAPI) glutGet(
    type : Int) : Int;

external (GLAPI) glutDeviceGet(
    type : Int) : Int;

external (GLAPI) glutExtensionSupported(
    name : Pointer[CChar]) : Int;

external (GLAPI) glutGetModifiers() : Int;

external (GLAPI) glutLayerGet(
    type : Int) : Int;

external (GLAPI) glutGetProcAddress(
    procName : Pointer[CChar]) : RawPointer;

external (GLAPI) glutBitmapCharacter(
    font : RawPointer,
    character : Int);

external (GLAPI) glutBitmapWidth(
    font : RawPointer,
    character : Int) : Int;

external (GLAPI) glutStrokeCharacter(
    font : RawPointer,
    character : Int);

external (GLAPI) glutStrokeWidth(
    font : RawPointer,
    character : Int) : Int;

external (GLAPI) glutBitmapLength(
    font : RawPointer,
    string : Pointer[CUChar]) : Int;

external (GLAPI) glutStrokeLength(
    font : RawPointer,
    string : Pointer[CUChar]) : Int;

external (GLAPI) glutWireSphere(
    radius : Int,
    slices : Int,
    stacks : Int);

external (GLAPI) glutSolidSphere(
    radius : Int,
    slices : Int,
    stacks : Int);

external (GLAPI) glutWireCone(
    base : Int,
    height : Int,
    slices : Int,
    stacks : Int);

external (GLAPI) glutSolidCone(
    base : Int,
    height : Int,
    slices : Int,
    stacks : Int);

external (GLAPI) glutWireCube(
    size : Int);

external (GLAPI) glutSolidCube(
    size : Int);

external (GLAPI) glutWireTorus(
    innerRadius : Int,
    outerRadius : Int,
    sides : Int,
    rings : Int);

external (GLAPI) glutSolidTorus(
    innerRadius : Int,
    outerRadius : Int,
    sides : Int,
    rings : Int);

external (GLAPI) glutWireDodecahedron();

external (GLAPI) glutSolidDodecahedron();

external (GLAPI) glutWireTeapot(
    size : Int);

external (GLAPI) glutSolidTeapot(
    size : Int);

external (GLAPI) glutWireOctahedron();

external (GLAPI) glutSolidOctahedron();

external (GLAPI) glutWireTetrahedron();

external (GLAPI) glutSolidTetrahedron();

external (GLAPI) glutWireIcosahedron();

external (GLAPI) glutSolidIcosahedron();

external (GLAPI) glutVideoResizeGet(
    param : Int) : Int;

external (GLAPI) glutSetupVideoResizing();

external (GLAPI) glutStopVideoResizing();

external (GLAPI) glutVideoResize(
    x : Int,
    y : Int,
    width : Int,
    height : Int);

external (GLAPI) glutVideoPan(
    x : Int,
    y : Int,
    width : Int,
    height : Int);

external (GLAPI) glutReportErrors();

external (GLAPI) glutIgnoreKeyRepeat(
    ignore : Int);

external (GLAPI) glutSetKeyRepeat(
    repeatMode : Int);

external (GLAPI) glutForceJoystickFunc();

external (GLAPI) glutGameModeString(
    string : Pointer[CChar]);

external (GLAPI) glutEnterGameMode() : Int;

external (GLAPI) glutLeaveGameMode();

external (GLAPI) glutGameModeGet(
    mode : Int) : Int;
