tinyimg
1.0.0
Lightweight image manipulation library for Cloudflare Workers
Toggle main menu visibility
Loading...
Searching...
No Matches
include
tinyimg
codec
lzw.h
Go to the documentation of this file.
1
11
#pragma once
12
13
#include <stddef.h>
14
#include <stdint.h>
15
16
#ifdef __cplusplus
17
extern
"C"
{
18
#endif
19
21
#define TINY_LZW_MAX_BITS 12u
22
25
#define TINY_LZW_CODES (1u << TINY_LZW_MAX_BITS)
26
33
typedef
struct
{
35
uint16_t
prefix
[
TINY_LZW_CODES
];
37
uint8_t
suffix
[
TINY_LZW_CODES
];
39
uint8_t
first
[
TINY_LZW_CODES
];
40
}
TinyLzwTable
;
41
51
typedef
struct
{
53
const
uint8_t*
data
;
55
size_t
size
;
57
size_t
pos
;
59
uint32_t
accumulator
;
61
uint32_t
count
;
63
uint32_t
remaining
;
65
uint8_t
chained
;
67
uint8_t
msb
;
70
int
done
;
71
}
TinyLzwReader
;
72
83
void
tiny_lzw_init
(
84
TinyLzwReader
* reader,
const
uint8_t* data,
size_t
size,
size_t
at,
85
int
chained,
int
msb
86
);
87
105
int
tiny_lzw_expand
(
106
TinyLzwReader
* reader,
TinyLzwTable
* table, uint32_t code_bits,
int
early,
107
uint8_t* out,
size_t
capacity
108
);
109
110
#ifdef __cplusplus
111
}
112
#endif
tiny_lzw_expand
int tiny_lzw_expand(TinyLzwReader *reader, TinyLzwTable *table, uint32_t code_bits, int early, uint8_t *out, size_t capacity)
Expands a stream into a byte plane.
TINY_LZW_CODES
#define TINY_LZW_CODES
Definition
lzw.h:25
tiny_lzw_init
void tiny_lzw_init(TinyLzwReader *reader, const uint8_t *data, size_t size, size_t at, int chained, int msb)
Points a reader at a stream.
TinyLzwReader
A code stream being read, in either bit order and framing.
Definition
lzw.h:51
TinyLzwReader::count
uint32_t count
Definition
lzw.h:61
TinyLzwReader::accumulator
uint32_t accumulator
Definition
lzw.h:59
TinyLzwReader::pos
size_t pos
Definition
lzw.h:57
TinyLzwReader::data
const uint8_t * data
Definition
lzw.h:53
TinyLzwReader::size
size_t size
Definition
lzw.h:55
TinyLzwReader::chained
uint8_t chained
Definition
lzw.h:65
TinyLzwReader::msb
uint8_t msb
Definition
lzw.h:67
TinyLzwReader::remaining
uint32_t remaining
Definition
lzw.h:63
TinyLzwReader::done
int done
Definition
lzw.h:70
TinyLzwTable
The dictionary a stream builds as it is read.
Definition
lzw.h:33
TinyLzwTable::first
uint8_t first[TINY_LZW_CODES]
Definition
lzw.h:39
TinyLzwTable::suffix
uint8_t suffix[TINY_LZW_CODES]
Definition
lzw.h:37
TinyLzwTable::prefix
uint16_t prefix[TINY_LZW_CODES]
Definition
lzw.h:35
Generated by
1.18.0