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_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 227
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 318
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
import_symbols(output_error = false) click to toggle source
# File lib/glut.rb, line 490
def self.import_symbols(output_error = false)
  # defines
  if GL.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
  @@lib_signature.each do |sig|
    begin
      extern sig
    rescue
      $stderr.puts("[Warning] Failed to import #{sig}.") if output_error
    end
  end

  # Convert method names (e.g.: GLUT.glutInit -> GLUT.Init)
  self.singleton_methods(false).each do |method_name|
    m = singleton_method(method_name)
    if m.name.to_s.start_with? 'glut'
      modified_api = m.name.to_s[4..-1] # omit prefix "glut"
      define_singleton_method(modified_api, m) # define alias
    end
  end

  # Convert constant names (e.g.: GLUT::GLUT_KEY_F1 -> GLUT::KEY_F1)
  self.constants.each do |constant|
    cs = constant.to_s
    if cs[0..4] == "GLUT_"
      if cs[5] =~ /\d/
        # We have to abandon name conversion like 'GL_2D, GL_3D_COLOR, GL_4_BYTES, etc.
        # Because constants can't start with a digit or underscore.
        # [Note] This rule has been inherited from Yoshi's very original ruby-opengl (confirmed with opengl-0.32g, 2004-07-17).
      else
        # Convert by omitting the 'GLUT_' prefix
        const_set(cs[5..-1], GLUT.const_get(constant))
      end
    end
  end

  @@glut_import_done = true
end
load_lib(lib_path = nil, output_error = false) click to toggle source

Load native library.

# File lib/glut.rb, line 336
def self.load_lib(lib_path = nil, output_error = false)
  if lib_path == nil
    lib_path = case GL.get_platform
               when :OPENGL_PLATFORM_WINDOWS
                 Dir.pwd + '/freeglut.dll'
               when :OPENGL_PLATFORM_MACOSX
                 '/System/Library/Frameworks/GLUT.framework/GLUT'
               else
                 'libglut.so' # not tested
               end
  end

  dlload(lib_path)

  import_symbols(output_error) unless @@glut_import_done
end