Author: cbowditch
Date: Wed Dec 19 15:50:58 2012
New Revision: 1423905

URL: http://svn.apache.org/viewvc?rev=1423905&view=rev
Log:
FOP-2172; PDF Image not rotated in PS/AFP
Submitted by Simon Steiner (ssteiner.at.thunderhead.com)

Added:
    xmlgraphics/fop-pdf-images/trunk/test/
    xmlgraphics/fop-pdf-images/trunk/test/java/
    xmlgraphics/fop-pdf-images/trunk/test/java/org/
    xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/
    xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/
    xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/
    xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/
    
xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/PDFRotateTestCase.java
Modified:
    xmlgraphics/fop-pdf-images/trunk/build.xml
    
xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/ImageConverterPDF2G2D.java

Modified: xmlgraphics/fop-pdf-images/trunk/build.xml
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop-pdf-images/trunk/build.xml?rev=1423905&r1=1423904&r2=1423905&view=diff
==============================================================================
--- xmlgraphics/fop-pdf-images/trunk/build.xml (original)
+++ xmlgraphics/fop-pdf-images/trunk/build.xml Wed Dec 19 15:50:58 2012
@@ -26,6 +26,15 @@
   <property name="Name" value="PDF image support for Apache FOP"/>
   <property name="name" value="fop-pdf-images"/>
 
+  <property name="javac.debug" value="on"/>
+  <property name="javac.optimize" value="off"/>
+  <property name="javac.deprecation" value="on"/>
+  <property name="javac.source" value="1.5"/>
+  <property name="javac.target" value="1.5"/>
+  <property name="javac.fork" value="no"/>
+
+  <property name="junit.fork" value="on"/>
+
   <property name="javadoc.packages" value="org.apache.fop.*"/>
   
   <property name="src.dir" value="${basedir}/src"/>
@@ -79,6 +88,49 @@
     <include name="KEYS"/>
     <include name="build.*"/>
   </fileset>
+  
+  <property name="build.unit.tests.dir" value="${build.dir}/test-classes"/>
+  <path id="standard-junit-classpath">
+    <pathelement location="${build.unit.tests.dir}"/>
+    <path refid="libs-build-tools-classpath"/>
+    <fileset dir="${build.dir}">
+      <include name="fop*.jar"/>
+    </fileset>
+  </path>
+  
+  <target name="junit-compile-java" depends="package">
+    <property name="test.dir" value="${basedir}/test"/>
+    <mkdir dir="${build.unit.tests.dir}"/>
+    <javac destdir="${build.unit.tests.dir}" fork="${javac.fork}" 
debug="${javac.debug}" deprecation="${javac.deprecation}" 
optimize="${javac.optimize}" source="${javac.source}" target="${javac.target}">
+      <src path="${test.dir}/java"/>
+      <classpath>
+        <path refid="libs-build-tools-classpath"/>
+        <fileset dir="${build.dir}">
+          <include name="fop*.jar"/>
+        </fileset>
+      </classpath>
+    </javac>
+  </target>
+
+  <target name="junit" depends="junit-compile-java" description="Runs PDF 
Plugin's JUnit basic tests">
+    <property name="junit.reports.dir" value="${build.dir}/test-reports"/>
+    <mkdir dir="${junit.reports.dir}"/>
+    <junit dir="${basedir}" haltonfailure="yes">
+      <sysproperty key="jawa.awt.headless" value="true"/>
+      <formatter type="brief" usefile="false"/>
+      <formatter type="plain" usefile="true"/>
+      <formatter type="xml" usefile="true"/>
+      <classpath>
+        <path refid="standard-junit-classpath"/>
+      </classpath>
+      <assertions>
+        <enable/>
+      </assertions>
+      <batchtest todir="${junit.reports.dir}">
+        <fileset dir="${build.unit.tests.dir}" includes="**/*TestCase.class"/>
+      </batchtest>
+    </junit>
+  </target>
 
   <!-- =================================================================== -->
   <!-- Initialization target                                               -->
@@ -338,6 +390,6 @@
   <!-- Default Target                                                      -->
   <!-- =================================================================== -->
 
-  <target name="all" depends="package"/>
+  <target name="all" depends="package,junit"/>
 
 </project>

Modified: 
xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/ImageConverterPDF2G2D.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/ImageConverterPDF2G2D.java?rev=1423905&r1=1423904&r2=1423905&view=diff
==============================================================================
--- 
xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/ImageConverterPDF2G2D.java
 (original)
+++ 
xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/ImageConverterPDF2G2D.java
 Wed Dec 19 15:50:58 2012
@@ -102,6 +102,28 @@ public class ImageConverterPDF2G2D exten
                 Dimension pageDimension = mediaBox.createDimension();
 
                 AffineTransform at = new AffineTransform();
+
+                Integer rotation = page.getRotation();
+                if (rotation != null) {
+                    switch (rotation) {
+                    case 270:
+                        at.scale(area.getWidth() / area.getHeight(), 
area.getHeight() / area.getWidth());
+                        at.translate(0, area.getWidth());
+                        at.rotate(-Math.PI / 2.0);
+                        break;
+                    case 180:
+                        at.translate(area.getWidth(), area.getHeight());
+                        at.rotate(-Math.PI);
+                        break;
+                    case 90:
+                        at.scale(area.getWidth() / area.getHeight(), 
area.getHeight() / area.getWidth());
+                        at.translate(area.getHeight(), 0);
+                        at.rotate(-Math.PI * 1.5);
+                    default:
+                        //no additional transformations necessary
+                    }
+                }
+
                 at.translate(area.getX(), area.getY());
                 at.scale(area.getWidth() / pageDimension.width,
                         area.getHeight() / pageDimension.height);

Added: 
xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/PDFRotateTestCase.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/PDFRotateTestCase.java?rev=1423905&view=auto
==============================================================================
--- 
xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/PDFRotateTestCase.java
 (added)
+++ 
xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/PDFRotateTestCase.java
 Wed Dec 19 15:50:58 2012
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/* $Id$ */
+
+package org.apache.fop.render.pdf;
+
+import java.awt.geom.Rectangle2D;
+
+import junit.framework.Assert;
+
+import org.apache.fop.render.pdf.pdfbox.ImageConverterPDF2G2D;
+import org.apache.fop.render.pdf.pdfbox.ImagePDF;
+import org.apache.pdfbox.pdmodel.PDDocument;
+import org.apache.pdfbox.pdmodel.PDPage;
+import org.apache.xmlgraphics.image.loader.Image;
+import org.apache.xmlgraphics.image.loader.ImageInfo;
+import org.apache.xmlgraphics.image.loader.impl.ImageGraphics2D;
+import org.apache.xmlgraphics.java2d.GraphicContext;
+import org.apache.xmlgraphics.java2d.ps.PSGraphics2D;
+import org.junit.Test;
+
+public class PDFRotateTestCase {
+    
+    @Test
+    public void test() throws Exception {      
+        ImageConverterPDF2G2D i = new ImageConverterPDF2G2D();
+        ImageInfo imgi = new ImageInfo("a", "b");
+        PDDocument doc = new PDDocument();
+        PDPage page = new PDPage();
+        page.setRotation(90);
+        doc.addPage(page);
+        Image img = new ImagePDF(imgi, doc);
+        ImageGraphics2D ig = (ImageGraphics2D)i.convert(img, null);
+        Rectangle2D rect = new Rectangle2D.Float(0, 0, 100, 100);
+        
+        PSGraphics2D g2d = new PSGraphics2D(true);
+        GraphicContext gc = new GraphicContext();
+        g2d.setGraphicContext(gc);
+        ig.getGraphics2DImagePainter().paint(g2d, rect);
+        Assert.assertTrue(g2d.getTransform().getShearX() == 
-0.12626262626262627);
+    }
+}



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to