[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