tinyimg 1.0.0
Lightweight image manipulation library for Cloudflare Workers
Loading...
Searching...
No Matches
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
17extern "C" {
18#endif
19
21#define TINY_LZW_MAX_BITS 12u
22
25#define TINY_LZW_CODES (1u << TINY_LZW_MAX_BITS)
26
33typedef struct {
41
51typedef 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;
72
84 TinyLzwReader* reader, const uint8_t* data, size_t size, size_t at,
85 int chained, int msb
86);
87
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
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.
#define TINY_LZW_CODES
Definition lzw.h:25
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.
A code stream being read, in either bit order and framing.
Definition lzw.h:51
uint32_t count
Definition lzw.h:61
uint32_t accumulator
Definition lzw.h:59
size_t pos
Definition lzw.h:57
const uint8_t * data
Definition lzw.h:53
size_t size
Definition lzw.h:55
uint8_t chained
Definition lzw.h:65
uint8_t msb
Definition lzw.h:67
uint32_t remaining
Definition lzw.h:63
int done
Definition lzw.h:70
The dictionary a stream builds as it is read.
Definition lzw.h:33
uint8_t first[TINY_LZW_CODES]
Definition lzw.h:39
uint8_t suffix[TINY_LZW_CODES]
Definition lzw.h:37
uint16_t prefix[TINY_LZW_CODES]
Definition lzw.h:35