41 #define BM_col_to_byte(x) ((x) >> 3) 42 #define BM_col_to_bit(x) ((x) & 7) 70 map->
bytes = (x + 7) / 8;
72 void *tmp_map_data = (
unsigned char *)calloc(map->
bytes * y,
sizeof(
char));
73 if (tmp_map_data ==
NULL){
77 map->
data = tmp_map_data;
161 fprintf(stderr,
"BM_set_mode: Unknown mode: %d\n", mode);
166 fprintf(stderr,
"BM_set_mode: Bad size: %d\n", size);
194 if (x < 0 || x >= map->
cols || y < 0 || y >= map->
rows)
227 if (x < 0 || x >= map->
cols || y < 0 || y >= map->
rows)
281 fwrite(&c,
sizeof(
char),
sizeof(
char), fp);
286 fwrite(&c,
sizeof(
char),
sizeof(
char), fp);
288 fwrite(&(map->
rows),
sizeof(map->
rows),
sizeof(
char), fp);
290 fwrite(&(map->
cols),
sizeof(map->
cols),
sizeof(
char), fp);
292 for (i = 0; i < map->
rows; i++)
328 fread(&c,
sizeof(
char),
sizeof(
char), fp);
337 fread(&c,
sizeof(
char),
sizeof(
char), fp);
341 fread(&(map->
rows),
sizeof(map->
rows),
sizeof(
char), fp);
343 fread(&(map->
cols),
sizeof(map->
cols),
sizeof(
char), fp);
357 for (i = 0; i < map->
rows; i++)
359 fread(&(map->
data[i * map->
bytes]),
sizeof(
char), map->
bytes, fp))
371 if (
NULL == (map->
data = (
unsigned char *)
375 for (y = 0; y < map->
rows; y++) {
377 fread(&i,
sizeof(i),
sizeof(
char), fp);
382 for (i = 0; i < cnt; i++) {
394 fread(&n,
sizeof(n),
sizeof(
char), fp);
397 fread(&n,
sizeof(n),
sizeof(
char), fp);
int BM_get(struct BM *map, int x, int y)
Gets 'val' from the bitmap.
void link_set_chunk_size(int)
int BM_file_write(FILE *fp, struct BM *map)
Write bitmap out to file.
int BM_destroy(struct BM *map)
Destroy bitmap and free all associated memory.
int BM_set_sparse(struct BM *, int, int, int)
Set sparse bitmap value to 'val' at location 'x'/'y'.
VOID_T * link_new(struct link_head *)
int BM_destroy_sparse(struct BM *)
Destroy sparse bitmap and free all associated memory.
struct BM * BM_file_read(FILE *fp)
Create map structure and load it from file.
int BM_file_write_sparse(FILE *, struct BM *)
Write sparse bitmap matrix out to disk file 'fp'. NOTE: 'fp' must already be opened and later closed ...
struct BM * BM_create(int x, int y)
Create bitmap of dimension x/y and return structure token.
#define BM_col_to_byte(x)
struct link_head * link_init(int)
size_t BM_get_map_size(struct BM *map)
Returns size in bytes that bitmap is taking up.
struct BM * BM_create_sparse(int, int)
Create a sparse bitmap of dimension 'x'/'y'.
int BM_get_sparse(struct BM *, int, int)
Returns sparse bitmap value at location 'x'/'y'.
size_t BM_get_map_size_sparse(struct BM *)
Returns size of sparse bitmap in bytes.
int BM_set_mode(int mode, int size)
Specify the type of data structure to use for bitmap. 'mode' can be either BM_FLAT or BM_SPARSE: ...
int BM_set(struct BM *map, int x, int y, int val)
Sets bitmap value to 'val' at location 'x' 'y'.