module GLFW

Constants

GLFW_ACCUM_ALPHA_BITS
GLFW_ACCUM_BLUE_BITS
GLFW_ACCUM_GREEN_BITS
GLFW_ACCUM_RED_BITS
GLFW_ALPHA_BITS
GLFW_ANY_RELEASE_BEHAVIOR
GLFW_API_UNAVAILABLE
GLFW_ARROW_CURSOR
GLFW_AUTO_ICONIFY
GLFW_AUX_BUFFERS
GLFW_BLUE_BITS
GLFW_CENTER_CURSOR
GLFW_CLIENT_API
GLFW_COCOA_CHDIR_RESOURCES
GLFW_COCOA_FRAME_NAME
GLFW_COCOA_GRAPHICS_SWITCHING
GLFW_COCOA_MENUBAR
GLFW_COCOA_RETINA_FRAMEBUFFER
GLFW_CONNECTED
GLFW_CONTEXT_CREATION_API
GLFW_CONTEXT_NO_ERROR
GLFW_CONTEXT_RELEASE_BEHAVIOR
GLFW_CONTEXT_REVISION
GLFW_CONTEXT_ROBUSTNESS
GLFW_CONTEXT_VERSION_MAJOR
GLFW_CONTEXT_VERSION_MINOR
GLFW_CROSSHAIR_CURSOR
GLFW_CURSOR
GLFW_CURSOR_DISABLED
GLFW_CURSOR_HIDDEN
GLFW_CURSOR_NORMAL
GLFW_DECORATED
GLFW_DEPTH_BITS
GLFW_DISCONNECTED
GLFW_DONT_CARE
GLFW_DOUBLEBUFFER
GLFW_EGL_CONTEXT_API
GLFW_FALSE
GLFW_FLOATING
GLFW_FOCUSED
GLFW_FOCUS_ON_SHOW
GLFW_FORMAT_UNAVAILABLE
GLFW_GAMEPAD_AXIS_LAST
GLFW_GAMEPAD_AXIS_LEFT_TRIGGER
GLFW_GAMEPAD_AXIS_LEFT_X
GLFW_GAMEPAD_AXIS_LEFT_Y
GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER
GLFW_GAMEPAD_AXIS_RIGHT_X
GLFW_GAMEPAD_AXIS_RIGHT_Y
GLFW_GAMEPAD_BUTTON_A
GLFW_GAMEPAD_BUTTON_B
GLFW_GAMEPAD_BUTTON_BACK
GLFW_GAMEPAD_BUTTON_CIRCLE
GLFW_GAMEPAD_BUTTON_CROSS
GLFW_GAMEPAD_BUTTON_DPAD_DOWN
GLFW_GAMEPAD_BUTTON_DPAD_LEFT
GLFW_GAMEPAD_BUTTON_DPAD_RIGHT
GLFW_GAMEPAD_BUTTON_DPAD_UP
GLFW_GAMEPAD_BUTTON_GUIDE
GLFW_GAMEPAD_BUTTON_LAST
GLFW_GAMEPAD_BUTTON_LEFT_BUMPER
GLFW_GAMEPAD_BUTTON_LEFT_THUMB
GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER
GLFW_GAMEPAD_BUTTON_RIGHT_THUMB
GLFW_GAMEPAD_BUTTON_SQUARE
GLFW_GAMEPAD_BUTTON_START
GLFW_GAMEPAD_BUTTON_TRIANGLE
GLFW_GAMEPAD_BUTTON_X
GLFW_GAMEPAD_BUTTON_Y
GLFW_GREEN_BITS
GLFW_HAND_CURSOR
GLFW_HAT_CENTERED
GLFW_HAT_DOWN
GLFW_HAT_LEFT
GLFW_HAT_LEFT_DOWN
GLFW_HAT_LEFT_UP
GLFW_HAT_RIGHT
GLFW_HAT_RIGHT_DOWN
GLFW_HAT_RIGHT_UP
GLFW_HAT_UP
GLFW_HOVERED
GLFW_HRESIZE_CURSOR
GLFW_IBEAM_CURSOR
GLFW_ICONIFIED
GLFW_INVALID_ENUM
GLFW_INVALID_VALUE
GLFW_JOYSTICK_1
GLFW_JOYSTICK_10
GLFW_JOYSTICK_11
GLFW_JOYSTICK_12
GLFW_JOYSTICK_13
GLFW_JOYSTICK_14
GLFW_JOYSTICK_15
GLFW_JOYSTICK_16
GLFW_JOYSTICK_2
GLFW_JOYSTICK_3
GLFW_JOYSTICK_4
GLFW_JOYSTICK_5
GLFW_JOYSTICK_6
GLFW_JOYSTICK_7
GLFW_JOYSTICK_8
GLFW_JOYSTICK_9
GLFW_JOYSTICK_HAT_BUTTONS
GLFW_JOYSTICK_LAST
GLFW_KEY_0
GLFW_KEY_1
GLFW_KEY_2
GLFW_KEY_3
GLFW_KEY_4
GLFW_KEY_5
GLFW_KEY_6
GLFW_KEY_7
GLFW_KEY_8
GLFW_KEY_9
GLFW_KEY_A
GLFW_KEY_APOSTROPHE
GLFW_KEY_B
GLFW_KEY_BACKSLASH
GLFW_KEY_BACKSPACE
GLFW_KEY_C
GLFW_KEY_CAPS_LOCK
GLFW_KEY_COMMA
GLFW_KEY_D
GLFW_KEY_DELETE
GLFW_KEY_DOWN
GLFW_KEY_E
GLFW_KEY_END
GLFW_KEY_ENTER
GLFW_KEY_EQUAL
GLFW_KEY_ESCAPE
GLFW_KEY_F
GLFW_KEY_F1
GLFW_KEY_F10
GLFW_KEY_F11
GLFW_KEY_F12
GLFW_KEY_F13
GLFW_KEY_F14
GLFW_KEY_F15
GLFW_KEY_F16
GLFW_KEY_F17
GLFW_KEY_F18
GLFW_KEY_F19
GLFW_KEY_F2
GLFW_KEY_F20
GLFW_KEY_F21
GLFW_KEY_F22
GLFW_KEY_F23
GLFW_KEY_F24
GLFW_KEY_F25
GLFW_KEY_F3
GLFW_KEY_F4
GLFW_KEY_F5
GLFW_KEY_F6
GLFW_KEY_F7
GLFW_KEY_F8
GLFW_KEY_F9
GLFW_KEY_G
GLFW_KEY_GRAVE_ACCENT
GLFW_KEY_H
GLFW_KEY_HOME
GLFW_KEY_I
GLFW_KEY_INSERT
GLFW_KEY_J
GLFW_KEY_K
GLFW_KEY_KP_0
GLFW_KEY_KP_1
GLFW_KEY_KP_2
GLFW_KEY_KP_3
GLFW_KEY_KP_4
GLFW_KEY_KP_5
GLFW_KEY_KP_6
GLFW_KEY_KP_7
GLFW_KEY_KP_8
GLFW_KEY_KP_9
GLFW_KEY_KP_ADD
GLFW_KEY_KP_DECIMAL
GLFW_KEY_KP_DIVIDE
GLFW_KEY_KP_ENTER
GLFW_KEY_KP_EQUAL
GLFW_KEY_KP_MULTIPLY
GLFW_KEY_KP_SUBTRACT
GLFW_KEY_L
GLFW_KEY_LAST
GLFW_KEY_LEFT
GLFW_KEY_LEFT_ALT
GLFW_KEY_LEFT_BRACKET
GLFW_KEY_LEFT_CONTROL
GLFW_KEY_LEFT_SHIFT
GLFW_KEY_LEFT_SUPER
GLFW_KEY_M
GLFW_KEY_MENU
GLFW_KEY_MINUS
GLFW_KEY_N
GLFW_KEY_NUM_LOCK
GLFW_KEY_O
GLFW_KEY_P
GLFW_KEY_PAGE_DOWN
GLFW_KEY_PAGE_UP
GLFW_KEY_PAUSE
GLFW_KEY_PERIOD
GLFW_KEY_PRINT_SCREEN
GLFW_KEY_Q
GLFW_KEY_R
GLFW_KEY_RIGHT
GLFW_KEY_RIGHT_ALT
GLFW_KEY_RIGHT_BRACKET
GLFW_KEY_RIGHT_CONTROL
GLFW_KEY_RIGHT_SHIFT
GLFW_KEY_RIGHT_SUPER
GLFW_KEY_S
GLFW_KEY_SCROLL_LOCK
GLFW_KEY_SEMICOLON
GLFW_KEY_SLASH
GLFW_KEY_SPACE
GLFW_KEY_T
GLFW_KEY_TAB
GLFW_KEY_U
GLFW_KEY_UNKNOWN
GLFW_KEY_UP
GLFW_KEY_V
GLFW_KEY_W
GLFW_KEY_WORLD_1
GLFW_KEY_WORLD_2
GLFW_KEY_X
GLFW_KEY_Y
GLFW_KEY_Z
GLFW_LOCK_KEY_MODS
GLFW_LOSE_CONTEXT_ON_RESET
GLFW_MAXIMIZED
GLFW_MOD_ALT
GLFW_MOD_CAPS_LOCK
GLFW_MOD_CONTROL
GLFW_MOD_NUM_LOCK
GLFW_MOD_SHIFT
GLFW_MOD_SUPER
GLFW_MOUSE_BUTTON_1
GLFW_MOUSE_BUTTON_2
GLFW_MOUSE_BUTTON_3
GLFW_MOUSE_BUTTON_4
GLFW_MOUSE_BUTTON_5
GLFW_MOUSE_BUTTON_6
GLFW_MOUSE_BUTTON_7
GLFW_MOUSE_BUTTON_8
GLFW_MOUSE_BUTTON_LAST
GLFW_MOUSE_BUTTON_LEFT
GLFW_MOUSE_BUTTON_MIDDLE
GLFW_MOUSE_BUTTON_RIGHT
GLFW_NATIVE_CONTEXT_API
GLFW_NOT_INITIALIZED
GLFW_NO_API
GLFW_NO_CURRENT_CONTEXT
GLFW_NO_ERROR
GLFW_NO_RESET_NOTIFICATION
GLFW_NO_ROBUSTNESS
GLFW_NO_WINDOW_CONTEXT
GLFW_OPENGL_ANY_PROFILE
GLFW_OPENGL_API
GLFW_OPENGL_COMPAT_PROFILE
GLFW_OPENGL_CORE_PROFILE
GLFW_OPENGL_DEBUG_CONTEXT
GLFW_OPENGL_ES_API
GLFW_OPENGL_FORWARD_COMPAT
GLFW_OPENGL_PROFILE
GLFW_OSMESA_CONTEXT_API
GLFW_OUT_OF_MEMORY
GLFW_PLATFORM_ERROR
GLFW_PRESS
GLFW_RAW_MOUSE_MOTION
GLFW_RED_BITS
GLFW_REFRESH_RATE
GLFW_RELEASE
GLFW_RELEASE_BEHAVIOR_FLUSH
GLFW_RELEASE_BEHAVIOR_NONE
GLFW_REPEAT
GLFW_RESIZABLE
GLFW_SAMPLES
GLFW_SCALE_TO_MONITOR
GLFW_SRGB_CAPABLE
GLFW_STENCIL_BITS
GLFW_STEREO
GLFW_STICKY_KEYS
GLFW_STICKY_MOUSE_BUTTONS
GLFW_TRANSPARENT_FRAMEBUFFER
GLFW_TRUE

defines

GLFW_VERSION_UNAVAILABLE
GLFW_VISIBLE
GLFW_VRESIZE_CURSOR
GLFW_X11_CLASS_NAME
GLFW_X11_INSTANCE_NAME
GLFWcharfun_cb_args
GLFWcharfun_cb_retval
GLFWcharmodsfun_cb_args
GLFWcharmodsfun_cb_retval
GLFWcursorenterfun_cb_args
GLFWcursorenterfun_cb_retval
GLFWcursorposfun_cb_args
GLFWcursorposfun_cb_retval
GLFWdropfun_cb_args
GLFWdropfun_cb_retval
GLFWerrorfun_cb_args
GLFWerrorfun_cb_retval
GLFWframebuffersizefun_cb_args
GLFWframebuffersizefun_cb_retval
GLFWgamepadstate

Available since GLFW 3.3

GLFWgammaramp
GLFWimage

Available since GLFW 3.1

GLFWjoystickfun_cb_args
GLFWjoystickfun_cb_retval
GLFWkeyfun_cb_args
GLFWkeyfun_cb_retval
GLFWmonitorfun_cb_args
GLFWmonitorfun_cb_retval
GLFWmousebuttonfun_cb_args
GLFWmousebuttonfun_cb_retval
GLFWscrollfun_cb_args
GLFWscrollfun_cb_retval
GLFWvidmode

struct

GLFWwindowclosefun_cb_args
GLFWwindowclosefun_cb_retval
GLFWwindowcontentscalefun_cb_args
GLFWwindowcontentscalefun_cb_retval
GLFWwindowfocusfun_cb_args
GLFWwindowfocusfun_cb_retval
GLFWwindowiconifyfun_cb_args
GLFWwindowiconifyfun_cb_retval
GLFWwindowposfun_cb_args
GLFWwindowposfun_cb_retval
GLFWwindowrefreshfun_cb_args
GLFWwindowrefreshfun_cb_retval
GLFWwindowsizefun_cb_args
GLFWwindowsizefun_cb_retval

Public Class Methods

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

NOTE : Use ‘create_callback_function’ for backward compatibility.

# File lib/glfw.rb, line 434
def self.create_callback(sym, proc=nil, &blk)
  return self.create_callback_closure( sym, proc, &blk )
end
create_callback_closure(sym, proc=nil, &blk) click to toggle source

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

# File lib/glfw.rb, line 423
def self.create_callback_closure(sym, proc=nil, &blk)
  cb_retval = @@glfw_cb_closure_signature[sym][0]
  cb_args   = @@glfw_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
create_callback_function(sym, proc=nil, &blk) click to toggle source

Creates a callback as an instance of Fiddle::Function

# File lib/glfw.rb, line 353
def self.create_callback_function(sym, proc=nil, &blk)
  if block_given?
    return bind(@@glfw_cb_function_signature[sym], nil, &blk)
  else
    return bind(@@glfw_cb_function_signature[sym], nil, &proc)
  end
end
import_symbols(output_error = false) click to toggle source
# File lib/glfw.rb, line 625
def self.import_symbols(output_error = false)
  typealias 'GLFWuint64', 'unsigned long long' # Available since GLFW 3.2

  # function
  @@lib_signature.each do |sig|
    begin
      extern sig
    rescue
      $stderr.puts("[Warning] Failed to import #{sig}.") if output_error
    end
  end

  ver_major = ' ' * 4
  ver_minor = ' ' * 4
  ver_rev   = ' ' * 4
  glfwGetVersion(ver_major, ver_minor, ver_rev)

  GLFW.const_set('GLFW_VERSION_MAJOR',  ver_major.unpack('L')[0])
  GLFW.const_set('GLFW_VERSION_MINOR',  ver_minor.unpack('L')[0])
  GLFW.const_set('GLFW_VERSION_REVISION', ver_rev.unpack('L')[0])

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

  # Convert constant names (e.g.: GLFW::GLFW_KEY_ESCAPE -> GLFW::KEY_ESCAPE)
  self.constants.each do |constant|
    cs = constant.to_s
    if cs[0..4] == "GLFW_"
      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 'GLFW_' prefix like GLFW::GLFW_KEY_ESCAPE into GLFW::KEY_ESCAPE
        const_set(cs[5..-1], GLFW.const_get(constant))
      end
    end
  end

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

Load native library.

# File lib/glfw.rb, line 463
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 + '/GLFW3.dll'
               when :OPENGL_PLATFORM_MACOSX
                 'libglfw.dylib'
               else
                 'libglfw.so' # not tested
               end
  end

  dlload(lib_path)

  import_symbols(output_error) unless @@glfw_import_done
end