summaryrefslogtreecommitdiff
path: root/apps/plugins/test_resize.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/plugins/test_resize.c')
-rw-r--r--apps/plugins/test_resize.c55
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;
}
}