This repository has been archived by the owner on Mar 8, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 119
/
Copy pathzjs.h
318 lines (282 loc) · 10.6 KB
/
zjs.h
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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
/*
* Manifest constants for the ZjStream protocol
*
* I'm told that a lot of this stuff came from a file called "zjrca.h".
* But a Google search does not turn up that file. I added my own
* improvements and missing pieces. -Rick
*/
#include <inttypes.h>
typedef uint32_t DWORD;
typedef uint16_t WORD;
typedef uint8_t BYTE;
typedef enum {
ZJT_START_DOC = 0,
ZJT_END_DOC = 1,
ZJT_START_PAGE = 2,
ZJT_END_PAGE = 3,
ZJT_JBIG_BIH = 4, // Bi-level Image Header
ZJT_JBIG_BID = 5, // Bi-level Image Data blocks
ZJT_END_JBIG = 6,
ZJT_SIGNATURE = 7,
ZJT_RAW_IMAGE = 8, // full uncompressed plane follows
ZJT_START_PLANE = 9,
ZJT_END_PLANE =10,
ZJT_2600N_PAUSE =11,
ZJT_2600N =12, // hplj2600n
ZJT_ZX_0x0d =0x0d,
ZJT_ZX_0x0e =0x0e,
ZJT_ZX_0x0f =0x0f
} ZJ_TYPE;
typedef struct _ZJ_HEADER {
DWORD size; /* total record size, includes sizeof(ZJ_HEADER) */
DWORD type; /* ZJ_TYPE */
DWORD items; /* use varies by Type, e.g. item count */
WORD reserved; /* later to be sumcheck or CRC */
WORD signature; /* 'ZZ' */
} ZJ_HEADER;
typedef enum {
/*
* 0x0000-0x7FFF : Zenographics reserved
*/
/* for START_DOC */
ZJI_PAGECOUNT = 0, // number of ZJT_START_PAGE / ZJT_END_PAGE
// pairs, if known
ZJI_DMCOLLATE = 1, // from DEVMODE
ZJI_DMDUPLEX = 2, // from DEVMODE
/* for START_PAGE */
ZJI_DMPAPER = 3, // from DEVMODE
ZJI_DMCOPIES = 4, // from DEVMODE
ZJI_DMDEFAULTSOURCE = 5, // from DEVMODE (DMBIN?)
ZJI_DMMEDIATYPE = 6, // from DEVMODE
ZJI_NBIE = 7, // number of Bi-level Image Entities,
// e.g. 1 for monochrome, 4 for color
ZJI_RESOLUTION_X = 8, // dots per inch
ZJI_RESOLUTION_Y = 9,
ZJI_OFFSET_X =10, // upper left corner
ZJI_OFFSET_Y =11,
ZJI_RASTER_X =12, // raster dimensions
ZJI_RASTER_Y =13,
ZJI_COLLATE =14, // asks for collated copies
ZJI_QUANTITY =15, // copy count
ZJI_VIDEO_BPP =16, // video bits per pixel
ZJI_VIDEO_X =17, // video dimensions (if different than raster)
ZJI_VIDEO_Y =18,
ZJI_INTERLACE =19, // 0 or 1
ZJI_PLANE =20, // Plane number, 1=C, 2=M, 3=Y, 4=K
ZJI_PALETTE =21, // translation table (dimensions in item type)
ZJI_RET =22, // HP's Resolution Enhancement Technology
ZJI_ECONOMODE =23, // HP's "EconoMode", 0=OFF, 1=ON
ZJI_BITMAP_TYPE =0x65, // hp2600: ?
ZJI_JBIG_BIH =0x66, // Bi-level Image Header
ZJI_BITMAP_PIXELS =0x68, // hp2600: ?
ZJI_INCRY =0x69, // Incremental Y
ZJI_BITMAP_BPP =0x6a, // hp2600: ?
ZJI_BITMAP_STRIDE =0x6b, // hp2600: ?
ZJI_ZX_0x6c =0x6c, // ZX: color order ???
// cmyk=04030201, rgb=0b0a09, mono=0c
ZJI_ZX_COLOR_OPT =0x6e, // ZX: Color Options. 1=mono, 3=rgb, 4=cmyk
ZJI_ZX_0x6f =0x6f, // ZX: ???
ZJI_PAD =99, // bogus item type for padding stream
/*
* 0x8000-0x80FF : Item tags for QMS specific features.
*/
ZJI_QMS_FINEMODE = 0x8000, // for 668, 671
ZJI_QMS_OUTBIN = 0x8001, // for 671 output bin
/*
* 0x8100-0x81FF : Item tags for Minolta specific features.
*/
/* for START_DOC */
ZJI_MINOLTA_USERNAME = 0x810e, // C string
ZJI_MINOLTA_FILENAME = 0x8115, // C string
// Also 8100-810F; meanings unknown
/* for START_PAGE */
ZJI_MINOLTA_PAGE_NUMBER = 0x8110, // Number of this page
// Also 8111, 8116-811D; meanings unknown
ZJI_MINOLTA_CUSTOM_X = 0x8113, // Custom Page Width
ZJI_MINOLTA_CUSTOM_Y = 0x8114, // Custom Page Height
/* for END_PAGE */
// Also 8101, 8110; meanings unknown
/*
* 0x8200-0x82FF : Item tags for the next OEM specific features.
*/
ZJI_HP_CDOTS = 0x8200, // Cyan Dots?
ZJI_HP_MDOTS = 0x8201, // Magenta Dots?
ZJI_HP_YDOTS = 0x8202, // Yellow Dots?
ZJI_HP_KDOTS = 0x8203, // Black Dots?
ZJI_HP_CWHITE = 0x8204, // Cyan White Dots?
ZJI_HP_MWHITE = 0x8205, // Magenta White Dots?
ZJI_HP_YWHITE = 0x8206, // Yellow White Dots?
ZJI_HP_KWHITE = 0x8207, // Black White Dots?
ZJI_LAST
} ZJ_ITEM;
typedef enum
{
DMDUPLEX_OFF = 1,
DMDUPLEX_LONGEDGE = 2,
DMDUPLEX_SHORTEDGE = 3,
DMDUPLEX_MANUALLONG = 4,
DMDUPLEX_MANUALSHORT= 5
} DMDUPLEX;
typedef enum {
DMBIN_UPPER = 1,
DMBIN_ONLYONE = 1,
DMBIN_LOWER = 2,
DMBIN_MIDDLE = 3,
DMBIN_MANUAL = 4,
DMBIN_ENVELOPE = 5,
DMBIN_ENVMANUAL = 6,
DMBIN_AUTO = 7,
DMBIN_TRACTOR = 8,
DMBIN_SMALLFMT = 9,
DMBIN_LARGEFMT =10,
DMBIN_LARGECAPACITY =11,
DMBIN_CASSETTE =14,
DMBIN_FORMSOURCE =15
} DM_BIN;
typedef enum {
DMMEDIA_STANDARD = 1, // Standard paper
DMMEDIA_TRANSPARENCY= 2, // Transparency
DMMEDIA_GLOSSY = 3, // Glossy paper
DMMEDIA_USER = 4, // Device-specific media start here
DMMEDIA_ENVELOPE = 0x101, // Envelope
DMMEDIA_LETTERHEAD = 0x103, // Letterhead
DMMEDIA_THICK_STOCK = 0x105, // Thick Stock
DMMEDIA_POSTCARD = 0x106, // Postcard
DMMEDIA_LABELS = 0x107, // Labels
} DMMEDIA;
typedef enum {
DMCOLOR_MONOCHROME = 1,
DMCOLOR_COLOR = 2,
} DMCOLOR;
typedef enum {
DMORIENT_PORTRAIT = 1,
DMORIENT_LANDSCAPE = 2,
} DMORIENT;
typedef enum {
DMPAPER_LETTER = 1, // Letter, 8 1/2- by 11-inches
DMPAPER_LETTERSMALL = 2, // Letter Small, 8 1/2- by 11-inches
DMPAPER_TABLOID = 3, // Tabloid, 11- by 17-inches
DMPAPER_LEDGER = 4, // Ledger, 17- by 11-inches
DMPAPER_LEGAL = 5, // Legal, 8 1/2- by 14-inches
DMPAPER_STATEMENT = 6, // Statement, 5 1/2- by 8 1/2-inches
DMPAPER_EXECUTIVE = 7, // Executive, 7 1/4- by 10 1/2-inches
DMPAPER_A3 = 8, // A3 sheet, 297- by 420-millimeters
DMPAPER_A4 = 9, // A4 Sheet, 210- by 297-millimeters
DMPAPER_A4SMALL =10, // A4 small sheet, 210- by 297-millimeters
DMPAPER_A5 =11, // A5 sheet, 148- by 210-millimeters
DMPAPER_B4 =12, // B4 sheet, 250- by 354-millimeters
DMPAPER_B5 =13, // B5 sheet, 182- by 257-millimeter paper
DMPAPER_FOLIO =14, // Folio, 8 1/2- by 13-inch paper
DMPAPER_QUARTO =15, // Quarto, 215- by 275-millimeter paper
DMPAPER_10X14 =16, // 10- by 14-inch sheet
DMPAPER_11X17 =17, // 11- by 17-inch sheet
DMPAPER_NOTE =18, // Note, 8 1/2- by 11-inches
DMPAPER_ENV_9 =19, // #9 Envelope, 3 7/8- by 8 7/8-inches
DMPAPER_ENV_10 =20, // #10 Envelope, 4 1/8- by 9 1/2-inches
DMPAPER_ENV_11 =21, // #11 Envelope, 4 1/2- by 10 3/8-inches
DMPAPER_ENV_12 =22, // #12 Envelope, 4 3/4- by 11-inches
DMPAPER_ENV_14 =23, // #14 Envelope, 5- by 11 1/2-inches
DMPAPER_CSHEET =24, // C Sheet, 17- by 22-inches
DMPAPER_DSHEET =25, // D Sheet, 22- by 34-inches
DMPAPER_ESHEET =26, // E Sheet, 34- by 44-inches
DMPAPER_ENV_DL =27, // DL Envelope, 110- by 220-millimeters
DMPAPER_ENV_C5 =28, // C5 Envelope, 162- by 229-millimeters
DMPAPER_ENV_C3 =29, // C3 Envelope, 324- by 458-millimeters
DMPAPER_ENV_C4 =30, // C4 Envelope, 229- by 324-millimeters
DMPAPER_ENV_C6 =31, // C6 Envelope, 114- by 162-millimeters
DMPAPER_ENV_C65 =32, // C65 Envelope, 114- by 229-millimeters
DMPAPER_ENV_B4 =33, // B4 Envelope, 250- by 353-millimeters
DMPAPER_ENV_B5 =34, // B5 Envelope, 176- by 250-millimeters
DMPAPER_ENV_B6 =35, // B6 Envelope, 176- by 125-millimeters
DMPAPER_ENV_ITALY =36, // Italy Envelope, 110- by 230-millimeters
DMPAPER_ENV_MONARCH =37, // Monarch Envelope, 3 7/8- by 7 1/2-inches
DMPAPER_ENV_PERSONAL=38, // 6 3/4 Envelope, 3 5/8- by 6 1/2-inches
DMPAPER_FANFOLD_US =39, // US Std Fanfold, 14 7/8- by 11-inches
DMPAPER_FANFOLD_STD_GERMAN =40, // German Std Fanfold, 8 1/2 x 12 in
DMPAPER_FANFOLD_LGL_GERMAN =41, // German Legal Fanfold, 8 1/2 x 13 in
DMPAPER_ISO_B4 =42, // B4 (ISO) 250 x 353 mm
DMPAPER_JAPANESE_POSTCARD =43, // Japanese Postcard 100 x 148 mm
DMPAPER_9X11 =44, // 9 x 11 in
DMPAPER_10X11 =45, // 10 x 11 in
DMPAPER_15X11 =46, // 15 x 11 in
DMPAPER_ENV_INVITE =47, // Envelope Invite 220 x 220 mm
DMPAPER_RESERVED_48 =48, // RESERVED--DO NOT USE
DMPAPER_RESERVED_49 =49, // RESERVED--DO NOT USE
DMPAPER_LETTER_EXTRA =50, // Letter Extra 9 \275 x 12 in
DMPAPER_LEGAL_EXTRA =51, // Legal Extra 9 \275 x 15 in
DMPAPER_TABLOID_EXTRA =52, // Tabloid Extra 11.69 x 18 in
DMPAPER_A4_EXTRA =53, // A4 Extra 9.27 x 12.69 in
DMPAPER_LETTER_TRANSVERSE =54, // Letter Transverse 8 \275 x 11 in
DMPAPER_A4_TRANSVERSE =55, // A4 Transverse 210 x 297 mm
DMPAPER_LETTER_EXTRA_TRANSVERSE=56, // Letter Extra Transverse 9\275 x 12 in
DMPAPER_A_PLUS =57, // SuperA/SuperA/A4 227 x 356 mm
DMPAPER_B_PLUS =58, // SuperB/SuperB/A3 305 x 487 mm
DMPAPER_LETTER_PLUS =59, // Letter Plus 8.5 x 12.69 in
DMPAPER_A4_PLUS =60, // A4 Plus 210 x 330 mm
DMPAPER_A5_TRANSVERSE =61, // A5 Transverse 148 x 210 mm
DMPAPER_B5_TRANSVERSE =62, // B5 (JIS) Transverse 182 x 257 mm
DMPAPER_A3_EXTRA =63, // A3 Extra 322 x 445 mm
DMPAPER_A5_EXTRA =64, // A5 Extra 174 x 235 mm
DMPAPER_B5_EXTRA =65, // B5 (ISO) Extra 201 x 276 mm
DMPAPER_A2 =66, // A2 420 x 594 mm
DMPAPER_A3_TRANSVERSE =67, // A3 Transverse 297 x 420 mm
DMPAPER_A3_EXTRA_TRANSVERSE =68, // A3 Extra Transverse 322 x 445 mm
} DMPAPER;
typedef enum {
ZJIT_UINT32 = 1, // unsigned integer
ZJIT_INT32 = 2, // signed integer
ZJIT_STRING = 3, // byte string, NUL-terminated, DWORD-aligned
ZJIT_BYTELUT= 4 // DWORD count followed by that many byte entries
} ZJ_ITEM_TYPE;
typedef struct _ZJ_ITEM_HEADER {
DWORD size; // total record size, includes sizeof(ZJ_ITEM_HEADER)
WORD item; // ZJ_ITEM
BYTE type; // ZJ_ITEM_TYPE
BYTE param; // general use
} ZJ_ITEM_HEADER;
typedef struct _ZJ_ITEM_UINT32 {
ZJ_ITEM_HEADER header;
DWORD value;
} ZJ_ITEM_UINT32;
typedef struct _ZJ_ITEM_INT32 {
ZJ_ITEM_HEADER header;
int32_t value;
} ZJ_ITEM_INT32;
typedef union _SWAP_32{
char byte[sizeof(uint32_t)];
uint32_t dword;
} SWAP_32;
typedef union _SWAP_16{
char byte[sizeof(uint16_t)];
uint16_t word;
} SWAP_16;
static inline uint32_t
be32(uint32_t dword)
{
SWAP_32 swap;
uint32_t probe = 1;
if (((char *)&probe)[0] == 1)
{
swap.byte[3] = (( SWAP_32 )dword).byte[0];
swap.byte[2] = (( SWAP_32 )dword).byte[1];
swap.byte[1] = (( SWAP_32 )dword).byte[2];
swap.byte[0] = (( SWAP_32 )dword).byte[3];
return swap.dword;
}
else
return dword;
}
static inline uint16_t
be16(uint16_t word)
{
SWAP_16 swap;
uint16_t probe = 1;
if (((char *)&probe)[0] == 1)
{
swap.byte[1] = (( SWAP_16 )word).byte[0];
swap.byte[0] = (( SWAP_16 )word).byte[1];
return swap.word;
}
else
return word;
}