summaryrefslogtreecommitdiff
path: root/apps/plugins/pictureflow/pictureflow.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/plugins/pictureflow/pictureflow.c')
-rw-r--r--apps/plugins/pictureflow/pictureflow.c35
1 files changed, 29 insertions, 6 deletions
diff --git a/apps/plugins/pictureflow/pictureflow.c b/apps/plugins/pictureflow/pictureflow.c
index 82dc9748ec..6dd034c9a9 100644
--- a/apps/plugins/pictureflow/pictureflow.c
+++ b/apps/plugins/pictureflow/pictureflow.c
@@ -607,7 +607,29 @@ static inline uint32_t div255(uint32_t val)
#define SCALE_VAL(val,out) div255((val) * (out) + 127)
-static void output_row_transposed(uint32_t row, void * row_in,
+static void output_row_8_transposed(uint32_t row, void * row_in,
+ struct scaler_context *ctx)
+{
+ pix_t *dest = (pix_t*)ctx->bm->data + row;
+ pix_t *end = dest + ctx->bm->height * ctx->bm->width;
+#ifdef USEGSLIB
+ uint8_t *qp = (uint8_t*)row_in;
+ for (; dest < end; dest += ctx->bm->height)
+ *dest = *qp++;
+#else
+ struct uint8_rgb *qp = (struct uint8_rgb*)row_in;
+ unsigned r, g, b;
+ for (; dest < end; dest += ctx->bm->height)
+ {
+ r = qp->red;
+ g = qp->green;
+ b = (qp++)->blue;
+ *dest = LCD_RGBPACK_LCD(r,g,b);
+ }
+#endif
+}
+
+static void output_row_32_transposed(uint32_t row, void * row_in,
struct scaler_context *ctx)
{
pix_t *dest = (pix_t*)ctx->bm->data + row;
@@ -635,7 +657,7 @@ static void output_row_transposed(uint32_t row, void * row_in,
}
#ifdef HAVE_LCD_COLOR
-static void output_row_transposed_fromyuv(uint32_t row, void * row_in,
+static void output_row_32_transposed_fromyuv(uint32_t row, void * row_in,
struct scaler_context *ctx)
{
pix_t *dest = (pix_t*)ctx->bm->data + row;
@@ -663,13 +685,14 @@ static unsigned int get_size(struct bitmap *bm)
}
const struct custom_format format_transposed = {
+ .output_row_8 = output_row_8_transposed,
#ifdef HAVE_LCD_COLOR
- .output_row = {
- output_row_transposed,
- output_row_transposed_fromyuv
+ .output_row_32 = {
+ output_row_32_transposed,
+ output_row_32_transposed_fromyuv
},
#else
- .output_row = output_row_transposed,
+ .output_row_32 = output_row_32_transposed,
#endif
.get_size = get_size
};