Tizen 2.1 base
[platform/upstream/hplip.git] / prnt / hpijs / config.h
1 /*****************************************************************************\
2   config.h : configuration include header
3
4   Copyright (c) 1996 - 2002, Hewlett-Packard Co.
5   All rights reserved.
6
7   Redistribution and use in source and binary forms, with or without
8   modification, are permitted provided that the following conditions
9   are met:
10   1. Redistributions of source code must retain the above copyright
11      notice, this list of conditions and the following disclaimer.
12   2. Redistributions in binary form must reproduce the above copyright
13      notice, this list of conditions and the following disclaimer in the
14      documentation and/or other materials provided with the distribution.
15   3. Neither the name of Hewlett-Packard nor the names of its
16      contributors may be used to endorse or promote products derived
17      from this software without specific prior written permission.
18
19   THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
20   WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
21   MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN
22   NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
24   TO, PATENT INFRINGEMENT; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
25   OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
26   ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
28   THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 \*****************************************************************************/
30
31 /* Do NOT edit this file. Commenting or uncommenting the macro #defines below
32 will not change the build options!
33 */
34
35 /*! \addtogroup build_options Build Options
36 This exists primarily as documentation of build options. All build options are
37 documented here.  The actual #defines are only included if documentation is being built.
38 One can read though this file or the documentation to determine which options to include
39 as input to the build process. config.h also sets up internal macros for
40 including /excluding code based on compiler and defined public macros.
41 \since Version 3.00.01
42 @{
43 */
44
45 #ifndef APDK_CONFIG_H
46 #define APDK_CONFIG_H
47
48 #ifdef APDK_INTERNAL_CREATE_DOCUMENTATION
49
50 /*! \addtogroup font_options Font Options
51 Define one or more of the font directive to enable device fonts.
52 These need to be defined to support hardware fonts in the printer.  Enabling fonts
53 is NOT recommended, however if ASCII text needs to be sent to the printer then define
54 the font(s) needed.  Only define the fonts that will be used, each font that is enabled
55 will make the code size larger.  See \ref devfonts for more information about fonts or
56 PrintContext::RealizeFont() to create a font.
57 @{
58 */
59
60 #define APDK_CGTIMES        //!< Include support for CGTimes font - see \ref devfonts
61
62 #define APDK_COURIER        //!< Include support for Courier font - see \ref devfonts
63
64 #define APDK_LTRGOTHIC      //!< Include support for Letter Gothic font - see \ref devfonts
65
66 #define APDK_UNIVERS        //!< Include support for  Universe font - see \ref devfonts
67
68 /*! @} */  //end of Font Options group
69
70
71 /*!
72 Define this if build is for a little endian processor
73 \since Version 2.3.0
74 */
75 #define APDK_LITTLE_ENDIAN
76
77
78 /*!
79 Compiles in code that allows for auto duplex on printers that support a duplexer.
80 On most inkjet printers, when the duplexer refeeds the paper, the back side will be
81 rotated 180 degrees with respect to the front side, resulting in tabelt mode duplexing
82 (stapled on the short edge). To print duplexed in booklet mode (stapled on the long edge),
83 the application must rotate the whole page image by 180 degrees before sending the rasters.
84 Call PrintContext::RoateteImageForBackPage () to determine if the selected printer needs
85 back page rotated.
86 */
87 #define APDK_AUTODUPLEX
88
89 /*!
90 Compiles in code that allows for additional media size for large resource system
91 \since Version 3.6.0
92 */
93 #define APDK_EXTENDED_MEDIASIZE
94
95
96 /*!
97 This makes several changes to the code path to ensure maximum speed:
98 \li First, speed optimization forces the use of matrix half toning instead of what the print mode
99 requests.  Typically matrix is used for draft modes because it is faster and not as good
100 of quality.  Speed optimization uses matrix for all print modes.
101 \li Second, speed optimization forces the use of open color matching instead of proprietary
102 color matching.  Open is faster and not as good.  Proprietary color matching is not included
103 in the open source code.
104 \li Third, it forces the use of open scaling which is quicker and not as good as proprietary
105 scaling. Proprietary scaling is not include in the open source code.
106 \since Version 2.4.0
107 */
108 #define APDK_OPTIMIZE_FOR_SPEED
109
110
111 /*!
112 By default color filtering (Ernie code) is turned off.  Color filtering
113 helps with RLE compression (Bert) when sending data to the printer. Color filtering is
114 only used with VIP printers and should only be turned on when the DJ9xxVIP family of printers
115 is supported.  Turning on color filtering will help in the situation where there is
116 high CPU resources available and low I/O bandwidth.  Color filtering reduces the amount of
117 data sent to the printer by matching colors so that RLE compression is more effective.  If
118 CPU resources a low do not turn on color filtering.
119 \note APDK_VIP_COLORFILTERING has no effect unless \ref APDK_DJ9xxVIP is also defined.
120 \since Version 3.00.00
121 */
122 #define APDK_VIP_COLORFILTERING
123
124
125 /*!
126 By default all APDK classes, types, variables, etc... belong to the apdk namespace.
127 This minimizes the conflicts when integrating with existing code.  The code that calls the APDK
128 driver code should include the line "using namespace APDK_NAMESPACE;".  If there are specific
129 conflicts with other names then the name should be specifically specified (i.e.
130 APDK_NAMESPACE::DRIVER_ERROR or APDK_NAMESPACE::Job, etc...).  Define APDK_NO_NAMESPACE to
131 eliminate the namespace definitions and all APDK names will be placed in the global namespace.
132 \since Version 3.00.01
133 */
134 #define APDK_NO_NAMESPACE
135
136
137 /*!
138 For embedded devices the APDK defaults to lower (normal) resolution print modes.
139 This facilitates sending less data on lower end (low bandwidth / low CPU) devices.
140 On VIP printers this data is scaled up internally so the print quality is good.
141 For high end devices or OSs, such as Linux, defining APDK_HIGH_RES_MODES will cause
142 some VIP printer modes to send higher resolution data to the printer.  This will
143 cause higher CPU utilization and use more I/O bandwidth.  However, results could
144 be better if the input data is truly more then 300 DPI.  If the input data is not
145 significantly higher then 300 DIP then turning on APDK_HIGH_RES_MODES will unncessarily
146 burn CPU cycles and I/O bandwidth.
147 \note Currently this only effects VIP printers.
148 \since Version 3.00.02
149 */
150 #define APDK_HIGH_RES_MODES
151
152
153 /*!
154 This turns on output buffering.  Without buffering the APDK sends out each byte
155 as it is ready.  With buffer send on the APDK buffers up output data and sends it to the
156 printer when the buffer is full.  To set the size of the buffer set the
157 SystemServicesa::iSendBufferSize variable in your derived SystemServices and define this
158 directive.  The default buffer size, if not specified, is 4096 bytes.
159 */
160 #define APDK_BUFFER_SEND
161
162
163 /*
164 Usage Log: What does this do guys?
165 */
166
167 // #define APDK_USAGE_LOG
168
169
170 /*!
171 Turn on capturing utility for debugging.  This creates script files that document
172 order of calls and state of APDK and PCL output.
173 */
174 #define APDK_CAPTURE
175
176
177 /*
178 Prototype: Do NOT define APDK_PROTO.  It is for internal use only and facilitates testing
179 with HP's test harness.  The APDK will not successfully compile with APDK_PROTO defined.
180 */
181
182 //#define APDK_PROTO
183
184
185 /*! \addtogroup printer_options Printer Options
186 Printer families:  Define one or more of these to support printer families.
187 @{
188 */
189
190 /* Do NOT enable DJ400 or DJ540 - they are not supported, only legacy,
191 unsupported code exists for these two printers.
192 */
193
194 /*!
195 Enable support for Apollo P-2200 and the Deskjet 656.
196 */
197 #define APDK_APOLLO2XXX
198
199 /*!
200 enables support for the Apollo P-2100.
201 */
202 #define APDK_APOLLO21XX
203
204 /*!
205 Enables support for the Apollo P-2500 and P-2600.
206 */
207 #define APDK_APOLLO2560
208
209 /*!
210 Enables support for the Deskjet 350.
211 */
212 #define APDK_DJ350
213
214 /*
215 Do NOT define this - the 400 is not supported
216 Enables support for the Deskjet 400.
217 */
218 //#define APDK_DJ400
219
220 /*
221 Do NOT define this - the 540 is not supported
222 Enables support for the Deskjet 540.
223 */
224 //#define APDK_DJ540
225
226 /*!
227 Enables support for the Deskjet 600.
228 */
229 #define APDK_DJ600
230
231 /*!
232 Enables support for the Deskjet 630.
233 */
234 #define APDK_DJ630
235
236 /*!
237 Enables support for the Deskjet 660, 670, 680, 6xx, e-printer.
238 */
239 #define APDK_DJ6xx
240
241 /*!
242 Enables support for the Deskjet 610, 640, 690
243 */
244 #define APDK_DJ6xxPhoto
245
246 /*!
247 Enables support for the Deskjet 810, 830, 840, 880, 895, 1125.
248 */
249 #define APDK_DJ8xx
250
251 /*!
252 Enables support for the Deskjet 825, 845.
253 APDK_DJ8xx must also be defined
254 */
255 #define APDK_DJ8x5
256
257 /*!
258 Enables support for the Deskjet 920, 930, 94x, 950, 970, 1220, 3816, 3820,
259 PhotoSmart P1000, P1100.
260 */
261 #define APDK_DJ9xx
262
263 /*!
264 Enables support for the Deskjet 450, 960, 980, 990, 995, 6122, 6127,
265 PhotoSmart 1115, 1215, 1218, 1315
266 CP 1160, CP 1700
267 hp business inkjet 2200 series, hp business inkjet 1100
268 OfficeJet Pro K550, OfficeJet Pro K850 - Note: these two are in OJProKx50 class
269 */
270 #define APDK_DJ9xxVIP
271
272 /*!
273 Enables support for
274 deskjet 5550, 5551 - Note: these two printers are in DJ55xx class
275 PhotoSmart 7150, 7350, 7550.
276 APDK_DJ9xxVIP must also be defined
277 */
278 #define APDK_DJGENERICVIP
279
280 /*!
281 Enables support for the PhotoSmart 100, 130, 230, 240.
282 APDK_DJ9xxVIP must also be defined
283 */
284 #define APDK_PSP100
285
286 /*!
287 Enables support for the non-hostbased Monochrome LaserJets.
288 */
289 #define APDK_LJMONO
290
291 /*!
292 Enables support for the non-hostbased Color LaserJets.
293 */
294 #define APDK_LJCOLOR
295
296 /*!
297 Enables support for the JetReady host based Color LaserJets.
298 */
299 #define APDK_LJJETREADY
300
301 /*!
302 Enables support for the FastRaster host based LaserJets.
303 */
304 #define APDK_LJFASTRASTER
305
306 /*!
307 Enables support for LaserJet 1000, 1005, 1018, 1020
308 */
309 #define APDK_LJZJS_MONO
310
311 /*!
312 Enables support for the hp and non-hp Postscript Printers
313 */
314 #define APDK_PSCRIPT
315
316 /*!
317 Enables support for DJ 3300, 3400, 3500, 3740 family, psc 1100 series, psc 1200 series, officejet 4100 and 4200.
318 */
319 #define APDK_DJ3320
320
321 /*!
322 Enables support for DJ 3600, 3840 family, psc 1300 series, and officejet 5500 series.
323 */
324 #define APDK_DJ3600
325
326 /*!
327 Enables support for specific Linux resolution requirements for 600 Series
328 */
329 #define APDK_LINUX
330
331 /*!
332 Enables printer ready data compression for DJ3320 and DJ3600 class of printers. This
333 is beneficial where I/O bandwidth is low. May reduce performance on devices
334 that have low power CPUs.
335 */
336 #define APDK_LDL_COMPRESS
337
338 /*! @} */  //end of Printer Options group
339 /*! @} */  //end of Build Options group
340
341 /*!
342 Enables support for HP-UX specific declarations
343 */
344
345 #define APDK_HP_UX
346
347 #endif //APDK_INTERNAL_CREATE_DOCUMENTATION
348 /*
349 Now set up some stuff to make it easy in the main code and ensure conflicting
350 directives are not active.  Don't play with stuff beyond this point in the file.
351 */
352
353 // Don't allow Ernie ColorFiltering if the VIP family printers are not being built.
354 // ColorFiltering is only useful for DJ9xxVIP and will just take up code space if
355 // that printer family is not defined.
356 #if !defined(APDK_DJ9xxVIP) && defined(APDK_VIP_COLORFILTERING)
357     #undef APDK_VIP_COLORFILTERING
358 #endif
359
360
361 // This is make the #ifdefs in the code more readable since we need to know if any of the
362 // fonts are defined in a number of places.  If we ever add any other fonts to a printer
363 // then we can define it here rather then edit the #ifdefs all over the code base.
364 #if defined(APDK_CGTIMES) || defined(APDK_COURIER) || defined(APDK_LTRGOTHIC) || defined(APDK_UNIVERS)
365     #define APDK_FONTS_NEEDED
366 #else
367     #undef APDK_FONTS_NEEDED
368 #endif
369
370 /*!
371 \namespace apdk
372 All classes, types, global variables, functions, etc... are in the apdk namespace to avoid
373 collision with existing code the APDK is integrated with.
374 \since version 3.00.01
375 */
376 // This will put all enums, typedefs, structs, classes, etc... in the apdk name space if
377 // APDK_NO_NAMESPACE is not defined.
378 #if !defined(APDK_NO_NAMESPACE)
379     #define APDK_NAMESPACE          apdk
380     #define APDK_BEGIN_NAMESPACE    namespace APDK_NAMESPACE {
381     #define APDK_END_NAMESPACE      } //namespace apdk
382     #define APDK_USING_NAMESPACE    using namespace APDK_NAMESPACE;
383 #else
384     #define APDK_NAMESPACE
385     #define APDK_BEGIN_NAMESPACE
386     #define APDK_END_NAMESPACE
387     #define APDK_USING_NAMESPACE
388 #endif
389
390 /*!
391 This define is useful for autoconf users who create "auto-include.h" on-the-fly. For example autoconf
392 can automatically determine the appropriate header file for uint32_t (ie: by storing "#include <stdint.h>" 
393 in "auto-include.h").
394 */
395 //#define  APDK_AUTO_INCLUDE
396
397 #endif //APDK_CONFIG_H