diff options
Diffstat (limited to 'apps/plugins/test_resize.c')
| -rw-r--r-- | apps/plugins/test_resize.c | 55 |
1 files changed, 39 insertions, 16 deletions
diff --git a/apps/plugins/test_resize.c b/apps/plugins/test_resize.c index 8583613..c50bc5f 100644 --- a/apps/plugins/test_resize.c +++ b/apps/plugins/test_resize.c @@ -36,31 +36,28 @@ const struct button_mapping *plugin_contexts[] #define NB_ACTION_CONTEXTS sizeof(plugin_contexts)/sizeof(plugin_contexts[0]) /* Key assignement */ -#if (CONFIG_KEYPAD == IPOD_1G2G_PAD) \ - || (CONFIG_KEYPAD == IPOD_3G_PAD) \ - || (CONFIG_KEYPAD == IPOD_4G_PAD) \ - || (CONFIG_KEYPAD == SANSA_E200_PAD) #define SIZE_INCREASE PLA_UP #define SIZE_INCREASE_REPEAT PLA_UP_REPEAT #define SIZE_DECREASE PLA_DOWN #define SIZE_DECREASE_REPEAT PLA_DOWN_REPEAT -#else -#define SIZE_INCREASE PLA_RIGHT -#define SIZE_INCREASE_REPEAT PLA_RIGHT_REPEAT -#define SIZE_DECREASE PLA_LEFT -#define SIZE_DECREASE_REPEAT PLA_LEFT_REPEAT -#endif + +#define WIDTH_INCREASE PLA_RIGHT +#define WIDTH_INCREASE_REPEAT PLA_RIGHT_REPEAT +#define WIDTH_DECREASE PLA_LEFT +#define WIDTH_DECREASE_REPEAT PLA_LEFT_REPEAT + #define BUTTON_QUIT PLA_QUIT +#define CHANGE_MODE PLA_MENU -#define MAX_OUTPUT_WIDTH 200 -#define MAX_OUTPUT_HEIGHT 200 +#define MAX_OUTPUT_WIDTH LCD_WIDTH +#define MAX_OUTPUT_HEIGHT LCD_HEIGHT static fb_data *b; static struct bitmap input_bmp; static struct bitmap output_bmp; -static fb_data input_bmp_data[100*100]; +static fb_data input_bmp_data[200*200]; static fb_data output_bmp_data[MAX_OUTPUT_WIDTH*MAX_OUTPUT_HEIGHT]; @@ -93,11 +90,22 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter) DEBUGF("input_bmp_data starts at %p\n", input_bmp_data); DEBUGF("output_bmp_data starts at %p\n", output_bmp_data); + int scale_algorithm = 0; + while(1) { rb->lcd_clear_display(); rb->lcd_bitmap(input_bmp_data, 0, 0, input_bmp.width, input_bmp.height); - simple_resize_bitmap(&input_bmp, &output_bmp); + switch ( scale_algorithm ) { + case 0: + smooth_resize_bitmap(&input_bmp, &output_bmp); + rb->lcd_putsxy(0,0,"smooth_resize_bitmap"); + break; + case 1: + simple_resize_bitmap(&input_bmp, &output_bmp); + rb->lcd_putsxy(0,0,"simple_resize_bitmap"); + break; + } rb->lcd_bitmap(output_bmp_data, 0, 100, output_bmp.width, output_bmp.height); @@ -118,8 +126,23 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter) case SIZE_DECREASE: case SIZE_DECREASE_REPEAT: - if (output_bmp.width >= 2) output_bmp.width -= 2; - if (output_bmp.height >= 2) output_bmp.height -= 2; + if (output_bmp.width > 2) output_bmp.width -= 2; + if (output_bmp.height > 2) output_bmp.height -= 2; + break; + + case WIDTH_INCREASE: + case WIDTH_INCREASE_REPEAT: + if (output_bmp.width < MAX_OUTPUT_WIDTH - 2) + output_bmp.width += 2; + break; + + case WIDTH_DECREASE: + case WIDTH_DECREASE_REPEAT: + if (output_bmp.width > 2) output_bmp.width -= 2; + break; + + case CHANGE_MODE: + scale_algorithm = (scale_algorithm+1)%2; break; } } |