X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=gfx%2Fgfx_p.h;h=a599a8aa9ca8b903a58df4f2b3cd8f09f02abf70;hb=692e9c10552590debbd51552d71e49960f323b6b;hp=5b483ab1db659bd868689da578c39755eb96a3e6;hpb=1661811803a323488afb5617a01a3263ecff9d9c;p=bertos.git diff --git a/gfx/gfx_p.h b/gfx/gfx_p.h index 5b483ab1..a599a8aa 100755 --- a/gfx/gfx_p.h +++ b/gfx/gfx_p.h @@ -15,6 +15,9 @@ /*#* *#* $Log$ + *#* Revision 1.6 2006/05/27 17:17:34 bernie + *#* Optimize away divisions in RAST_ADDR/MASK macros. + *#* *#* Revision 1.5 2006/05/25 23:35:40 bernie *#* Cleanup. *#* @@ -35,16 +38,23 @@ #ifndef GFX_GFX_P_H #define GFX_GFX_P_H +#include #if CONFIG_BITMAP_FMT == BITMAP_FMT_PLANAR_H_MSB - #define RAST_ADDR(raster, x, y, stride) ((raster) + (y) * (stride) + (x) / 8) - #define RAST_MASK(raster, x, y) (1 << (7 - (x) % 8)) + /* We use ucoord_t to let the compiler optimize away the division/modulo. */ + #define RAST_ADDR(raster, x, y, stride) \ + ((raster) + (ucoord_t)(y) * (ucoord_t)(stride) + (ucoord_t)(x) / 8) + #define RAST_MASK(raster, x, y) \ + (1 << (7 - (ucoord_t)(x) % 8)) #elif CONFIG_BITMAP_FMT == BITMAP_FMT_PLANAR_V_LSB - #define RAST_ADDR(raster, x, y, stride) ((raster) + ((y) / 8) * (stride) + (x)) - #define RAST_MASK(raster, x, y) (1 << ((y) % 8)) + /* We use ucoord_t to let the compiler optimize away the division/modulo. */ + #define RAST_ADDR(raster, x, y, stride) \ + ((raster) + ((ucoord_t)(y) / 8) * (ucoord_t)(stride) + (ucoord_t)(x)) + #define RAST_MASK(raster, x, y) \ + (1 << ((ucoord_t)(y) % 8)) #else #error Unknown value of CONFIG_BITMAP_FMT