From 328a29d22f81b838a0a6b2f1d3d5fc4dbfe5e6e7 Mon Sep 17 00:00:00 2001 From: John-Mark Bell Date: Sat, 20 Jan 2018 15:33:05 +0000 Subject: RSVG: fix colour conversion --- content/handlers/image/rsvg.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'content/handlers/image') diff --git a/content/handlers/image/rsvg.c b/content/handlers/image/rsvg.c index ca2d81eeb..2ba1b49f5 100644 --- a/content/handlers/image/rsvg.c +++ b/content/handlers/image/rsvg.c @@ -39,6 +39,8 @@ #include #endif +#include + #include "utils/log.h" #include "utils/utils.h" #include "utils/messages.h" @@ -139,15 +141,21 @@ static inline void rsvg_argb_to_abgr(uint8_t *pixels, int width, int height, size_t rowstride) { uint8_t *p = pixels; + int boff = 0, roff = 2; + + if (endian_host_is_le() == false) { + boff = 1; + roff = 3; + } for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { /* Swap R and B */ - const uint8_t r = p[x+3]; + const uint8_t r = p[4*x+roff]; - p[x+3] = p[x]; + p[4*x+roff] = p[4*x+boff]; - p[x] = r; + p[4*x+boff] = r; } p += rowstride; -- cgit v1.2.3