/* bitmap.h: definition for a bitmap type. No packing is done by default; each pixel is represented by an entire byte. Among other things, this means the type can be used for both grayscale and binary images. */ #ifndef BITMAP_H #define BITMAP_H #include "autotrace.h" #include /* at_ prefix removed version */ typedef at_bitmap_type bitmap_type; #define BITMAP_PLANES(b) AT_BITMAP_PLANES(b) #define BITMAP_BITS(b) AT_BITMAP_BITS(b) #define BITMAP_WIDTH(b) AT_BITMAP_WIDTH(b) #define BITMAP_HEIGHT(b) AT_BITMAP_HEIGHT(b) /* This is the pixel at [ROW,COL]. */ #define BITMAP_PIXEL(b, row, col) \ ((b).bitmap + ((row) * (b).width + (col)) * (b).np) #define BITMAP_VALID_PIXEL(b, row, col) \ ((row) < (b).height && (col) < (b).width) /* Allocate storage for the bits, set them all to white, and return an initialized structure. */ extern bitmap_type new_bitmap (unsigned short width, unsigned short height); /* Free that storage. */ extern void free_bitmap (bitmap_type *); at_bitmap_type * at_bitmap_new(unsigned short width, unsigned short height, unsigned int planes); at_bitmap_type * at_bitmap_copy(at_bitmap_type * src); /* We have to export functions that allows internal datum access. Such functions might be useful for at_bitmap_new user. */ unsigned short at_bitmap_get_width (at_bitmap_type * bitmap); unsigned short at_bitmap_get_height (at_bitmap_type * bitmap); unsigned short at_bitmap_get_planes (at_bitmap_type * bitmap); void at_bitmap_free (at_bitmap_type * bitmap); at_bitmap_type at_bitmap_init(unsigned char * area, unsigned short width, unsigned short height, unsigned int planes); #endif /* not BITMAP_H */