src/share/classes/sun/java2d/pipe/DrawImage.java
Print this page
*** 25,54 ****
package sun.java2d.pipe;
import java.awt.AlphaComposite;
import java.awt.Color;
- import java.awt.Graphics2D;
import java.awt.Image;
- import java.awt.Rectangle;
import java.awt.Transparency;
import java.awt.geom.AffineTransform;
import java.awt.geom.NoninvertibleTransformException;
import java.awt.image.AffineTransformOp;
import java.awt.image.BufferedImage;
import java.awt.image.BufferedImageOp;
import java.awt.image.ColorModel;
import java.awt.image.DataBuffer;
- import java.awt.image.DirectColorModel;
import java.awt.image.ImageObserver;
import java.awt.image.IndexColorModel;
import java.awt.image.Raster;
import java.awt.image.VolatileImage;
- import java.awt.image.WritableRaster;
- import java.awt.image.ImagingOpException;
import sun.awt.SunHints;
import sun.awt.image.ImageRepresentation;
import sun.awt.image.ToolkitImage;
import sun.java2d.InvalidPipeException;
import sun.java2d.SunGraphics2D;
import sun.java2d.SurfaceData;
import sun.java2d.loops.Blit;
--- 25,50 ----
package sun.java2d.pipe;
import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Image;
import java.awt.Transparency;
import java.awt.geom.AffineTransform;
import java.awt.geom.NoninvertibleTransformException;
import java.awt.image.AffineTransformOp;
import java.awt.image.BufferedImage;
import java.awt.image.BufferedImageOp;
import java.awt.image.ColorModel;
import java.awt.image.DataBuffer;
import java.awt.image.ImageObserver;
import java.awt.image.IndexColorModel;
import java.awt.image.Raster;
import java.awt.image.VolatileImage;
import sun.awt.SunHints;
import sun.awt.image.ImageRepresentation;
+ import sun.awt.image.SurfaceManager;
import sun.awt.image.ToolkitImage;
import sun.java2d.InvalidPipeException;
import sun.java2d.SunGraphics2D;
import sun.java2d.SurfaceData;
import sun.java2d.loops.Blit;
*** 321,339 ****
* color with a SrcOver operation, otherwise make a SrcNoEa copy.
*/
BufferedImage makeBufferedImage(Image img, Color bgColor, int type,
int sx1, int sy1, int sx2, int sy2)
{
! BufferedImage bimg = new BufferedImage(sx2-sx1, sy2-sy1, type);
! Graphics2D g2d = bimg.createGraphics();
g2d.setComposite(AlphaComposite.Src);
if (bgColor != null) {
g2d.setColor(bgColor);
! g2d.fillRect(0, 0, sx2-sx1, sy2-sy1);
g2d.setComposite(AlphaComposite.SrcOver);
}
! g2d.drawImage(img, -sx1, -sy1, null);
g2d.dispose();
return bimg;
}
protected void renderImageXform(SunGraphics2D sg, Image img,
--- 317,337 ----
* color with a SrcOver operation, otherwise make a SrcNoEa copy.
*/
BufferedImage makeBufferedImage(Image img, Color bgColor, int type,
int sx1, int sy1, int sx2, int sy2)
{
! final int width = sx2 - sx1;
! final int height = sy2 - sy1;
! final BufferedImage bimg = new BufferedImage(width, height, type);
! final SunGraphics2D g2d = (SunGraphics2D) bimg.createGraphics();
g2d.setComposite(AlphaComposite.Src);
if (bgColor != null) {
g2d.setColor(bgColor);
! g2d.fillRect(0, 0, width, height);
g2d.setComposite(AlphaComposite.SrcOver);
}
! g2d.copyImage(img, 0, 0, sx1, sy1, width, height, null, null);
g2d.dispose();
return bimg;
}
protected void renderImageXform(SunGraphics2D sg, Image img,
*** 735,746 ****
double m00 = (double)(dx2-dx1)/(sx2-sx1);
double m11 = (double)(dy2-dy1)/(sy2-sy1);
atfm.scale(m00, m11);
atfm.translate(srcX-sx1, srcY-sy1);
! int imgW = img.getWidth(null);
! int imgH = img.getHeight(null);
srcW += srcX;
srcH += srcY;
// Make sure we are not out of bounds
if (srcW > imgW) {
srcW = imgW;
--- 733,745 ----
double m00 = (double)(dx2-dx1)/(sx2-sx1);
double m11 = (double)(dy2-dy1)/(sy2-sy1);
atfm.scale(m00, m11);
atfm.translate(srcX-sx1, srcY-sy1);
! final int scale = SurfaceManager.getImageScale(img);
! final int imgW = img.getWidth(null) * scale;
! final int imgH = img.getHeight(null) * scale;
srcW += srcX;
srcH += srcY;
// Make sure we are not out of bounds
if (srcW > imgW) {
srcW = imgW;