home *** CD-ROM | disk | FTP | other *** search
Wrap
package sun.awt.motif; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.FontMetrics; import java.awt.PrintJob; import java.awt.Rectangle; import java.awt.image.ColorModel; import java.awt.image.IndexColorModel; import java.io.BufferedInputStream; import java.io.CharConversionException; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.io.PrintStream; import java.util.Properties; import sun.awt.CharsetString; import sun.awt.PlatformFont; import sun.io.CharToByteConverter; class PSPrintStream { // $FF: renamed from: ps java.io.PrintStream PrintStream field_0; PrintJob job; public String title; public Dimension paperDim; Properties fontProps; int curPage = -1; Rectangle curClip; Color curColor; Font curFont; int[] curColormap; boolean prologSent = false; boolean lastFirst = false; Color paperColor; static String SetColorName = "SC"; static String SetFontName = "SF"; static String RectClipName = "RC"; static String InitClipName = "IC"; static String RectFillName = "RF"; static String RectStrokeName = "RS"; static String RRectFillName = "RRF"; static String RRectStrokeName = "RRS"; static String ArcFillName = "AF"; static String ArcStrokeName = "AS"; static String PolygonFillName = "PYF"; static String PolygonStrokeName = "PYS"; static String DrawStringName = "DS"; static String DrawLineName = "DL"; static String ScaleName = "S"; static String StartPageName = "SP"; static String EndPageName = "EP"; static String GsaveName = "GS"; static String GrestoreName = "GR"; static String SetColormapName = "CM"; static String DrawImageName = "DI"; static String DrawIndexImageName = "DII"; static String testString = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ 1234567890"; private static byte[] hexDigits = new byte[]{48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 65, 66, 67, 68, 69, 70}; PSPrintStream(PrintJob var1, PrintStream var2, String var3, Dimension var4, boolean var5) { this.paperColor = Color.white; this.job = var1; this.field_0 = var2; this.title = var3; this.paperDim = var4; this.lastFirst = var5; this.fontProps = this.initProps(); } private Properties initProps() { SecurityManager.enablePrivilege("UniversalPropertyRead"); String var1 = System.getProperty("java.home"); if (var1 != null) { String var2 = System.getProperty("user.language", "en"); SecurityManager.enablePrivilege("UniversalFileRead"); try { File var3 = new File(var1 + File.separator + "lib" + File.separator + "psfont.properties." + var2); if (!var3.canRead()) { var3 = new File(var1 + File.separator + "lib" + File.separator + "psfont.properties"); if (!var3.canRead()) { return null; } } BufferedInputStream var4 = new BufferedInputStream(new FileInputStream(var3.getPath())); Properties var5 = new Properties(); var5.load(var4); ((InputStream)var4).close(); return var5; } catch (Exception var6) { return null; } } else { return null; } } void startPage(int var1) { this.curClip = null; this.curColor = null; this.curFont = null; this.curColormap = null; this.curPage = var1; if (this.job != null) { this.field_0.println("\n%%Page: " + var1 + " " + var1); } this.field_0.println(StartPageName); } void endPage() { this.field_0.println(EndPageName); this.curPage = -1; this.field_0.flush(); } void close(int var1) { if (this.job != null) { this.field_0.println("%%Trailer"); this.field_0.println("%%Pages: " + var1); } this.field_0.println("%%EOF"); this.field_0.flush(); } private void outPoint(PSGraphics var1, int var2, int var3) { this.field_0.print(var1.adjustX + var2 + " " + (var1.adjustY - var3) + " "); } private void outRect(PSGraphics var1, int var2, int var3, int var4, int var5) { this.outPoint(var1, var2, var3); this.field_0.print(var4 + " " + -var5 + " "); } private void outClip(PSGraphics var1) { Rectangle var2 = var1.clipRect; if (this.curClip != var2) { this.field_0.println(InitClipName); if (var2 != null) { this.outRect(var1, var2.x - var1.originX, var2.y - var1.originY, var2.width, var2.height); this.field_0.println(RectClipName); } this.curClip = var2; } } private void outColor(Color var1) { if (this.curColor != var1) { this.field_0.println(var1.getRed() + " " + var1.getGreen() + " " + var1.getBlue() + " " + SetColorName); this.curColor = var1; } } private void outFont(PSGraphics var1) { Font var2 = var1.font; if (this.curFont != var2) { this.curFont = var2; FontMetrics var3 = var1.curMetrics; if (var1.curMetrics == null) { var3 = var1.getFontMetrics(var2); var1.curMetrics = var3; } int var4 = var3.stringWidth(testString); int var5 = var2.getStyle(); if (!var2.getFamily().startsWith("Helvetica") && !var2.getFamily().startsWith("SansSerif")) { if (var2.getFamily().startsWith("Dialog")) { var5 = 0; } else if (!var2.getFamily().startsWith("Times") && !var2.getFamily().startsWith("Serif")) { var5 = 8; } else { var5 = 4; } } else { var5 = 0; } if (var2.isBold()) { ++var5; } if (var2.isItalic()) { var5 += 2; } this.field_0.println("% Font[" + var2.getFamily() + ", " + var2.getStyle() + ", " + var2.getSize() + "]"); this.field_0.println(var4 + " " + var2.getSize() + " " + var5 + " " + SetFontName); } } private void outStr(String var1) { StringBuffer var2 = new StringBuffer(); var2.append('('); for(int var3 = 0; var3 < var1.length(); ++var3) { char var4 = var1.charAt(var3); if (var4 == '(' || var4 == ')' || var4 == '\\') { var2.append('\\'); } var2.append(var4); } var2.append(')'); this.field_0.print(var2.toString()); } synchronized void sendLine(PSGraphics var1, int var2, int var3, int var4, int var5) { if (var1.pageNumber == this.curPage) { this.outClip(var1); this.outColor(var1.foreground); this.outPoint(var1, var2, var3); this.outPoint(var1, var4, var5); this.field_0.println(DrawLineName); } } synchronized void sendRect(PSGraphics var1, int var2, int var3, int var4, int var5, Color var6, boolean var7) { if (var1.pageNumber == this.curPage) { this.outClip(var1); this.outColor(var6); this.outRect(var1, var2, var3, var4, var5); this.field_0.println(var7 ? RectFillName : RectStrokeName); } } void sendRect(PSGraphics var1, int var2, int var3, int var4, int var5, boolean var6) { this.sendRect(var1, var2, var3, var4, var5, var1.foreground, var6); } void fillRect(PSGraphics var1, int var2, int var3, int var4, int var5, Color var6) { this.sendRect(var1, var2, var3, var4, var5, var6, true); } synchronized void sendRoundRect(PSGraphics var1, int var2, int var3, int var4, int var5, float var6, float var7, boolean var8) { if (var1.pageNumber == this.curPage) { this.outClip(var1); this.outColor(var1.foreground); this.outRect(var1, var2, var3, var4, var5); this.field_0.print(var6 + " " + var7 + " "); this.field_0.println(var8 ? RRectFillName : RRectStrokeName); } } synchronized void sendArc(PSGraphics var1, int var2, int var3, int var4, int var5, int var6, int var7, boolean var8) { if (var1.pageNumber == this.curPage) { this.outClip(var1); this.outColor(var1.foreground); this.outPoint(var1, var2, var3); this.field_0.print(var4 + " " + var5 + " " + var6 + " " + var7 + " "); this.field_0.println(var8 ? ArcFillName : ArcStrokeName); } } synchronized void sendPolygon(PSGraphics var1, int[] var2, int[] var3, int var4, boolean var5, boolean var6) { if (var1.pageNumber == this.curPage) { this.outClip(var1); this.outColor(var1.foreground); this.field_0.print(var5 + " "); for(int var7 = 0; var7 < var4; ++var7) { this.outPoint(var1, var2[var7], var3[var7]); } this.field_0.print(var4 + " "); this.field_0.println(var6 ? PolygonFillName : PolygonStrokeName); } } synchronized void sendString(PSGraphics var1, String var2, int var3, int var4) { if (var1.pageNumber == this.curPage) { this.outClip(var1); this.outColor(var1.foreground); Font var5 = var1.font; FontMetrics var6 = var1.curMetrics; if (var6 == null) { var6 = var1.getFontMetrics(var5); var1.curMetrics = var6; } if (this.fontProps == null) { this.outFont(var1); this.outStr(var2); this.field_0.print(" " + var6.stringWidth(var2) + " "); this.outPoint(var1, var3, var4); this.field_0.println(DrawStringName); } else { CharsetString[] var7 = ((MFontPeer)var5.getPeer()).makeMultiCharsetString(var2); for(int var8 = 0; var8 < var7.length; ++var8) { CharsetString var9 = var7[var8]; CharToByteConverter var10 = var9.fontDescriptor.fontCharset; int var11 = var6.charsWidth(var9.charsetChars, var9.offset, var9.length); String var12 = this.makeCharsetName(var10.toString()); String var13 = PlatformFont.styleStr(var5.getStyle()); String var14 = this.fontProps.getProperty(var5.getName().toLowerCase(), "serif"); String var15 = this.fontProps.getProperty(var14 + "." + var12 + "." + var13, "Courier ISOF"); int var16; try { var16 = Integer.parseInt(this.fontProps.getProperty(var15)); } catch (NumberFormatException var24) { var16 = 0; } StringBuffer var17 = new StringBuffer(); byte[] var18 = new byte[var9.length * 2]; int var19; try { var19 = var10.convert(var9.charsetChars, var9.offset, var9.offset + var9.length, var18, 0, var18.length); } catch (CharConversionException var25) { continue; } var17.append('<'); for(int var20 = 0; var20 < var19; ++var20) { byte var21 = var18[var20]; String var22 = Integer.toHexString(var21); int var23 = var22.length(); if (var23 > 2) { var22 = var22.substring(var23 - 2, var23); } else if (var23 == 1) { var22 = "0" + var22; } else if (var23 == 0) { var22 = "00"; } var17.append(var22); } var17.append('>'); this.field_0.println("/testString " + var17.toString() + " D"); this.field_0.println("% Font[" + var5.getName() + ", " + PlatformFont.styleStr(var5.getStyle()) + ", " + var5.getSize() + "]"); this.field_0.println(var11 + " " + var5.getSize() + " " + var16 + " " + SetFontName); this.field_0.println(var17.toString()); int var26 = var6.charsWidth(var9.charsetChars, var9.offset, var9.length); this.field_0.print(" " + var26 + " "); this.outPoint(var1, var3, var4); this.field_0.println(DrawStringName); var3 += var26; } } } } private String makeCharsetName(String var1) { return var1.indexOf("8859_1") != -1 ? "latin1" : var1.toLowerCase(); } private static final int blend(int var0, int var1, int var2) { return (var0 * var1 + (255 - var0) * var2) / 255; } private int sendColors(byte[] var1, int var2, int var3, byte[] var4, int var5) { while(var3-- > 0) { if (var5 + 3 > var4.length) { var4[var5++] = 10; this.field_0.write(var4, 0, var5); var5 = 0; } byte var6 = var1[var2++]; var4[var5++] = hexDigits[var6 >>> 4 & 15]; var4[var5++] = hexDigits[var6 & 15]; } return var5; } private int sendColors(int[] var1, int var2, int var3, byte[] var4, int var5) { while(var3-- > 0) { if (var5 + 7 > var4.length) { var4[var5++] = 10; this.field_0.write(var4, 0, var5); var5 = 0; } int var6 = var1[var2++]; var4[var5++] = hexDigits[var6 >>> 20 & 15]; var4[var5++] = hexDigits[var6 >>> 16 & 15]; var4[var5++] = hexDigits[var6 >>> 12 & 15]; var4[var5++] = hexDigits[var6 >>> 8 & 15]; var4[var5++] = hexDigits[var6 >>> 4 & 15]; var4[var5++] = hexDigits[var6 & 15]; } return var5; } private void sendSubPixels(PSGraphics var1, byte[] var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, float var10, float var11) { int var12 = var6 - var4; int var13 = var7 - var5; int var14 = var5 * var3 + var4; int var15 = 0; byte[] var16 = new byte[73]; this.field_0.print(var4 + " " + var5 + " "); this.field_0.print(var12 + " " + var13 + " "); this.field_0.print(var10 * (float)var12 + " " + var11 * (float)var13 + " "); this.outPoint(var1, var8, var9); this.field_0.println(DrawIndexImageName); for(int var17 = var5; var17 < var7; ++var17) { var15 = this.sendColors(var2, var14, var12, var16, var15); var14 += var3; } if (var15 > 0) { var16[var15++] = 10; this.field_0.write(var16, 0, var15); } } private void sendSubPixels(PSGraphics var1, int[] var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, float var10, float var11) { int var12 = var6 - var4; int var13 = var7 - var5; int var14 = var5 * var3 + var4; int var15 = 0; byte[] var16 = new byte[73]; this.field_0.print(var4 + " " + var5 + " "); this.field_0.print(var12 + " " + var13 + " "); this.field_0.print(var10 * (float)var12 + " " + var11 * (float)var13 + " "); this.outPoint(var1, var8, var9); this.field_0.println(DrawImageName); for(int var17 = var5; var17 < var7; ++var17) { var15 = this.sendColors(var2, var14, var12, var16, var15); var14 += var3; } if (var15 > 0) { var16[var15++] = 10; this.field_0.write(var16, 0, var15); } } private void sendColormap(PSGraphics var1, int[] var2, int var3) { if (this.curColormap != null) { boolean var4 = true; for(int var5 = 0; var5 < var3; ++var5) { if (var2[var5] != this.curColormap[var5]) { var4 = false; break; } } if (var4) { return; } } this.curColormap = var2; byte[] var6 = new byte[73]; this.field_0.println(var3 + " " + SetColormapName); int var7 = this.sendColors((int[])var2, 0, var3, var6, 0); if (var7 > 0) { var6[var7++] = 10; this.field_0.write(var6, 0, var7); } } synchronized void sendPixels(PSGraphics var1, byte[] var2, IndexColorModel var3, int var4, int var5, int var6, int var7, int var8, int var9, int var10, int var11, Color var12) { if (var1.pageNumber == this.curPage) { int[] var13 = new int[256]; int var14 = var3.getMapSize(); boolean[] var15 = new boolean[256]; boolean var16 = false; int var17; int var18; int var19; if (var12 != null) { var17 = var12.getRed(); var18 = var12.getGreen(); var19 = var12.getBlue(); } else { var19 = 0; var18 = 0; var17 = 0; } while(true) { --var14; if (var14 < 0) { this.outClip(var1); this.sendColormap(var1, var13, var3.getMapSize()); int var28 = var10 - var8; int var29 = var11 - var9; float var30 = (float)(var6 - var4) / (float)var28; float var31 = (float)(var7 - var5) / (float)var29; if (!var16) { this.sendSubPixels(var1, (byte[])var2, var28, 0, 0, var28, var29, var4, var5, var30, var31); return; } else { var14 = 0; for(int var32 = 0; var32 < var29; ++var32) { int var25 = -1; for(int var26 = 0; var26 < var28; ++var26) { if (var15[var2[var14++] & 255]) { if (var25 >= 0) { this.sendSubPixels(var1, var2, var28, var25, var32, var26, var32 + 1, var4, var5, var30, var31); var25 = -1; } } else if (var25 < 0) { var25 = var26; } } if (var25 >= 0) { this.sendSubPixels(var1, var2, var28, var25, var32, var28, var32 + 1, var4, var5, var30, var31); } } return; } } int var20 = var3.getRGB(var14); int var21 = var20 >>> 24; if (var21 != 255) { if (var12 != null) { int var22 = blend(var21, var20 >>> 16 & 255, var17); int var23 = blend(var21, var20 >>> 8 & 255, var18); int var24 = blend(var21, var20 & 255, var19); var20 = var22 << 16 | var23 << 8 | var24; } else if (var21 < 128) { var15[var14] = true; var16 = true; } } var13[var14] = var20; } } } synchronized void sendPixels(PSGraphics var1, int[] var2, ColorModel var3, int var4, int var5, int var6, int var7, int var8, int var9, int var10, int var11, Color var12) { if (var1.pageNumber == this.curPage) { int var13 = var10 - var8; int var14 = var11 - var9; float var15 = (float)(var6 - var4) / (float)var13; float var16 = (float)(var7 - var5) / (float)var14; int var17; int var18; int var19; if (var12 != null) { var17 = var12.getRed(); var18 = var12.getGreen(); var19 = var12.getBlue(); } else { var19 = 0; var18 = 0; var17 = 0; } this.outClip(var1); int var20 = 0; int var21 = -1; for(int var22 = 0; var22 < var14; ++var22) { int var23 = -1; for(int var24 = 0; var24 < var13; ++var24) { int var25 = var3.getRGB(var2[var20]); int var26 = var25 >>> 24; if (var26 != 255) { if (var12 != null) { int var27 = blend(var26, var25 >>> 16 & 255, var17); int var28 = blend(var26, var25 >>> 8 & 255, var18); int var29 = blend(var26, var25 & 255, var19); var2[var20] = var27 << 16 | var28 << 8 | var29; if (var23 < 0) { var23 = var24; } } else if (var23 >= 0) { if (var21 >= 0) { this.sendSubPixels(var1, (int[])var2, var13, 0, var21, var13, var22, var4, var5, var15, var16); var21 = -1; } this.sendSubPixels(var1, var2, var13, var23, var22, var24, var22 + 1, var4, var5, var15, var16); var23 = -1; } } else { var2[var20] = var25; if (var23 < 0) { var23 = var24; } } ++var20; } if (var23 == 0) { if (var21 < 0) { var21 = var22; } } else if (var23 > 0) { this.sendSubPixels(var1, var2, var13, var23, var22, var13, var22 + 1, var4, var5, var15, var16); } } if (var21 >= 0) { this.sendSubPixels(var1, (int[])var2, var13, 0, var21, var13, var14, var4, var5, var15, var16); } } } void sendProlog() { if (!this.prologSent) { PSPaperSize var1 = PSPaperSize.find(this.paperDim.width, this.paperDim.height, 1); if (var1 == null) { var1 = PSPaperSize.find(this.paperDim.height, this.paperDim.width, 1); } if (this.job != null) { this.field_0.println("%!PS-Adobe-3.0"); } else { this.field_0.println("%!PS-Adobe-3.0 EPSF-3.0"); } this.field_0.println("%%Title: " + this.title); if (this.job != null) { this.field_0.println("%%Pages: (atend)"); this.field_0.println("%%PageOrder: " + (this.lastFirst ? "Special" : "Ascend")); } else { this.field_0.println("%%BoundingBox: 0 0 " + this.paperDim.width + " " + this.paperDim.height); } this.field_0.println("%%DocumentFonts: Helvetica Helvetica-Bold"); this.field_0.println("%%+Helvetica-Oblique Helvetica-BoldOblique"); this.field_0.println("%%+Times-Roman Times-Bold Times-Italic Times-BoldItalic"); this.field_0.println("%%+Courier Courier-Bold Courier-Oblique Courier-BoldOblique"); this.field_0.println("%%EndComments"); this.field_0.println("%%BeginProlog"); this.field_0.println("/BD {bind def} bind def"); this.field_0.println("/D {def} BD"); this.field_0.println("/ISOF {"); this.field_0.println("\tdup findfont dup length 1 add dict begin {"); this.field_0.println("\t\t1 index /FID eq {pop pop} {D} ifelse"); this.field_0.println("\t} forall /Encoding ISOLatin1Encoding D"); this.field_0.println("\tcurrentdict end definefont"); this.field_0.println("} BD"); this.field_0.println("/F ["); if (this.fontProps == null) { this.field_0.println("\t/Helvetica ISOF"); this.field_0.println("\t/Helvetica-Bold ISOF"); this.field_0.println("\t/Helvetica-Oblique ISOF"); this.field_0.println("\t/Helvetica-BoldOblique ISOF"); this.field_0.println("\t/Times-Roman ISOF"); this.field_0.println("\t/Times-Bold ISOF"); this.field_0.println("\t/Times-Italic ISOF"); this.field_0.println("\t/Times-BoldItalic ISOF"); this.field_0.println("\t/Courier ISOF"); this.field_0.println("\t/Courier-Bold ISOF"); this.field_0.println("\t/Courier-Oblique ISOF"); this.field_0.println("\t/Courier-BoldOblique ISOF"); } else { int var2 = Integer.parseInt(this.fontProps.getProperty("font.num", "9")); for(int var3 = 0; var3 < var2; ++var3) { this.field_0.println(" /" + this.fontProps.getProperty("font." + String.valueOf(var3), "Courier ISOF")); } } this.field_0.println("] D"); this.field_0.println("/R {4 2 roll moveto 1 index 0 rlineto"); this.field_0.println("\t0 exch rlineto neg 0 rlineto closepath} BD"); this.field_0.println("/Adict 8 dict D"); this.field_0.println("Adict /mtrx matrix put"); this.field_0.println("/A { Adict begin"); this.field_0.println(" /endangle exch D /startangle exch D"); this.field_0.println(" /yrad exch D /xrad exch D"); this.field_0.println("\t/y exch D /x exch D"); this.field_0.println(" /savematrix mtrx currentmatrix D"); this.field_0.println(" x y translate xrad yrad scale"); this.field_0.println(" 0 0 1 startangle endangle arc"); this.field_0.println(" savematrix setmatrix"); this.field_0.println(" end } BD"); this.field_0.println("/PY {"); this.field_0.println(" dup 1 ge {3 1 roll moveto} if"); this.field_0.println(" -1 2 {pop lineto} for"); this.field_0.println(" {closepath} if"); this.field_0.println("} BD"); this.field_0.println("/CL { dup 0 exch -1 1 arct} BD"); this.field_0.println("/RRdict 8 dict D"); this.field_0.println("RRdict /mtrx matrix put"); this.field_0.println("/RR {RRdict begin"); this.field_0.println(" /yrad exch D /xrad exch D"); this.field_0.println(" /height exch abs D /width exch D"); this.field_0.println(" /y exch D /x exch D"); this.field_0.println("\t/width width xrad div D /height height yrad div D"); this.field_0.println("\t/savematrix mtrx currentmatrix D"); this.field_0.println(" \tx y translate xrad yrad scale"); this.field_0.println("\t1 0 moveto width CL width 0 translate -90 rotate"); this.field_0.println(" height CL height 0 translate -90 rotate"); this.field_0.println("\twidth CL width 0 translate -90 rotate height CL closepath"); this.field_0.println("\tsavematrix setmatrix"); this.field_0.println("\tend } BD"); this.field_0.println("/" + SetColorName + " {3 {255 div 3 1 roll} repeat setrgbcolor} BD"); this.field_0.println("/" + SetFontName + " {"); this.field_0.println("\tF exch get exch scalefont setfont"); if (this.fontProps == null) { this.field_0.println("\t(" + testString + ") stringwidth pop div"); } else { this.field_0.println(" testString stringwidth pop div"); } this.field_0.println("\tcurrentfont exch scalefont setfont} BD"); this.field_0.println("/" + RectClipName + " {R clip newpath} BD"); this.field_0.println("/" + InitClipName + " {initclip} BD"); this.field_0.println("/" + RectFillName + " {R fill} BD"); this.field_0.println("/" + RectStrokeName + " {R stroke} BD"); this.field_0.println("/" + RRectFillName + " {RR fill} BD"); this.field_0.println("/" + RRectStrokeName + " {RR stroke} BD"); this.field_0.println("/" + ArcStrokeName + " {A stroke} BD"); this.field_0.println("/" + ArcFillName + " {6 -2 roll 2 copy moveto 6 2 roll A fill} BD"); this.field_0.println("/" + PolygonStrokeName + " {PY stroke} BD"); this.field_0.println("/" + PolygonFillName + " {PY eofill} BD"); this.field_0.println("/NZ {dup 1 lt {pop 1} if} BD"); this.field_0.println("/" + DrawStringName + " {"); this.field_0.println("\tmoveto 1 index stringwidth pop NZ sub"); this.field_0.println("\t1 index length 1 sub NZ div 0"); this.field_0.println("\t3 2 roll ashow} BD"); this.field_0.println("/" + DrawLineName + " {moveto lineto stroke} BD"); this.field_0.println("/" + ScaleName + " {scale} BD"); this.field_0.println("/" + StartPageName + " {/P save D} BD"); this.field_0.println("/" + EndPageName + " {showpage P restore} BD"); this.field_0.println("/" + GsaveName + " {gsave} BD"); this.field_0.println("/" + GrestoreName + " {grestore} BD"); this.field_0.println("/" + SetColormapName + " {"); this.field_0.println("\t/cmapr 256 array D"); this.field_0.println("\t/cmapg 256 array D"); this.field_0.println("\t/cmapb 256 array D"); this.field_0.println("\t/cmapgray null D"); this.field_0.println("\t3 string exch 0 exch 1 exch 1 sub {"); this.field_0.println("\t\tcurrentfile 2 index readhexstring pop"); this.field_0.println("\t\tcmapr 2 index 2 index 0 get put"); this.field_0.println("\t\tcmapg 2 index 2 index 1 get put"); this.field_0.println("\t\tcmapb 2 index 2 index 2 get put"); this.field_0.println("\tpop pop } for pop"); this.field_0.println("} BD"); this.field_0.println("/" + DrawIndexImageName + " {"); this.field_0.println("\tGS"); this.field_0.println("\t/imgsave save D"); this.field_0.println("\ttranslate scale"); this.field_0.println("\t/imgh exch D"); this.field_0.println("\t/imgw exch D"); this.field_0.println("\t/imgy exch neg D"); this.field_0.println("\t/imgx exch neg D"); this.field_0.println("\t/imgstr imgw string D"); this.field_0.println("\t/colorimage where {"); this.field_0.println("\t\tpop"); this.field_0.println("\t\t/cimgstr imgw 3 mul string D"); this.field_0.println("\t\timgw imgh 8 [imgw 0 0 imgh neg imgx imgy] {"); this.field_0.println("\t\t\tcurrentfile imgstr readhexstring pop"); this.field_0.println("\t\t\t0 1 imgw 1 sub {"); this.field_0.println("\t\t\t\t2 copy get"); this.field_0.println("\t\t\t\tcmapr 1 index get"); this.field_0.println("\t\t\t\tcimgstr exch 3 index"); this.field_0.println("\t\t\t\t3 mul exch put"); this.field_0.println("\t\t\t\tcmapg 1 index get"); this.field_0.println("\t\t\t\tcimgstr exch 3 index"); this.field_0.println("\t\t\t\t3 mul 1 add exch put"); this.field_0.println("\t\t\t\tcmapb 1 index get"); this.field_0.println("\t\t\t\tcimgstr exch 3 index"); this.field_0.println("\t\t\t\t3 mul 2 add exch put"); this.field_0.println("\t\t\tpop pop } for pop cimgstr"); this.field_0.println("\t\t} false 3 colorimage"); this.field_0.println("\t} {"); this.field_0.println("\t\tcmapgray null eq {"); this.field_0.println("\t\t\t/cmapgray cmapr length array D"); this.field_0.println("\t\t\t0 1 cmapr length 1 sub {"); this.field_0.println("\t\t\t\tcmapgray exch"); this.field_0.println("\t\t\t\tcmapr 1 index get .299 mul"); this.field_0.println("\t\t\t\tcmapg 2 index get .587 mul"); this.field_0.println("\t\t\t\tcmapb 3 index get .114 mul"); this.field_0.println("\t\t\t\tadd add cvi put"); this.field_0.println("\t\t\t} for"); this.field_0.println("\t\t} if"); this.field_0.println("\t\timgw imgh 8 [imgw 0 0 imgh neg 0 0] {"); this.field_0.println("\t\t\tcurrentfile imgstr readhexstring pop"); this.field_0.println("\t\t\t0 1 imgw 1 sub {"); this.field_0.println("\t\t\t\timgstr exch 2 copy get"); this.field_0.println("\t\t\t\tcmapgray exch get put"); this.field_0.println("\t\t\t} for"); this.field_0.println("\t\t} image"); this.field_0.println("\t} ifelse"); this.field_0.println("\timgsave restore"); this.field_0.println("\tGR"); this.field_0.println("} BD"); this.field_0.println("/" + DrawImageName + " {"); this.field_0.println("\tGS"); this.field_0.println("\t/imgsave save D"); this.field_0.println("\ttranslate scale"); this.field_0.println("\t/imgh exch D"); this.field_0.println("\t/imgw exch D"); this.field_0.println("\t/imgy exch neg D"); this.field_0.println("\t/imgx exch neg D"); this.field_0.println("\t/imgstr imgw 3 mul string D"); this.field_0.println("\timgw imgh 8 [imgw 0 0 imgh neg imgx imgy] {"); this.field_0.println("\t\tcurrentfile imgstr readhexstring pop"); this.field_0.println("\t} bind false 3 colorimage"); this.field_0.println(" imgsave restore"); this.field_0.println(" GR"); this.field_0.println("} BD"); this.field_0.println("%%EndProlog"); this.field_0.println("%%BeginSetup"); if (var1 != null) { this.field_0.println(var1.toPostScriptCode(1, false)); } if (this.job != null && this.paperDim.width > this.paperDim.height) { this.field_0.println("90 rotate 0 " + -this.paperDim.height + " translate"); } this.field_0.println("%%EndSetup"); this.field_0.flush(); this.prologSent = true; } } }