NovaSVG 0.10.0
A header-only SVG library
Loading...
Searching...
No Matches
bitmap.h File Reference
#include "color.h"
#include "render/blend.h"
#include "render/paint.h"
#include "render/surface.h"
#include <cstdint>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cctype>
#include <string>
#include <utility>
Include dependency graph for bitmap.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  novasvg::Bitmap
 
class  novasvg::BitmapCodec
 
struct  novasvg::BitmapCodec::write_context
 

Namespaces

namespace  novasvg
 Main namespace for the NovaSVG library.
 

Macros

#define NOVASVG_IW_MALLOC(sz)   malloc(sz)
 
#define NOVASVG_IW_REALLOC(p, newsz)   realloc(p,newsz)
 
#define NOVASVG_IW_FREE(p)   free(p)
 
#define NOVASVG_IW_REALLOC_SIZED(p, oldsz, newsz)   NOVASVG_IW_REALLOC(p,newsz)
 
#define NOVASVG_IW_MEMMOVE(a, b, sz)   memmove(a,b,sz)
 
#define NOVASVG_IW_ASSERT(x)   assert(x)
 
#define NOVASVG_IW_UCHAR(x)   (unsigned char) ((x) & 0xff)
 
#define iw_max(a, b)   ((a) > (b) ? (a) : (b))
 
#define sb_raw(a)   ((int *) (void *) (a) - 2)
 
#define sb_m(a)   sb_raw(a)[0]
 
#define sb_n(a)   sb_raw(a)[1]
 
#define sb_needgrow(a, n)   ((a)==0 || sb_n(a)+n >= sb_m(a))
 
#define sb_maybegrow(a, n)   (sb_needgrow(a,(n)) ? sb_grow(a,n) : 0)
 
#define sb_grow(a, n)   sb_growf((void **) &(a), (n), sizeof(*(a)))
 
#define sb_push(a, v)   (sb_maybegrow(a,1), (a)[sb_n(a)++] = (v))
 
#define sb_count(a)   ((a) ? sb_n(a) : 0)
 
#define sb_free(a)   ((a) ? NOVASVG_IW_FREE(sb_raw(a)),0 : 0)
 
#define zlib_flush()   (out = zlib_flushf(out, &bitbuf, &bitcount))
 
#define zlib_add(code, codebits)    (bitbuf |= (code) << bitcount, bitcount += (codebits), zlib_flush())
 
#define zlib_huffa(b, c)   zlib_add(zlib_bitrev(b,c),c)
 
#define zlib_huff1(n)   zlib_huffa(0x30 + (n), 8)
 
#define zlib_huff2(n)   zlib_huffa(0x190 + (n)-144, 9)
 
#define zlib_huff3(n)   zlib_huffa(0 + (n)-256,7)
 
#define zlib_huff4(n)   zlib_huffa(0xc0 + (n)-280,8)
 
#define zlib_huff(n)   ((n) <= 143 ? zlib_huff1(n) : (n) <= 255 ? zlib_huff2(n) : (n) <= 279 ? zlib_huff3(n) : zlib_huff4(n))
 
#define zlib_huffb(n)   ((n) <= 143 ? zlib_huff1(n) : zlib_huff2(n))
 
#define ZLIB_HASH   16384
 
#define png_write_u32x4(o, a, b, c, d)   ((o)[0]=NOVASVG_IW_UCHAR(a),(o)[1]=NOVASVG_IW_UCHAR(b),(o)[2]=NOVASVG_IW_UCHAR(c),(o)[3]=NOVASVG_IW_UCHAR(d),(o)+=4)
 
#define zlib_write_u32(data, v)   png_write_u32x4(data, (v)>>24,(v)>>16,(v)>>8,(v));
 
#define png_write_tag(data, s)   png_write_u32x4(data, s[0],s[1],s[2],s[3])
 

Macro Definition Documentation

◆ iw_max

#define iw_max (   a,
  b 
)    ((a) > (b) ? (a) : (b))

Definition at line 642 of file bitmap.h.

◆ NOVASVG_IW_ASSERT

#define NOVASVG_IW_ASSERT (   x)    assert(x)

Definition at line 258 of file bitmap.h.

◆ NOVASVG_IW_FREE

#define NOVASVG_IW_FREE (   p)    free(p)

Definition at line 244 of file bitmap.h.

◆ NOVASVG_IW_MALLOC

#define NOVASVG_IW_MALLOC (   sz)    malloc(sz)

Definition at line 242 of file bitmap.h.

◆ NOVASVG_IW_MEMMOVE

#define NOVASVG_IW_MEMMOVE (   a,
  b,
  sz 
)    memmove(a,b,sz)

Definition at line 253 of file bitmap.h.

◆ NOVASVG_IW_REALLOC

#define NOVASVG_IW_REALLOC (   p,
  newsz 
)    realloc(p,newsz)

Definition at line 243 of file bitmap.h.

◆ NOVASVG_IW_REALLOC_SIZED

#define NOVASVG_IW_REALLOC_SIZED (   p,
  oldsz,
  newsz 
)    NOVASVG_IW_REALLOC(p,newsz)

Definition at line 248 of file bitmap.h.

◆ NOVASVG_IW_UCHAR

#define NOVASVG_IW_UCHAR (   x)    (unsigned char) ((x) & 0xff)

Definition at line 261 of file bitmap.h.

◆ png_write_tag

#define png_write_tag (   data,
  s 
)    png_write_u32x4(data, s[0],s[1],s[2],s[3])

Definition at line 1082 of file bitmap.h.

◆ png_write_u32x4

#define png_write_u32x4 (   o,
  a,
  b,
  c,
  d 
)    ((o)[0]=NOVASVG_IW_UCHAR(a),(o)[1]=NOVASVG_IW_UCHAR(b),(o)[2]=NOVASVG_IW_UCHAR(c),(o)[3]=NOVASVG_IW_UCHAR(d),(o)+=4)

Definition at line 1080 of file bitmap.h.

◆ sb_count

#define sb_count (   a)    ((a) ? sb_n(a) : 0)

Definition at line 830 of file bitmap.h.

◆ sb_free

#define sb_free (   a)    ((a) ? NOVASVG_IW_FREE(sb_raw(a)),0 : 0)

Definition at line 831 of file bitmap.h.

◆ sb_grow

#define sb_grow (   a,
  n 
)    sb_growf((void **) &(a), (n), sizeof(*(a)))

Definition at line 827 of file bitmap.h.

◆ sb_m

#define sb_m (   a)    sb_raw(a)[0]

Definition at line 822 of file bitmap.h.

◆ sb_maybegrow

#define sb_maybegrow (   a,
  n 
)    (sb_needgrow(a,(n)) ? sb_grow(a,n) : 0)

Definition at line 826 of file bitmap.h.

◆ sb_n

#define sb_n (   a)    sb_raw(a)[1]

Definition at line 823 of file bitmap.h.

◆ sb_needgrow

#define sb_needgrow (   a,
  n 
)    ((a)==0 || sb_n(a)+n >= sb_m(a))

Definition at line 825 of file bitmap.h.

◆ sb_push

#define sb_push (   a,
  v 
)    (sb_maybegrow(a,1), (a)[sb_n(a)++] = (v))

Definition at line 829 of file bitmap.h.

◆ sb_raw

#define sb_raw (   a)    ((int *) (void *) (a) - 2)

Definition at line 821 of file bitmap.h.

◆ zlib_add

#define zlib_add (   code,
  codebits 
)     (bitbuf |= (code) << bitcount, bitcount += (codebits), zlib_flush())

Definition at line 887 of file bitmap.h.

◆ zlib_flush

#define zlib_flush ( )    (out = zlib_flushf(out, &bitbuf, &bitcount))

Definition at line 886 of file bitmap.h.

◆ ZLIB_HASH

#define ZLIB_HASH   16384

Definition at line 898 of file bitmap.h.

◆ zlib_huff

#define zlib_huff (   n)    ((n) <= 143 ? zlib_huff1(n) : (n) <= 255 ? zlib_huff2(n) : (n) <= 279 ? zlib_huff3(n) : zlib_huff4(n))

Definition at line 895 of file bitmap.h.

◆ zlib_huff1

#define zlib_huff1 (   n)    zlib_huffa(0x30 + (n), 8)

Definition at line 891 of file bitmap.h.

◆ zlib_huff2

#define zlib_huff2 (   n)    zlib_huffa(0x190 + (n)-144, 9)

Definition at line 892 of file bitmap.h.

◆ zlib_huff3

#define zlib_huff3 (   n)    zlib_huffa(0 + (n)-256,7)

Definition at line 893 of file bitmap.h.

◆ zlib_huff4

#define zlib_huff4 (   n)    zlib_huffa(0xc0 + (n)-280,8)

Definition at line 894 of file bitmap.h.

◆ zlib_huffa

#define zlib_huffa (   b,
  c 
)    zlib_add(zlib_bitrev(b,c),c)

Definition at line 889 of file bitmap.h.

◆ zlib_huffb

#define zlib_huffb (   n)    ((n) <= 143 ? zlib_huff1(n) : zlib_huff2(n))

Definition at line 896 of file bitmap.h.

◆ zlib_write_u32

#define zlib_write_u32 (   data,
  v 
)    png_write_u32x4(data, (v)>>24,(v)>>16,(v)>>8,(v));

Definition at line 1081 of file bitmap.h.