reflexion 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/ChangeLog +8 -0
- data/README +4 -0
- data/Rakefile +70 -0
- data/VERSION +1 -0
- data/examples/hello/Rakefile +41 -0
- data/examples/hello/main.cpp +18 -0
- data/examples/ruby/app.rb +13 -0
- data/examples/ruby/checker.rb +41 -0
- data/examples/ruby/fps.rb +49 -0
- data/examples/ruby/hello.rb +38 -0
- data/examples/ruby/key.rb +44 -0
- data/examples/ruby/shapes.rb +124 -0
- data/examples/ruby/text.rb +35 -0
- data/ext/reflex/application.cpp +151 -0
- data/ext/reflex/extconf.rb +57 -0
- data/ext/reflex/key.cpp +128 -0
- data/ext/reflex/native.cpp +22 -0
- data/ext/reflex/points.cpp +160 -0
- data/ext/reflex/reflex.cpp +83 -0
- data/ext/reflex/reflex.h +39 -0
- data/ext/reflex/window.cpp +357 -0
- data/include/reflex/application.h +50 -0
- data/include/reflex/defs.h +258 -0
- data/include/reflex/helpers.h +32 -0
- data/include/reflex/reflex.h +26 -0
- data/include/reflex/ruby/application.h +39 -0
- data/include/reflex/ruby/key.h +39 -0
- data/include/reflex/ruby/points.h +39 -0
- data/include/reflex/ruby/reflex.h +21 -0
- data/include/reflex/ruby/window.h +39 -0
- data/include/reflex/ruby.h +14 -0
- data/include/reflex/window.h +79 -0
- data/include/reflex.h +13 -0
- data/lib/reflex/application.rb +25 -0
- data/lib/reflex/autoinit.rb +11 -0
- data/lib/reflex/bounds.rb +133 -0
- data/lib/reflex/helpers.rb +52 -0
- data/lib/reflex/module.rb +30 -0
- data/lib/reflex/point.rb +69 -0
- data/lib/reflex/reflex.rb +21 -0
- data/lib/reflex/window.rb +65 -0
- data/lib/reflex.rb +11 -0
- data/reflex.gemspec +57 -0
- data/src/cocoa/application.mm +90 -0
- data/src/cocoa/applicationdata.h +51 -0
- data/src/cocoa/cocoaapplication.h +19 -0
- data/src/cocoa/cocoaapplication.mm +180 -0
- data/src/cocoa/cocoawindow.h +44 -0
- data/src/cocoa/cocoawindow.mm +171 -0
- data/src/cocoa/defs.h +34 -0
- data/src/cocoa/defs.mm +84 -0
- data/src/cocoa/openglview.h +17 -0
- data/src/cocoa/openglview.mm +186 -0
- data/src/cocoa/reflex.mm +68 -0
- data/src/cocoa/window.mm +118 -0
- data/src/cocoa/windowdata.h +51 -0
- data/src/defs.cpp +47 -0
- data/src/win32/defs.cpp +150 -0
- data/src/win32/opengl.cpp +95 -0
- data/src/win32/opengl.h +50 -0
- data/src/win32/reflex.cpp +65 -0
- data/src/win32/window.cpp +480 -0
- data/src/window.cpp +60 -0
- data/support.rb +56 -0
- data/task/ext.rake +42 -0
- data/task/gem.rake +33 -0
- data/task/git.rake +22 -0
- data/task/lib.rake +54 -0
- data/test/helpers.rb +15 -0
- data/test/test_bounds.rb +163 -0
- data/test/test_point.rb +81 -0
- data/test/test_reflex.rb +17 -0
- data/test/test_window.rb +39 -0
- metadata +173 -0
data/src/win32/defs.cpp
ADDED
@@ -0,0 +1,150 @@
|
|
1
|
+
#include "reflex/defs.h"
|
2
|
+
|
3
|
+
|
4
|
+
namespace Reflex
|
5
|
+
{
|
6
|
+
|
7
|
+
|
8
|
+
bool
|
9
|
+
get_key (String* ch, int* c, uint* m, int key)
|
10
|
+
{
|
11
|
+
if (!chars || !code || !modifiers)
|
12
|
+
return false;
|
13
|
+
|
14
|
+
switch (code)
|
15
|
+
{
|
16
|
+
case VK_CANCEL: *c = KEY_CANCEL; return true;
|
17
|
+
case VK_BACK: *c = KEY_BACKSPACE; return true;
|
18
|
+
case VK_TAB: *c = KEY_TAB; return true;
|
19
|
+
case VK_CLEAR: *c = KEY_CLEAR; return true;
|
20
|
+
case VK_RETURN: *c = KEY_RETURN; return true;
|
21
|
+
case VK_SHIFT: *c = KEY_SHIFT; return true;
|
22
|
+
case VK_CONTROL: *c = KEY_CONTROL; return true;
|
23
|
+
case VK_MENU: *c = KEY_ALT; return true;
|
24
|
+
case VK_PAUSE: *c = KEY_PAUSE; return true;
|
25
|
+
case VK_CAPITAL: *c = KEY_CAPSLOCK; return true;
|
26
|
+
case VK_KANA: *c = KEY_KANA; return true;
|
27
|
+
case VK_JUNJA: *c = KEY_JUNJA; return true;
|
28
|
+
case VK_FINAL: *c = KEY_FINAL; return true;
|
29
|
+
case VK_KANJI: *c = KEY_KANJI; return true;
|
30
|
+
case VK_ESCAPE: *c = KEY_ESCAPE; return true;
|
31
|
+
case VK_CONVERT: *c = KEY_CONVERT; return true;
|
32
|
+
case VK_NONCONVERT: *c = KEY_NONCONVERT; return true;
|
33
|
+
case VK_ACCEPT: *c = KEY_ACCEPT; return true;
|
34
|
+
case VK_MODECHANGE: *c = KEY_MODECHANGE; return true;
|
35
|
+
case VK_SPACE: *c = KEY_SPACE; return true;
|
36
|
+
case VK_PRIOR: *c = KEY_PAGEUP; return true;
|
37
|
+
case VK_NEXT: *c = KEY_PAGEDOWN; return true;
|
38
|
+
case VK_END: *c = KEY_END; return true;
|
39
|
+
case VK_HOME: *c = KEY_HOME; return true;
|
40
|
+
case VK_LEFT: *c = KEY_LEFT; return true;
|
41
|
+
case VK_UP: *c = KEY_UP; return true;
|
42
|
+
case VK_RIGHT: *c = KEY_RIGHT; return true;
|
43
|
+
case VK_DOWN: *c = KEY_DOWN; return true;
|
44
|
+
case VK_SELECT: *c = KEY_SELECT; return true;
|
45
|
+
case VK_PRINT: *c = KEY_PRINT; return true;
|
46
|
+
case VK_EXECUTE: *c = KEY_EXECUTE; return true;
|
47
|
+
case VK_PRINTSCREEN: *c = KEY_PRINTSCREEN; return true;
|
48
|
+
case VK_INSERT: *c = KEY_INSERT; return true;
|
49
|
+
case VK_DELETE: *c = KEY_DELETE; return true;
|
50
|
+
case VK_HELP: *c = KEY_HELP; return true;
|
51
|
+
case VK_LWIN: *c = KEY_LWIN; return true;
|
52
|
+
case VK_RWIN: *c = KEY_RWIN; return true;
|
53
|
+
case VK_APPS: *c = KEY_APPS; return true;
|
54
|
+
case VK_SLEEP: *c = KEY_SLEEP; return true;
|
55
|
+
case VK_NUMPAD0: *ch = "0"; *m = MOD_NUMPAD; return true;
|
56
|
+
case VK_NUMPAD1: *ch = "1"; *m = MOD_NUMPAD; return true;
|
57
|
+
case VK_NUMPAD2: *ch = "2"; *m = MOD_NUMPAD; return true;
|
58
|
+
case VK_NUMPAD3: *ch = "3"; *m = MOD_NUMPAD; return true;
|
59
|
+
case VK_NUMPAD4: *ch = "4"; *m = MOD_NUMPAD; return true;
|
60
|
+
case VK_NUMPAD5: *ch = "5"; *m = MOD_NUMPAD; return true;
|
61
|
+
case VK_NUMPAD6: *ch = "6"; *m = MOD_NUMPAD; return true;
|
62
|
+
case VK_NUMPAD7: *ch = "7"; *m = MOD_NUMPAD; return true;
|
63
|
+
case VK_NUMPAD8: *ch = "8"; *m = MOD_NUMPAD; return true;
|
64
|
+
case VK_NUMPAD9: *ch = "9"; *m = MOD_NUMPAD; return true;
|
65
|
+
case VK_MULTIPLY: *ch = "*"; *m = MOD_NUMPAD; return true;
|
66
|
+
case VK_ADD: *ch = "+"; *m = MOD_NUMPAD; return true;
|
67
|
+
case VK_SEPARATOR: *ch = ":"; *m = MOD_NUMPAD; return true;
|
68
|
+
case VK_SUBTRACT: *ch = "-"; *m = MOD_NUMPAD; return true;
|
69
|
+
case VK_DECIMAL: *ch = "."; *m = MOD_NUMPAD; return true;
|
70
|
+
case VK_DEVICE: *ch = "/"; *m = MOD_NUMPAD; return true;
|
71
|
+
case VK_F1: *c = KEY_F1; *m = MOD_FUNCTION; return true;
|
72
|
+
case VK_F2: *c = KEY_F2; *m = MOD_FUNCTION; return true;
|
73
|
+
case VK_F3: *c = KEY_F3; *m = MOD_FUNCTION; return true;
|
74
|
+
case VK_F4: *c = KEY_F4; *m = MOD_FUNCTION; return true;
|
75
|
+
case VK_F5: *c = KEY_F5; *m = MOD_FUNCTION; return true;
|
76
|
+
case VK_F6: *c = KEY_F6; *m = MOD_FUNCTION; return true;
|
77
|
+
case VK_F7: *c = KEY_F7; *m = MOD_FUNCTION; return true;
|
78
|
+
case VK_F8: *c = KEY_F8; *m = MOD_FUNCTION; return true;
|
79
|
+
case VK_F9: *c = KEY_F9; *m = MOD_FUNCTION; return true;
|
80
|
+
case VK_F10: *c = KEY_F10; *m = MOD_FUNCTION; return true;
|
81
|
+
case VK_F11: *c = KEY_F11; *m = MOD_FUNCTION; return true;
|
82
|
+
case VK_F12: *c = KEY_F12; *m = MOD_FUNCTION; return true;
|
83
|
+
case VK_F13: *c = KEY_F13; *m = MOD_FUNCTION; return true;
|
84
|
+
case VK_F14: *c = KEY_F14; *m = MOD_FUNCTION; return true;
|
85
|
+
case VK_F15: *c = KEY_F15; *m = MOD_FUNCTION; return true;
|
86
|
+
case VK_F16: *c = KEY_F16; *m = MOD_FUNCTION; return true;
|
87
|
+
case VK_F17: *c = KEY_F17; *m = MOD_FUNCTION; return true;
|
88
|
+
case VK_F18: *c = KEY_F18; *m = MOD_FUNCTION; return true;
|
89
|
+
case VK_F19: *c = KEY_F19; *m = MOD_FUNCTION; return true;
|
90
|
+
case VK_F20: *c = KEY_F20; *m = MOD_FUNCTION; return true;
|
91
|
+
case VK_F21: *c = KEY_F21; *m = MOD_FUNCTION; return true;
|
92
|
+
case VK_F22: *c = KEY_F22; *m = MOD_FUNCTION; return true;
|
93
|
+
case VK_F23: *c = KEY_F23; *m = MOD_FUNCTION; return true;
|
94
|
+
case VK_F24: *c = KEY_F24; *m = MOD_FUNCTION; return true;
|
95
|
+
case VK_NUMLOCK: *c = KEY_NUMLOCK; return true;
|
96
|
+
case VK_SCROLL: *c = KEY_SCROLLLOCK; return true;
|
97
|
+
case VK_LSHIFT: *c = KEY_LSHIFT; return true;
|
98
|
+
case VK_RSHIFT: *c = KEY_RSHIFT; return true;
|
99
|
+
case VK_LCONTROL: *c = KEY_LCONTROL; return true;
|
100
|
+
case VK_RCONTROL: *c = KEY_RCONTROL; return true;
|
101
|
+
case VK_LMENU: *c = KEY_LALT; return true;
|
102
|
+
case VK_RMENU: *c = KEY_RALT; return true;
|
103
|
+
//case VK_OEM_1: *ch = ","; return true;
|
104
|
+
//case VK_OEM_PLUS: *ch = "},"; return true;
|
105
|
+
//case VK_OEM_COMMA: *ch = ","; return true;
|
106
|
+
//case VK_OEM_MINUS: *ch = "-"; return true;
|
107
|
+
//case VK_OEM_PERIOD: *ch = "."; return true;
|
108
|
+
//case VK_OEM_2: *ch = "/"; return true;
|
109
|
+
//case VK_OEM_3: *ch = "@"; return true;
|
110
|
+
//case VK_OEM_4: *ch = "["; return true;
|
111
|
+
//case VK_OEM_5: *ch = "\\"; return true;
|
112
|
+
//case VK_OEM_6: *ch = "]"; return true;
|
113
|
+
//case VK_OEM_7: *ch = "^"; return true;
|
114
|
+
//case VK_OEM_8: *c = KEY_OEM_8; return true;
|
115
|
+
//case VK_OEM_AX: *c = KEY_KEY_OEM_AX; return true;
|
116
|
+
//case VK_OEM_102: *ch = "\\"; return true;
|
117
|
+
//case VK_ICO_HELP: *c = KEY_ICO_HELP; return true;
|
118
|
+
//case VK_ICO_OO: *c = KEY_ICO_OO; return true;
|
119
|
+
//case VK_PROCESSKEY: *c = KEY_PROCESSKEY; return true;
|
120
|
+
//case VK_ICO_CLEAR: *c = KEY_ICO_CLEAR; return true;
|
121
|
+
//case VK_PACKET: *c = KEY_PACKET; return true;
|
122
|
+
//case VK_OEM_RESET: *c = KEY_OEM_RESET; return true;
|
123
|
+
//case VK_OEM_JUMP: *c = KEY_OEM_JUMP; return true;
|
124
|
+
//case VK_OEM_PA1: *c = KEY_OEM_PA1; return true;
|
125
|
+
//case VK_OEM_PA2: *c = KEY_OEM_PA2; return true;
|
126
|
+
//case VK_OEM_PA3: *c = KEY_OEM_PA3; return true;
|
127
|
+
//case VK_OEM_WSCTRL: *c = KEY_OEM_WSCTRL; return true;
|
128
|
+
//case VK_OEM_CUSEL: *c = KEY_OEM_CUSEL; return true;
|
129
|
+
//case VK_OEM_ATTN: *c = KEY_OEM_ATTN; return true;
|
130
|
+
//case VK_OEM_FINISH: *c = KEY_OEM_FINISH; return true;
|
131
|
+
//case VK_OEM_COPY: *c = KEY_OEM_COPY; return true;
|
132
|
+
//case VK_OEM_AUTO: *c = KEY_OEM_AUTO; return true;
|
133
|
+
//case VK_OEM_ENLW: *c = KEY_OEM_ENLW; return true;
|
134
|
+
//case VK_OEM_BACKTAB: *c = KEY_OEM_BACKTAB; return true;
|
135
|
+
//case VK_ATTN: *c = KEY_ATTN; return true;
|
136
|
+
//case VK_CRSEL: *c = KEY_CRSEL; return true;
|
137
|
+
//case VK_EXSEL: *c = KEY_EXSEL; return true;
|
138
|
+
//case VK_EREOF: *c = KEY_EREOF; return true;
|
139
|
+
//case VK_PLAY: *c = KEY_PLAY; return true;
|
140
|
+
//case VK_ZOOM: *c = KEY_ZOOM; return true;
|
141
|
+
//case VK_NONAME: *c = KEY_NONAME; return true;
|
142
|
+
//case VK_PA1: *c = KEY_PA1; return true;
|
143
|
+
//case VK_OEM_CLEAR: *c = KEY_OEM_CLEAR; return true;
|
144
|
+
}
|
145
|
+
|
146
|
+
return false;
|
147
|
+
}
|
148
|
+
|
149
|
+
|
150
|
+
}// Reflex
|
@@ -0,0 +1,95 @@
|
|
1
|
+
#include "opengl.h"
|
2
|
+
|
3
|
+
|
4
|
+
namespace Reflex
|
5
|
+
{
|
6
|
+
|
7
|
+
|
8
|
+
OpenGL::OpenGL ()
|
9
|
+
: hwnd(NULL), hdc(NULL), hrc(NULL)
|
10
|
+
{
|
11
|
+
}
|
12
|
+
|
13
|
+
OpenGL::~OpenGL ()
|
14
|
+
{
|
15
|
+
fin();
|
16
|
+
}
|
17
|
+
|
18
|
+
bool
|
19
|
+
OpenGL::init (HWND hwnd_)
|
20
|
+
{
|
21
|
+
if (!hwnd_ || *this) return false;
|
22
|
+
|
23
|
+
hwnd = hwnd_;
|
24
|
+
hdc = GetDC(hwnd);
|
25
|
+
if (!hdc) return false;
|
26
|
+
|
27
|
+
static const PIXELFORMATDESCRIPTOR PFD =
|
28
|
+
{
|
29
|
+
sizeof(PIXELFORMATDESCRIPTOR), 1,
|
30
|
+
PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER,
|
31
|
+
PFD_TYPE_RGBA, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0,
|
32
|
+
PFD_MAIN_PLANE, 0, 0, 0, 0
|
33
|
+
};
|
34
|
+
|
35
|
+
int pf = ChoosePixelFormat(hdc, &PFD);
|
36
|
+
if (pf == 0) return false;
|
37
|
+
|
38
|
+
if (!SetPixelFormat(hdc, pf, &PFD))
|
39
|
+
return false;
|
40
|
+
|
41
|
+
hrc = wglCreateContext(hdc);
|
42
|
+
if (!hrc) return false;
|
43
|
+
|
44
|
+
return make_current();
|
45
|
+
}
|
46
|
+
|
47
|
+
bool
|
48
|
+
OpenGL::fin ()
|
49
|
+
{
|
50
|
+
if (!*this) return false;
|
51
|
+
|
52
|
+
if (hrc)
|
53
|
+
{
|
54
|
+
wglMakeCurrent(NULL, NULL);
|
55
|
+
wglDeleteContext(hrc);
|
56
|
+
hrc = NULL;
|
57
|
+
}
|
58
|
+
|
59
|
+
if (hdc)
|
60
|
+
{
|
61
|
+
ReleaseDC(hwnd, hdc);
|
62
|
+
hdc = NULL;
|
63
|
+
}
|
64
|
+
|
65
|
+
hwnd = NULL;
|
66
|
+
return true;
|
67
|
+
}
|
68
|
+
|
69
|
+
bool
|
70
|
+
OpenGL::make_current ()
|
71
|
+
{
|
72
|
+
if (!*this) return false;
|
73
|
+
return wglMakeCurrent(hdc, hrc) != FALSE;
|
74
|
+
}
|
75
|
+
|
76
|
+
bool
|
77
|
+
OpenGL::swap_buffers ()
|
78
|
+
{
|
79
|
+
if (!*this) return false;
|
80
|
+
return SwapBuffers(hdc) != FALSE;
|
81
|
+
}
|
82
|
+
|
83
|
+
OpenGL::operator bool () const
|
84
|
+
{
|
85
|
+
return hwnd && hdc && hrc;
|
86
|
+
}
|
87
|
+
|
88
|
+
bool
|
89
|
+
OpenGL::operator ! () const
|
90
|
+
{
|
91
|
+
return !operator bool();
|
92
|
+
}
|
93
|
+
|
94
|
+
|
95
|
+
}// Reflex
|
data/src/win32/opengl.h
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
// -*- c++ -*-
|
2
|
+
#pragma once
|
3
|
+
#ifndef __REFLEX_WIN32_OPENGL_H__
|
4
|
+
#define __REFLEX_WIN32_OPENGL_H__
|
5
|
+
|
6
|
+
|
7
|
+
#include <windows.h>
|
8
|
+
#include <rays/opengl.h>
|
9
|
+
|
10
|
+
|
11
|
+
namespace Reflex
|
12
|
+
{
|
13
|
+
|
14
|
+
|
15
|
+
class OpenGL
|
16
|
+
{
|
17
|
+
|
18
|
+
public:
|
19
|
+
|
20
|
+
OpenGL ();
|
21
|
+
|
22
|
+
~OpenGL ();
|
23
|
+
|
24
|
+
bool init (HWND hwnd);
|
25
|
+
|
26
|
+
bool fin ();
|
27
|
+
|
28
|
+
bool make_current ();
|
29
|
+
|
30
|
+
bool swap_buffers ();
|
31
|
+
|
32
|
+
operator bool () const;
|
33
|
+
|
34
|
+
bool operator ! () const;
|
35
|
+
|
36
|
+
private:
|
37
|
+
|
38
|
+
HWND hwnd;
|
39
|
+
|
40
|
+
HDC hdc;
|
41
|
+
|
42
|
+
HGLRC hrc;
|
43
|
+
|
44
|
+
};// OpenGL
|
45
|
+
|
46
|
+
|
47
|
+
}// Reflex
|
48
|
+
|
49
|
+
|
50
|
+
#endif//EOH
|
@@ -0,0 +1,65 @@
|
|
1
|
+
#include "reflex/reflex.h"
|
2
|
+
|
3
|
+
|
4
|
+
#include <windows.h>
|
5
|
+
|
6
|
+
|
7
|
+
namespace Reflex
|
8
|
+
{
|
9
|
+
|
10
|
+
|
11
|
+
namespace global
|
12
|
+
{
|
13
|
+
|
14
|
+
|
15
|
+
static bool initialized = false, running = false;
|
16
|
+
|
17
|
+
|
18
|
+
}// global
|
19
|
+
|
20
|
+
|
21
|
+
bool
|
22
|
+
init ()
|
23
|
+
{
|
24
|
+
if (global::initialized) return false;
|
25
|
+
global::initialized = true;
|
26
|
+
|
27
|
+
return true;
|
28
|
+
}
|
29
|
+
|
30
|
+
bool
|
31
|
+
fin ()
|
32
|
+
{
|
33
|
+
if (!global::initialized) return false;
|
34
|
+
global::initialized = false;
|
35
|
+
|
36
|
+
return true;
|
37
|
+
}
|
38
|
+
|
39
|
+
bool
|
40
|
+
run ()
|
41
|
+
{
|
42
|
+
if (!global::initialized || global::running) return false;
|
43
|
+
global::running = true;
|
44
|
+
|
45
|
+
MSG msg;
|
46
|
+
while (GetMessage(&msg, NULL, 0, 0))
|
47
|
+
{
|
48
|
+
TranslateMessage(&msg);
|
49
|
+
DispatchMessage(&msg);
|
50
|
+
}
|
51
|
+
|
52
|
+
return msg.wParam == 0;
|
53
|
+
}
|
54
|
+
|
55
|
+
bool
|
56
|
+
quit ()
|
57
|
+
{
|
58
|
+
if (!global::initialized || !global::running) return false;
|
59
|
+
|
60
|
+
PostQuitMessage(0);
|
61
|
+
return true;
|
62
|
+
}
|
63
|
+
|
64
|
+
|
65
|
+
}// Reflex
|