diff options
author | Jens Arnold <amiconn@rockbox.org> | 2008-09-23 01:45:50 +0000 |
---|---|---|
committer | Jens Arnold <amiconn@rockbox.org> | 2008-09-23 01:45:50 +0000 |
commit | 4d4555e434e7ae1b97728034ee1ce27e6bc76da1 (patch) | |
tree | b8bdb596ec0345edeb8b90f6393d63dbdf0e4e89 /apps/plugins/cube.c | |
parent | 9bc16e491dff45c4eda193895d2d042290d7f079 (diff) | |
download | rockbox-4d4555e434e7ae1b97728034ee1ce27e6bc76da1.tar.gz rockbox-4d4555e434e7ae1b97728034ee1ce27e6bc76da1.zip |
Simplify controls in order to resolve impossible combos on several targets. Now uses a similar system as bounce: use left/right (or equivalent) to select the axis to adjust, and up/down (or the equivalent) to change speed/angle. * Show angle instead of speed in angle adjust mode (i.e. pause). * Better event handling when paused (button_get_w_tmo()).
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18571 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/plugins/cube.c')
-rw-r--r-- | apps/plugins/cube.c | 411 |
1 files changed, 157 insertions, 254 deletions
diff --git a/apps/plugins/cube.c b/apps/plugins/cube.c index 35737a65b3..76c55353c6 100644 --- a/apps/plugins/cube.c +++ b/apps/plugins/cube.c | |||
@@ -34,50 +34,41 @@ PLUGIN_HEADER | |||
34 | /* variable button definitions */ | 34 | /* variable button definitions */ |
35 | #if CONFIG_KEYPAD == RECORDER_PAD | 35 | #if CONFIG_KEYPAD == RECORDER_PAD |
36 | #define CUBE_QUIT BUTTON_OFF | 36 | #define CUBE_QUIT BUTTON_OFF |
37 | #define CUBE_X_INC BUTTON_RIGHT | 37 | #define CUBE_NEXT BUTTON_RIGHT |
38 | #define CUBE_X_DEC BUTTON_LEFT | 38 | #define CUBE_PREV BUTTON_LEFT |
39 | #define CUBE_Y_INC BUTTON_UP | 39 | #define CUBE_INC BUTTON_UP |
40 | #define CUBE_Y_DEC BUTTON_DOWN | 40 | #define CUBE_DEC BUTTON_DOWN |
41 | #define CUBE_Z_INC BUTTON_F2 | 41 | #define CUBE_MODE BUTTON_F1 |
42 | #define CUBE_Z_DEC BUTTON_F1 | ||
43 | #define CUBE_MODE BUTTON_F3 | ||
44 | #define CUBE_PAUSE BUTTON_PLAY | 42 | #define CUBE_PAUSE BUTTON_PLAY |
45 | #define CUBE_HIGHSPEED BUTTON_ON | 43 | #define CUBE_HIGHSPEED BUTTON_ON |
46 | 44 | ||
47 | #elif CONFIG_KEYPAD == ARCHOS_AV300_PAD | 45 | #elif CONFIG_KEYPAD == ARCHOS_AV300_PAD |
48 | #define CUBE_QUIT BUTTON_OFF | 46 | #define CUBE_QUIT BUTTON_OFF |
49 | #define CUBE_X_INC BUTTON_RIGHT | 47 | #define CUBE_NEXT BUTTON_RIGHT |
50 | #define CUBE_X_DEC BUTTON_LEFT | 48 | #define CUBE_PREV BUTTON_LEFT |
51 | #define CUBE_Y_INC BUTTON_UP | 49 | #define CUBE_INC BUTTON_UP |
52 | #define CUBE_Y_DEC BUTTON_DOWN | 50 | #define CUBE_DEC BUTTON_DOWN |
53 | #define CUBE_Z_INC BUTTON_F2 | 51 | #define CUBE_MODE BUTTON_F1 |
54 | #define CUBE_Z_DEC BUTTON_F1 | ||
55 | #define CUBE_MODE BUTTON_F3 | ||
56 | #define CUBE_PAUSE BUTTON_SELECT | 52 | #define CUBE_PAUSE BUTTON_SELECT |
57 | #define CUBE_HIGHSPEED BUTTON_ON | 53 | #define CUBE_HIGHSPEED BUTTON_ON |
58 | 54 | ||
59 | #elif CONFIG_KEYPAD == PLAYER_PAD | 55 | #elif CONFIG_KEYPAD == PLAYER_PAD |
60 | #define CUBE_QUIT BUTTON_STOP | 56 | #define CUBE_QUIT BUTTON_STOP |
61 | #define CUBE_X_INC BUTTON_RIGHT | 57 | #define CUBE_INC BUTTON_RIGHT |
62 | #define CUBE_X_DEC BUTTON_LEFT | 58 | #define CUBE_DEC BUTTON_LEFT |
63 | #define CUBE_Y_INC (BUTTON_ON | BUTTON_RIGHT) | 59 | #define CUBE_NEXT (BUTTON_ON | BUTTON_RIGHT) |
64 | #define CUBE_Y_DEC (BUTTON_ON | BUTTON_LEFT) | 60 | #define CUBE_PREV (BUTTON_ON | BUTTON_LEFT) |
65 | #define CUBE_Z_INC (BUTTON_MENU | BUTTON_RIGHT) | 61 | #define CUBE_MODE BUTTON_MENU |
66 | #define CUBE_Z_DEC (BUTTON_MENU | BUTTON_LEFT) | ||
67 | #define CUBE_MODE_PRE BUTTON_MENU | ||
68 | #define CUBE_MODE (BUTTON_MENU | BUTTON_REL) | ||
69 | #define CUBE_PAUSE BUTTON_PLAY | 62 | #define CUBE_PAUSE BUTTON_PLAY |
70 | #define CUBE_HIGHSPEED_PRE BUTTON_ON | 63 | #define CUBE_HIGHSPEED_PRE BUTTON_ON |
71 | #define CUBE_HIGHSPEED (BUTTON_ON | BUTTON_REL) | 64 | #define CUBE_HIGHSPEED (BUTTON_ON | BUTTON_REL) |
72 | 65 | ||
73 | #elif CONFIG_KEYPAD == ONDIO_PAD | 66 | #elif CONFIG_KEYPAD == ONDIO_PAD |
74 | #define CUBE_QUIT BUTTON_OFF | 67 | #define CUBE_QUIT BUTTON_OFF |
75 | #define CUBE_X_INC BUTTON_RIGHT | 68 | #define CUBE_NEXT BUTTON_RIGHT |
76 | #define CUBE_X_DEC BUTTON_LEFT | 69 | #define CUBE_PREV BUTTON_LEFT |
77 | #define CUBE_Y_INC BUTTON_UP | 70 | #define CUBE_INC BUTTON_UP |
78 | #define CUBE_Y_DEC BUTTON_DOWN | 71 | #define CUBE_DEC BUTTON_DOWN |
79 | #define CUBE_Z_INC (BUTTON_MENU | BUTTON_UP) | ||
80 | #define CUBE_Z_DEC (BUTTON_MENU | BUTTON_DOWN) | ||
81 | #define CUBE_MODE_PRE BUTTON_MENU | 72 | #define CUBE_MODE_PRE BUTTON_MENU |
82 | #define CUBE_MODE (BUTTON_MENU | BUTTON_REL) | 73 | #define CUBE_MODE (BUTTON_MENU | BUTTON_REL) |
83 | #define CUBE_PAUSE (BUTTON_MENU | BUTTON_LEFT) | 74 | #define CUBE_PAUSE (BUTTON_MENU | BUTTON_LEFT) |
@@ -86,15 +77,12 @@ PLUGIN_HEADER | |||
86 | #elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ | 77 | #elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ |
87 | (CONFIG_KEYPAD == IRIVER_H300_PAD) | 78 | (CONFIG_KEYPAD == IRIVER_H300_PAD) |
88 | #define CUBE_QUIT BUTTON_OFF | 79 | #define CUBE_QUIT BUTTON_OFF |
89 | #define CUBE_X_INC BUTTON_RIGHT | 80 | #define CUBE_NEXT BUTTON_RIGHT |
90 | #define CUBE_X_DEC BUTTON_LEFT | 81 | #define CUBE_PREV BUTTON_LEFT |
91 | #define CUBE_Y_INC BUTTON_UP | 82 | #define CUBE_INC BUTTON_UP |
92 | #define CUBE_Y_DEC BUTTON_DOWN | 83 | #define CUBE_DEC BUTTON_DOWN |
93 | #define CUBE_Z_INC (BUTTON_ON | BUTTON_UP) | ||
94 | #define CUBE_Z_DEC (BUTTON_ON | BUTTON_DOWN) | ||
95 | #define CUBE_MODE BUTTON_MODE | 84 | #define CUBE_MODE BUTTON_MODE |
96 | #define CUBE_PAUSE_PRE BUTTON_ON | 85 | #define CUBE_PAUSE BUTTON_ON |
97 | #define CUBE_PAUSE (BUTTON_ON | BUTTON_REL) | ||
98 | #define CUBE_HIGHSPEED BUTTON_SELECT | 86 | #define CUBE_HIGHSPEED BUTTON_SELECT |
99 | 87 | ||
100 | #define CUBE_RC_QUIT BUTTON_RC_STOP | 88 | #define CUBE_RC_QUIT BUTTON_RC_STOP |
@@ -102,143 +90,114 @@ PLUGIN_HEADER | |||
102 | #elif (CONFIG_KEYPAD == IPOD_4G_PAD) || \ | 90 | #elif (CONFIG_KEYPAD == IPOD_4G_PAD) || \ |
103 | (CONFIG_KEYPAD == IPOD_3G_PAD) || \ | 91 | (CONFIG_KEYPAD == IPOD_3G_PAD) || \ |
104 | (CONFIG_KEYPAD == IPOD_1G2G_PAD) | 92 | (CONFIG_KEYPAD == IPOD_1G2G_PAD) |
105 | #define CUBE_QUIT BUTTON_MENU | 93 | #define CUBE_QUIT (BUTTON_SELECT | BUTTON_MENU) |
106 | #define CUBE_X_INC BUTTON_RIGHT | 94 | #define CUBE_NEXT BUTTON_RIGHT |
107 | #define CUBE_X_DEC BUTTON_LEFT | 95 | #define CUBE_PREV BUTTON_LEFT |
108 | #define CUBE_Y_INC BUTTON_SCROLL_FWD | 96 | #define CUBE_INC BUTTON_SCROLL_FWD |
109 | #define CUBE_Y_DEC BUTTON_SCROLL_BACK | 97 | #define CUBE_DEC BUTTON_SCROLL_BACK |
110 | #define CUBE_Z_INC (BUTTON_SELECT | BUTTON_RIGHT) | 98 | #define CUBE_MODE BUTTON_MENU |
111 | #define CUBE_Z_DEC (BUTTON_SELECT | BUTTON_LEFT) | 99 | #define CUBE_PAUSE BUTTON_PLAY |
112 | #define CUBE_MODE (BUTTON_SELECT | BUTTON_MENU) | 100 | #define CUBE_HIGHSPEED_PRE BUTTON_SELECT |
113 | #define CUBE_PAUSE_PRE BUTTON_PLAY | 101 | #define CUBE_HIGHSPEED (BUTTON_SELECT | BUTTON_REL) |
114 | #define CUBE_PAUSE (BUTTON_PLAY | BUTTON_REL) | ||
115 | #define CUBE_HIGHSPEED (BUTTON_SELECT | BUTTON_PLAY) | ||
116 | 102 | ||
117 | #elif CONFIG_KEYPAD == IRIVER_IFP7XX_PAD | 103 | #elif CONFIG_KEYPAD == IRIVER_IFP7XX_PAD |
118 | #define CUBE_QUIT BUTTON_PLAY | 104 | #define CUBE_QUIT BUTTON_PLAY |
119 | #define CUBE_X_INC BUTTON_RIGHT | 105 | #define CUBE_NEXT BUTTON_RIGHT |
120 | #define CUBE_X_DEC BUTTON_LEFT | 106 | #define CUBE_PREV BUTTON_LEFT |
121 | #define CUBE_Y_INC BUTTON_UP | 107 | #define CUBE_INC BUTTON_UP |
122 | #define CUBE_Y_DEC BUTTON_DOWN | 108 | #define CUBE_DEC BUTTON_DOWN |
123 | #define CUBE_Z_INC BUTTON_MODE | 109 | #define CUBE_MODE BUTTON_MODE |
124 | #define CUBE_Z_DEC BUTTON_EQ | 110 | #define CUBE_PAUSE BUTTON_SELECT |
125 | #define CUBE_MODE (BUTTON_SELECT | BUTTON_REPEAT) | 111 | #define CUBE_HIGHSPEED BUTTON_EQ |
126 | #define CUBE_PAUSE (BUTTON_SELECT | BUTTON_REL) | ||
127 | #define CUBE_HIGHSPEED (BUTTON_MODE | BUTTON_EQ) /* TODO: this is impossible */ | ||
128 | 112 | ||
129 | #elif (CONFIG_KEYPAD == IAUDIO_X5M5_PAD) | 113 | #elif (CONFIG_KEYPAD == IAUDIO_X5M5_PAD) |
130 | #define CUBE_QUIT BUTTON_POWER | 114 | #define CUBE_QUIT BUTTON_POWER |
131 | #define CUBE_X_INC BUTTON_LEFT | 115 | #define CUBE_NEXT BUTTON_RIGHT |
132 | #define CUBE_X_DEC BUTTON_RIGHT | 116 | #define CUBE_PREV BUTTON_LEFT |
133 | #define CUBE_Y_INC BUTTON_UP | 117 | #define CUBE_INC BUTTON_UP |
134 | #define CUBE_Y_DEC BUTTON_DOWN | 118 | #define CUBE_DEC BUTTON_DOWN |
135 | #define CUBE_Z_INC (BUTTON_PLAY | BUTTON_UP) | 119 | #define CUBE_MODE BUTTON_REC |
136 | #define CUBE_Z_DEC (BUTTON_PLAY | BUTTON_DOWN) | 120 | #define CUBE_PAUSE BUTTON_PLAY |
137 | #define CUBE_MODE BUTTON_SELECT | 121 | #define CUBE_HIGHSPEED BUTTON_SELECT |
138 | #define CUBE_PAUSE_PRE BUTTON_PLAY | ||
139 | #define CUBE_PAUSE (BUTTON_PLAY | BUTTON_REL) | ||
140 | #define CUBE_HIGHSPEED (BUTTON_REC | BUTTON_REL) | ||
141 | 122 | ||
142 | #elif (CONFIG_KEYPAD == GIGABEAT_PAD) | 123 | #elif (CONFIG_KEYPAD == GIGABEAT_PAD) |
143 | #define CUBE_QUIT BUTTON_POWER | 124 | #define CUBE_QUIT BUTTON_POWER |
144 | #define CUBE_X_INC BUTTON_LEFT | 125 | #define CUBE_NEXT BUTTON_RIGHT |
145 | #define CUBE_X_DEC BUTTON_RIGHT | 126 | #define CUBE_PREV BUTTON_LEFT |
146 | #define CUBE_Y_INC BUTTON_UP | 127 | #define CUBE_INC BUTTON_UP |
147 | #define CUBE_Y_DEC BUTTON_DOWN | 128 | #define CUBE_DEC BUTTON_DOWN |
148 | #define CUBE_Z_INC BUTTON_VOL_UP | ||
149 | #define CUBE_Z_DEC BUTTON_VOL_DOWN | ||
150 | #define CUBE_MODE BUTTON_MENU | 129 | #define CUBE_MODE BUTTON_MENU |
151 | #define CUBE_PAUSE BUTTON_SELECT | 130 | #define CUBE_PAUSE BUTTON_SELECT |
152 | #define CUBE_HIGHSPEED BUTTON_A | 131 | #define CUBE_HIGHSPEED BUTTON_A |
153 | 132 | ||
154 | #elif (CONFIG_KEYPAD == SANSA_E200_PAD) | 133 | #elif (CONFIG_KEYPAD == SANSA_E200_PAD) |
155 | #define CUBE_QUIT BUTTON_POWER | 134 | #define CUBE_QUIT BUTTON_POWER |
156 | #define CUBE_X_INC BUTTON_LEFT | 135 | #define CUBE_NEXT BUTTON_RIGHT |
157 | #define CUBE_X_DEC BUTTON_RIGHT | 136 | #define CUBE_PREV BUTTON_LEFT |
158 | #define CUBE_Y_INC BUTTON_SCROLL_FWD | 137 | #define CUBE_INC BUTTON_SCROLL_FWD |
159 | #define CUBE_Y_DEC BUTTON_SCROLL_BACK | 138 | #define CUBE_DEC BUTTON_SCROLL_BACK |
160 | #define CUBE_Z_INC BUTTON_UP | 139 | #define CUBE_MODE BUTTON_DOWN |
161 | #define CUBE_Z_DEC BUTTON_DOWN | 140 | #define CUBE_PAUSE BUTTON_UP |
162 | #define CUBE_MODE_PRE BUTTON_SELECT | 141 | #define CUBE_HIGHSPEED BUTTON_SELECT |
163 | #define CUBE_MODE (BUTTON_SELECT|BUTTON_REPEAT) | ||
164 | #define CUBE_PAUSE_PRE BUTTON_SELECT | ||
165 | #define CUBE_PAUSE (BUTTON_SELECT|BUTTON_REL) | ||
166 | #define CUBE_HIGHSPEED BUTTON_REC | ||
167 | 142 | ||
168 | #elif (CONFIG_KEYPAD == SANSA_C200_PAD) | 143 | #elif (CONFIG_KEYPAD == SANSA_C200_PAD) |
169 | #define CUBE_QUIT BUTTON_POWER | 144 | #define CUBE_QUIT BUTTON_POWER |
170 | #define CUBE_X_INC BUTTON_LEFT | 145 | #define CUBE_NEXT BUTTON_RIGHT |
171 | #define CUBE_X_DEC BUTTON_RIGHT | 146 | #define CUBE_PREV BUTTON_LEFT |
172 | #define CUBE_Y_INC BUTTON_VOL_UP | 147 | #define CUBE_INC BUTTON_VOL_UP |
173 | #define CUBE_Y_DEC BUTTON_VOL_DOWN | 148 | #define CUBE_DEC BUTTON_VOL_DOWN |
174 | #define CUBE_Z_INC BUTTON_UP | 149 | #define CUBE_MODE BUTTON_DOWN |
175 | #define CUBE_Z_DEC BUTTON_DOWN | 150 | #define CUBE_PAUSE BUTTON_UP |
176 | #define CUBE_MODE_PRE BUTTON_SELECT | 151 | #define CUBE_HIGHSPEED BUTTON_SELECT |
177 | #define CUBE_MODE (BUTTON_SELECT|BUTTON_REPEAT) | ||
178 | #define CUBE_PAUSE_PRE BUTTON_SELECT | ||
179 | #define CUBE_PAUSE (BUTTON_SELECT|BUTTON_REL) | ||
180 | #define CUBE_HIGHSPEED BUTTON_REC | ||
181 | 152 | ||
182 | 153 | ||
183 | #elif (CONFIG_KEYPAD == IRIVER_H10_PAD) | 154 | #elif (CONFIG_KEYPAD == IRIVER_H10_PAD) |
184 | #define CUBE_QUIT BUTTON_POWER | 155 | #define CUBE_QUIT BUTTON_POWER |
185 | #define CUBE_X_INC BUTTON_LEFT | 156 | #define CUBE_NEXT BUTTON_RIGHT |
186 | #define CUBE_X_DEC BUTTON_RIGHT | 157 | #define CUBE_PREV BUTTON_LEFT |
187 | #define CUBE_Y_INC BUTTON_SCROLL_UP | 158 | #define CUBE_INC BUTTON_SCROLL_UP |
188 | #define CUBE_Y_DEC BUTTON_SCROLL_DOWN | 159 | #define CUBE_DEC BUTTON_SCROLL_DOWN |
189 | #define CUBE_Z_INC (BUTTON_PLAY | BUTTON_SCROLL_UP) | ||
190 | #define CUBE_Z_DEC (BUTTON_PLAY | BUTTON_SCROLL_DOWN) | ||
191 | #define CUBE_MODE BUTTON_REW | 160 | #define CUBE_MODE BUTTON_REW |
192 | #define CUBE_PAUSE_PRE BUTTON_PLAY | 161 | #define CUBE_PAUSE BUTTON_PLAY |
193 | #define CUBE_PAUSE (BUTTON_PLAY | BUTTON_REL) | 162 | #define CUBE_HIGHSPEED BUTTON_FF |
194 | #define CUBE_HIGHSPEED (BUTTON_FF | BUTTON_REL) | ||
195 | 163 | ||
196 | #elif CONFIG_KEYPAD == MROBE500_PAD | 164 | #elif CONFIG_KEYPAD == MROBE500_PAD |
197 | #define CUBE_QUIT BUTTON_POWER | 165 | #define CUBE_QUIT BUTTON_POWER |
198 | #define CUBE_X_INC BUTTON_LEFT | 166 | #define CUBE_NEXT BUTTON_RIGHT |
199 | #define CUBE_X_DEC BUTTON_RIGHT | 167 | #define CUBE_PREV BUTTON_LEFT |
200 | #define CUBE_Y_INC BUTTON_RC_PLAY | 168 | #define CUBE_INC BUTTON_RC_VOL_UP |
201 | #define CUBE_Y_DEC BUTTON_RC_DOWN | 169 | #define CUBE_DEC BUTTON_RC_VOL_DOWN |
202 | #define CUBE_Z_INC BUTTON_RC_VOL_UP | ||
203 | #define CUBE_Z_DEC BUTTON_RC_VOL_DOWN | ||
204 | #define CUBE_MODE BUTTON_RC_MODE | 170 | #define CUBE_MODE BUTTON_RC_MODE |
205 | #define CUBE_PAUSE_PRE BUTTON_RC_HEART | 171 | #define CUBE_PAUSE_PRE BUTTON_RC_HEART |
206 | #define CUBE_PAUSE (BUTTON_RC_HEART | BUTTON_REL) | 172 | #define CUBE_PAUSE (BUTTON_RC_HEART | BUTTON_REL) |
207 | #define CUBE_HIGHSPEED BUTTON_RC_HEART | 173 | #define CUBE_HIGHSPEED BUTTON_RC_HEART /* fixme: clashes with pause */ |
208 | 174 | ||
209 | #elif CONFIG_KEYPAD == GIGABEAT_S_PAD | 175 | #elif CONFIG_KEYPAD == GIGABEAT_S_PAD |
210 | #define CUBE_QUIT BUTTON_BACK | 176 | #define CUBE_QUIT BUTTON_BACK |
211 | #define CUBE_X_INC BUTTON_LEFT | 177 | #define CUBE_NEXT BUTTON_RIGHT |
212 | #define CUBE_X_DEC BUTTON_RIGHT | 178 | #define CUBE_PREV BUTTON_LEFT |
213 | #define CUBE_Y_INC BUTTON_UP | 179 | #define CUBE_INC BUTTON_UP |
214 | #define CUBE_Y_DEC BUTTON_DOWN | 180 | #define CUBE_DEC BUTTON_DOWN |
215 | #define CUBE_Z_INC BUTTON_VOL_UP | 181 | #define CUBE_MODE BUTTON_MENU |
216 | #define CUBE_Z_DEC BUTTON_VOL_DOWN | 182 | #define CUBE_PAUSE BUTTON_PLAY |
217 | #define CUBE_MODE BUTTON_PREV | 183 | #define CUBE_HIGHSPEED BUTTON_SELECT |
218 | #define CUBE_PAUSE_PRE BUTTON_PLAY | ||
219 | #define CUBE_PAUSE (BUTTON_PLAY | BUTTON_REL) | ||
220 | #define CUBE_HIGHSPEED (BUTTON_NEXT | BUTTON_REL) | ||
221 | 184 | ||
222 | #elif (CONFIG_KEYPAD == MROBE100_PAD) | 185 | #elif (CONFIG_KEYPAD == MROBE100_PAD) |
223 | #define CUBE_QUIT BUTTON_POWER | 186 | #define CUBE_QUIT BUTTON_POWER |
224 | #define CUBE_X_INC BUTTON_LEFT | 187 | #define CUBE_NEXT BUTTON_RIGHT |
225 | #define CUBE_X_DEC BUTTON_RIGHT | 188 | #define CUBE_PREV BUTTON_LEFT |
226 | #define CUBE_Y_INC BUTTON_UP | 189 | #define CUBE_INC BUTTON_UP |
227 | #define CUBE_Y_DEC BUTTON_DOWN | 190 | #define CUBE_DEC BUTTON_DOWN |
228 | #define CUBE_Z_INC (BUTTON_DISPLAY | BUTTON_UP) | ||
229 | #define CUBE_Z_DEC (BUTTON_DISPLAY | BUTTON_DOWN) | ||
230 | #define CUBE_MODE BUTTON_MENU | 191 | #define CUBE_MODE BUTTON_MENU |
231 | #define CUBE_PAUSE BUTTON_PLAY | 192 | #define CUBE_PAUSE BUTTON_PLAY |
232 | #define CUBE_HIGHSPEED BUTTON_SELECT | 193 | #define CUBE_HIGHSPEED BUTTON_SELECT |
233 | 194 | ||
234 | #elif (CONFIG_KEYPAD == IAUDIO_M3_PAD) | 195 | #elif (CONFIG_KEYPAD == IAUDIO_M3_PAD) |
235 | #define CUBE_QUIT BUTTON_RC_REC | 196 | #define CUBE_QUIT BUTTON_RC_REC |
236 | #define CUBE_X_INC BUTTON_RC_FF | 197 | #define CUBE_NEXT BUTTON_RC_FF |
237 | #define CUBE_X_DEC BUTTON_RC_REW | 198 | #define CUBE_PREV BUTTON_RC_REW |
238 | #define CUBE_Y_INC BUTTON_RC_VOL_UP | 199 | #define CUBE_INC BUTTON_RC_VOL_UP |
239 | #define CUBE_Y_DEC BUTTON_RC_VOL_DOWN | 200 | #define CUBE_DEC BUTTON_RC_VOL_DOWN |
240 | #define CUBE_Z_INC BUTTON_VOL_UP /* FIXME: quick hack */ | ||
241 | #define CUBE_Z_DEC BUTTON_VOL_DOWN | ||
242 | #define CUBE_MODE BUTTON_RC_MODE | 201 | #define CUBE_MODE BUTTON_RC_MODE |
243 | #define CUBE_PAUSE BUTTON_RC_PLAY | 202 | #define CUBE_PAUSE BUTTON_RC_PLAY |
244 | #define CUBE_HIGHSPEED BUTTON_RC_MENU | 203 | #define CUBE_HIGHSPEED BUTTON_RC_MENU |
@@ -420,6 +379,18 @@ enum { | |||
420 | 379 | ||
421 | static int mode = 0; | 380 | static int mode = 0; |
422 | 381 | ||
382 | struct counter { | ||
383 | const char *label; | ||
384 | short speed; | ||
385 | short angle; | ||
386 | }; | ||
387 | |||
388 | static struct counter axes[] = { | ||
389 | {"x-axis", 1, 0}, | ||
390 | {"y-axis", 3, 0}, | ||
391 | {"z-axis", 2, 0} | ||
392 | }; | ||
393 | |||
423 | static struct point_3D point3D[8]; | 394 | static struct point_3D point3D[8]; |
424 | static struct point_2D point2D[8]; | 395 | static struct point_2D point2D[8]; |
425 | static long matrice[3][3]; | 396 | static long matrice[3][3]; |
@@ -594,12 +565,7 @@ enum plugin_status plugin_start(const struct plugin_api* api, const void* parame | |||
594 | 565 | ||
595 | int button; | 566 | int button; |
596 | int lastbutton = BUTTON_NONE; | 567 | int lastbutton = BUTTON_NONE; |
597 | int xa = 0; | 568 | int curr = 0; |
598 | int ya = 0; | ||
599 | int za = 0; | ||
600 | int xs = 1; | ||
601 | int ys = 3; | ||
602 | int zs = 1; | ||
603 | bool highspeed = false; | 569 | bool highspeed = false; |
604 | bool paused = false; | 570 | bool paused = false; |
605 | bool redraw = true; | 571 | bool redraw = true; |
@@ -638,20 +604,15 @@ enum plugin_status plugin_start(const struct plugin_api* api, const void* parame | |||
638 | rb->splash(HZ*2, "Old LCD :("); | 604 | rb->splash(HZ*2, "Old LCD :("); |
639 | return PLUGIN_OK; | 605 | return PLUGIN_OK; |
640 | } | 606 | } |
641 | pgfx_display(3, 0); | 607 | pgfx_display(0, 0); |
642 | #endif | 608 | #endif |
643 | 609 | ||
644 | while(!exit) | 610 | while(!exit) |
645 | { | 611 | { |
646 | if (highspeed) | ||
647 | rb->yield(); | ||
648 | else | ||
649 | rb->sleep(4); | ||
650 | |||
651 | if (redraw) | 612 | if (redraw) |
652 | { | 613 | { |
653 | MYLCD(clear_display)(); | 614 | MYLCD(clear_display)(); |
654 | cube_rotate(xa, ya, za); | 615 | cube_rotate(axes[0].angle, axes[1].angle, axes[2].angle); |
655 | cube_viewport(); | 616 | cube_viewport(); |
656 | cube_draw(); | 617 | cube_draw(); |
657 | redraw = false; | 618 | redraw = false; |
@@ -661,8 +622,10 @@ enum plugin_status plugin_start(const struct plugin_api* api, const void* parame | |||
661 | if (t_disp > 0) | 622 | if (t_disp > 0) |
662 | { | 623 | { |
663 | t_disp--; | 624 | t_disp--; |
664 | rb->snprintf(buffer, sizeof(buffer), "x:%d y:%d z:%d h:%d", | 625 | rb->snprintf(buffer, sizeof(buffer), "%s: %d %s", |
665 | xs, ys, zs, highspeed); | 626 | axes[curr].label, |
627 | paused ? axes[curr].angle : axes[curr].speed, | ||
628 | highspeed ? "(hs)" : ""); | ||
666 | MYLCD(putsxy)(0, LCD_HEIGHT-8, buffer); | 629 | MYLCD(putsxy)(0, LCD_HEIGHT-8, buffer); |
667 | if (t_disp == 0) | 630 | if (t_disp == 0) |
668 | redraw = true; | 631 | redraw = true; |
@@ -672,21 +635,17 @@ enum plugin_status plugin_start(const struct plugin_api* api, const void* parame | |||
672 | { | 635 | { |
673 | if (t_disp == DISP_TIME) | 636 | if (t_disp == DISP_TIME) |
674 | { | 637 | { |
675 | rb->snprintf(buffer, sizeof(buffer), "x%d", xs); | 638 | rb->lcd_puts(5, 0, axes[curr].label); |
676 | rb->lcd_puts(0, 0, buffer); | 639 | rb->snprintf(buffer, sizeof(buffer), "%d %c", |
677 | rb->snprintf(buffer, sizeof(buffer), "y%d", ys); | 640 | paused ? axes[curr].angle : axes[curr].speed, |
678 | rb->lcd_puts(0, 1, buffer); | 641 | highspeed ? 'H' : ' '); |
679 | pgfx_display(3, 0); | 642 | rb->lcd_puts(5, 1, buffer); |
680 | rb->snprintf(buffer, sizeof(buffer), "z%d", zs); | ||
681 | rb->lcd_puts(8, 0, buffer); | ||
682 | rb->snprintf(buffer, sizeof(buffer), "h%d", highspeed); | ||
683 | rb->lcd_puts(8, 1, buffer); | ||
684 | } | 643 | } |
685 | t_disp--; | 644 | t_disp--; |
686 | if (t_disp == 0) | 645 | if (t_disp == 0) |
687 | { | 646 | { |
688 | rb->lcd_clear_display(); | 647 | rb->lcd_clear_display(); |
689 | pgfx_display(3, 0); | 648 | pgfx_display(0, 0); |
690 | } | 649 | } |
691 | } | 650 | } |
692 | #endif | 651 | #endif |
@@ -701,129 +660,73 @@ enum plugin_status plugin_start(const struct plugin_api* api, const void* parame | |||
701 | 660 | ||
702 | if (!paused) | 661 | if (!paused) |
703 | { | 662 | { |
704 | xa += xs; | 663 | int i; |
705 | if (xa > 359) | 664 | |
706 | xa -= 360; | 665 | for (i = 0; i < 3; i++) |
707 | else if (xa < 0) | 666 | { |
708 | xa += 360; | 667 | axes[i].angle += axes[i].speed; |
709 | 668 | if (axes[i].angle > 359) | |
710 | ya += ys; | 669 | axes[i].angle -= 360; |
711 | if (ya > 359) | 670 | else if (axes[i].angle < 0) |
712 | ya -= 360; | 671 | axes[i].angle += 360; |
713 | else if (ya < 0) | 672 | } |
714 | ya += 360; | ||
715 | |||
716 | za += zs; | ||
717 | if (za > 359) | ||
718 | za -= 360; | ||
719 | else if (za < 0) | ||
720 | za += 360; | ||
721 | redraw = true; | 673 | redraw = true; |
674 | |||
675 | if (highspeed) | ||
676 | rb->yield(); | ||
677 | else | ||
678 | rb->sleep(HZ/25); | ||
679 | button = rb->button_get(false); | ||
680 | } | ||
681 | else | ||
682 | { | ||
683 | button = rb->button_get_w_tmo(HZ/25); | ||
722 | } | 684 | } |
723 | 685 | ||
724 | button = rb->button_get(false); | ||
725 | switch (button) | 686 | switch (button) |
726 | { | 687 | { |
727 | case CUBE_X_INC: | 688 | case CUBE_INC: |
728 | case (CUBE_X_INC|BUTTON_REPEAT): | 689 | case CUBE_INC|BUTTON_REPEAT: |
729 | if( !paused ) | 690 | if (!paused) |
730 | { | 691 | { |
731 | if( xs < 10) | 692 | if (axes[curr].speed < 10) |
732 | xs++; | 693 | axes[curr].speed++; |
733 | } | 694 | } |
734 | else | 695 | else |
735 | { | 696 | { |
736 | xa++; | 697 | if (++axes[curr].angle > 359) |
737 | if( xa > 359 ) | 698 | axes[curr].angle -= 360; |
738 | xa -= 360; | ||
739 | } | 699 | } |
740 | t_disp = DISP_TIME; | 700 | t_disp = DISP_TIME; |
741 | redraw = true; | 701 | redraw = true; |
742 | break; | 702 | break; |
743 | 703 | ||
744 | case CUBE_X_DEC: | 704 | case CUBE_DEC: |
745 | case (CUBE_X_DEC|BUTTON_REPEAT): | 705 | case CUBE_DEC|BUTTON_REPEAT: |
746 | if( !paused ) | 706 | if (!paused) |
747 | { | 707 | { |
748 | if (xs > -10) | 708 | if (axes[curr].speed > -10) |
749 | xs--; | 709 | axes[curr].speed--; |
750 | } | 710 | } |
751 | else | 711 | else |
752 | { | 712 | { |
753 | xa--; | 713 | if (--axes[curr].angle < 0) |
754 | if( xa < 0 ) | 714 | axes[curr].angle += 360; |
755 | xa += 360; | ||
756 | } | 715 | } |
757 | t_disp = DISP_TIME; | 716 | t_disp = DISP_TIME; |
758 | redraw = true; | 717 | redraw = true; |
759 | break; | 718 | break; |
760 | 719 | ||
761 | case CUBE_Y_INC: | 720 | case CUBE_NEXT: |
762 | case (CUBE_Y_INC|BUTTON_REPEAT): | 721 | if (++curr > 2) |
763 | if( !paused ) | 722 | curr = 0; |
764 | { | ||
765 | if (ys < 10) | ||
766 | ys++; | ||
767 | } | ||
768 | else | ||
769 | { | ||
770 | ya++; | ||
771 | if( ya > 359 ) | ||
772 | ya -= 360; | ||
773 | } | ||
774 | t_disp = DISP_TIME; | 723 | t_disp = DISP_TIME; |
775 | redraw = true; | ||
776 | break; | 724 | break; |
777 | 725 | ||
778 | case CUBE_Y_DEC: | 726 | case CUBE_PREV: |
779 | case (CUBE_Y_DEC|BUTTON_REPEAT): | 727 | if (--curr < 0) |
780 | if( !paused ) | 728 | curr = 2; |
781 | { | ||
782 | if (ys > -10) | ||
783 | ys--; | ||
784 | } | ||
785 | else | ||
786 | { | ||
787 | ya--; | ||
788 | if( ya < 0 ) | ||
789 | ya += 360; | ||
790 | } | ||
791 | t_disp = DISP_TIME; | 729 | t_disp = DISP_TIME; |
792 | redraw = true; | ||
793 | break; | ||
794 | |||
795 | case CUBE_Z_INC: | ||
796 | case (CUBE_Z_INC|BUTTON_REPEAT): | ||
797 | if( !paused ) | ||
798 | { | ||
799 | if (zs < 10) | ||
800 | zs++; | ||
801 | } | ||
802 | else | ||
803 | { | ||
804 | za++; | ||
805 | if( za > 359 ) | ||
806 | za -= 360; | ||
807 | } | ||
808 | t_disp = DISP_TIME; | ||
809 | redraw = true; | ||
810 | break; | ||
811 | |||
812 | case CUBE_Z_DEC: | ||
813 | case (CUBE_Z_DEC|BUTTON_REPEAT): | ||
814 | if( !paused ) | ||
815 | { | ||
816 | if (zs > -10) | ||
817 | zs--; | ||
818 | } | ||
819 | else | ||
820 | { | ||
821 | za--; | ||
822 | if( za < 0 ) | ||
823 | za += 360; | ||
824 | } | ||
825 | t_disp = DISP_TIME; | ||
826 | redraw = true; | ||
827 | break; | 730 | break; |
828 | 731 | ||
829 | case CUBE_MODE: | 732 | case CUBE_MODE: |