X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=gfx%2Fgfx_p.h;h=a599a8aa9ca8b903a58df4f2b3cd8f09f02abf70;hb=692e9c10552590debbd51552d71e49960f323b6b;hp=0df757187da4955bc47121800db47500d81eeb71;hpb=13a373300e871787938e2d647dd8dd048294a2f0;p=bertos.git diff --git a/gfx/gfx_p.h b/gfx/gfx_p.h index 0df75718..a599a8aa 100755 --- a/gfx/gfx_p.h +++ b/gfx/gfx_p.h @@ -15,6 +15,12 @@ /*#* *#* $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. + *#* *#* Revision 1.4 2006/03/22 09:50:37 bernie *#* Use the same format for fonts and rasters. *#* @@ -32,16 +38,24 @@ #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 #endif /* CONFIG_BITMAP_FMT */