2 |
- |
1 |
/* Copyright (C) 2000 Aladdin Enterprises. All rights reserved.
|
|
|
2 |
|
|
|
3 |
This software is provided AS-IS with no warranty, either express or
|
|
|
4 |
implied.
|
|
|
5 |
|
|
|
6 |
This software is distributed under license and may not be copied,
|
|
|
7 |
modified or distributed except as expressly authorized under the terms
|
|
|
8 |
of the license contained in the file LICENSE in this distribution.
|
|
|
9 |
|
|
|
10 |
For more information about licensing, please refer to
|
|
|
11 |
http://www.ghostscript.com/licensing/. For information on
|
|
|
12 |
commercial licensing, go to http://www.artifex.com/licensing/ or
|
|
|
13 |
contact Artifex Software, Inc., 101 Lucas Valley Road #110,
|
|
|
14 |
San Rafael, CA 94903, U.S.A., +1(415)492-9861.
|
|
|
15 |
*/
|
|
|
16 |
|
|
|
17 |
/* $Id: gdevdljm.h,v 1.8 2004/01/29 18:40:23 ray Exp $ */
|
|
|
18 |
/* Interface to generic monochrome H-P DeskJet/LaserJet driver */
|
|
|
19 |
|
|
|
20 |
#ifndef gdevdljm_INCLUDED
|
|
|
21 |
# define gdevdljm_INCLUDED
|
|
|
22 |
|
|
|
23 |
#include "gdevpcl.h"
|
|
|
24 |
|
|
|
25 |
/*
|
|
|
26 |
* The notion that there is such a thing as a "PCL printer" is a fiction: no
|
|
|
27 |
* two "PCL" printers, even at the same PCL level, have identical command
|
|
|
28 |
* sets. (The H-P documentation isn't fully accurate either; for example,
|
|
|
29 |
* it doesn't reveal that the DeskJet printers implement anything beyond PCL
|
|
|
30 |
* 3.)
|
|
|
31 |
*
|
|
|
32 |
* This file contains feature definitions for a generic monochrome PCL
|
|
|
33 |
* driver (gdevdljm.c), and the specific feature values for all such
|
|
|
34 |
* printers that Ghostscript currently supports.
|
|
|
35 |
*/
|
|
|
36 |
|
|
|
37 |
/* Printer spacing capabilities. Include at most one of these. */
|
|
|
38 |
#define PCL_NO_SPACING 0 /* no vertical spacing capability, must be 0 */
|
|
|
39 |
#define PCL3_SPACING 1 /* <ESC>*p+<n>Y (PCL 3) */
|
|
|
40 |
#define PCL4_SPACING 2 /* <ESC>*b<n>Y (PCL 4) */
|
|
|
41 |
#define PCL5_SPACING 4 /* <ESC>*b<n>Y and clear seed row (PCL 5) */
|
|
|
42 |
/* The following is only used internally. */
|
|
|
43 |
#define PCL_ANY_SPACING\
|
|
|
44 |
(PCL3_SPACING | PCL4_SPACING | PCL5_SPACING)
|
|
|
45 |
|
|
|
46 |
/* Individual printer properties. Any subset of these may be included. */
|
|
|
47 |
#define PCL_MODE_2_COMPRESSION 8 /* compression mode 2 supported */
|
|
|
48 |
/* (PCL 4) */
|
|
|
49 |
#define PCL_MODE_3_COMPRESSION 16 /* compression modes 2 & 3 supported */
|
|
|
50 |
/* (PCL 5) */
|
|
|
51 |
#define PCL_END_GRAPHICS_DOES_RESET 32 /* <esc>*rB resets all parameters */
|
|
|
52 |
#define PCL_HAS_DUPLEX 64 /* <esc>&l<duplex>S supported */
|
|
|
53 |
#define PCL_CAN_SET_PAPER_SIZE 128 /* <esc>&l<sizecode>A supported */
|
|
|
54 |
#define PCL_CAN_PRINT_COPIES 256 /* <esc>&l<copies>X supported */
|
|
|
55 |
|
|
|
56 |
/* Shorthands for the most common spacing/compression combinations. */
|
|
|
57 |
#define PCL_MODE0 PCL3_SPACING
|
|
|
58 |
#define PCL_MODE0NS PCL_NO_SPACING
|
|
|
59 |
#define PCL_MODE2 (PCL4_SPACING | PCL_MODE_2_COMPRESSION)
|
|
|
60 |
#define PCL_MODE2P (PCL_NO_SPACING | PCL_MODE_2_COMPRESSION)
|
|
|
61 |
#define PCL_MODE3 (PCL5_SPACING | PCL_MODE_3_COMPRESSION)
|
|
|
62 |
#define PCL_MODE3NS (PCL_NO_SPACING | PCL_MODE_3_COMPRESSION)
|
|
|
63 |
|
|
|
64 |
/* Parameters for the printers we know about. */
|
|
|
65 |
|
|
|
66 |
/* H-P DeskJet */
|
|
|
67 |
#define PCL_DJ_FEATURES\
|
|
|
68 |
(PCL_MODE2 |\
|
|
|
69 |
PCL_END_GRAPHICS_DOES_RESET | PCL_CAN_SET_PAPER_SIZE)
|
|
|
70 |
|
|
|
71 |
/* H-P DeskJet 500 */
|
|
|
72 |
#define PCL_DJ500_FEATURES\
|
|
|
73 |
(PCL_MODE3 |\
|
|
|
74 |
PCL_END_GRAPHICS_DOES_RESET | PCL_CAN_SET_PAPER_SIZE)
|
|
|
75 |
|
|
|
76 |
/* Kyocera FS-600 */
|
|
|
77 |
#define PCL_FS600_FEATURES\
|
|
|
78 |
(PCL_MODE3 |\
|
|
|
79 |
PCL_CAN_SET_PAPER_SIZE | PCL_CAN_PRINT_COPIES)
|
|
|
80 |
|
|
|
81 |
/* H-P original LaserJet */
|
|
|
82 |
#define PCL_LJ_FEATURES\
|
|
|
83 |
(PCL_MODE0)
|
|
|
84 |
|
|
|
85 |
/* H-P LaserJet Plus */
|
|
|
86 |
#define PCL_LJplus_FEATURES\
|
|
|
87 |
(PCL_MODE0)
|
|
|
88 |
|
|
|
89 |
/* H-P LaserJet IIp, IId */
|
|
|
90 |
#define PCL_LJ2p_FEATURES\
|
|
|
91 |
(PCL_MODE2P |\
|
|
|
92 |
PCL_CAN_SET_PAPER_SIZE)
|
|
|
93 |
|
|
|
94 |
/* H-P LaserJet III* */
|
|
|
95 |
#define PCL_LJ3_FEATURES\
|
|
|
96 |
(PCL_MODE3 |\
|
|
|
97 |
PCL_CAN_SET_PAPER_SIZE | PCL_CAN_PRINT_COPIES)
|
|
|
98 |
|
|
|
99 |
/* H-P LaserJet IIId */
|
|
|
100 |
#define PCL_LJ3D_FEATURES\
|
|
|
101 |
(PCL_MODE3 |\
|
|
|
102 |
PCL_HAS_DUPLEX | PCL_CAN_SET_PAPER_SIZE | PCL_CAN_PRINT_COPIES)
|
|
|
103 |
|
|
|
104 |
/* H-P LaserJet 4 */
|
|
|
105 |
#define PCL_LJ4_FEATURES\
|
|
|
106 |
(PCL_MODE3 |\
|
|
|
107 |
PCL_CAN_SET_PAPER_SIZE | PCL_CAN_PRINT_COPIES)
|
|
|
108 |
|
|
|
109 |
/* H-P LaserJet 4d */
|
|
|
110 |
#define PCL_LJ4D_FEATURES\
|
|
|
111 |
(PCL_MODE3 |\
|
|
|
112 |
PCL_HAS_DUPLEX | PCL_CAN_SET_PAPER_SIZE | PCL_CAN_PRINT_COPIES)
|
|
|
113 |
|
|
|
114 |
/* H-P 2563B line printer */
|
|
|
115 |
#define PCL_LP2563B_FEATURES\
|
|
|
116 |
(PCL_MODE0NS |\
|
|
|
117 |
PCL_CAN_SET_PAPER_SIZE)
|
|
|
118 |
|
|
|
119 |
/* OCE 9050 line printer */
|
|
|
120 |
#define PCL_OCE9050_FEATURES\
|
|
|
121 |
(PCL_MODE3NS |\
|
|
|
122 |
PCL_CAN_SET_PAPER_SIZE)
|
|
|
123 |
|
|
|
124 |
/* ---------------- Procedures ---------------- */
|
|
|
125 |
|
|
|
126 |
/* Send a page to the printer. */
|
|
|
127 |
int dljet_mono_print_page(
|
|
|
128 |
gx_device_printer * pdev, /* from device-specific _print_page */
|
|
|
129 |
FILE * prn_stream, /* ibid. */
|
|
|
130 |
int dots_per_inch, /* may be a multiple of y resolution */
|
|
|
131 |
int features, /* as defined above */
|
|
|
132 |
const char *page_init /* page initialization string */
|
|
|
133 |
);
|
|
|
134 |
int dljet_mono_print_page_copies(
|
|
|
135 |
gx_device_printer * pdev,
|
|
|
136 |
FILE * prn_stream,
|
|
|
137 |
int num_copies,
|
|
|
138 |
int dots_per_inch,
|
|
|
139 |
int features,
|
|
|
140 |
const char *page_init
|
|
|
141 |
);
|
|
|
142 |
|
|
|
143 |
#endif /* gdevdljm_INCLUDED */
|