Blender  V2.93
Macros | Typedefs | Functions
BLI_bitmap.h File Reference
#include "BLI_utildefines.h"

Go to the source code of this file.

Macros

#define _BITMAP_POWER   5
 
#define _BITMAP_MASK   31
 
#define _BITMAP_NUM_BLOCKS(_tot)   (((_tot) >> _BITMAP_POWER) + 1)
 
#define BLI_BITMAP_SIZE(_tot)   ((size_t)(_BITMAP_NUM_BLOCKS(_tot)) * sizeof(BLI_bitmap))
 
#define BLI_BITMAP_NEW(_tot, _alloc_string)    ((BLI_bitmap *)MEM_callocN(BLI_BITMAP_SIZE(_tot), _alloc_string))
 
#define BLI_BITMAP_NEW_ALLOCA(_tot)    ((BLI_bitmap *)memset(alloca(BLI_BITMAP_SIZE(_tot)), 0, BLI_BITMAP_SIZE(_tot)))
 
#define BLI_BITMAP_NEW_MEMARENA(_mem, _tot)
 
#define BLI_BITMAP_TEST(_bitmap, _index)
 
#define BLI_BITMAP_TEST_AND_SET_ATOMIC(_bitmap, _index)
 
#define BLI_BITMAP_TEST_BOOL(_bitmap, _index)
 
#define BLI_BITMAP_ENABLE(_bitmap, _index)
 
#define BLI_BITMAP_DISABLE(_bitmap, _index)
 
#define BLI_BITMAP_FLIP(_bitmap, _index)
 
#define BLI_BITMAP_SET(_bitmap, _index, _set)
 
#define BLI_BITMAP_RESIZE(_bitmap, _tot)
 

Typedefs

typedef unsigned int BLI_bitmap
 

Functions

void BLI_bitmap_set_all (BLI_bitmap *bitmap, bool set, size_t bits)
 
void BLI_bitmap_flip_all (BLI_bitmap *bitmap, size_t bits)
 
void BLI_bitmap_copy_all (BLI_bitmap *dst, const BLI_bitmap *src, size_t bits)
 
void BLI_bitmap_and_all (BLI_bitmap *dst, const BLI_bitmap *src, size_t bits)
 
void BLI_bitmap_or_all (BLI_bitmap *dst, const BLI_bitmap *src, size_t bits)
 

Macro Definition Documentation

◆ _BITMAP_MASK

#define _BITMAP_MASK   31

Definition at line 41 of file BLI_bitmap.h.

◆ _BITMAP_NUM_BLOCKS

#define _BITMAP_NUM_BLOCKS (   _tot)    (((_tot) >> _BITMAP_POWER) + 1)

Definition at line 44 of file BLI_bitmap.h.

◆ _BITMAP_POWER

#define _BITMAP_POWER   5

Definition at line 39 of file BLI_bitmap.h.

◆ BLI_BITMAP_DISABLE

#define BLI_BITMAP_DISABLE (   _bitmap,
  _index 
)
Value:
(CHECK_TYPE_ANY(_bitmap, BLI_bitmap *, const BLI_bitmap *), \
((_bitmap)[(_index) >> _BITMAP_POWER] &= ~(1u << ((_index)&_BITMAP_MASK))))
#define _BITMAP_POWER
Definition: BLI_bitmap.h:39
#define _BITMAP_MASK
Definition: BLI_bitmap.h:41
unsigned int BLI_bitmap
Definition: BLI_bitmap.h:32
#define CHECK_TYPE_ANY(...)

Definition at line 83 of file BLI_bitmap.h.

◆ BLI_BITMAP_ENABLE

#define BLI_BITMAP_ENABLE (   _bitmap,
  _index 
)
Value:
(CHECK_TYPE_ANY(_bitmap, BLI_bitmap *, const BLI_bitmap *), \
((_bitmap)[(_index) >> _BITMAP_POWER] |= (1u << ((_index)&_BITMAP_MASK))))

Definition at line 78 of file BLI_bitmap.h.

◆ BLI_BITMAP_FLIP

#define BLI_BITMAP_FLIP (   _bitmap,
  _index 
)
Value:
(CHECK_TYPE_ANY(_bitmap, BLI_bitmap *, const BLI_bitmap *), \
((_bitmap)[(_index) >> _BITMAP_POWER] ^= (1u << ((_index)&_BITMAP_MASK))))

Definition at line 88 of file BLI_bitmap.h.

◆ BLI_BITMAP_NEW

#define BLI_BITMAP_NEW (   _tot,
  _alloc_string 
)     ((BLI_bitmap *)MEM_callocN(BLI_BITMAP_SIZE(_tot), _alloc_string))

Definition at line 50 of file BLI_bitmap.h.

◆ BLI_BITMAP_NEW_ALLOCA

#define BLI_BITMAP_NEW_ALLOCA (   _tot)     ((BLI_bitmap *)memset(alloca(BLI_BITMAP_SIZE(_tot)), 0, BLI_BITMAP_SIZE(_tot)))

Definition at line 54 of file BLI_bitmap.h.

◆ BLI_BITMAP_NEW_MEMARENA

#define BLI_BITMAP_NEW_MEMARENA (   _mem,
  _tot 
)
Value:
#define BLI_BITMAP_SIZE(_tot)
Definition: BLI_bitmap.h:47
#define CHECK_TYPE_INLINE(val, type)
void * BLI_memarena_calloc(struct MemArena *ma, size_t size) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1) ATTR_MALLOC ATTR_ALLOC_SIZE(2)
Definition: BLI_memarena.c:168

Definition at line 58 of file BLI_bitmap.h.

◆ BLI_BITMAP_RESIZE

#define BLI_BITMAP_RESIZE (   _bitmap,
  _tot 
)
Value:
{ \
CHECK_TYPE(_bitmap, BLI_bitmap *); \
(_bitmap) = MEM_recallocN(_bitmap, BLI_BITMAP_SIZE(_tot)); \
} \
(void)0
#define MEM_recallocN(vmemh, len)

Definition at line 106 of file BLI_bitmap.h.

◆ BLI_BITMAP_SET

#define BLI_BITMAP_SET (   _bitmap,
  _index,
  _set 
)
Value:
{ \
CHECK_TYPE(_bitmap, BLI_bitmap *); \
if (_set) { \
BLI_BITMAP_ENABLE(_bitmap, _index); \
} \
else { \
BLI_BITMAP_DISABLE(_bitmap, _index); \
} \
} \
(void)0

Definition at line 93 of file BLI_bitmap.h.

◆ BLI_BITMAP_SIZE

#define BLI_BITMAP_SIZE (   _tot)    ((size_t)(_BITMAP_NUM_BLOCKS(_tot)) * sizeof(BLI_bitmap))

Definition at line 47 of file BLI_bitmap.h.

◆ BLI_BITMAP_TEST

#define BLI_BITMAP_TEST (   _bitmap,
  _index 
)
Value:
(CHECK_TYPE_ANY(_bitmap, BLI_bitmap *, const BLI_bitmap *), \
((_bitmap)[(_index) >> _BITMAP_POWER] & (1u << ((_index)&_BITMAP_MASK))))

Definition at line 63 of file BLI_bitmap.h.

◆ BLI_BITMAP_TEST_AND_SET_ATOMIC

#define BLI_BITMAP_TEST_AND_SET_ATOMIC (   _bitmap,
  _index 
)
Value:
(CHECK_TYPE_ANY(_bitmap, BLI_bitmap *, const BLI_bitmap *), \
(atomic_fetch_and_or_uint32((uint32_t *)&(_bitmap)[(_index) >> _BITMAP_POWER], \
(1u << ((_index)&_BITMAP_MASK))) & \
(1u << ((_index)&_BITMAP_MASK))))
ATOMIC_INLINE uint32_t atomic_fetch_and_or_uint32(uint32_t *p, uint32_t x)
unsigned int uint32_t
Definition: stdint.h:83

Definition at line 67 of file BLI_bitmap.h.

◆ BLI_BITMAP_TEST_BOOL

#define BLI_BITMAP_TEST_BOOL (   _bitmap,
  _index 
)
Value:
(CHECK_TYPE_ANY(_bitmap, BLI_bitmap *, const BLI_bitmap *), \
(BLI_BITMAP_TEST(_bitmap, _index) != 0))
#define BLI_BITMAP_TEST(_bitmap, _index)
Definition: BLI_bitmap.h:63

Definition at line 73 of file BLI_bitmap.h.

Typedef Documentation

◆ BLI_bitmap

typedef unsigned int BLI_bitmap

Definition at line 32 of file BLI_bitmap.h.

Function Documentation

◆ BLI_bitmap_and_all()

void BLI_bitmap_and_all ( BLI_bitmap dst,
const BLI_bitmap src,
size_t  bits 
)

Combine two bitmaps with boolean AND.

Definition at line 54 of file bitmap.c.

References _BITMAP_NUM_BLOCKS.

◆ BLI_bitmap_copy_all()

void BLI_bitmap_copy_all ( BLI_bitmap dst,
const BLI_bitmap src,
size_t  bits 
)

Copy all bits from one bitmap to another.

Definition at line 48 of file bitmap.c.

References BLI_BITMAP_SIZE.

◆ BLI_bitmap_flip_all()

void BLI_bitmap_flip_all ( BLI_bitmap bitmap,
size_t  bits 
)

Invert all bits in the bitmap.

Definition at line 39 of file bitmap.c.

References _BITMAP_NUM_BLOCKS.

◆ BLI_bitmap_or_all()

void BLI_bitmap_or_all ( BLI_bitmap dst,
const BLI_bitmap src,
size_t  bits 
)

Combine two bitmaps with boolean OR.

Definition at line 63 of file bitmap.c.

References _BITMAP_NUM_BLOCKS.

◆ BLI_bitmap_set_all()

void BLI_bitmap_set_all ( BLI_bitmap bitmap,
bool  set,
size_t  bits 
)