summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/plugins/lib/bmp_smooth_scale.c7
-rw-r--r--apps/plugins/lib/pluginlib_bmp.c29
2 files changed, 28 insertions, 8 deletions
diff --git a/apps/plugins/lib/bmp_smooth_scale.c b/apps/plugins/lib/bmp_smooth_scale.c
index 4d5eab00a0..e99ff33d71 100644
--- a/apps/plugins/lib/bmp_smooth_scale.c
+++ b/apps/plugins/lib/bmp_smooth_scale.c
@@ -78,10 +78,17 @@ void smooth_resize_bitmap(struct bitmap *src_bmp, struct bitmap *dest_bmp)
fb_data *sptr, *dptr;
int x, y, end;
int val_y = 0, val_x;
+#if defined(LCD_STRIDEFORMAT) && LCD_STRIDEFORMAT == VERTICAL_STRIDE
+ const int sw = src_bmp->height;
+ const int sh = src_bmp->width;
+ const int dw = dest_bmp->height;
+ const int dh = dest_bmp->width;
+#else
const int sw = src_bmp->width;
const int sh = src_bmp->height;
const int dw = dest_bmp->width;
const int dh = dest_bmp->height;
+#endif
const int inc_x = (sw << 16) / dw;
const int inc_y = (sh << 16) / dh;
const int Cp_x = ((dw << 14) / sw) + 1;
diff --git a/apps/plugins/lib/pluginlib_bmp.c b/apps/plugins/lib/pluginlib_bmp.c
index 148aa8e1de..708abfa4a4 100644
--- a/apps/plugins/lib/pluginlib_bmp.c
+++ b/apps/plugins/lib/pluginlib_bmp.c
@@ -86,31 +86,45 @@ int save_bmp_file( char* filename, struct bitmap *bm )
rb->close( fh );
return 1;
}
-#endif
+#endif /* HAVE_LCD_COLOR */
/**
Very simple image scale from src to dst (nearest neighbour).
Source and destination dimensions are read from the struct bitmap.
+
+ FB_DATA define is to properly scale with greylib
*/
+#if LCD_DEPTH > 8
+#define FB_DATA fb_data
+#else
+#define FB_DATA unsigned char
+#endif
void simple_resize_bitmap(struct bitmap *src, struct bitmap *dst)
{
+#if defined(LCD_STRIDEFORMAT) && \
+ (LCD_STRIDEFORMAT == VERTICAL_STRIDE)
+ const int srcw = src->height;
+ const int srch = src->width;
+ const int dstw = dst->height;
+ const int dsth = dst->width;
+#else
const int srcw = src->width;
const int srch = src->height;
const int dstw = dst->width;
const int dsth = dst->height;
- const fb_data *srcd = (fb_data*)(src->data);
- const fb_data *dstd = (fb_data*)(dst->data);
-
+#endif
+ const FB_DATA *srcd = (FB_DATA *)(src->data);
+ const FB_DATA *dstd = (FB_DATA *)(dst->data);
const long xrstep = ((srcw-1) << 8) / (dstw-1);
const long yrstep = ((srch-1) << 8) / (dsth-1);
- fb_data *src_row, *dst_row;
+ FB_DATA *src_row, *dst_row;
long xr, yr = 0;
int src_x, src_y, dst_x, dst_y;
for (dst_y=0; dst_y < dsth; dst_y++)
{
src_y = (yr >> 8);
- src_row = (fb_data*)&srcd[src_y * srcw];
- dst_row = (fb_data*)&dstd[dst_y * dstw];
+ src_row = (FB_DATA *)&srcd[src_y * srcw];
+ dst_row = (FB_DATA *)&dstd[dst_y * dstw];
for (xr=0,dst_x=0; dst_x < dstw; dst_x++)
{
src_x = (xr >> 8);
@@ -120,7 +134,6 @@ void simple_resize_bitmap(struct bitmap *src, struct bitmap *dst)
yr += yrstep;
}
}
-
#endif /* LCD_DEPTH > 1 */
#include "wrappers.h"