< prev index next >

src/java.desktop/share/classes/sun/java2d/pipe/DrawImage.java

Print this page




 719         {
 720             double ddx1 = dstX + sg.transX;
 721             double ddy1 = dstY + sg.transY;
 722             double ddx2 = ddx1 + dstW;
 723             double ddy2 = ddy1 + dstH;
 724             if (renderImageScale(sg, img, bgColor, sg.interpolationType,
 725                                  srcX, srcY, srcX+srcW, srcY+srcH,
 726                                  ddx1, ddy1, ddx2, ddy2))
 727             {
 728                 return true;
 729             }
 730         }
 731 
 732         AffineTransform atfm = new AffineTransform(sg.transform);
 733         atfm.translate(dx1, dy1);
 734         double m00 = (double)(dx2-dx1)/(sx2-sx1);
 735         double m11 = (double)(dy2-dy1)/(sy2-sy1);
 736         atfm.scale(m00, m11);
 737         atfm.translate(srcX-sx1, srcY-sy1);
 738 
 739         final int scale = SurfaceManager.getImageScale(img);
 740         final int imgW = img.getWidth(null) * scale;
 741         final int imgH = img.getHeight(null) * scale;

 742         srcW += srcX;
 743         srcH += srcY;
 744         // Make sure we are not out of bounds
 745         if (srcW > imgW) {
 746             srcW = imgW;
 747         }
 748         if (srcH > imgH) {
 749             srcH = imgH;
 750         }
 751         if (srcX < 0) {
 752             atfm.translate(-srcX, 0);
 753             srcX = 0;
 754         }
 755         if (srcY < 0) {
 756             atfm.translate(0, -srcY);
 757             srcY = 0;
 758         }
 759         if (srcX >= srcW || srcY >= srcH) {
 760             return true;
 761         }




 719         {
 720             double ddx1 = dstX + sg.transX;
 721             double ddy1 = dstY + sg.transY;
 722             double ddx2 = ddx1 + dstW;
 723             double ddy2 = ddy1 + dstH;
 724             if (renderImageScale(sg, img, bgColor, sg.interpolationType,
 725                                  srcX, srcY, srcX+srcW, srcY+srcH,
 726                                  ddx1, ddy1, ddx2, ddy2))
 727             {
 728                 return true;
 729             }
 730         }
 731 
 732         AffineTransform atfm = new AffineTransform(sg.transform);
 733         atfm.translate(dx1, dy1);
 734         double m00 = (double)(dx2-dx1)/(sx2-sx1);
 735         double m11 = (double)(dy2-dy1)/(sy2-sy1);
 736         atfm.scale(m00, m11);
 737         atfm.translate(srcX-sx1, srcY-sy1);
 738 
 739         final double scaleX = SurfaceManager.getImageScaleX(img);
 740         final double scaleY = SurfaceManager.getImageScaleY(img);
 741         final int imgW = (int) Math.ceil(img.getWidth(null) * scaleX);
 742         final int imgH = (int) Math.ceil(img.getHeight(null) * scaleY);
 743         srcW += srcX;
 744         srcH += srcY;
 745         // Make sure we are not out of bounds
 746         if (srcW > imgW) {
 747             srcW = imgW;
 748         }
 749         if (srcH > imgH) {
 750             srcH = imgH;
 751         }
 752         if (srcX < 0) {
 753             atfm.translate(-srcX, 0);
 754             srcX = 0;
 755         }
 756         if (srcY < 0) {
 757             atfm.translate(0, -srcY);
 758             srcY = 0;
 759         }
 760         if (srcX >= srcW || srcY >= srcH) {
 761             return true;
 762         }


< prev index next >