-
Notifications
You must be signed in to change notification settings - Fork 32
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Added GLFW specific functionality from GLWindow.jl #118
Closed
Closed
Changes from 1 commit
Commits
Show all changes
6 commits
Select commit
Hold shift + click to select a range
f3a3b2c
Added GLFW specific functionality from GLWindow.jl
louisponet d9d79fa
Changed to put everything in glfw3.jl
louisponet be8b95a
Changed Vectors to NTuples to mimic previous Vec behaviour
louisponet 60ccda5
Went through requested changes.
louisponet 6d9e01f
Merge branch 'master' into pull-request/f3a3b2ce
jayschwa 65c04f8
Merge branch 'master' into pull-request/f3a3b2ce
jayschwa File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,4 @@ | ||
deps/* | ||
!deps/build.jl | ||
|
||
*.txt |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,262 @@ | ||
#************************************************************************ | ||
# Global definitions | ||
#************************************************************************ | ||
|
||
# Key and button actions | ||
const RELEASE = 0 | ||
const PRESS = 1 | ||
const REPEAT = 2 | ||
|
||
# Unknown key | ||
const KEY_UNKNOWN = -1 | ||
|
||
# Printable keys | ||
const KEY_SPACE = 32 | ||
const KEY_APOSTROPHE = 39 # ' | ||
const KEY_COMMA = 44 # , | ||
const KEY_MINUS = 45 # - | ||
const KEY_PERIOD = 46 # . | ||
const KEY_SLASH = 47 # / | ||
const KEY_0 = 48 | ||
const KEY_1 = 49 | ||
const KEY_2 = 50 | ||
const KEY_3 = 51 | ||
const KEY_4 = 52 | ||
const KEY_5 = 53 | ||
const KEY_6 = 54 | ||
const KEY_7 = 55 | ||
const KEY_8 = 56 | ||
const KEY_9 = 57 | ||
const KEY_SEMICOLON = 59 # ; | ||
const KEY_EQUAL = 61 # = | ||
const KEY_A = 65 | ||
const KEY_B = 66 | ||
const KEY_C = 67 | ||
const KEY_D = 68 | ||
const KEY_E = 69 | ||
const KEY_F = 70 | ||
const KEY_G = 71 | ||
const KEY_H = 72 | ||
const KEY_I = 73 | ||
const KEY_J = 74 | ||
const KEY_K = 75 | ||
const KEY_L = 76 | ||
const KEY_M = 77 | ||
const KEY_N = 78 | ||
const KEY_O = 79 | ||
const KEY_P = 80 | ||
const KEY_Q = 81 | ||
const KEY_R = 82 | ||
const KEY_S = 83 | ||
const KEY_T = 84 | ||
const KEY_U = 85 | ||
const KEY_V = 86 | ||
const KEY_W = 87 | ||
const KEY_X = 88 | ||
const KEY_Y = 89 | ||
const KEY_Z = 90 | ||
const KEY_LEFT_BRACKET = 91 # [ | ||
const KEY_BACKSLASH = 92 # \ | ||
const KEY_RIGHT_BRACKET = 93 # ] | ||
const KEY_GRAVE_ACCENT = 96 # ` | ||
const KEY_WORLD_1 = 161 # non-US #1 | ||
const KEY_WORLD_2 = 162 # non-US #2 | ||
|
||
# Function keys | ||
const KEY_ESCAPE = 256 | ||
const KEY_ENTER = 257 | ||
const KEY_TAB = 258 | ||
const KEY_BACKSPACE = 259 | ||
const KEY_INSERT = 260 | ||
const KEY_DELETE = 261 | ||
const KEY_RIGHT = 262 | ||
const KEY_LEFT = 263 | ||
const KEY_DOWN = 264 | ||
const KEY_UP = 265 | ||
const KEY_PAGE_UP = 266 | ||
const KEY_PAGE_DOWN = 267 | ||
const KEY_HOME = 268 | ||
const KEY_END = 269 | ||
const KEY_CAPS_LOCK = 280 | ||
const KEY_SCROLL_LOCK = 281 | ||
const KEY_NUM_LOCK = 282 | ||
const KEY_PRINT_SCREEN = 283 | ||
const KEY_PAUSE = 284 | ||
const KEY_F1 = 290 | ||
const KEY_F2 = 291 | ||
const KEY_F3 = 292 | ||
const KEY_F4 = 293 | ||
const KEY_F5 = 294 | ||
const KEY_F6 = 295 | ||
const KEY_F7 = 296 | ||
const KEY_F8 = 297 | ||
const KEY_F9 = 298 | ||
const KEY_F10 = 299 | ||
const KEY_F11 = 300 | ||
const KEY_F12 = 301 | ||
const KEY_F13 = 302 | ||
const KEY_F14 = 303 | ||
const KEY_F15 = 304 | ||
const KEY_F16 = 305 | ||
const KEY_F17 = 306 | ||
const KEY_F18 = 307 | ||
const KEY_F19 = 308 | ||
const KEY_F20 = 309 | ||
const KEY_F21 = 310 | ||
const KEY_F22 = 311 | ||
const KEY_F23 = 312 | ||
const KEY_F24 = 313 | ||
const KEY_F25 = 314 | ||
const KEY_KP_0 = 320 | ||
const KEY_KP_1 = 321 | ||
const KEY_KP_2 = 322 | ||
const KEY_KP_3 = 323 | ||
const KEY_KP_4 = 324 | ||
const KEY_KP_5 = 325 | ||
const KEY_KP_6 = 326 | ||
const KEY_KP_7 = 327 | ||
const KEY_KP_8 = 328 | ||
const KEY_KP_9 = 329 | ||
const KEY_KP_DECIMAL = 330 | ||
const KEY_KP_DIVIDE = 331 | ||
const KEY_KP_MULTIPLY = 332 | ||
const KEY_KP_SUBTRACT = 333 | ||
const KEY_KP_ADD = 334 | ||
const KEY_KP_ENTER = 335 | ||
const KEY_KP_EQUAL = 336 | ||
const KEY_LEFT_SHIFT = 340 | ||
const KEY_LEFT_CONTROL = 341 | ||
const KEY_LEFT_ALT = 342 | ||
const KEY_LEFT_SUPER = 343 | ||
const KEY_RIGHT_SHIFT = 344 | ||
const KEY_RIGHT_CONTROL = 345 | ||
const KEY_RIGHT_ALT = 346 | ||
const KEY_RIGHT_SUPER = 347 | ||
const KEY_MENU = 348 | ||
const KEY_LAST = KEY_MENU | ||
|
||
# Modifier key bit flags | ||
const MOD_SHIFT = 0x0001 | ||
const MOD_CONTROL = 0x0002 | ||
const MOD_ALT = 0x0004 | ||
const MOD_SUPER = 0x0008 | ||
|
||
# Mouse buttons | ||
const MOUSE_BUTTON_1 = 0 | ||
const MOUSE_BUTTON_2 = 1 | ||
const MOUSE_BUTTON_3 = 2 | ||
const MOUSE_BUTTON_4 = 3 | ||
const MOUSE_BUTTON_5 = 4 | ||
const MOUSE_BUTTON_6 = 5 | ||
const MOUSE_BUTTON_7 = 6 | ||
const MOUSE_BUTTON_8 = 7 | ||
const MOUSE_BUTTON_LAST = MOUSE_BUTTON_8 | ||
const MOUSE_BUTTON_LEFT = MOUSE_BUTTON_1 | ||
const MOUSE_BUTTON_RIGHT = MOUSE_BUTTON_2 | ||
const MOUSE_BUTTON_MIDDLE = MOUSE_BUTTON_3 | ||
|
||
# Joysticks | ||
const JOYSTICK_1 = 0 | ||
const JOYSTICK_2 = 1 | ||
const JOYSTICK_3 = 2 | ||
const JOYSTICK_4 = 3 | ||
const JOYSTICK_5 = 4 | ||
const JOYSTICK_6 = 5 | ||
const JOYSTICK_7 = 6 | ||
const JOYSTICK_8 = 7 | ||
const JOYSTICK_9 = 8 | ||
const JOYSTICK_10 = 9 | ||
const JOYSTICK_11 = 10 | ||
const JOYSTICK_12 = 11 | ||
const JOYSTICK_13 = 12 | ||
const JOYSTICK_14 = 13 | ||
const JOYSTICK_15 = 14 | ||
const JOYSTICK_16 = 15 | ||
const JOYSTICK_LAST = JOYSTICK_16 | ||
|
||
# Error codes | ||
@enum(ErrorCode, | ||
NOT_INITIALIZED = 0x00010001, # GLFW has not been initialized. | ||
NO_CURRENT_CONTEXT = 0x00010002, # No context is current for this thread. | ||
INVALID_ENUM = 0x00010003, # One of the arguments to the function was an invalid enum value. | ||
INVALID_VALUE = 0x00010004, # One of the arguments to the function was an invalid value. | ||
OUT_OF_MEMORY = 0x00010005, # A memory allocation failed. | ||
API_UNAVAILABLE = 0x00010006, # GLFW could not find support for the requested API on the system. | ||
VERSION_UNAVAILABLE = 0x00010007, # The requested OpenGL or OpenGL ES version is not available. | ||
PLATFORM_ERROR = 0x00010008, # A platform-specific error occurred that does not match any of the more specific categories. | ||
FORMAT_UNAVAILABLE = 0x00010009, # The requested format is not supported or available. | ||
NO_WINDOW_CONTEXT = 0x0001000A # The specified window does not have an OpenGL or OpenGL ES context. | ||
) | ||
|
||
const FOCUSED = 0x00020001 | ||
const ICONIFIED = 0x00020002 | ||
const RESIZABLE = 0x00020003 | ||
const VISIBLE = 0x00020004 | ||
const DECORATED = 0x00020005 | ||
const AUTO_ICONIFY = 0x00020006 | ||
const FLOATING = 0x00020007 | ||
|
||
const RED_BITS = 0x00021001 | ||
const GREEN_BITS = 0x00021002 | ||
const BLUE_BITS = 0x00021003 | ||
const ALPHA_BITS = 0x00021004 | ||
const DEPTH_BITS = 0x00021005 | ||
const STENCIL_BITS = 0x00021006 | ||
const ACCUM_RED_BITS = 0x00021007 | ||
const ACCUM_GREEN_BITS = 0x00021008 | ||
const ACCUM_BLUE_BITS = 0x00021009 | ||
const ACCUM_ALPHA_BITS = 0x0002100A | ||
const AUX_BUFFERS = 0x0002100B | ||
const STEREO = 0x0002100C | ||
const SAMPLES = 0x0002100D | ||
const SRGB_CAPABLE = 0x0002100E | ||
const REFRESH_RATE = 0x0002100F | ||
const DOUBLEBUFFER = 0x00021010 | ||
|
||
const CLIENT_API = 0x00022001 | ||
const CONTEXT_VERSION_MAJOR = 0x00022002 | ||
const CONTEXT_VERSION_MINOR = 0x00022003 | ||
const CONTEXT_REVISION = 0x00022004 | ||
const CONTEXT_ROBUSTNESS = 0x00022005 | ||
const OPENGL_FORWARD_COMPAT = 0x00022006 | ||
const OPENGL_DEBUG_CONTEXT = 0x00022007 | ||
const OPENGL_PROFILE = 0x00022008 | ||
const CONTEXT_RELEASE_BEHAVIOR = 0x00022009 | ||
|
||
const OPENGL_API = 0x00030001 | ||
const OPENGL_ES_API = 0x00030002 | ||
|
||
const NO_ROBUSTNESS = 0 | ||
const NO_RESET_NOTIFICATION = 0x00031001 | ||
const LOSE_CONTEXT_ON_RESET = 0x00031002 | ||
|
||
const OPENGL_ANY_PROFILE = 0 | ||
const OPENGL_CORE_PROFILE = 0x00032001 | ||
const OPENGL_COMPAT_PROFILE = 0x00032002 | ||
|
||
const CURSOR = 0x00033001 | ||
const STICKY_KEYS = 0x00033002 | ||
const STICKY_MOUSE_BUTTONS = 0x00033003 | ||
|
||
const CURSOR_NORMAL = 0x00034001 | ||
const CURSOR_HIDDEN = 0x00034002 | ||
const CURSOR_DISABLED = 0x00034003 | ||
|
||
const ANY_RELEASE_BEHAVIOR = 0 | ||
const RELEASE_BEHAVIOR_FLUSH = 0x00035001 | ||
const RELEASE_BEHAVIOR_NONE = 0x00035002 | ||
|
||
# Standard cursor shapes | ||
const ARROW_CURSOR = 0x00036001 | ||
const IBEAM_CURSOR = 0x00036002 | ||
const CROSSHAIR_CURSOR = 0x00036003 | ||
const HAND_CURSOR = 0x00036004 | ||
const HRESIZE_CURSOR = 0x00036005 | ||
const VRESIZE_CURSOR = 0x00036006 | ||
|
||
const CONNECTED = 0x00040001 | ||
const DISCONNECTED = 0x00040002 | ||
|
||
const DONT_CARE = -1 | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,104 @@ | ||
#came from GLWindow/core.jl | ||
""" | ||
Returns the monitor resolution of the primary monitor. | ||
""" | ||
function primarymonitorresolution() | ||
props = MonitorProperties(GetPrimaryMonitor()) | ||
w,h = props.videomode.width, props.videomode.height | ||
# Vec(Int(w),Int(h)) | ||
Vector([Int(w),Int(h)]) | ||
end | ||
|
||
#Came from GLWindow.jl/screen.jl | ||
|
||
|
||
#question: Is this correct? | ||
""" | ||
Takes a Window and registers a list of callback functions. | ||
Returns a Dict{Symbol, Any}(name_of_callback => signal) | ||
""" | ||
function register_callbacks(window::Window, callbacks::Vector{Function}) | ||
tmp = map(callbacks) do f | ||
(Symbol(last(split(string(f),"."))), f(window)) | ||
end | ||
Dict{Symbol, Any}(tmp) | ||
end | ||
|
||
""" | ||
Takes half the resolution of the primary monitor. | ||
This should make for sensible defaults! | ||
""" | ||
function standard_screen_resolution() | ||
w, h = primarymonitorresolution() | ||
(div(w,2), div(h,2)) # half of total resolution seems like a good fit! | ||
end | ||
|
||
|
||
""" | ||
Tries to create sensible context hints! | ||
Taken from lessons learned at: | ||
[GLFW](http://www.glfw.org/docs/latest/window.html) | ||
""" | ||
function standard_context_hints(major, minor) | ||
# this is spaar...Modern OpenGL !!!! | ||
major < 3 && error("OpenGL major needs to be at least 3.0. Given: $major") | ||
# core profile is only supported for OpenGL 3.2+ (and a must for OSX, so | ||
# for the sake of homogenity, we try to default to it for everyone!) | ||
if (major > 3 || (major == 3 && minor >= 2 )) | ||
profile = OPENGL_CORE_PROFILE | ||
else | ||
profile = OPENGL_ANY_PROFILE | ||
end | ||
[ | ||
(CONTEXT_VERSION_MAJOR, major), | ||
(CONTEXT_VERSION_MINOR, minor), | ||
(OPENGL_FORWARD_COMPAT, Cint(1)), | ||
(OPENGL_PROFILE, profile) | ||
] | ||
end | ||
|
||
|
||
""" | ||
Standard window hints for creating a plain context without any multisampling | ||
or extra buffers beside the color buffer | ||
""" | ||
function standard_window_hints() | ||
[ | ||
(SAMPLES, 0), | ||
(DEPTH_BITS, 0), | ||
|
||
(ALPHA_BITS, 8), | ||
(RED_BITS, 8), | ||
(GREEN_BITS, 8), | ||
(BLUE_BITS, 8), | ||
|
||
(STENCIL_BITS, 0), | ||
(AUX_BUFFERS, 0) | ||
] | ||
end | ||
|
||
#question: what is this exactly? | ||
full_screen_usage_message() = """ | ||
Keyword arg fullscreen accepts: | ||
Integer: The number of the Monitor to Select | ||
Bool: if true, primary monitor gets fullscreen, false no fullscren (default) | ||
GLFW.Monitor: Fullscreens on the passed monitor | ||
""" | ||
|
||
function poll_glfw() | ||
PollEvents() | ||
end | ||
|
||
#Came from: GLWindow/events.jl | ||
function to_arrow_symbol(button_set) | ||
for b in button_set | ||
KEY_RIGHT == b && return :right | ||
KEY_LEFT == b && return :left | ||
KEY_DOWN == b && return :down | ||
KEY_UP == b && return :up | ||
end | ||
return :nothing | ||
end | ||
|
||
# this came from GLWindow/screen.jl | ||
|
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Remove this new line.