module GLUT

Constants

GLUTButtonBoxFunc_cb_args
GLUTButtonBoxFunc_cb_retval
GLUTDialsFunc_cb_args
GLUTDialsFunc_cb_retval
GLUTDisplayFunc_cb_args
GLUTDisplayFunc_cb_retval
GLUTEntryFunc_cb_args
GLUTEntryFunc_cb_retval
GLUTIdleFunc_cb_args
GLUTIdleFunc_cb_retval
GLUTJoystickFunc_cb_args
GLUTJoystickFunc_cb_retval
GLUTKeyboardFunc_cb_args
GLUTKeyboardFunc_cb_retval
GLUTKeyboardUpFunc_cb_args
GLUTKeyboardUpFunc_cb_retval
GLUTMenuFunc_cb_args
GLUTMenuFunc_cb_retval
GLUTMenuStateFunc_cb_args
GLUTMenuStateFunc_cb_retval
GLUTMenuStatusFunc_cb_args
GLUTMenuStatusFunc_cb_retval
GLUTMotionFunc_cb_args
GLUTMotionFunc_cb_retval
GLUTMouseFunc_cb_args
GLUTMouseFunc_cb_retval
GLUTOverlayDisplayFunc_cb_args
GLUTOverlayDisplayFunc_cb_retval
GLUTPassiveMotionFunc_cb_args
GLUTPassiveMotionFunc_cb_retval
GLUTReshapeFunc_cb_args
GLUTReshapeFunc_cb_retval
GLUTSpaceballButtonFunc_cb_args
GLUTSpaceballButtonFunc_cb_retval
GLUTSpaceballMotionFunc_cb_args
GLUTSpaceballMotionFunc_cb_retval
GLUTSpaceballRotateFunc_cb_args
GLUTSpaceballRotateFunc_cb_retval
GLUTSpecialFunc_cb_args
GLUTSpecialFunc_cb_retval
GLUTSpecialUpFunc_cb_args
GLUTSpecialUpFunc_cb_retval
GLUTTabletButtonFunc_cb_args
GLUTTabletButtonFunc_cb_retval
GLUTTabletMotionFunc_cb_args
GLUTTabletMotionFunc_cb_retval
GLUTTimerFunc_cb_args
GLUTTimerFunc_cb_retval
GLUTVisibilityFunc_cb_args
GLUTVisibilityFunc_cb_retval
GLUTWindowStatusFunc_cb_args
GLUTWindowStatusFunc_cb_retval
GLUT_ACCUM
GLUT_ACTIVE_ALT
GLUT_ACTIVE_CTRL
GLUT_ACTIVE_SHIFT
GLUT_ALPHA
GLUT_API_VERSION

defines

GLUT_BLUE
GLUT_CURSOR_BOTTOM_LEFT_CORNER
GLUT_CURSOR_BOTTOM_RIGHT_CORNER
GLUT_CURSOR_BOTTOM_SIDE
GLUT_CURSOR_CROSSHAIR
GLUT_CURSOR_CYCLE
GLUT_CURSOR_DESTROY
GLUT_CURSOR_FULL_CROSSHAIR
GLUT_CURSOR_HELP
GLUT_CURSOR_INFO
GLUT_CURSOR_INHERIT
GLUT_CURSOR_LEFT_ARROW
GLUT_CURSOR_LEFT_RIGHT
GLUT_CURSOR_LEFT_SIDE
GLUT_CURSOR_NONE
GLUT_CURSOR_RIGHT_ARROW
GLUT_CURSOR_RIGHT_SIDE
GLUT_CURSOR_SPRAY
GLUT_CURSOR_TEXT
GLUT_CURSOR_TOP_LEFT_CORNER
GLUT_CURSOR_TOP_RIGHT_CORNER
GLUT_CURSOR_TOP_SIDE
GLUT_CURSOR_UP_DOWN
GLUT_CURSOR_WAIT
GLUT_DEPTH
GLUT_DEVICE_IGNORE_KEY_REPEAT
GLUT_DEVICE_KEY_REPEAT
GLUT_DISPLAY_MODE_POSSIBLE
GLUT_DOUBLE
GLUT_DOWN
GLUT_ELAPSED_TIME
GLUT_ENTERED
GLUT_FULLY_COVERED
GLUT_FULLY_RETAINED
GLUT_FUNCTIONS_MAP

Fiddle’s default ‘extern’ stores all methods into local variable ‘@func_map’, that makes difficult to ‘include GLUT’. So I override it and replace ‘@func_map’ into ‘GLUT_FUNCTIONS_MAP’. Ref.: /lib/ruby/2.0.0/fiddle/import.rb

GLUT_GAME_MODE_ACTIVE
GLUT_GAME_MODE_DISPLAY_CHANGED
GLUT_GAME_MODE_HEIGHT
GLUT_GAME_MODE_PIXEL_DEPTH
GLUT_GAME_MODE_POSSIBLE
GLUT_GAME_MODE_REFRESH_RATE
GLUT_GAME_MODE_WIDTH
GLUT_GREEN
GLUT_HAS_DIAL_AND_BUTTON_BOX
GLUT_HAS_JOYSTICK
GLUT_HAS_KEYBOARD
GLUT_HAS_MOUSE
GLUT_HAS_OVERLAY
GLUT_HAS_SPACEBALL
GLUT_HAS_TABLET
GLUT_HIDDEN
GLUT_INDEX
GLUT_INIT_DISPLAY_MODE
GLUT_INIT_STATE
GLUT_INIT_WINDOW_HEIGHT
GLUT_INIT_WINDOW_WIDTH
GLUT_INIT_WINDOW_X
GLUT_INIT_WINDOW_Y
GLUT_JOYSTICK_AXES
GLUT_JOYSTICK_BUTTONS
GLUT_JOYSTICK_BUTTON_A
GLUT_JOYSTICK_BUTTON_B
GLUT_JOYSTICK_BUTTON_C
GLUT_JOYSTICK_BUTTON_D
GLUT_JOYSTICK_POLL_RATE
GLUT_KEY_DOWN
GLUT_KEY_END
GLUT_KEY_F1
GLUT_KEY_F10
GLUT_KEY_F11
GLUT_KEY_F12
GLUT_KEY_F2
GLUT_KEY_F3
GLUT_KEY_F4
GLUT_KEY_F5
GLUT_KEY_F6
GLUT_KEY_F7
GLUT_KEY_F8
GLUT_KEY_F9
GLUT_KEY_HOME
GLUT_KEY_INSERT
GLUT_KEY_LEFT
GLUT_KEY_PAGE_DOWN
GLUT_KEY_PAGE_UP
GLUT_KEY_REPEAT_DEFAULT
GLUT_KEY_REPEAT_OFF
GLUT_KEY_REPEAT_ON
GLUT_KEY_RIGHT
GLUT_KEY_UP
GLUT_LAYER_IN_USE
GLUT_LEFT
GLUT_LEFT_BUTTON
GLUT_LUMINANCE
GLUT_MENU_IN_USE
GLUT_MENU_NOT_IN_USE
GLUT_MENU_NUM_ITEMS
GLUT_MIDDLE_BUTTON
GLUT_MULTISAMPLE
GLUT_NORMAL
GLUT_NORMAL_DAMAGED
GLUT_NOT_VISIBLE
GLUT_NUM_BUTTON_BOX_BUTTONS
GLUT_NUM_DIALS
GLUT_NUM_MOUSE_BUTTONS
GLUT_NUM_SPACEBALL_BUTTONS
GLUT_NUM_TABLET_BUTTONS
GLUT_OVERLAY
GLUT_OVERLAY_DAMAGED
GLUT_OVERLAY_POSSIBLE
GLUT_OWNS_JOYSTICK
GLUT_PARTIALLY_RETAINED
GLUT_RED
GLUT_RGB
GLUT_RGBA
GLUT_RIGHT_BUTTON
GLUT_SCREEN_HEIGHT
GLUT_SCREEN_HEIGHT_MM
GLUT_SCREEN_WIDTH
GLUT_SCREEN_WIDTH_MM
GLUT_SINGLE
GLUT_STENCIL
GLUT_STEREO
GLUT_TRANSPARENT_INDEX
GLUT_UP
GLUT_VIDEO_RESIZE_HEIGHT
GLUT_VIDEO_RESIZE_HEIGHT_DELTA
GLUT_VIDEO_RESIZE_IN_USE
GLUT_VIDEO_RESIZE_POSSIBLE
GLUT_VIDEO_RESIZE_WIDTH
GLUT_VIDEO_RESIZE_WIDTH_DELTA
GLUT_VIDEO_RESIZE_X
GLUT_VIDEO_RESIZE_X_DELTA
GLUT_VIDEO_RESIZE_Y
GLUT_VIDEO_RESIZE_Y_DELTA
GLUT_VISIBLE
GLUT_WINDOW_ACCUM_ALPHA_SIZE
GLUT_WINDOW_ACCUM_BLUE_SIZE
GLUT_WINDOW_ACCUM_GREEN_SIZE
GLUT_WINDOW_ACCUM_RED_SIZE
GLUT_WINDOW_ALPHA_SIZE
GLUT_WINDOW_BLUE_SIZE
GLUT_WINDOW_BUFFER_SIZE
GLUT_WINDOW_COLORMAP_SIZE
GLUT_WINDOW_CURSOR
GLUT_WINDOW_DEPTH_SIZE
GLUT_WINDOW_DOUBLEBUFFER
GLUT_WINDOW_FORMAT_ID
GLUT_WINDOW_GREEN_SIZE
GLUT_WINDOW_HEIGHT
GLUT_WINDOW_NUM_CHILDREN
GLUT_WINDOW_NUM_SAMPLES
GLUT_WINDOW_PARENT
GLUT_WINDOW_RED_SIZE
GLUT_WINDOW_RGBA
GLUT_WINDOW_STENCIL_SIZE
GLUT_WINDOW_STEREO
GLUT_WINDOW_WIDTH
GLUT_WINDOW_X
GLUT_WINDOW_Y

Public Class Methods

create_callback( sym, proc=nil, &blk ) click to toggle source

Creates a callback as an instance of Fiddle::Function

# File lib/glut.rb, line 255
def self.create_callback( sym, proc=nil, &blk )
  if block_given?
    return bind( @@glut_cb_function_signature[sym], nil, &blk )
  else
    return bind( @@glut_cb_function_signature[sym], nil, &proc )
  end
end
create_callback_closure( sym, proc=nil, &blk ) click to toggle source

Creates a callback as an instance of Fiddle::Closure::BlockCaller

# File lib/glut.rb, line 346
def self.create_callback_closure( sym, proc=nil, &blk )
  cb_retval = @@glut_cb_closure_signature[sym][0]
  cb_args   = @@glut_cb_closure_signature[sym][1]
  if block_given?
    return Fiddle::Closure::BlockCaller.new( cb_retval, cb_args, Fiddle::Function::DEFAULT, &blk )
  else
    return Fiddle::Closure::BlockCaller.new( cb_retval, cb_args, Fiddle::Function::DEFAULT, &proc )
  end
end
extern(signature, *opts) click to toggle source
# File lib/glut.rb, line 15
  def self.extern(signature, *opts)
    symname, ctype, argtype = parse_signature(signature, @type_alias)
    opt = parse_bind_options(opts)
    f = import_function(symname, ctype, argtype, opt[:call_type])
    name = symname.gsub(/@.+/,'')
    GLUT_FUNCTIONS_MAP[name] = f
    begin
      /^(.+?):(\d+)/ =~ caller.first
      file, line = $1, $2.to_i
    rescue
      file, line = __FILE__, __LINE__+3
    end
    args_str="*args"
    module_eval(<<-EOS, file, line)
      def #{name}(*args, &block)
        GLUT_FUNCTIONS_MAP['#{name}'].call(*args,&block)
      end
    EOS
    module_function(name)
    f
  end
import_symbols() click to toggle source
# File lib/glut.rb, line 388
def self.import_symbols
  # defines
  if OpenGL.get_platform == :OPENGL_PLATFORM_WINDOWS
    const_set('GLUT_STROKE_ROMAN', Fiddle::Pointer.new(0x0000) )
    const_set('GLUT_STROKE_MONO_ROMAN', Fiddle::Pointer.new(0x0001) )
    const_set('GLUT_BITMAP_9_BY_15', Fiddle::Pointer.new(0x0002) )
    const_set('GLUT_BITMAP_8_BY_13', Fiddle::Pointer.new(0x0003) )
    const_set('GLUT_BITMAP_TIMES_ROMAN_10', Fiddle::Pointer.new(0x0004) )
    const_set('GLUT_BITMAP_TIMES_ROMAN_24', Fiddle::Pointer.new(0x0005) )
    const_set('GLUT_BITMAP_HELVETICA_10', Fiddle::Pointer.new(0x0006) )
    const_set('GLUT_BITMAP_HELVETICA_12', Fiddle::Pointer.new(0x0007) )
    const_set('GLUT_BITMAP_HELVETICA_18', Fiddle::Pointer.new(0x0008) )
  else
    const_set('GLUT_STROKE_ROMAN', import_symbol("glutStrokeRoman") )
    const_set('GLUT_STROKE_MONO_ROMAN', import_symbol("glutStrokeMonoRoman") )
    const_set('GLUT_BITMAP_9_BY_15', import_symbol("glutBitmap9By15") )
    const_set('GLUT_BITMAP_8_BY_13', import_symbol("glutBitmap8By13") )
    const_set('GLUT_BITMAP_TIMES_ROMAN_10', import_symbol("glutBitmapTimesRoman10") )
    const_set('GLUT_BITMAP_TIMES_ROMAN_24', import_symbol("glutBitmapTimesRoman24") )
    const_set('GLUT_BITMAP_HELVETICA_10', import_symbol("glutBitmapHelvetica10") )
    const_set('GLUT_BITMAP_HELVETICA_12', import_symbol("glutBitmapHelvetica12") )
    const_set('GLUT_BITMAP_HELVETICA_18', import_symbol("glutBitmapHelvetica18") )
  end

  # function
  extern 'void glutInit(int*, char**)'
  extern 'void glutInitWindowPosition(int, int)'
  extern 'void glutInitWindowSize(int, int)'
  extern 'void glutInitDisplayMode(unsigned int)'
  extern 'void glutInitDisplayString(const char*)'

  extern 'void glutMainLoop()'

  extern 'int glutCreateWindow(const char *)'
  extern 'int glutCreateSubWindow(int, int, int, int, int)'
  extern 'void glutDestroyWindow(int)'
  extern 'void glutSetWindow(int)'
  extern 'int glutGetWindow()'
  extern 'void glutSetWindowTitle(const char *)'
  extern 'void glutSetIconTitle(const char *)'
  extern 'void glutReshapeWindow(int, int)'
  extern 'void glutPositionWindow(int, int)'
  extern 'void glutShowWindow()'
  extern 'void glutHideWindow()'
  extern 'void glutIconifyWindow()'
  extern 'void glutPushWindow()'
  extern 'void glutPopWindow()'
  extern 'void glutFullScreen()'

  extern 'void glutPostWindowRedisplay(int)'
  extern 'void glutPostRedisplay()'
  extern 'void glutSwapBuffers()'

  extern 'void glutWarpPointer(int, int)'
  extern 'void glutSetCursor(int)'

  extern 'void glutEstablishOverlay()'
  extern 'void glutRemoveOverlay()'
  extern 'void glutUseLayer(unsigned int)'
  extern 'void glutPostOverlayRedisplay()'
  extern 'void glutPostWindowOverlayRedisplay(int)'
  extern 'void glutShowOverlay()'
  extern 'void glutHideOverlay()'

  extern 'int glutCreateMenu(void *)'
  extern 'void glutDestroyMenu(int)'
  extern 'int glutGetMenu()'
  extern 'void glutSetMenu(int)'
  extern 'void glutAddMenuEntry(const char *, int)'
  extern 'void glutAddSubMenu(const char *, int)'
  extern 'void glutChangeToMenuEntry(int, const char *, int)'
  extern 'void glutChangeToSubMenu(int, const char *, int)'
  extern 'void glutRemoveMenuItem(int)'
  extern 'void glutAttachMenu(int)'
  extern 'void glutDetachMenu(int)'

  extern 'void glutTimerFunc(unsigned int, void *, int)'
  extern 'void glutIdleFunc(void *)'

  extern 'void glutKeyboardFunc(void *)'
  extern 'void glutSpecialFunc(void *)'
  extern 'void glutReshapeFunc(void *)'
  extern 'void glutVisibilityFunc(void *)'
  extern 'void glutDisplayFunc(void *)'
  extern 'void glutMouseFunc(void *)'
  extern 'void glutMotionFunc(void *)'
  extern 'void glutPassiveMotionFunc(void *)'
  extern 'void glutEntryFunc(void *)'

  extern 'void glutKeyboardUpFunc(void *)'
  extern 'void glutSpecialUpFunc(void *)'
  extern 'void glutJoystickFunc(void *, int)'
  extern 'void glutMenuStateFunc(void *)'
  extern 'void glutMenuStatusFunc(void *)'
  extern 'void glutOverlayDisplayFunc(void *)'
  extern 'void glutWindowStatusFunc(void *)'

  extern 'void glutSpaceballMotionFunc(void *)'
  extern 'void glutSpaceballRotateFunc(void *)'
  extern 'void glutSpaceballButtonFunc(void *)'
  extern 'void glutButtonBoxFunc(void *)'
  extern 'void glutDialsFunc(void *)'
  extern 'void glutTabletMotionFunc(void *)'
  extern 'void glutTabletButtonFunc(void *)'

  extern 'int glutGet(unsigned int)'
  extern 'int glutDeviceGet(unsigned int)'
  extern 'int glutGetModifiers()'
  extern 'int glutLayerGet(unsigned int)'

  extern 'void glutBitmapCharacter(void *, int)'
  extern 'int glutBitmapWidth(void *, int)'
  extern 'void glutStrokeCharacter(void *, int)'
  extern 'int glutStrokeWidth(void *, int)'
  extern 'int glutBitmapLength(void *, const unsigned char*)'
  extern 'int glutStrokeLength(void *, const unsigned char*)'

  extern 'void glutWireCube(double)'
  extern 'void glutSolidCube(double)'
  extern 'void glutWireSphere(double, int, int)'
  extern 'void glutSolidSphere(double, int, int)'
  extern 'void glutWireCone(double, double, int, int)'
  extern 'void glutSolidCone(double, double, int, int)'

  extern 'void glutWireTorus(double, double, int, int)'
  extern 'void glutSolidTorus(double, double, int, int)'
  extern 'void glutWireDodecahedron()'
  extern 'void glutSolidDodecahedron()'
  extern 'void glutWireOctahedron()'
  extern 'void glutSolidOctahedron()'
  extern 'void glutWireTetrahedron()'
  extern 'void glutSolidTetrahedron()'
  extern 'void glutWireIcosahedron()'
  extern 'void glutSolidIcosahedron()'

  extern 'void glutWireTeapot(double)'
  extern 'void glutSolidTeapot(double)'

  extern 'void glutGameModeString(const char*)'
  extern 'int glutEnterGameMode()'
  extern 'void glutLeaveGameMode()'
  extern 'int glutGameModeGet(unsigned int)'

  extern 'int glutVideoResizeGet(unsigned int)'
  extern 'void glutSetupVideoResizing()'
  extern 'void glutStopVideoResizing()'
  extern 'void glutVideoResize(int, int, int, int)'
  extern 'void glutVideoPan(int, int, int, int)'

  extern 'void glutSetColor(int, float, float, float)'
  extern 'float glutGetColor(int, int)'
  extern 'void glutCopyColormap(int)'

  extern 'void glutIgnoreKeyRepeat(int)'
  extern 'void glutSetKeyRepeat(int)'
  extern 'void glutForceJoystickFunc()'

  extern 'int glutExtensionSupported(const char *)'
  extern 'void glutReportErrors()'

  @@glut_import_done = true
end
load_dll(lib = nil, path = nil) click to toggle source
# File lib/glut.rb, line 383
def self.load_dll(lib = nil, path = nil)
  puts "Warning GLUT.load_dll is deprecated, use GLUT.load_lib instead"
  self.load_lib(lib, path)
end
load_lib(lib = nil, path = nil) click to toggle source

Load native library.

# File lib/glut.rb, line 364
def self.load_lib(lib = nil, path = nil)
  if lib == nil && path == nil
    case OpenGL.get_platform
    when :OPENGL_PLATFORM_WINDOWS
      lib, path = 'freeglut.dll', Dir.pwd
    when :OPENGL_PLATFORM_MACOSX
      lib, path = 'GLUT', '/System/Library/Frameworks/GLUT.framework'
    else
      lib, path = 'libglut.so'
    end
  end
  if path
    dlload (path + '/' + lib)
  else
    dlload (lib)
  end
  import_symbols() unless @@glut_import_done
end