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 } |