summaryrefslogtreecommitdiff
path: root/print/ghostscript-gpl/files
diff options
context:
space:
mode:
authorTilman Keskinoz <arved@FreeBSD.org>2003-07-21 13:54:04 +0000
committerTilman Keskinoz <arved@FreeBSD.org>2003-07-21 13:54:04 +0000
commit3f314a8e53059321f2e2b5330211d8461f259f61 (patch)
tree2f989052039de46f139a25c5b096f99a1e0f9aa0 /print/ghostscript-gpl/files
parentUpdate to 0.25.0 (diff)
Back out my previous commit, it is unnecessary.
Take measures to cope with too frequent update (without version numbering) of Samsung-SmartGDI driver PR: 54707 Submitted by: KATO Tsuguru <tkato@prontomail.com>
Notes
Notes: svn path=/head/; revision=85300
Diffstat (limited to 'print/ghostscript-gpl/files')
-rw-r--r--print/ghostscript-gpl/files/patch-src:gdevgdi.c978
-rw-r--r--print/ghostscript-gpl/files/patch-src:smartgdi-contrib.mak16
2 files changed, 989 insertions, 5 deletions
diff --git a/print/ghostscript-gpl/files/patch-src:gdevgdi.c b/print/ghostscript-gpl/files/patch-src:gdevgdi.c
index f59111ee2591..996758e09685 100644
--- a/print/ghostscript-gpl/files/patch-src:gdevgdi.c
+++ b/print/ghostscript-gpl/files/patch-src:gdevgdi.c
@@ -1,15 +1,983 @@
--- src/gdevgdi.c.orig Wed Jun 19 19:32:49 2002
-+++ src/gdevgdi.c Sun Nov 10 22:37:00 2002
-@@ -86,9 +86,9 @@
++++ src/gdevgdi.c Mon Jul 21 13:44:41 2003
+@@ -60,8 +60,8 @@
+ #define GDI_REPEAT_LENGTH 2
+ #define GDI_BAND_HEIGHT 128
+ #define GDI_MAX_BAND 66
+-//#define GDI_BAND_WIDTH 4928
+-//#define GDI_BAND_WIDTH_BYTES (((GDI_BAND_WIDTH + 31)/32)*4)
++/*#define GDI_BAND_WIDTH 4928*/
++/*#define GDI_BAND_WIDTH_BYTES (((GDI_BAND_WIDTH + 31)/32)*4)*/
+
+ #define GDI_PRE_COMP 2
+ #define GDI_REAL_COMP 0
+@@ -74,8 +74,8 @@
+
+ #define GDI_MARGINS_A4 0.167, 0.167, 0.167, 0.167
+ #define GDI_MARGINS_LETTER 0.167, 0.167, 0.167, 0.167
+-//#define GDI_MARGINS_A4 0.0, 0.0, 0.0, 0.0
+-//#define GDI_MARGINS_LETTER 0.0, 0.0, 0.0, 0.0
++/*#define GDI_MARGINS_A4 0.0, 0.0, 0.0, 0.0*/
++/*#define GDI_MARGINS_LETTER 0.0, 0.0, 0.0, 0.0*/
+
+ /* The number of blank lines that make it worthwhile to reposition */
+ /* the cursor. */
+@@ -86,9 +86,15 @@
int GDI_BAND_WIDTH[] = {4768, 4928};
--private int gdi_print_page(P2(gx_device_printer *pdev, FILE *prn_stream));
--private int gdi_open(P1(gx_device *pdev));
--private int gdi_close(P1(gx_device *pdev));
++#if GS_VERSION_MAJOR >= 8
+private int gdi_print_page(gx_device_printer *pdev, FILE *prn_stream);
+private int gdi_open(gx_device *pdev);
+private int gdi_close(gx_device *pdev);
++#else
+ private int gdi_print_page(P2(gx_device_printer *pdev, FILE *prn_stream));
+ private int gdi_open(P1(gx_device *pdev));
+ private int gdi_close(P1(gx_device *pdev));
++#endif
/* The device descriptors */
private dev_proc_open_device(gdi_open);
+@@ -107,6 +113,14 @@
+ 1, /* color bit */
+ gdi_print_page);
+
++gx_device_printer far_data gs_samsunggdi_device =
++ prn_device(prn_gdi_procs, "samsunggdi",
++ DEFAULT_WIDTH_10THS, DEFAULT_HEIGHT_10THS, /* paper size (unit : 10/72 inch size) */
++ X_DPI2, Y_DPI2,
++ 0.20, 0.25, 0.25, 0.25, /* margins filled in by gdi_open */
++ 1, /* color bit */
++ gdi_print_page);
++
+ private FILE *WritePJLHeaderData(gx_device_printer *pdev, FILE *fp);
+ private FILE *WriteBandHeader(FILE *fp, unsigned int usBandNo,
+ unsigned char ubCompMode, unsigned int usBandWidth,
+@@ -220,7 +234,7 @@
+ memset(obp, 0x00, ul_band_size*13/10);
+ for (j=0; j<band_height; j++) {
+ memset(tmp, 0x00, raster);
+- //code = gdev_prn_copy_scan_lines(pdev, i*band_height+j,
++ /*code = gdev_prn_copy_scan_lines(pdev, i*band_height+j, */
+ if (y == num_rows) break;
+ code = gdev_prn_copy_scan_lines(pdev, y++,
+ (byte*)tmp, raster);
+@@ -232,15 +246,71 @@
+
+ /* Write Band Data
+ Because of Scanline compression, extract Scanline compression mode */
+- //ul_tiff_size = FrameTiffComp(obp, ibp, band_height, band_width_bytes, GDI_PRE_COMP);
+- //ul_scan_size = (unsigned long)bmp2run(obp, ibp, band_height, band_width_bytes, GDI_PRE_COMP);
+- //ul_min_size = (ul_scan_size > ul_tiff_size) ? ul_tiff_size : ul_scan_size;
++ /*ul_tiff_size = FrameTiffComp(obp, ibp, band_height, band_width_bytes, GDI_PRE_COMP);*/
++ /*ul_scan_size = (unsigned long)bmp2run(obp, ibp, band_height, band_width_bytes, GDI_PRE_COMP);*/
++ /*ul_min_size = (ul_scan_size > ul_tiff_size) ? ul_tiff_size : ul_scan_size;*/
+ ul_min_size = ul_tiff_size;
+ compression_type = GDI_COMP_MODITIFF;
+- //compression_type = (ul_scan_size > ul_tiff_size) ? GDI_COMP_MODITIFF : GDI_COMP_SCANLINE;
++ /*compression_type = (ul_scan_size > ul_tiff_size) ? GDI_COMP_MODITIFF : GDI_COMP_SCANLINE;*/
+ switch (compression_type) {
+ case GDI_COMP_MODITIFF:
++#define FUDGE_BIG_BANDS
++#ifndef FUDGE_BIG_BANDS
+ ul_comp_size = FrameTiffComp(obp, ibp, band_height, band_width_bytes, GDI_REAL_COMP);
++#else
++ {
++ /* Very ugly. The printer will hose if the compressed
++ band size is over 65536, so we "fudge" the data in
++ this case repeatedly until we get what we want.
++
++ The fudge algorithm is simple, this is kinda-sorta
++ RLE, so we just round groups of bits in groups of
++ 2, then 3, then 4, etc until the thing works. */
++#define MAXBAND 0xffff
++#define ASSERT(x)
++ int fudge=0;
++ byte *use_band=ibp;
++ do {
++ ul_comp_size = FrameTiffComp(obp, use_band,
++ band_height, band_width_bytes,
++ GDI_REAL_COMP);
++ if (ul_comp_size > MAXBAND-8) {
++ int f, g, h;
++ if (!fudge) {
++ ASSERT(use_band == ibp);
++ use_band = (byte*)gs_malloc(ul_band_size, 1, "gdi_print_page/fudge");
++ fudge=1;
++ }
++ memcpy(use_band, ibp, ul_band_size);
++ fudge++;
++ ASSERT(fudge>=2);
++ {
++#define FUDGE2(x) ( (((((x)>>6)&0x3)?3:0)<<6) \
++ | (((((x)>>4)&0x3)?3:0)<<4) \
++ | (((((x)>>2)&0x3)?3:0)<<2) \
++ | (((((x)>>0)&0x3)?3:0)) )
++#define FUDGE4(x) ( (((((x)>>4)&0xf)?0xf:0)<<4) \
++ | (((((x)>>0)&0xf)?0xf:0)) )
++#define FUDGE8(x) ( (((((x)>>0)&0xff)?0xf:0)) )
++#define FUDGE(fudge, x) ( (fudge == 2 ? FUDGE2(x) \
++ : fudge == 3 ? FUDGE4(x) \
++ : fudge == 4 ? FUDGE8(x) \
++ : 0 ) )
++
++ for(f=0;f<ul_band_size; f++) {
++ use_band[f] = FUDGE(fudge, ibp[f]);
++ }
++ }
++ }
++ } while (ul_comp_size > MAXBAND-8);
++ oh_well:
++ if (fudge > 1) {
++ ASSERT(use_band != ibp);
++ gs_free(use_band, ul_band_size, 1, "gdi_print_page/fudge");
++ /*fprintf(stderr, "smartgdi: band %d fudge factor is %d\n", i, fudge);*/
++ }
++ }
++#endif
+ break;
+ case GDI_COMP_SCANLINE:
+ ul_comp_size = bmp2run(obp, ibp, band_height, band_width_bytes, GDI_REAL_COMP);
+@@ -253,7 +323,7 @@
+
+ prn_stream = WriteBandHeader(prn_stream, i, compression_type, (band_width_bytes * 8),
+ band_height, ul_comp_size);
+- //fprintf(prn_stream, "[%d] band, size : %d\n", i, ul_tiff_size);
++ /*fprintf(prn_stream, "[%d] band, size : %d\n", i, ul_tiff_size);*/
+ fwrite(obp, ul_comp_size, 1, prn_stream);
+ }
+
+@@ -271,50 +341,50 @@
+ unsigned char buffer[300];
+ int dots_per_inch = (int)pdev->y_pixels_per_inch;
+
+- strcpy(buffer, "\x1b%-12345X");
++ strcpy(buffer, "\033%-12345X");
+
+- // Paper Type
+- strcat(buffer, "@PJL SET PAPERTYPE = NORMAL ON\x0d\x0a");
+- //Density
+- strcat(buffer, "@PJL SET DENSITY = 1\x0d\x0a");
+- // Toner Save
+- strcat(buffer, "@PJL SET TONERSAVE = OFF\x0d\x0a");
+- // Enter Language SMART
+- strcat(buffer, "@PJL ENTER LANGUAGE = SMART\x0d\x0a");
+- // JobStart
+- strcat(buffer, "$PJL JOB START\x0d\x0a");
++ /* Paper Type*/
++ strcat(buffer, "@PJL SET PAPERTYPE = NORMAL ON\015\012");
++ /*Density*/
++ strcat(buffer, "@PJL SET DENSITY = 1\015\012");
++ /* Toner Save*/
++ strcat(buffer, "@PJL SET TONERSAVE = OFF\015\012");
++ /* Enter Language SMART*/
++ strcat(buffer, "@PJL ENTER LANGUAGE = SMART\015\012");
++ /* JobStart*/
++ strcat(buffer, "$PJL JOB START\015\012");
+
+- // Resolution
++ /* Resolution*/
+ if (dots_per_inch == 600)
+- strcat(buffer, "$PJL RESOLUTION = 600\x0d\x0a");
++ strcat(buffer, "$PJL RESOLUTION = 600\015\012");
+ else
+- strcat(buffer, "$PJL RESOLUTION = 300\x0d\x0a");
++ strcat(buffer, "$PJL RESOLUTION = 300\015\012");
+
+- // Copies
+- strcat(buffer, "$PJL COPIES = 1\x0d\x0a");
+- // Paper Size
++ /* Copies*/
++ strcat(buffer, "$PJL COPIES = 1\015\012");
++ /* Paper Size*/
+ switch (gdev_pcl_paper_size((gx_device*)pdev))
+ {
+ case PAPER_SIZE_A4:
+- strcat(buffer, "$PJL PAGE A4 AUTO\x0d\x0a");
++ strcat(buffer, "$PJL PAGE A4 AUTO\015\012");
+ break;
+ case PAPER_SIZE_LETTER:
+- strcat(buffer, "$PJL PAGE LETTER AUTO\x0d\x0a");
++ strcat(buffer, "$PJL PAGE LETTER AUTO\015\012");
+ break;
+ case PAPER_SIZE_LEGAL:
+- strcat(buffer, "$PJL PAGE LEGAL AUTO\x0d\x0a");
++ strcat(buffer, "$PJL PAGE LEGAL AUTO\015\012");
+ break;
+ default:
+- strcat(buffer, "$PJL PAGE LETTER AUTO\x0d\x0a");
++ strcat(buffer, "$PJL PAGE LETTER AUTO\015\012");
+ break;
+ }
+- // bitmap start
+- strcat(buffer, "$PJL BITMAP START\x0d\x0a");
+- // write buffer to file.
++ /* bitmap start*/
++ strcat(buffer, "$PJL BITMAP START\015\012");
++ /* write buffer to file.*/
+ ulSize = strlen(buffer);
+ fwrite(buffer, 1, ulSize, fp );
+ return(fp);
+-} // WritePJLHeaderData()
++} /* WritePJLHeaderData() */
+
+
+ FILE *WriteBandHeader
+@@ -335,33 +405,33 @@
+
+ ulBandSize += 8;
+
+- // bandsize
++ /* bandsize*/
+ buf[i++] = (unsigned char)((ulBandSize >> 24) & 0xff);
+ buf[i++] = (unsigned char)((ulBandSize >> 16) & 0xff);
+ buf[i++] = (unsigned char)((ulBandSize >> 8) & 0xff);
+ buf[i++] = (unsigned char)(ulBandSize & 0xff);
+
+- // id
++ /* id */
+ buf[i++] = (unsigned char)((usBandNo >> 8) & 0xff);
+ buf[i++] = (unsigned char)(usBandNo & 0xff);
+
+- // compress mode
++ /* compress mode */
+ buf[i++] = (unsigned char)(ubCompMode & 0xff);
+
+- // ubLeft
++ /* ubLeft */
+ buf[i++] = (unsigned char)(ubLeft & 0xff);
+
+- // height
++ /* height*/
+ buf[i++] = (unsigned char)((usBandHeight >> 8) & 0xff);
+ buf[i++] = (unsigned char)(usBandHeight & 0xff);
+
+- // width
++ /* width */
+ buf[i++] = (unsigned char)((usBandWidth >> 8) & 0xff);
+ buf[i++] = (unsigned char)(usBandWidth & 0xff);
+
+ fwrite(buf, 1, i, fp);
+ return(fp);
+-} // end of WriteBandHeader()
++} /* end of WriteBandHeader()*/
+
+ FILE *WriteTrailerData(FILE *fp)
+ {
+@@ -369,18 +439,18 @@
+ unsigned long buffer[200];
+
+ memset((char*)buffer, 0x00, 200);
+- strcpy((char*)buffer, "$PJL PRINT 4\x0d\x0a");
+- strcat((char*)buffer, "$PJL EOJ\x0d\x0a");
+- strcat((char*)buffer, "$PJL SYNC\x0d\x0a");
+- strcat((char*)buffer, "$PJL RELEASE 0 2047\x0d\x0a");
+- strcat((char*)buffer, "$PJL GARBAGE\x0d\x0a");
+- strcat((char*)buffer, "\x1b%-12345X\x0d\x0a");
++ strcpy((char*)buffer, "$PJL PRINT 4\015\012");
++ strcat((char*)buffer, "$PJL EOJ\015\012");
++ strcat((char*)buffer, "$PJL SYNC\015\012");
++ strcat((char*)buffer, "$PJL RELEASE 0 2047\015\012");
++ strcat((char*)buffer, "$PJL GARBAGE\015\012");
++ strcat((char*)buffer, "\033%-12345X\015\012");
+
+ ulSize = strlen((char*)buffer);
+ fwrite(buffer, 1, ulSize, fp);
+
+ return(fp);
+-} // WriteTrailerData()
++} /* WriteTrailerData()*/
+
+ unsigned long FrameTiffComp(unsigned char *pubDest,
+ unsigned char *pubSrc,
+@@ -399,7 +469,7 @@
+
+ for (i = 0; i < usTotalLines; i++)
+ {
+- if (!(ubMode & 0x02)) //
++ if (!(ubMode & 0x02))
+ {
+ usLineSize = FrameTiff_Comp(SrcPtr, TgtPtr, usBytesPerLine);
+ }
+@@ -416,7 +486,7 @@
+ ulret += usLineSize;
+ }
+
+- if (!(ubMode & 0x02)) //
++ if (!(ubMode & 0x02))
+ {
+ switch (ulret%4)
+ {
+@@ -448,7 +518,7 @@
+ }
+ }
+ return(ulret);
+-} // FrameTiffComp()
++} /* FrameTiffComp()*/
+
+ unsigned int FrameTiff_Comp(unsigned char *lpSrcBuf, unsigned char *lpTgtBuf, unsigned int nSrcBytes)
+ {
+@@ -528,13 +598,13 @@
+ usEndCnt = 16384;
+ }
+ usEndCnt = usCount - 2;
+- // usEndCnt = usCount - 2; original
+- // 19990824 by LSM : for end file while (usEndCnt--)
++ /* usEndCnt = usCount - 2; original*/
++ /* 19990824 by LSM : for end file while (usEndCnt--)*/
+ while (usEndCnt--)
+ {
+ /* read next data */
+ ubFirst = ubSecond;
+- ubSecond = *pubSrc++; // read 3rd Data
++ ubSecond = *pubSrc++; /* read 3rd Data*/
+ if (ubFirst == ubSecond)
+ {
+ if (usEndCnt <= 1)
+@@ -544,7 +614,7 @@
+ }
+ else
+ {
+- ubSecond = *pubSrc++; // read 4th Data
++ ubSecond = *pubSrc++; /* read 4th Data*/
+ usEndCnt--;
+ if (ubFirst == ubSecond)
+ {
+@@ -660,14 +730,14 @@
+ {
+ usEndCnt = 16384;
+ }
+- // usEndCnt = usCount - 2;
++ /* usEndCnt = usCount - 2;*/
+ usEndCnt = usCount - 2;
+- // 19990824 by LSM : for Last file while (usEndCnt--)
++ /* 19990824 by LSM : for Last file while (usEndCnt--)*/
+ while (usEndCnt--)
+ {
+ /* read next data */
+ ubFirst = ubSecond;
+- ubSecond = *pubSrc++; // read 3rd Data
++ ubSecond = *pubSrc++; /* read 3rd Data*/
+ if (ubFirst == ubSecond)
+ {
+ if (usEndCnt <= 1)
+@@ -677,8 +747,8 @@
+ }
+ else
+ {
+- ubSecond = *pubSrc++; // read 4th Data
+- usEndCnt--; // 19990824 by LSM
++ ubSecond = *pubSrc++; /* read 4th Data*/
++ usEndCnt--; /* 19990824 by LSM*/
+ if (ubFirst == ubSecond)
+ {
+ ubMisCnt = 3;
+@@ -691,7 +761,7 @@
+ /* save data */
+ usControl = (unsigned int) (pubSrc - pubOrg);
+ usControl -= ubMisCnt;
+- // 19990824 by LSM : for fixing GPF on Photoshop
++ /* 19990824 by LSM : for fixing GPF on Photoshop*/
+ if (usControl > usCount)
+ {
+ usControl = usCount;
+@@ -728,77 +798,77 @@
+ } sc_tbl;
+
+ static sc_tbl gdi_ScanTbl[256] = {
+-{ 8, 0, 0 }, { 7, 1, 1 }, { 6, 1, 0 }, { 6, 2, 1 }, // 0x00
++{ 8, 0, 0 }, { 7, 1, 1 }, { 6, 1, 0 }, { 6, 2, 1 }, /* 0x00*/
+ { 5, 1, 0 }, { 0, 0, 1 }, { 5, 2, 0 }, { 5, 3, 1 },
+ { 4, 1, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 },
+ { 4, 2, 0 }, { 0, 0, 1 }, { 4, 3, 0 }, { 4, 4, 1 },
+-{ 3, 1, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 }, // 0x10
++{ 3, 1, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 }, /* 0x10*/
+ { 0, 0, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 },
+ { 3, 2, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 },
+ { 3, 3, 0 }, { 0, 0, 1 }, { 3, 4, 0 }, { 3, 5, 1 },
+-{ 2, 1, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 }, // 0x20
++{ 2, 1, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 }, /* 0x20*/
+ { 0, 0, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 },
+ { 0, 0, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 },
+ { 0, 0, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 },
+-{ 2, 2, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 }, // 0x30
++{ 2, 2, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 }, /* 0x30*/
+ { 0, 0, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 },
+ { 2, 3, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 },
+ { 2, 4, 0 }, { 0, 0, 1 }, { 2, 5, 0 }, { 2, 6, 1 },
+-{ 1, 1, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 }, // 0x40
++{ 1, 1, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 }, /* 0x40*/
+ { 0, 0, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 },
+ { 0, 0, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 },
+ { 0, 0, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 },
+-{ 0, 0, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 }, // 0x50
++{ 0, 0, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 }, /* 0x50*/
+ { 0, 0, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 },
+ { 0, 0, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 },
+ { 0, 0, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 },
+-{ 1, 2, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 }, // 0x60
++{ 1, 2, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 }, /* 0x60*/
+ { 0, 0, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 },
+ { 0, 0, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 },
+ { 0, 0, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 },
+-{ 1, 3, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 }, // 0x70
++{ 1, 3, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 }, /* 0x70*/
+ { 0, 0, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 },
+ { 1, 4, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 },
+ { 1, 5, 0 }, { 0, 0, 1 }, { 1, 6, 0 }, { 1, 7, 1 },
+-{ 0, 1, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 }, // 0x80
++{ 0, 1, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 }, /* 0x80*/
+ { 0, 0, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 },
+ { 0, 0, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 },
+ { 0, 0, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 },
+-{ 0, 0, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 }, // 0x90
++{ 0, 0, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 }, /* 0x90*/
+ { 0, 0, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 },
+ { 0, 0, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 },
+ { 0, 0, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 },
+-{ 0, 0, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 }, // 0xa0
++{ 0, 0, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 }, /* 0xa0*/
+ { 0, 0, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 },
+ { 0, 0, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 },
+ { 0, 0, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 },
+-{ 0, 0, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 }, // 0xb0
++{ 0, 0, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 }, /* 0xb0*/
+ { 0, 0, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 },
+ { 0, 0, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 },
+ { 0, 0, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 },
+-{ 0, 2, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 }, // 0xc0
++{ 0, 2, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 }, /* 0xc0*/
+ { 0, 0, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 },
+ { 0, 0, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 },
+ { 0, 0, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 },
+-{ 0, 0, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 }, // 0xd0
++{ 0, 0, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 }, /* 0xd0*/
+ { 0, 0, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 },
+ { 0, 0, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 },
+ { 0, 0, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 },
+-{ 0, 3, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 }, // 0xe0
++{ 0, 3, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 }, /* 0xe0*/
+ { 0, 0, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 },
+ { 0, 0, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 },
+ { 0, 0, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 },
+-{ 0, 4, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 }, // 0xf0
++{ 0, 4, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 }, /* 0xf0*/
+ { 0, 0, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 },
+ { 0, 5, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 },
+ { 0, 6, 0 }, { 0, 0, 1 }, { 0, 7, 0 }, { 0, 8, 1 },
+ };
+
+ static sc_tbl gdi_ScanTbl4[16] = {
+-{ 4, 0, 0 }, { 3, 1, 1 }, { 2, 1, 0 }, { 2, 2, 1 }, // 0x00
+-{ 1, 1, 0 }, { 0, 0, 1 }, { 1, 2, 0 }, { 1, 3, 1 }, // 0x04
+-{ 0, 1, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 }, // 0x08
+-{ 0, 2, 0 }, { 0, 0, 1 }, { 0, 3, 0 }, { 0, 4, 1 } // 0x0c
++{ 4, 0, 0 }, { 3, 1, 1 }, { 2, 1, 0 }, { 2, 2, 1 }, /* 0x00*/
++{ 1, 1, 0 }, { 0, 0, 1 }, { 1, 2, 0 }, { 1, 3, 1 }, /* 0x04*/
++{ 0, 1, 0 }, { 0, 0, 1 }, { 0, 0, 0 }, { 0, 0, 1 }, /* 0x08*/
++{ 0, 2, 0 }, { 0, 0, 1 }, { 0, 3, 0 }, { 0, 4, 1 } /* 0x0c*/
+ };
+
+ long SaveScanData( unsigned char *, unsigned short, unsigned short, unsigned short, unsigned short, unsigned short );
+@@ -816,32 +886,32 @@
+ lWarp = (long)(usWarp << 3);
+ lDis = ((long)usDy * lWarp) + (long)sDx;
+
+- // 1st, 2nd, 3rd & 4th byte
+- ultmp_dat = 0xc0000000;
++ /* 1st, 2nd, 3rd & 4th byte*/
++ ultmp_dat = 0xc0000000ul;
+ if (lDis < 0)
+ {
+- ultmp_dat |= 0x20000000;
++ ultmp_dat |= 0x20000000ul;
+ }
+- ultmp_dat |= (lDis & 0x1fffffff);
+- *out_buf++ = (unsigned char)((ultmp_dat & 0xff000000) >> 24);
+- *out_buf++ = (unsigned char)((ultmp_dat & 0xff0000) >> 16);
+- *out_buf++ = (unsigned char)((ultmp_dat & 0xff00) >> 8);
+- *out_buf++ = (unsigned char)(ultmp_dat & 0xff);
++ ultmp_dat |= (lDis & 0x1ffffffful);
++ *out_buf++ = (unsigned char)((ultmp_dat & 0xff000000ul) >> 24);
++ *out_buf++ = (unsigned char)((ultmp_dat & 0xff0000ul) >> 16);
++ *out_buf++ = (unsigned char)((ultmp_dat & 0xff00ul) >> 8);
++ *out_buf++ = (unsigned char)(ultmp_dat & 0xfful);
+
+- // 5th & 6th byte
++ /* 5th & 6th byte*/
+ ustmp_dat = 0xc000;
+ ustmp_dat |= (usRl & 0x3fff);
+ *out_buf++ = (unsigned char)((ustmp_dat & 0xff00) >> 8);
+ *out_buf++ = (unsigned char)(ustmp_dat & 0xff);
+
+ return(6);
+-} // Save6Bytes()
++} /* Save6Bytes()*/
+
+ long Save4Bytes(unsigned char *out_buf, unsigned short usDy, unsigned short usRl, short sDx)
+ {
+ unsigned short ustmp_dat;
+
+- // 1st & 2nd byte
++ /* 1st & 2nd byte*/
+ ustmp_dat = 0x8000;
+ if (sDx < 0)
+ {
+@@ -851,7 +921,7 @@
+ *out_buf++ = (unsigned char)((ustmp_dat & 0xff00) >> 8);
+ *out_buf++ = (unsigned char)(ustmp_dat & 0xff);
+
+- // 3rd & 4th byte
++ /* 3rd & 4th byte*/
+ ustmp_dat = 0x8000;
+ ustmp_dat |= ((usDy & 0x03) << 12);
+ ustmp_dat |= (usRl & 0xfff);
+@@ -859,13 +929,13 @@
+ *out_buf++ = (unsigned char)(ustmp_dat & 0xff);
+
+ return(4);
+-} // end of Save4Bytes()
++} /* end of Save4Bytes()*/
+
+ long Save2Bytes(unsigned char *out_buf, unsigned short usDy, unsigned short usRl, short sDx)
+ {
+ unsigned char ubtmp_dat;
+
+- // 1st byte
++ /* 1st byte*/
+ ubtmp_dat = 0x00;
+ if (usDy == 1)
+ {
+@@ -874,7 +944,7 @@
+ ubtmp_dat |= (usRl & 0x3f);
+ *out_buf++ = ubtmp_dat;
+
+- // 2nd byte
++ /* 2nd byte*/
+ if (sDx < 0)
+ {
+ ubtmp_dat = 0x80;
+@@ -886,7 +956,7 @@
+ ubtmp_dat |= ((unsigned char)sDx & 0x7f);
+ *out_buf++ = ubtmp_dat;
+ return(2);
+-} // end of Save2Bytes()
++} /* end of Save2Bytes()*/
+
+ long SaveScanData (unsigned char *out_buf,
+ unsigned short us1Cnt,
+@@ -900,26 +970,26 @@
+
+ sDisX = (int)usPosX01 - (int)usPosX10;
+
+- // 48 bit
++ /* 48 bit*/
+ if ( (usDy > 3) || (us1Cnt > 4095) )
+ {
+ Save6Bytes(out_buf, usDy, us1Cnt, sDisX, usWarp);
+ lRet = 6;
+ }
+- // 32 bit
++ /* 32 bit*/
+ else if ( (usDy > 1) || (us1Cnt > 63) || (sDisX > 127) || (sDisX < -128) )
+ {
+ Save4Bytes(out_buf, usDy, us1Cnt, sDisX);
+ lRet = 4;
+ }
+- // 16 bit
++ /* 16 bit*/
+ else
+ {
+ Save2Bytes(out_buf, usDy, us1Cnt, sDisX);
+ lRet = 2;
+ }
+ return(lRet);
+-} // end of SaveScanData()
++} /* end of SaveScanData()*/
+
+
+ long UpdateScanSize (unsigned char *out_buf,
+@@ -934,23 +1004,23 @@
+
+ sDisX = usPosX01 - usPosX10;
+
+- // 48 bit
++ /* 48 bit*/
+ if ( (usDy > 3) || (us1Cnt > 4095) )
+ {
+ lRet = 6;
+ }
+- // 32 bit
++ /* 32 bit*/
+ else if ( (usDy > 1) || (us1Cnt > 63) || (sDisX > 127) || (sDisX < -128) )
+ {
+ lRet = 4;
+ }
+- // 16 bit
++ /* 16 bit*/
+ else
+ {
+ lRet = 2;
+ }
+ return(lRet);
+-} // end of UpdateScanSize() by bglee 19981224
++} /* end of UpdateScanSize() by bglee 19981224*/
+
+ long GetSimpleScan(unsigned char *out_buf,
+ unsigned char ubSizeMode,
+@@ -983,10 +1053,10 @@
+ }
+
+
+- // 1 X 1 X
++ /* 1 X 1 X*/
+ if (ubPreBit)
+ {
+- // 1 0 1 X
++ /* 1 0 1 X*/
+ if (ubDx)
+ {
+ lScanSize += (*UpdateScanLine[ubSizeMode])(out_buf, *us1Count, *usDy, *usPosX10, *usPosX01, usWidth);
+@@ -994,23 +1064,23 @@
+ *usPosX01 = usBytePos + ubDx;
+ *us1Count = ubRl;
+ *usDy = 0;
+- // 1 0 1 0
++ /* 1 0 1 0*/
+ if (!ubLastBit)
+ {
+- // 19990330 by bglee
++ /* 19990330 by bglee*/
+ out_buf = out_buf + lScanSize;
+
+ lScanSize += (*UpdateScanLine[ubSizeMode])(out_buf, *us1Count, *usDy, *usPosX10, *usPosX01, usWidth);
+ *usPosX10 = *usPosX01 ;
+ *us1Count = 0;
+ }
+- // 1 0 1 1
++ /* 1 0 1 1*/
+ }
+- // 1 1 1 X
++ /* 1 1 1 X*/
+ else
+ {
+ *us1Count += ubRl;
+- // 1 1 1 0
++ /* 1 1 1 0*/
+ if (!ubLastBit)
+ {
+ lScanSize += (*UpdateScanLine[ubSizeMode])(out_buf, *us1Count, *usDy, *usPosX10, *usPosX01, usWidth);
+@@ -1018,16 +1088,16 @@
+ *us1Count = 0;
+ *usDy = 0;
+ }
+- // 1 1 1 1
++ /* 1 1 1 1*/
+ }
+ }
+- // 0 X 1 X
++ /* 0 X 1 X*/
+ else
+ {
+- // 0 X 1 X
++ /* 0 X 1 X*/
+ *usPosX01 = usBytePos + ubDx;
+ *us1Count += ubRl;
+- // 0 X 1 0
++ /* 0 X 1 0*/
+ if (!ubLastBit)
+ {
+ lScanSize += (*UpdateScanLine[ubSizeMode])(out_buf, *us1Count, *usDy, *usPosX10, *usPosX01, usWidth);
+@@ -1035,11 +1105,11 @@
+ *us1Count = 0;
+ *usDy = 0;
+ }
+- // 0 X 1 1
++ /* 0 X 1 1*/
+ }
+
+ return(lScanSize);
+-} // end of GetSimpleScan()
++} /* end of GetSimpleScan() */
+
+
+ long scan_map (unsigned char *in_buf,
+@@ -1049,7 +1119,7 @@
+ unsigned char ubMode)
+ {
+ unsigned int i, j, k;
+- unsigned char ubPreBit, ubCrtByte;//, ubLastBit;
++ unsigned char ubPreBit, ubCrtByte;/*, ubLastBit;*/
+ long lScanSize, lTmp;
+ long lCrtSize;
+ unsigned short us1Count;
+@@ -1078,7 +1148,7 @@
+ switch (ubCrtByte)
+ {
+ case 0x00:
+- // 1 0
++ /* 1 0 */
+ if (ubPreBit)
+ {
+ lTmp = (*UpdateScanLine[ubSizeMode])(out_buf, us1Count, usDy, usPosX10, usPosX01, usWidth);
+@@ -1088,16 +1158,16 @@
+ us1Count = 0;
+ usDy = 0;
+ }
+- // 0 0
++ /* 0 0*/
+ break;
+
+ case 0xff:
+- // 1 1
++ /* 1 1*/
+ if (ubPreBit)
+ {
+ us1Count += 8;
+ }
+- // 0 1
++ /* 0 1*/
+ else
+ {
+ us1Count = 8;
+@@ -1106,7 +1176,7 @@
+ break;
+
+ default:
+- // X X 1 X
++ /* X X 1 X*/
+ if (gdi_ScanTbl[ubCrtByte].ubRl)
+ {
+ usBytePos = (j << 3);
+@@ -1114,7 +1184,7 @@
+ out_buf = out_buf + lTmp;
+ lScanSize += lTmp;
+ }
+- // complex pattern
++ /* complex pattern*/
+ else
+ {
+ for (k = 0; k < 2; k++)
+@@ -1124,7 +1194,7 @@
+ switch (ubTemp)
+ {
+ case 0x00:
+- // 1 0
++ /* 1 0*/
+ if (ubPreBit)
+ {
+ lTmp = (*UpdateScanLine[ubSizeMode])(out_buf, us1Count, usDy, usPosX10, usPosX01, usWidth);
+@@ -1134,16 +1204,16 @@
+ us1Count = 0;
+ usDy = 0;
+ }
+- // 0 0
++ /* 0 0*/
+ break;
+
+ case 0x0f:
+- // 1 1
++ /* 1 1*/
+ if (ubPreBit)
+ {
+ us1Count += 4;
+ }
+- // 0 1
++ /* 0 1*/
+ else
+ {
+ us1Count = 4;
+@@ -1152,7 +1222,7 @@
+ break;
+
+ case 0x05:
+- // 1 0101
++ /* 1 0101*/
+ if (ubPreBit)
+ {
+ lTmp = (*UpdateScanLine[ubSizeMode])(out_buf, us1Count, usDy, usPosX10, usPosX01, usWidth);
+@@ -1162,13 +1232,13 @@
+ usPosX10 = usBytePos - us1Count;
+ usDy = 0;
+ }
+- // 0 0101
++ /* 0 0101*/
+ usPosX01 = usBytePos + 1;
+ lTmp = (*UpdateScanLine[ubSizeMode])(out_buf, 1, usDy, usPosX10, usPosX01, usWidth);
+ out_buf = out_buf + lTmp;
+ lScanSize += lTmp;
+
+- // next
++ /* next*/
+ usPosX10 = 0;
+ usPosX01 = 2;
+ usDy = 0;
+@@ -1176,12 +1246,12 @@
+ break;
+
+ case 0x09:
+- // 1 1001
++ /* 1 1001*/
+ if (ubPreBit)
+ {
+ us1Count++;
+ }
+- // 0 1001
++ /* 0 1001*/
+ else
+ {
+ usPosX01 = usBytePos;
+@@ -1191,7 +1261,7 @@
+ out_buf = out_buf + lTmp;
+ lScanSize += lTmp;
+
+- // next
++ /* next*/
+ if (ubPreBit)
+ {
+ usPosX10 = usBytePos - us1Count + 1;
+@@ -1207,12 +1277,12 @@
+ break;
+
+ case 0x0a:
+- // 1 1010
++ /* 1 1010*/
+ if (ubPreBit)
+ {
+ us1Count++;
+ }
+- // 0 1010
++ /* 0 1010*/
+ else
+ {
+ us1Count = 1;
+@@ -1222,25 +1292,25 @@
+ out_buf = out_buf + lTmp;
+ lScanSize += lTmp;
+
+- // next
++ /* next*/
+ usPosX10 = usBytePos - us1Count + 1;
+ usPosX01 = usBytePos + 2;
+ lTmp = (*UpdateScanLine[ubSizeMode])(out_buf, 1, 0, usPosX10, usPosX01, usWidth);
+ out_buf = out_buf + lTmp;
+ lScanSize += lTmp;
+- // next
++ /* next*/
+ usPosX10 = usBytePos + 2;
+ usDy = 0;
+ us1Count = 0;
+ break;
+
+ case 0x0b:
+- // 1 1011
++ /* 1 1011*/
+ if (ubPreBit)
+ {
+ us1Count++;
+ }
+- // 0 1011
++ /* 0 1011*/
+ else
+ {
+ us1Count = 1;
+@@ -1250,7 +1320,7 @@
+ out_buf = out_buf + lTmp;
+ lScanSize += lTmp;
+
+- // next
++ /* next*/
+ if (ubPreBit)
+ {
+ usPosX10 = usBytePos - us1Count + 1;
+@@ -1267,12 +1337,12 @@
+ break;
+
+ case 0x0d:
+- // 1 1101
++ /* 1 1101*/
+ if (ubPreBit)
+ {
+ us1Count += 2;
+ }
+- // 0 1101
++ /* 0 1101*/
+ else
+ {
+ us1Count = 2;
+@@ -1282,7 +1352,7 @@
+ out_buf = out_buf + lTmp;
+ lScanSize += lTmp;
+
+- // next
++ /* next*/
+ if (ubPreBit)
+ {
+ usPosX10 = usBytePos - us1Count + 2;
+@@ -1298,17 +1368,17 @@
+ break;
+
+ default:
+- // X X 1 X
++ /* X X 1 X*/
+ lTmp = GetSimpleScan(out_buf, ubSizeMode, &us1Count, &usDy, &usPosX10, &usPosX01, usBytePos, ubTemp, 4, ubPreBit, usWidth);
+ out_buf = out_buf + lTmp;
+ lScanSize += lTmp;
+ break;
+- } // end of switch()
++ } /* end of switch()*/
+ ubPreBit = ubTemp & 0x01;
+- } // end of k-loop
++ } /* end of k-loop*/
+ }
+ break;
+- } // end of switch()
++ } /* end of switch()*/
+
+ ubPreBit = ubCrtByte & 0x01;
+ } /*for usWidth */
+@@ -1326,7 +1396,7 @@
+ }
+ usDy++;
+
+- // check size over
++ /* check size over*/
+ if ( (i % 5) == 4 )
+ {
+ lCrtSize = (long)((long)usWidth * (long)(i + 1));
+@@ -1342,7 +1412,7 @@
+ lScanSize = -1;
+ }
+ return(lScanSize);
+-} // end of scan_map()
++} /* end of scan_map() */
+
+ /*****************************************************************
+ * H : bmp2run
+@@ -1362,7 +1432,7 @@
+ unsigned char *tmp_buf1, *tmp_buf2;
+ long scan_size;
+
+- //return(-1); // 19990323 by bglee - request from SM Lee
++ /*return(-1);*/ /* 19990323 by bglee - request from SM Lee*/
+
+ tmp_buf1 = in_buf;
+ tmp_buf2 = out_buf;
+@@ -1372,7 +1442,7 @@
+ return(-1);
+ }
+
+- if ( !(ubMode & 0x02) ) // real compression //---
++ if ( !(ubMode & 0x02) ) /* real compression */
+ {
+ out_buf = tmp_buf2 + scan_size;
+ *out_buf++ = 0x00;
+@@ -1385,7 +1455,7 @@
+ scan_size += 2;
+ }
+ }
+- else // pre-compression
++ else /* pre-compression*/
+ {
+ scan_size += 2;
+ if (scan_size % 4)
diff --git a/print/ghostscript-gpl/files/patch-src:smartgdi-contrib.mak b/print/ghostscript-gpl/files/patch-src:smartgdi-contrib.mak
new file mode 100644
index 000000000000..3b832daff662
--- /dev/null
+++ b/print/ghostscript-gpl/files/patch-src:smartgdi-contrib.mak
@@ -0,0 +1,16 @@
+--- src/smartgdi-contrib.mak.orig Wed Jun 19 21:43:43 2002
++++ src/smartgdi-contrib.mak Mon Jul 21 13:59:00 2003
+@@ -3,10 +3,12 @@
+ ### Note : this driver is used by Samsung SmartGDI compatible printers. ###
+ ###
+
++gdi_opts=-DGS_VERSION_MAJOR=$(GS_VERSION_MAJOR)
++
+ GDIMONO=$(GLOBJ)gdevgdi.$(OBJ) $(HPPCL)
+
+ $(DD)gdi.dev: $(GDIMONO) $(DD)page.dev
+ $(SETPDEV) $(DD)gdi $(GDIMONO)
+
+ $(GLOBJ)gdevgdi.$(OBJ): $(GLSRC)gdevgdi.c $(PDEVH) $(gdevpcl_h)
+- $(GLCC) $(GLO_)gdevgdi.$(OBJ) $(C_) $(GLSRC)gdevgdi.c
++ $(GLCC) $(GLO_)gdevgdi.$(OBJ) $(C_) $(gdi_opts) $(GLSRC)gdevgdi.c