summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Drake <michael.drake@codethink.co.uk>2019-08-03 09:25:23 +0100
committerMichael Drake <michael.drake@codethink.co.uk>2019-08-03 09:25:23 +0100
commitf23427a39e21b1b613a5582181d8067b54aa645b (patch)
tree1246cd54109b57e702f3d5c24c6f98612d52bb3c /src
parentffc7d20558295fea7a9d48352087822575968a0f (diff)
downloadlibnsfb-f23427a39e21b1b613a5582181d8067b54aa645b.tar.gz
libnsfb-f23427a39e21b1b613a5582181d8067b54aa645b.tar.bz2
32bpp-xrgb8888: Optimise pixel/colour conversion.
This saves an `&` in the source, but also the compiler spots that `(c >> 16) | (c << 16)` is a rotation. Thanks to Adrian Lees.
Diffstat (limited to 'src')
-rw-r--r--src/plot/32bpp-xrgb8888.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/src/plot/32bpp-xrgb8888.c b/src/plot/32bpp-xrgb8888.c
index 6f77f44..28e6673 100644
--- a/src/plot/32bpp-xrgb8888.c
+++ b/src/plot/32bpp-xrgb8888.c
@@ -66,9 +66,7 @@ static inline uint32_t colour_to_pixel(UNUSED nsfb_t *nsfb, nsfb_colour_t c)
*/
static inline nsfb_colour_t pixel_to_colour(UNUSED nsfb_t *nsfb, uint32_t pixel)
{
- return ((pixel & 0xFF) << 16) |
- ((pixel & 0xFF00)) |
- ((pixel & 0xFF0000) >> 16);
+ return (((pixel >> 16) | (pixel << 16)) & 0xff00ff) | (pixel & 0xff00);
}
@@ -81,7 +79,7 @@ static inline nsfb_colour_t pixel_to_colour(UNUSED nsfb_t *nsfb, uint32_t pixel)
*/
static inline uint32_t colour_to_pixel(UNUSED nsfb_t *nsfb, nsfb_colour_t c)
{
- return ((c & 0xff0000) >> 16) | (c & 0xff00) | ((c & 0xff) << 16);
+ return (((c >> 16) | (c << 16)) & 0xff00ff) | (c & 0xff00);
}
#endif