OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
Macros
bitmap.h File Reference
#include <string.h>
#include <stdlib.h>
#include <errno.h>
#include <stddef.h>
#include "potracelib.h"

Go to the source code of this file.

Macros

#define BM_WORDSIZE   ((int)sizeof(potrace_word))
 
#define BM_WORDBITS   (8*BM_WORDSIZE)
 
#define BM_HIBIT   (((potrace_word)1)<<(BM_WORDBITS-1))
 
#define BM_ALLBITS   (~(potrace_word)0)
 
#define bm_scanline(bm, y)   ((bm)->map + (ptrdiff_t)(y)*(ptrdiff_t)(bm)->dy)
 
#define bm_index(bm, x, y)   (&bm_scanline(bm, y)[(x)/BM_WORDBITS])
 
#define bm_mask(x)   (BM_HIBIT >> ((x) & (BM_WORDBITS-1)))
 
#define bm_range(x, a)   ((int)(x) >= 0 && (int)(x) < (a))
 
#define bm_safe(bm, x, y)   (bm_range(x, (bm)->w) && bm_range(y, (bm)->h))
 
#define BM_UGET(bm, x, y)   ((*bm_index(bm, x, y) & bm_mask(x)) != 0)
 
#define BM_USET(bm, x, y)   (*bm_index(bm, x, y) |= bm_mask(x))
 
#define BM_UCLR(bm, x, y)   (*bm_index(bm, x, y) &= ~bm_mask(x))
 
#define BM_UINV(bm, x, y)   (*bm_index(bm, x, y) ^= bm_mask(x))
 
#define BM_UPUT(bm, x, y, b)   ((b) ? BM_USET(bm, x, y) : BM_UCLR(bm, x, y))
 
#define BM_GET(bm, x, y)   (bm_safe(bm, x, y) ? BM_UGET(bm, x, y) : 0)
 
#define BM_SET(bm, x, y)   (bm_safe(bm, x, y) ? BM_USET(bm, x, y) : 0)
 
#define BM_CLR(bm, x, y)   (bm_safe(bm, x, y) ? BM_UCLR(bm, x, y) : 0)
 
#define BM_INV(bm, x, y)   (bm_safe(bm, x, y) ? BM_UINV(bm, x, y) : 0)
 
#define BM_PUT(bm, x, y, b)   (bm_safe(bm, x, y) ? BM_UPUT(bm, x, y, b) : 0)
 

Macro Definition Documentation

◆ BM_ALLBITS

#define BM_ALLBITS   (~(potrace_word)0)

Definition at line 27 of file bitmap.h.

◆ BM_CLR

#define BM_CLR (   bm,
  x,
  y 
)    (bm_safe(bm, x, y) ? BM_UCLR(bm, x, y) : 0)

Definition at line 44 of file bitmap.h.

◆ BM_GET

#define BM_GET (   bm,
  x,
  y 
)    (bm_safe(bm, x, y) ? BM_UGET(bm, x, y) : 0)

Definition at line 42 of file bitmap.h.

◆ BM_HIBIT

#define BM_HIBIT   (((potrace_word)1)<<(BM_WORDBITS-1))

Definition at line 26 of file bitmap.h.

◆ bm_index

#define bm_index (   bm,
  x,
  y 
)    (&bm_scanline(bm, y)[(x)/BM_WORDBITS])

Definition at line 33 of file bitmap.h.

◆ BM_INV

#define BM_INV (   bm,
  x,
  y 
)    (bm_safe(bm, x, y) ? BM_UINV(bm, x, y) : 0)

Definition at line 45 of file bitmap.h.

◆ bm_mask

#define bm_mask (   x)    (BM_HIBIT >> ((x) & (BM_WORDBITS-1)))

Definition at line 34 of file bitmap.h.

◆ BM_PUT

#define BM_PUT (   bm,
  x,
  y,
 
)    (bm_safe(bm, x, y) ? BM_UPUT(bm, x, y, b) : 0)

Definition at line 46 of file bitmap.h.

◆ bm_range

#define bm_range (   x,
 
)    ((int)(x) >= 0 && (int)(x) < (a))

Definition at line 35 of file bitmap.h.

◆ bm_safe

#define bm_safe (   bm,
  x,
  y 
)    (bm_range(x, (bm)->w) && bm_range(y, (bm)->h))

Definition at line 36 of file bitmap.h.

◆ bm_scanline

#define bm_scanline (   bm,
  y 
)    ((bm)->map + (ptrdiff_t)(y)*(ptrdiff_t)(bm)->dy)

Definition at line 32 of file bitmap.h.

◆ BM_SET

#define BM_SET (   bm,
  x,
  y 
)    (bm_safe(bm, x, y) ? BM_USET(bm, x, y) : 0)

Definition at line 43 of file bitmap.h.

◆ BM_UCLR

#define BM_UCLR (   bm,
  x,
  y 
)    (*bm_index(bm, x, y) &= ~bm_mask(x))

Definition at line 39 of file bitmap.h.

◆ BM_UGET

#define BM_UGET (   bm,
  x,
  y 
)    ((*bm_index(bm, x, y) & bm_mask(x)) != 0)

Definition at line 37 of file bitmap.h.

◆ BM_UINV

#define BM_UINV (   bm,
  x,
  y 
)    (*bm_index(bm, x, y) ^= bm_mask(x))

Definition at line 40 of file bitmap.h.

◆ BM_UPUT

#define BM_UPUT (   bm,
  x,
  y,
 
)    ((b) ? BM_USET(bm, x, y) : BM_UCLR(bm, x, y))

Definition at line 41 of file bitmap.h.

◆ BM_USET

#define BM_USET (   bm,
  x,
  y 
)    (*bm_index(bm, x, y) |= bm_mask(x))

Definition at line 38 of file bitmap.h.

◆ BM_WORDBITS

#define BM_WORDBITS   (8*BM_WORDSIZE)

Definition at line 25 of file bitmap.h.

◆ BM_WORDSIZE

#define BM_WORDSIZE   ((int)sizeof(potrace_word))

Definition at line 24 of file bitmap.h.