Tizen 2.0 Release
[external/epson-laser-printer-escpage.git] / lib / epson-escpage.c
1 /*__________________________________  epson-escpage.c   ________________________________*/\r
2 \r
3 /*       1         2         3         4         5         6         7         8        */\r
4 /*34567890123456789012345678901234567890123456789012345678901234567890123456789012345678*/\r
5 /*******************************************|********************************************/\r
6 /*\r
7  *   Copyright (c) 2010  Seiko Epson Corporation                 All rights reserved.\r
8  *\r
9  *   Copyright protection claimed includes all forms and matters of\r
10  *   copyrightable material and information now allowed by statutory or judicial\r
11  *   law or hereinafter granted, including without limitation, material generated\r
12  *   from the software programs which are displayed on the screen such as icons,\r
13  *   screen display looks, etc.\r
14  *\r
15  */\r
16 \r
17 /*------------------------------------  Includes   -------------------------------------*/\r
18 /*******************************************|********************************************/\r
19 #include "epson-escpr-err.h"\r
20 #include "epson-escpr-mem.h"\r
21 #include "epson-escpage-color.h"\r
22 #include "epson-escpage-mono.h"\r
23 #ifdef GCOMSW_CMD_ESCPAGE_S\r
24 #include "epson-escpage-s.h"\r
25 #endif\r
26 #include "epson-escpage.h"\r
27 \r
28 /*-----------------------------  Local Macro Definitions -------------------------------*/\r
29 /*******************************************|********************************************/\r
30 #ifdef EPS_LOG_MODULE_PAGE\r
31 #define EPS_LOG_MODULE  EPS_LOG_MODULE_PAGE\r
32 #else\r
33 #define EPS_LOG_MODULE  0\r
34 #endif\r
35 \r
36 /*-----------------------------------  EJL Commands ------------------------------------*/\r
37 /*******************************************|********************************************/\r
38 const static EPS_UINT8 sbEJL_ESC_SOH[] = "\x1B\x01";          /* Escape and start of heading <ESC><SOH> */\r
39 const static EPS_UINT8 sbEJL[]    = "@EJL";             /* EJL command */\r
40 const static EPS_UINT8 sbEJL_SP[] = "\x20";             /* Space <SP> */\r
41 const static EPS_UINT8 sbEJL_LF[] = "\x0A";             /* Line Feed <LF> */\r
42 const static EPS_UINT8 sbEJL_EN[] = "@EJL""\x20""EN""\x20""LA=ESC/PAGE";    /* EJL ENTER command */\r
43 const static EPS_UINT8 sbEJL_EN_C[] = "@EJL""\x20""EN""\x20""LA=ESC/PAGE-COLOR";/* EJL ENTER command */\r
44 const static EPS_UINT8 sbEJL_SE[] = "@EJL""\x20""SE""\x20""LA=ESC/PAGE";    /* EJL SELECT command */\r
45 const static EPS_UINT8 sbEJL_SET[]  = "SET";              /* SET command */\r
46 \r
47 /*---------------------------------  ESC/Page Commands ---------------------------------*/\r
48 /*******************************************|********************************************/\r
49 const static EPS_INT8 sbLOS[]   = "\x1D%d;%dloE";         /* Logical Origin setting for 300 dpi(0.2 inch) */\r
50 const static EPS_UINT8 sbCHPAS[]    = {0x1D, '0', 'X'};         /* Reset the current absolute X position */\r
51 const static EPS_UINT8 sbCVPAS[]  = {0x1D, '0', 'Y'};         /* Reset the current absolute Y position */\r
52 const static EPS_INT8 sbCA[]    = "\x1D""0;0;%d;%dcaE";       /* Set Clip Area */\r
53 \r
54 \r
55 /*---------------------------  Data Structure Declarations   ---------------------------*/\r
56 /*******************************************|********************************************/\r
57 typedef struct _tagEPS_PAGE_MEDIA_NAME_ {\r
58     EPS_INT32 id;\r
59     const EPS_INT8 *name;\r
60 } EPS_PAGE_MEDIA_NAME;\r
61 \r
62 /*---------------------------  ESC/Page Media Declarations   ---------------------------*/\r
63 /*******************************************|********************************************/\r
64 /* Type */\r
65 const EPS_PAGE_MEDIA_NAME pageMediaType[]  = {\r
66   { EPS_MTID_PLAIN,     "NM" },\r
67   { EPS_MTID_SEMITHICK,     "ST"},\r
68   { EPS_MTID_PREPRINTED,    "PP"},\r
69   { EPS_MTID_LETTERHEAD,    "LH"},\r
70   { EPS_MTID_RECYCLED,    "RC"},\r
71   { EPS_MTID_COLOR,       "CL"},\r
72   { EPS_MTID_LABEL,     "LB"},\r
73   { EPS_MTID_THICK,     "TK"},\r
74   { EPS_MTID_COATED,      "CT"},\r
75   { EPS_MTID_SPECIAL,     "SP"},\r
76   { EPS_MTID_TRANSPARENT,   "TP"},\r
77   { EPS_MTID_UNSPECIFIED,   "UN"}\r
78 };\r
79 \r
80 /* Paper Source */\r
81 const EPS_PAGE_MEDIA_NAME pagePaperSource[]  = {\r
82   { EPS_MPID_AUTO,     "AU" },\r
83   /*{ EPS_MPID_MPTRAY,    "1" },\r
84   { EPS_MPID_FRONT1,    "2" },\r
85   { EPS_MPID_FRONT2,    "3" },\r
86   { EPS_MPID_FRONT3,    "4" },\r
87   { EPS_MPID_FRONT4,    "5" },*/\r
88   {  IPS_MPTID_TRAY1,    "1" },\r
89   {  IPS_MPTID_TRAY2,    "2" },\r
90   {  IPS_MPTID_TRAY3,    "3" },\r
91   {  IPS_MPTID_TRAY4,    "4" },\r
92   {  IPS_MPTID_TRAY5,    "5" },\r
93   {  IPS_MPTID_TRAY6,    "6" },\r
94   {  IPS_MPTID_TRAY7,    "7" },\r
95   {  IPS_MPTID_TRAY8,    "8" },\r
96   {  IPS_MPTID_TRAY9,    "9" },\r
97   {  IPS_MPTID_TRAY10,   "10" },\r
98   {  IPS_MPTID_TRAY11,   "11" },\r
99   {  IPS_MPTID_TRAY12,   "12" },\r
100   {  IPS_MPTID_TRAY13,   "13" },\r
101   {  IPS_MPTID_TRAY14,   "14" },\r
102   {  IPS_MPTID_TRAY15,   "15" },\r
103 };\r
104 \r
105 \r
106 /*----------------------------  ESC/P-R Lib Global Variables  --------------------------*/\r
107 /*******************************************|********************************************/\r
108 extern EPS_CMN_FUNC   epsCmnFnc;\r
109 extern EPS_PRINT_JOB  printJob;\r
110 \r
111 #if 0\r
112 #include "epsmp-make-img.h" \r
113 static FILE *fp = NULL;\r
114 #endif\r
115 \r
116 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%|%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/\r
117 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%|%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/\r
118 /*%%%%%%%%%%%%%%%%%%%%                                             %%%%%%%%%%%%%%%%%%%%%*/\r
119 /*--------------------              Public Functions               ---------------------*/\r
120 /*%%%%%%%%%%%%%%%%%%%%                                             %%%%%%%%%%%%%%%%%%%%%*/\r
121 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%|%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/\r
122 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%|%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/\r
123 \r
124 /*******************************************|********************************************/\r
125 /*                                                                                      */\r
126 /* Function name:   pageInitJob()                                               */\r
127 /*                                                                                      */\r
128 /* Arguments                                                                            */\r
129 /* ---------                                                                            */\r
130 /* Name:    Type:         Description:                                    */\r
131 /* jobAttr      const EPS_JOB_ATTRIB*   I: Print Job Attribute                          */\r
132 /*                                                                                      */\r
133 /* Return value:                                                                        */\r
134 /*      << Normal >>                                                                    */\r
135 /*      EPS_ERR_NONE                            - Success                               */\r
136 /*      << Error >>                                                                     */\r
137 /*      EPS_ERR_INVALID_VERSION                 - Invalid structure version             */\r
138 /*      EPS_ERR_INV_COLOR_PLANE                 - Invalid Color Plane                   */\r
139 /*      EPS_ERR_INV_PALETTE_SIZE                - Invalid Palette Size                  */\r
140 /*      EPS_ERR_INV_PALETTE_DATA                - Invalid Palette Data                  */\r
141 /*      EPS_ERR_INV_MEDIA_SIZE                  - Invalid Media Size                    */\r
142 /*      EPS_ERR_INV_MEDIA_TYPE                  - Invalid Media Type                    */\r
143 /*      EPS_ERR_INV_BORDER_MODE                 - Invalid Border Mode                   */\r
144 /*      EPS_ERR_INV_PAPER_SOURCE                - Invalid Paper source                  */\r
145 /*      EPS_ERR_INV_COLOR_MODE                  - Invalid Color Mode                    */\r
146 /*      EPS_ERR_INV_INPUT_RESOLUTION            - Invalid Input Resolution              */\r
147 /*      EPS_ERR_INV_DUPLEX                      - Invalid duplex                        */\r
148 /*      EPS_ERR_INV_FEED_DIRECTION              - Invalid feed direction                */\r
149 /*                                                                                      */\r
150 /* Description:                                                                         */\r
151 /*      Called form epsStartJob. Confirm ESC/Page Job Attribute.                        */\r
152 /*                                                                                      */\r
153 /*******************************************|********************************************/\r
154 EPS_ERR_CODE pageInitJob(\r
155 \r
156     const EPS_JOB_ATTRIB *jobAttr\r
157     \r
158 ){\r
159   EPS_INT32 i;\r
160   const EPS_PAGE_MEDIASIZE *mediaSizeEnt = NULL;\r
161 \r
162   EPS_LOG_FUNCIN\r
163 \r
164 /*** Validate input parameters                                                          */\r
165   /*** Structure version                                                              */\r
166   if(EPS_JOB_ATTRIB_VER_3 > jobAttr->version){\r
167     EPS_RETURN( EPS_ERR_INVALID_VERSION )\r
168   }\r
169 \r
170   /*** Color Plane                                                                    */\r
171   if (! (   (jobAttr->colorPlane         == EPS_CP_FULLCOLOR         ) ||\r
172         (jobAttr->colorPlane         == EPS_CP_256COLOR          ) ) ){\r
173     EPS_RETURN( EPS_ERR_INV_COLOR_PLANE )\r
174   }\r
175 \r
176   /*** Media Type                                                                     */\r
177   for( i=0; i < dim(pageMediaType); i++ ) {\r
178     if( jobAttr->mediaTypeIdx == pageMediaType[i].id ) {\r
179       break;\r
180     }\r
181   }\r
182   if(i >= dim(pageMediaType)){\r
183     EPS_RETURN( EPS_ERR_INV_MEDIA_TYPE )\r
184   }\r
185 \r
186 #if 0\r
187   /*** Print Quality                                                                  */\r
188   if (! (   (jobAttr->printQuality       == EPS_MQID_NORMAL          ) ||\r
189         (jobAttr->printQuality       == EPS_MQID_HIGH            )    ) ){\r
190     EPS_RETURN( EPS_ERR_INV_PRINT_QUALITY )\r
191   }\r
192 #endif\r
193   /*** Input Image Resolution                                                         */\r
194     if (! ( (jobAttr->inputResolution    == EPS_IR_150X150 ) ||\r
195       (jobAttr->inputResolution    == EPS_IR_300X300 ) || \r
196       (jobAttr->inputResolution    == EPS_IR_1200X1200 )\r
197 #if !EPS_PAGE_LOWRES_MODE\r
198       || (jobAttr->inputResolution    == EPS_IR_600X600 )\r
199 #endif\r
200   ) ){\r
201         EPS_RETURN( EPS_ERR_INV_INPUT_RESOLUTION )\r
202   }\r
203 \r
204   /*** Paper Source                                                                   */\r
205   debug_msg("__ Number = %d __\n", dim(pagePaperSource) );\r
206   for( i=0; i < dim(pagePaperSource); i++ ) {\r
207     if( jobAttr->paperSource == pagePaperSource[i].id ) {\r
208       break;\r
209     }\r
210   }\r
211   if(i >= dim(pagePaperSource)){\r
212     debug_msg(" Invalid paper source: i = %d\n", i);\r
213     EPS_RETURN( EPS_ERR_INV_PAPER_SOURCE )\r
214   }\r
215 \r
216   /*** Border Mode                                                                    */\r
217   if( jobAttr->printLayout != EPS_MLID_BORDERS ){\r
218         EPS_RETURN( EPS_ERR_INV_BORDER_MODE )\r
219   }\r
220 \r
221   /*** Color Mode                                                                     */\r
222     if( !( (jobAttr->colorMode          == EPS_CM_COLOR             ) ||\r
223            (jobAttr->colorMode          == EPS_CM_MONOCHROME        ) ) ){\r
224     EPS_RETURN( EPS_ERR_INV_COLOR_MODE )\r
225   }\r
226   if( jobAttr->colorMode == EPS_CM_COLOR && \r
227     printJob.printer->language == EPS_LANG_ESCPAGE){\r
228     EPS_RETURN( EPS_ERR_INV_COLOR_MODE )\r
229   }\r
230 \r
231   /*** Pallette Data                                  */\r
232   if (jobAttr->colorPlane == EPS_CP_256COLOR) {\r
233     if (! ((jobAttr->paletteSize       >= 3                        ) &&\r
234          (jobAttr->paletteSize       <= 768/*765*/               )    ) ){\r
235       EPS_RETURN( EPS_ERR_INV_PALETTE_SIZE )\r
236     }\r
237 \r
238     if (    jobAttr->paletteData       == NULL                     ){\r
239       EPS_RETURN( EPS_ERR_INV_PALETTE_DATA )\r
240     }\r
241   }\r
242 \r
243   /*** duplex                                                                         */\r
244   if( !( (jobAttr->duplex             == EPS_DUPLEX_NONE             ) ||\r
245        (jobAttr->duplex             == EPS_DUPLEX_LONG             ) ||\r
246            (jobAttr->duplex           == EPS_DUPLEX_SHORT            ) ) ){\r
247     EPS_RETURN( EPS_ERR_INV_DUPLEX )\r
248   }\r
249 \r
250   /*** Color Mode                                                                     */\r
251   if( !( (jobAttr->feedDirection     == EPS_FEEDDIR_PORTRAIT         ) ||\r
252            (jobAttr->feedDirection     == EPS_FEEDDIR_LANDSCAPE        ) ) ){\r
253     EPS_RETURN( EPS_ERR_INV_FEED_DIRECTION )\r
254   }\r
255   \r
256 \r
257   memcpy(&printJob.attr, jobAttr, sizeof(printJob.attr));\r
258   if(jobAttr->copies < 0){\r
259     printJob.attr.copies = 1;\r
260   }\r
261 \r
262   /*** Find the Media by ID                                                           */\r
263   for(i = 0; i < dim(pageMediaSize); i++){\r
264     if( jobAttr->mediaSizeIdx == pageMediaSize[i].id ){\r
265       mediaSizeEnt = &pageMediaSize[i];\r
266       break;\r
267     }\r
268   }\r
269   if( NULL != mediaSizeEnt){\r
270     printJob.printableAreaWidth   = mediaSizeEnt->print_area_x_border;\r
271     printJob.printableAreaHeight  = mediaSizeEnt->print_area_y_border;\r
272     printJob.topMargin        = 120;\r
273         printJob.leftMargin       = 120;\r
274   } else{\r
275     EPS_RETURN( EPS_ERR_INV_MEDIA_SIZE )\r
276   }\r
277 \r
278   if(EPS_IR_300X300 == jobAttr->inputResolution){\r
279     printJob.printableAreaWidth   /= 2;\r
280     printJob.printableAreaHeight  /= 2;\r
281     printJob.topMargin        /= 2;\r
282     printJob.leftMargin       /= 2;\r
283   } else if(EPS_IR_150X150 == jobAttr->inputResolution){\r
284     printJob.printableAreaWidth   /= 4;\r
285     printJob.printableAreaHeight  /= 4;\r
286     printJob.topMargin        /= 4;\r
287     printJob.leftMargin       /= 4;\r
288   }\r
289 \r
290   printJob.bpp = (printJob.attr.colorPlane == EPS_CP_256COLOR)?1:3;\r
291   debug_msg("printJob.bpp = %d\n", printJob.bpp);\r
292 \r
293   printJob.whiteColorValue = memSearchWhiteColorVal(printJob.attr.colorPlane, \r
294                           printJob.attr.paletteData,\r
295                           printJob.attr.paletteSize);\r
296 \r
297   EPS_RETURN( EPS_ERR_NONE )\r
298 }\r
299 \r
300 \r
301 /*******************************************|********************************************/\r
302 /*                                                                                      */\r
303 /* Function name:   pageAllocBuffer()                                             */\r
304 /*                                                                                      */\r
305 /* Arguments                                                                            */\r
306 /* ---------                                                                            */\r
307 /* Name:    Type:         Description:                                    */\r
308 /* N/A                                          */\r
309 /*                                                                                      */\r
310 /* Return value:                                                                        */\r
311 /*      EPS_ERR_NONE                    - Success                   */\r
312 /*      EPS_ERR_MEMORY_ALLOCATION       - Fail to memory allocation                     */\r
313 /*                                                                                      */\r
314 /* Description:                                                                         */\r
315 /*      Allocate buffer for ESC/Page Job.                       */\r
316 /*                                                                                      */\r
317 /*******************************************|********************************************/\r
318 EPS_ERR_CODE pageAllocBuffer(void)\r
319 {\r
320   EPS_ERR_CODE  ret = EPS_ERR_NONE;\r
321 \r
322   EPS_LOG_FUNCIN\r
323 \r
324 #ifdef GCOMSW_CMD_ESCPAGE_S\r
325   if(printJob.printer && EPS_LANG_ESCPAGE_S == printJob.printer->language){\r
326     ret = pageS_AllocBuffer();\r
327   } else\r
328 #endif\r
329   if( EPS_CM_COLOR == printJob.attr.colorMode ){\r
330     /** ESC/Page-Color **/\r
331     ret = pageAllocBuffer_C();\r
332   } else{\r
333     /** ESC/Page **/\r
334     ret = pageAllocBuffer_M();\r
335   }\r
336 \r
337   EPS_RETURN( ret )\r
338 }\r
339 \r
340 \r
341 /*******************************************|********************************************/\r
342 /*                                                                                      */\r
343 /* Function name:   pageRelaseBuffer()                                              */\r
344 /*                                                                                      */\r
345 /* Arguments                                                                            */\r
346 /* ---------                                                                            */\r
347 /* Name:    Type:         Description:                                    */\r
348 /* N/A                                          */\r
349 /*                                                                                      */\r
350 /* Return value:                                                                        */\r
351 /*      N/A                                                                             */\r
352 /*                                                                                      */\r
353 /* Description:                                                                         */\r
354 /*      Free buffer for ESC/Page Job.                                             */\r
355 /*                                                                                      */\r
356 /*******************************************|********************************************/\r
357 void pageRelaseBuffer(void)\r
358 {\r
359   EPS_LOG_FUNCIN\r
360 \r
361 #ifdef GCOMSW_CMD_ESCPAGE_S\r
362   if(printJob.printer && EPS_LANG_ESCPAGE_S == printJob.printer->language){\r
363     pageS_RelaseBuffer();\r
364   } else\r
365 #endif\r
366   if( EPS_CM_COLOR == printJob.attr.colorMode ){\r
367     /** ESC/Page-Color **/\r
368     pageRelaseBuffer_C();\r
369   } else{\r
370     /** ESC/Page **/\r
371     pageRelaseBuffer_M();\r
372   }\r
373 \r
374   EPS_RETURN_VOID\r
375 }\r
376 \r
377 \r
378 /*******************************************|********************************************/\r
379 /*                                                                                      */\r
380 /* Function name:   pageStartJob()                            */\r
381 /*                                                                                      */\r
382 /* Arguments                                                                            */\r
383 /* ---------                                                                            */\r
384 /* Name:    Type:         Description:                                    */\r
385 /* N/A                                          */\r
386 /*                                                                                      */\r
387 /* Return value:                                                                        */\r
388 /*      EPS_ERR_NONE                    - Success                   */\r
389 /*      EPS_ERR_MEMORY_ALLOCATION       - Fail to memory allocation                     */\r
390 /*      EPS_ERR_OPR_FAIL                - Internal Error                                */\r
391 /*      EPS_ERR_COMM_ERROR              - Communication Error                           */\r
392 /*      EPS_ERR_PRINTER_ERR_OCCUR       - Printer Error happened                        */\r
393 /*                                                                                      */\r
394 /* Description:                                                                         */\r
395 /*      Send ESC/Page start job commands.                                       */\r
396 /*                                                                                      */\r
397 /*******************************************|********************************************/\r
398 EPS_ERR_CODE pageStartJob(void)\r
399 {\r
400   EPS_ERR_CODE  ret = EPS_ERR_NONE;\r
401 \r
402   EPS_LOG_FUNCIN\r
403 \r
404 #ifdef GCOMSW_CMD_ESCPAGE_S\r
405   if(printJob.printer && EPS_LANG_ESCPAGE_S == printJob.printer->language){\r
406     ret = pageS_StartJob();\r
407   } else\r
408 #endif\r
409   if( EPS_CM_COLOR == printJob.attr.colorMode ){\r
410     /** ESC/Page-Color **/\r
411     debug_msg("call Start Job Color mode\n");\r
412     ret = pageStartJob_C();\r
413     debug_msg("call Start Job Color mode 1.0 \n");\r
414   } else{\r
415     /** ESC/Page **/\r
416     debug_msg("startjob Mono\n");\r
417     ret = pageStartJob_M();\r
418   }\r
419 \r
420   EPS_RETURN( ret )\r
421 }\r
422 \r
423 \r
424 /*******************************************|********************************************/\r
425 /*                                                                                      */\r
426 /* Function name:   pageEndJob()                            */\r
427 /*                                                                                      */\r
428 /* Arguments                                                                            */\r
429 /* ---------                                                                            */\r
430 /* Name:    Type:         Description:                                    */\r
431 /* N/A                                          */\r
432 /*                                                                                      */\r
433 /* Return value:                                                                        */\r
434 /*      EPS_ERR_NONE                    - Success                   */\r
435 /*      EPS_ERR_MEMORY_ALLOCATION       - Fail to memory allocation                     */\r
436 /*      EPS_ERR_OPR_FAIL                - Internal Error                                */\r
437 /*      EPS_ERR_COMM_ERROR              - Communication Error                           */\r
438 /*      EPS_ERR_PRINTER_ERR_OCCUR       - Printer Error happened                        */\r
439 /*                                                                                      */\r
440 /* Description:                                                                         */\r
441 /*      Send ESC/Page end job commands.                                         */\r
442 /*                                                                                      */\r
443 /*******************************************|********************************************/\r
444 EPS_ERR_CODE pageEndJob()\r
445 {\r
446   EPS_ERR_CODE  ret = EPS_ERR_NONE;           /* Return status of internal calls  */\r
447 \r
448   EPS_LOG_FUNCIN\r
449 \r
450 #ifdef GCOMSW_CMD_ESCPAGE_S\r
451   if(printJob.printer && EPS_LANG_ESCPAGE_S == printJob.printer->language){\r
452     ret = pageS_EndJob();\r
453   } else\r
454 #endif  \r
455   if( EPS_CM_COLOR == printJob.attr.colorMode ){\r
456     /** ESC/Page-Color **/\r
457     ret = pageEndJob_C();\r
458   } else{\r
459     /** ESC/Page **/\r
460     ret = pageEndJob_M();\r
461   }\r
462 \r
463   EPS_RETURN( ret )\r
464 }\r
465 \r
466 \r
467 /*******************************************|********************************************/\r
468 /*                                                                                      */\r
469 /* Function name:   pageStartPage()                           */\r
470 /*                                                                                      */\r
471 /* Arguments                                                                            */\r
472 /* ---------                                                                            */\r
473 /* Name:    Type:         Description:                                    */\r
474 /* N/A                                          */\r
475 /*                                                                                      */\r
476 /* Return value:                                                                        */\r
477 /*      EPS_ERR_NONE                    - Success                   */\r
478 /*      EPS_ERR_MEMORY_ALLOCATION       - Fail to memory allocation                     */\r
479 /*      EPS_ERR_OPR_FAIL                - Internal Error                                */\r
480 /*      EPS_ERR_COMM_ERROR              - Communication Error                           */\r
481 /*      EPS_ERR_PRINTER_ERR_OCCUR       - Printer Error happened                        */\r
482 /*                                                                                      */\r
483 /* Description:                                                                         */\r
484 /*      Send ESC/Page start page commands.                                      */\r
485 /*                                                                                      */\r
486 /*******************************************|********************************************/\r
487 EPS_ERR_CODE pageStartPage()\r
488 {\r
489   debug_msg("check StartPage call function \n");\r
490   EPS_ERR_CODE ret = EPS_ERR_NONE;\r
491 \r
492   EPS_LOG_FUNCIN\r
493 \r
494 #ifdef GCOMSW_CMD_ESCPAGE_S\r
495   if(printJob.printer && EPS_LANG_ESCPAGE_S == printJob.printer->language){\r
496     ret = pageS_StartPage();\r
497   } else\r
498 #endif\r
499   if( EPS_CM_COLOR == printJob.attr.colorMode ){\r
500     /** ESC/Page-Color **/\r
501     ret = pageStartPage_C();\r
502   } else{\r
503     /** ESC/Page **/\r
504     ret = pageStartPage_M();\r
505   }\r
506 \r
507   EPS_RETURN( ret )\r
508 }\r
509 \r
510 \r
511 /*******************************************|********************************************/\r
512 /*                                                                                      */\r
513 /* Function name:   pageEndPage()                           */\r
514 /*                                                                                      */\r
515 /* Arguments                                                                            */\r
516 /* ---------                                                                            */\r
517 /* Name:    Type:         Description:                                    */\r
518 /* N/A                                          */\r
519 /*                                                                                      */\r
520 /* Return value:                                                                        */\r
521 /*      EPS_ERR_NONE                    - Success                   */\r
522 /*      EPS_ERR_MEMORY_ALLOCATION       - Fail to memory allocation                     */\r
523 /*      EPS_ERR_OPR_FAIL                - Internal Error                                */\r
524 /*      EPS_ERR_COMM_ERROR              - Communication Error                           */\r
525 /*      EPS_ERR_PRINTER_ERR_OCCUR       - Printer Error happened                        */\r
526 /*                                                                                      */\r
527 /* Description:                                                                         */\r
528 /*      Send ESC/Page end page commands.                                      */\r
529 /*                                                                                      */\r
530 /*******************************************|********************************************/\r
531 EPS_ERR_CODE pageEndPage()\r
532 {\r
533   EPS_ERR_CODE ret = EPS_ERR_NONE;\r
534 \r
535   EPS_LOG_FUNCIN\r
536 \r
537 #ifdef GCOMSW_CMD_ESCPAGE_S\r
538   if(printJob.printer && EPS_LANG_ESCPAGE_S == printJob.printer->language){\r
539     ret = pageS_EndPage();\r
540   } else\r
541 #endif\r
542   if( EPS_CM_COLOR == printJob.attr.colorMode ){\r
543     /** ESC/Page-Color **/\r
544     ret = pageEndPage_C();\r
545   }\r
546 \r
547   EPS_RETURN( ret )\r
548 }\r
549 \r
550 \r
551 /*******************************************|********************************************/\r
552 /*                                                                                      */\r
553 /* Function name:   pageColorRow()                            */\r
554 /*                                                                                      */\r
555 /* Arguments                                                                            */\r
556 /* ---------                                                                            */\r
557 /* Name:    Type:         Description:                                    */\r
558 /* N/A                                          */\r
559 /*                                                                                      */\r
560 /* Return value:                                                                        */\r
561 /*      EPS_ERR_NONE                    - Success                   */\r
562 /*      EPS_ERR_MEMORY_ALLOCATION       - Fail to memory allocation                     */\r
563 /*      EPS_ERR_OPR_FAIL                - Internal Error                                */\r
564 /*      EPS_ERR_COMM_ERROR              - Communication Error                           */\r
565 /*      EPS_ERR_PRINTER_ERR_OCCUR       - Printer Error happened                        */\r
566 /*                                                                                      */\r
567 /* Description:                                                                         */\r
568 /*      Send ESC/Page raster commands.                                        */\r
569 /*                                                                                      */\r
570 /*******************************************|********************************************/\r
571 EPS_ERR_CODE pageColorRow(        \r
572               \r
573     const EPS_BANDBMP*  pInBmp,\r
574         EPS_RECT*           pBandRec\r
575 \r
576 ){\r
577   EPS_ERR_CODE ret = EPS_ERR_NONE;\r
578 \r
579   EPS_LOG_FUNCIN\r
580 \r
581 #ifdef GCOMSW_CMD_ESCPAGE_S\r
582   if(printJob.printer && EPS_LANG_ESCPAGE_S == printJob.printer->language){\r
583     ret = pageS_ColorRow(pInBmp, pBandRec);\r
584   } else\r
585 #endif\r
586   if( EPS_CM_COLOR == printJob.attr.colorMode ){\r
587     /** ESC/Page-Color **/\r
588     ret = pageColorRow_C(pInBmp, pBandRec);\r
589   } else{\r
590     /** ESC/Page **/\r
591     ret = pageColorRow_M(pInBmp, pBandRec);\r
592   }\r
593 \r
594   EPS_RETURN( ret )\r
595 }\r
596 \r
597 \r
598 /*******************************************|********************************************/\r
599 /*                                                                                      */\r
600 /* Function name:   pageSendLeftovers()                         */\r
601 /*                                                                                      */\r
602 /* Arguments                                                                            */\r
603 /* ---------                                                                            */\r
604 /* Name:    Type:         Description:                                    */\r
605 /* N/A                                          */\r
606 /*                                                                                      */\r
607 /* Return value:                                                                        */\r
608 /*      EPS_ERR_NONE                    - Success                   */\r
609 /*      EPS_ERR_INVALID_CALL            - This call was unnecessary                     */\r
610 /*      EPS_ERR_OPR_FAIL                - Internal Error                                */\r
611 /*      EPS_ERR_COMM_ERROR              - Communication Error                           */\r
612 /*      EPS_ERR_PRINTER_ERR_OCCUR       - Printer Error happened                        */\r
613 /*                                                                                      */\r
614 /* Description:                                                                         */\r
615 /*      send leftovers data.                                                            */\r
616 /*                                                                                      */\r
617 /*******************************************|********************************************/\r
618 EPS_ERR_CODE pageSendLeftovers(\r
619                  \r
620        void\r
621                  \r
622 ){\r
623   EPS_ERR_CODE  ret = EPS_ERR_NONE;\r
624 \r
625   EPS_LOG_FUNCIN\r
626 \r
627 #ifdef GCOMSW_CMD_ESCPAGE_S\r
628   if(printJob.printer && EPS_LANG_ESCPAGE_S == printJob.printer->language){\r
629     ret = pageS_SendLeftovers();\r
630   } else\r
631 #endif\r
632   if( EPS_CM_COLOR == printJob.attr.colorMode ){\r
633     /** ESC/Page-Color **/\r
634     ret = pageSendLeftovers_C();\r
635   } else{\r
636     /** ESC/Page **/\r
637     ret = pageSendLeftovers_M();\r
638   }\r
639   \r
640   EPS_RETURN( ret )\r
641 }\r
642 \r
643 \r
644 EPS_ERR_CODE pageCreateMediaInfo (\r
645 \r
646     EPS_PRINTER_INN*  printer,\r
647     EPS_UINT8*      pmString,\r
648     EPS_INT32     pmSize\r
649 \r
650 ){\r
651   EPS_INT32   num_mSize = dim(pageMediaSize);\r
652     EPS_INT32       num_mType = dim(pageMediaType);\r
653   EPS_INT32   i, j, n;\r
654     EPS_MEDIA_SIZE* sizeList = NULL;\r
655   EPS_MEDIA_TYPE* typeList = NULL;\r
656   EPS_UINT32 paperSource = EPS_MPID_ALL_ESCPAGE;\r
657 \r
658   EPS_LOG_FUNCIN\r
659 \r
660   memset(&printer->supportedMedia, 0, sizeof(EPS_SUPPORTED_MEDIA));\r
661 \r
662     /* Allocate memory for the media size list. */\r
663     sizeList = (EPS_MEDIA_SIZE*)EPS_ALLOC( sizeof(EPS_MEDIA_SIZE) * num_mSize );   \r
664     if( sizeList == NULL ){\r
665         EPS_RETURN( EPS_ERR_MEMORY_ALLOCATION )\r
666     }\r
667 \r
668     /* Allocate memory for the media type array. */\r
669     typeList = (EPS_MEDIA_TYPE*)EPS_ALLOC( sizeof(EPS_MEDIA_TYPE) * num_mSize * num_mType );\r
670     if (typeList == NULL) {\r
671         EPS_RETURN( EPS_ERR_MEMORY_ALLOCATION )\r
672     }\r
673 \r
674   if( sizeof(EPS_UINT32) == pmSize ){\r
675     memcpy(&paperSource, pmString, sizeof(EPS_UINT32));\r
676   }\r
677 \r
678     /* set media size property. */\r
679   for(i = 0; i < num_mSize; i++){\r
680     /* set media type property. */\r
681     for(j = 0; j < num_mType; j++){\r
682       n = i * num_mType + j;\r
683       typeList[n].mediaTypeID = pageMediaType[j].id;\r
684       typeList[n].paperSource = paperSource;\r
685       typeList[n].layout    = EPS_MLID_BORDERS;\r
686 #if EPS_PAGE_LOWRES_MODE\r
687       typeList[n].quality   = EPS_MQID_DRAFT | EPS_MQID_NORMAL;\r
688 #else\r
689       typeList[n].quality   = EPS_MQID_DRAFT | EPS_MQID_NORMAL | EPS_MQID_HIGH;\r
690 #endif\r
691 \r
692       if(EPS_MSID_POSTCARD == pageMediaSize[i].id){\r
693         typeList[n].duplex = EPS_DUPLEX_DISABLE;\r
694       } else{\r
695         typeList[n].duplex = EPS_DUPLEX_ENABLE;\r
696       }\r
697     }\r
698     \r
699     sizeList[i].mediaSizeID = pageMediaSize[i].id;\r
700     sizeList[i].numTypes  = num_mType;\r
701     sizeList[i].typeList  = &typeList[i];\r
702   }\r
703 \r
704   printer->supportedMedia.sizeList = sizeList;\r
705     printer->supportedMedia.numSizes = num_mSize;\r
706 \r
707 #if EPS_PAGE_LOWRES_MODE\r
708   printer->supportedMedia.resolution = EPS_IR_150X150 | EPS_IR_300X300;\r
709 #else\r
710   printer->supportedMedia.resolution = EPS_IR_150X150 | EPS_IR_300X300 | EPS_IR_600X600 | EPS_IR_1200X1200;\r
711 #endif\r
712 \r
713 #if GCOMSW_CMD_ESCPAGE_S\r
714   if(printJob.printer && EPS_LANG_ESCPAGE_S == printJob.printer->language){\r
715     pageS_UpdateSupportedMedia( &printer->supportedMedia );\r
716   }\r
717 #endif\r
718 \r
719   EPS_RETURN( EPS_ERR_NONE )\r
720 }\r
721 \r
722 \r
723 void pageClearSupportedMedia  (\r
724                  \r
725     EPS_PRINTER_INN* printer        \r
726     \r
727 ){\r
728   EPS_LOG_FUNCIN\r
729 \r
730   if( NULL != printer->supportedMedia.sizeList ){\r
731     EPS_SAFE_RELEASE(printer->supportedMedia.sizeList[0].typeList);\r
732     EPS_SAFE_RELEASE(printer->supportedMedia.sizeList);\r
733   }\r
734 \r
735   EPS_RETURN_VOID\r
736 }\r
737 \r
738 \r
739 EPS_ERR_CODE    pageGetPrintableArea (\r
740 \r
741         EPS_JOB_ATTRIB*     jobAttr,\r
742         EPS_UINT32*         printableWidth,\r
743         EPS_UINT32*         printableHeight\r
744 \r
745 ){\r
746   EPS_ERR_CODE  ret = EPS_ERR_NONE;\r
747   EPS_INT32   num_mSize = dim(pageMediaSize);\r
748   EPS_INT32   sizeIdx = 0;\r
749 \r
750   EPS_LOG_FUNCIN\r
751 \r
752 /*** Validate/Confirm Page Attribute Data                                               */\r
753     /*** Media Size                                                                     */\r
754   for(sizeIdx = 0; sizeIdx < num_mSize; sizeIdx++){\r
755     if(pageMediaSize[sizeIdx].id == jobAttr->mediaSizeIdx){\r
756       break;\r
757     }\r
758   }\r
759   if(sizeIdx >= num_mSize){\r
760         EPS_RETURN( EPS_ERR_INV_MEDIA_SIZE )\r
761   }\r
762 \r
763     /*** Border Mode                                                                    */\r
764   if( jobAttr->printLayout != EPS_MLID_BORDERS ){\r
765         EPS_RETURN( EPS_ERR_INV_BORDER_MODE )\r
766   }\r
767 \r
768     /*** Input Image Resolution                                                         */\r
769     if (! ( (jobAttr->inputResolution    == EPS_IR_150X150 ) ||\r
770       (jobAttr->inputResolution    == EPS_IR_300X300 ) ||\r
771       (jobAttr->inputResolution    == EPS_IR_600X600 ) ||\r
772       (jobAttr->inputResolution    == EPS_IR_1200X1200 )) ){\r
773         EPS_RETURN( EPS_ERR_INV_INPUT_RESOLUTION )\r
774   }\r
775 \r
776   *printableWidth   = pageMediaSize[sizeIdx].print_area_x_border;\r
777   *printableHeight  = pageMediaSize[sizeIdx].print_area_y_border;\r
778 #ifdef GCOMSW_CMD_ESCPAGE_S\r
779   if(printJob.printer && EPS_LANG_ESCPAGE_S == printJob.printer->language){\r
780     pageS_FeedExchange(jobAttr, printableWidth, printableHeight);\r
781   }\r
782 #endif\r
783 \r
784   if(EPS_IR_300X300 == jobAttr->inputResolution){\r
785     *printableWidth  /= 2;\r
786     *printableHeight /= 2;\r
787   } else if(EPS_IR_150X150 == jobAttr->inputResolution){\r
788     *printableWidth  /= 4;\r
789     *printableHeight /= 4;\r
790     *printableHeight -= 2;\r
791   }\r
792 \r
793   EPS_RETURN( ret )\r
794 }\r
795 \r
796 \r
797 EPS_ERR_CODE ejlStart (\r
798                \r
799     EPS_COMMAND_BUFFER *pCmdBuff, \r
800     PAGE_CmdBuffGrow pfncGrow\r
801     \r
802 ){\r
803   EPS_ERR_CODE ret = EPS_ERR_NONE;\r
804   EPS_INT32 i;\r
805   EPS_INT8  *p;\r
806 \r
807   EPS_LOG_FUNCIN\r
808 \r
809 #define EJLStart_ADDSTR(b, p, v)  \\r
810   {               \\r
811     sprintf(b, " %s=%s", p, v); \\r
812     b += strlen(b);       \\r
813   }\r
814 #define EJLStart_ADDINT(b, p, v)  \\r
815   {               \\r
816     sprintf(b, " %s=%d", p, v); \\r
817     b += strlen(b);       \\r
818   }\r
819 \r
820 #ifdef GCOMSW_DEBUG\r
821   if(pCmdBuff->len+EPS_EJL_LINEMAX > pCmdBuff->size){EPS_DBGPRINT(("Command buffer not enough!\r\n"))}\r
822 #endif\r
823 \r
824   p = pCmdBuff->p + pCmdBuff->len;\r
825 \r
826   /*** EJL commands ***/\r
827   if( EPS_CM_COLOR == printJob.attr.colorMode ){\r
828       /** ESC/Page-Color **/\r
829       sprintf(p, "%s%s \x0A%s\x0A%s %s",\r
830       sbEJL_ESC_SOH,  /* <ESC><SOH>     */\r
831       sbEJL,      /* @EJL         */\r
832       sbEJL_SE,   /* EJL SELECT command */\r
833       sbEJL,      /* @EJL         */\r
834       sbEJL_SET);   /* SET command      */\r
835   } else{\r
836     /** ESC/Page **/\r
837     sprintf(p, "%s%s \x0A%s\x0A%s%s \x0A%s\x0A%s %s",\r
838       sbEJL_ESC_SOH,  /* <ESC><SOH>     */\r
839       sbEJL,      /* @EJL         */\r
840       sbEJL_EN,   /* EJL ENTER command  */\r
841       sbEJL_ESC_SOH,  /* <ESC><SOH>     */\r
842       sbEJL,      /* @EJL         */\r
843       sbEJL_SE,   /* EJL SELECT command */\r
844       sbEJL,      /* @EJL         */\r
845       sbEJL_SET);   /* SET command      */\r
846   }\r
847   p += strlen(p);\r
848 \r
849   /* RS */\r
850   if(printJob.attr.inputResolution == EPS_IR_1200X1200){\r
851     EJLStart_ADDSTR(p, "RS", "1200");\r
852   } else if(EPS_IR_600X600 == printJob.attr.inputResolution){\r
853     EJLStart_ADDSTR(p, "RS", "FN");\r
854   } else{\r
855     EJLStart_ADDSTR(p, "RS", "QK");\r
856   }\r
857   /* PS */\r
858   for( i=0; i < dim(pageMediaSize); i++ ) {\r
859     \r
860     if( printJob.attr.mediaSizeIdx == pageMediaSize[i].id ) {\r
861       break;\r
862     }\r
863 \r
864   }\r
865 \r
866   EJLStart_ADDSTR(p, "PS", pageMediaSize[i].name);\r
867   /* PK */\r
868   for( i=0; i < dim(pageMediaType); i++ ) {\r
869     if( printJob.attr.mediaTypeIdx == pageMediaType[i].id ) {\r
870       break;\r
871     }\r
872   }\r
873   debug_msg("print Job paperType = %d\n", printJob.attr.mediaTypeIdx);\r
874   EJLStart_ADDSTR(p, "PK", pageMediaType[i].name);\r
875 \r
876   /* PU */\r
877   for( i=0; i < dim(pagePaperSource); i++ ) {\r
878     if( printJob.attr.paperSource == pagePaperSource[i].id ) {\r
879       debug_msg("print Job paperSource = %d\n", i);\r
880       break;\r
881     }\r
882   }\r
883   debug_msg("Check manual feed\n");\r
884   if(printJob.attr.manualFeed == 1)\r
885   {\r
886     debug_msg("MANUAL FEED\n"); \r
887     EJLStart_ADDSTR(p, "PU", "AU"); \r
888   } else\r
889   {    \r
890     debug_msg("pagePaperSource.name = %s\n", pagePaperSource[i].name);\r
891     EJLStart_ADDSTR(p, "PU", pagePaperSource[i].name);\r
892   }\r
893   \r
894   /* OU */\r
895   if(printJob.attr.FacingPage == 0){\r
896     EJLStart_ADDSTR(p, "OU", "FD");\r
897   }else{\r
898     EJLStart_ADDSTR(p, "OU", "FU");\r
899   }\r
900 \r
901   /* DX */\r
902   EJLStart_ADDSTR(p, "DX", ( printJob.attr.duplex != EPS_DUPLEX_NONE )?"ON":"OFF");\r
903 \r
904   if( printJob.attr.duplex != EPS_DUPLEX_NONE ) {\r
905     /* BD */\r
906     EJLStart_ADDSTR(p, "BD", ( printJob.attr.duplex == EPS_DUPLEX_LONG )?"LE":"SE");\r
907 \r
908     /* TB/LB */\r
909     EJLStart_ADDSTR(p, "TB", "0");\r
910     EJLStart_ADDSTR(p, "LB", "0");\r
911   } \r
912 \r
913   /* ZO */\r
914   EJLStart_ADDSTR(p, "ZO", "OFF");\r
915 \r
916   /* EC */\r
917   EJLStart_ADDSTR(p, "EC", "ON" );\r
918 \r
919   /* RI */\r
920   if(printJob.attr.RiTech == TRUE){\r
921     EJLStart_ADDSTR(p, "RI", "ON");\r
922   } else{\r
923     EJLStart_ADDSTR(p, "RI", "OFF");\r
924   }\r
925 \r
926   /* SN */\r
927   if(printJob.attr.tonerSave == 1){\r
928     EJLStart_ADDSTR(p, "SN", "ON");\r
929   } else{\r
930     EJLStart_ADDSTR(p, "SN", "OFF");\r
931   }\r
932 \r
933   /* Collate */\r
934 #if 0\r
935   if( printJob.attr.collate ) {\r
936     /* CO */\r
937     EJLStart_ADDINT(p, "CO", 1);\r
938     /* QT */\r
939     EJLStart_ADDINT(p, "QT", printJob.attr.copies);\r
940   } else {\r
941 #endif\r
942     /* CO */\r
943     /*EJLStart_ADDINT(p, "CO", printJob.attr.copies);\r
944     \r
945     EJLStart_ADDINT(p, "QT", 1);*/\r
946 \r
947     if(printJob.attr.colLate)\r
948     {\r
949       EJLStart_ADDINT(p, "CO", 1);\r
950     /* QT */\r
951       EJLStart_ADDINT(p, "QT", printJob.attr.copies);\r
952     } else{\r
953       EJLStart_ADDINT(p, "CO", printJob.attr.copies);\r
954     /* QT */\r
955       EJLStart_ADDINT(p, "QT", 1);\r
956     }\r
957 /*  }*/\r
958 \r
959   /* Feed direction */\r
960   if( EPS_FEEDDIR_LANDSCAPE == printJob.attr.feedDirection ){\r
961     EJLStart_ADDSTR(p, "FE", "SE");\r
962   } \r
963 \r
964   if( EPS_CM_COLOR == printJob.attr.colorMode ){\r
965     /** ESC/Page-Color **/\r
966     /* SZ */\r
967     EJLStart_ADDSTR(p, "SZ", "OFF");\r
968 \r
969     /* GAMMAMODE */\r
970     EJLStart_ADDSTR(p, "GAMMAMODE", "NORMAL");\r
971 \r
972     /* SL */\r
973     EJLStart_ADDSTR(p, "SL", "YES");\r
974 \r
975     /* TO */\r
976     EJLStart_ADDSTR(p, "TO", "0");\r
977 \r
978     /* LO */\r
979     EJLStart_ADDSTR(p, "LO", "0");\r
980 \r
981     /* OR  */\r
982     EJLStart_ADDSTR(p, "OR", "PO");\r
983 \r
984     /* EJL ENTER command */\r
985     sprintf(p, " %s%s%s", sbEJL_LF, sbEJL_EN_C, sbEJL_LF);\r
986   } else{\r
987     /* FO */\r
988     EJLStart_ADDSTR(p, "FO", "OFF");\r
989 \r
990     /* EJL ENTER command */\r
991     sprintf(p, " %s%s%s", sbEJL_LF, sbEJL_EN, sbEJL_LF);\r
992   }\r
993 \r
994   p += strlen(p);\r
995   pCmdBuff->len += (EPS_INT32)(p - pCmdBuff->p);\r
996 \r
997   EPS_RETURN( ret )\r
998 }\r
999 \r
1000 \r
1001 EPS_ERR_CODE ejlEnd (\r
1002                \r
1003     EPS_COMMAND_BUFFER *pCmdBuff, \r
1004     PAGE_CmdBuffGrow  pfncGrow,\r
1005     EPS_INT32     pageCount\r
1006     \r
1007 ){\r
1008   EPS_ERR_CODE ret = EPS_ERR_NONE;\r
1009   EPS_UINT32  dwPaperNum = pageCount;\r
1010   EPS_INT8  *p;\r
1011 \r
1012   EPS_LOG_FUNCIN\r
1013 \r
1014 #ifdef GCOMSW_DEBUG\r
1015   if(pCmdBuff->len+EPS_EJL_LINEMAX > pCmdBuff->size){EPS_DBGPRINT(("Command buffer not enough!\r\n"))}\r
1016 #endif\r
1017 \r
1018   p = pCmdBuff->p + pCmdBuff->len;\r
1019 \r
1020   /* EJL commands -------- */\r
1021   sprintf(p, "%s%s ",\r
1022       sbEJL_ESC_SOH,  /* <ESC><SOH>  */\r
1023       sbEJL);     /* @EJL      */\r
1024   p += strlen(p);\r
1025 \r
1026   /* Page */\r
1027   if( printJob.attr.duplex != EPS_DUPLEX_NONE ){\r
1028     dwPaperNum = (pageCount+1)/2;\r
1029   } \r
1030   sprintf(p, "JI PAGES=\"%d\"", dwPaperNum);\r
1031   p += strlen(p);\r
1032 \r
1033   /* @EJL */\r
1034   sprintf(p, " %s%s %s", sbEJL_LF, sbEJL, sbEJL_LF);\r
1035   p += strlen(p);\r
1036 \r
1037   pCmdBuff->len = (EPS_INT32)(p - pCmdBuff->p);\r
1038 \r
1039 #ifdef GCOMSW_DEBUG\r
1040   if(pCmdBuff->len > pCmdBuff->size){EPS_DBGPRINT(("Command buffer over flow!!\r\n"))}\r
1041 #endif\r
1042 \r
1043   EPS_RETURN( ret )\r
1044 }\r
1045 \r
1046 \r
1047 EPS_ERR_CODE ejlPageEsc (\r
1048 \r
1049     EPS_COMMAND_BUFFER *pCmdBuff, \r
1050     PAGE_CmdBuffGrow  pfncGrow\r
1051                  \r
1052 ){\r
1053   EPS_ERR_CODE ret = EPS_ERR_NONE;\r
1054   EPS_INT8  *p;\r
1055 \r
1056   EPS_LOG_FUNCIN\r
1057 \r
1058 #define PageEscCommand_ADDCMD(b, CMD) {   \\r
1059     memcpy(b, CMD, sizeof(CMD));    \\r
1060     b += sizeof(CMD);         \\r
1061   }\r
1062 \r
1063   p = pCmdBuff->p + pCmdBuff->len;\r
1064 \r
1065   /* Set Logical Origin Setting */\r
1066   sprintf(p, sbLOS, printJob.leftMargin, printJob.topMargin);\r
1067   p += strlen(p);\r
1068 \r
1069   /* Reset the current absolute position */\r
1070   PageEscCommand_ADDCMD(p, sbCHPAS);\r
1071   PageEscCommand_ADDCMD(p, sbCVPAS);\r
1072 \r
1073   /* Set Clip Area */\r
1074   sprintf(p, sbCA, printJob.printableAreaWidth, printJob.printableAreaHeight);\r
1075   p += strlen(p);\r
1076 \r
1077   pCmdBuff->len = (EPS_INT32)(p - pCmdBuff->p);\r
1078 \r
1079   EPS_RETURN( ret )\r
1080 }\r
1081 \r
1082 /*__________________________________  epson-escpage.c   ________________________________*/\r
1083 \r
1084 /*34567890123456789012345678901234567890123456789012345678901234567890123456789012345678*/\r
1085 /*       1         2         3         4         5         6         7         8        */\r
1086 /*******************************************|********************************************/\r
1087 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%|%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/\r
1088 /***** End of File *** End of File *** End of File *** End of File *** End of File ******/\r
1089 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%|%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/\r