home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / sun / print / PSPathGraphics.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  7.8 KB  |  300 lines

  1. package sun.print;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Font;
  5. import java.awt.Graphics;
  6. import java.awt.Graphics2D;
  7. import java.awt.Image;
  8. import java.awt.Shape;
  9. import java.awt.font.FontRenderContext;
  10. import java.awt.font.TextLayout;
  11. import java.awt.geom.AffineTransform;
  12. import java.awt.geom.Area;
  13. import java.awt.geom.Line2D;
  14. import java.awt.geom.PathIterator;
  15. import java.awt.geom.Point2D;
  16. import java.awt.geom.Rectangle2D;
  17. import java.awt.image.BufferedImage;
  18. import java.awt.image.ImageObserver;
  19. import java.awt.print.PageFormat;
  20. import java.awt.print.Printable;
  21. import java.awt.print.PrinterException;
  22. import java.awt.print.PrinterJob;
  23. import sun.awt.image.ByteComponentRaster;
  24.  
  25. class PSPathGraphics extends PathGraphics {
  26.    private static final int DEFAULT_USER_RES = 72;
  27.  
  28.    PSPathGraphics(Graphics2D var1, PrinterJob var2, Printable var3, PageFormat var4, int var5, boolean var6) {
  29.       super(var1, var2, var3, var4, var5, var6);
  30.    }
  31.  
  32.    public Graphics create() {
  33.       return new PSPathGraphics((Graphics2D)this.getDelegate().create(), this.getPrinterJob(), this.getPrintable(), this.getPageFormat(), this.getPageIndex(), this.canDoRedraws());
  34.    }
  35.  
  36.    public void fill(Shape var1, Color var2) {
  37.       this.deviceFill(var1.getPathIterator(new AffineTransform()), var2);
  38.    }
  39.  
  40.    public void drawString(String var1, int var2, int var3) {
  41.       this.drawString(var1, (float)var2, (float)var3);
  42.    }
  43.  
  44.    public void drawString(String var1, float var2, float var3) {
  45.       this.drawString(var1, var2, var3, this.getFont(), this.getFontRenderContext(), 0.0F);
  46.    }
  47.  
  48.    protected boolean canDrawStringToWidth() {
  49.       return true;
  50.    }
  51.  
  52.    protected int platformFontCount(Font var1, String var2) {
  53.       PSPrinterJob var3 = (PSPrinterJob)this.getPrinterJob();
  54.       return var3.platformFontCount(var1, var2);
  55.    }
  56.  
  57.    protected void drawString(String var1, float var2, float var3, Font var4, FontRenderContext var5, float var6) {
  58.       if (var1.length() != 0) {
  59.          if (var4.hasLayoutAttributes() && !this.printingGlyphVector) {
  60.             TextLayout var16 = new TextLayout(var1, var4, var5);
  61.             var16.draw(this, var2, var3);
  62.          } else {
  63.             Font var7 = this.getFont();
  64.             if (!var7.equals(var4)) {
  65.                this.setFont(var4);
  66.             } else {
  67.                var7 = null;
  68.             }
  69.  
  70.             boolean var8 = false;
  71.             float var9 = 0.0F;
  72.             float var10 = 0.0F;
  73.             boolean var11 = this.getFont().isTransformed();
  74.             if (var11) {
  75.                AffineTransform var12 = this.getFont().getTransform();
  76.                int var13 = var12.getType();
  77.                if (var13 == 1) {
  78.                   var9 = (float)var12.getTranslateX();
  79.                   var10 = (float)var12.getTranslateY();
  80.                   if ((double)Math.abs(var9) < 1.0E-5) {
  81.                      var9 = 0.0F;
  82.                   }
  83.  
  84.                   if ((double)Math.abs(var10) < 1.0E-5) {
  85.                      var10 = 0.0F;
  86.                   }
  87.  
  88.                   var11 = false;
  89.                }
  90.             }
  91.  
  92.             boolean var17 = !var11;
  93.             if (!PSPrinterJob.shapeTextProp && var17) {
  94.                PSPrinterJob var18 = (PSPrinterJob)this.getPrinterJob();
  95.                if (var18.setFont(this.getFont())) {
  96.                   try {
  97.                      var18.setColor((Color)this.getPaint());
  98.                   } catch (ClassCastException var15) {
  99.                      if (var7 != null) {
  100.                         this.setFont(var7);
  101.                      }
  102.  
  103.                      throw new IllegalArgumentException("Expected a Color instance");
  104.                   }
  105.  
  106.                   var18.setTransform(this.getTransform());
  107.                   var18.setClip(this.getClip());
  108.                   var8 = var18.textOut(this, var1, var2 + var9, var3 + var10, var4, var5, var6);
  109.                }
  110.             }
  111.  
  112.             if (!var8) {
  113.                if (var7 != null) {
  114.                   this.setFont(var7);
  115.                   var7 = null;
  116.                }
  117.  
  118.                super.drawString(var1, var2, var3, var4, var5, var6);
  119.             }
  120.  
  121.             if (var7 != null) {
  122.                this.setFont(var7);
  123.             }
  124.  
  125.          }
  126.       }
  127.    }
  128.  
  129.    protected boolean drawImageToPlatform(Image var1, AffineTransform var2, Color var3, int var4, int var5, int var6, int var7, boolean var8) {
  130.       BufferedImage var9 = this.getBufferedImage(var1);
  131.       if (var9 == null) {
  132.          return true;
  133.       } else {
  134.          PSPrinterJob var10 = (PSPrinterJob)this.getPrinterJob();
  135.          AffineTransform var11 = this.getTransform();
  136.          if (var2 == null) {
  137.             var2 = new AffineTransform();
  138.          }
  139.  
  140.          var11.concatenate(var2);
  141.          double[] var12 = new double[6];
  142.          var11.getMatrix(var12);
  143.          Point2D.Float var13 = new Point2D.Float(1.0F, 0.0F);
  144.          Point2D.Float var14 = new Point2D.Float(0.0F, 1.0F);
  145.          var11.deltaTransform(var13, var13);
  146.          var11.deltaTransform(var14, var14);
  147.          Point2D.Float var15 = new Point2D.Float(0.0F, 0.0F);
  148.          double var16 = var13.distance(var15);
  149.          double var18 = var14.distance(var15);
  150.          double var20 = var10.getXRes();
  151.          double var22 = var10.getYRes();
  152.          double var24 = var20 / (double)72.0F;
  153.          double var26 = var22 / (double)72.0F;
  154.          if (var16 > var24) {
  155.             var16 = var24;
  156.          }
  157.  
  158.          if (var18 > var26) {
  159.             var18 = var26;
  160.          }
  161.  
  162.          if (var16 != (double)0.0F && var18 != (double)0.0F) {
  163.             AffineTransform var28 = new AffineTransform(var12[0] / var16, var12[1] / var18, var12[2] / var16, var12[3] / var18, var12[4] / var16, var12[5] / var18);
  164.             Rectangle2D.Float var29 = new Rectangle2D.Float((float)var4, (float)var5, (float)var6, (float)var7);
  165.             Shape var30 = var28.createTransformedShape(var29);
  166.             Rectangle2D var31 = var30.getBounds2D();
  167.             var31.setRect(var31.getX(), var31.getY(), var31.getWidth() + 0.001, var31.getHeight() + 0.001);
  168.             int var32 = (int)var31.getWidth();
  169.             int var33 = (int)var31.getHeight();
  170.             if (var32 > 0 && var33 > 0) {
  171.                boolean var34 = true;
  172.                if (!var8 && this.hasTransparentPixels(var9)) {
  173.                   var34 = false;
  174.                   if (this.isBitmaskTransparency(var9)) {
  175.                      if (var3 == null) {
  176.                         if (this.drawBitmaskImage(var9, var2, var3, var4, var5, var6, var7)) {
  177.                            return true;
  178.                         }
  179.                      } else if (var3.getTransparency() == 1) {
  180.                         var34 = true;
  181.                      }
  182.                   }
  183.  
  184.                   if (!this.canDoRedraws()) {
  185.                      var34 = true;
  186.                   }
  187.                } else {
  188.                   var3 = null;
  189.                }
  190.  
  191.                if ((var4 + var6 > var9.getWidth((ImageObserver)null) || var5 + var7 > var9.getHeight((ImageObserver)null)) && this.canDoRedraws()) {
  192.                   var34 = false;
  193.                }
  194.  
  195.                if (!var34) {
  196.                   var11.getMatrix(var12);
  197.                   new AffineTransform(var12[0] / var24, var12[1] / var26, var12[2] / var24, var12[3] / var26, var12[4] / var24, var12[5] / var26);
  198.                   Rectangle2D.Float var48 = new Rectangle2D.Float((float)var4, (float)var5, (float)var6, (float)var7);
  199.                   Shape var49 = var11.createTransformedShape(var48);
  200.                   Rectangle2D var50 = var49.getBounds2D();
  201.                   var50.setRect(var50.getX(), var50.getY(), var50.getWidth() + 0.001, var50.getHeight() + 0.001);
  202.                   int var51 = (int)var50.getWidth();
  203.                   int var52 = (int)var50.getHeight();
  204.                   int var53 = var51 * var52 * 3;
  205.                   int var54 = 8388608;
  206.                   double var55 = var20 < var22 ? var20 : var22;
  207.                   int var45 = (int)var55;
  208.  
  209.                   double var46;
  210.                   for(var46 = (double)1.0F; var53 > var54 && var45 > 72; var53 /= 4) {
  211.                      var46 *= (double)2.0F;
  212.                      var45 /= 2;
  213.                   }
  214.  
  215.                   if (var45 < 72) {
  216.                      var46 = var55 / (double)72.0F;
  217.                   }
  218.  
  219.                   var50.setRect(var50.getX() / var46, var50.getY() / var46, var50.getWidth() / var46, var50.getHeight() / var46);
  220.                   var10.saveState(this.getTransform(), this.getClip(), var50, var46, var46);
  221.                   return true;
  222.                }
  223.  
  224.                BufferedImage var35 = new BufferedImage((int)var31.getWidth(), (int)var31.getHeight(), 5);
  225.                Graphics2D var36 = var35.createGraphics();
  226.                var36.clipRect(0, 0, var35.getWidth(), var35.getHeight());
  227.                var36.translate(-var31.getX(), -var31.getY());
  228.                var36.transform(var28);
  229.                if (var3 == null) {
  230.                   var3 = Color.white;
  231.                }
  232.  
  233.                var36.drawImage(var9, var4, var5, var4 + var6, var5 + var7, var4, var5, var4 + var6, var5 + var7, var3, (ImageObserver)null);
  234.                Shape var37 = this.getClip();
  235.                Shape var38 = this.getTransform().createTransformedShape(var37);
  236.                AffineTransform var39 = AffineTransform.getScaleInstance(var16, var18);
  237.                Shape var40 = var39.createTransformedShape(var30);
  238.                Area var41 = new Area(var40);
  239.                Area var42 = new Area(var38);
  240.                var41.intersect(var42);
  241.                var10.setClip(var41);
  242.                Rectangle2D.Float var43 = new Rectangle2D.Float((float)(var31.getX() * var16), (float)(var31.getY() * var18), (float)(var31.getWidth() * var16), (float)(var31.getHeight() * var18));
  243.                ByteComponentRaster var44 = (ByteComponentRaster)var35.getRaster();
  244.                var10.drawImageBGR(var44.getDataStorage(), var43.x, var43.y, (float)Math.rint((double)var43.width + (double)0.5F), (float)Math.rint((double)var43.height + (double)0.5F), 0.0F, 0.0F, (float)var35.getWidth(), (float)var35.getHeight(), var35.getWidth(), var35.getHeight());
  245.                var10.setClip(this.getTransform().createTransformedShape(var37));
  246.                var36.dispose();
  247.             }
  248.          }
  249.  
  250.          return true;
  251.       }
  252.    }
  253.  
  254.    public void redrawRegion(Rectangle2D var1, double var2, double var4, Shape var6, AffineTransform var7) throws PrinterException {
  255.       PSPrinterJob var8 = (PSPrinterJob)this.getPrinterJob();
  256.       Printable var9 = this.getPrintable();
  257.       PageFormat var10 = this.getPageFormat();
  258.       int var11 = this.getPageIndex();
  259.       BufferedImage var12 = new BufferedImage((int)var1.getWidth(), (int)var1.getHeight(), 5);
  260.       Graphics2D var13 = var12.createGraphics();
  261.       ProxyGraphics2D var14 = new ProxyGraphics2D(var13, var8);
  262.       var14.setColor(Color.white);
  263.       var14.fillRect(0, 0, var12.getWidth(), var12.getHeight());
  264.       var14.clipRect(0, 0, var12.getWidth(), var12.getHeight());
  265.       var14.translate(-var1.getX(), -var1.getY());
  266.       float var15 = (float)(var8.getXRes() / var2);
  267.       float var16 = (float)(var8.getYRes() / var4);
  268.       var14.scale((double)(var15 / 72.0F), (double)(var16 / 72.0F));
  269.       var14.translate(-var8.getPhysicalPrintableX(var10.getPaper()) / var8.getXRes() * (double)72.0F, -var8.getPhysicalPrintableY(var10.getPaper()) / var8.getYRes() * (double)72.0F);
  270.       var14.transform(new AffineTransform(this.getPageFormat().getMatrix()));
  271.       var14.setPaint(Color.black);
  272.       var9.print(var14, var10, var11);
  273.       var13.dispose();
  274.       var8.setClip(var7.createTransformedShape(var6));
  275.       Rectangle2D.Float var17 = new Rectangle2D.Float((float)(var1.getX() * var2), (float)(var1.getY() * var4), (float)(var1.getWidth() * var2), (float)(var1.getHeight() * var4));
  276.       ByteComponentRaster var18 = (ByteComponentRaster)var12.getRaster();
  277.       var8.drawImageBGR(var18.getDataStorage(), var17.x, var17.y, var17.width, var17.height, 0.0F, 0.0F, (float)var12.getWidth(), (float)var12.getHeight(), var12.getWidth(), var12.getHeight());
  278.    }
  279.  
  280.    protected void deviceFill(PathIterator var1, Color var2) {
  281.       PSPrinterJob var3 = (PSPrinterJob)this.getPrinterJob();
  282.       var3.deviceFill(var1, var2, this.getTransform(), this.getClip());
  283.    }
  284.  
  285.    protected void deviceFrameRect(int var1, int var2, int var3, int var4, Color var5) {
  286.       this.draw(new Rectangle2D.Float((float)var1, (float)var2, (float)var3, (float)var4));
  287.    }
  288.  
  289.    protected void deviceDrawLine(int var1, int var2, int var3, int var4, Color var5) {
  290.       this.draw(new Line2D.Float((float)var1, (float)var2, (float)var3, (float)var4));
  291.    }
  292.  
  293.    protected void deviceFillRect(int var1, int var2, int var3, int var4, Color var5) {
  294.       this.fill(new Rectangle2D.Float((float)var1, (float)var2, (float)var3, (float)var4));
  295.    }
  296.  
  297.    protected void deviceClip(PathIterator var1) {
  298.    }
  299. }
  300.