|
|
|
#ifndef HAS_BITMAP_H
|
|
|
|
#define HAS_BITMAP_H 1
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @file
|
|
|
|
* @brief Functions for work with image bitmaps
|
|
|
|
*/
|
|
|
|
|
|
|
|
/** Bits per bitmap side (currently - 16) */
|
|
|
|
#define BITMAP_SIDE 16
|
|
|
|
/** Bitmap size in bytes (currently - 32) */
|
|
|
|
#define BITMAP_SIZE (BITMAP_SIDE * (BITMAP_SIDE / 8))
|
|
|
|
/** Total bits in bitmap (currently - 256) */
|
|
|
|
#define BITMAP_BITS (BITMAP_SIZE * 8)
|
|
|
|
|
|
|
|
/** placeholders for various bit states */
|
|
|
|
#define CHAR_USED '@' /**< bit is 1 */
|
|
|
|
#define CHAR_NONE '-' /**< bit is 0 */
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Compare two bitmaps
|
|
|
|
* @param a First bitmap to compare
|
|
|
|
* @param b Second bitmap to compare
|
|
|
|
* @returns Integer showing difference between bitmaps in bits (0-256)
|
|
|
|
*/
|
|
|
|
int
|
|
|
|
bitmap_compare(const unsigned char *a,
|
|
|
|
const unsigned char *b);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Make difference map of to bitmaps
|
|
|
|
* @param diff Storage for difference map
|
|
|
|
* @param a First bitmap to compare
|
|
|
|
* @param b Second bitmap to compare
|
|
|
|
* @returns Size of generated map (now is @a BITMAP_SIZE)
|
|
|
|
*/
|
|
|
|
size_t
|
|
|
|
bitmap_diffmap(unsigned char *diff,
|
|
|
|
const unsigned char *a,
|
|
|
|
const unsigned char *b);
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Unpack BITmap to BYTEmap
|
|
|
|
* @param map Source bitmap
|
|
|
|
* @param buf Pointer to store generated bytemap
|
|
|
|
* @returns Size of generated bytemap (now is @a BITMAP_BITS)
|
|
|
|
*/
|
|
|
|
size_t
|
|
|
|
bitmap_unpack(const unsigned char *map,
|
|
|
|
unsigned char ** const buf);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Print bitmap to stdout as ascii-square
|
|
|
|
* @param map Source bitmap
|
|
|
|
* @note Heigth of "square" is equals to BITMAP_SIDE,
|
|
|
|
* but width is BITMAP_SIDE x 2, for ease of reading
|
|
|
|
*/
|
|
|
|
void
|
|
|
|
bitmap_print(const unsigned char *map);
|
|
|
|
#endif
|