X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=gfx%2Fgfx_p.h;h=a599a8aa9ca8b903a58df4f2b3cd8f09f02abf70;hb=7b3578b47c87c81dfe44a38404898c5664b3c3f3;hp=101eb12c89ae85cc39f84498c183e6c7fc8ff0d1;hpb=39108834d9c102712d6c11830ca9b9fb5b098d19;p=bertos.git diff --git a/gfx/gfx_p.h b/gfx/gfx_p.h index 101eb12c..a599a8aa 100755 --- a/gfx/gfx_p.h +++ b/gfx/gfx_p.h @@ -15,6 +15,15 @@ /*#* *#* $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. + *#* *#* Revision 1.3 2006/02/15 09:10:15 bernie *#* Implement prop fonts; Fix algo styles. *#* @@ -29,28 +38,31 @@ #ifndef GFX_GFX_P_H #define GFX_GFX_P_H +#include #if CONFIG_BITMAP_FMT == BITMAP_FMT_PLANAR_H_MSB - //TODO: Collapse with RAST_* macros - #define BM_ADDR(bm, x, y) ((bm)->raster + (y) * (bm)->stride + ((x) / 8)) - #define BM_MASK(bm, x, y) (1 << (7 - (x) % 8)) - - #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 BM_ADDR(bm, x, y) ((bm)->raster + ((y) / 8) * (bm)->stride + (x)) - #define BM_MASK(bm, 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)) - // FIXME: not the same format of bitmaps! - #define RAST_ADDR(raster, x, y, stride) ((raster) + (y) / 8 + (x) * (stride)) - #define RAST_MASK(raster, x, y) (1 << ((y) % 8)) #else #error Unknown value of CONFIG_BITMAP_FMT #endif /* CONFIG_BITMAP_FMT */ +#define BM_ADDR(bm, x, y) RAST_ADDR((bm)->raster, (x), (y), (bm)->stride) +#define BM_MASK(bm, x, y) RAST_MASK((bm)->raster, (x), (y)) + /*! * Plot a pixel in bitmap \a bm. *