[Libreoffice-commits] .: 3 commits - patches/dev300

Katarina Machalkova bubli at kemper.freedesktop.org
Thu Oct 21 03:33:18 PDT 2010


 patches/dev300/apply                                                            |   51 
 patches/dev300/oox-drawingml-fix-apply-shape-reference-crash.diff               |   19 
 patches/dev300/oox-drawingml-fix-shapes-map-crash.diff                          |  217 
 patches/dev300/oox-pptx-export-animations-filter.diff                           |  176 
 patches/dev300/oox-pptx-export-animations-paragraph-target.diff                 |  163 
 patches/dev300/oox-pptx-export-blip-luminance.diff                              |   78 
 patches/dev300/oox-pptx-export-fix-action-button-presets.diff                   |   23 
 patches/dev300/oox-pptx-export-fix-hidden-slides.diff                           |   30 
 patches/dev300/oox-pptx-export-hyperlinks.diff                                  |  133 
 patches/dev300/oox-pptx-export-para-linespacing.diff                            |  181 
 patches/dev300/oox-pptx-export-update-to-ooo320.diff                            |  198 
 patches/dev300/oox-pptx-export-vertical-text.diff                               |   60 
 patches/dev300/oox-smartart-import.diff                                         | 6320 ++++
 patches/dev300/pptx-export-empty-animations-node-and-groupshape-fix.diff        |   65 
 patches/dev300/pptx-filter-as-a-separate-lib-sd-build-lst-with-transogl.diff    |   27 
 patches/dev300/pptx-filter-as-a-separate-lib-sd-build-lst-without-transogl.diff |   17 
 patches/dev300/pptx-filter-as-a-separate-lib.diff                               |12776 ++++++++++
 patches/dev300/pptx-fix-connector-crash.diff                                    |   61 
 patches/dev300/pptx-snapshot-at-ooxml03-creation.diff                           |10324 ++++++++
 patches/dev300/pptx-the-rest-from-git.diff                                      | 1435 +
 patches/dev300/sd-pptx-export-build-fix-2.diff                                  |   44 
 patches/dev300/sd-pptx-export-build-fix.diff                                    |  384 
 patches/dev300/xlsx-shared-oox-drawingml-fix-shapes-map-crash.diff              |   13 
 23 files changed, 32795 insertions(+)

New commits:
commit 83c8e1b1c86033e70726f686be394e8b211330c5
Author: Katarina Machalkova <kmachalkova at suse.cz>
Date:   Thu Oct 21 12:18:28 2010 +0200

    Revert "remove patches moved into git from here"
    
    This reverts commit 18c721a55af28c1ac916f4ca9424dd080f932a0f.

diff --git a/patches/dev300/apply b/patches/dev300/apply
index 71770d3..01e28c7 100644
--- a/patches/dev300/apply
+++ b/patches/dev300/apply
@@ -2064,16 +2064,37 @@ base64.diff, i#100620, hmth
 #Create langpack and full installers
 ooop-langpack-policy.diff
 
+[ OOXMLExport ]
+pptx-filter-as-a-separate-lib.diff
+
 [ OOXMLExport and not OpenGLTransitions ]
 pptx-filter-as-a-separate-lib-sd-build-lst-without-transogl.diff
 
 [ OOXMLExport and OpenGLTransitions ]
 pptx-filter-as-a-separate-lib-sd-build-lst-with-transogl.diff
 
+# Snapshot of the pptx export filter at the time of creation of ooxml03
+# This is until 0475--fix-crash-introduced-by-Jonathan-s-changes-in-eppt.patch
+# (including)
+[ OOXMLExport ]
+pptx-snapshot-at-ooxml03-creation.diff
+
+# ...and the rest from the git tree
+# (until 'more qnimations export work', including)
+
+pptx-the-rest-from-git.diff
+pptx-export-empty-animations-node-and-groupshape-fix.diff, rodo
+
+# handles case where a connector shape is not connected
+pptx-fix-connector-crash.diff, n#499129, thorsten
+
 [ OOXMLExport ]
 # hack to ignore writerfilter when odf-converter is present
 odf-converter-ignore-writerfilter.diff, n#348471, n#502173, jholesov
 
+[ OOXML ]
+oox-pptx-export-fix-hidden-slides.diff, n#499131, rodo
+
 [ Fixes ]
 external-apm-header.diff, freuter
 wmf-mm-text.diff, n#417818, rodo
@@ -2111,6 +2132,23 @@ svx-fontwork-crash-fix.diff, n#526342, thorsten
 # expand path placeholders early in template dialog
 normalize-template-paths-fix.diff, n#512146, thorsten
 
+[ OOXMLExport ]
+oox-pptx-export-hyperlinks.diff, n#499124, rodo
+oox-pptx-export-vertical-text.diff, n#498737, rodo
+oox-pptx-export-para-linespacing.diff, n#498737, rodo
+oox-pptx-export-fix-action-button-presets.diff, n#497570, rodo
+oox-drawingml-fix-shapes-map-crash.diff, rodo
+
+[ OOXMLExportDevel ]
+# equivalent of ooxml-drawing-fix-shapes-map-crash-xlsx-part for shared filter
+xlsx-shared-oox-drawingml-fix-shapes-map-crash.diff, rodo
+
+[ OOXMLExport ]
+oox-pptx-export-animations-filter.diff, n#497570, rodo
+oox-pptx-export-animations-paragraph-target.diff, n#497570, rodo
+oox-pptx-export-blip-luminance.diff, n#497570, rodo
+
+
 [ Experimental ]
 experimental_ooapi.diff, flr
 
@@ -2206,6 +2244,7 @@ solenv-unpack-oxt.diff, pmladek
 system-lpsolve-link-with-colamd.diff, rengelha
 
 [ OOXMLExport ]
+oox-pptx-export-update-to-ooo320.diff, rodo
 iso-ooxml-sw.diff, cbosdo
 
 [ OOXMLExportDevel ]
@@ -2423,6 +2462,10 @@ SectionOwner => cbosdo
 # Better mapping of cell border thickness & inner padding.
 calc-xls-import-cell-border.diff, n#636691, kohei
 
+[ OOXML ]
+oox-drawingml-fix-apply-shape-reference-crash.diff, n#593611, rodo
+oox-smartart-import.diff, thorsten
+
 [ NovellOnlyWin32 ]
 sled10-splash.diff, i#123456, pmladek
 
@@ -2433,6 +2476,8 @@ svx-ppt-bullet-offset-fix.diff, n#593609, rodo
 transogl-transitions-newsflash-pptin.diff
 
 [ Fixes ]
+sd-pptx-export-build-fix.diff, rodo
+sd-pptx-export-build-fix-2.diff, rodo
 svx-fix-layout-build.diff, rodo
 sfx2-style-edit-greyentry.diff, i#85003, simonaw
 
diff --git a/patches/dev300/oox-drawingml-fix-apply-shape-reference-crash.diff b/patches/dev300/oox-drawingml-fix-apply-shape-reference-crash.diff
new file mode 100644
index 0000000..e2ce020
--- /dev/null
+++ b/patches/dev300/oox-drawingml-fix-apply-shape-reference-crash.diff
@@ -0,0 +1,19 @@
+---
+ oox/source/drawingml/shape.cxx |    1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+diff --git oox/source/drawingml/shape.cxx oox/source/drawingml/shape.cxx
+index 765a559..bd251d1 100644
+--- oox/source/drawingml/shape.cxx
++++ oox/source/drawingml/shape.cxx
+@@ -172,6 +172,7 @@ void Shape::addShape(
+ 
+ void Shape::applyShapeReference( const Shape& rReferencedShape )
+ {
++    if( rReferencedShape.mpTextBody.get() )
+     mpTextBody = TextBodyPtr( new TextBody( *rReferencedShape.mpTextBody.get() ) );
+     maShapeProperties = rReferencedShape.maShapeProperties;
+     mpLinePropertiesPtr = LinePropertiesPtr( new LineProperties( *rReferencedShape.mpLinePropertiesPtr.get() ) );
+-- 
+1.7.0.1
+
diff --git a/patches/dev300/oox-drawingml-fix-shapes-map-crash.diff b/patches/dev300/oox-drawingml-fix-shapes-map-crash.diff
new file mode 100644
index 0000000..e89f831
--- /dev/null
+++ b/patches/dev300/oox-drawingml-fix-shapes-map-crash.diff
@@ -0,0 +1,217 @@
+---
+ oox/inc/oox/export/shapes.hxx            |   32 +++++++++++++++++------------
+ oox/source/export/shapes.cxx             |   16 +++++++++-----
+ sd/source/filter/pptx/epptooxml.hxx      |    4 ++-
+ sd/source/filter/pptx/pptx-epptooxml.cxx |   15 ++++++++-----
+ 4 files changed, 41 insertions(+), 26 deletions(-)
+
+diff --git oox/inc/oox/export/shapes.hxx oox/inc/oox/export/shapes.hxx
+index 0814281..74d9a54 100644
+--- oox/inc/oox/export/shapes.hxx
++++ oox/inc/oox/export/shapes.hxx
+@@ -49,16 +49,7 @@ namespace oox { namespace drawingml {
+ 
+ class OOX_DLLPUBLIC ShapeExport : public DrawingML {
+ 
+-protected:
+-    sal_Int32           mnShapeIdMax, mnPictureIdMax;
+-
+ private:
+-    sal_Int32           mnXmlNamespace;
+-    Fraction            maFraction;
+-    MapMode             maMapModeSrc, maMapModeDest;
+-
+-    ::com::sun::star::awt::Size MapSize( const ::com::sun::star::awt::Size& ) const;
+-
+     struct ShapeCheck
+     {
+         bool operator()( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape> s1, const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape> s2 ) const
+@@ -74,11 +65,25 @@ private:
+         size_t operator()( const ::com::sun::star::uno::Reference < ::com::sun::star::drawing::XShape > ) const;
+     };
+ 
++public:
+     typedef std::hash_map< const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape>, sal_Int32, ShapeHash, ShapeCheck> ShapeHashMap;
+-    static ShapeHashMap saShapeMap;
++
++protected:
++    sal_Int32           mnShapeIdMax, mnPictureIdMax;
++
++private:
++    sal_Int32           mnXmlNamespace;
++    Fraction            maFraction;
++    MapMode             maMapModeSrc, maMapModeDest;
++
++    ::com::sun::star::awt::Size MapSize( const ::com::sun::star::awt::Size& ) const;
++
++    ShapeHashMap maShapeMap;
++    ShapeHashMap* mpShapeMap;
+ 
+ public:
+-    ShapeExport( sal_Int32 nXmlNamespace, ::sax_fastparser::FSHelperPtr pFS, ::oox::core::XmlFilterBase* pFB = NULL, DocumentType eDocumentType = DOCUMENT_PPTX );
++
++    ShapeExport( sal_Int32 nXmlNamespace, ::sax_fastparser::FSHelperPtr pFS, ShapeHashMap* pShapeMap = NULL, ::oox::core::XmlFilterBase* pFB = NULL, DocumentType eDocumentType = DOCUMENT_PPTX );
+     virtual ~ShapeExport() {}
+ 
+     sal_Int32           GetXmlNamespace() const;
+@@ -157,8 +162,9 @@ public:
+                         WriteUnknownShape( ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > xShape );
+ 
+     sal_Int32 GetNewShapeID( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > rShape );
+-    static sal_Int32 GetNewShapeID( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > rShape, ::oox::core::XmlFilterBase* pFB );
+-    static sal_Int32 GetShapeID( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > rShape );
++    sal_Int32 GetNewShapeID( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > rShape, ::oox::core::XmlFilterBase* pFB );
++    sal_Int32 GetShapeID( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > rShape );
++    static sal_Int32 GetShapeID( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > rShape, ShapeHashMap* pShapeMap );
+ };
+ 
+ }}
+diff --git oox/source/export/shapes.cxx oox/source/export/shapes.cxx
+index 3306967..a8d62c7 100644
+--- oox/source/export/shapes.cxx
++++ oox/source/export/shapes.cxx
+@@ -358,7 +358,7 @@ namespace oox { namespace drawingml {
+     if ( GETA(propName) ) \
+         mAny >>= variable;
+ 
+-ShapeExport::ShapeExport( sal_Int32 nXmlNamespace, FSHelperPtr pFS, XmlFilterBase* pFB, DocumentType eDocumentType )
++ShapeExport::ShapeExport( sal_Int32 nXmlNamespace, FSHelperPtr pFS, ShapeHashMap* pShapeMap, XmlFilterBase* pFB, DocumentType eDocumentType )
+     : DrawingML( pFS, pFB, eDocumentType )
+     , mnShapeIdMax( 1 )
+     , mnPictureIdMax( 1 )
+@@ -366,6 +366,7 @@ ShapeExport::ShapeExport( sal_Int32 nXmlNamespace, FSHelperPtr pFS, XmlFilterBas
+     , maFraction( 1, 576 )
+     , maMapModeSrc( MAP_100TH_MM )
+     , maMapModeDest( MAP_INCH, Point(), maFraction, maFraction )
++    , mpShapeMap( pShapeMap ? pShapeMap : &maShapeMap )
+ {
+ }
+ 
+@@ -986,26 +987,29 @@ sal_Int32 ShapeExport::GetNewShapeID( const Reference< XShape > rXShape, XmlFilt
+ 
+     sal_Int32 nID = pFB->GetUniqueId();
+ 
+-    saShapeMap[ rXShape ] = nID;
++    (*mpShapeMap)[ rXShape ] = nID;
+ 
+     return nID;
+ }
+ 
+ sal_Int32 ShapeExport::GetShapeID( const Reference< XShape > rXShape )
+ {
++    return GetShapeID( rXShape, mpShapeMap );
++}
++
++sal_Int32 ShapeExport::GetShapeID( const Reference< XShape > rXShape, ShapeHashMap* pShapeMap )
++{
+     if( !rXShape.is() )
+         return -1;
+ 
+-    ShapeHashMap::const_iterator aIter = saShapeMap.find( rXShape );
++    ShapeHashMap::const_iterator aIter = pShapeMap->find( rXShape );
+ 
+-    if( aIter == saShapeMap.end() )
++    if( aIter == pShapeMap->end() )
+         return -1;
+ 
+     return aIter->second;
+ }
+ 
+-ShapeExport::ShapeHashMap ShapeExport::saShapeMap;
+-
+ } }
+ 
+ /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
+diff --git sd/source/filter/pptx/epptooxml.hxx sd/source/filter/pptx/epptooxml.hxx
+index 2c850bd..02d3930 100644
+--- sd/source/filter/pptx/epptooxml.hxx
++++ sd/source/filter/pptx/epptooxml.hxx
+@@ -3,7 +3,7 @@
+ 
+ #include <oox/core/xmlfilterbase.hxx>
+ #include <oox/helper/zipstorage.hxx>
+-
++#include <oox/export/shapes.hxx>
+ #include "epptbase.hxx"
+ 
+ namespace com { namespace sun { namespace star {
+@@ -125,6 +125,8 @@ private:
+     sal_Bool mbCreateNotes;
+ 
+     static sal_Int32 nStyleLevelToken[5];
++
++    ::oox::drawingml::ShapeExport::ShapeHashMap maShapeMap;
+ };
+ 
+ }
+diff --git sd/source/filter/pptx/pptx-epptooxml.cxx sd/source/filter/pptx/pptx-epptooxml.cxx
+index b0aeabf..c71c57f 100644
+--- sd/source/filter/pptx/pptx-epptooxml.cxx
++++ sd/source/filter/pptx/pptx-epptooxml.cxx
+@@ -79,7 +79,7 @@ class PowerPointShapeExport : public ShapeExport
+     PageType            mePageType;
+     sal_Bool            mbMaster;
+ public:
+-                        PowerPointShapeExport( FSHelperPtr pFS, PowerPointExport* pFB );
++    PowerPointShapeExport( FSHelperPtr pFS, ShapeHashMap* pShapeMap, PowerPointExport* pFB );
+     void                SetMaster( sal_Bool bMaster );
+     void                SetPageType( PageType ePageType );
+     ShapeExport&        WriteNonVisualProperties( Reference< XShape > xShape );
+@@ -92,8 +92,8 @@ public:
+     sal_Bool WritePlaceholder( Reference< XShape > xShape, PlaceholderType ePlaceholder, sal_Bool bMaster );
+ };
+ 
+-PowerPointShapeExport::PowerPointShapeExport( FSHelperPtr pFS, PowerPointExport* pFB )
+-    : ShapeExport( XML_p, pFS, pFB )
++    PowerPointShapeExport::PowerPointShapeExport( FSHelperPtr pFS, ShapeHashMap* pShapeMap, PowerPointExport* pFB )
++        : ShapeExport( XML_p, pFS, pShapeMap, pFB )
+     , mrExport( *pFB )
+ {
+ }
+@@ -218,6 +218,7 @@ bool PowerPointExport::importDocument() throw()
+ bool PowerPointExport::exportDocument() throw()
+ {
+     DrawingML::ResetCounters();
++    maShapeMap.clear ();
+ 
+     addRelation( US( "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" ), S( "ppt/presentation.xml" ) );
+ 
+@@ -250,6 +251,8 @@ bool PowerPointExport::exportDocument() throw()
+ 
+     commit();
+ 
++    maShapeMap.clear ();
++
+     return true;
+ }
+ 
+@@ -274,7 +277,7 @@ void PowerPointExport::ImplWriteBackground( FSHelperPtr pFS, Reference< XPropert
+     pFS->startElementNS( XML_p, XML_bg, FSEND );
+     pFS->startElementNS( XML_p, XML_bgPr, FSEND );
+ 
+-    PowerPointShapeExport( pFS, this ).WriteFill( rXPropSet );
++    PowerPointShapeExport( pFS, &maShapeMap, this ).WriteFill( rXPropSet );
+ 
+     pFS->endElementNS( XML_p, XML_bgPr );
+     pFS->endElementNS( XML_p, XML_bg );
+@@ -631,7 +634,7 @@ void PowerPointExport::WriteAnimationTarget( FSHelperPtr pFS, Any aTarget )
+     if( rXShape.is() ) {
+     pFS->startElementNS( XML_p, XML_tgtEl, FSEND );
+     pFS->singleElementNS( XML_p, XML_spTgt,
+-                  XML_spid, I32S( ShapeExport::GetShapeID( rXShape ) ),
++                  XML_spid, I32S( ShapeExport::GetShapeID( rXShape, &maShapeMap ) ),
+                   FSEND );
+     pFS->endElementNS( XML_p, XML_tgtEl );
+     }
+@@ -1440,7 +1443,7 @@ void PowerPointExport::ImplWriteLayout( sal_Int32 nOffset, sal_uInt32 nMasterNum
+ 
+ void PowerPointExport::WriteShapeTree( FSHelperPtr pFS, PageType ePageType, sal_Bool bMaster )
+ {
+-    PowerPointShapeExport aDML( pFS, this );
++    PowerPointShapeExport aDML( pFS, &maShapeMap, this );
+     aDML.SetMaster( bMaster );
+     aDML.SetPageType( ePageType );
+     sal_uInt32 nShapes;
+-- 
+1.7.0.1
+
diff --git a/patches/dev300/oox-pptx-export-animations-filter.diff b/patches/dev300/oox-pptx-export-animations-filter.diff
new file mode 100644
index 0000000..8083ce1
--- /dev/null
+++ b/patches/dev300/oox-pptx-export-animations-filter.diff
@@ -0,0 +1,176 @@
+---
+ sd/source/filter/pptx/epptooxml.hxx            |    2 +
+ sd/source/filter/pptx/pptexanimations.hxx      |    2 +
+ sd/source/filter/pptx/pptx-epptooxml.cxx       |   55 ++++++++++++++++++++----
+ sd/source/filter/pptx/pptx-pptexanimations.cxx |    4 +-
+ 4 files changed, 52 insertions(+), 11 deletions(-)
+
+diff --git sd/source/filter/pptx/epptooxml.hxx sd/source/filter/pptx/epptooxml.hxx
+index 02d3930..44beff3 100644
+--- sd/source/filter/pptx/epptooxml.hxx
++++ sd/source/filter/pptx/epptooxml.hxx
+@@ -85,7 +85,9 @@ protected:
+     void WriteAnimationAttributeName( ::sax_fastparser::FSHelperPtr pFS, const ::rtl::OUString& rAttributeName );
+     void WriteAnimationNode( ::sax_fastparser::FSHelperPtr pFS, const ::com::sun::star::uno::Reference< ::com::sun::star::animations::XAnimationNode >& rXNode, sal_Bool bMainSeqChild );
+     void WriteAnimationNodeAnimate( ::sax_fastparser::FSHelperPtr pFS, const ::com::sun::star::uno::Reference< ::com::sun::star::animations::XAnimationNode >& rXNode, sal_Int32 nXmlNodeType, sal_Bool bMainSeqChild );
++    void WriteAnimationNodeAnimateInside( ::sax_fastparser::FSHelperPtr pFS, const ::com::sun::star::uno::Reference< ::com::sun::star::animations::XAnimationNode >& rXNode, sal_Bool bMainSeqChild, sal_Bool bSimple );
+     void WriteAnimationNodeSeq( ::sax_fastparser::FSHelperPtr pFS, const ::com::sun::star::uno::Reference< ::com::sun::star::animations::XAnimationNode >& rXNode, sal_Int32 nXmlNodeType, sal_Bool bMainSeqChild );
++    void WriteAnimationNodeEffect( ::sax_fastparser::FSHelperPtr pFS, const ::com::sun::star::uno::Reference< ::com::sun::star::animations::XAnimationNode >& rXNode, sal_Int32 nXmlNodeType, sal_Bool bMainSeqChild );
+     void WriteAnimationNodeCommonPropsStart( ::sax_fastparser::FSHelperPtr pFS, const ::com::sun::star::uno::Reference< ::com::sun::star::animations::XAnimationNode >& rXNode, sal_Bool bSingle, sal_Bool bMainSeqChild );
+     void WriteAnimationNodeCommonPropsEnd( ::sax_fastparser::FSHelperPtr pFS );
+     void WriteAnimationProperty( ::sax_fastparser::FSHelperPtr pFS, const ::com::sun::star::uno::Any& rAny );
+diff --git sd/source/filter/pptx/pptexanimations.hxx sd/source/filter/pptx/pptexanimations.hxx
+index e561bab..83bc809 100644
+--- sd/source/filter/pptx/pptexanimations.hxx
++++ sd/source/filter/pptx/pptexanimations.hxx
+@@ -142,6 +142,8 @@ public:
+         static sal_uInt32 TranslatePresetSubType( const sal_uInt32 nPresetClass, const sal_uInt32 nPresetId, const rtl::OUString& rPresetSubType );
+         static sal_uInt32 GetPresetID( const rtl::OUString& rPreset, sal_uInt32 nAPIPresetClass, sal_Bool& bPresetId );
+         static sal_uInt32 GetValueTypeForAttributeName( const rtl::OUString& rAttributeName );
++
++    static const sal_Char* FindTransitionName( const sal_Int16 nType, const sal_Int16 nSubType, const sal_Bool bDirection );
+ };
+ } // namespace ppt
+ 
+diff --git sd/source/filter/pptx/pptx-epptooxml.cxx sd/source/filter/pptx/pptx-epptooxml.cxx
+index c71c57f..220284e 100644
+--- sd/source/filter/pptx/pptx-epptooxml.cxx
++++ sd/source/filter/pptx/pptx-epptooxml.cxx
+@@ -25,6 +25,7 @@
+ #include <com/sun/star/animations/XAnimateSet.hpp>
+ #include <com/sun/star/animations/XAnimationNode.hpp>
+ #include <com/sun/star/animations/XAnimationNodeSupplier.hpp>
++#include <com/sun/star/animations/XTransitionFilter.hpp>
+ #include <com/sun/star/beans/Property.hpp>
+ #include <com/sun/star/beans/XPropertySetInfo.hpp>
+ #include <com/sun/star/container/XEnumerationAccess.hpp>
+@@ -607,6 +608,9 @@ void PowerPointExport::WriteAnimateTo( FSHelperPtr pFS, Any aValue, const OUStri
+ 
+ void PowerPointExport::WriteAnimationAttributeName( FSHelperPtr pFS, const OUString& rAttributeName )
+ {
++    if( ! rAttributeName.getLength() )
++    return;
++
+     pFS->startElementNS( XML_p, XML_attrNameLst, FSEND );
+ 
+     DBG(printf("write attribute name: %s\n", USS( rAttributeName )));
+@@ -648,9 +652,9 @@ void PowerPointExport::WriteAnimationNodeAnimate( FSHelperPtr pFS, const Referen
+ 
+     const char* pCalcMode = NULL;
+     const char* pValueType = NULL;
+-    const char* pAdditive = NULL;
++    sal_Bool bSimple = ( nXmlNodeType != XML_anim );
+ 
+-    if( nXmlNodeType == XML_anim ) {
++    if( !bSimple ) {
+     switch( rXAnimate->getCalcMode() ) {
+         case AnimationCalcMode::DISCRETE:
+         pCalcMode = "discrete";
+@@ -671,7 +675,25 @@ void PowerPointExport::WriteAnimationNodeAnimate( FSHelperPtr pFS, const Referen
+         pValueType = "clr";
+         break;
+     }
++    }
++
++    pFS->startElementNS( XML_p, nXmlNodeType,
++             XML_calcmode, pCalcMode,
++             XML_valueType, pValueType,
++             FSEND );
++    WriteAnimationNodeAnimateInside( pFS, rXNode, bMainSeqChild, bSimple );
++    pFS->endElementNS( XML_p, nXmlNodeType );
++}
++
++void PowerPointExport::WriteAnimationNodeAnimateInside( FSHelperPtr pFS, const Reference< XAnimationNode >& rXNode, sal_Bool bMainSeqChild, sal_Bool bSimple )
++{
++    Reference< XAnimate > rXAnimate( rXNode, UNO_QUERY );
++    if( !rXAnimate.is() )
++    return;
++
++    const char* pAdditive = NULL;
+ 
++    if( !bSimple ) {
+     switch( rXAnimate->getAdditive() ) {
+         case AnimationAdditiveMode::BASE:
+         pAdditive = "base";
+@@ -691,10 +713,6 @@ void PowerPointExport::WriteAnimationNodeAnimate( FSHelperPtr pFS, const Referen
+     }
+     }
+ 
+-    pFS->startElementNS( XML_p, nXmlNodeType,
+-             XML_calcmode, pCalcMode,
+-             XML_valueType, pValueType,
+-             FSEND );
+     pFS->startElementNS( XML_p, XML_cBhvr,
+              XML_additive, pAdditive,
+              FSEND );
+@@ -704,7 +722,6 @@ void PowerPointExport::WriteAnimationNodeAnimate( FSHelperPtr pFS, const Referen
+     pFS->endElementNS( XML_p, XML_cBhvr );
+     WriteAnimateValues( pFS, rXAnimate );
+     WriteAnimateTo( pFS, rXAnimate->getTo(), rXAnimate->getAttributeName() );
+-    pFS->endElementNS( XML_p, nXmlNodeType );
+ }
+ 
+ void PowerPointExport::WriteAnimationCondition( FSHelperPtr pFS, const char* pDelay, const char* pEvent, double fDelay, sal_Bool bHasFDelay )
+@@ -1014,6 +1031,25 @@ void PowerPointExport::WriteAnimationNodeSeq( FSHelperPtr pFS, const Reference<
+     pFS->endElementNS( XML_p, XML_seq );
+ }
+ 
++void PowerPointExport::WriteAnimationNodeEffect( FSHelperPtr pFS, const Reference< XAnimationNode >& rXNode, sal_Int32, sal_Bool bMainSeqChild )
++{
++    DBG(printf ("write animation node FILTER\n"));
++
++    Reference< XTransitionFilter > xFilter( rXNode, UNO_QUERY );
++    if ( xFilter.is() ) {
++    const char* pFilter = ppt::AnimationExporter::FindTransitionName( xFilter->getTransition(), xFilter->getSubtype(), xFilter->getDirection() );
++    const char* pDirection = xFilter->getDirection() ? "in" : "out";
++    pFS->startElementNS( XML_p, XML_animEffect,
++                 XML_filter, pFilter,
++                 XML_transition, pDirection,
++                 FSEND );
++
++    WriteAnimationNodeAnimateInside( pFS, rXNode, bMainSeqChild, FALSE );
++
++    pFS->endElementNS( XML_p, XML_animEffect );
++    }
++}
++
+ void PowerPointExport::WriteAnimationNode( FSHelperPtr pFS, const Reference< XAnimationNode >& rXNode, sal_Bool bMainSeqChild )
+ {
+     DBG(printf ("export node type: %d\n", rXNode->getType()));
+@@ -1036,8 +1072,9 @@ void PowerPointExport::WriteAnimationNode( FSHelperPtr pFS, const Reference< XAn
+         xmlNodeType = XML_set;
+         pMethod = &PowerPointExport::WriteAnimationNodeAnimate;
+         break;
+-// 	case AnimationNodeType::TRANSITIONFILTER:
+-// 	    xmlNodeType = XML_xfrm;
++    case AnimationNodeType::TRANSITIONFILTER:
++        xmlNodeType = XML_animEffect;
++        pMethod = &PowerPointExport::WriteAnimationNodeEffect;
+         break;
+     }
+ 
+diff --git sd/source/filter/pptx/pptx-pptexanimations.cxx sd/source/filter/pptx/pptx-pptexanimations.cxx
+index e2d8593..5a48766 100644
+--- sd/source/filter/pptx/pptx-pptexanimations.cxx
++++ sd/source/filter/pptx/pptx-pptexanimations.cxx
+@@ -243,7 +243,7 @@ sal_uInt32 AnimationExporter::TranslatePresetSubType( const sal_uInt32 nPresetCl
+     return nPresetSubType;
+ }
+ 
+-const sal_Char* transition::find( const sal_Int16 nType, const sal_Int16 nSubType, const sal_Bool bDirection )
++const sal_Char* AnimationExporter::FindTransitionName( const sal_Int16 nType, const sal_Int16 nSubType, const sal_Bool bDirection )
+ {
+     const sal_Char* pRet = NULL;
+     int				nFit = 0;
+@@ -1943,7 +1943,7 @@ void AnimationExporter::exportTransitionFilter( SvStream& rStrm, const Reference
+             rStrm << nBits
+                   << nTransition;
+         }
+-        const sal_Char* pFilter = transition::find( xFilter->getTransition(), xFilter->getSubtype(), xFilter->getDirection() );
++        const sal_Char* pFilter = FindTransitionName( xFilter->getTransition(), xFilter->getSubtype(), xFilter->getDirection() );
+         if ( pFilter )
+         {
+             const OUString aStr( OUString::createFromAscii( pFilter ) );
+-- 
+1.7.0.1
+
diff --git a/patches/dev300/oox-pptx-export-animations-paragraph-target.diff b/patches/dev300/oox-pptx-export-animations-paragraph-target.diff
new file mode 100644
index 0000000..243b341
--- /dev/null
+++ b/patches/dev300/oox-pptx-export-animations-paragraph-target.diff
@@ -0,0 +1,163 @@
+---
+ sd/source/filter/pptx/pptexanimations.hxx      |    1 +
+ sd/source/filter/pptx/pptx-epptooxml.cxx       |   17 ++++-
+ sd/source/filter/pptx/pptx-pptexanimations.cxx |   87 ++++++++++++++----------
+ 3 files changed, 66 insertions(+), 39 deletions(-)
+
+diff --git sd/source/filter/pptx/pptexanimations.hxx sd/source/filter/pptx/pptexanimations.hxx
+index 83bc809..d48591a 100644
+--- sd/source/filter/pptx/pptexanimations.hxx
++++ sd/source/filter/pptx/pptexanimations.hxx
+@@ -144,6 +144,7 @@ public:
+         static sal_uInt32 GetValueTypeForAttributeName( const rtl::OUString& rAttributeName );
+ 
+     static const sal_Char* FindTransitionName( const sal_Int16 nType, const sal_Int16 nSubType, const sal_Bool bDirection );
++    static ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > getTargetElementShape( const ::com::sun::star::uno::Any& rAny, sal_Int32& rBegin, sal_Int32& rEnd, sal_Bool& rParagraphTarget );
+ };
+ } // namespace ppt
+ 
+diff --git sd/source/filter/pptx/pptx-epptooxml.cxx sd/source/filter/pptx/pptx-epptooxml.cxx
+index 220284e..d25e178 100644
+--- sd/source/filter/pptx/pptx-epptooxml.cxx
++++ sd/source/filter/pptx/pptx-epptooxml.cxx
+@@ -633,13 +633,24 @@ void PowerPointExport::WriteAnimationAttributeName( FSHelperPtr pFS, const OUStr
+ 
+ void PowerPointExport::WriteAnimationTarget( FSHelperPtr pFS, Any aTarget )
+ {
+-    Reference< XShape > rXShape( aTarget, UNO_QUERY );
++    sal_Int32 nBegin = -1, nEnd = -1;
++    sal_Bool bParagraphTarget;
++    Reference< XShape > rXShape = AnimationExporter::getTargetElementShape( aTarget, nBegin, nEnd, bParagraphTarget );
+ 
+     if( rXShape.is() ) {
+     pFS->startElementNS( XML_p, XML_tgtEl, FSEND );
+-    pFS->singleElementNS( XML_p, XML_spTgt,
+-                  XML_spid, I32S( ShapeExport::GetShapeID( rXShape, &maShapeMap ) ),
++    pFS->startElementNS( XML_p, XML_spTgt,
++                 XML_spid, I32S( ShapeExport::GetShapeID( rXShape, &maShapeMap ) ),
++                 FSEND );
++    if( bParagraphTarget ) {
++        pFS->startElementNS( XML_p, XML_txEl, FSEND );
++        pFS->singleElementNS( XML_p, XML_pRg,
++                  XML_st, I32S( nBegin ),
++                  XML_end, I32S( nEnd ),
+                   FSEND );
++        pFS->endElementNS( XML_p, XML_txEl );
++    }
++    pFS->endElementNS( XML_p, XML_spTgt );
+     pFS->endElementNS( XML_p, XML_tgtEl );
+     }
+ }
+diff --git sd/source/filter/pptx/pptx-pptexanimations.cxx sd/source/filter/pptx/pptx-pptexanimations.cxx
+index 5a48766..3d4e90d 100644
+--- sd/source/filter/pptx/pptx-pptexanimations.cxx
++++ sd/source/filter/pptx/pptx-pptexanimations.cxx
+@@ -1761,54 +1761,69 @@ void AnimationExporter::exportAnimateTarget( SvStream& rStrm, const Reference< X
+     }
+ }
+ 
+-void AnimationExporter::exportAnimateTargetElement( SvStream& rStrm, const Any aAny, const sal_Bool bCreate2b01Atom )
++Reference< XShape > AnimationExporter::getTargetElementShape( const Any& rAny, sal_Int32& rBegin, sal_Int32& rEnd, sal_Bool& rParagraphTarget )
+ {
+     Reference< XShape > xShape;
+-    aAny >>= xShape;
+-    sal_uInt32 nRefMode = 0;	// nRefMode == 2 -> Paragraph
+-    sal_Int32 begin = -1;
+-    sal_Int32 end = -1;
++    rAny >>= xShape;
++
++    rParagraphTarget = sal_False;
+ 
+     if( !xShape.is() )
+     {
+-        ParagraphTarget aParaTarget;
+-        if( aAny >>= aParaTarget )
+-            xShape = aParaTarget.Shape;
+-        if ( xShape.is() )
++    ParagraphTarget aParaTarget;
++    if( rAny >>= aParaTarget )
++        xShape = aParaTarget.Shape;
++    if ( xShape.is() )
++    {
++        // now calculating the character range for the paragraph
++        sal_Int16 nParagraph = aParaTarget.Paragraph;
++        Reference< XSimpleText > xText( xShape, UNO_QUERY );
++        if ( xText.is() )
++        {
++        rParagraphTarget = sal_True;
++        Reference< XEnumerationAccess > xTextParagraphEnumerationAccess( xText, UNO_QUERY );
++        if ( xTextParagraphEnumerationAccess.is() )
+         {
+-            // now calculating the character range for the paragraph
+-            sal_Int16 nParagraph = aParaTarget.Paragraph;
+-            Reference< XSimpleText > xText( xShape, UNO_QUERY );
+-            if ( xText.is() )
++            Reference< XEnumeration > xTextParagraphEnumeration( xTextParagraphEnumerationAccess->createEnumeration() );
++            if ( xTextParagraphEnumeration.is() )
+             {
+-                nRefMode = 2;
+-                Reference< XEnumerationAccess > xTextParagraphEnumerationAccess( xText, UNO_QUERY );
+-                if ( xTextParagraphEnumerationAccess.is() )
++            sal_Int16 nCurrentParagraph;
++            rBegin = rEnd = nCurrentParagraph = 0;
++            while ( xTextParagraphEnumeration->hasMoreElements() )
++            {
++                Reference< XTextRange > xTextRange( xTextParagraphEnumeration->nextElement(), UNO_QUERY );
++                if ( xTextRange.is() )
+                 {
+-                    Reference< XEnumeration > xTextParagraphEnumeration( xTextParagraphEnumerationAccess->createEnumeration() );
+-                    if ( xTextParagraphEnumeration.is() )
+-                    {
+-                        sal_Int16 nCurrentParagraph;
+-                        begin = end = nCurrentParagraph = 0;
+-                        while ( xTextParagraphEnumeration->hasMoreElements() )
+-                        {
+-                            Reference< XTextRange > xTextRange( xTextParagraphEnumeration->nextElement(), UNO_QUERY );
+-                            if ( xTextRange.is() )
+-                            {
+-                                rtl::OUString aParaText( xTextRange->getString() );
+-                                sal_Int32 nLength = aParaText.getLength() + 1;
+-                                end += nLength;
+-                                if ( nCurrentParagraph == nParagraph )
+-                                    break;
+-                                nCurrentParagraph++;
+-                                begin += nLength;
+-                            }
+-                        }
+-                    }
++                rtl::OUString aParaText( xTextRange->getString() );
++                sal_Int32 nLength = aParaText.getLength() + 1;
++                rEnd += nLength;
++                if ( nCurrentParagraph == nParagraph )
++                    break;
++                nCurrentParagraph++;
++                rBegin += nLength;
+                 }
+             }
++            }
+         }
++        }
++    }
+     }
++
++    return xShape;
++}
++
++void AnimationExporter::exportAnimateTargetElement( SvStream& rStrm, const Any aAny, const sal_Bool bCreate2b01Atom )
++{
++    sal_uInt32 nRefMode = 0;	// nRefMode == 2 -> Paragraph
++    sal_Int32 begin = -1;
++    sal_Int32 end = -1;
++    sal_Bool bParagraphTarget;
++
++    Reference< XShape > xShape = getTargetElementShape( aAny, begin, end, bParagraphTarget );
++
++    if( bParagraphTarget )
++        nRefMode = 2;
++
+     if ( xShape.is() || bCreate2b01Atom )
+     {
+         EscherExContainer aAnimateTargetElement( rStrm, DFF_msofbtAnimateTargetElement );
+-- 
+1.7.0.1
+
diff --git a/patches/dev300/oox-pptx-export-blip-luminance.diff b/patches/dev300/oox-pptx-export-blip-luminance.diff
new file mode 100644
index 0000000..c2be08c
--- /dev/null
+++ b/patches/dev300/oox-pptx-export-blip-luminance.diff
@@ -0,0 +1,78 @@
+---
+ oox/inc/oox/export/drawingml.hxx |    2 +-
+ oox/source/export/drawingml.cxx  |   22 +++++++++++++++++-----
+ oox/source/export/shapes.cxx     |    2 +-
+ 3 files changed, 19 insertions(+), 7 deletions(-)
+
+diff --git oox/inc/oox/export/drawingml.hxx oox/inc/oox/export/drawingml.hxx
+index f085df8..211c90e 100644
+--- oox/inc/oox/export/drawingml.hxx
++++ oox/inc/oox/export/drawingml.hxx
+@@ -81,7 +81,7 @@ public:
+     void WriteStretch();
+     void WriteLinespacing( ::com::sun::star::style::LineSpacing& rLineSpacing );
+ 
+-    ::rtl::OUString WriteBlip( ::rtl::OUString& rURL );
++    ::rtl::OUString WriteBlip( ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > rXPropSet, ::rtl::OUString& rURL );
+     void WriteBlipMode( ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > rXPropSet );
+ 
+     void WriteShapeTransformation( ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > rXShape,
+diff --git oox/source/export/drawingml.cxx oox/source/export/drawingml.cxx
+index 891750a..bd4854a 100644
+--- oox/source/export/drawingml.cxx
++++ oox/source/export/drawingml.cxx
+@@ -566,13 +566,25 @@ OUString DrawingML::WriteImage( const Graphic& rGraphic )
+     return sRelId;
+ }
+ 
+-OUString DrawingML::WriteBlip( OUString& rURL )
++OUString DrawingML::WriteBlip( Reference< XPropertySet > rXPropSet, OUString& rURL )
+ {
+         OUString sRelId = WriteImage( rURL );
++    sal_Int16 nBright = 0;
++    sal_Int32 nContrast = 0;
++
++    GET( nBright, AdjustLuminance );
++    GET( nContrast, AdjustContrast );
++
++        mpFS->startElementNS( XML_a, XML_blip,
++                  FSNS( XML_r, XML_embed), OUStringToOString( sRelId, RTL_TEXTENCODING_UTF8 ).getStr(),
++                  FSEND );
++    if( nBright || nContrast )
++        mpFS->singleElementNS( XML_a, XML_lum,
++                   XML_bright, nBright ? I32S( nBright*1000 ) : NULL,
++                   XML_contrast, nContrast ? I32S( nContrast*1000 ) : NULL,
++                   FSEND );
+ 
+-        mpFS->singleElementNS( XML_a, XML_blip,
+-                               FSNS( XML_r, XML_embed), OUStringToOString( sRelId, RTL_TEXTENCODING_UTF8 ).getStr(),
+-                               FSEND );
++        mpFS->endElementNS( XML_a, XML_blip );
+ 
+         return sRelId;
+ }
+@@ -612,7 +624,7 @@ void DrawingML::WriteBlipFill( Reference< XPropertySet > rXPropSet, String sURLP
+ 
+         mpFS->startElementNS( nXmlNamespace , XML_blipFill, FSEND );
+ 
+-        WriteBlip( aURL );
++        WriteBlip( rXPropSet, aURL );
+ 
+         if( sURLPropName == S( "FillBitmapURL" ) )
+             WriteBlipMode( rXPropSet );
+diff --git oox/source/export/shapes.cxx oox/source/export/shapes.cxx
+index a8d62c7..71d3f9c 100644
+--- oox/source/export/shapes.cxx
++++ oox/source/export/shapes.cxx
+@@ -649,7 +649,7 @@ ShapeExport& ShapeExport::WriteGraphicObjectShape( Reference< XShape > xShape )
+ 
+     pFS->startElementNS( mnXmlNamespace, XML_blipFill, FSEND );
+     
+-    WriteBlip( sGraphicURL );
++    WriteBlip( xShapeProps, sGraphicURL );
+ 
+     bool bStretch = false;
+     if( ( xShapeProps->getPropertyValue( S( "FillBitmapStretch" ) ) >>= bStretch ) && bStretch )
+-- 
+1.7.0.1
+
diff --git a/patches/dev300/oox-pptx-export-fix-action-button-presets.diff b/patches/dev300/oox-pptx-export-fix-action-button-presets.diff
new file mode 100644
index 0000000..6df0032
--- /dev/null
+++ b/patches/dev300/oox-pptx-export-fix-action-button-presets.diff
@@ -0,0 +1,23 @@
+---
+ oox/source/export/drawingml.cxx |    5 ++++-
+ 1 files changed, 4 insertions(+), 1 deletions(-)
+
+diff --git oox/source/export/drawingml.cxx oox/source/export/drawingml.cxx
+index 73f5f3e..891750a 100644
+--- oox/source/export/drawingml.cxx
++++ oox/source/export/drawingml.cxx
+@@ -1328,7 +1328,10 @@ void DrawingML::WritePresetShape( const char* pShape, MSO_SPT eShapeType, sal_Bo
+     mpFS->startElementNS( XML_a, XML_avLst, FSEND );
+ 
+     Sequence< drawing::EnhancedCustomShapeAdjustmentValue > aAdjustmentSeq;
+-    if ( rProp.Value >>= aAdjustmentSeq ) {
++    if ( ( rProp.Value >>= aAdjustmentSeq )
++     && eShapeType != mso_sptActionButtonForwardNext  // we have adjustments values for these type of shape, but MSO doesn't like them
++     && eShapeType != mso_sptActionButtonBackPrevious // so they are now disabled
++    ) {
+         DBG(printf("adj seq len: %d\n", int( aAdjustmentSeq.getLength() )));
+         if ( bPredefinedHandlesUsed )
+             EscherPropertyContainer::LookForPolarHandles( eShapeType, nAdjustmentsWhichNeedsToBeConverted );
+-- 
+1.7.0.1
+
diff --git a/patches/dev300/oox-pptx-export-fix-hidden-slides.diff b/patches/dev300/oox-pptx-export-fix-hidden-slides.diff
new file mode 100644
index 0000000..ec85fcc
--- /dev/null
+++ b/patches/dev300/oox-pptx-export-fix-hidden-slides.diff
@@ -0,0 +1,30 @@
+---
+ sd/source/filter/pptx/pptx-epptooxml.cxx |   12 +++++++++++-
+ 1 files changed, 11 insertions(+), 1 deletions(-)
+
+diff --git sd/source/filter/pptx/pptx-epptooxml.cxx sd/source/filter/pptx/pptx-epptooxml.cxx
+index c7efa9c..b0aeabf 100644
+--- sd/source/filter/pptx/pptx-epptooxml.cxx
++++ sd/source/filter/pptx/pptx-epptooxml.cxx
+@@ -1114,7 +1114,17 @@ void PowerPointExport::ImplWriteSlide( sal_uInt32 nPageNum, sal_uInt32 nMasterNu
+     mpSlidesFSArray.resize( mnPages );
+     mpSlidesFSArray[ nPageNum ] = pFS;
+ 
+-    pFS->startElementNS( XML_p, XML_sld, PNMSS, FSEND );
++    const char* pShow = NULL;
++
++    if( GETA( Visible ) ) {
++    sal_Bool bShow;
++    if( ( mAny >>= bShow ) && !bShow )
++        pShow = "0";
++    }
++
++    pFS->startElementNS( XML_p, XML_sld, PNMSS,
++             XML_show, pShow,
++             FSEND );
+ 
+     pFS->startElementNS( XML_p, XML_cSld, FSEND );
+ 
+-- 
+1.7.0.1
+
diff --git a/patches/dev300/oox-pptx-export-hyperlinks.diff b/patches/dev300/oox-pptx-export-hyperlinks.diff
new file mode 100644
index 0000000..2e93fea
--- /dev/null
+++ b/patches/dev300/oox-pptx-export-hyperlinks.diff
@@ -0,0 +1,133 @@
+---
+ oox/inc/oox/export/drawingml.hxx |    4 +-
+ oox/source/export/drawingml.cxx  |   41 +++++++++++++++++++++++++++++++------
+ 2 files changed, 36 insertions(+), 9 deletions(-)
+
+diff --git oox/inc/oox/export/drawingml.hxx oox/inc/oox/export/drawingml.hxx
+index da5865a..b9ebc0b 100644
+--- oox/inc/oox/export/drawingml.hxx
++++ oox/inc/oox/export/drawingml.hxx
+@@ -52,7 +52,7 @@ protected:
+     bool GetPropertyAndState( ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > rXPropSet,
+                   ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyState > rXPropState,
+                   String aName, ::com::sun::star::beans::PropertyState& eState );
+-    const char* GetFieldType( ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > rRun );
++    const char* GetFieldType( ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > rRun, sal_Bool& bIsField );
+ 
+     rtl::OUString WriteImage( const rtl::OUString& rURL );
+ 
+@@ -91,7 +91,7 @@ public:
+     void WriteParagraphNumbering( ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > rXPropSet,
+                                   sal_Int16 nLevel );
+     void WriteRun( ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > rRun );
+-    void WriteRunProperties( ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > rRun );
++    void WriteRunProperties( ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > rRun, sal_Bool bIsField );
+ 
+     void WritePresetShape( const char* pShape );
+     void WritePresetShape( const char* pShape, MSO_SPT eShapeType, sal_Bool bPredefinedHandlesUsed, sal_Int32 nAdjustmentsWhichNeedsToBeConverted, const ::com::sun::star::beans::PropertyValue& rProp );
+diff --git oox/source/export/drawingml.cxx oox/source/export/drawingml.cxx
+index 1e4a9a0..679dfdd 100644
+--- oox/source/export/drawingml.cxx
++++ oox/source/export/drawingml.cxx
+@@ -613,7 +613,7 @@ void DrawingML::WriteShapeTransformation( Reference< XShape > rXShape, sal_Bool
+     WriteTransformation( Rectangle( Point( aPos.X, aPos.Y ), Size( aSize.Width, aSize.Height ) ), bFlipH, bFlipV, nRotation );
+ }
+ 
+-void DrawingML::WriteRunProperties( Reference< XTextRange > rRun )
++void DrawingML::WriteRunProperties( Reference< XTextRange > rRun, sal_Bool bIsField )
+ {
+     Reference< XPropertySet > rXPropSet( rRun, UNO_QUERY );
+     Reference< XPropertyState > rXPropState( rRun, UNO_QUERY );
+@@ -778,10 +778,33 @@ void DrawingML::WriteRunProperties( Reference< XTextRange > rRun )
+                                FSEND );
+     }
+ 
++    if( bIsField ) {
++        Reference< XTextField > rXTextField;
++        GET( rXTextField, TextField );
++        if( rXTextField.is() )
++            rXPropSet.set( rXTextField, UNO_QUERY );
++    }
++
++    // field properties starts here
++    if( GETA( URL ) ) {
++    OUString sURL;
++
++    mAny >>= sURL;
++    if( sURL.getLength() ) {
++        OUString sRelId = mpFB->addRelation( mpFS->getOutputStream(),
++                              US( "http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink" ),
++                              sURL, US( "External" ) );
++
++        mpFS->singleElementNS( XML_a, XML_hlinkClick,
++                   FSNS( XML_r,XML_id ), USS( sRelId ),
++                   FSEND );
++    }
++    }
++
+     mpFS->endElementNS( XML_a, XML_rPr );
+ }
+ 
+-const char* DrawingML::GetFieldType( ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > rRun )
++const char* DrawingML::GetFieldType( ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > rRun, sal_Bool& bIsField )
+ {
+     const char* sType = NULL;
+     Reference< XPropertySet > rXPropSet( rRun, UNO_QUERY );
+@@ -796,6 +819,7 @@ const char* DrawingML::GetFieldType( ::com::sun::star::uno::Reference< ::com::su
+         Reference< XTextField > rXTextField;
+         GET( rXTextField, TextField );
+         if( rXTextField.is() ) {
++        bIsField = sal_True;
+             rXPropSet.set( rXTextField, UNO_QUERY );
+             if( rXPropSet.is() ) {
+                 String aFieldKind( rXTextField->getPresentation( TRUE ) );
+@@ -803,6 +827,10 @@ const char* DrawingML::GetFieldType( ::com::sun::star::uno::Reference< ::com::su
+                 if( aFieldKind == S( "Page" ) ) {
+                     return "slidenum";
+                 }
++        // else if( aFieldKind == S( "URL" ) ) {
++        // do not return here
++        // and make URL field text run with hyperlink property later
++        // }
+             }
+         }
+     }
+@@ -848,13 +876,13 @@ void DrawingML::GetUUID( OStringBuffer& rBuffer )
+ void DrawingML::WriteRun( Reference< XTextRange > rRun )
+ {
+     const char* sFieldType;
+-    bool bIsField = false;
++    sal_Bool bIsField = sal_False;
+     OUString sText = rRun->getString();
+ 
+     if( sText.getLength() < 1)
+         return;
+ 
+-    if( ( sFieldType = GetFieldType( rRun ) ) ) {
++    if( ( sFieldType = GetFieldType( rRun, bIsField ) ) ) {
+         OStringBuffer sUUID(39);
+ 
+         GetUUID( sUUID );
+@@ -862,17 +890,16 @@ void DrawingML::WriteRun( Reference< XTextRange > rRun )
+                               XML_id, sUUID.getStr(),
+                               XML_type, sFieldType,
+                               FSEND );
+-        bIsField = true;
+     } else
+         mpFS->startElementNS( XML_a, XML_r, FSEND );
+ 
+-    WriteRunProperties( rRun );
++    WriteRunProperties( rRun, bIsField );
+ 
+     mpFS->startElementNS( XML_a, XML_t, FSEND );
+     mpFS->writeEscaped( sText );
+     mpFS->endElementNS( XML_a, XML_t );
+ 
+-    if( bIsField )
++    if( sFieldType )
+         mpFS->endElementNS( XML_a, XML_fld );
+     else
+         mpFS->endElementNS( XML_a, XML_r );
+-- 
+1.7.0.1
+
diff --git a/patches/dev300/oox-pptx-export-para-linespacing.diff b/patches/dev300/oox-pptx-export-para-linespacing.diff
new file mode 100644
index 0000000..b7997e8
--- /dev/null
+++ b/patches/dev300/oox-pptx-export-para-linespacing.diff
@@ -0,0 +1,181 @@
+---
+ oox/inc/oox/export/drawingml.hxx |    4 ++
+ oox/source/export/drawingml.cxx  |   81 ++++++++++++++++++++++++++++++++++++--
+ 2 files changed, 81 insertions(+), 4 deletions(-)
+
+diff --git oox/inc/oox/export/drawingml.hxx oox/inc/oox/export/drawingml.hxx
+index b9ebc0b..f085df8 100644
+--- oox/inc/oox/export/drawingml.hxx
++++ oox/inc/oox/export/drawingml.hxx
+@@ -20,6 +20,9 @@ namespace beans {
+ namespace drawing {
+     class XShape;
+ }
++namespace style {
++    struct LineSpacing;
++}
+ namespace text {
+     class XTextContent;
+     class XTextRange;
+@@ -76,6 +79,7 @@ public:
+     void WriteBlipFill( ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > rXPropSet, String sURLPropName );
+     void WriteOutline( ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > rXPropSet );
+     void WriteStretch();
++    void WriteLinespacing( ::com::sun::star::style::LineSpacing& rLineSpacing );
+ 
+     ::rtl::OUString WriteBlip( ::rtl::OUString& rURL );
+     void WriteBlipMode( ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > rXPropSet );
+diff --git oox/source/export/drawingml.cxx oox/source/export/drawingml.cxx
+index 752ead6..73f5f3e 100644
+--- oox/source/export/drawingml.cxx
++++ oox/source/export/drawingml.cxx
+@@ -39,6 +39,8 @@
+ #include <com/sun/star/awt/Gradient.hpp>
+ #include <com/sun/star/beans/XPropertySet.hpp>
+ #include <com/sun/star/beans/XPropertyState.hpp>
++#include <com/sun/star/beans/Property.hpp>
++#include <com/sun/star/beans/XPropertySetInfo.hpp>
+ #include <com/sun/star/container/XEnumerationAccess.hpp>
+ #include <com/sun/star/container/XIndexAccess.hpp>
+ #include <com/sun/star/drawing/BitmapMode.hpp>
+@@ -51,6 +53,8 @@
+ #include <com/sun/star/drawing/XShape.hpp>
+ #include <com/sun/star/i18n/ScriptType.hpp>
+ #include <com/sun/star/io/XOutputStream.hpp>
++#include <com/sun/star/style/LineSpacing.hpp>
++#include <com/sun/star/style/LineSpacingMode.hpp>
+ #include <com/sun/star/style/ParagraphAdjust.hpp>
+ #include <com/sun/star/text/WritingMode.hpp>
+ #include <com/sun/star/text/XText.hpp>
+@@ -70,10 +74,12 @@
+ #include <editeng/svxenum.hxx>
+ 
+ using namespace ::com::sun::star;
+-using namespace ::com::sun::star::uno;
++using namespace ::com::sun::star::beans;
+ using namespace ::com::sun::star::drawing;
+-using namespace ::com::sun::star::text;
+ using namespace ::com::sun::star::i18n;
++using namespace ::com::sun::star::text;
++using namespace ::com::sun::star::style;
++using namespace ::com::sun::star::uno;
+ using ::com::sun::star::beans::PropertyState;
+ using ::com::sun::star::beans::PropertyValue;
+ using ::com::sun::star::beans::XPropertySet;
+@@ -82,6 +88,7 @@ using ::com::sun::star::container::XEnumeration;
+ using ::com::sun::star::container::XEnumerationAccess;
+ using ::com::sun::star::container::XIndexAccess;
+ using ::com::sun::star::io::XOutputStream;
++using ::com::sun::star::style::LineSpacing;
+ using ::com::sun::star::text::XText;
+ using ::com::sun::star::text::XTextContent;
+ using ::com::sun::star::text::XTextField;
+@@ -106,6 +113,44 @@ namespace drawingml {
+ #define GET(variable, propName) \
+     if ( GETA(propName) ) \
+         mAny >>= variable;
++DBG(
++void lcl_dump_pset(Reference< XPropertySet > rXPropSet)
++{
++    Reference< XPropertySetInfo > info = rXPropSet->getPropertySetInfo ();
++    Sequence< beans::Property > props = info->getProperties ();
++
++    for (int i=0; i < props.getLength (); i++) {
++        OString name = OUStringToOString( props [i].Name, RTL_TEXTENCODING_UTF8);
++        fprintf (stderr,"%30s = ", name.getStr() );
++
++        try {
++            Any value = rXPropSet->getPropertyValue( props [i].Name );
++       
++            OUString strValue;
++            sal_Int32 intValue;
++            bool boolValue;
++            LineSpacing spacing;
++//             RectanglePoint pointValue;
++       
++            if( value >>= strValue )
++                fprintf (stderr,"\"%s\"\n", USS( strValue ) );
++            else if( value >>= intValue )
++                fprintf (stderr,"%d            (hex: %x)\n", intValue, intValue);
++            else if( value >>= boolValue )
++                fprintf (stderr,"%d            (bool)\n", boolValue);
++            else if( value >>= spacing ) {
++                fprintf (stderr, "mode: %d value: %d\n", spacing.Mode, spacing.Height);
++            }
++//             else if( value >>= pointValue )
++//                 fprintf (stderr,"%d            (RectanglePoint)\n", pointValue);
++            else
++                fprintf (stderr,"???           <unhandled type>\n");
++        } catch(Exception e) {
++            fprintf (stderr,"unable to get '%s' value\n", USS(props [i].Name));
++        }
++    }
++}
++);
+ 
+ // not thread safe
+ int DrawingML::mnImageCounter = 1;
+@@ -1083,14 +1128,30 @@ const char* DrawingML::GetAlignment( sal_Int32 nAlignment )
+     return sAlignment;
+ }
+ 
++void DrawingML::WriteLinespacing( LineSpacing& rSpacing )
++{
++    if( rSpacing.Mode == LineSpacingMode::PROP )
++        mpFS->singleElementNS( XML_a, XML_spcPct,
++                   XML_val, I32S( ((sal_Int32)rSpacing.Height)*1000 ),
++                   FSEND );
++    else
++        mpFS->singleElementNS( XML_a, XML_spcPts,
++                   XML_val, I32S( rSpacing.Height ),
++                   FSEND );
++}
++
+ void DrawingML::WriteParagraphProperties( Reference< XTextContent > rParagraph )
+ {
+     Reference< XPropertySet > rXPropSet( rParagraph, UNO_QUERY );
+     Reference< XPropertyState > rXPropState( rParagraph, UNO_QUERY );
++    PropertyState eState;
+ 
+     if( !rXPropSet.is() || !rXPropState.is() )
+         return;
+ 
++    //OSL_TRACE("write paragraph properties pset");
++    //DBG(lcl_dump_pset(rXPropSet));
++
+     sal_Int16 nLevel = -1;
+     GET( nLevel, NumberingLevel );
+ 
+@@ -1101,15 +1162,27 @@ void DrawingML::WriteParagraphProperties( Reference< XTextContent > rParagraph )
+     sal_Int16 nAlignment( style::ParagraphAdjust_LEFT );
+     GET( nAlignment, ParaAdjust );
+ 
++    sal_Bool bHasLinespacing = sal_False;
++    LineSpacing aLineSpacing;
++    if( GETAD( ParaLineSpacing ) )
++    bHasLinespacing = ( mAny >>= aLineSpacing );
++
+     if( nLevel != -1
+-            || nLeftMargin > 0
+-            || nAlignment != style::ParagraphAdjust_LEFT ) {
++            || nLeftMargin > 0
++            || nAlignment != style::ParagraphAdjust_LEFT
++            || bHasLinespacing ) {
+         mpFS->startElementNS( XML_a, XML_pPr,
+                               XML_lvl, nLevel > 0 ? I32S( nLevel ) : NULL,
+                               XML_marL, nLeftMargin > 0 ? IS( nLeftMargin ) : NULL,
+                               XML_algn, GetAlignment( nAlignment ),
+                               FSEND );
+ 
++        if( bHasLinespacing ) {
++            mpFS->startElementNS( XML_a, XML_lnSpc, FSEND );
++            WriteLinespacing( aLineSpacing );
++            mpFS->endElementNS( XML_a, XML_lnSpc );
++        }
++
+         WriteParagraphNumbering( rXPropSet, nLevel );
+ 
+         mpFS->endElementNS( XML_a, XML_pPr );
+-- 
+1.7.0.1
+
diff --git a/patches/dev300/oox-pptx-export-update-to-ooo320.diff b/patches/dev300/oox-pptx-export-update-to-ooo320.diff
new file mode 100644
index 0000000..fb2ca90
--- /dev/null
+++ b/patches/dev300/oox-pptx-export-update-to-ooo320.diff
@@ -0,0 +1,198 @@
+---
+ sd/source/filter/pptx/epptooxml.hxx            |    4 +-
+ sd/source/filter/pptx/pptx-epptooxml.cxx       |   78 +++++++++++-------------
+ sd/source/filter/pptx/pptx-pptexanimations.cxx |    2 +-
+ 3 files changed, 39 insertions(+), 45 deletions(-)
+
+diff --git sd/source/filter/pptx/epptooxml.hxx sd/source/filter/pptx/epptooxml.hxx
+index 44beff3..f6b0a2e 100644
+--- sd/source/filter/pptx/epptooxml.hxx
++++ sd/source/filter/pptx/epptooxml.hxx
+@@ -54,10 +54,10 @@ public:
+ 
+     // only needed for import, leave them empty, refactor later XmlFilterBase to export and import base?
+     virtual sal_Int32 getSchemeClr( sal_Int32 /* nColorSchemeToken */ ) const { return 0; }
+-    virtual const oox::vml::DrawingPtr getDrawings() { return oox::vml::DrawingPtr(); }
++    virtual oox::vml::Drawing* getVmlDrawing() { return NULL; }
+     virtual const oox::drawingml::Theme* getCurrentTheme() const { return NULL; }
+     virtual const oox::drawingml::table::TableStyleListPtr getTableStyles() { return oox::drawingml::table::TableStyleListPtr(); }
+-    virtual oox::drawingml::chart::ChartConverter& getChartConverter();
++    virtual oox::drawingml::chart::ChartConverter* getChartConverter() { return NULL; }
+ 
+     static const char* GetSideDirection( sal_uInt8 nDirection );
+     static const char* GetCornerDirection( sal_uInt8 nDirection );
+diff --git sd/source/filter/pptx/pptx-epptooxml.cxx sd/source/filter/pptx/pptx-epptooxml.cxx
+index d25e178..0b64cca 100644
+--- sd/source/filter/pptx/pptx-epptooxml.cxx
++++ sd/source/filter/pptx/pptx-epptooxml.cxx
+@@ -196,7 +196,6 @@ ShapeExport& PowerPointShapeExport::WriteUnknownShape( Reference< XShape > xShap
+ PowerPointExport::PowerPointExport( const Reference< XMultiServiceFactory > & rSMgr  )
+     : XmlFilterBase( rSMgr ),
+       PPTWriterBase(),
+-      mxChartConv( new ::oox::drawingml::chart::ChartConverter ),
+       mnLayoutFileIdMax( 1 ),
+       mnSlideIdMax( 1 << 8 ),
+       mnSlideMasterIdMax( 1 << 31 ),
+@@ -223,8 +222,8 @@ bool PowerPointExport::exportDocument() throw()
+ 
+     addRelation( US( "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" ), S( "ppt/presentation.xml" ) );
+ 
+-    mPresentationFS = openOutputStreamWithSerializer( US( "ppt/presentation.xml" ),
+-                                                      US( "application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml" ) );
++    mPresentationFS = openFragmentStreamWithSerializer( US( "ppt/presentation.xml" ),
++                            US( "application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml" ) );
+ 
+     addRelation( mPresentationFS->getOutputStream(),
+                  US( "http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme" ),
+@@ -250,7 +249,7 @@ bool PowerPointExport::exportDocument() throw()
+     mPresentationFS->endElementNS( XML_p, XML_presentation );
+     mPresentationFS.reset();
+ 
+-    commit();
++    commitStorage();
+ 
+     maShapeMap.clear ();
+ 
+@@ -920,7 +919,7 @@ void PowerPointExport::WriteAnimationNodeCommonPropsStart( FSHelperPtr pFS, cons
+     }
+     }
+ 
+-    sal_uInt32 nPresetId;
++    sal_uInt32 nPresetId = 0;
+     sal_Bool bPresetId = FALSE;
+     if ( pAny[ DFF_ANIM_PRESET_ID ] ) {
+     rtl::OUString sPreset;
+@@ -1154,12 +1153,12 @@ void PowerPointExport::ImplWriteSlide( sal_uInt32 nPageNum, sal_uInt32 nMasterNu
+     if( nPageNum == mnPages - 1 )
+         mPresentationFS->endElementNS( XML_p, XML_sldIdLst );
+ 
+-    FSHelperPtr pFS = openOutputStreamWithSerializer( OUStringBuffer()
+-                                                      .appendAscii( "ppt/slides/slide" )
+-                                                      .append( (sal_Int32) nPageNum + 1 )
+-                                                      .appendAscii( ".xml" )
+-                                                      .makeStringAndClear(),
+-                                                      US( "application/vnd.openxmlformats-officedocument.presentationml.slide+xml" ) );
++    FSHelperPtr pFS = openFragmentStreamWithSerializer( OUStringBuffer()
++                            .appendAscii( "ppt/slides/slide" )
++                            .append( (sal_Int32) nPageNum + 1 )
++                            .appendAscii( ".xml" )
++                            .makeStringAndClear(),
++                            US( "application/vnd.openxmlformats-officedocument.presentationml.slide+xml" ) );
+ 
+     if( mpSlidesFSArray.size() < mnPages )
+     mpSlidesFSArray.resize( mnPages );
+@@ -1212,12 +1211,12 @@ void PowerPointExport::ImplWriteNotes( sal_uInt32 nPageNum )
+ 
+     DBG(printf("write Notes %d\n----------------\n", nPageNum));
+ 
+-    FSHelperPtr pFS = openOutputStreamWithSerializer( OUStringBuffer()
+-                                                      .appendAscii( "ppt/notesSlides/notesSlide" )
+-                                                      .append( (sal_Int32) nPageNum + 1 )
+-                                                      .appendAscii( ".xml" )
+-                                                      .makeStringAndClear(),
+-                                                      US( "application/vnd.openxmlformats-officedocument.presentationml.notesSlide+xml" ) );
++    FSHelperPtr pFS = openFragmentStreamWithSerializer( OUStringBuffer()
++                            .appendAscii( "ppt/notesSlides/notesSlide" )
++                            .append( (sal_Int32) nPageNum + 1 )
++                            .appendAscii( ".xml" )
++                            .makeStringAndClear(),
++                            US( "application/vnd.openxmlformats-officedocument.presentationml.notesSlide+xml" ) );
+ 
+     pFS->startElementNS( XML_p, XML_notes, PNMSS, FSEND );
+ 
+@@ -1352,12 +1351,12 @@ void PowerPointExport::ImplWriteSlideMaster( sal_uInt32 nPageNum, Reference< XPr
+         mPresentationFS->endElementNS( XML_p, XML_sldMasterIdLst );
+ 
+     FSHelperPtr pFS =
+-    openOutputStreamWithSerializer( OUStringBuffer()
+-                    .appendAscii( "ppt/slideMasters/slideMaster" )
+-                    .append( (sal_Int32) nPageNum + 1 )
+-                    .appendAscii( ".xml" )
+-                    .makeStringAndClear(),
+-                    US( "application/vnd.openxmlformats-officedocument.presentationml.slideMaster+xml" ) );
++    openFragmentStreamWithSerializer( OUStringBuffer()
++                      .appendAscii( "ppt/slideMasters/slideMaster" )
++                      .append( (sal_Int32) nPageNum + 1 )
++                      .appendAscii( ".xml" )
++                      .makeStringAndClear(),
++                      US( "application/vnd.openxmlformats-officedocument.presentationml.slideMaster+xml" ) );
+     if( mpMasterFSArray.size() < mnMasterPages )
+     mpMasterFSArray.resize( mnMasterPages );
+     mpMasterFSArray[ nPageNum ] = pFS;
+@@ -1450,12 +1449,12 @@ void PowerPointExport::ImplWriteLayout( sal_Int32 nOffset, sal_uInt32 nMasterNum
+     return;
+ 
+     FSHelperPtr pFS
+-        = openOutputStreamWithSerializer( OUStringBuffer()
+-                                          .appendAscii( "ppt/slideLayouts/slideLayout" )
+-                                          .append( (sal_Int32) mnLayoutFileIdMax )
+-                                          .appendAscii( ".xml" )
+-                                          .makeStringAndClear(),
+-                                          US( "application/vnd.openxmlformats-officedocument.presentationml.slideLayout+xml" ) );
++        = openFragmentStreamWithSerializer( OUStringBuffer()
++                        .appendAscii( "ppt/slideLayouts/slideLayout" )
++                        .append( (sal_Int32) mnLayoutFileIdMax )
++                        .appendAscii( ".xml" )
++                        .makeStringAndClear(),
++                        US( "application/vnd.openxmlformats-officedocument.presentationml.slideLayout+xml" ) );
+ 
+ //     LayoutInfo& rLayoutInfo = GetLayoutInfo( mXPagePropSet );
+ 
+@@ -1826,12 +1825,12 @@ ShapeExport& PowerPointShapeExport::WritePlaceholderShape( Reference< XShape > x
+ 
+ void PowerPointExport::WriteTheme( sal_Int32 nThemeNum )
+ {
+-    FSHelperPtr pFS = openOutputStreamWithSerializer( OUStringBuffer()
+-                              .appendAscii( "ppt/theme/theme" )
+-                              .append( (sal_Int32) nThemeNum + 1 )
+-                              .appendAscii( ".xml" )
+-                              .makeStringAndClear(),
+-                                                      US( "application/vnd.openxmlformats-officedocument.theme+xml" ) );
++    FSHelperPtr pFS = openFragmentStreamWithSerializer( OUStringBuffer()
++                            .appendAscii( "ppt/theme/theme" )
++                            .append( (sal_Int32) nThemeNum + 1 )
++                            .appendAscii( ".xml" )
++                            .makeStringAndClear(),
++                            US( "application/vnd.openxmlformats-officedocument.theme+xml" ) );
+ 
+     pFS->startElementNS( XML_a, XML_theme,
+                          FSNS( XML_xmlns, XML_a), "http://schemas.openxmlformats.org/drawingml/2006/main",
+@@ -1881,8 +1880,8 @@ sal_Bool PowerPointExport::WriteNotesMaster()
+     mPresentationFS->endElementNS( XML_p, XML_notesMasterIdLst );
+ 
+     FSHelperPtr pFS =
+-    openOutputStreamWithSerializer( US( "ppt/notesMasters/notesMaster1.xml" ),
+-                    US( "application/vnd.openxmlformats-officedocument.presentationml.notesMaster+xml" ) );
++    openFragmentStreamWithSerializer( US( "ppt/notesMasters/notesMaster1.xml" ),
++                      US( "application/vnd.openxmlformats-officedocument.presentationml.notesMaster+xml" ) );
+     // write theme per master
+     WriteTheme( mnMasterPages );
+ 
+@@ -1943,11 +1942,6 @@ sal_Bool PowerPointExport::ImplCreateMainNotes()
+ 
+ //------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ 
+-drawingml::chart::ChartConverter& PowerPointExport::getChartConverter()
+-{
+-    return *mxChartConv;
+-}
+-
+ #define IMPL_NAME "com.sun.star.comp.Impress.oox.PowerPointExport"
+ 
+ OUString SAL_CALL PowerPointExport_getImplementationName() throw()
+diff --git sd/source/filter/pptx/pptx-pptexanimations.cxx sd/source/filter/pptx/pptx-pptexanimations.cxx
+index 3d4e90d..1f0ef5d 100644
+--- sd/source/filter/pptx/pptx-pptexanimations.cxx
++++ sd/source/filter/pptx/pptx-pptexanimations.cxx
+@@ -1035,7 +1035,7 @@ sal_Int16 AnimationExporter::exportAnimPropertySet( SvStream& rStrm, const Refer
+             exportAnimPropertyuInt32( rStrm, DFF_ANIM_NODE_TYPE, nPPTNodeType, TRANSLATE_NONE );
+         }
+     }
+-    sal_uInt32 nPresetId;
++    sal_uInt32 nPresetId = 0;
+     sal_uInt32 nPresetSubType = 0;
+     sal_uInt32 nAPIPresetClass = EffectPresetClass::CUSTOM;
+     sal_uInt32 nPresetClass = DFF_ANIM_PRESS_CLASS_USER_DEFINED;
+-- 
+1.7.0.1
+
diff --git a/patches/dev300/oox-pptx-export-vertical-text.diff b/patches/dev300/oox-pptx-export-vertical-text.diff
new file mode 100644
index 0000000..1d84b29
--- /dev/null
+++ b/patches/dev300/oox-pptx-export-vertical-text.diff
@@ -0,0 +1,60 @@
+---
+ oox/source/export/drawingml.cxx |   16 ++++++++++++++++
+ 1 files changed, 16 insertions(+), 0 deletions(-)
+
+diff --git oox/source/export/drawingml.cxx oox/source/export/drawingml.cxx
+index 679dfdd..752ead6 100644
+--- oox/source/export/drawingml.cxx
++++ oox/source/export/drawingml.cxx
+@@ -52,6 +52,7 @@
+ #include <com/sun/star/i18n/ScriptType.hpp>
+ #include <com/sun/star/io/XOutputStream.hpp>
+ #include <com/sun/star/style/ParagraphAdjust.hpp>
++#include <com/sun/star/text/WritingMode.hpp>
+ #include <com/sun/star/text/XText.hpp>
+ #include <com/sun/star/text/XTextContent.hpp>
+ #include <com/sun/star/text/XTextField.hpp>
+@@ -71,6 +72,7 @@
+ using namespace ::com::sun::star;
+ using namespace ::com::sun::star::uno;
+ using namespace ::com::sun::star::drawing;
++using namespace ::com::sun::star::text;
+ using namespace ::com::sun::star::i18n;
+ using ::com::sun::star::beans::PropertyState;
+ using ::com::sun::star::beans::PropertyValue;
+@@ -1180,11 +1182,24 @@ void DrawingML::WriteText( Reference< XShape > rXShape  )
+             ;
+     }
+ 
++    const char* sWritingMode = NULL;
++    sal_Bool bVertical = sal_False;
++    if( GETA( TextWritingMode ) ) {
++    WritingMode eMode;
++
++    if( ( mAny >>= eMode ) && eMode == WritingMode_TB_RL ) {
++        sWritingMode = "vert";
++        bVertical = sal_True;
++    }
++    }
++
+     TextHorizontalAdjust eHorizontalAlignment( TextHorizontalAdjust_CENTER );
+     bool bHorizontalCenter = false;
+     GET( eHorizontalAlignment, TextHorizontalAdjust );
+     if( eHorizontalAlignment == TextHorizontalAdjust_CENTER )
+         bHorizontalCenter = true;
++    else if( bVertical && eHorizontalAlignment == TextHorizontalAdjust_LEFT )
++    sVerticalAlignment = "b";
+ 
+     sal_Bool bHasWrap = FALSE;
+     sal_Bool bWrap = FALSE;
+@@ -1202,6 +1217,7 @@ void DrawingML::WriteText( Reference< XShape > rXShape  )
+                            XML_bIns, (nBottom != DEFTBINS) ? IS( MM100toEMU( nBottom ) ) : NULL,
+                            XML_anchor, sVerticalAlignment,
+                            XML_anchorCtr, bHorizontalCenter ? "1" : NULL,
++               XML_vert, sWritingMode,
+                            FSEND );
+ 
+     Reference< XEnumerationAccess > access( xXText, UNO_QUERY );
+-- 
+1.7.0.1
+
diff --git a/patches/dev300/oox-smartart-import.diff b/patches/dev300/oox-smartart-import.diff
new file mode 100644
index 0000000..c418157
--- /dev/null
+++ b/patches/dev300/oox-smartart-import.diff
@@ -0,0 +1,6320 @@
+OOXML smartart import (somewhat)
+
+From: Thorsten Behrens <thb at openoffice.org>
+
+
+---
+
+ oox/inc/oox/core/filterbase.hxx                    |    5 
+ oox/inc/oox/core/xmlfilterbase.hxx                 |   29 +
+ oox/inc/oox/drawingml/chart/converterbase.hxx      |    2 
+ oox/inc/oox/drawingml/customshapeproperties.hxx    |    2 
+ oox/inc/oox/drawingml/diagram/datamodelcontext.hxx |   54 --
+ oox/inc/oox/drawingml/diagram/diagram.hxx          |  242 +------
+ .../drawingml/diagram/diagramfragmenthandler.hxx   |  100 ---
+ .../oox/drawingml/diagram/diagramlayoutatoms.hxx   |  209 ------
+ oox/inc/oox/drawingml/drawingmltypes.hxx           |    3 
+ oox/inc/oox/drawingml/graphicshapecontext.hxx      |    5 
+ oox/inc/oox/drawingml/scene3dcontext.hxx           |   56 ++
+ oox/inc/oox/drawingml/shape.hxx                    |   34 +
+ oox/inc/oox/drawingml/shape3dproperties.hxx        |  135 ++++
+ oox/inc/oox/drawingml/theme.hxx                    |    8 
+ oox/inc/oox/ppt/dgmimport.hxx                      |   71 ++
+ oox/inc/oox/ppt/dgmlayout.hxx                      |   72 ++
+ oox/inc/oox/ppt/pptimport.hxx                      |    2 
+ oox/inc/oox/xls/excelfilter.hxx                    |    2 
+ oox/inc/oox/xls/workbookhelper.hxx                 |    2 
+ oox/source/core/facreg.cxx                         |    6 
+ oox/source/core/filterbase.cxx                     |    9 
+ oox/source/core/xmlfilterbase.cxx                  |  164 ++++-
+ oox/source/drawingml/chart/chartspaceconverter.cxx |    5 
+ oox/source/drawingml/chart/converterbase.cxx       |    4 
+ oox/source/drawingml/chart/datasourceconverter.cxx |   13 
+ oox/source/drawingml/clrscheme.cxx                 |    2 
+ oox/source/drawingml/color.cxx                     |    1 
+ oox/source/drawingml/customshapegeometry.cxx       |    6 
+ .../drawingml/diagram/constraintlistcontext.cxx    |  102 +++
+ .../drawingml/diagram/constraintlistcontext.hxx    |   54 ++
+ oox/source/drawingml/diagram/datamodelcontext.cxx  |  232 +++++--
+ oox/source/drawingml/diagram/datamodelcontext.hxx  |   57 ++
+ oox/source/drawingml/diagram/diagram.cxx           |  498 ++++++++++++--
+ oox/source/drawingml/diagram/diagram.hxx           |  320 +++++++++
+ .../drawingml/diagram/diagramdefinitioncontext.cxx |   13 
+ .../drawingml/diagram/diagramdefinitioncontext.hxx |    2 
+ .../drawingml/diagram/diagramfragmenthandler.cxx   |  183 +++--
+ .../drawingml/diagram/diagramfragmenthandler.hxx   |  117 +++
+ .../drawingml/diagram/diagramlayoutatoms.cxx       |  689 +++++++++++++++++++-
+ .../drawingml/diagram/diagramlayoutatoms.hxx       |  318 +++++++++
+ oox/source/drawingml/diagram/layoutnodecontext.cxx |  146 +++-
+ oox/source/drawingml/diagram/layoutnodecontext.hxx |    3 
+ oox/source/drawingml/diagram/makefile.mk           |    1 
+ oox/source/drawingml/drawingmltypes.cxx            |    4 
+ oox/source/drawingml/fillproperties.cxx            |    3 
+ oox/source/drawingml/graphicshapecontext.cxx       |   58 --
+ oox/source/drawingml/lineproperties.cxx            |    5 
+ oox/source/drawingml/makefile.mk                   |    1 
+ oox/source/drawingml/scene3dcontext.cxx            |  189 +++++
+ oox/source/drawingml/shape.cxx                     |   42 +
+ oox/source/drawingml/shape3dproperties.cxx         |   67 ++
+ oox/source/drawingml/shapepropertiescontext.cxx    |    6 
+ oox/source/drawingml/textparagraph.cxx             |    9 
+ oox/source/drawingml/textparagraphproperties.cxx   |    1 
+ oox/source/helper/storagebase.cxx                  |   20 -
+ oox/source/ppt/dgmimport.cxx                       |  135 ++++
+ oox/source/ppt/dgmlayout.cxx                       |  193 ++++++
+ oox/source/ppt/makefile.mk                         |    2 
+ oox/source/ppt/pptimport.cxx                       |    4 
+ oox/source/ppt/presentationfragmenthandler.cxx     |   13 
+ oox/source/ppt/slidepersist.cxx                    |   11 
+ oox/source/shape/ShapeFilterBase.cxx               |    4 
+ oox/source/shape/ShapeFilterBase.hxx               |    2 
+ oox/source/xls/excelfilter.cxx                     |    2 
+ oox/source/xls/workbookhelper.cxx                  |    4 
+ sc/source/filter/excel/xestream.cxx                |    5 
+ sc/source/filter/inc/xestream.hxx                  |    2 
+ sw/source/filter/ww8/docxexportfilter.hxx          |    2 
+ 77 files changed, 5401 insertions(+), 992 deletions(-)
+ delete mode 100644 oox/inc/oox/drawingml/diagram/datamodelcontext.hxx
+ delete mode 100644 oox/inc/oox/drawingml/diagram/diagramfragmenthandler.hxx
+ delete mode 100644 oox/inc/oox/drawingml/diagram/diagramlayoutatoms.hxx
+ create mode 100644 oox/inc/oox/drawingml/scene3dcontext.hxx
+ create mode 100644 oox/inc/oox/drawingml/shape3dproperties.hxx
+ create mode 100644 oox/inc/oox/ppt/dgmimport.hxx
+ create mode 100644 oox/inc/oox/ppt/dgmlayout.hxx
+ create mode 100644 oox/source/drawingml/diagram/constraintlistcontext.cxx
+ create mode 100644 oox/source/drawingml/diagram/constraintlistcontext.hxx
+ create mode 100644 oox/source/drawingml/diagram/datamodelcontext.hxx
+ create mode 100644 oox/source/drawingml/diagram/diagram.hxx
+ create mode 100644 oox/source/drawingml/diagram/diagramfragmenthandler.hxx
+ create mode 100644 oox/source/drawingml/diagram/diagramlayoutatoms.hxx
+ create mode 100644 oox/source/drawingml/scene3dcontext.cxx
+ create mode 100644 oox/source/drawingml/shape3dproperties.cxx
+ create mode 100644 oox/source/ppt/dgmimport.cxx
+ create mode 100644 oox/source/ppt/dgmlayout.cxx
+
+
+diff --git oox/inc/oox/core/filterbase.hxx oox/inc/oox/core/filterbase.hxx
+index d54c534..3dc372a 100644
+--- oox/inc/oox/core/filterbase.hxx
++++ oox/inc/oox/core/filterbase.hxx
+@@ -50,6 +50,7 @@ namespace com { namespace sun { namespace star {
+     namespace task { class XStatusIndicator; }
+     namespace task { class XInteractionHandler; }
+     namespace frame { class XFrame; }
++    namespace drawing { class XShape; }
+     namespace io { class XInputStream; }
+     namespace io { class XOutputStream; }
+     namespace io { class XStream; }
+@@ -133,6 +134,10 @@ public:
+     const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >&
+                         getTargetFrame() const;
+ 
++    /// Returns the parent shape to load into (if any)
++    const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >&
++                        getParentShape() const;
++
+     /** Returns the status indicator (may be null). */
+     const ::com::sun::star::uno::Reference< ::com::sun::star::task::XStatusIndicator >&
+                         getStatusIndicator() const;
+diff --git oox/inc/oox/core/xmlfilterbase.hxx oox/inc/oox/core/xmlfilterbase.hxx
+index 0d747ef..8659ec1 100644
+--- oox/inc/oox/core/xmlfilterbase.hxx
++++ oox/inc/oox/core/xmlfilterbase.hxx
+@@ -42,8 +42,10 @@
+ namespace com { namespace sun { namespace star {
+     namespace container { class XNameContainer; }
+     namespace document { class XDocumentProperties; }
++    namespace xml { namespace dom { class XDocument; } }
+     namespace xml { namespace sax { class XLocator; } }
+     namespace xml { namespace sax { class XFastDocumentHandler; } }
++    namespace xml { namespace sax { class XFastSAXSerializable; } }
+ } } }
+ 
+ namespace oox { namespace drawingml { class Theme; } }
+@@ -89,7 +91,7 @@ public:
+ 
+     /** Has to be implemented by each filter, returns a filter-specific chart
+         converter object, that should be global per imported document. */
+-    virtual ::oox::drawingml::chart::ChartConverter& getChartConverter() = 0;
++    virtual ::oox::drawingml::chart::ChartConverter* getChartConverter() = 0;
+ 
+     /** Has to be implemented by each filter to return the table style list. */
+     virtual const ::oox::drawingml::table::TableStyleListPtr getTableStyles() = 0;
+@@ -107,6 +109,31 @@ public:
+      */
+     bool                importFragment( const ::rtl::Reference< FragmentHandler >& rxHandler );
+ 
++    /** Imports a fragment into an xml::dom::XDocument.
++
++        @param rFragmentPath path to fragment
++
++        @return a non-empty reference to the XDocument, if the
++        fragment could be imported.
++     */
++    ::com::sun::star::uno::Reference<
++       ::com::sun::star::xml::dom::XDocument> importFragment( const ::rtl::OUString& rFragmentPath );
++
++    /** Imports a fragment from an xml::dom::XDocument using the
++        passed fragment handler
++
++        @param rxHandler fragment handler; path to fragment is
++        ignored, input source is the rxSerializer
++
++        @param rxSerializer usually retrieved from a
++        xml::dom::XDocument, will get serialized into rxHandler
++
++        @return true, if the fragment could be imported.
++     */
++    bool importFragment( const ::rtl::Reference< FragmentHandler >& rxHandler,
++                         const ::com::sun::star::uno::Reference< 
++                               ::com::sun::star::xml::sax::XFastSAXSerializable >& rxSerializer );
++
+     /** Imports the relations fragment associated with the specified fragment.
+ 
+         @return  The relations collection of the specified fragment.
+diff --git oox/inc/oox/drawingml/chart/converterbase.hxx oox/inc/oox/drawingml/chart/converterbase.hxx
+index 5c26d73..c1c8986 100644
+--- oox/inc/oox/drawingml/chart/converterbase.hxx
++++ oox/inc/oox/drawingml/chart/converterbase.hxx
+@@ -82,7 +82,7 @@ protected:
+     /** Returns the filter object of the imported/exported document. */
+     ::oox::core::XmlFilterBase& getFilter() const;
+     /** Returns the chart converter. */
+-    ChartConverter&     getChartConverter() const;
++    ChartConverter*     getChartConverter() const;
+     /** Returns the API chart document model. */
+     ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XChartDocument >
+                         getChartDocument() const;
+diff --git oox/inc/oox/drawingml/customshapeproperties.hxx oox/inc/oox/drawingml/customshapeproperties.hxx
+index 66c4c38..6b63352 100644
+--- oox/inc/oox/drawingml/customshapeproperties.hxx
++++ oox/inc/oox/drawingml/customshapeproperties.hxx
+@@ -124,6 +124,7 @@ public:
+             const ::com::sun::star::uno::Reference < ::com::sun::star::beans::XPropertySet > & xPropSet,
+                         const ::com::sun::star::uno::Reference < ::com::sun::star::drawing::XShape > & xShape) const;
+ 
++    const rtl::OUString& getShapePresetType() const { return maShapePresetType; }
+     void setShapePresetType( const rtl::OUString& rShapePresetType ){ maShapePresetType = rShapePresetType; };
+ 
+     std::vector< CustomShapeGuide >&	getAdjustmentGuideList(){ return maAdjustmentGuideList; };
+diff --git oox/inc/oox/drawingml/diagram/datamodelcontext.hxx oox/inc/oox/drawingml/diagram/datamodelcontext.hxx
+deleted file mode 100644
+index 6437482..0000000
+--- oox/inc/oox/drawingml/diagram/datamodelcontext.hxx
++++ /dev/null
+@@ -1,54 +0,0 @@
+-/*************************************************************************
+- *
+- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+- * 
+- * Copyright 2000, 2010 Oracle and/or its affiliates.
+- *
+- * OpenOffice.org - a multi-platform office productivity suite
+- *
+- * This file is part of OpenOffice.org.
+- *
+- * OpenOffice.org is free software: you can redistribute it and/or modify
+- * it under the terms of the GNU Lesser General Public License version 3
+- * only, as published by the Free Software Foundation.
+- *
+- * OpenOffice.org is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- * GNU Lesser General Public License version 3 for more details
+- * (a copy is included in the LICENSE file that accompanied this code).
+- *
+- * You should have received a copy of the GNU Lesser General Public License
+- * version 3 along with OpenOffice.org.  If not, see
+- * <http://www.openoffice.org/license.html>
+- * for a copy of the LGPLv3 License.
+- *
+- ************************************************************************/
+-
+-
+-#ifndef OOX_DRAWINGML_SHAPECONTEXT_HXX
+-#define OOX_DRAWINGML_SHAPECONTEXT_HXX
+-
+-#include <com/sun/star/drawing/XShapes.hpp>
+-
+-#include "oox/core/contexthandler.hxx"
+-#include "oox/drawingml/diagram/diagram.hxx"
+-
+-namespace oox { namespace drawingml {
+-
+-// CT_DataModel
+-class DataModelContext : public ::oox::core::ContextHandler
+-{
+-public:
+-    DataModelContext( ::oox::core::ContextHandler& rParent, const DiagramDataPtr & pDataModelPtr );
+-    virtual ~DataModelContext();
+-
+-    virtual ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XFastContextHandler > SAL_CALL createFastChildContext( ::sal_Int32 Element, const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XFastAttributeList >& Attribs ) throw (::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException);
+-
+-protected:
+-    DiagramDataPtr mpDataModel;
+-};
+-
+-} }
+-
+-#endif  //  OOX_DRAWINGML_SHAPEGROUPCONTEXT_HXX
+diff --git oox/inc/oox/drawingml/diagram/diagram.hxx oox/inc/oox/drawingml/diagram/diagram.hxx
+index ef60545..e81a216 100644
+--- oox/inc/oox/drawingml/diagram/diagram.hxx
++++ oox/inc/oox/drawingml/diagram/diagram.hxx
+@@ -25,232 +25,40 @@
+  *
+  ************************************************************************/
+ 
+-
+-
+ #ifndef OOX_DRAWINGML_DIAGRAM_HXX
+ #define OOX_DRAWINGML_DIAGRAM_HXX
+ 
+-#include <vector>
+-#include <boost/shared_ptr.hpp>
+-#include <boost/enable_shared_from_this.hpp>
++#include <rtl/ustring.hxx>
+ #include "oox/drawingml/shape.hxx"
+-#include "oox/drawingml/diagram/diagramlayoutatoms.hxx"
+-
+-namespace oox { namespace drawingml {
+-
+-namespace dgm {
++#include "oox/core/xmlfilterbase.hxx"
+ 
+-/** A Connection
+- */
+-class Connection
+-{
+-public:
+-    Connection()
+-        : mnType( 0 )
+-        , mnSourceOrder( 0 )
+-        , mnDestOrder( 0 )
+-        {
+-        }
++#include <com/sun/star/xml/dom/XDocument.hpp>
+ 
+-    void dump();
+-
+-    sal_Int32 mnType;
+-    ::rtl::OUString msModelId;
+-    ::rtl::OUString msSourceId;
+-    ::rtl::OUString msDestId;
+-    ::rtl::OUString msParTransId;
+-    ::rtl::OUString msPresId;
+-    ::rtl::OUString msSibTransId;
+-    sal_Int32 mnSourceOrder;
+-    sal_Int32 mnDestOrder;
+-
+-};
+-
+-typedef boost::shared_ptr< Connection > ConnectionPtr;
+-typedef std::vector< ConnectionPtr > Connections;
++namespace oox { namespace drawingml {
+ 
+-class Point;
++/** load diagram data, and put resulting graphic into shape
+ 
+-typedef boost::shared_ptr< Point > PointPtr;
+-typedef std::vector< PointPtr >      Points;
+-/** A point
++    This method loads the diagram data fragments from the given paths,
++    generate and layout the shapes, and push it as children into the
++    referenced shape.
+  */
+-class Point
+-{
+-public:
+-    Point();
+-    ShapePtr & getShape( )
+-        { return mpShape; }
+-
+-    void setCnxId( const ::rtl::OUString & sCnxId )
+-        { msCnxId = sCnxId; }
+-    void setModelId( const ::rtl::OUString & sModelId );
+-    const ::rtl::OUString & getModelId() const
+-        { return msModelId; }
+-    void setType( const sal_Int32 nType )
+-        { mnType = nType; }
+-    sal_Int32 getType() const
+-        { return mnType; }
+-
+-    void dump();
+-private:
+-    ShapePtr        mpShape;
+-    ::rtl::OUString msCnxId;
+-    ::rtl::OUString msModelId;
+-    sal_Int32       mnType;
+-};
+-
+-
+-class PointsTree;
+-typedef boost::shared_ptr< PointsTree > PointsTreePtr;
+-
+-/** a points tree node */
+-class PointsTree
+-    : public boost::enable_shared_from_this< PointsTree >
+-{
+-public:
+-    typedef std::vector< PointsTreePtr > Childrens;
+-    PointsTree()
+-        {};
+-    PointsTree( const PointPtr & pPoint )
+-        : mpNode( pPoint )
+-        { }
+-    bool addChild( const PointsTreePtr & pChild );
+-    const PointPtr & getPoint() const
+-        { return mpNode; }
+-    PointsTreePtr getParent() const;
+-    Childrens::const_iterator beginChild() const
+-        { return maChildrens.begin(); }
+-    Childrens::const_iterator endChild() const
+-        { return maChildrens.end(); }
+-private:
+-    PointPtr                           mpNode;
+-    boost::weak_ptr< PointsTree >      mpParent;
+-    Childrens       maChildrens;
+-};
+-
+-}
+-
+-////////////////////
+-
+-class DiagramData
+-{
+-public:
+-
+-    DiagramData();
+-    FillPropertiesPtr & getFillProperties()
+-        { return mpFillProperties; }
+-    dgm::Connections & getConnections()
+-        { return maConnections; }
+-    dgm::Points & getPoints()
+-        { return maPoints; }
+-    void dump();
+-private:
+-    FillPropertiesPtr   mpFillProperties;
+-    dgm::Connections    maConnections;
+-    dgm::Points         maPoints;
+-};
+-
+-typedef boost::shared_ptr< DiagramData > DiagramDataPtr;
+-
+-
+-
+-////////////////////
+-
+-class DiagramLayout
+-{
+-public:
+-    void setDefStyle( const ::rtl::OUString & sDefStyle )
+-        { msDefStyle = sDefStyle; }
+-    void setMinVer( const ::rtl::OUString & sMinVer )
+-        { msMinVer = sMinVer; }
+-    void setUniqueId( const ::rtl::OUString & sUniqueId )
+-        { msUniqueId = sUniqueId; }
+-    const ::rtl::OUString & getUniqueId()
+-        { return msUniqueId; }
+-    void setTitle( const ::rtl::OUString & sTitle )
+-        { msTitle = sTitle; }
+-    void setDesc( const ::rtl::OUString & sDesc )
+-        { msDesc = sDesc; }
+-
+-    LayoutNodePtr & getNode()
+-        { return mpNode; }
+-    const LayoutNodePtr & getNode() const
+-        { return mpNode; }
+-    DiagramDataPtr & getSampData()
+-        { return mpSampData; }
+-    const DiagramDataPtr & getSampData() const
+-        { return mpSampData; }
+-    DiagramDataPtr & getStyleData()
+-        { return mpStyleData; }
+-    const DiagramDataPtr & getStyleData() const
+-        { return mpStyleData; }
+-
+-    void layout( const dgm::PointsTreePtr & pTree, const com::sun::star::awt::Point & pt );
+-private:
+-    ::rtl::OUString msDefStyle;
+-    ::rtl::OUString msMinVer;
+-    ::rtl::OUString msUniqueId;
+-
+-    ::rtl::OUString msTitle;
+-    ::rtl::OUString msDesc;
+-    LayoutNodePtr  mpNode;
+-    DiagramDataPtr mpSampData;
+-    DiagramDataPtr mpStyleData;
+-    // TODO
+-    // catLst
+-    // clrData
+-};
+-
+-typedef boost::shared_ptr< DiagramLayout > DiagramLayoutPtr;
+-
+-///////////////////////
+-
+-class DiagramQStyles
+-{
+-
+-};
+-
+-typedef boost::shared_ptr< DiagramQStyles > DiagramQStylesPtr;
+-
+-///////////////////////
+-
+-class DiagramColors
+-{
+-
+-};
+-
+-typedef boost::shared_ptr< DiagramColors > DiagramColorsPtr;
+-
+-///////////////////////
+-
+-class Diagram
+-{
+-public:
+-    void setData( const DiagramDataPtr & );
+-    void setLayout( const DiagramLayoutPtr & );
+-    DiagramLayoutPtr getLayout() const
+-        {
+-            return mpLayout;
+-        }
+-    void setQStyles( const DiagramQStylesPtr & );
+-    void setColors( const DiagramColorsPtr & );
+-
+-    void addTo( const ShapePtr & pShape );
+-    ::rtl::OUString getLayoutId() const;
+-private:
+-    void build( );
+-    DiagramDataPtr    mpData;
+-    DiagramLayoutPtr  mpLayout;
+-    DiagramQStylesPtr mpQStyles;
+-    DiagramColorsPtr  mpColors;
+-    std::map< ::rtl::OUString, ShapePtr > maShapeMap;
+-    dgm::PointsTreePtr  mpRoot;
+-};
+-
+-
+-typedef boost::shared_ptr< Diagram > DiagramPtr;
+-
++void loadDiagram( const ShapePtr& pShape,
++                  core::XmlFilterBase& rFilter,
++                  const ::rtl::OUString& rDataModelPath,
++                  const ::rtl::OUString& rLayoutPath,
++                  const ::rtl::OUString& rQStylePath,
++                  const ::rtl::OUString& rColorStylePath );
++
++void loadDiagram( const ShapePtr& pShape,
++                  core::XmlFilterBase& rFilter,
++                  const ::com::sun::star::uno::Reference<
++                     ::com::sun::star::xml::dom::XDocument>& rXDataModelDom,
++                  const ::com::sun::star::uno::Reference<
++                     ::com::sun::star::xml::dom::XDocument>& rXLayoutDom,
++                  const ::com::sun::star::uno::Reference<
++                     ::com::sun::star::xml::dom::XDocument>& rXQStyleDom,
++                  const ::com::sun::star::uno::Reference<
++                     ::com::sun::star::xml::dom::XDocument>& rXColorStyleDom );
+ } }
+ 
+ #endif
+diff --git oox/inc/oox/drawingml/diagram/diagramfragmenthandler.hxx oox/inc/oox/drawingml/diagram/diagramfragmenthandler.hxx
+deleted file mode 100644
+index 5a42a46..0000000
+--- oox/inc/oox/drawingml/diagram/diagramfragmenthandler.hxx
++++ /dev/null
+@@ -1,100 +0,0 @@
+-/*************************************************************************
+- *
+- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+- * 
+- * Copyright 2000, 2010 Oracle and/or its affiliates.
+- *
+- * OpenOffice.org - a multi-platform office productivity suite
+- *
+- * This file is part of OpenOffice.org.
+- *
+- * OpenOffice.org is free software: you can redistribute it and/or modify
+- * it under the terms of the GNU Lesser General Public License version 3
+- * only, as published by the Free Software Foundation.
+- *
+- * OpenOffice.org is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- * GNU Lesser General Public License version 3 for more details
+- * (a copy is included in the LICENSE file that accompanied this code).
+- *
+- * You should have received a copy of the GNU Lesser General Public License
+- * version 3 along with OpenOffice.org.  If not, see
+- * <http://www.openoffice.org/license.html>
+- * for a copy of the LGPLv3 License.
+- *
+- ************************************************************************/
+-
+-
+-#ifndef OOX_DRAWINGML_DIAGRAMFRAGMENTHANDLER
+-#define OOX_DRAWINGML_DIAGRAMFRAGMENTHANDLER
+-
+-#include "oox/core/fragmenthandler.hxx"
+-#include "oox/drawingml/diagram/diagram.hxx"
+-
+-namespace oox { namespace drawingml {
+-
+-
+-class DiagramDataFragmentHandler : public ::oox::core::FragmentHandler
+-{
+-public:
+-    DiagramDataFragmentHandler( oox::core::XmlFilterBase& rFilter, const ::rtl::OUString& rFragmentPath, const DiagramDataPtr pDataPtr ) throw();
+-    virtual ~DiagramDataFragmentHandler() throw();
+-
+-    virtual void SAL_CALL endDocument() throw (::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException);
+-    virtual ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XFastContextHandler > SAL_CALL createFastChildContext( ::sal_Int32 Element, const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XFastAttributeList >& Attribs ) throw (::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException);
+-
+-private:
+-
+-    DiagramDataPtr	mpDataPtr;
+-};
+-
+-
+-
+-class DiagramLayoutFragmentHandler : public ::oox::core::FragmentHandler
+-{
+-public:
+-    DiagramLayoutFragmentHandler( oox::core::XmlFilterBase& rFilter, const ::rtl::OUString& rFragmentPath, const DiagramLayoutPtr pDataPtr ) throw();
+-    virtual ~DiagramLayoutFragmentHandler() throw();
+-
+-    virtual void SAL_CALL endDocument() throw (::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException);
+-    virtual ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XFastContextHandler > SAL_CALL createFastChildContext( ::sal_Int32 Element, const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XFastAttributeList >& Attribs ) throw (::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException);
+-
+-private:
+-
+-    DiagramLayoutPtr	mpDataPtr;
+-};
+-
+-class DiagramQStylesFragmentHandler : public ::oox::core::FragmentHandler
+-{
+-public:
+-    DiagramQStylesFragmentHandler( oox::core::XmlFilterBase& rFilter, const ::rtl::OUString& rFragmentPath, const DiagramQStylesPtr pDataPtr ) throw();
+-    virtual ~DiagramQStylesFragmentHandler() throw();
+-
+-    virtual void SAL_CALL endDocument() throw (::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException);
+-    virtual ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XFastContextHandler > SAL_CALL createFastChildContext( ::sal_Int32 Element, const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XFastAttributeList >& Attribs ) throw (::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException);
+-
+-private:
+-
+-    DiagramQStylesPtr	mpDataPtr;
+-};
+-
+-
+-class DiagramColorsFragmentHandler : public ::oox::core::FragmentHandler
+-{
+-public:
+-    DiagramColorsFragmentHandler( ::oox::core::XmlFilterBase& rFilter, const ::rtl::OUString& rFragmentPath, const DiagramColorsPtr pDataPtr ) throw();
+-    virtual ~DiagramColorsFragmentHandler() throw();
+-
+-    virtual void SAL_CALL endDocument() throw (::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException);
+-    virtual ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XFastContextHandler > SAL_CALL createFastChildContext( ::sal_Int32 Element, const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XFastAttributeList >& Attribs ) throw (::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException);
+-
+-private:
+-
+-    DiagramColorsPtr	mpDataPtr;
+-};
+-
+-} }
+-
+-
+-#endif
+diff --git oox/inc/oox/drawingml/diagram/diagramlayoutatoms.hxx oox/inc/oox/drawingml/diagram/diagramlayoutatoms.hxx
+deleted file mode 100644
+index ae25085..0000000
+--- oox/inc/oox/drawingml/diagram/diagramlayoutatoms.hxx
++++ /dev/null
+@@ -1,209 +0,0 @@
+-/*************************************************************************
+- *
+- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+- * 
+- * Copyright 2000, 2010 Oracle and/or its affiliates.
+- *
+- * OpenOffice.org - a multi-platform office productivity suite
+- *
+- * This file is part of OpenOffice.org.
+- *
+- * OpenOffice.org is free software: you can redistribute it and/or modify
+- * it under the terms of the GNU Lesser General Public License version 3
+- * only, as published by the Free Software Foundation.
+- *
+- * OpenOffice.org is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- * GNU Lesser General Public License version 3 for more details
+- * (a copy is included in the LICENSE file that accompanied this code).
+- *
+- * You should have received a copy of the GNU Lesser General Public License
+- * version 3 along with OpenOffice.org.  If not, see
+- * <http://www.openoffice.org/license.html>
+- * for a copy of the LGPLv3 License.
+- *
+- ************************************************************************/
+-
+-
+-
+-
+-
+-#ifndef OOX_DRAWINGML_DIAGRAMLAYOUTATOMS_HXX
+-#define OOX_DRAWINGML_DIAGRAMLAYOUTATOMS_HXX
+-
+-#include <map>
+-#include <string>
+-
+-#include <boost/shared_ptr.hpp>
+-#include <boost/array.hpp>
+-
+-#include <com/sun/star/uno/Any.hxx>
+-#include <com/sun/star/xml/sax/XFastAttributeList.hpp>
+-
+-#include "oox/drawingml/shape.hxx"
+-
+-
+-namespace oox { namespace drawingml {
+-
+-
+-// AG_IteratorAttributes
+-class IteratorAttr
+-{
+-public:
+-    IteratorAttr();
+-
+-    // not sure this belong here, but wth
+-    void loadFromXAttr( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XFastAttributeList >& xAttributes );
+-
+-private:
+-    sal_Int32 mnAxis;
+-    sal_Int32 mnCnt;
+-    sal_Bool  mbHideLastTrans;
+-    sal_Int32 mnPtType;
+-    sal_Int32 mnSt;
+-    sal_Int32 mnStep;
+-};
+-
+-class ConditionAttr
+-{
+-public:
+-    ConditionAttr();
+-
+-    // not sure this belong here, but wth
+-    void loadFromXAttr( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XFastAttributeList >& xAttributes );
+-
+-private:
+-    sal_Int32 mnFunc;
+-    sal_Int32 mnArg;
+-    sal_Int32 mnOp;
+-    ::rtl::OUString msVal;
+-};
+-
+-class LayoutAtom;
+-
+-typedef boost::shared_ptr< LayoutAtom > LayoutAtomPtr;
+-
+-/** abstract Atom for the layout */
+-class LayoutAtom
+-{
+-public:
+-    virtual ~LayoutAtom()
+-        {}
+-    // TODO change signature to the proper one
+-    virtual void processAtom() = 0;
+-    void setName( const ::rtl::OUString & sName )
+-        { msName = sName; }
+-    void addChild( const LayoutAtomPtr & pNode )
+-        { mpChildNodes.push_back( pNode ); }
+-
+-    // dump for debug
+-    virtual void dump(int level = 0);
+-protected:
+-    std::vector< LayoutAtomPtr > mpChildNodes;
+-    ::rtl::OUString msName;
+-};
+-
+-class AlgAtom
+-    : public LayoutAtom
+-{
+-public:
+-    virtual ~AlgAtom()
+-        {}
+-    typedef std::map< std::string, ::com::sun::star::uno::Any > ParamMap;
+-
+-    virtual void processAtom()
+-        {}
+-private:
+-    ParamMap mParams;
+-};
+-
+-
+-class ForEachAtom
+-    : public LayoutAtom
+-{
+-public:
+-    virtual ~ForEachAtom()
+-        {}
+-    
+-    IteratorAttr & iterator()
+-        { return maIter; }
+-    virtual void processAtom();
+-private:
+-    IteratorAttr maIter;
+-};
+-
+-typedef boost::shared_ptr< ForEachAtom > ForEachAtomPtr;
+-
+-
+-class ConditionAtom
+-    : public LayoutAtom
+-{
+-public:
+-    ConditionAtom( bool bElse = false )
+-        : LayoutAtom( )
+-        , mbElse( bElse )
+-        {}
+-    virtual ~ConditionAtom()
+-        {}
+-    bool test();
+-    virtual void processAtom()
+-        {}
+-    IteratorAttr & iterator()
+-        { return maIter; }
+-    ConditionAttr & cond()
+-        { return maCond; }
+-private:
+-    bool          mbElse;
+-    IteratorAttr  maIter;
+-    ConditionAttr maCond;
+-};
+-
+-typedef boost::shared_ptr< ConditionAtom > ConditionAtomPtr;
+-
+-
+-/** "choose" statements. Atoms will be tested in order. */
+-class ChooseAtom
+-    : public LayoutAtom
+-{
+-public:
+-    virtual ~ChooseAtom()
+-        {}
+-    virtual void processAtom();
+-};
+-
+-class LayoutNode
+-    : public LayoutAtom
+-{
+-public:
+-    enum {
+-        VAR_animLvl = 0,
+-        VAR_animOne,
+-        VAR_bulletEnabled,
+-        VAR_chMax,
+-        VAR_chPref,
+-        VAR_dir,
+-        VAR_hierBranch,
+-        VAR_orgChart,
+-        VAR_resizeHandles
+-    };
+-    // we know that the array is of fixed size
+-    // the use of Any allow having empty values
+-    typedef boost::array< ::com::sun::star::uno::Any, 9 > VarMap;
+-
+-    virtual ~LayoutNode()
+-        {}
+-    virtual void processAtom()
+-        {}
+-    VarMap & variables()
+-        { return mVariables; }
+-private:
+-    VarMap                       mVariables;
+-    std::vector< ShapePtr >      mpShapes;
+-};
+-
+-typedef boost::shared_ptr< LayoutNode > LayoutNodePtr;
+-
+-} }
+-
+-#endif
+diff --git oox/inc/oox/drawingml/drawingmltypes.hxx oox/inc/oox/drawingml/drawingmltypes.hxx
+index c513446..b18414f 100644
+--- oox/inc/oox/drawingml/drawingmltypes.hxx
++++ oox/inc/oox/drawingml/drawingmltypes.hxx
+@@ -58,6 +58,9 @@ typedef ::boost::shared_ptr< FillProperties > FillPropertiesPtr;
+ struct GraphicProperties;
+ typedef ::boost::shared_ptr< GraphicProperties > GraphicPropertiesPtr;
+ 
++struct Shape3DProperties;
++typedef ::boost::shared_ptr< Shape3DProperties > Shape3DPropertiesPtr;
++
+ struct TextCharacterProperties;
+ typedef ::boost::shared_ptr< TextCharacterProperties > TextCharacterPropertiesPtr;
+ 
+diff --git oox/inc/oox/drawingml/graphicshapecontext.hxx oox/inc/oox/drawingml/graphicshapecontext.hxx
+index c7239fc..ea49d47 100644
+--- oox/inc/oox/drawingml/graphicshapecontext.hxx
++++ oox/inc/oox/drawingml/graphicshapecontext.hxx
+@@ -30,7 +30,6 @@
+ 
+ #include "oox/drawingml/shape.hxx"
+ #include "oox/drawingml/shapecontext.hxx"
+-#include "oox/drawingml/diagram/diagram.hxx"
+ 
+ namespace oox { namespace vml { struct OleObjectInfo; } }
+ 
+@@ -73,6 +72,8 @@ private:
+ 
+ // ====================================================================
+ 
++class Diagram;
++
+ class DiagramGraphicDataContext
+     : public ShapeContext
+ {
+@@ -82,8 +83,6 @@ public:
+     virtual ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XFastContextHandler > SAL_CALL createFastChildContext( ::sal_Int32 Element, const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XFastAttributeList >& Attribs ) throw (::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException);
+ 
+ private:
+-    DiagramPtr loadDiagram();
+-
+     ::rtl::OUString msDm;
+     ::rtl::OUString msLo;
+     ::rtl::OUString msQs;
+diff --git oox/inc/oox/drawingml/scene3dcontext.hxx oox/inc/oox/drawingml/scene3dcontext.hxx
+new file mode 100644
+index 0000000..c64bbf3
+--- /dev/null
++++ oox/inc/oox/drawingml/scene3dcontext.hxx
+@@ -0,0 +1,56 @@
++/*************************************************************************
++ *
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * Copyright 2008 by Sun Microsystems, Inc.
++ *
++ * OpenOffice.org - a multi-platform office productivity suite
++ *
++ * $RCSfile: fillpropertiesgroupcontext.hxx,v $
++ * $Revision: 1.6 $
++ *
++ * This file is part of OpenOffice.org.
++ *
++ * OpenOffice.org is free software: you can redistribute it and/or modify
++ * it under the terms of the GNU Lesser General Public License version 3
++ * only, as published by the Free Software Foundation.
++ *
++ * OpenOffice.org is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU Lesser General Public License version 3 for more details
++ * (a copy is included in the LICENSE file that accompanied this code).
++ *
++ * You should have received a copy of the GNU Lesser General Public License
++ * version 3 along with OpenOffice.org.  If not, see
++ * <http://www.openoffice.org/license.html>
++ * for a copy of the LGPLv3 License.
++ *
++ ************************************************************************/
++
++#ifndef OOX_DRAWINGML_SCENE3DPROPERTIESCONTEXT_HPP
++#define OOX_DRAWINGML_SCENE3DPROPERTIESCONTEXT_HPP
++
++#include "oox/core/contexthandler.hxx"
++
++namespace oox { namespace drawingml {
++
++struct Shape3DProperties;
++
++// ---------------------------------------------------------------------
++
++class Scene3DPropertiesContext : public ::oox::core::ContextHandler
++{
++public:
++    Scene3DPropertiesContext( ::oox::core::ContextHandler& rParent, Shape3DProperties& r3DProperties ) throw();
++
++    ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XFastContextHandler > SAL_CALL createFastChildContext( ::sal_Int32 Element, const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XFastAttributeList >& Attribs )
++            throw (::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException );
++
++private:
++    Shape3DProperties& mr3DProperties;
++};
++
++} }
++
++#endif // OOX_DRAWINGML_SCENE3DPROPERTIESCONTEXT_HPP
+diff --git oox/inc/oox/drawingml/shape.hxx oox/inc/oox/drawingml/shape.hxx
+index 2780fcd..65380c2 100644
+--- oox/inc/oox/drawingml/shape.hxx
++++ oox/inc/oox/drawingml/shape.hxx
+@@ -32,6 +32,7 @@
+ #include "oox/drawingml/drawingmltypes.hxx"
+ #include "oox/drawingml/customshapeproperties.hxx"
+ #include "oox/drawingml/textliststyle.hxx"
++#include "oox/drawingml/shape3dproperties.hxx"
+ 
+ #include <com/sun/star/frame/XModel.hpp>
+ #include <com/sun/star/drawing/XDrawPage.hpp>
+@@ -95,7 +96,8 @@ class Shape
+ {
+ public:
+ 

... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list