reflexion 0.1.22 → 0.1.23
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.
- checksums.yaml +4 -4
- data/.doc/ext/reflex/event.cpp +9 -1
- data/.doc/ext/reflex/key_event.cpp +3 -3
- data/.doc/ext/reflex/native.cpp +2 -0
- data/.doc/ext/reflex/pointer.cpp +158 -0
- data/.doc/ext/reflex/pointer_event.cpp +29 -88
- data/.doc/ext/reflex/selector.cpp +8 -0
- data/.doc/ext/reflex/view.cpp +57 -0
- data/.doc/ext/reflex/window.cpp +24 -0
- data/VERSION +1 -1
- data/ext/reflex/event.cpp +11 -2
- data/ext/reflex/key_event.cpp +3 -3
- data/ext/reflex/native.cpp +2 -0
- data/ext/reflex/pointer.cpp +170 -0
- data/ext/reflex/pointer_event.cpp +29 -94
- data/ext/reflex/selector.cpp +9 -0
- data/ext/reflex/view.cpp +67 -3
- data/ext/reflex/window.cpp +30 -3
- data/include/reflex/defs.h +0 -18
- data/include/reflex/event.h +26 -27
- data/include/reflex/pointer.h +107 -0
- data/include/reflex/ruby/pointer.h +41 -0
- data/include/reflex/ruby/view.h +9 -0
- data/include/reflex/ruby/window.h +9 -0
- data/include/reflex/selector.h +1 -1
- data/include/reflex/view.h +6 -4
- data/include/reflex/window.h +10 -8
- data/lib/reflex/key_event.rb +1 -1
- data/lib/reflex/pointer.rb +107 -0
- data/lib/reflex/pointer_event.rb +16 -54
- data/lib/reflex.rb +1 -0
- data/reflex.gemspec +5 -5
- data/src/event.cpp +189 -37
- data/src/event.h +32 -0
- data/src/ios/event.h +15 -3
- data/src/ios/event.mm +126 -11
- data/src/ios/view_controller.mm +49 -21
- data/src/osx/event.h +6 -3
- data/src/osx/event.mm +40 -22
- data/src/osx/native_window.mm +79 -16
- data/src/pointer.cpp +203 -0
- data/src/pointer.h +26 -0
- data/src/selector.cpp +1 -1
- data/src/view.cpp +83 -72
- data/src/view.h +0 -4
- data/src/window.cpp +321 -97
- data/src/window.h +22 -3
- data/test/test_event.rb +16 -2
- data/test/test_pointer.rb +149 -0
- data/test/test_pointer_event.rb +70 -104
- data/test/test_selector.rb +7 -0
- data/test/test_view.rb +38 -11
- data/test/test_window.rb +27 -25
- metadata +46 -35
@@ -0,0 +1,170 @@
|
|
1
|
+
#include "reflex/ruby/pointer.h"
|
2
|
+
|
3
|
+
|
4
|
+
#include <rays/ruby/point.h>
|
5
|
+
#include "defs.h"
|
6
|
+
|
7
|
+
|
8
|
+
RUCY_DEFINE_VALUE_FROM_TO(Reflex::Pointer)
|
9
|
+
|
10
|
+
#define THIS to<Reflex::Pointer*>(self)
|
11
|
+
|
12
|
+
#define CHECK RUCY_CHECK_OBJ(Reflex::Pointer, self)
|
13
|
+
|
14
|
+
|
15
|
+
static
|
16
|
+
RUCY_DEF_ALLOC(alloc, klass)
|
17
|
+
{
|
18
|
+
return new_type<Reflex::Pointer>(klass);
|
19
|
+
}
|
20
|
+
RUCY_END
|
21
|
+
|
22
|
+
static
|
23
|
+
RUCY_DEF8(initialize,
|
24
|
+
id, type, action, position, modifiers, click_count, drag, time)
|
25
|
+
{
|
26
|
+
CHECK;
|
27
|
+
|
28
|
+
*THIS = Reflex::Pointer(
|
29
|
+
to<Reflex::Pointer::ID>(id),
|
30
|
+
to<uint>(type),
|
31
|
+
(Reflex::Pointer::Action) to<int>(action),
|
32
|
+
to<Rays::Point>(position),
|
33
|
+
to<uint>(modifiers),
|
34
|
+
to<uint>(click_count),
|
35
|
+
to<bool>(drag),
|
36
|
+
to<double>(time));
|
37
|
+
return self;
|
38
|
+
}
|
39
|
+
RUCY_END
|
40
|
+
|
41
|
+
static
|
42
|
+
RUCY_DEF1(initialize_copy, obj)
|
43
|
+
{
|
44
|
+
CHECK;
|
45
|
+
*THIS = to<Reflex::Pointer&>(obj);
|
46
|
+
return self;
|
47
|
+
}
|
48
|
+
RUCY_END
|
49
|
+
|
50
|
+
static
|
51
|
+
RUCY_DEF0(get_id)
|
52
|
+
{
|
53
|
+
CHECK;
|
54
|
+
return value(THIS->id());
|
55
|
+
}
|
56
|
+
RUCY_END
|
57
|
+
|
58
|
+
static
|
59
|
+
RUCY_DEF0(get_type)
|
60
|
+
{
|
61
|
+
CHECK;
|
62
|
+
return value(THIS->type());
|
63
|
+
}
|
64
|
+
RUCY_END
|
65
|
+
|
66
|
+
static
|
67
|
+
RUCY_DEF0(get_action)
|
68
|
+
{
|
69
|
+
CHECK;
|
70
|
+
return value(THIS->action());
|
71
|
+
}
|
72
|
+
RUCY_END
|
73
|
+
|
74
|
+
static
|
75
|
+
RUCY_DEF0(get_position)
|
76
|
+
{
|
77
|
+
CHECK;
|
78
|
+
return value(THIS->position());
|
79
|
+
}
|
80
|
+
RUCY_END
|
81
|
+
|
82
|
+
static
|
83
|
+
RUCY_DEF0(get_modifiers)
|
84
|
+
{
|
85
|
+
CHECK;
|
86
|
+
return value(THIS->modifiers());
|
87
|
+
}
|
88
|
+
RUCY_END
|
89
|
+
|
90
|
+
static
|
91
|
+
RUCY_DEF0(get_click_count)
|
92
|
+
{
|
93
|
+
CHECK;
|
94
|
+
return value(THIS->click_count());
|
95
|
+
}
|
96
|
+
RUCY_END
|
97
|
+
|
98
|
+
static
|
99
|
+
RUCY_DEF0(is_drag)
|
100
|
+
{
|
101
|
+
CHECK;
|
102
|
+
return value(THIS->is_drag());
|
103
|
+
}
|
104
|
+
RUCY_END
|
105
|
+
|
106
|
+
static
|
107
|
+
RUCY_DEF0(get_time)
|
108
|
+
{
|
109
|
+
CHECK;
|
110
|
+
return value(THIS->time());
|
111
|
+
}
|
112
|
+
RUCY_END
|
113
|
+
|
114
|
+
static
|
115
|
+
RUCY_DEF0(get_prev)
|
116
|
+
{
|
117
|
+
CHECK;
|
118
|
+
return value(THIS->prev());
|
119
|
+
}
|
120
|
+
RUCY_END
|
121
|
+
|
122
|
+
|
123
|
+
static Class cPointer;
|
124
|
+
|
125
|
+
void
|
126
|
+
Init_pointer ()
|
127
|
+
{
|
128
|
+
Module mReflex = define_module("Reflex");
|
129
|
+
|
130
|
+
cPointer = mReflex.define_class("Pointer");
|
131
|
+
cPointer.define_alloc_func(alloc);
|
132
|
+
cPointer.define_private_method("initialize", initialize);
|
133
|
+
cPointer.define_private_method("initialize_copy", initialize_copy);
|
134
|
+
cPointer.define_method("id", get_id);
|
135
|
+
cPointer.define_private_method("get_type", get_type);
|
136
|
+
cPointer.define_private_method("get_action", get_action);
|
137
|
+
cPointer.define_method("position", get_position);
|
138
|
+
cPointer.define_method("modifiers", get_modifiers);
|
139
|
+
cPointer.define_method("click_count", get_click_count);
|
140
|
+
cPointer.define_method("drag?", is_drag);
|
141
|
+
cPointer.define_method("time", get_time);
|
142
|
+
cPointer.define_method("prev", get_prev);
|
143
|
+
cPointer.define_const("TYPE_NONE", Reflex::Pointer::TYPE_NONE);
|
144
|
+
cPointer.define_const("MOUSE", Reflex::Pointer::MOUSE);
|
145
|
+
cPointer.define_const("MOUSE_LEFT", Reflex::Pointer::MOUSE_LEFT);
|
146
|
+
cPointer.define_const("MOUSE_RIGHT", Reflex::Pointer::MOUSE_RIGHT);
|
147
|
+
cPointer.define_const("MOUSE_MIDDLE", Reflex::Pointer::MOUSE_MIDDLE);
|
148
|
+
cPointer.define_const("TOUCH", Reflex::Pointer::TOUCH);
|
149
|
+
cPointer.define_const("PEN", Reflex::Pointer::PEN);
|
150
|
+
cPointer.define_const("ACTION_NONE", Reflex::Pointer::ACTION_NONE);
|
151
|
+
cPointer.define_const("DOWN", Reflex::Pointer::DOWN);
|
152
|
+
cPointer.define_const("UP", Reflex::Pointer::UP);
|
153
|
+
cPointer.define_const("MOVE", Reflex::Pointer::MOVE);
|
154
|
+
cPointer.define_const("CANCEL", Reflex::Pointer::CANCEL);
|
155
|
+
cPointer.define_const("STAY", Reflex::Pointer::STAY);
|
156
|
+
}
|
157
|
+
|
158
|
+
|
159
|
+
namespace Reflex
|
160
|
+
{
|
161
|
+
|
162
|
+
|
163
|
+
Class
|
164
|
+
pointer_class ()
|
165
|
+
{
|
166
|
+
return cPointer;
|
167
|
+
}
|
168
|
+
|
169
|
+
|
170
|
+
}// Reflex
|
@@ -1,7 +1,9 @@
|
|
1
1
|
#include "reflex/ruby/event.h"
|
2
2
|
|
3
3
|
|
4
|
+
#include <vector>
|
4
5
|
#include <rays/ruby/point.h>
|
6
|
+
#include "reflex/ruby/pointer.h"
|
5
7
|
#include "defs.h"
|
6
8
|
|
7
9
|
|
@@ -20,23 +22,18 @@ RUCY_DEF_ALLOC(alloc, klass)
|
|
20
22
|
RUCY_END
|
21
23
|
|
22
24
|
static
|
23
|
-
|
25
|
+
RUCY_DEFN(initialize)
|
24
26
|
{
|
25
27
|
CHECK;
|
26
28
|
|
27
|
-
|
28
|
-
if (size <= 0 || Reflex::PointerEvent::MAX < size)
|
29
|
+
if (argc == 0)
|
29
30
|
argument_error(__FILE__, __LINE__);
|
30
31
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
THIS->count = to<uint>(count);
|
35
|
-
THIS->drag = to<bool>(drag);
|
36
|
-
THIS->size = (size_t) size;
|
32
|
+
std::vector<Reflex::Pointer> pointers;
|
33
|
+
for (size_t i = 0; i < argc; ++i)
|
34
|
+
pointers.emplace_back(to<Reflex::Pointer&>(argv[i]));
|
37
35
|
|
38
|
-
|
39
|
-
THIS->positions[i] = to<Rays::Point>(positions[i]);
|
36
|
+
*THIS = Reflex::PointerEvent(&pointers[0], pointers.size());
|
40
37
|
|
41
38
|
return rb_call_super(0, NULL);
|
42
39
|
}
|
@@ -51,99 +48,53 @@ RUCY_DEF1(initialize_copy, obj)
|
|
51
48
|
}
|
52
49
|
RUCY_END
|
53
50
|
|
54
|
-
static
|
55
|
-
RUCY_DEF0(get_type)
|
56
|
-
{
|
57
|
-
CHECK;
|
58
|
-
return value(THIS->type);
|
59
|
-
}
|
60
|
-
RUCY_END
|
61
|
-
|
62
|
-
static
|
63
|
-
RUCY_DEF0(get_pointer_type)
|
64
|
-
{
|
65
|
-
CHECK;
|
66
|
-
return value(THIS->pointer_type);
|
67
|
-
}
|
68
|
-
RUCY_END
|
69
|
-
|
70
51
|
static
|
71
52
|
RUCY_DEF0(get_size)
|
72
53
|
{
|
73
54
|
CHECK;
|
74
|
-
return value(THIS->size);
|
75
|
-
}
|
76
|
-
RUCY_END
|
77
|
-
|
78
|
-
static
|
79
|
-
RUCY_DEF0(get_modifiers)
|
80
|
-
{
|
81
|
-
CHECK;
|
82
|
-
return value(THIS->modifiers);
|
83
|
-
}
|
84
|
-
RUCY_END
|
85
|
-
|
86
|
-
static
|
87
|
-
RUCY_DEF0(get_count)
|
88
|
-
{
|
89
|
-
CHECK;
|
90
|
-
return value(THIS->count);
|
55
|
+
return value(THIS->size());
|
91
56
|
}
|
92
57
|
RUCY_END
|
93
58
|
|
94
59
|
static
|
95
|
-
RUCY_DEF0(
|
60
|
+
RUCY_DEF0(is_empty)
|
96
61
|
{
|
97
62
|
CHECK;
|
98
|
-
return value(THIS->
|
63
|
+
return value(THIS->empty());
|
99
64
|
}
|
100
65
|
RUCY_END
|
101
66
|
|
102
67
|
static
|
103
|
-
RUCY_DEF0(
|
68
|
+
RUCY_DEF0(is_captured)
|
104
69
|
{
|
105
70
|
CHECK;
|
106
|
-
return value(THIS->
|
71
|
+
return value(THIS->is_captured());
|
107
72
|
}
|
108
73
|
RUCY_END
|
109
74
|
|
110
75
|
static
|
111
|
-
|
112
|
-
{
|
113
|
-
CHECK;
|
114
|
-
return value(THIS->x);
|
115
|
-
}
|
116
|
-
RUCY_END
|
117
|
-
|
118
|
-
static
|
119
|
-
RUCY_DEF0(get_y)
|
76
|
+
RUCY_DEF1(get_at, index)
|
120
77
|
{
|
121
78
|
CHECK;
|
122
|
-
return value(THIS->y);
|
123
|
-
}
|
124
|
-
RUCY_END
|
125
79
|
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
check_arg_count(__FILE__, __LINE__, "PointerEvent#position", argc, 0, 1);
|
80
|
+
int size = (int) THIS->size();
|
81
|
+
int i = to<int>(index);
|
82
|
+
if (i < -size || size <= i)
|
83
|
+
return Qnil;
|
131
84
|
|
132
|
-
|
133
|
-
return value(THIS->position(index));
|
85
|
+
return value((*THIS)[i >= 0 ? i : i + size]);
|
134
86
|
}
|
135
87
|
RUCY_END
|
136
88
|
|
137
89
|
static
|
138
|
-
|
90
|
+
RUCY_DEF0(each)
|
139
91
|
{
|
140
92
|
CHECK;
|
141
93
|
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
return value((*THIS)[i]);
|
94
|
+
Value ret;
|
95
|
+
for (size_t i = 0, size = THIS->size(); i < size; ++i)
|
96
|
+
ret = rb_yield(value((*THIS)[i]));
|
97
|
+
return ret;
|
147
98
|
}
|
148
99
|
RUCY_END
|
149
100
|
|
@@ -159,27 +110,11 @@ Init_pointer_event ()
|
|
159
110
|
cPointerEvent.define_alloc_func(alloc);
|
160
111
|
cPointerEvent.define_private_method("initialize", initialize);
|
161
112
|
cPointerEvent.define_private_method("initialize_copy", initialize_copy);
|
162
|
-
cPointerEvent.define_method("
|
163
|
-
cPointerEvent.define_method("
|
164
|
-
cPointerEvent.define_method("
|
165
|
-
cPointerEvent.define_method("
|
166
|
-
cPointerEvent.define_method("
|
167
|
-
cPointerEvent.define_method("drag?", is_drag);
|
168
|
-
cPointerEvent.define_method("capture?", is_capture);
|
169
|
-
cPointerEvent.define_method("x", get_x);
|
170
|
-
cPointerEvent.define_method("y", get_y);
|
171
|
-
cPointerEvent.define_method("position", get_position);
|
172
|
-
cPointerEvent.define_method("[]", get_at);
|
173
|
-
cPointerEvent.define_const("TYPE_NONE", Reflex::PointerEvent::NONE);
|
174
|
-
cPointerEvent.define_const("TYPE_DOWN", Reflex::PointerEvent::DOWN);
|
175
|
-
cPointerEvent.define_const("TYPE_UP", Reflex::PointerEvent::UP);
|
176
|
-
cPointerEvent.define_const("TYPE_MOVE", Reflex::PointerEvent::MOVE);
|
177
|
-
cPointerEvent.define_const("POINTER_NONE", Reflex::POINTER_NONE);
|
178
|
-
cPointerEvent.define_const("POINTER_MOUSE_LEFT", Reflex::POINTER_MOUSE_LEFT);
|
179
|
-
cPointerEvent.define_const("POINTER_MOUSE_RIGHT", Reflex::POINTER_MOUSE_RIGHT);
|
180
|
-
cPointerEvent.define_const("POINTER_MOUSE_MIDDLE", Reflex::POINTER_MOUSE_MIDDLE);
|
181
|
-
cPointerEvent.define_const("POINTER_TOUCH", Reflex::POINTER_TOUCH);
|
182
|
-
cPointerEvent.define_const("POINTER_PEN", Reflex::POINTER_PEN);
|
113
|
+
cPointerEvent.define_method("size", get_size);
|
114
|
+
cPointerEvent.define_method("empty?", is_empty);
|
115
|
+
cPointerEvent.define_method("captured?", is_captured);
|
116
|
+
cPointerEvent.define_method("[]", get_at);
|
117
|
+
cPointerEvent.define_method("each", each);
|
183
118
|
}
|
184
119
|
|
185
120
|
|
data/ext/reflex/selector.cpp
CHANGED
@@ -90,6 +90,14 @@ RUCY_DEF0(each_tag)
|
|
90
90
|
}
|
91
91
|
RUCY_END
|
92
92
|
|
93
|
+
static
|
94
|
+
RUCY_DEF0(is_empty)
|
95
|
+
{
|
96
|
+
CHECK;
|
97
|
+
return value(C_THIS->empty());
|
98
|
+
}
|
99
|
+
RUCY_END
|
100
|
+
|
93
101
|
static
|
94
102
|
RUCY_DEF1(contains, selector)
|
95
103
|
{
|
@@ -124,6 +132,7 @@ Init_selector ()
|
|
124
132
|
cSelector.define_method("clear_tags", clear_tags);
|
125
133
|
cSelector.define_method("tag?", has_tag);
|
126
134
|
cSelector.define_method("each_tag", each_tag);
|
135
|
+
cSelector.define_method("empty?", is_empty);
|
127
136
|
cSelector.define_method("contains", contains);
|
128
137
|
cSelector.define_method("==", equal);
|
129
138
|
}
|
data/ext/reflex/view.cpp
CHANGED
@@ -130,6 +130,54 @@ RUCY_DEF0(update_layout)
|
|
130
130
|
}
|
131
131
|
RUCY_END
|
132
132
|
|
133
|
+
static
|
134
|
+
RUCY_DEF1(from_parent, point)
|
135
|
+
{
|
136
|
+
CHECK;
|
137
|
+
return value(THIS->from_parent(to<Rays::Point>(point)));
|
138
|
+
}
|
139
|
+
RUCY_END
|
140
|
+
|
141
|
+
static
|
142
|
+
RUCY_DEF1(to_parent, point)
|
143
|
+
{
|
144
|
+
CHECK;
|
145
|
+
return value(THIS->to_parent(to<Rays::Point>(point)));
|
146
|
+
}
|
147
|
+
RUCY_END
|
148
|
+
|
149
|
+
static
|
150
|
+
RUCY_DEF1(from_window, point)
|
151
|
+
{
|
152
|
+
CHECK;
|
153
|
+
return value(THIS->from_window(to<Rays::Point>(point)));
|
154
|
+
}
|
155
|
+
RUCY_END
|
156
|
+
|
157
|
+
static
|
158
|
+
RUCY_DEF1(to_window, point)
|
159
|
+
{
|
160
|
+
CHECK;
|
161
|
+
return value(THIS->to_window(to<Rays::Point>(point)));
|
162
|
+
}
|
163
|
+
RUCY_END
|
164
|
+
|
165
|
+
static
|
166
|
+
RUCY_DEF1(from_screen, point)
|
167
|
+
{
|
168
|
+
CHECK;
|
169
|
+
return value(THIS->from_screen(to<Rays::Point>(point)));
|
170
|
+
}
|
171
|
+
RUCY_END
|
172
|
+
|
173
|
+
static
|
174
|
+
RUCY_DEF1(to_screen, point)
|
175
|
+
{
|
176
|
+
CHECK;
|
177
|
+
return value(THIS->to_screen(to<Rays::Point>(point)));
|
178
|
+
}
|
179
|
+
RUCY_END
|
180
|
+
|
133
181
|
static
|
134
182
|
RUCY_DEF1(add_child, child)
|
135
183
|
{
|
@@ -1034,6 +1082,14 @@ RUCY_DEF1(on_pointer_move, event)
|
|
1034
1082
|
}
|
1035
1083
|
RUCY_END
|
1036
1084
|
|
1085
|
+
static
|
1086
|
+
RUCY_DEF1(on_pointer_cancel, event)
|
1087
|
+
{
|
1088
|
+
CHECK;
|
1089
|
+
CALL(on_pointer_cancel(to<Reflex::PointerEvent*>(event)));
|
1090
|
+
}
|
1091
|
+
RUCY_END
|
1092
|
+
|
1037
1093
|
static
|
1038
1094
|
RUCY_DEF1(on_wheel, event)
|
1039
1095
|
{
|
@@ -1102,6 +1158,13 @@ Init_view ()
|
|
1102
1158
|
cView.define_private_method("start_timer", start_timer);
|
1103
1159
|
cView.define_method("update_layout", update_layout);
|
1104
1160
|
|
1161
|
+
cView.define_method("from_parent", from_parent);
|
1162
|
+
cView.define_method( "to_parent", to_parent);
|
1163
|
+
cView.define_method("from_window", from_window);
|
1164
|
+
cView.define_method( "to_window", to_window);
|
1165
|
+
cView.define_method("from_screen", from_screen);
|
1166
|
+
cView.define_method( "to_screen", to_screen);
|
1167
|
+
|
1105
1168
|
cView.define_method("add_child", add_child);
|
1106
1169
|
cView.define_method("remove_child", remove_child);
|
1107
1170
|
cView.define_method("clear_children", clear_children);
|
@@ -1201,9 +1264,10 @@ Init_view ()
|
|
1201
1264
|
cView.define_method("on_key_down", on_key_down);
|
1202
1265
|
cView.define_method("on_key_up", on_key_up);
|
1203
1266
|
cView.define_method("on_pointer", on_pointer);
|
1204
|
-
cView.define_method("on_pointer_down",
|
1205
|
-
cView.define_method("on_pointer_up",
|
1206
|
-
cView.define_method("on_pointer_move",
|
1267
|
+
cView.define_method("on_pointer_down", on_pointer_down);
|
1268
|
+
cView.define_method("on_pointer_up", on_pointer_up);
|
1269
|
+
cView.define_method("on_pointer_move", on_pointer_move);
|
1270
|
+
cView.define_method("on_pointer_cancel", on_pointer_cancel);
|
1207
1271
|
cView.define_method("on_wheel", on_wheel);
|
1208
1272
|
cView.define_method("on_capture", on_capture);
|
1209
1273
|
cView.define_method("on_timer", on_timer);
|
data/ext/reflex/window.cpp
CHANGED
@@ -59,6 +59,22 @@ RUCY_DEF0(redraw)
|
|
59
59
|
}
|
60
60
|
RUCY_END
|
61
61
|
|
62
|
+
static
|
63
|
+
RUCY_DEF1(from_screen, point)
|
64
|
+
{
|
65
|
+
CHECK;
|
66
|
+
return value(THIS->from_screen(to<Rays::Point>(point)));
|
67
|
+
}
|
68
|
+
RUCY_END
|
69
|
+
|
70
|
+
static
|
71
|
+
RUCY_DEF1(to_screen, point)
|
72
|
+
{
|
73
|
+
CHECK;
|
74
|
+
return value(THIS->to_screen(to<Rays::Point>(point)));
|
75
|
+
}
|
76
|
+
RUCY_END
|
77
|
+
|
62
78
|
static
|
63
79
|
RUCY_DEF1(set_title, title)
|
64
80
|
{
|
@@ -258,6 +274,14 @@ RUCY_DEF1(on_pointer_move, event)
|
|
258
274
|
}
|
259
275
|
RUCY_END
|
260
276
|
|
277
|
+
static
|
278
|
+
RUCY_DEF1(on_pointer_cancel, event)
|
279
|
+
{
|
280
|
+
CHECK;
|
281
|
+
CALL(on_pointer_cancel(to<Reflex::PointerEvent*>(event)));
|
282
|
+
}
|
283
|
+
RUCY_END
|
284
|
+
|
261
285
|
static
|
262
286
|
RUCY_DEF1(on_wheel, event)
|
263
287
|
{
|
@@ -280,6 +304,8 @@ Init_window ()
|
|
280
304
|
cWindow.define_method("hide", hide);
|
281
305
|
cWindow.define_method("close", close);
|
282
306
|
cWindow.define_method("redraw", redraw);
|
307
|
+
cWindow.define_method("from_screen", from_screen);
|
308
|
+
cWindow.define_method( "to_screen", to_screen);
|
283
309
|
cWindow.define_method("title=", set_title);
|
284
310
|
cWindow.define_method("title", get_title);
|
285
311
|
cWindow.define_method("frame=", set_frame);
|
@@ -301,9 +327,10 @@ Init_window ()
|
|
301
327
|
cWindow.define_method("on_key_down", on_key_down);
|
302
328
|
cWindow.define_method("on_key_up", on_key_up);
|
303
329
|
cWindow.define_method("on_pointer", on_pointer);
|
304
|
-
cWindow.define_method("on_pointer_down",
|
305
|
-
cWindow.define_method("on_pointer_up",
|
306
|
-
cWindow.define_method("on_pointer_move",
|
330
|
+
cWindow.define_method("on_pointer_down", on_pointer_down);
|
331
|
+
cWindow.define_method("on_pointer_up", on_pointer_up);
|
332
|
+
cWindow.define_method("on_pointer_move", on_pointer_move);
|
333
|
+
cWindow.define_method("on_pointer_cancel", on_pointer_cancel);
|
307
334
|
cWindow.define_method("on_wheel", on_wheel);
|
308
335
|
}
|
309
336
|
|
data/include/reflex/defs.h
CHANGED
@@ -252,24 +252,6 @@ namespace Reflex
|
|
252
252
|
};// KeyCode
|
253
253
|
|
254
254
|
|
255
|
-
enum PointerType
|
256
|
-
{
|
257
|
-
|
258
|
-
POINTER_NONE = 0,
|
259
|
-
|
260
|
-
POINTER_MOUSE_LEFT = 0x1 << 0,
|
261
|
-
|
262
|
-
POINTER_MOUSE_RIGHT = 0x1 << 1,
|
263
|
-
|
264
|
-
POINTER_MOUSE_MIDDLE = 0x1 << 2,
|
265
|
-
|
266
|
-
POINTER_TOUCH = 0x1 << 3,
|
267
|
-
|
268
|
-
POINTER_PEN = 0x1 << 4,
|
269
|
-
|
270
|
-
};// PointType
|
271
|
-
|
272
|
-
|
273
255
|
enum Modifier
|
274
256
|
{
|
275
257
|
|
data/include/reflex/event.h
CHANGED
@@ -4,10 +4,12 @@
|
|
4
4
|
#define __REFLEX_EVENT_H__
|
5
5
|
|
6
6
|
|
7
|
+
#include <xot/pimpl.h>
|
7
8
|
#include <rays/point.h>
|
8
9
|
#include <rays/bounds.h>
|
9
10
|
#include <rays/painter.h>
|
10
11
|
#include <reflex/defs.h>
|
12
|
+
#include <reflex/pointer.h>
|
11
13
|
#include <reflex/timer.h>
|
12
14
|
|
13
15
|
|
@@ -30,10 +32,14 @@ namespace Reflex
|
|
30
32
|
|
31
33
|
bool is_blocked () const;
|
32
34
|
|
35
|
+
double time () const;
|
36
|
+
|
33
37
|
private:
|
34
38
|
|
35
39
|
bool blocked;
|
36
40
|
|
41
|
+
double time_;
|
42
|
+
|
37
43
|
};// Event
|
38
44
|
|
39
45
|
|
@@ -161,7 +167,7 @@ namespace Reflex
|
|
161
167
|
|
162
168
|
int repeat;
|
163
169
|
|
164
|
-
bool
|
170
|
+
bool captured;
|
165
171
|
|
166
172
|
KeyEvent ();
|
167
173
|
|
@@ -172,47 +178,40 @@ namespace Reflex
|
|
172
178
|
};// KeyEvent
|
173
179
|
|
174
180
|
|
175
|
-
|
181
|
+
class PointerEvent : public Event
|
176
182
|
{
|
177
183
|
|
178
|
-
|
179
|
-
|
180
|
-
enum {MAX = 10};
|
181
|
-
|
182
|
-
Type type;
|
184
|
+
typedef PointerEvent This;
|
183
185
|
|
184
|
-
|
186
|
+
public:
|
185
187
|
|
186
|
-
|
188
|
+
PointerEvent (bool captured = false);
|
187
189
|
|
188
|
-
|
190
|
+
PointerEvent (
|
191
|
+
const Pointer& pointer,
|
192
|
+
bool captured = false);
|
189
193
|
|
190
|
-
|
194
|
+
PointerEvent (
|
195
|
+
const Pointer* pointers, size_t size,
|
196
|
+
bool captured = false);
|
191
197
|
|
192
|
-
|
193
|
-
{
|
194
|
-
struct {coord x, y, z;};
|
198
|
+
PointerEvent (const This& obj);
|
195
199
|
|
196
|
-
|
197
|
-
};
|
200
|
+
PointerEvent& operator = (const This& obj);
|
198
201
|
|
199
|
-
|
202
|
+
~PointerEvent ();
|
200
203
|
|
201
|
-
|
202
|
-
Type type, uint pointer_type, coord x, coord y,
|
203
|
-
uint modifiers = 0, uint count = 1, bool drag = false);
|
204
|
+
size_t size () const;
|
204
205
|
|
205
|
-
|
206
|
-
Type type, uint pointer_type, const Point* positions, size_t size,
|
207
|
-
uint modifiers = 0, uint count = 1, bool drag = false);
|
206
|
+
bool empty () const;
|
208
207
|
|
209
|
-
|
208
|
+
bool is_captured () const;
|
210
209
|
|
211
|
-
|
210
|
+
const Pointer& operator [] (size_t index) const;
|
212
211
|
|
213
|
-
|
212
|
+
struct Data;
|
214
213
|
|
215
|
-
|
214
|
+
Xot::PImpl<Data> self;
|
216
215
|
|
217
216
|
};// PointerEvent
|
218
217
|
|