Author: kiwiwings
Date: Mon Mar 28 22:52:01 2016
New Revision: 1736935

URL: http://svn.apache.org/viewvc?rev=1736935&view=rev
Log:
XSLF: do not display Master Slide objects by default
XSLF: fix alternate content handling for picture shapes

Added:
    poi/trunk/test-data/slideshow/2411-Performance_Up.pptx   (with props)
Modified:
    poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFPictureShape.java
    poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSlide.java
    poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSlideLayout.java
    poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/TestXSLFBugs.java
    
poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFSlide.java
    
poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTheme.java

Modified: 
poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFPictureShape.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFPictureShape.java?rev=1736935&r1=1736934&r2=1736935&view=diff
==============================================================================
--- 
poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFPictureShape.java 
(original)
+++ 
poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFPictureShape.java 
Mon Mar 28 22:52:01 2016
@@ -31,6 +31,7 @@ import org.apache.poi.sl.usermodel.Pictu
 import org.apache.poi.sl.usermodel.Placeholder;
 import org.apache.poi.util.Beta;
 import org.apache.xmlbeans.XmlCursor;
+import org.apache.xmlbeans.XmlException;
 import org.apache.xmlbeans.XmlObject;
 import org.openxmlformats.schemas.drawingml.x2006.main.CTBlip;
 import org.openxmlformats.schemas.drawingml.x2006.main.CTBlipFillProperties;
@@ -110,7 +111,7 @@ public class XSLFPictureShape extends XS
             if (rel != null) {
                 try {
                     PackagePart imgPart = p.getRelatedPart(rel);
-                    _data = new XSLFPictureData(imgPart, rel);
+                    _data = new XSLFPictureData(imgPart);
                 }
                 catch (Exception e) {
                     throw new POIXMLException(e);
@@ -151,9 +152,29 @@ public class XSLFPictureShape extends XS
         return null;
     }
 
-    protected CTBlip getBlip(){
+    protected CTBlipFillProperties getBlipFill() {
         CTPicture ct = (CTPicture)getXmlObject();
-        return ct.getBlipFill().getBlip();
+        CTBlipFillProperties bfp = ct.getBlipFill();
+        if (bfp != null) {
+            return bfp;
+        }
+                    
+        String xquery =
+                "declare namespace 
p='http://schemas.openxmlformats.org/presentationml/2006/main'; "
+              + "declare namespace 
mc='http://schemas.openxmlformats.org/markup-compatibility/2006' "
+              + ".//mc:Fallback/p:blipFill"
+              ;
+        XmlObject xo = selectProperty(XmlObject.class, xquery);
+        try {
+            xo = CTPicture.Factory.parse(xo.getDomNode());
+        } catch (XmlException xe) {
+            return null;
+        }
+        return ((CTPicture)xo).getBlipFill();
+    }
+    
+    protected CTBlip getBlip(){
+        return getBlipFill().getBlip();
     }
     
     protected String getBlipLink(){
@@ -170,8 +191,7 @@ public class XSLFPictureShape extends XS
 
     @Override
     public Insets getClipping(){
-        CTPicture ct = (CTPicture)getXmlObject();
-        CTRelativeRect r = ct.getBlipFill().getSrcRect();
+        CTRelativeRect r = getBlipFill().getSrcRect();
         return (r == null) ? null : new Insets(r.getT(), r.getL(), r.getB(), 
r.getR());
     }
 
@@ -184,7 +204,7 @@ public class XSLFPictureShape extends XS
         String relId = getSheet().importBlip(blipId, 
p.getSheet().getPackagePart());
 
         CTPicture ct = (CTPicture)getXmlObject();
-        CTBlip blip = ct.getBlipFill().getBlip();
+        CTBlip blip = getBlipFill().getBlip();
         blip.setEmbed(relId);
 
         CTApplicationNonVisualDrawingProps nvPr = ct.getNvPicPr().getNvPr();
@@ -209,4 +229,4 @@ public class XSLFPictureShape extends XS
         }
 
     }
-}
+}
\ No newline at end of file

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSlide.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSlide.java?rev=1736935&r1=1736934&r2=1736935&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSlide.java 
(original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSlide.java Mon 
Mar 28 22:52:01 2016
@@ -215,12 +215,9 @@ implements Slide<XSLFShape,XSLFTextParag
         }
     }
 
-    /**
-     *
-     * @return whether shapes on the master slide should be shown  or not.
-     */
+    @Override
     public boolean getFollowMasterGraphics(){
-        return !_slide.isSetShowMasterSp() || _slide.getShowMasterSp();
+        return _slide.isSetShowMasterSp() && _slide.getShowMasterSp();
     }
 
     /**

Modified: 
poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSlideLayout.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSlideLayout.java?rev=1736935&r1=1736934&r2=1736935&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSlideLayout.java 
(original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSlideLayout.java 
Mon Mar 28 22:52:01 2016
@@ -113,7 +113,7 @@ implements MasterSheet<XSLFShape,XSLFTex
 
     @Override
     public boolean getFollowMasterGraphics() {
-        return !_layout.isSetShowMasterSp() || _layout.getShowMasterSp();
+        return _layout.isSetShowMasterSp() && _layout.getShowMasterSp();
     }
 
     /**

Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/TestXSLFBugs.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/TestXSLFBugs.java?rev=1736935&r1=1736934&r2=1736935&view=diff
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/TestXSLFBugs.java 
(original)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/TestXSLFBugs.java Mon Mar 
28 22:52:01 2016
@@ -18,7 +18,10 @@ package org.apache.poi.xslf;
 
 import static junit.framework.TestCase.assertEquals;
 import static org.apache.poi.POITestCase.assertContains;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
 
 import java.awt.Color;
 import java.awt.Dimension;
@@ -36,6 +39,7 @@ import javax.imageio.ImageIO;
 
 import org.apache.poi.POIXMLDocumentPart;
 import org.apache.poi.POIXMLDocumentPart.RelationPart;
+import org.apache.poi.sl.usermodel.PaintStyle;
 import org.apache.poi.sl.usermodel.PictureData.PictureType;
 import org.apache.poi.xslf.usermodel.DrawingParagraph;
 import org.apache.poi.xslf.usermodel.DrawingTextBody;
@@ -428,4 +432,12 @@ public class TestXSLFBugs {
         ppt.removeSlide(1);
         assertNotNull(ppt.createSlide());
     }
+
+    @Test
+    public void blibFillAlternateContent() throws IOException  {
+        XMLSlideShow ppt = 
XSLFTestDataSamples.openSampleDocument("2411-Performance_Up.pptx");
+        XSLFPictureShape ps = 
(XSLFPictureShape)ppt.getSlides().get(4).getShapes().get(0);
+        assertNotNull(ps.getPictureData());
+        ppt.close();
+    }
 }

Modified: 
poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFSlide.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFSlide.java?rev=1736935&r1=1736934&r2=1736935&view=diff
==============================================================================
--- 
poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFSlide.java 
(original)
+++ 
poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFSlide.java 
Mon Mar 28 22:52:01 2016
@@ -111,7 +111,7 @@ public class TestXSLFSlide {
         assertEquals(0, ppt.getSlides().size());
 
         XSLFSlide slide = ppt.createSlide();
-        assertTrue(slide.getFollowMasterGraphics());
+        assertFalse(slide.getFollowMasterGraphics());
         slide.setFollowMasterGraphics(false);
         assertFalse(slide.getFollowMasterGraphics());
         slide.setFollowMasterGraphics(true);

Modified: 
poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTheme.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTheme.java?rev=1736935&r1=1736934&r2=1736935&view=diff
==============================================================================
--- 
poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTheme.java 
(original)
+++ 
poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTheme.java 
Mon Mar 28 22:52:01 2016
@@ -99,7 +99,7 @@ public class TestXSLFTheme {
         assertTrue(sameColor(new Color(148, 198, 0), run2.getFontColor()));
         assertNull(sh2.getFillColor());  // no fill
 
-        assertTrue(slide.getSlideLayout().getFollowMasterGraphics());
+        assertFalse(slide.getSlideLayout().getFollowMasterGraphics());
     }
 
     void slide5(XSLFSlide slide){
@@ -113,7 +113,7 @@ public class TestXSLFTheme {
         // font size is 40pt and scale factor is 90%
         assertEquals(36.0, run2.getFontSize(), 0);
 
-        assertTrue(slide.getSlideLayout().getFollowMasterGraphics());
+        assertFalse(slide.getSlideLayout().getFollowMasterGraphics());
     }
 
     void slide6(XSLFSlide slide){

Added: poi/trunk/test-data/slideshow/2411-Performance_Up.pptx
URL: 
http://svn.apache.org/viewvc/poi/trunk/test-data/slideshow/2411-Performance_Up.pptx?rev=1736935&view=auto
==============================================================================
Binary file - no diff available.

Propchange: poi/trunk/test-data/slideshow/2411-Performance_Up.pptx
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream



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

Reply via email to