1 /*****************************************************************************\ 2 config.h : configuration include header 3 4 Copyright (c) 1996 - 2015, HP 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 HP 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 398