oox/source/shape/ShapeContextHandler.cxx      |   26 +++++++++++++++++++++
 oox/source/shape/ShapeContextHandler.hxx      |    2 +
 writerfilter/source/dmapper/GraphicImport.cxx |    1 
 writerfilter/source/ooxml/model.xml           |   31 ++++++++++++++++++++++++++
 4 files changed, 60 insertions(+)

New commits:
commit 8c6fb76c2cc24c336a28702b5f7f31cb5964129a
Author: Miklos Vajna <vmik...@suse.cz>
Date:   Tue May 29 08:37:07 2012 +0200

    oox: initial smartart text is imported into Writer

diff --git a/oox/source/shape/ShapeContextHandler.cxx 
b/oox/source/shape/ShapeContextHandler.cxx
index 3234238..5ceb101 100644
--- a/oox/source/shape/ShapeContextHandler.cxx
+++ b/oox/source/shape/ShapeContextHandler.cxx
@@ -30,6 +30,7 @@
 #include "oox/vml/vmldrawingfragment.hxx"
 #include "oox/vml/vmlshape.hxx"
 #include "oox/vml/vmlshapecontainer.hxx"
+#include "oox/drawingml/diagram/diagram.hxx"
 
 namespace oox { namespace shape {
 
@@ -120,6 +121,19 @@ ShapeContextHandler::getDrawingShapeContext()
 }
 
 uno::Reference<xml::sax::XFastContextHandler>
+ShapeContextHandler::getDiagramShapeContext()
+{
+    if (!mxDiagramShapeContext.is())
+    {
+        FragmentHandlerRef rFragmentHandler(new 
ShapeFragmentHandler(*mxFilterBase, msRelationFragmentPath));
+        mpShape.reset(new Shape());
+        mxDiagramShapeContext.set(new 
DiagramGraphicDataContext(*rFragmentHandler, mpShape));
+    }
+
+    return mxDiagramShapeContext;
+}
+
+uno::Reference<xml::sax::XFastContextHandler>
 ShapeContextHandler::getContextHandler()
 {
     uno::Reference<xml::sax::XFastContextHandler> xResult;
@@ -130,6 +144,9 @@ ShapeContextHandler::getContextHandler()
         case NMSP_vml:
             xResult.set(getDrawingShapeContext());
             break;
+        case NMSP_dmlDiagram:
+            xResult.set(getDiagramShapeContext());
+            break;
         default:
             xResult.set(getGraphicShapeContext(mnStartToken));
             break;
@@ -154,6 +171,9 @@ void SAL_CALL ShapeContextHandler::startFastElement
 
     mpThemePtr.reset(new Theme());
 
+    if (Element == DGM_TOKEN(relIds))
+        createFastChildContext(Element, Attribs);
+
     uno::Reference<XFastContextHandler> xContextHandler(getContextHandler());
 
     if (xContextHandler.is())
@@ -247,6 +267,12 @@ ShapeContextHandler::getShape() throw 
(uno::RuntimeException)
             if( const ::oox::vml::ShapeBase* pShape = 
mpDrawing->getShapes().takeLastShape() )
                 xResult = pShape->convertAndInsert( xShapes );
         }
+        else if (getContextHandler() == getDiagramShapeContext())
+        {
+            basegfx::B2DHomMatrix aMatrix;
+            mpShape->addShape( *mxFilterBase, mpThemePtr.get(), xShapes, 
aMatrix );
+            xResult = mpShape->getXShape();
+        }
         else if (mpShape.get() != NULL)
         {
             basegfx::B2DHomMatrix aTransformation;
diff --git a/oox/source/shape/ShapeContextHandler.hxx 
b/oox/source/shape/ShapeContextHandler.hxx
index df9c398..95aee66 100644
--- a/oox/source/shape/ShapeContextHandler.hxx
+++ b/oox/source/shape/ShapeContextHandler.hxx
@@ -159,6 +159,7 @@ private:
     GraphicShapeContextPtr;
     css::uno::Reference<XFastContextHandler> mxDrawingFragmentHandler;
     css::uno::Reference<XFastContextHandler> mxGraphicShapeContext;
+    css::uno::Reference<XFastContextHandler> mxDiagramShapeContext;
 
     core::XmlFilterRef mxFilterBase;
     drawingml::ThemePtr mpThemePtr;
@@ -168,6 +169,7 @@ private:
 
     css::uno::Reference<XFastContextHandler> 
getGraphicShapeContext(::sal_Int32 Element);
     css::uno::Reference<XFastContextHandler> getDrawingShapeContext();
+    css::uno::Reference<XFastContextHandler> getDiagramShapeContext();
     css::uno::Reference<XFastContextHandler> getContextHandler();
 };
 
commit 028d56943cac2a6f5eeec5f9f675e20814cb7447
Author: Miklos Vajna <vmik...@suse.cz>
Date:   Tue May 29 08:36:29 2012 +0200

    writerfilter: read dgm:relIds element and its attributes

diff --git a/writerfilter/source/dmapper/GraphicImport.cxx 
b/writerfilter/source/dmapper/GraphicImport.cxx
index 4a71e1c..5429bbc 100644
--- a/writerfilter/source/dmapper/GraphicImport.cxx
+++ b/writerfilter/source/dmapper/GraphicImport.cxx
@@ -1165,6 +1165,7 @@ void GraphicImport::lcl_sprm(Sprm & rSprm)
         case NS_ooxml::LN_CT_WrapPath_lineTo: // 90925;
         case NS_ooxml::LN_graphic_graphic:
         case NS_ooxml::LN_pic_pic:
+        case NS_ooxml::LN_dgm_relIds:
         {
             writerfilter::Reference<Properties>::Pointer_t pProperties = 
rSprm.getProps();
             if( pProperties.get())
diff --git a/writerfilter/source/ooxml/model.xml 
b/writerfilter/source/ooxml/model.xml
index c5fea31..dbaa151 100644
--- a/writerfilter/source/ooxml/model.xml
+++ b/writerfilter/source/ooxml/model.xml
@@ -8,6 +8,7 @@
   <namespace-alias 
name="http://schemas.openxmlformats.org/drawingml/2006/main"; alias="drawingml" 
id="dml"/>
   <namespace-alias name="urn:schemas-microsoft-com:vml" alias="vml" id="vml"/>
   <namespace-alias 
name="http://schemas.openxmlformats.org/drawingml/2006/picture"; alias="picture" 
id="dmlPicture"/>
+  <namespace-alias 
name="http://schemas.openxmlformats.org/drawingml/2006/diagram"; alias="diagram" 
id="dmlDiagram"/>
   <namespace-alias name="urn:schemas-microsoft-com:office:word" 
alias="vml_wordprocessingDrawing" id="vmlWord"/>
   <namespace-alias 
name="http://schemas.openxmlformats.org/wordprocessingml/2006/main"; 
alias="wordprocessingml" id="doc"/>
   <namespace-alias 
name="http://schemas.openxmlformats.org/officeDocument/2006/math"; alias="math" 
id="officeMath"/>
@@ -5146,6 +5147,7 @@
       <define name="CT_GraphicalObjectData">
         <zeroOrMore>
           <ref name="pic"/>
+          <ref name="relIds"/>
           <element>
             <anyName/>
             <ref name="BUILT_IN_ANY_TYPE"/>
@@ -5171,6 +5173,7 @@
     </grammar>
     <resource name="CT_GraphicalObjectData" resource="Properties" tag="shape">
       <element name="pic" tokenid="ooxml:CT_GraphicalObjectData_pic"/>
+      <element name="relIds" tokenid="ooxml:CT_GraphicalObjectData_relIds"/>
       <attribute name="uri" tokenid="ooxml:CT_GraphicalObjectData_uri"/>
     </resource>
     <resource name="CT_GraphicalObject" resource="Properties" tag="shape">
@@ -8415,6 +8418,25 @@
           <ref name="CT_Picture"/>
         </element>
       </define>
+      <define 
xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"; 
name="CT_RelIds">
+        <attribute name="r:dm">
+          <text/>
+        </attribute>
+        <attribute name="r:lo">
+          <text/>
+        </attribute>
+        <attribute name="r:qs">
+          <text/>
+        </attribute>
+        <attribute name="r:cs">
+          <text/>
+        </attribute>
+      </define>
+      <define name="relIds">
+        <element 
xmlns:dgm="http://schemas.openxmlformats.org/drawingml/2006/diagram"; 
name="dgm:relIds">
+          <ref name="CT_RelIds"/>
+        </element>
+      </define>
     </grammar>
     <resource name="CT_PictureNonVisual" resource="Properties" tag="shape">
       <element name="cNvPr" tokenid="ooxml:CT_PictureNonVisual_cNvPr"/>
@@ -8428,6 +8450,15 @@
     <resource name="pic" resource="Properties" tag="shape">
       <element name="pic" tokenid="ooxml:pic_pic"/>
     </resource>
+    <resource 
xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"; 
name="CT_RelIds" resource="Shape" tag="shape">
+      <attribute name="r:dm" tokenid="ooxml:CT_RelIds_dm"/>
+      <attribute name="r:lo" tokenid="ooxml:CT_RelIds_lo"/>
+      <attribute name="r:qs" tokenid="ooxml:CT_RelIds_qs"/>
+      <attribute name="r:cs" tokenid="ooxml:CT_RelIds_cs"/>
+    </resource>
+    <resource name="relIds" resource="Shape" tag="shape">
+      <element 
xmlns:dgm="http://schemas.openxmlformats.org/drawingml/2006/diagram"; 
name="dgm:relIds" tokenid="ooxml:dgm_relIds"/>
+    </resource>
   </namespace>
   <namespace name="vml-main" file="vml-main.rng" todo="ignore">
     <start name="shape"/>
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to