GRASS Programmer's Manual  6.5.svn(2014)-r66266
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
bitmap.c File Reference
#include <stdio.h>
#include <stdlib.h>
#include <grass/linkm.h>
#include <grass/bitmap.h>
Include dependency graph for bitmap.c:

Go to the source code of this file.

Macros

#define BM_col_to_byte(x)   ((x)/8)
 
#define BM_col_to_bit(x)   ((x)%8)
 

Functions

struct BM * BM_create (int x, int y)
 Create bitmap of dimension x/y and return structure token. More...
 
int BM_destroy (struct BM *map)
 Destroy bitmap and free all associated memory. More...
 
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: More...
 
int BM_set (struct BM *map, int x, int y, int val)
 Sets bitmap value to 'val' at location 'x' 'y'. More...
 
int BM_get (struct BM *map, int x, int y)
 Gets 'val' from the bitmap. More...
 
int BM_get_map_size (struct BM *map)
 Returns size in bytes that bitmap is taking up. More...
 
int BM_file_write (FILE *fp, struct BM *map)
 Write bitmap out to file. More...
 
struct BM * BM_file_read (FILE *fp)
 Create map structure and load it from file. More...
 

Macro Definition Documentation

#define BM_col_to_bit (   x)    ((x)%8)

Definition at line 42 of file bitmap.c.

Referenced by BM_get(), and BM_set().

#define BM_col_to_byte (   x)    ((x)/8)

Definition at line 41 of file bitmap.c.

Referenced by BM_get(), and BM_set().

Function Documentation

struct BM* BM_create ( int  x,
int  y 
)

Create bitmap of dimension x/y and return structure token.

Bitmap is initialized to all zeros

Parameters
xx dimension
yy dimension
Returns
pointer to struct BM
NULL on error

Definition at line 60 of file bitmap.c.

References BM_create_sparse(), malloc(), NULL, and y.

Referenced by gs_update_curmask(), gsbm_make_mask(), gsds_alloc_typbuff(), IL_create_bitmask(), and main().

int BM_destroy ( struct BM *  map)

Destroy bitmap and free all associated memory.

Parameters
structBM *map
Returns
int returns 0

Definition at line 90 of file bitmap.c.

References BM_destroy_sparse(), and free().

Referenced by free_data_buffs(), gs_update_curmask(), and main().

struct BM* BM_file_read ( FILE *  fp)

Create map structure and load it from file.

'fp' should previously been created by BM_file_write()

Returns struct BM * or NULL on error

Parameters
fp
Returns
struct BM

Definition at line 313 of file bitmap.c.

References buf, link_init(), link_new(), link_set_chunk_size(), malloc(), n, NULL, and y.

Referenced by main().

int BM_file_write ( FILE *  fp,
struct BM *  map 
)

Write bitmap out to file.

Expects open file pointer 'fp' and existing map structure. Caller is responsible to open and close 'fp'.

Returns 0 or -1 on error

Parameters
fp
map
Returns
int

Definition at line 269 of file bitmap.c.

References BM_file_write_sparse().

Referenced by main().

int BM_get ( struct BM *  map,
int  x,
int  y 
)

Gets 'val' from the bitmap.

Returns 0 or 1 on success or -1 on error

Parameters
map
x
y
Returns
int

Definition at line 220 of file bitmap.c.

References BM_col_to_bit, BM_col_to_byte, and BM_get_sparse().

Referenced by calc_norm(), get_mapatt(), gs_masked(), gs_point_is_masked(), gsbm_make_mask(), gsd_norm_arrows(), gsd_surf_const(), gsd_surf_map_old(), gsd_wire_arrows(), gsd_wire_surf_const(), gsd_wire_surf_map(), IL_grid_calc_2d(), IL_secpar_loop_2d(), main(), and print_bm().

int BM_get_map_size ( struct BM *  map)

Returns size in bytes that bitmap is taking up.

Parameters
map
Returns
int

Definition at line 245 of file bitmap.c.

References BM_get_map_size_sparse().

Referenced by free_data_buffs(), gsds_alloc_typbuff(), and main().

int BM_set ( struct BM *  map,
int  x,
int  y,
int  val 
)

Sets bitmap value to 'val' at location 'x' 'y'.

Returns 0 on success

Parameters
map
x
y
val
Returns
int

Definition at line 187 of file bitmap.c.

References BM_col_to_bit, BM_col_to_byte, and BM_set_sparse().

Referenced by Gs_loadmap_as_bitmap(), Gs_loadmap_as_char(), Gs_loadmap_as_float(), Gs_loadmap_as_int(), Gs_loadmap_as_short(), gs_update_curmask(), gsbm_make_mask(), IL_create_bitmask(), and main().

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:

BM_FLAT is a basic packed bitmap - eight values stored per byte thus creating a 1:8 compression over using char arrays and a 1:32 compression over using CELL arrays.

BM_SPARSE is a linked array of values. This is much more efficient for large, very sparse arrays. It is slower to access, especially for writing, but can save several orders of magnitude of memory on large bitmaps.

NOTE: At this time 'size' must be passed a value of 1

returns 0 on success or -1 on error

Parameters
intmode
intsize
Returns
int

Definition at line 149 of file bitmap.c.

References tools::mode, and tools::size.