You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2015/02/19 20:47:05 UTC

svn commit: r1660990 - in /pdfbox/trunk/pdfbox/src/test: java/org/apache/pdfbox/pdmodel/ java/org/apache/pdfbox/pdmodel/interactive/pagenavigation/ resources/org/apache/pdfbox/pdmodel/interactive/pagenavigation/

Author: tilman
Date: Thu Feb 19 19:47:04 2015
New Revision: 1660990

URL: http://svn.apache.org/r1660990
Log:
PDFBOX-2689: implement page transitions, by Andrea Vacondio

Added:
    pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/TestPDPageTransitions.java   (with props)
    pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/interactive/pagenavigation/
    pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/interactive/pagenavigation/PDTransitionDirectionTest.java   (with props)
    pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/interactive/pagenavigation/PDTransitionTest.java   (with props)
    pdfbox/trunk/pdfbox/src/test/resources/org/apache/pdfbox/pdmodel/interactive/pagenavigation/
    pdfbox/trunk/pdfbox/src/test/resources/org/apache/pdfbox/pdmodel/interactive/pagenavigation/transitions_test.pdf   (with props)

Added: pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/TestPDPageTransitions.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/TestPDPageTransitions.java?rev=1660990&view=auto
==============================================================================
--- pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/TestPDPageTransitions.java (added)
+++ pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/TestPDPageTransitions.java Thu Feb 19 19:47:04 2015
@@ -0,0 +1,76 @@
+/*
+ * 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.
+ */
+package org.apache.pdfbox.pdmodel;
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+
+import org.apache.pdfbox.cos.COSName;
+import org.apache.pdfbox.pdmodel.interactive.pagenavigation.PDTransition;
+import org.apache.pdfbox.pdmodel.interactive.pagenavigation.PDTransitionDirection;
+import org.apache.pdfbox.pdmodel.interactive.pagenavigation.PDTransitionStyle;
+import org.junit.Test;
+
+/**
+ * @author Andrea Vacondio
+ *
+ */
+public class TestPDPageTransitions
+{
+
+    @Test
+    public void readTransitions() throws IOException
+    {
+        PDDocument doc = PDDocument.load(this.getClass().getResourceAsStream(
+                "/org/apache/pdfbox/pdmodel/interactive/pagenavigation/transitions_test.pdf"));
+        PDTransition firstTransition = doc.getPages().get(0).getTransition();
+        assertEquals(PDTransitionStyle.Glitter.name(), firstTransition.getStyle());
+        assertEquals(2, firstTransition.getDuration(), 0);
+        assertEquals(PDTransitionDirection.TOP_LEFT_TO_BOTTOM_RIGHT.getCOSBase(),
+                firstTransition.getDirection());
+        doc.close();
+    }
+
+    @Test
+    public void saveAndReadTransitions() throws IOException
+    {
+        // save
+        PDDocument document = new PDDocument();
+        PDPage page = new PDPage();
+        document.addPage(page);
+        PDTransition transition = new PDTransition(PDTransitionStyle.Fly);
+        transition.setDirection(PDTransitionDirection.NONE);
+        transition.setFlyScale(0.5f);
+        page.setTransition(transition, 2);
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        document.save(baos);
+        document.close();
+
+        // read
+        byte[] pdf = baos.toByteArray();
+        PDDocument doc = PDDocument.load(new ByteArrayInputStream(pdf));
+        page = doc.getPages().get(0);
+        PDTransition loadedTransition = page.getTransition();
+        assertEquals(PDTransitionStyle.Fly.name(), loadedTransition.getStyle());
+        assertEquals(2, page.getCOSObject().getFloat(COSName.DUR), 0);
+        assertEquals(PDTransitionDirection.NONE.getCOSBase(), loadedTransition.getDirection());
+        doc.close();
+    }
+}

Propchange: pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/TestPDPageTransitions.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/interactive/pagenavigation/PDTransitionDirectionTest.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/interactive/pagenavigation/PDTransitionDirectionTest.java?rev=1660990&view=auto
==============================================================================
--- pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/interactive/pagenavigation/PDTransitionDirectionTest.java (added)
+++ pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/interactive/pagenavigation/PDTransitionDirectionTest.java Thu Feb 19 19:47:04 2015
@@ -0,0 +1,47 @@
+/*
+ * 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.
+ */
+package org.apache.pdfbox.pdmodel.interactive.pagenavigation;
+
+import static org.junit.Assert.assertEquals;
+
+import org.apache.pdfbox.cos.COSInteger;
+import org.apache.pdfbox.cos.COSName;
+import org.junit.Test;
+
+/**
+ * @author Andrea Vacondio
+ *
+ */
+public class PDTransitionDirectionTest
+{
+
+    @Test
+    public void getCOSBase()
+    {
+        assertEquals(COSName.NONE, PDTransitionDirection.NONE.getCOSBase());
+        assertEquals(0, ((COSInteger) PDTransitionDirection.LEFT_TO_RIGHT.getCOSBase()).intValue());
+        assertEquals(90, ((COSInteger) PDTransitionDirection.BOTTOM_TO_TOP.getCOSBase()).intValue());
+        assertEquals(180,
+                ((COSInteger) PDTransitionDirection.RIGHT_TO_LEFT.getCOSBase()).intValue());
+        assertEquals(270,
+                ((COSInteger) PDTransitionDirection.TOP_TO_BOTTOM.getCOSBase()).intValue());
+        assertEquals(315,
+                ((COSInteger) PDTransitionDirection.TOP_LEFT_TO_BOTTOM_RIGHT.getCOSBase())
+                        .intValue());
+    }
+
+}

Propchange: pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/interactive/pagenavigation/PDTransitionDirectionTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/interactive/pagenavigation/PDTransitionTest.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/interactive/pagenavigation/PDTransitionTest.java?rev=1660990&view=auto
==============================================================================
--- pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/interactive/pagenavigation/PDTransitionTest.java (added)
+++ pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/interactive/pagenavigation/PDTransitionTest.java Thu Feb 19 19:47:04 2015
@@ -0,0 +1,123 @@
+/*
+ * 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.
+ */
+package org.apache.pdfbox.pdmodel.interactive.pagenavigation;
+
+import static org.hamcrest.CoreMatchers.instanceOf;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
+
+import org.apache.pdfbox.cos.COSDictionary;
+import org.apache.pdfbox.cos.COSInteger;
+import org.apache.pdfbox.cos.COSName;
+import org.junit.Test;
+
+/**
+ * @author Andrea Vacondio
+ *
+ */
+public class PDTransitionTest
+{
+
+    @Test
+    public void defaultStyle()
+    {
+        PDTransition transition = new PDTransition();
+        assertEquals(COSName.TRANS, transition.getCOSDictionary().getCOSName(COSName.TYPE));
+        assertEquals(PDTransitionStyle.R.name(), transition.getStyle());
+    }
+
+    @Test
+    public void getStyle()
+    {
+        PDTransition transition = new PDTransition(PDTransitionStyle.Fade);
+        assertEquals(COSName.TRANS, transition.getCOSDictionary().getCOSName(COSName.TYPE));
+        assertEquals(PDTransitionStyle.Fade.name(), transition.getStyle());
+    }
+
+    @Test
+    public void defaultValues()
+    {
+        PDTransition transition = new PDTransition(new COSDictionary());
+        assertEquals(PDTransitionStyle.R.name(), transition.getStyle());
+        assertEquals(PDTransitionDimension.H.name(), transition.getDimension());
+        assertEquals(PDTransitionMotion.I.name(), transition.getMotion());
+        assertEquals(COSInteger.ZERO, transition.getDirection());
+        assertEquals(1, transition.getDuration(), 0);
+        assertEquals(1, transition.getFlyScale(), 0);
+        assertFalse(transition.isFlyAreaOpaque());
+    }
+
+    @Test
+    public void dimension()
+    {
+        PDTransition transition = new PDTransition();
+        transition.setDimension(PDTransitionDimension.H);
+        assertEquals(PDTransitionDimension.H.name(), transition.getDimension());
+    }
+
+    @Test
+    public void directionNone()
+    {
+        PDTransition transition = new PDTransition();
+        transition.setDirection(PDTransitionDirection.NONE);
+        assertThat(transition.getDirection(), instanceOf(COSName.class));
+        assertEquals(COSName.NONE, transition.getDirection());
+    }
+
+    @Test
+    public void directionNumber()
+    {
+        PDTransition transition = new PDTransition();
+        transition .setDirection(PDTransitionDirection.LEFT_TO_RIGHT);
+        assertThat(transition .getDirection(), instanceOf(COSInteger.class));
+        assertEquals(COSInteger.ZERO, transition .getDirection());
+    }
+
+    @Test
+    public void motion()
+    {
+        PDTransition transition = new PDTransition();
+        transition.setMotion(PDTransitionMotion.O);
+        assertEquals(PDTransitionMotion.O.name(), transition.getMotion());
+    }
+
+    @Test
+    public void duration()
+    {
+        PDTransition transition = new PDTransition();
+        transition.setDuration(4);
+        assertEquals(4, transition.getDuration(), 0);
+    }
+
+    @Test
+    public void flyScale()
+    {
+        PDTransition transition = new PDTransition();
+        transition.setFlyScale(4);
+        assertEquals(4, transition.getFlyScale(), 0);
+    }
+
+    @Test
+    public void flyArea()
+    {
+        PDTransition transition = new PDTransition();
+        transition.setFlyAreaOpaque(true);
+        assertTrue(transition.isFlyAreaOpaque());
+    }
+}

Propchange: pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/interactive/pagenavigation/PDTransitionTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: pdfbox/trunk/pdfbox/src/test/resources/org/apache/pdfbox/pdmodel/interactive/pagenavigation/transitions_test.pdf
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/resources/org/apache/pdfbox/pdmodel/interactive/pagenavigation/transitions_test.pdf?rev=1660990&view=auto
==============================================================================
Binary file - no diff available.

Propchange: pdfbox/trunk/pdfbox/src/test/resources/org/apache/pdfbox/pdmodel/interactive/pagenavigation/transitions_test.pdf
------------------------------------------------------------------------------
    svn:mime-type = application/pdf