reflexion 0.5.3 → 0.7.0

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.
Files changed (309) hide show
  1. checksums.yaml +4 -4
  2. data/.doc/ext/reflex/application.cpp +56 -7
  3. data/.doc/ext/reflex/capture_event.cpp +1 -1
  4. data/.doc/ext/reflex/chase_constraint.cpp +84 -0
  5. data/.doc/ext/reflex/clipboard.cpp +65 -0
  6. data/.doc/ext/reflex/color_event.cpp +76 -0
  7. data/.doc/ext/reflex/color_picker.cpp +113 -0
  8. data/.doc/ext/reflex/constraint.cpp +135 -0
  9. data/.doc/ext/reflex/contact_event.cpp +1 -1
  10. data/.doc/ext/reflex/control_change_event.cpp +1 -1
  11. data/.doc/ext/reflex/device.cpp +1 -1
  12. data/.doc/ext/reflex/device_event.cpp +1 -1
  13. data/.doc/ext/reflex/draw_event.cpp +1 -1
  14. data/.doc/ext/reflex/ellipse_shape.cpp +1 -1
  15. data/.doc/ext/reflex/event.cpp +1 -1
  16. data/.doc/ext/reflex/file_dialog.cpp +181 -0
  17. data/.doc/ext/reflex/file_event.cpp +103 -0
  18. data/.doc/ext/reflex/filter.cpp +1 -1
  19. data/.doc/ext/reflex/focus_event.cpp +1 -1
  20. data/.doc/ext/reflex/frame_event.cpp +1 -1
  21. data/.doc/ext/reflex/gamepad.cpp +48 -0
  22. data/.doc/ext/reflex/image_view.cpp +1 -1
  23. data/.doc/ext/reflex/key_event.cpp +1 -274
  24. data/.doc/ext/reflex/line_shape.cpp +1 -1
  25. data/.doc/ext/reflex/link_constraint.cpp +178 -0
  26. data/.doc/ext/reflex/menu.cpp +303 -0
  27. data/.doc/ext/reflex/midi.cpp +9 -2
  28. data/.doc/ext/reflex/midi_event.cpp +1 -1
  29. data/.doc/ext/reflex/motion_event.cpp +1 -1
  30. data/.doc/ext/reflex/native.cpp +40 -10
  31. data/.doc/ext/reflex/note_event.cpp +1 -1
  32. data/.doc/ext/reflex/pin.cpp +156 -0
  33. data/.doc/ext/reflex/pointer.cpp +3 -1
  34. data/.doc/ext/reflex/pointer_event.cpp +3 -3
  35. data/.doc/ext/reflex/polygon_shape.cpp +1 -1
  36. data/.doc/ext/reflex/rect_shape.cpp +1 -1
  37. data/.doc/ext/reflex/reflex.cpp +606 -237
  38. data/.doc/ext/reflex/screen.cpp +27 -1
  39. data/.doc/ext/reflex/scroll_event.cpp +1 -1
  40. data/.doc/ext/reflex/selector.cpp +5 -5
  41. data/.doc/ext/reflex/shape.cpp +1 -1
  42. data/.doc/ext/reflex/snap_constraint.cpp +125 -0
  43. data/.doc/ext/reflex/style.cpp +1 -1
  44. data/.doc/ext/reflex/style_length.cpp +4 -3
  45. data/.doc/ext/reflex/text_event.cpp +104 -0
  46. data/.doc/ext/reflex/timer.cpp +1 -1
  47. data/.doc/ext/reflex/timer_event.cpp +1 -1
  48. data/.doc/ext/reflex/update_event.cpp +1 -1
  49. data/.doc/ext/reflex/view.cpp +206 -79
  50. data/.doc/ext/reflex/wheel_constraint.cpp +142 -0
  51. data/.doc/ext/reflex/wheel_event.cpp +1 -1
  52. data/.doc/ext/reflex/window.cpp +282 -31
  53. data/.github/workflows/release-gem.yml +2 -40
  54. data/.github/workflows/tag.yml +5 -28
  55. data/.github/workflows/test.yml +1 -28
  56. data/ChangeLog.md +79 -0
  57. data/Gemfile.lock +13 -8
  58. data/README.md +1 -0
  59. data/Rakefile +13 -2
  60. data/Reflex.podspec +2 -2
  61. data/VERSION +1 -1
  62. data/ext/reflex/application.cpp +62 -7
  63. data/ext/reflex/capture_event.cpp +1 -1
  64. data/ext/reflex/chase_constraint.cpp +89 -0
  65. data/ext/reflex/clipboard.cpp +69 -0
  66. data/ext/reflex/color_event.cpp +80 -0
  67. data/ext/reflex/color_picker.cpp +121 -0
  68. data/ext/reflex/constraint.cpp +146 -0
  69. data/ext/reflex/contact_event.cpp +1 -1
  70. data/ext/reflex/control_change_event.cpp +1 -1
  71. data/ext/reflex/device.cpp +1 -1
  72. data/ext/reflex/device_event.cpp +1 -1
  73. data/ext/reflex/draw_event.cpp +1 -1
  74. data/ext/reflex/ellipse_shape.cpp +1 -1
  75. data/ext/reflex/event.cpp +1 -1
  76. data/ext/reflex/extconf.rb +4 -2
  77. data/ext/reflex/file_dialog.cpp +194 -0
  78. data/ext/reflex/file_event.cpp +108 -0
  79. data/ext/reflex/filter.cpp +1 -1
  80. data/ext/reflex/focus_event.cpp +1 -1
  81. data/ext/reflex/frame_event.cpp +1 -1
  82. data/ext/reflex/gamepad.cpp +50 -0
  83. data/ext/reflex/image_view.cpp +1 -1
  84. data/ext/reflex/key_event.cpp +1 -275
  85. data/ext/reflex/line_shape.cpp +1 -1
  86. data/ext/reflex/link_constraint.cpp +194 -0
  87. data/ext/reflex/menu.cpp +331 -0
  88. data/ext/reflex/midi.cpp +11 -3
  89. data/ext/reflex/midi_event.cpp +1 -1
  90. data/ext/reflex/motion_event.cpp +1 -1
  91. data/ext/reflex/native.cpp +40 -10
  92. data/ext/reflex/note_event.cpp +1 -1
  93. data/ext/reflex/pin.cpp +165 -0
  94. data/ext/reflex/pointer.cpp +3 -1
  95. data/ext/reflex/pointer_event.cpp +3 -3
  96. data/ext/reflex/polygon_shape.cpp +1 -1
  97. data/ext/reflex/rect_shape.cpp +1 -1
  98. data/ext/reflex/reflex.cpp +608 -237
  99. data/ext/reflex/screen.cpp +31 -2
  100. data/ext/reflex/scroll_event.cpp +1 -1
  101. data/ext/reflex/selector.cpp +5 -5
  102. data/ext/reflex/selector.h +10 -10
  103. data/ext/reflex/shape.cpp +1 -1
  104. data/ext/reflex/snap_constraint.cpp +135 -0
  105. data/ext/reflex/style.cpp +1 -1
  106. data/ext/reflex/style_length.cpp +4 -3
  107. data/ext/reflex/text_event.cpp +111 -0
  108. data/ext/reflex/timer.cpp +1 -1
  109. data/ext/reflex/timer_event.cpp +1 -1
  110. data/ext/reflex/update_event.cpp +1 -1
  111. data/ext/reflex/view.cpp +236 -96
  112. data/ext/reflex/wheel_constraint.cpp +154 -0
  113. data/ext/reflex/wheel_event.cpp +1 -1
  114. data/ext/reflex/window.cpp +318 -40
  115. data/include/reflex/application.h +19 -0
  116. data/include/reflex/clipboard.h +53 -0
  117. data/include/reflex/color_picker.h +65 -0
  118. data/include/reflex/constraint.h +275 -0
  119. data/include/reflex/defs.h +204 -195
  120. data/include/reflex/event.h +180 -88
  121. data/include/reflex/file_dialog.h +73 -0
  122. data/include/reflex/gamepad.h +3 -0
  123. data/include/reflex/menu.h +120 -0
  124. data/include/reflex/midi.h +3 -0
  125. data/include/reflex/pin.h +68 -0
  126. data/include/reflex/pointer.h +4 -0
  127. data/include/reflex/reflex.h +2 -0
  128. data/include/reflex/ruby/application.h +6 -1
  129. data/include/reflex/ruby/clipboard.h +23 -0
  130. data/include/reflex/ruby/color_picker.h +89 -0
  131. data/include/reflex/ruby/constraint.h +94 -0
  132. data/include/reflex/ruby/event.h +62 -29
  133. data/include/reflex/ruby/file_dialog.h +89 -0
  134. data/include/reflex/ruby/gamepad.h +46 -0
  135. data/include/reflex/ruby/menu.h +103 -0
  136. data/include/reflex/ruby/pin.h +40 -0
  137. data/include/reflex/ruby/reflex.h +3 -0
  138. data/include/reflex/ruby/view.h +123 -39
  139. data/include/reflex/ruby/window.h +96 -19
  140. data/include/reflex/ruby.h +3 -0
  141. data/include/reflex/screen.h +11 -2
  142. data/include/reflex/view.h +66 -27
  143. data/include/reflex/window.h +57 -12
  144. data/include/reflex.h +8 -0
  145. data/lib/reflex/application.rb +5 -5
  146. data/lib/reflex/autoinit.rb +3 -1
  147. data/lib/reflex/button.rb +3 -3
  148. data/lib/reflex/chase_constraint.rb +15 -0
  149. data/lib/reflex/clipboard.rb +19 -0
  150. data/lib/reflex/color_event.rb +16 -0
  151. data/lib/reflex/color_picker.rb +45 -0
  152. data/lib/reflex/constraint.rb +29 -0
  153. data/lib/reflex/control_change_event.rb +17 -0
  154. data/lib/reflex/extension.rb +1 -1
  155. data/lib/reflex/file_dialog.rb +70 -0
  156. data/lib/reflex/file_event.rb +37 -0
  157. data/lib/reflex/helper.rb +79 -0
  158. data/lib/reflex/key_event.rb +14 -14
  159. data/lib/reflex/link_constraint.rb +31 -0
  160. data/lib/reflex/menu.rb +92 -0
  161. data/lib/reflex/model.rb +19 -19
  162. data/lib/reflex/note_event.rb +1 -1
  163. data/lib/reflex/pin.rb +39 -0
  164. data/lib/reflex/pointer.rb +30 -1
  165. data/lib/reflex/pointer_event.rb +13 -2
  166. data/lib/reflex/reflex.rb +5 -0
  167. data/lib/reflex/shape.rb +14 -14
  168. data/lib/reflex/snap_constraint.rb +28 -0
  169. data/lib/reflex/style.rb +16 -16
  170. data/lib/reflex/text_event.rb +40 -0
  171. data/lib/reflex/timer.rb +3 -3
  172. data/lib/reflex/view.rb +85 -18
  173. data/lib/reflex/wheel_constraint.rb +28 -0
  174. data/lib/reflex/wheel_event.rb +19 -1
  175. data/lib/reflex/window.rb +25 -13
  176. data/lib/reflex.rb +23 -8
  177. data/pod.rake +1 -1
  178. data/reflex.gemspec +4 -4
  179. data/samples/constraint.rb +152 -0
  180. data/samples/ime.rb +100 -0
  181. data/samples/ios/hello/hello.xcodeproj/project.pbxproj +236 -224
  182. data/samples/menu.rb +32 -0
  183. data/samples/model.rb +3 -3
  184. data/samples/test/alert.rb +93 -0
  185. data/samples/test/always_on.rb +76 -0
  186. data/samples/test/app_background.rb +51 -0
  187. data/samples/test/boundary.rb +75 -0
  188. data/samples/test/callback_exception.rb +101 -0
  189. data/samples/test/cancel.rb +53 -0
  190. data/samples/test/color_picker.rb +63 -0
  191. data/samples/test/file_dialog.rb +102 -0
  192. data/samples/window_style.rb +156 -0
  193. data/src/application.cpp +180 -20
  194. data/src/application.h +95 -5
  195. data/src/clipboard.cpp +81 -0
  196. data/src/color_picker.cpp +113 -0
  197. data/src/color_picker.h +36 -0
  198. data/src/constraint.cpp +1662 -0
  199. data/src/constraint.h +64 -0
  200. data/src/event.cpp +416 -252
  201. data/src/event.h +13 -2
  202. data/src/file_dialog.cpp +163 -0
  203. data/src/file_dialog.h +52 -0
  204. data/src/gamepad.cpp +42 -5
  205. data/src/gamepad.h +4 -0
  206. data/src/ios/app_delegate.mm +5 -3
  207. data/src/ios/application.mm +29 -0
  208. data/src/ios/clipboard.mm +44 -0
  209. data/src/ios/color_picker.mm +19 -0
  210. data/src/ios/event.h +6 -2
  211. data/src/ios/event.mm +31 -12
  212. data/src/ios/file_dialog.mm +21 -0
  213. data/src/ios/gamepad.mm +4 -4
  214. data/src/ios/menu.mm +41 -0
  215. data/src/ios/reflex.mm +8 -0
  216. data/src/ios/screen.mm +26 -0
  217. data/src/ios/view_controller.mm +47 -42
  218. data/src/ios/window.mm +44 -9
  219. data/src/menu.cpp +387 -0
  220. data/src/menu.h +81 -0
  221. data/src/midi.cpp +61 -31
  222. data/src/osx/app_delegate.h +4 -0
  223. data/src/osx/app_delegate.mm +168 -139
  224. data/src/osx/application.mm +103 -5
  225. data/src/osx/clipboard.mm +45 -0
  226. data/src/osx/color_picker.mm +112 -0
  227. data/src/osx/event.h +10 -0
  228. data/src/osx/event.mm +114 -30
  229. data/src/osx/file_dialog.mm +168 -0
  230. data/src/osx/gamepad.mm +2 -2
  231. data/src/osx/gamepad_hid.mm +1 -1
  232. data/src/osx/menu.h +25 -0
  233. data/src/osx/menu.mm +516 -0
  234. data/src/osx/native_window.h +16 -2
  235. data/src/osx/native_window.mm +141 -57
  236. data/src/osx/opengl_view.h +2 -1
  237. data/src/osx/opengl_view.mm +229 -37
  238. data/src/osx/reflex.mm +38 -0
  239. data/src/osx/screen.mm +36 -0
  240. data/src/osx/window.mm +117 -24
  241. data/src/pin.cpp +137 -0
  242. data/src/pointer.cpp +36 -16
  243. data/src/pointer.h +10 -0
  244. data/src/rays.h +46 -0
  245. data/src/sdl/application.cpp +73 -8
  246. data/src/sdl/clipboard.cpp +39 -0
  247. data/src/sdl/color_picker.cpp +18 -0
  248. data/src/sdl/event.cpp +44 -6
  249. data/src/sdl/event.h +18 -3
  250. data/src/sdl/file_dialog.cpp +20 -0
  251. data/src/sdl/gamepad.cpp +3 -7
  252. data/src/sdl/menu.cpp +40 -0
  253. data/src/sdl/reflex.cpp +20 -0
  254. data/src/sdl/screen.cpp +36 -0
  255. data/src/sdl/window.cpp +168 -37
  256. data/src/shape.cpp +15 -10
  257. data/src/view.cpp +583 -233
  258. data/src/view.h +22 -4
  259. data/src/vk.h +416 -0
  260. data/src/win32/application.cpp +167 -12
  261. data/src/win32/application.h +20 -0
  262. data/src/win32/clipboard.cpp +210 -0
  263. data/src/win32/color_picker.cpp +82 -0
  264. data/src/win32/event.cpp +123 -11
  265. data/src/win32/event.h +22 -3
  266. data/src/win32/file_dialog.cpp +226 -0
  267. data/src/win32/gamepad.cpp +9 -2
  268. data/src/win32/menu.cpp +490 -0
  269. data/src/win32/menu.h +35 -0
  270. data/src/win32/opengl.cpp +2 -9
  271. data/src/win32/reflex.cpp +44 -3
  272. data/src/win32/screen.cpp +164 -3
  273. data/src/win32/screen.h +8 -0
  274. data/src/win32/tray.cpp +191 -0
  275. data/src/win32/tray.h +22 -0
  276. data/src/win32/vk.cpp +11 -0
  277. data/src/win32/window.cpp +858 -135
  278. data/src/win32/window.h +9 -0
  279. data/src/window.cpp +929 -183
  280. data/src/window.h +77 -33
  281. data/src/world.cpp +86 -15
  282. data/src/world.h +9 -2
  283. data/test/helper.rb +24 -0
  284. data/test/test_application.rb +101 -1
  285. data/test/test_chase_constraint.rb +122 -0
  286. data/test/test_clipboard.rb +54 -0
  287. data/test/test_color_event.rb +36 -0
  288. data/test/test_color_picker.rb +62 -0
  289. data/test/test_constraint.rb +184 -0
  290. data/test/test_event.rb +1 -1
  291. data/test/test_file_dialog.rb +48 -0
  292. data/test/test_file_event.rb +43 -0
  293. data/test/test_has_text_preedit.rb +54 -0
  294. data/test/test_key_event.rb +23 -2
  295. data/test/test_link_constraint.rb +237 -0
  296. data/test/test_menu.rb +237 -0
  297. data/test/test_pin.rb +65 -0
  298. data/test/test_pointer.rb +50 -26
  299. data/test/test_pointer_event.rb +25 -10
  300. data/test/test_reflex.rb +36 -0
  301. data/test/test_screen.rb +24 -2
  302. data/test/test_snap_constraint.rb +140 -0
  303. data/test/test_text_event.rb +54 -0
  304. data/test/test_view.rb +152 -25
  305. data/test/test_wheel_constraint.rb +125 -0
  306. data/test/test_wheel_event.rb +24 -10
  307. data/test/test_window.rb +205 -43
  308. metadata +154 -10
  309. data/.github/workflows/utils.rb +0 -127
@@ -0,0 +1,53 @@
1
+ // -*- c++ -*-
2
+ #pragma once
3
+ #ifndef __REFLEX_CLIPBOARD_H__
4
+ #define __REFLEX_CLIPBOARD_H__
5
+
6
+
7
+ #include <xot/pimpl.h>
8
+ #include <reflex/defs.h>
9
+
10
+
11
+ namespace Reflex
12
+ {
13
+
14
+
15
+ class Clipboard
16
+ {
17
+
18
+ public:
19
+
20
+ Clipboard (const char* text = NULL);
21
+
22
+ ~Clipboard ();
23
+
24
+ void set_text (const char* text);
25
+
26
+ const char* text () const;
27
+
28
+ void set_image (const Image& image);
29
+
30
+ const Image* image () const;
31
+
32
+ void clear ();
33
+
34
+ operator bool () const;
35
+
36
+ bool operator ! () const;
37
+
38
+ struct Data;
39
+
40
+ Xot::PSharedImpl<Data> self;
41
+
42
+ };// Clipboard
43
+
44
+
45
+ void set_clipboard (const Clipboard& clipboard);
46
+
47
+ Clipboard get_clipboard ();
48
+
49
+
50
+ }// Reflex
51
+
52
+
53
+ #endif//EOH
@@ -0,0 +1,65 @@
1
+ // -*- c++ -*-
2
+ #pragma once
3
+ #ifndef __REFLEX_COLOR_PICKER_H__
4
+ #define __REFLEX_COLOR_PICKER_H__
5
+
6
+
7
+ #include <xot/ref.h>
8
+ #include <xot/pimpl.h>
9
+ #include <reflex/defs.h>
10
+ #include <reflex/event.h>
11
+
12
+
13
+ namespace Reflex
14
+ {
15
+
16
+
17
+ class Window;
18
+
19
+
20
+ class ColorPicker : public Xot::RefCountable<>
21
+ {
22
+
23
+ typedef ColorPicker This;
24
+
25
+ public:
26
+
27
+ typedef Xot::Ref<This> Ref;
28
+
29
+ ColorPicker ();
30
+
31
+ virtual ~ColorPicker ();
32
+
33
+ virtual void pick_color ();
34
+
35
+ virtual void pick_color (const Color& initial);
36
+
37
+ virtual void set_owner (Window* window);
38
+
39
+ virtual Window* owner ();
40
+
41
+ virtual const Window* owner () const;
42
+
43
+ virtual void set_alpha (bool state);
44
+
45
+ virtual bool alpha () const;
46
+
47
+ virtual void on_color (ColorEvent* e);
48
+
49
+ virtual void on_close (Event* e);
50
+
51
+ virtual operator bool () const;
52
+
53
+ virtual bool operator ! () const;
54
+
55
+ struct Data;
56
+
57
+ Xot::PSharedImpl<Data> self;
58
+
59
+ };// ColorPicker
60
+
61
+
62
+ }// Reflex
63
+
64
+
65
+ #endif//EOH
@@ -0,0 +1,275 @@
1
+ // -*- c++ -*-
2
+ #pragma once
3
+ #ifndef __REFLEX_CONSTRAINT_H__
4
+ #define __REFLEX_CONSTRAINT_H__
5
+
6
+
7
+ #include <xot/ref.h>
8
+ #include <xot/pimpl.h>
9
+ #include <rays/point.h>
10
+ #include <reflex/defs.h>
11
+ #include <reflex/selector.h>
12
+
13
+
14
+ namespace Reflex
15
+ {
16
+
17
+
18
+ class View;
19
+ class Pin;
20
+
21
+
22
+ class Constraint : public Xot::RefCountable<>, public HasSelector
23
+ {
24
+
25
+ typedef Constraint This;
26
+
27
+ public:
28
+
29
+ typedef Xot::Ref<This> Ref;
30
+
31
+ virtual ~Constraint ();
32
+
33
+ virtual void remove ();
34
+
35
+ virtual const Pin& pin (size_t index) const;
36
+
37
+ virtual View* view (size_t index);
38
+
39
+ virtual const View* view (size_t index) const;
40
+
41
+ virtual void set_spring (float hertz);
42
+
43
+ virtual float spring () const;
44
+
45
+ virtual void set_damping (float ratio);
46
+
47
+ virtual float damping () const;
48
+
49
+ virtual void set_collide (bool state);
50
+
51
+ virtual bool can_collide () const;
52
+
53
+ virtual bool is_removed () const;
54
+
55
+ virtual operator bool () const;
56
+
57
+ virtual bool operator ! () const;
58
+
59
+ struct Data;
60
+
61
+ Xot::PImpl<Data> self;
62
+
63
+ protected:
64
+
65
+ Constraint (Data* data);
66
+
67
+ virtual SelectorPtr* get_selector_ptr () override;
68
+
69
+ };// Constraint
70
+
71
+
72
+ class SnapConstraint : public Constraint
73
+ {
74
+
75
+ typedef Constraint Super;
76
+
77
+ public:
78
+
79
+ virtual ~SnapConstraint ();
80
+
81
+ virtual void set_angle (float min_degree, float max_degree);
82
+
83
+ virtual void clear_angle ();
84
+
85
+ virtual float angle_min () const;
86
+
87
+ virtual float angle_max () const;
88
+
89
+ virtual bool has_angle () const;
90
+
91
+ virtual void set_motor (float degrees_per_second);
92
+
93
+ virtual void clear_motor ();
94
+
95
+ virtual float motor () const;
96
+
97
+ virtual bool has_motor () const;
98
+
99
+ virtual void set_force (float max_torque);
100
+ // the default is 1000 * mass, and 0 makes the motor powerless
101
+
102
+ virtual void clear_force ();
103
+
104
+ virtual float force () const;
105
+
106
+ virtual bool has_force () const;
107
+
108
+ protected:
109
+
110
+ SnapConstraint ();
111
+
112
+ friend class Pin;
113
+
114
+ friend SnapConstraint* SnapConstraint_create ();
115
+
116
+ };// SnapConstraint
117
+
118
+
119
+ class LinkConstraint : public Constraint
120
+ {
121
+
122
+ typedef Constraint Super;
123
+
124
+ public:
125
+
126
+ virtual ~LinkConstraint ();
127
+
128
+ virtual void set_axis (coord x, coord y);
129
+
130
+ virtual void set_axis (const Point& direction);
131
+
132
+ virtual void clear_axis ();
133
+
134
+ virtual const Point& axis () const;
135
+
136
+ virtual bool has_axis () const;
137
+
138
+ virtual void set_distance (coord distance);
139
+
140
+ virtual void clear_distance ();
141
+
142
+ virtual coord distance () const;
143
+
144
+ virtual bool has_distance () const;
145
+
146
+ virtual coord current_distance () const;
147
+
148
+ virtual void set_range (coord min, coord max);
149
+
150
+ virtual void clear_range ();
151
+
152
+ virtual coord range_min () const;
153
+
154
+ virtual coord range_max () const;
155
+
156
+ virtual bool has_range () const;
157
+
158
+ virtual void set_motor (coord pixels_per_second);
159
+
160
+ virtual void clear_motor ();
161
+
162
+ virtual coord motor () const;
163
+
164
+ virtual bool has_motor () const;
165
+
166
+ virtual void set_force (float max_force);
167
+ // the default is 1000 * mass, and 0 makes it powerless
168
+
169
+ virtual void clear_force ();
170
+
171
+ virtual float force () const;
172
+
173
+ virtual bool has_force () const;
174
+
175
+ protected:
176
+
177
+ LinkConstraint ();
178
+
179
+ friend class Pin;
180
+
181
+ friend LinkConstraint* LinkConstraint_create ();
182
+
183
+ };// LinkConstraint
184
+
185
+
186
+ class WheelConstraint : public Constraint
187
+ {
188
+
189
+ typedef Constraint Super;
190
+
191
+ public:
192
+
193
+ virtual ~WheelConstraint ();
194
+
195
+ virtual void set_axis (coord x, coord y);
196
+
197
+ virtual void set_axis (const Point& direction);
198
+
199
+ virtual const Point& axis () const;
200
+
201
+ virtual void set_range (coord min, coord max);
202
+
203
+ virtual void clear_range ();
204
+
205
+ virtual coord range_min () const;
206
+
207
+ virtual coord range_max () const;
208
+
209
+ virtual bool has_range () const;
210
+
211
+ virtual void set_motor (float degrees_per_second);
212
+
213
+ virtual void clear_motor ();
214
+
215
+ virtual float motor () const;
216
+
217
+ virtual bool has_motor () const;
218
+
219
+ virtual void set_force (float max_torque);
220
+ // the default is 1000 * mass, and 0 makes the motor powerless
221
+
222
+ virtual void clear_force ();
223
+
224
+ virtual float force () const;
225
+
226
+ virtual bool has_force () const;
227
+
228
+ protected:
229
+
230
+ WheelConstraint ();
231
+
232
+ friend class Pin;
233
+
234
+ friend WheelConstraint* WheelConstraint_create ();
235
+
236
+ };// WheelConstraint
237
+
238
+
239
+ class ChaseConstraint : public Constraint
240
+ {
241
+
242
+ typedef Constraint Super;
243
+
244
+ public:
245
+
246
+ virtual ~ChaseConstraint ();
247
+
248
+ virtual void set_target (const Pin& target);
249
+
250
+ virtual const Pin& target () const;
251
+
252
+ virtual void set_force (float max_force);
253
+ // the default is 1000 * mass, and 0 makes it powerless
254
+
255
+ virtual void clear_force ();
256
+
257
+ virtual float force () const;
258
+
259
+ virtual bool has_force () const;
260
+
261
+ protected:
262
+
263
+ ChaseConstraint ();
264
+
265
+ friend class Pin;
266
+
267
+ friend ChaseConstraint* ChaseConstraint_create ();
268
+
269
+ };// ChaseConstraint
270
+
271
+
272
+ }// Reflex
273
+
274
+
275
+ #endif//EOH