00001
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066 #ifndef GFX_GFX_P_H
00067 #define GFX_GFX_P_H
00068
00069 #include <gfx/gfx.h>
00070
00071 #if CONFIG_BITMAP_FMT == BITMAP_FMT_PLANAR_H_MSB
00072
00073
00074 #define RAST_ADDR(raster, x, y, stride) \
00075 ((raster) + (ucoord_t)(y) * (ucoord_t)(stride) + (ucoord_t)(x) / 8)
00076 #define RAST_MASK(raster, x, y) \
00077 (1 << (7 - (ucoord_t)(x) % 8))
00078
00079 #elif CONFIG_BITMAP_FMT == BITMAP_FMT_PLANAR_V_LSB
00080
00081
00082 #define RAST_ADDR(raster, x, y, stride) \
00083 ((raster) + ((ucoord_t)(y) / 8) * (ucoord_t)(stride) + (ucoord_t)(x))
00084 #define RAST_MASK(raster, x, y) \
00085 (1 << ((ucoord_t)(y) % 8))
00086
00087 #else
00088 #error Unknown value of CONFIG_BITMAP_FMT
00089 #endif
00090
00091 #define BM_ADDR(bm, x, y) RAST_ADDR((bm)->raster, (x), (y), (bm)->stride)
00092 #define BM_MASK(bm, x, y) RAST_MASK((bm)->raster, (x), (y))
00093
00100 #define BM_PLOT(bm, x, y) \
00101 ( *BM_ADDR(bm, x, y) |= BM_MASK(bm, x, y) )
00102
00109 #define BM_CLEAR(bm, x, y) \
00110 ( *BM_ADDR(bm, x, y) &= ~BM_MASK(bm, x, y) )
00111
00119 #define BM_DRAWPIXEL(bm, x, y, fg_pen) \
00120 do { \
00121 uint8_t *p = BM_ADDR(bm, x, y); \
00122 uint8_t mask = BM_MASK(bm, x, y); \
00123 *p = (*p & ~mask) | ((fg_pen) ? mask : 0); \
00124 } while (0)
00125
00134 #define BM_READPIXEL(bm, x, y) \
00135 ( *BM_ADDR(bm, x, y) & BM_MASK(bm, x, y) ? 1 : 0 )
00136
00137 #define RAST_READPIXEL(raster, x, y, stride) \
00138 ( *RAST_ADDR(raster, x, y, stride) & RAST_MASK(raster, x, y) ? 1 : 0 )
00139
00140 #endif