Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
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 */