X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=gfx%2Fgfx_p.h;h=c2f10b49fdb340591059e03c401182f551b68dad;hb=0e98bd5ee418681c347fc7fbe02ad53c59502f41;hp=0df757187da4955bc47121800db47500d81eeb71;hpb=13a373300e871787938e2d647dd8dd048294a2f0;p=bertos.git diff --git a/gfx/gfx_p.h b/gfx/gfx_p.h old mode 100755 new mode 100644 index 0df75718..c2f10b49 --- a/gfx/gfx_p.h +++ b/gfx/gfx_p.h @@ -1,9 +1,34 @@ -/*! +/** * \file * * * \version $Id$ @@ -15,6 +40,15 @@ /*#* *#* $Log$ + *#* Revision 1.7 2006/07/19 12:56:26 bernie + *#* Convert to new Doxygen style. + *#* + *#* 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 +66,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 */ @@ -49,7 +91,7 @@ #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. * * \note bm is evaluated twice. @@ -58,7 +100,7 @@ #define BM_PLOT(bm, x, y) \ ( *BM_ADDR(bm, x, y) |= BM_MASK(bm, x, y) ) -/*! +/** * Clear a pixel in bitmap \a bm. * * \note bm is evaluated twice. @@ -67,7 +109,7 @@ #define BM_CLEAR(bm, x, y) \ ( *BM_ADDR(bm, x, y) &= ~BM_MASK(bm, x, y) ) -/*! +/** * Set a pixel in bitmap \a bm to the specified color. * * \note bm is evaluated twice. @@ -81,7 +123,7 @@ *p = (*p & ~mask) | ((fg_pen) ? mask : 0); \ } while (0) -/*! +/** * Get the value of the pixel in bitmap \a bm. * * \return The returned value is either 0 or 1.