mirror of
https://github.com/reactos/reactos.git
synced 2025-03-10 18:24:02 +00:00
62 lines
1.3 KiB
C
62 lines
1.3 KiB
C
![]() |
/* Fax G3/G4 tables */
|
||
|
|
||
|
/*
|
||
|
<raph> the first 2^(initialbits) entries map bit patterns to decodes
|
||
|
<raph> let's say initial_bits is 8 for the sake of example
|
||
|
<raph> and that the code is 1001
|
||
|
<raph> that means that entries 0x90 .. 0x9f have the entry { val, 4 }
|
||
|
<raph> because those are all the bytes that start with the code
|
||
|
<raph> and the 4 is the length of the code
|
||
|
... if (n_bits > initial_bits) ...
|
||
|
<raph> anyway, in that case, it basically points to a mini table
|
||
|
<raph> the n_bits is the maximum length of all codes beginning with that byte
|
||
|
<raph> so 2^(n_bits - initial_bits) is the size of the mini-table
|
||
|
<raph> peter came up with this, and it makes sense
|
||
|
*/
|
||
|
|
||
|
typedef struct cfd_node_s cfd_node;
|
||
|
|
||
|
struct cfd_node_s
|
||
|
{
|
||
|
short val;
|
||
|
short nbits;
|
||
|
};
|
||
|
|
||
|
enum
|
||
|
{
|
||
|
cfd_white_initial_bits = 8,
|
||
|
cfd_black_initial_bits = 7,
|
||
|
cfd_2d_initial_bits = 7,
|
||
|
cfd_uncompressed_initial_bits = 6 /* must be 6 */
|
||
|
};
|
||
|
|
||
|
/* non-run codes in tables */
|
||
|
enum
|
||
|
{
|
||
|
ERROR = -1,
|
||
|
ZEROS = -2, /* EOL follows, possibly with more padding first */
|
||
|
UNCOMPRESSED = -3
|
||
|
};
|
||
|
|
||
|
/* semantic codes for cf_2d_decode */
|
||
|
enum
|
||
|
{
|
||
|
P = -4,
|
||
|
H = -5,
|
||
|
VR3 = 0,
|
||
|
VR2 = 1,
|
||
|
VR1 = 2,
|
||
|
V0 = 3,
|
||
|
VL1 = 4,
|
||
|
VL2 = 5,
|
||
|
VL3 = 6
|
||
|
};
|
||
|
|
||
|
/* Decoding tables */
|
||
|
|
||
|
extern const cfd_node cf_white_decode[];
|
||
|
extern const cfd_node cf_black_decode[];
|
||
|
extern const cfd_node cf_2d_decode[];
|
||
|
extern const cfd_node cf_uncompressed_decode[];
|
||
|
|