]> source.dussan.org Git - poi.git/commitdiff
simplified the cropping code and changed the cropping image to a more sophisticated...
authorAndreas Beeker <kiwiwings@apache.org>
Tue, 28 Oct 2014 00:04:10 +0000 (00:04 +0000)
committerAndreas Beeker <kiwiwings@apache.org>
Tue, 28 Oct 2014 00:04:10 +0000 (00:04 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1634749 13f79535-47bb-0310-9956-ffa450edef68

src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFImageRenderer.java
test-data/slideshow/54542_cropped_bitmap.pptx

index b67c9fe419f7455def4726c7a4a627cae98961dd..6e2633515aecbd65823d32068f8dc8ba7e8f7147 100644 (file)
@@ -93,40 +93,30 @@ public class XSLFImageRenderer {
             clip = new Insets(0,0,0,0);\r
         }\r
         \r
-               try {\r
-                       BufferedImage img = ImageIO.read(data.getPackagePart().getInputStream());\r
-                       int iw = img.getWidth();\r
-                       int ih = img.getHeight();\r
+        BufferedImage img;\r
+        try {\r
+            img = ImageIO.read(data.getPackagePart().getInputStream());\r
+        } catch (Exception e) {\r
+            return false;\r
+        }\r
 \r
-            double aw = anchor.getWidth();\r
-            double ah = anchor.getHeight();\r
-            double ax = anchor.getX();\r
-            double ay = anchor.getY();\r
-            \r
-            double cw = (100000-clip.left-clip.right) / 100000.0;\r
-            double ch = (100000-clip.top-clip.bottom) / 100000.0;\r
-            double sx = aw/(iw*cw);\r
-            double sy = ah/(ih*ch);\r
-            double tx = anchor.getX()-(iw*sx*clip.left/100000.0);\r
-            double ty = anchor.getY()-(ih*sy*clip.top/100000.0);\r
-            AffineTransform at = new AffineTransform(sx, 0, 0, sy, tx, ty) ;\r
+        int iw = img.getWidth();\r
+               int ih = img.getHeight();\r
 \r
-            if (isClipped) {\r
-                Shape clipOld = graphics.getClip();\r
-                AffineTransform atClip = new AffineTransform(aw, 0, 0, ah, ax, ay);\r
-                Shape clipNew = atClip.createTransformedShape(new Rectangle2D.Double(0, 0, 1, 1));\r
-                graphics.setClip(clipNew);\r
-                graphics.drawRenderedImage(img, at);\r
-                graphics.setClip(clipOld);\r
-            } else {\r
-                graphics.drawRenderedImage(img, at);\r
-            }\r
+        double cw = (100000-clip.left-clip.right) / 100000.0;\r
+        double ch = (100000-clip.top-clip.bottom) / 100000.0;\r
+        double sx = anchor.getWidth()/(iw*cw);\r
+        double sy = anchor.getHeight()/(ih*ch);\r
+        double tx = anchor.getX()-(iw*sx*clip.left/100000.0);\r
+        double ty = anchor.getY()-(ih*sy*clip.top/100000.0);\r
+        AffineTransform at = new AffineTransform(sx, 0, 0, sy, tx, ty) ;\r
 \r
-                       return true;\r
-               } catch (Exception e) {\r
-                       return false;\r
-               }\r
+        Shape clipOld = graphics.getClip();\r
+        if (isClipped) graphics.clip(anchor.getBounds2D());\r
+        graphics.drawRenderedImage(img, at);\r
+        graphics.setClip(clipOld);\r
 \r
+               return true;\r
        }\r
 \r
     /**\r
index eb3e2339a3000d4bff7cae6b732652b64ff192cc..b8d960c0052074e4998f88f3c964ab3859356a68 100644 (file)
Binary files a/test-data/slideshow/54542_cropped_bitmap.pptx and b/test-data/slideshow/54542_cropped_bitmap.pptx differ