FOP-2562: Fix rotation
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop-pdf-images/branches/Temp_PDFBox2@1739041 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/java/org/apache/fop/render/pdf/pdfbox/ImageConverterPDF2G2D.java b/src/java/org/apache/fop/render/pdf/pdfbox/ImageConverterPDF2G2D.java
index b356511..4c1e806 100644
--- a/src/java/org/apache/fop/render/pdf/pdfbox/ImageConverterPDF2G2D.java
+++ b/src/java/org/apache/fop/render/pdf/pdfbox/ImageConverterPDF2G2D.java
@@ -104,37 +104,15 @@
public void paint(Graphics2D g2d, Rectangle2D area) {
try {
PDRectangle mediaBox = page.getCropBox();
-
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);
- break;
- default:
- //no additional transformations necessary
- break;
- }
+ int rotation = page.getRotation();
+ if (rotation == 90 || rotation == 270) {
+ at.scale(area.getWidth() / area.getHeight(), area.getHeight() / area.getWidth());
}
-
at.translate(area.getX(), area.getY());
at.scale(area.getWidth() / mediaBox.getWidth(),
area.getHeight() / mediaBox.getHeight());
g2d.transform(at);
-
new PDFRenderer(pdDocument).renderPageToGraphics(selectedPage, g2d);
} catch (IOException ioe) {
//TODO Better exception handling
diff --git a/src/java/org/apache/fop/render/pdf/pdfbox/PSPDFGraphics2D.java b/src/java/org/apache/fop/render/pdf/pdfbox/PSPDFGraphics2D.java
index a74c1e0..28bdace 100644
--- a/src/java/org/apache/fop/render/pdf/pdfbox/PSPDFGraphics2D.java
+++ b/src/java/org/apache/fop/render/pdf/pdfbox/PSPDFGraphics2D.java
@@ -107,7 +107,7 @@
protected void applyPaint(Paint paint, boolean fill) {
preparePainting();
if (paint instanceof AxialShadingPaint || paint instanceof RadialShadingPaint) {
- PaintContext paintContext = paint.createContext(null, null, null, new AffineTransform(),
+ PaintContext paintContext = paint.createContext(null, new Rectangle(), null, new AffineTransform(),
getRenderingHints());
PDColorSpace pdcs;
int deviceColorSpace = PDFDeviceColorSpace.DEVICE_RGB;
diff --git a/test/java/org/apache/fop/render/pdf/PDFRotateTestCase.java b/test/java/org/apache/fop/render/pdf/PDFRotateTestCase.java
index a5f3f96..5005485 100644
--- a/test/java/org/apache/fop/render/pdf/PDFRotateTestCase.java
+++ b/test/java/org/apache/fop/render/pdf/PDFRotateTestCase.java
@@ -53,6 +53,6 @@
GraphicContext gc = new GraphicContext();
g2d.setGraphicContext(gc);
ig.getGraphics2DImagePainter().paint(g2d, rect);
- Assert.assertEquals(g2d.getTransform().getShearX(), -5.5191148992250524E-9);
+ Assert.assertEquals(g2d.getTransform().getShearX(), 0.16339869281045735);
}
}