1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
|
#ifndef PBM_H_INCLUDED
#define PBM_H_INCLUDED
#include <netpbm/pm.h>
#ifdef __cplusplus
extern "C" {
#endif
#if 0
} /* to fake out automatic code indenters */
#endif
typedef unsigned char bit;
#define PBM_WHITE 0
#define PBM_BLACK 1
/* Magic constants. */
#define PBM_MAGIC1 'P'
#define PBM_MAGIC2 '1'
#define RPBM_MAGIC2 '4'
#define PBM_FORMAT (PBM_MAGIC1 * 256 + PBM_MAGIC2)
#define RPBM_FORMAT (PBM_MAGIC1 * 256 + RPBM_MAGIC2)
#define PBM_TYPE PBM_FORMAT
/* Macro for turning a format number into a type number. */
#define PBM_FORMAT_TYPE(f) \
((f) == PBM_FORMAT || (f) == RPBM_FORMAT ? PBM_TYPE : -1)
/* Declarations of routines. */
void
pbm_init(int * const argcP,
char ** const argv);
void
pbm_nextimage(FILE *file, int * const eofP);
bit *
pbm_allocrow(unsigned int const cols);
#define pbm_allocarray(cols, rows) \
((bit**) pm_allocarray(cols, rows, sizeof(bit)))
#define pbm_freearray(bits, rows) pm_freearray((char**) bits, rows)
#define pbm_freerow(bitrow) pm_freerow((char*) bitrow)
#define pbm_packed_bytes(cols) (((cols)+7)/8)
#define pbm_allocrow_packed(cols) \
((unsigned char *) pm_allocrow(pbm_packed_bytes(cols), \
sizeof(unsigned char)))
#define pbm_freerow_packed(packed_bits) \
pm_freerow((char *) packed_bits)
#define pbm_allocarray_packed(cols, rows) ((unsigned char **) \
pm_allocarray(pbm_packed_bytes(cols), rows, sizeof(unsigned char)))
#define pbm_freearray_packed(packed_bits, rows) \
pm_freearray((char **) packed_bits, rows)
bit**
pbm_readpbm(FILE * const file,
int * const colsP,
int * const rowsP);
void
pbm_readpbminit(FILE * const file,
int * const colsP,
int * const rowsP, int * const formatP);
void
pbm_readpbmrow(FILE * const file,
bit * const bitrow,
int const cols,
int const format);
void
pbm_readpbmrow_packed(FILE * const file,
unsigned char * const packedBits,
int const cols,
int const format);
void
pbm_readpbmrow_bitoffset(FILE * const fileP,
unsigned char * const packedBits,
int const cols,
int const format,
unsigned int const offset);
void
pbm_cleanrowend_packed(unsigned char * const packedBits,
unsigned int const cols);
void
pbm_writepbminit(FILE * const fileP,
int const cols,
int const rows,
int const forceplain);
void
pbm_writepbm(FILE * const fileP,
bit ** const bits,
int const cols,
int const rows,
int const forceplain);
void
pbm_writepbmrow(FILE * const fileP,
const bit * const bitrow,
int const cols,
int const forceplain);
void
pbm_writepbmrow_packed(FILE * const fileP,
const unsigned char * const packed_bits,
int const cols,
int const forceplain);
void
pbm_writepbmrow_bitoffset(FILE * const ifP,
unsigned char * const packedBits,
unsigned int const cols,
int const format,
unsigned int const offset);
void
pbm_check(FILE * file, const enum pm_check_type check_type,
const int format, const int cols, const int rows,
enum pm_check_code * const retval_p);
bit
pbm_backgroundbitrow(const unsigned char * const packedBits,
unsigned int const cols,
unsigned int const offset);
#ifdef __cplusplus
}
#endif
#endif
|