diff options
author | Jens Arnold <amiconn@rockbox.org> | 2004-10-18 21:45:00 +0000 |
---|---|---|
committer | Jens Arnold <amiconn@rockbox.org> | 2004-10-18 21:45:00 +0000 |
commit | e35a658ded457698aca2401b699e743a3011cfce (patch) | |
tree | cb89b7785ef2c72f7a293fe165a4d3b76e38227f /apps/plugins/mandelbrot.c | |
parent | d24766675db5faddb67810ca67b37491d49c2313 (diff) | |
download | rockbox-e35a658ded457698aca2401b699e743a3011cfce.tar.gz rockbox-e35a658ded457698aca2401b699e743a3011cfce.zip |
Plugin rework 2: (all) Compile-time keyboard configuration, for Ondio adaption. (all) Now using the default event handler, standard placement is now in switch() default case. (minesweeper,pong,snake,snake2) added USB handling. (mandelbrot,mosaique) Fixed return value. (minesweeper) fast moving with button repeat. (oscillograph) Fixed cleanup in USB case.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@5304 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/plugins/mandelbrot.c')
-rw-r--r-- | apps/plugins/mandelbrot.c | 64 |
1 files changed, 52 insertions, 12 deletions
diff --git a/apps/plugins/mandelbrot.c b/apps/plugins/mandelbrot.c index 5547d86535..2e9cb97eec 100644 --- a/apps/plugins/mandelbrot.c +++ b/apps/plugins/mandelbrot.c | |||
@@ -23,6 +23,27 @@ | |||
23 | #ifdef HAVE_LCD_BITMAP // this is not fun on the player | 23 | #ifdef HAVE_LCD_BITMAP // this is not fun on the player |
24 | # include "gray.h" | 24 | # include "gray.h" |
25 | 25 | ||
26 | /* variable button definitions */ | ||
27 | #if CONFIG_KEYPAD == RECORDER_PAD | ||
28 | #define MANDELBROT_QUIT BUTTON_OFF | ||
29 | #define MANDELBROT_ZOOM_IN BUTTON_PLAY | ||
30 | #define MANDELBROT_ZOOM_OUT BUTTON_ON | ||
31 | #define MANDELBROT_MAXITER_INC BUTTON_F2 | ||
32 | #define MANDELBROT_MAXITER_DEC BUTTON_F1 | ||
33 | #define MANDELBROT_RESET BUTTON_F3 | ||
34 | |||
35 | #elif CONFIG_KEYPAD == ONDIO_PAD | ||
36 | #define MANDELBROT_QUIT BUTTON_OFF | ||
37 | #define MANDELBROT_ZOOM_IN_PRE BUTTON_MENU | ||
38 | #define MANDELBROT_ZOOM_IN (BUTTON_MENU | BUTTON_REL) | ||
39 | #define MANDELBROT_ZOOM_IN2 (BUTTON_MENU | BUTTON_UP) | ||
40 | #define MANDELBROT_ZOOM_OUT (BUTTON_MENU | BUTTON_DOWN) | ||
41 | #define MANDELBROT_MAXITER_INC (BUTTON_MENU | BUTTON_RIGHT) | ||
42 | #define MANDELBROT_MAXITER_DEC (BUTTON_MENU | BUTTON_LEFT) | ||
43 | #define MANDELBROT_RESET (BUTTON_MENU | BUTTON_OFF) | ||
44 | |||
45 | #endif | ||
46 | |||
26 | static struct plugin_api* rb; | 47 | static struct plugin_api* rb; |
27 | static char buff[32]; | 48 | static char buff[32]; |
28 | static int lcd_aspect_ratio; | 49 | static int lcd_aspect_ratio; |
@@ -101,9 +122,17 @@ void calc_mandelbrot_set(void){ | |||
101 | } | 122 | } |
102 | } | 123 | } |
103 | 124 | ||
125 | void cleanup(void *parameter) | ||
126 | { | ||
127 | (void)parameter; | ||
128 | |||
129 | gray_release_buffer(); | ||
130 | } | ||
104 | 131 | ||
105 | enum plugin_status plugin_start(struct plugin_api* api, void* parameter) | 132 | enum plugin_status plugin_start(struct plugin_api* api, void* parameter) |
106 | { | 133 | { |
134 | int button; | ||
135 | int lastbutton = BUTTON_NONE; | ||
107 | int grayscales; | 136 | int grayscales; |
108 | bool redraw = true; | 137 | bool redraw = true; |
109 | 138 | ||
@@ -141,12 +170,13 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter) | |||
141 | 170 | ||
142 | redraw = false; | 171 | redraw = false; |
143 | 172 | ||
144 | switch (rb->button_get(true)) { | 173 | button = rb->button_get(true); |
145 | case BUTTON_OFF: | 174 | switch (button) { |
175 | case MANDELBROT_QUIT: | ||
146 | gray_release_buffer(); | 176 | gray_release_buffer(); |
147 | return PLUGIN_OK; | 177 | return PLUGIN_OK; |
148 | 178 | ||
149 | case BUTTON_ON: | 179 | case MANDELBROT_ZOOM_OUT: |
150 | x_min -= ((delta>>13)*(lcd_aspect_ratio>>13)); | 180 | x_min -= ((delta>>13)*(lcd_aspect_ratio>>13)); |
151 | x_max += ((delta>>13)*(lcd_aspect_ratio>>13)); | 181 | x_max += ((delta>>13)*(lcd_aspect_ratio>>13)); |
152 | y_min -= delta; | 182 | y_min -= delta; |
@@ -156,7 +186,14 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter) | |||
156 | break; | 186 | break; |
157 | 187 | ||
158 | 188 | ||
159 | case BUTTON_PLAY: | 189 | case MANDELBROT_ZOOM_IN: |
190 | #ifdef MANDELBROT_ZOOM_IN_PRE | ||
191 | if (lastbutton != MANDELBROT_ZOOM_IN_PRE) | ||
192 | break; | ||
193 | #endif | ||
194 | #ifdef MANDELBROT_ZOOM_IN2 | ||
195 | case MANDELBROT_ZOOM_IN2: | ||
196 | #endif | ||
160 | x_min += ((delta>>13)*(lcd_aspect_ratio>>13)); | 197 | x_min += ((delta>>13)*(lcd_aspect_ratio>>13)); |
161 | x_max -= ((delta>>13)*(lcd_aspect_ratio>>13)); | 198 | x_max -= ((delta>>13)*(lcd_aspect_ratio>>13)); |
162 | y_min += delta; | 199 | y_min += delta; |
@@ -189,33 +226,36 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter) | |||
189 | redraw = true; | 226 | redraw = true; |
190 | break; | 227 | break; |
191 | 228 | ||
192 | case BUTTON_F1: | 229 | case MANDELBROT_MAXITER_DEC: |
193 | if (max_iter>5){ | 230 | if (max_iter>5){ |
194 | max_iter -= 5; | 231 | max_iter -= 5; |
195 | redraw = true; | 232 | redraw = true; |
196 | } | 233 | } |
197 | break; | 234 | break; |
198 | 235 | ||
199 | case BUTTON_F2: | 236 | case MANDELBROT_MAXITER_INC: |
200 | if (max_iter < 195){ | 237 | if (max_iter < 195){ |
201 | max_iter += 5; | 238 | max_iter += 5; |
202 | redraw = true; | 239 | redraw = true; |
203 | } | 240 | } |
204 | break; | 241 | break; |
205 | 242 | ||
206 | case BUTTON_F3: | 243 | case MANDELBROT_RESET: |
207 | init_mandelbrot_set(); | 244 | init_mandelbrot_set(); |
208 | redraw = true; | 245 | redraw = true; |
209 | break; | 246 | break; |
210 | 247 | ||
211 | case SYS_USB_CONNECTED: | 248 | default: |
212 | gray_release_buffer(); | 249 | if (rb->default_event_handler_ex(button, cleanup, NULL) |
213 | rb->usb_screen(); | 250 | == SYS_USB_CONNECTED) |
214 | return PLUGIN_USB_CONNECTED; | 251 | return PLUGIN_USB_CONNECTED; |
252 | break; | ||
215 | } | 253 | } |
254 | if (button != BUTTON_NONE) | ||
255 | lastbutton = button; | ||
216 | } | 256 | } |
217 | gray_release_buffer(); | 257 | gray_release_buffer(); |
218 | return false; | 258 | return PLUGIN_OK; |
219 | } | 259 | } |
220 | #endif | 260 | #endif |
221 | #endif | 261 | #endif |