home *** CD-ROM | disk | FTP | other *** search
- package sun.java2d;
-
- import java.awt.Color;
- import java.awt.Graphics;
- import java.awt.Graphics2D;
- import java.awt.Rectangle;
- import java.awt.Shape;
- import java.awt.geom.AffineTransform;
- import java.awt.geom.Rectangle2D;
- import java.awt.geom.RectangularShape;
- import java.awt.image.BufferedImage;
- import java.awt.print.Book;
- import java.awt.print.PageFormat;
- import java.awt.print.Pageable;
- import java.awt.print.Paper;
- import java.awt.print.Printable;
- import java.awt.print.PrinterAbortException;
- import java.awt.print.PrinterException;
- import java.awt.print.PrinterJob;
- import java.io.FilePermission;
- import java.util.ArrayList;
- import sun.awt.image.ByteInterleavedRaster;
-
- public abstract class RasterPrinterJob extends PrinterJob {
- private static final int MAX_BAND_SIZE = 524288;
- private int mNumCopies = 1;
- private boolean mCollate = false;
- private int mFirstPage = -1;
- private int mLastPage = -1;
- private Pageable mDocument = new Book();
- private String mDocName = new String("Java Printing");
- private boolean performingPrinting = false;
- private boolean userCancelled = false;
- private FilePermission printToFilePermission;
- private ArrayList redrawList = new ArrayList();
-
- protected abstract double getXRes();
-
- protected abstract double getYRes();
-
- protected abstract double getPhysicalPrintableX(Paper var1);
-
- protected abstract double getPhysicalPrintableY(Paper var1);
-
- protected abstract double getPhysicalPrintableWidth(Paper var1);
-
- protected abstract double getPhysicalPrintableHeight(Paper var1);
-
- protected abstract double getPhysicalPageWidth(Paper var1);
-
- protected abstract double getPhysicalPageHeight(Paper var1);
-
- protected abstract void startPage(PageFormat var1, Printable var2, int var3) throws PrinterException;
-
- protected abstract void endPage(PageFormat var1, Printable var2, int var3) throws PrinterException;
-
- protected abstract void printBand(byte[] var1, int var2, int var3, int var4, int var5) throws PrinterException;
-
- public void saveState(AffineTransform var1, Shape var2, Rectangle2D var3, double var4, double var6, Rectangle2D var8, AffineTransform var9) {
- GraphicsState var10 = new GraphicsState(this, (1)null);
- var10.theTransform = var1;
- var10.theClip = var2;
- var10.region = var3;
- var10.sx = var4;
- var10.sy = var6;
- var10.imageTransform = var9;
- var10.imageSrcRect = var8;
- this.redrawList.add(var10);
- }
-
- public void setPrintable(Printable var1) {
- this.setPageable(new OpenBook(this.defaultPage(new PageFormat()), var1));
- }
-
- public void setPrintable(Printable var1, PageFormat var2) {
- this.setPageable(new OpenBook(var2, var1));
- }
-
- public void setPageable(Pageable var1) throws NullPointerException {
- if (var1 != null) {
- this.mDocument = var1;
- } else {
- throw new NullPointerException();
- }
- }
-
- protected void initPrinter() {
- }
-
- public void print() throws PrinterException {
- this.initPrinter();
- int var1 = this.getCollatedCopies();
- int var2 = this.getNoncollatedCopies();
- int var3 = this.mDocument.getNumberOfPages();
- int var4 = this.getFirstPage();
- int var5 = this.getLastPage();
- if (var5 == -1) {
- int var6 = this.mDocument.getNumberOfPages();
- if (var6 != -1) {
- var5 = this.mDocument.getNumberOfPages() - 1;
- }
- }
-
- try {
- synchronized(this) {
- this.performingPrinting = true;
- this.userCancelled = false;
- }
-
- this.startDoc();
- if (this.isCancelled()) {
- this.cancelDoc();
- }
-
- for(int var7 = 0; var7 < var1; ++var7) {
- int var8 = var4;
-
- for(int var9 = 0; (var8 <= var5 || var5 == -1) && var9 == 0; ++var8) {
- for(int var10 = 0; var10 < var2 && var9 == 0; ++var10) {
- if (this.isCancelled()) {
- this.cancelDoc();
- }
-
- var9 = this.printPage(this.mDocument, var8);
- }
- }
- }
-
- if (this.isCancelled()) {
- this.cancelDoc();
- }
- } finally {
- synchronized(this) {
- if (this.performingPrinting) {
- this.endDoc();
- }
-
- this.performingPrinting = false;
- this.notify();
- }
- }
-
- }
-
- protected void validatePaper(Paper var1, Paper var2) {
- if (var1 != null && var2 != null) {
- double var3 = var1.getWidth();
- double var5 = var1.getHeight();
- double var7 = var1.getImageableX();
- double var9 = var1.getImageableY();
- double var11 = var1.getImageableWidth();
- double var13 = var1.getImageableHeight();
- Paper var15 = new Paper();
- var3 = var3 > (double)0.0F ? var3 : var15.getWidth();
- var5 = var5 > (double)0.0F ? var5 : var15.getHeight();
- var7 = var7 > (double)0.0F ? var7 : var15.getImageableX();
- var9 = var9 > (double)0.0F ? var9 : var15.getImageableY();
- var11 = var11 > (double)0.0F ? var11 : var15.getImageableWidth();
- var13 = var13 > (double)0.0F ? var13 : var15.getImageableHeight();
- if (var11 > var3) {
- var11 = var3;
- }
-
- if (var13 > var5) {
- var13 = var5;
- }
-
- if (var7 + var11 > var3) {
- var7 = var3 - var11;
- }
-
- if (var9 + var13 > var5) {
- var9 = var5 - var13;
- }
-
- var2.setSize(var3, var5);
- var2.setImageableArea(var7, var9, var11, var13);
- }
- }
-
- public PageFormat defaultPage(PageFormat var1) {
- PageFormat var2 = (PageFormat)var1.clone();
- var2.setOrientation(1);
- Paper var3 = new Paper();
- var2.setPaper(var3);
- return var2;
- }
-
- public PageFormat validatePage(PageFormat var1) {
- PageFormat var2 = (PageFormat)var1.clone();
- Paper var3 = new Paper();
- this.validatePaper(var2.getPaper(), var3);
- var2.setPaper(var3);
- return var2;
- }
-
- public void setCopies(int var1) {
- this.mNumCopies = var1;
- }
-
- public int getCopies() {
- return this.mNumCopies;
- }
-
- public String getUserName() {
- return System.getProperty("user.name");
- }
-
- public void setJobName(String var1) {
- if (var1 != null) {
- this.mDocName = var1;
- } else {
- throw new NullPointerException();
- }
- }
-
- public String getJobName() {
- return this.mDocName;
- }
-
- protected void setPageRange(int var1, int var2) {
- if (var1 >= 0 && var2 >= 0) {
- this.mFirstPage = var1;
- this.mLastPage = var2;
- if (this.mLastPage < this.mFirstPage) {
- this.mLastPage = this.mFirstPage;
- }
- } else {
- this.mFirstPage = -1;
- this.mLastPage = -1;
- }
-
- }
-
- protected int getFirstPage() {
- return this.mFirstPage == -1 ? 0 : this.mFirstPage;
- }
-
- protected int getLastPage() {
- return this.mLastPage;
- }
-
- protected void setCollated(boolean var1) {
- this.mCollate = var1;
- }
-
- protected boolean isCollated() {
- return this.mCollate;
- }
-
- protected abstract void startDoc() throws PrinterException;
-
- protected abstract void endDoc() throws PrinterException;
-
- protected abstract void abortDoc();
-
- private void cancelDoc() throws PrinterAbortException {
- this.abortDoc();
- synchronized(this) {
- this.userCancelled = false;
- this.performingPrinting = false;
- this.notify();
- }
-
- throw new PrinterAbortException();
- }
-
- protected int getCollatedCopies() {
- return this.isCollated() ? this.getCopies() : 1;
- }
-
- protected int getNoncollatedCopies() {
- return this.isCollated() ? 1 : this.getCopies();
- }
-
- protected int printPage(Pageable var1, int var2) throws PrinterException {
- PageFormat var3 = var1.getPageFormat(var2);
- Printable var4 = var1.getPrintable(var2);
- Paper var5 = var3.getPaper();
- double var6 = this.getXRes() / (double)72.0F;
- double var8 = this.getYRes() / (double)72.0F;
- Rectangle2D.Double var10 = new Rectangle2D.Double(var5.getImageableX() * var6, var5.getImageableY() * var8, var5.getImageableWidth() * var6, var5.getImageableHeight() * var8);
- AffineTransform var11 = new AffineTransform();
- AffineTransform var12 = new AffineTransform();
- var12.scale(var6, var8);
- int var13 = (int)((RectangularShape)var10).getWidth();
- var13 += var13 % 4;
- int var14 = (int)((RectangularShape)var10).getHeight();
- int var15 = 524288 / var14 / 3;
- int var16 = (int)(var5.getImageableX() * var6);
- int var17 = (int)(var5.getImageableY() * var8);
- AffineTransform var18 = new AffineTransform();
- var18.translate((double)(-var16), (double)var17);
- var18.translate((double)0.0F, (double)var15);
- var18.scale((double)1.0F, (double)-1.0F);
- BufferedImage var19 = new BufferedImage(var13, var15, 5);
- PeekGraphics var20 = this.createPeekGraphics(var19.createGraphics(), this);
- Rectangle2D.Double var21 = new Rectangle2D.Double(var3.getImageableX(), var3.getImageableY(), var3.getImageableWidth(), var3.getImageableHeight());
- this.initPrinterGraphics(var20, var21);
- int var22 = var4.print(var20, var3, var2);
- if (var22 == 0) {
- this.startPage(var3, var4, var2);
- Graphics2D var23 = this.createPathGraphics(var20, this, var4, var3, var2);
- if (var23 != null) {
- var23.transform(var12);
- var23.translate(-this.getPhysicalPrintableX(var5) / var6, -this.getPhysicalPrintableY(var5) / var8);
- var23.transform(new AffineTransform(var3.getMatrix()));
- this.initPrinterGraphics(var23, var21);
- this.redrawList.clear();
- var4.print(var23, var3, var2);
-
- for(int var34 = 0; var34 < this.redrawList.size(); ++var34) {
- GraphicsState var35 = (GraphicsState)this.redrawList.get(var34);
- var23.setTransform(var35.theTransform);
- ((Graphics)var23).setClip(var35.theClip);
- ((PathGraphics)var23).redrawRegion(var35.region, var35.sx, var35.sy, var35.imageSrcRect, var35.imageTransform);
- }
- } else {
- Graphics2D var24 = var19.createGraphics();
- Rectangle2D.Double var25 = new Rectangle2D.Double((double)0.0F, (double)0.0F, (double)var13, (double)var15);
- this.initPrinterGraphics(var24, var25);
- ProxyGraphics2D var26 = new ProxyGraphics2D(var24, this);
- Graphics2D var27 = var19.createGraphics();
- ((Graphics)var27).setColor(Color.white);
- ByteInterleavedRaster var28 = (ByteInterleavedRaster)var19.getRaster();
- byte[] var29 = var28.getDataStorage();
- int var10000 = var17 + var14;
-
- for(int var31 = 0; var31 <= var14; var31 += var15) {
- ((Graphics)var27).fillRect(0, 0, var13, var15);
- var24.setTransform(var11);
- var24.transform(var18);
- var18.translate((double)0.0F, (double)(-var15));
- var24.transform(var12);
- var24.transform(new AffineTransform(var3.getMatrix()));
- Rectangle var32 = ((Graphics)var24).getClipBounds();
- if (var20.hitsDrawingArea(var32)) {
- var26.setDelegate((Graphics2D)((Graphics)var24).create());
- var4.print(var26, var3, var2);
- var26.dispose();
- this.printBand(var29, var16, var17 + var31, var13, var15);
- }
- }
-
- ((Graphics)var27).dispose();
- ((Graphics)var24).dispose();
- }
-
- this.endPage(var3, var4, var2);
- }
-
- return var22;
- }
-
- public void cancel() {
- synchronized(this) {
- if (this.performingPrinting) {
- this.userCancelled = true;
- }
-
- this.notify();
- }
- }
-
- public boolean isCancelled() {
- boolean var1 = false;
- synchronized(this) {
- var1 = this.performingPrinting && this.userCancelled;
- this.notify();
- return var1;
- }
- }
-
- protected Pageable getPageable() {
- return this.mDocument;
- }
-
- protected Graphics2D createPathGraphics(PeekGraphics var1, PrinterJob var2, Printable var3, PageFormat var4, int var5) {
- return null;
- }
-
- protected PeekGraphics createPeekGraphics(Graphics2D var1, PrinterJob var2) {
- return new PeekGraphics(var1, var2);
- }
-
- void initPrinterGraphics(Graphics2D var1, Rectangle2D var2) {
- ((Graphics)var1).setClip(var2);
- var1.setPaint(Color.black);
- }
-
- public boolean checkAllowedToPrintToFile() {
- try {
- this.throwPrintToFile();
- return true;
- } catch (SecurityException var2) {
- return false;
- }
- }
-
- private void throwPrintToFile() {
- SecurityManager var1 = System.getSecurityManager();
- if (var1 != null) {
- if (this.printToFilePermission == null) {
- this.printToFilePermission = new FilePermission("<<ALL FILES>>", "read,write");
- }
-
- var1.checkPermission(this.printToFilePermission);
- }
-
- }
- }
-