You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openoffice.apache.org by cl...@apache.org on 2014/02/28 05:44:43 UTC

svn commit: r1572819 [3/4] - in /openoffice/branches/ooxml/main: ./ filter/inc/filter/msfilter/ filter/source/config/fragments/filters/ filter/source/config/fragments/types/ filter/source/msfilter/ formula/inc/formula/ formula/source/core/api/ oox/inc/...

Modified: openoffice/branches/ooxml/main/sc/source/filter/inc/xestream.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/sc/source/filter/inc/xestream.hxx?rev=1572819&r1=1572818&r2=1572819&view=diff
==============================================================================
--- openoffice/branches/ooxml/main/sc/source/filter/inc/xestream.hxx (original)
+++ openoffice/branches/ooxml/main/sc/source/filter/inc/xestream.hxx Fri Feb 28 04:44:42 2014
@@ -19,8 +19,6 @@
  * 
  *************************************************************/
 
-
-
 // ============================================================================
 
 #ifndef SC_XESTREAM_HXX
@@ -40,6 +38,8 @@
 #include "xestring.hxx"
 
 #include <filter/msfilter/mscodec.hxx>
+#include <i18npool/lang.h>
+#include <formula/grammar.hxx>
 #include <vector>
 
 /* ============================================================================
@@ -264,6 +264,7 @@ private:
     (s.Len() && s.GetChar( 0 ) != 0 ? XclXmlUtils::ToOString( s ).getStr() : NULL)
 
 class ScAddress;
+class ScDocShell;
 class ScDocument;
 class ScRange;
 class ScRangeList;
@@ -271,6 +272,7 @@ class ScTokenArray;
 struct XclAddress;
 struct XclFontData;
 class XclRangeList;
+class XclRange;
 
 class XclXmlUtils
 {
@@ -291,23 +293,31 @@ public:
     static ::rtl::OString ToOString( const XclAddress& rAddress );
     static ::rtl::OString ToOString( const XclExpString& s );
     static ::rtl::OString ToOString( const XclRangeList& rRangeList );
+    static ::rtl::OString ToOString( const XclRange& rRangeList );
 
     static ::rtl::OUString ToOUString( const char* s );
     static ::rtl::OUString ToOUString( const ScfUInt16Vec& rBuffer, sal_Int32 nStart = 0, sal_Int32 nLength = -1 );
     static ::rtl::OUString ToOUString( const String& s );
     static ::rtl::OUString ToOUString( ScDocument& rDocument, const ScAddress& rAddress, ScTokenArray* pTokenArray );
+    static ::rtl::OUString ToOUString( ScDocument& rDocument, const ScAddress& rAddress, 
+                    ScTokenArray* pTokenArray, ::formula::FormulaGrammar::Grammar eGrammar, LanguageType nLang, bool bIsRecoverable = true);
     static ::rtl::OUString ToOUString( const XclExpString& s );
     static const char* ToPsz( bool b );
+
+	static sax_fastparser::FSHelperPtr  WriteElement( sax_fastparser::FSHelperPtr pStream, sal_Int32 nElement, sal_Int32 nValue );
+    static sax_fastparser::FSHelperPtr  WriteElement( sax_fastparser::FSHelperPtr pStream, sal_Int32 nElement, sal_Int64 nValue );
+    static sax_fastparser::FSHelperPtr  WriteElement( sax_fastparser::FSHelperPtr pStream, sal_Int32 nElement, const char* sValue );
+    
 };
 
 class XclExpXmlStream : public oox::core::XmlFilterBase
 {
 public:
-    XclExpXmlStream( const com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >& rxContext, SvStream& rStrm, const XclExpRoot& rRoot );
+    XclExpXmlStream( const com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >& rxContext );
     virtual ~XclExpXmlStream();
 
     /** Returns the filter root data. */
-    inline const XclExpRoot& GetRoot() const { return mrRoot; }
+    inline const XclExpRoot& GetRoot() const { return *mpRoot; }
 
     sax_fastparser::FSHelperPtr& GetCurrentStream();
     void PushStream( sax_fastparser::FSHelperPtr aStream );
@@ -341,12 +351,13 @@ public:
 private:
     virtual ::oox::ole::VbaProject* implCreateVbaProject() const;
     virtual ::rtl::OUString implGetImplementationName() const;
+    ScDocShell *getDocShell();
 
     typedef std::map< ::rtl::OUString,
         std::pair< ::rtl::OUString,
             sax_fastparser::FSHelperPtr > >     XclExpXmlPathToStateMap;
 
-    const XclExpRoot&                           mrRoot;         /// Filter root data.
+    const XclExpRoot *                          mpRoot;         /// Filter root data.
     std::stack< sax_fastparser::FSHelperPtr >   maStreams;
     XclExpXmlPathToStateMap                     maOpenedStreamMap;
 };

Modified: openoffice/branches/ooxml/main/sc/source/filter/inc/xestyle.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/sc/source/filter/inc/xestyle.hxx?rev=1572819&r1=1572818&r2=1572819&view=diff
==============================================================================
--- openoffice/branches/ooxml/main/sc/source/filter/inc/xestyle.hxx (original)
+++ openoffice/branches/ooxml/main/sc/source/filter/inc/xestyle.hxx Fri Feb 28 04:44:42 2014
@@ -512,6 +512,9 @@ public:
 
     virtual void        SaveXml( XclExpXmlStream& rStrm );
 
+    void                SetIsUsed( bool bIsUsed ){ mbIsUsed = bIsUsed; }
+    bool                GetIsUsed(  ){ return mbIsUsed; }
+
     // for buffered FindXF
     const SfxItemSet* getItemSet() const { return mpItemSet; }
     sal_uInt32 getIndexInXFList() const { return mnIndexInXFList; }
@@ -539,6 +542,7 @@ protected:  // access for XclExpDefaultX
 
 private:
     using               XclXFBase::Equals;
+    bool                mbIsUsed:1;
 
     /** Initializes with default values. */
     void                InitDefault();

Modified: openoffice/branches/ooxml/main/sc/source/filter/inc/xetable.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/sc/source/filter/inc/xetable.hxx?rev=1572819&r1=1572818&r2=1572819&view=diff
==============================================================================
--- openoffice/branches/ooxml/main/sc/source/filter/inc/xetable.hxx (original)
+++ openoffice/branches/ooxml/main/sc/source/filter/inc/xetable.hxx Fri Feb 28 04:44:42 2014
@@ -72,6 +72,8 @@ public:
     virtual XclTokenArrayRef CreateCellTokenArray( const XclExpRoot& rRoot ) const = 0;
     /** Derived classes return true, if the own formula contains volatile functions. */
     virtual bool        IsVolatile() const = 0;
+    virtual bool        IsRecoverable() const = 0;
+    const XclRange&     GetXclRange() const {return maXclRange;}
 
 protected:
     /** Constructs the record with a single cell. */
@@ -114,6 +116,7 @@ public:
     virtual XclTokenArrayRef CreateCellTokenArray( const XclExpRoot& rRoot ) const;
     /** Returns true, if the array formula contains volatile functions. */
     virtual bool        IsVolatile() const;
+    virtual bool        IsRecoverable() const;
 
 private:
     virtual void        WriteBody( XclExpStream& rStrm );
@@ -155,7 +158,7 @@ class XclExpShrfmla : public XclExpRange
 {
 public:
     /** Creates a SHRFMLA record that consists of the passed cell address only. */
-    explicit            XclExpShrfmla( XclTokenArrayRef xTokArr, const ScAddress& rScPos );
+    explicit            XclExpShrfmla( XclTokenArrayRef xTokArr, const ScAddress& rScPos, const sal_uInt32 nIndex );
 
     /** Extends the cell range to include the passed cell address. */
     void                ExtendRange( const ScAddress& rScPos );
@@ -164,6 +167,8 @@ public:
     virtual XclTokenArrayRef CreateCellTokenArray( const XclExpRoot& rRoot ) const;
     /** Returns true, if the shared formula contains volatile functions. */
     virtual bool        IsVolatile() const;
+    virtual bool        IsRecoverable() const;
+    const sal_uInt32    GetIndex() const {return mnIndex;}
 
 private:
     virtual void        WriteBody( XclExpStream& rStrm );
@@ -171,6 +176,7 @@ private:
 private:
     XclTokenArrayRef    mxTokArr;       /// The token array of a shared formula.
     sal_uInt8           mnUsedCount;    /// Number of FORMULA records referring to this record.
+    const sal_uInt32    mnIndex;        /// The Nth shared formula in a sheet
 };
 
 typedef ScfRef< XclExpShrfmla > XclExpShrfmlaRef;
@@ -195,6 +201,8 @@ public:
 private:
     typedef ::std::map< const ScTokenArray*, XclExpShrfmlaRef > XclExpShrfmlaMap;
     XclExpShrfmlaMap    maRecMap;       /// Map containing the SHRFMLA records.
+    typedef ::std::map<sal_Int16, sal_uInt32> XclExpShrfmlaIndexMap;
+    XclExpShrfmlaIndexMap         mnTabSFIndexMap;///All shared formula are created from its buffer. Here use its buffer to save the last shared formula index for each sheet
 };
 
 // Multiple operations ========================================================
@@ -219,8 +227,12 @@ public:
     virtual XclTokenArrayRef CreateCellTokenArray( const XclExpRoot& rRoot ) const;
     /** Returns true, if the multiple operations range is volatile. */
     virtual bool        IsVolatile() const;
+    virtual bool        IsRecoverable() const;
     /** Writes the record if it is valid. */
     virtual void        Save( XclExpStream& rStrm );
+    const ScAddress&    GetRowRef() const {return ScAddress(mnRowInpXclCol, mnRowInpXclRow, mnScTab);}
+    const ScAddress&    GetColRef() const {return ScAddress(mnColInpXclCol, mnColInpXclRow, mnScTab);}
+    const sal_uInt8     GetMOType() const {return mnScMode;}
 
 private:
     /** Returns true, if the passed cell position can be appended to this record. */

Modified: openoffice/branches/ooxml/main/sc/source/filter/inc/xlformula.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/sc/source/filter/inc/xlformula.hxx?rev=1572819&r1=1572818&r2=1572819&view=diff
==============================================================================
--- openoffice/branches/ooxml/main/sc/source/filter/inc/xlformula.hxx (original)
+++ openoffice/branches/ooxml/main/sc/source/filter/inc/xlformula.hxx Fri Feb 28 04:44:42 2014
@@ -19,8 +19,6 @@
  * 
  *************************************************************/
 
-
-
 #ifndef SC_XLFORMULA_HXX
 #define SC_XLFORMULA_HXX
 
@@ -371,7 +369,7 @@ public:
     /** Creates an empty token array. */
     explicit            XclTokenArray( bool bVolatile = false );
     /** Creates a token array, swaps passed token vector into own data. */
-    explicit            XclTokenArray( ScfUInt8Vec& rTokVec, bool bVolatile = false );
+    explicit            XclTokenArray( ScfUInt8Vec& rTokVec, bool bVolatile = false, bool bRecoverable = true );
     /** Creates a token array, swaps passed token vectors into own data. */
     explicit            XclTokenArray( ScfUInt8Vec& rTokVec, ScfUInt8Vec& rExtDataVec, bool bVolatile = false );
 
@@ -383,6 +381,7 @@ public:
     inline const sal_uInt8* GetData() const { return maTokVec.empty() ? 0 : &maTokVec.front(); }
     /** Returns true, if the formula contains a volatile function. */
     inline bool         IsVolatile() const { return mbVolatile; }
+    inline bool         IsRecoverable() const { return mbRecoverable; }
 
     /** Reads the size field of the token array. */
     void                ReadSize( XclImpStream& rStrm );
@@ -405,6 +404,7 @@ private:
     ScfUInt8Vec         maTokVec;       /// Byte vector containing token data.
     ScfUInt8Vec         maExtDataVec;   /// Byte vector containing extended data (arrays, stacked NLRs).
     bool                mbVolatile;     /// True = Formula contains volatile function.
+    bool                mbRecoverable;  /// True = The formula is invalid but can be recovered
 };
 
 typedef ScfRef< XclTokenArray > XclTokenArrayRef;
@@ -451,10 +451,13 @@ public:
     inline const ::formula::FormulaToken& operator*() const { return *Get(); }
 
     XclTokenArrayIterator& operator++();
+    XclTokenArrayIterator& operator--();
 
 private:
     void                NextRawToken();
+    void                PrevRawToken();
     void                SkipSpaces();
+    void                SkipSpacesBack();
 
 private:
     const ::formula::FormulaToken*const* mppScTokenBeg;     /// Pointer to first token pointer of token array.

Modified: openoffice/branches/ooxml/main/sc/source/filter/inc/xltools.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/sc/source/filter/inc/xltools.hxx?rev=1572819&r1=1572818&r2=1572819&view=diff
==============================================================================
--- openoffice/branches/ooxml/main/sc/source/filter/inc/xltools.hxx (original)
+++ openoffice/branches/ooxml/main/sc/source/filter/inc/xltools.hxx Fri Feb 28 04:44:42 2014
@@ -181,6 +181,10 @@ public:
         @descr  Adds a prefix to the representation returned by GetXclBuiltInDefName().
         @param cBuiltIn  Excel index of the built-in name. */
     static String       GetBuiltInDefName( sal_Unicode cBuiltIn );
+    /** Returns the Calc UI representation of a built-in defined name used in NAME records.
+        @descr  get built in style name from builtid.
+        @param cBuiltIn  Excel index of the built-in name. */
+    static String       GetBuiltinStyleNameFromId( sal_Int32 nBuiltinId, sal_Int32 nLevel = 0 );
     /** Returns the Excel built-in name index of the passed defined name from Calc.
         @descr  Ignores any characters following a valid representation of a built-in name.
         @param pcBuiltIn  (out-param) If not 0, the index of the built-in name will be returned here.
@@ -245,6 +249,7 @@ private:
     static const String maCFStyleNamePrefix2;       /// Prefix for cond. formatting style names from OOX filter.
     static const ::rtl::OUString maSbMacroPrefix;   /// Prefix for StarBasic macros.
     static const ::rtl::OUString maSbMacroSuffix;   /// Suffix for StarBasic macros.
+    static const sal_Int32 snStyleNamesCount;
 };
 
 // read/write colors ----------------------------------------------------------

Modified: openoffice/branches/ooxml/main/sc/source/filter/xcl97/xcl97esc.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/sc/source/filter/xcl97/xcl97esc.cxx?rev=1572819&r1=1572818&r2=1572819&view=diff
==============================================================================
--- openoffice/branches/ooxml/main/sc/source/filter/xcl97/xcl97esc.cxx (original)
+++ openoffice/branches/ooxml/main/sc/source/filter/xcl97/xcl97esc.cxx Fri Feb 28 04:44:42 2014
@@ -270,7 +270,7 @@ EscherExHostAppData* XclEscherEx::StartS
         {
             // #107540# ignore permanent note shapes
             // #i12190# do not ignore callouts (do not filter by object type ID)
-            pCurrXclObj = new XclObjAny( mrObjMgr );   // just a metafile
+            pCurrXclObj = new XclObjAny( mrObjMgr ,rxShape );   // just a metafile
         }
 	}
 	if ( pCurrXclObj )

Modified: openoffice/branches/ooxml/main/sc/source/filter/xcl97/xcl97rec.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/sc/source/filter/xcl97/xcl97rec.cxx?rev=1572819&r1=1572818&r2=1572819&view=diff
==============================================================================
--- openoffice/branches/ooxml/main/sc/source/filter/xcl97/xcl97rec.cxx (original)
+++ openoffice/branches/ooxml/main/sc/source/filter/xcl97/xcl97rec.cxx Fri Feb 28 04:44:42 2014
@@ -72,6 +72,10 @@
 #include "docoptio.hxx"
 #include "patattr.hxx"
 #include "tabprotection.hxx"
+#include <oox/export/utils.hxx>
+#include <oox/export/vmlexport.hxx>
+#include <oox/export/shapes.hxx>
+#include "oox/token/tokens.hxx"
 
 using namespace ::oox;
 
@@ -83,10 +87,23 @@ using ::com::sun::star::uno::UNO_QUERY;
 using ::com::sun::star::beans::XPropertySet;
 using ::com::sun::star::drawing::XShape;
 
+using ::oox::drawingml::ShapeExport;
+using ::oox::drawingml::DrawingML;
+
+int XclExpObjList::mnDrawingMLCount=0;
+int XclExpObjList::mnVmlCount=0;
+
+void XclExpObjList::ResetCounters()
+{
+    mnDrawingMLCount    = 0;
+    mnVmlCount          = 0;
+}
+
 // ============================================================================
 
 XclExpObjList::XclExpObjList( const XclExpRoot& rRoot, XclEscherEx& rEscherEx ) :
     XclExpRoot( rRoot ),
+	mnScTab( rRoot.GetCurrScTab() ),
     mrEscherEx( rEscherEx ),
     pSolverContainer( 0 )
 {
@@ -114,6 +131,8 @@ sal_uInt16 XclExpObjList::Add( XclObj* p
 		Insert( pObj, LIST_APPEND );
 		sal_uInt16 nCnt = (sal_uInt16) Count();
 		pObj->SetId( nCnt );
+		pObj->SetTab( mnScTab );
+		
 		return nCnt;
 	}
 	else
@@ -145,6 +164,69 @@ void XclExpObjList::Save( XclExpStream& 
         pSolverContainer->Save( rStrm );
 }
 
+static bool IsVmlObject( const XclObj& rObj )
+{
+    switch( rObj.GetObjType() )
+    {
+        case EXC_OBJTYPE_NOTE:
+            return true;
+        default:
+            return false;
+    }
+}
+
+static void SaveDrawingMLObjects( XclExpObjList& rList, XclExpXmlStream& rStrm, int& nDrawingMLCount )
+{
+  
+
+    sal_Int32 nDrawing = ++nDrawingMLCount;
+    OUString sId;
+    sax_fastparser::FSHelperPtr pDrawing = rStrm.CreateOutputStream(
+            XclXmlUtils::GetStreamName( "xl/", "drawings/drawing", nDrawing ),
+            XclXmlUtils::GetStreamName( "../", "drawings/drawing", nDrawing ),
+            rStrm.GetCurrentStream()->getOutputStream(),
+            "application/vnd.openxmlformats-officedocument.drawing+xml",
+            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing",
+            &sId );
+
+    rStrm.GetCurrentStream()->singleElement( XML_drawing,
+            FSNS( XML_r, XML_id ),  XclXmlUtils::ToOString( sId ).getStr(),
+            FSEND );
+
+    rStrm.PushStream( pDrawing );
+    pDrawing->startElement( FSNS( XML_xdr, XML_wsDr ),
+            FSNS( XML_xmlns, XML_xdr ), "http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing",
+            FSNS( XML_xmlns, XML_a ),   "http://schemas.openxmlformats.org/drawingml/2006/main",
+            FSNS( XML_xmlns, XML_r ),   "http://schemas.openxmlformats.org/officeDocument/2006/relationships",
+            FSEND );
+
+    for ( XclObj* p = rList.First(); p; p = rList.Next() )
+    {
+      	// if( p->GetObjType() != 0 ) //zhaosz_xml, obj is a group
+        if( IsVmlObject( *p ) || p->GetObjType()==0)
+            continue;
+		p->SaveXml( rStrm );
+    }
+
+    pDrawing->endElement( FSNS( XML_xdr, XML_wsDr ) );
+
+    rStrm.PopStream();
+}
+
+void XclExpObjList::SaveXml( XclExpXmlStream& rStrm )
+{
+    
+    if( pSolverContainer )
+         pSolverContainer->SaveXml( rStrm );
+
+    if( Count() == 0 )
+        return;
+
+    SaveDrawingMLObjects( *this, rStrm, mnDrawingMLCount );
+    //SaveVmlObjects( *this, rStrm, mnVmlCount );
+    
+}
+
 // --- class XclObj --------------------------------------------------
 
 XclObj::XclObj( XclExpObjectManager& rObjMgr, sal_uInt16 nObjType, bool bOwnEscher ) :
@@ -673,6 +755,12 @@ XclObjAny::XclObjAny( XclExpObjectManage
 {
 }
 
+XclObjAny::XclObjAny( XclExpObjectManager& rObjMgr,Reference< XShape > xShape ) :
+    XclObj( rObjMgr, EXC_OBJTYPE_UNKNOWN ),
+	mxShape( xShape)
+{
+}
+
 XclObjAny::~XclObjAny()
 {
 }
@@ -694,6 +782,85 @@ void XclObjAny::Save( XclExpStream& rStr
 	XclObj::Save( rStrm );
 }
 
+static const char* GetEditAs( XclObjAny& rObj )
+{
+    if( const SdrObject* pShape = EscherEx::GetSdrObject( rObj.GetShape() ) )
+    {
+        // OOXTODO: returning "twoCell"
+        switch( ScDrawLayer::GetAnchorType( *pShape ) )
+        {
+            case SCA_CELL:  return "oneCell";
+            default:        break;
+        }
+    }
+    return "absolute";
+}
+
+void XclObjAny::WriteFromTo( XclExpXmlStream& rStrm, const Reference< XShape >& rShape, SCTAB nTab )
+{
+    sax_fastparser::FSHelperPtr pDrawing = rStrm.GetCurrentStream();
+
+    awt::Point  aTopLeft    = rShape->getPosition();
+    awt::Size   aSize       = rShape->getSize();
+    Rectangle   aLocation( aTopLeft.X, aTopLeft.Y, aTopLeft.X + aSize.Width, aTopLeft.Y + aSize.Height );
+    ScRange     aRange      = rStrm.GetRoot().GetDoc().GetRange( nTab, aLocation );
+    Rectangle   aRangeRect  = rStrm.GetRoot().GetDoc().GetMMRect( aRange.aStart.Col(), aRange.aStart.Row(),
+            aRange.aEnd.Col()-1, aRange.aEnd.Row()-1,
+            nTab );
+
+
+    pDrawing->startElement( FSNS( XML_xdr, XML_from ),
+            FSEND );
+    XclXmlUtils::WriteElement( pDrawing, FSNS( XML_xdr, XML_col ), (sal_Int32) aRange.aStart.Col() );
+    XclXmlUtils::WriteElement( pDrawing, FSNS( XML_xdr, XML_colOff ),
+            MM100toEMU( aLocation.Left() - aRangeRect.Left() ) );
+    XclXmlUtils::WriteElement( pDrawing, FSNS( XML_xdr, XML_row ), (sal_Int32) aRange.aStart.Row() );
+    XclXmlUtils::WriteElement( pDrawing, FSNS( XML_xdr, XML_rowOff ),
+            MM100toEMU( aLocation.Top() - aRangeRect.Top() ) );
+    pDrawing->endElement( FSNS( XML_xdr, XML_from ) );
+
+    pDrawing->startElement( FSNS( XML_xdr, XML_to ),
+            FSEND );
+    XclXmlUtils::WriteElement( pDrawing, FSNS( XML_xdr, XML_col ), (sal_Int32) aRange.aEnd.Col() );
+    XclXmlUtils::WriteElement( pDrawing, FSNS( XML_xdr, XML_colOff ),
+            MM100toEMU( aLocation.Right() - aRangeRect.Right() ) );
+    XclXmlUtils::WriteElement( pDrawing, FSNS( XML_xdr, XML_row ), (sal_Int32) aRange.aEnd.Row() );
+    XclXmlUtils::WriteElement( pDrawing, FSNS( XML_xdr, XML_rowOff ),
+            MM100toEMU( aLocation.Bottom() - aRangeRect.Bottom() ) );
+    pDrawing->endElement( FSNS( XML_xdr, XML_to ) );
+}
+
+void XclObjAny::WriteFromTo( XclExpXmlStream& rStrm, const XclObjAny& rObj )
+{
+    WriteFromTo( rStrm, rObj.GetShape(), rObj.GetTab() );
+}
+
+void XclObjAny::SaveXml( XclExpXmlStream& rStrm )
+{
+    if( !mxShape.is() )
+        return;
+
+    sax_fastparser::FSHelperPtr pDrawing = rStrm.GetCurrentStream();
+
+    ShapeExport aDML( XML_xdr, pDrawing, NULL, &rStrm, DrawingML::DOCUMENT_XLSX );
+	
+    pDrawing->startElement( FSNS( XML_xdr, XML_twoCellAnchor ), // OOXTODO: oneCellAnchor, absoluteAnchor
+            XML_editAs, GetEditAs( *this ),
+            FSEND );
+    Reference< XPropertySet > xPropSet( mxShape, UNO_QUERY );
+    if (xPropSet.is())
+    {
+        WriteFromTo( rStrm, *this );
+        aDML.WriteShape( mxShape );
+    }
+
+    pDrawing->singleElement( FSNS( XML_xdr, XML_clientData),
+            // OOXTODO: XML_fLocksWithSheet
+            // OOXTODO: XML_fPrintsWithSheet
+            FSEND );
+    pDrawing->endElement( FSNS( XML_xdr, XML_twoCellAnchor ) );
+}
+
 // --- class ExcBof8_Base --------------------------------------------
 
 ExcBof8_Base::ExcBof8_Base()

Modified: openoffice/branches/ooxml/main/sc/util/makefile.mk
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/sc/util/makefile.mk?rev=1572819&r1=1572818&r2=1572819&view=diff
==============================================================================
--- openoffice/branches/ooxml/main/sc/util/makefile.mk (original)
+++ openoffice/branches/ooxml/main/sc/util/makefile.mk Fri Feb 28 04:44:42 2014
@@ -19,8 +19,6 @@
 #  
 #**************************************************************
 
-
-
 PRJ=..
 
 PRJNAME=sc
@@ -49,7 +47,6 @@ RESLIB1LIST=\
 	$(SRS)$/navipi.srs	\
 	$(SRS)$/cctrl.srs	\
 
-
 RESLIB1NAME=sc
 RESLIB1IMAGES=\
 	$(PRJ)$/res					\
@@ -330,7 +327,7 @@ SHL9LIBS=$(SLB)$/$(TARGET_VBA).lib
 
 ALLTAR:	$(MISC)$/linkinc.ls  $(COMP)
 
-ALLTAR : $(MISC)/sc.component $(MISC)/scd.component $(MISC)/vbaobj.component
+ALLTAR : $(MISC)/sc.component $(MISC)/scfilt.component $(MISC)/scd.component $(MISC)/vbaobj.component
 
 $(MISC)/sc.component .ERRREMOVE : $(SOLARENV)/bin/createcomponent.xslt \
         sc.component
@@ -338,6 +335,12 @@ $(MISC)/sc.component .ERRREMOVE : $(SOLA
         '$(COMPONENTPREFIX_BASIS_NATIVE)$(SHL1TARGETN:f)' -o $@ \
         $(SOLARENV)/bin/createcomponent.xslt sc.component
 
+$(MISC)/scfilt.component .ERRREMOVE : $(SOLARENV)/bin/createcomponent.xslt \
+        scfilt.component
+    $(XSLTPROC) --nonet --stringparam uri \
+        '$(COMPONENTPREFIX_BASIS_NATIVE)$(SHL6TARGETN:f)' -o $@ \
+        $(SOLARENV)/bin/createcomponent.xslt scfilt.component
+
 $(MISC)/scd.component .ERRREMOVE : $(SOLARENV)/bin/createcomponent.xslt \
         scd.component
     $(XSLTPROC) --nonet --stringparam uri \

Added: openoffice/branches/ooxml/main/sc/util/scfilt.component
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/sc/util/scfilt.component?rev=1572819&view=auto
==============================================================================
--- openoffice/branches/ooxml/main/sc/util/scfilt.component (added)
+++ openoffice/branches/ooxml/main/sc/util/scfilt.component Fri Feb 28 04:44:42 2014
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--***********************************************************
+ * 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ * 
+ ***********************************************************-->
+
+<component loader="com.sun.star.loader.SharedLibrary"
+    xmlns="http://openoffice.org/2010/uno-components">
+  <implementation name="com.sun.star.comp.Calc.OOXMLExporter">
+    <service name="com.sun.star.document.ExportFilter"/>
+  </implementation>
+</component>

Modified: openoffice/branches/ooxml/main/sc/util/scfilt.map
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/sc/util/scfilt.map?rev=1572819&r1=1572818&r2=1572819&view=diff
==============================================================================
--- openoffice/branches/ooxml/main/sc/util/scfilt.map (original)
+++ openoffice/branches/ooxml/main/sc/util/scfilt.map Fri Feb 28 04:44:42 2014
@@ -21,6 +21,9 @@
 UDK_3_0_0 {
   global:
     ScFilterCreate;
+    component_getImplementationEnvironment;
+    component_writeInfo;
+    component_getFactory;
   local:
     *;
 };

Modified: openoffice/branches/ooxml/main/scp2/source/ooo/file_library_ooo.scp
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/scp2/source/ooo/file_library_ooo.scp?rev=1572819&r1=1572818&r2=1572819&view=diff
==============================================================================
--- openoffice/branches/ooxml/main/scp2/source/ooo/file_library_ooo.scp (original)
+++ openoffice/branches/ooxml/main/scp2/source/ooo/file_library_ooo.scp Fri Feb 28 04:44:42 2014
@@ -1401,7 +1401,7 @@ STD_LIB_FILE( gid_File_Lib_Sw , sw)
 #endif
 STD_LIB_FILE( gid_File_Lib_Swui, swui)
 
-STD_LIB_FILE( gid_File_Lib_Msword, msword )
+STD_UNO_LIB_FILE( gid_File_Lib_Msword, msword )
 
 #if ! defined UNX
 File gid_File_Lib_Sysdtrans

Modified: openoffice/branches/ooxml/main/sd/prj/d.lst
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/sd/prj/d.lst?rev=1572819&r1=1572818&r2=1572819&view=diff
==============================================================================
--- openoffice/branches/ooxml/main/sd/prj/d.lst (original)
+++ openoffice/branches/ooxml/main/sd/prj/d.lst Fri Feb 28 04:44:42 2014
@@ -57,3 +57,4 @@ mkdir: %_DEST%\inc%_EXT%\sd
 
 ..\%__SRC%\misc\sd.component %_DEST%\xml%_EXT%\sd.component
 ..\%__SRC%\misc\sdd.component %_DEST%\xml%_EXT%\sdd.component
+..\%__SRC%\misc\sdfilt.component %_DEST%\xml%_EXT%\sdfilt.component

Modified: openoffice/branches/ooxml/main/sd/source/filter/eppt/makefile.mk
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/sd/source/filter/eppt/makefile.mk?rev=1572819&r1=1572818&r2=1572819&view=diff
==============================================================================
--- openoffice/branches/ooxml/main/sd/source/filter/eppt/makefile.mk (original)
+++ openoffice/branches/ooxml/main/sd/source/filter/eppt/makefile.mk Fri Feb 28 04:44:42 2014
@@ -41,7 +41,9 @@ SLOFILES =	$(SLO)$/eppt.obj				\
 			$(SLO)$/epptso.obj				\
 			$(SLO)$/escherex.obj			\
 			$(SLO)$/pptexanimations.obj		\
-			$(SLO)$/pptexsoundcollection.obj
+			$(SLO)$/pptexsoundcollection.obj \
+			$(SLO)$/pptexooxml.obj			\
+			$(SLO)$/pptexpbase.obj
 
 # --- Targets --------------------------------------------------------------
 

Added: openoffice/branches/ooxml/main/sd/source/filter/eppt/pptexooxml.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/sd/source/filter/eppt/pptexooxml.cxx?rev=1572819&view=auto
==============================================================================
--- openoffice/branches/ooxml/main/sd/source/filter/eppt/pptexooxml.cxx (added)
+++ openoffice/branches/ooxml/main/sd/source/filter/eppt/pptexooxml.cxx Fri Feb 28 04:44:42 2014
@@ -0,0 +1,300 @@
+/**************************************************************
+ * 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ * 
+ *************************************************************/
+
+#include <rtl/ustrbuf.hxx>
+#include <oox/token/tokens.hxx>
+#include <oox/ole/vbaproject.hxx>
+#include "pptexooxml.hxx"
+#include <cppuhelper/factory.hxx>
+#include <rtl/ustring.hxx>
+#include <sax/fshelper.hxx>
+
+using ::rtl::OString;
+using ::rtl::OUString;
+using ::rtl::OUStringBuffer;
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::animations;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::container;
+using namespace ::com::sun::star::drawing;
+using namespace ::com::sun::star::presentation;
+using namespace ::com::sun::star::uno;
+using namespace ::ppt;
+using namespace ::oox;
+
+using ::com::sun::star::beans::XPropertySet;
+using ::com::sun::star::beans::XPropertySetInfo;
+using ::com::sun::star::lang::XMultiServiceFactory;
+using ::com::sun::star::container::XIndexAccess;
+using ::com::sun::star::frame::XModel;
+using ::com::sun::star::task::XStatusIndicator;
+using ::com::sun::star::text::XSimpleText;
+using ::sax_fastparser::FastSerializerHelper;
+using ::sax_fastparser::FSHelperPtr;
+
+using ::com::sun::star::beans::PropertyValue;
+using ::com::sun::star::embed::XStorage;
+using ::com::sun::star::io::XOutputStream;
+using ::com::sun::star::io::XStream;
+using ::com::sun::star::lang::XComponent;
+using ::com::sun::star::lang::XMultiServiceFactory;
+using ::com::sun::star::lang::XServiceInfo;
+using ::com::sun::star::lang::XSingleServiceFactory;
+using ::com::sun::star::registry::InvalidRegistryException;
+using ::com::sun::star::registry::XRegistryKey;
+using ::com::sun::star::uno::Exception;
+using ::com::sun::star::uno::Reference;
+using ::com::sun::star::uno::Sequence;
+using ::com::sun::star::uno::UNO_QUERY;
+using ::com::sun::star::uno::XInterface;
+
+
+// presentation namespaces
+#define PRESENTATIONNASS FSNS( XML_xmlns, XML_a ), "http://schemas.openxmlformats.org/drawingml/2006/main", \
+                      FSNS( XML_xmlns, XML_p ), "http://schemas.openxmlformats.org/presentationml/2006/main", \
+                      FSNS( XML_xmlns, XML_r ), "http://schemas.openxmlformats.org/officeDocument/2006/relationships"
+
+
+PPTXExport::PPTXExport( const Reference< XComponentContext >& xCtx )
+    : XmlFilterBase( xCtx ),
+     PPTEXPBase(),
+     mnSlideIdMax( 1 << 8 ),
+     mnSlideMasterIdMax( 1 << 31 ),
+     mnAnimationNodeIdMax( 1 )
+{}
+
+PPTXExport::~PPTXExport()
+{
+}
+
+bool PPTXExport::importDocument() throw()
+{
+    return false;
+}
+
+bool PPTXExport::exportDocument() throw()
+{
+    addRelation( CREATE_OUSTRING( "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" ), CREATE_OUSTRING( "ppt/presentation.xml" ) );
+
+    mPresentationFS = openFragmentStreamWithSerializer( CREATE_OUSTRING( "ppt/presentation.xml" ),CREATE_OUSTRING( "application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml" ) );
+    mPresentationFS->startElementNS( XML_p, XML_presentation, PRESENTATIONNASS, FSEND );
+
+    mXModel.set( getModel(), UNO_QUERY );
+    mXStatusIndicator.set( getStatusIndicator(), UNO_QUERY );
+
+    exportPPT();
+    
+    mPresentationFS->endElementNS( XML_p, XML_presentation );
+    mPresentationFS.reset();
+    commitStorage();			
+    return true;
+}
+
+sal_Bool PPTXExport::ImplCreateDocument()
+{
+    mbCreateNotes = sal_False;
+
+    for( sal_uInt32 i = 0; i < mnPages; i++ )
+    {
+        if ( !ImplGetPageByIndex( i, NOTICE ) )
+            return sal_False;
+
+    if( ContainsOtherShapeThanPlaceholders( sal_True ) ) {
+        mbCreateNotes = sal_True;
+        break;
+    }
+    }
+
+    return sal_True;
+}
+
+::oox::ole::VbaProject* PPTXExport::implCreateVbaProject() const
+{
+    return new ::oox::ole::VbaProject( getComponentContext(), getModel(), CREATE_OUSTRING( "Impress" ) );
+}
+
+void PPTXExport::ImplWriteSlide( sal_uInt32 nPageNum, sal_uInt32 nMasterNum, sal_uInt16 /* nMode */,
+                                       sal_Bool bHasBackground, Reference< XPropertySet > aXBackgroundPropSet )
+{
+   
+    // slides list
+    if( nPageNum == 0 )
+        mPresentationFS->startElementNS( XML_p, XML_sldIdLst, FSEND );
+
+    // add explicit relation of presentation to this slide
+    OUString sRelId = addRelation( mPresentationFS->getOutputStream(),
+                                   CREATE_OUSTRING( "http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide" ),
+                                   OUStringBuffer()
+                                   .appendAscii( "slides/slide" )
+                                   .append( (sal_Int32) nPageNum + 1 )
+                                   .appendAscii( ".xml" )
+                                   .makeStringAndClear() );
+
+    mPresentationFS->singleElementNS( XML_p, XML_sldId,
+                                      XML_id, OString::valueOf( (sal_Int32) GetNewSlideId() ).getStr(),
+                                      FSNS( XML_r, XML_id ),  OUStringToOString( sRelId, RTL_TEXTENCODING_UTF8 ).getStr(),
+                                      FSEND );
+
+    if( nPageNum == mnPages - 1 )
+        mPresentationFS->endElementNS( XML_p, XML_sldIdLst );
+
+    FSHelperPtr pFS = openFragmentStreamWithSerializer( OUStringBuffer()
+                                                        .appendAscii( "ppt/slides/slide" )
+                                                        .append( (sal_Int32) nPageNum + 1 )
+                                                        .appendAscii( ".xml" )
+                                                        .makeStringAndClear(),
+                                                        CREATE_OUSTRING( "application/vnd.openxmlformats-officedocument.presentationml.slide+xml" ) );
+
+    if( mpSlidesFSArray.size() < mnPages )
+    mpSlidesFSArray.resize( mnPages );
+    mpSlidesFSArray[ nPageNum ] = pFS;
+
+    const char* pShow = NULL;
+
+    if(ImplGetPropertyValue( mXPagePropSet, String( RTL_CONSTASCII_USTRINGPARAM( "Visible" ) ) ) ) {
+    sal_Bool bShow(sal_False);
+    if( ( mAny >>= bShow ) && !bShow )
+        pShow = "0";
+    }
+
+    pFS->startElementNS( XML_p, XML_sld, PRESENTATIONNASS,
+             XML_show, pShow,
+             FSEND );
+
+    pFS->startElementNS( XML_p, XML_cSld, FSEND );
+
+    // background
+ //   if( bHasBackground ) {
+ //       ImplWriteBackground( pFS, aXBackgroundPropSet );
+ //   }
+
+ //   WriteShapeTree( pFS, NORMAL, sal_False );
+
+    pFS->endElementNS( XML_p, XML_cSld );
+
+//    WriteTransition( pFS );
+//    WriteAnimations( pFS );
+
+    pFS->endElementNS( XML_p, XML_sld );
+}
+
+// UNO stuff so that the filter is registered
+
+#define PPTX_EXPORT_IMPL_NAME "com.sun.star.comp.Impress.OOXMLExporter"
+
+OUString SdOOXMLExport_getImplementationName()
+{
+	return OUString( RTL_CONSTASCII_USTRINGPARAM( PPTX_EXPORT_IMPL_NAME ) );
+}
+::rtl::OUString PPTXExport::implGetImplementationName() const
+{
+    return CREATE_OUSTRING( "TODO" );
+}
+
+Sequence< OUString > SAL_CALL SdOOXMLExport_getSupportedServiceNames() throw()
+{
+	const OUString aServiceName( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.document.ExportFilter" ) );
+	const Sequence< OUString > aSeq( &aServiceName, 1 );
+	return aSeq;
+}
+
+Reference< XInterface > SAL_CALL SdOOXMLExport_createInstance(const Reference< XMultiServiceFactory > & rSMgr ) throw( Exception )
+{
+    Reference< XInterface > xRet;
+    Reference< XComponentContext > xCtx;
+    Reference< XPropertySet > const xProps( rSMgr, UNO_QUERY );
+    if ( xProps.is() )
+    {
+        try 
+        {
+            xCtx.set( xProps->getPropertyValue( rtl::OUString::createFromAscii( "DefaultContext" ) ), UNO_QUERY );
+        }
+        catch ( UnknownPropertyException & e ) 
+        {
+        }
+    }
+    if ( xCtx.is() )
+        xRet.set( (cppu::OWeakObject*) new PPTXExport( xCtx ) );
+	return xRet;
+}
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+	SAL_DLLPUBLIC_EXPORT void SAL_CALL component_getImplementationEnvironment( const sal_Char ** ppEnvTypeName, uno_Environment ** /* ppEnv */ )
+	{
+		*ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME;
+	}
+
+	SAL_DLLPUBLIC_EXPORT sal_Bool SAL_CALL component_writeInfo( void* /* pServiceManager */, void* pRegistryKey )
+	{
+		sal_Bool bRet = false;
+
+		if ( pRegistryKey )
+		{
+			try
+			{
+				Reference< XRegistryKey > xNewKey1(
+					static_cast< XRegistryKey* >( pRegistryKey )->createKey(
+					OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.comp.Impress.OOXMLExporter/UNO/SERVICES/" )) ) );
+				xNewKey1->createKey( SdOOXMLExport_getSupportedServiceNames().getConstArray()[0] );
+
+				bRet = sal_True;
+			}
+			catch ( InvalidRegistryException& )
+			{
+				OSL_ENSURE( false, "### InvalidRegistryException!" );
+			}
+		}
+
+		return bRet;
+	}
+
+SAL_DLLPUBLIC_EXPORT void* SAL_CALL component_getFactory( const sal_Char* pImplName, void* pServiceManager, void* /* pRegistryKey */ )
+{
+    Reference< XSingleServiceFactory > xFactory;
+    void* pRet = 0;
+
+    if ( rtl_str_compare( pImplName, PPTX_EXPORT_IMPL_NAME ) == 0 ) {
+        const OUString aServiceName( OUString::createFromAscii( PPTX_EXPORT_IMPL_NAME ) );
+
+        xFactory = Reference< XSingleServiceFactory >( ::cppu::createSingleFactory(
+                    reinterpret_cast< XMultiServiceFactory* >( pServiceManager ),
+                    SdOOXMLExport_getImplementationName(),
+                    SdOOXMLExport_createInstance,
+                    SdOOXMLExport_getSupportedServiceNames() ) );
+    } 
+   
+    if ( xFactory.is() )
+    {
+        xFactory->acquire();
+        pRet = xFactory.get();
+    }
+
+    return pRet;
+}
+	
+#ifdef __cplusplus
+}
+#endif
+

Added: openoffice/branches/ooxml/main/sd/source/filter/eppt/pptexooxml.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/sd/source/filter/eppt/pptexooxml.hxx?rev=1572819&view=auto
==============================================================================
--- openoffice/branches/ooxml/main/sd/source/filter/eppt/pptexooxml.hxx (added)
+++ openoffice/branches/ooxml/main/sd/source/filter/eppt/pptexooxml.hxx Fri Feb 28 04:44:42 2014
@@ -0,0 +1,126 @@
+/**************************************************************
+ * 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ * 
+ *************************************************************/
+
+#ifndef PPTEXOOXML_EXPORT_HXX
+#define PPTEXOOXML_EXPORT_HXX
+
+#include <oox/core/xmlfilterbase.hxx>
+#include <com/sun/star/uno/XComponentContext.hpp>
+#include "pptexpbase.hxx"
+
+namespace com { namespace sun { namespace star {
+    namespace animations {
+        class XAnimate;
+        class XAnimationNode;
+    }
+} } }
+
+class PPTXExport : public oox::core::XmlFilterBase, PPTEXPBase
+{
+public:
+
+    PPTXExport( const com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >& xCtx );
+
+    virtual ~PPTXExport();
+
+    // from FilterBase
+    virtual bool importDocument() throw();
+    virtual bool exportDocument() throw();
+
+   
+    virtual sal_Int32 getSchemeClr( sal_Int32 /* nColorSchemeToken */ ) const { return 0; }
+    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() {  return * (oox::drawingml::chart::ChartConverter*) NULL; }
+
+private:
+    virtual ::rtl::OUString implGetImplementationName() const;
+
+    ::sax_fastparser::FSHelperPtr mPresentationFS;
+
+    static const char* GetSideDirection( sal_uInt8 nDirection );
+    static const char* GetCornerDirection( sal_uInt8 nDirection );
+    static const char* Get8Direction( sal_uInt8 nDirection );
+    static       int   GetPPTXLayoutId( int nOffset );
+
+    /** Derived classes create a VBA project manager object. */
+    virtual ::oox::ole::VbaProject* implCreateVbaProject() const;
+
+protected:
+
+    virtual void ImplWriteSlide( sal_uInt32 nPageNum, sal_uInt32 nMasterNum, sal_uInt16 nMode,
+                                 sal_Bool bHasBackground, ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > aXBackgroundPropSet );
+    virtual void ImplWriteNotes( sal_uInt32 nPageNum ){}
+//    virtual void ImplWriteSlideMaster( sal_uInt32 nPageNum, ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > aXBackgroundPropSet );
+    virtual void ImplWriteLayout( sal_Int32 nOffset, sal_uInt32 nMasterNum ){}
+    void ImplWritePPTXLayout( sal_Int32 nOffset, sal_uInt32 nMasterNum );
+    void WriteTheme( sal_Int32 nThemeNum );
+    virtual sal_Bool ImplCreateMainNotes(){return sal_True;}
+    virtual sal_Bool ImplCreateDocument();
+//    virtual sal_Bool ImplCreateMainNotes();
+    sal_Bool WriteNotesMaster();
+	
+    void WriteAnimateTo( ::sax_fastparser::FSHelperPtr pFS, const ::com::sun::star::uno::Any aValue, const ::rtl::OUString& rAttributeName );
+    void WriteAnimateValues( ::sax_fastparser::FSHelperPtr pFS, const ::com::sun::star::uno::Reference< ::com::sun::star::animations::XAnimate >& rXAnimate );
+    void WriteAnimationCondition( ::sax_fastparser::FSHelperPtr pFS, ::com::sun::star::uno::Any& rAny, sal_Bool bWriteEvent, sal_Bool bMainSeqChild );
+    void WriteAnimationCondition( ::sax_fastparser::FSHelperPtr pFS, const char* pDelay, const char* pEvent, double fDelay, sal_Bool bHasFDelay );
+    void WriteAnimations( ::sax_fastparser::FSHelperPtr pFS );
+    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 );
+    void WriteAnimationTarget( ::sax_fastparser::FSHelperPtr pFS, ::com::sun::star::uno::Any aTarget );
+    void WriteTextStyles( ::sax_fastparser::FSHelperPtr pFS );
+    void WriteTextStyle( ::sax_fastparser::FSHelperPtr pFS, int nInstance, sal_Int32 xmlToken );
+    void WriteTextStyleLevel( ::sax_fastparser::FSHelperPtr pFS, int nInstance, int nLevel );
+    void ImplWriteBackground( ::sax_fastparser::FSHelperPtr pFS, ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > aXBackgroundPropSet );
+    void WriteTransition( ::sax_fastparser::FSHelperPtr pFS );
+
+    sal_Int32 GetLayoutFileId( sal_Int32 nOffset, sal_uInt32 nMasterNum );
+
+    // shapes
+    void WriteShapeTree( ::sax_fastparser::FSHelperPtr pFS, PageType ePageType, sal_Bool bMaster );
+
+    sal_uInt32 GetNewSlideId() { return mnSlideIdMax ++; }
+    sal_uInt32 GetNewSlideMasterId() { return mnSlideMasterIdMax ++; }
+
+private:
+//    LayoutInfo mLayoutInfo[EPP_LAYOUT_SIZE];
+    std::vector< ::sax_fastparser::FSHelperPtr > mpSlidesFSArray;
+    std::vector< ::sax_fastparser::FSHelperPtr > mpMasterFSArray;
+//    sal_Int32 mnLayoutFileIdMax;
+
+    sal_uInt32 mnSlideIdMax;
+    sal_uInt32 mnSlideMasterIdMax;
+    sal_uInt32 mnAnimationNodeIdMax;
+
+    sal_Bool mbCreateNotes;
+
+    static sal_Int32 nStyleLevelToken[5];
+};
+
+#endif

Added: openoffice/branches/ooxml/main/sd/source/filter/eppt/pptexpbase.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/sd/source/filter/eppt/pptexpbase.cxx?rev=1572819&view=auto
==============================================================================
--- openoffice/branches/ooxml/main/sd/source/filter/eppt/pptexpbase.cxx (added)
+++ openoffice/branches/ooxml/main/sd/source/filter/eppt/pptexpbase.cxx Fri Feb 28 04:44:42 2014
@@ -0,0 +1,693 @@
+/**************************************************************
+* 
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements.  See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership.  The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License.  You may obtain a copy of the License at
+* 
+*   http://www.apache.org/licenses/LICENSE-2.0
+* 
+* Unless required by applicable law or agreed to in writing,
+* software distributed under the License is distributed on an
+* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+* KIND, either express or implied.  See the License for the
+* specific language governing permissions and limitations
+* under the License.
+* 
+*************************************************************/
+
+#include "pptexpbase.hxx"
+#include "epptdef.hxx"
+#include <vcl/outdev.hxx>
+#include <vcl/virdev.hxx>
+#include <vcl/gradient.hxx>
+
+#ifndef _CPPUHELPER_EXTRACT_HXX_
+#include <comphelper/extract.hxx>
+#endif
+#ifndef _CPPUHELPER_PROPTYPEHLP_HXX_
+#include <cppuhelper/proptypehlp.hxx>
+#endif
+
+
+#include <com/sun/star/view/PaperOrientation.hpp>
+#include <com/sun/star/view/PaperFormat.hpp>
+#include <com/sun/star/document/XDocumentPropertiesSupplier.hpp>
+
+#include <com/sun/star/geometry/RealPoint2D.hpp>
+#include <com/sun/star/util/DateTime.hpp>
+#include <com/sun/star/animations/TransitionType.hpp>
+#include <com/sun/star/animations/TransitionSubType.hpp>
+#include <com/sun/star/awt/FontDescriptor.hpp>
+#include <com/sun/star/awt/FontFamily.hpp>
+#include <com/sun/star/awt/FontPitch.hpp>
+#include <com/sun/star/container/XNamed.hpp>
+#include <com/sun/star/container/XNameAccess.hpp>
+#include <com/sun/star/presentation/XPresentationPage.hpp>
+#include <com/sun/star/text/XSimpleText.hpp>
+#include <com/sun/star/style/XStyle.hpp>
+#include <com/sun/star/style/XStyleFamiliesSupplier.hpp>
+
+using namespace com::sun::star;
+
+using namespace ::com::sun::star::animations;
+using namespace ::com::sun::star::awt::FontFamily;
+using namespace ::com::sun::star::awt::FontPitch;
+using namespace ::com::sun::star::presentation;
+
+using ::com::sun::star::awt::FontDescriptor;
+using ::com::sun::star::beans::XPropertySet;
+using ::com::sun::star::container::XNameAccess;
+using ::com::sun::star::container::XNamed;
+using ::com::sun::star::drawing::XDrawPagesSupplier;
+using ::com::sun::star::drawing::XMasterPagesSupplier;
+using ::com::sun::star::drawing::XShapes;
+using ::com::sun::star::drawing::XMasterPageTarget;
+using ::com::sun::star::drawing::XDrawPage;
+using ::com::sun::star::frame::XModel;
+using ::com::sun::star::style::XStyleFamiliesSupplier;
+using ::com::sun::star::style::XStyle;
+using ::com::sun::star::task::XStatusIndicator;
+using ::com::sun::star::text::XSimpleText;
+using ::com::sun::star::uno::Any;
+using ::com::sun::star::uno::Exception;
+using ::com::sun::star::uno::Reference;
+using ::com::sun::star::uno::UNO_QUERY;
+
+#define PPT_EXPORT_BASE_INIT_VALUES \
+    maFraction              ( 1, 576 ), \
+    maMapModeSrc            ( MAP_100TH_MM ), \
+    maMapModeDest           ( MAP_INCH, Point(), maFraction, maFraction ), \
+    meLatestPageType        ( NORMAL )
+
+
+PPTEXPBase::PPTEXPBase() :
+PPT_EXPORT_BASE_INIT_VALUES
+{
+
+}
+
+PPTEXPBase::PPTEXPBase( const Reference< XModel > & rXModel,
+                       const Reference< XStatusIndicator > & rXStatInd ) :
+mXModel                 ( rXModel ),
+mXStatusIndicator       ( rXStatInd ),
+mbStatusIndicator       ( false ),
+PPT_EXPORT_BASE_INIT_VALUES
+{
+}
+
+// ---------------------------------------------------------------------------------------------
+
+PPTEXPBase::~PPTEXPBase()
+{
+    if ( mbStatusIndicator )
+        mXStatusIndicator->end();
+}
+
+// ---------------------------------------------------------------------------------------------
+
+void PPTEXPBase::exportPPT()
+{
+    if ( !InitUnoModel() )
+        return;
+
+    if ( !ImplGetPageByIndex( 0, NOTICE ) )
+        return;
+    sal_Int32 nWidth = 21000;
+    if ( ImplGetPropertyValue( mXPagePropSet, String( RTL_CONSTASCII_USTRINGPARAM(  "Width" ) ) ) )
+        mAny >>= nWidth;
+    sal_Int32 nHeight = 29700;
+    if ( ImplGetPropertyValue( mXPagePropSet, String( RTL_CONSTASCII_USTRINGPARAM( "Height" ) ) ) )
+        mAny >>= nHeight;
+
+    maNotesPageSize = ImplMapSize( ::com::sun::star::awt::Size( nWidth, nHeight ) );
+
+    if ( !ImplGetPageByIndex( 0, MASTER ) )
+        return;
+    nWidth = 28000;
+    if ( ImplGetPropertyValue( mXPagePropSet, String( RTL_CONSTASCII_USTRINGPARAM( "Width" ) ) ) )
+        mAny >>= nWidth;
+    nHeight = 21000;
+    if ( ImplGetPropertyValue( mXPagePropSet, String( RTL_CONSTASCII_USTRINGPARAM( "Height" ) ) ) )
+        mAny >>= nHeight;
+    maDestPageSize = ImplMapSize( ::com::sun::star::awt::Size( nWidth, nHeight ) );
+
+    exportPPTPre();
+
+    if ( !ImplGetStyleSheets() )
+        return;
+
+    if ( !ImplCreateDocument() )
+        return;
+
+    sal_uInt32 i;
+    for ( i = 0; i < mnPages; i++ )
+    {
+        if ( ImplGetPageByIndex( i, NORMAL ) ) 
+        {
+            sal_uInt32 nMasterNum = ImplGetMasterIndex( NORMAL );
+            ImplWriteLayout( GetLayoutOffset( mXPagePropSet ), nMasterNum );
+        }
+    }
+
+    for ( i = 0; i < mnMasterPages; i++ )
+    {
+        if ( !ImplCreateSlideMaster( i ) )
+            return;
+    }
+
+    if ( !CreateMainNotes() )
+        return;
+    maTextRuleList.First();                        
+
+    for ( i = 0; i < mnPages; i++ )
+    {
+
+        if ( !ImplCreateSlide( i ) )
+            return;
+    }
+
+    for ( i = 0; i < mnPages; i++ )
+    {
+        if ( !ImplCreateNotes( i ) )
+            return;
+    }
+
+    exportPPTPost();
+}
+
+sal_Bool PPTEXPBase::InitUnoModel()
+{
+    while( sal_True )
+    {
+        mXDrawPagesSupplier = Reference< XDrawPagesSupplier >( mXModel, UNO_QUERY );
+        if ( !mXDrawPagesSupplier.is() )
+            break;
+
+        mXMasterPagesSupplier = Reference< XMasterPagesSupplier >( mXModel, UNO_QUERY );
+        if ( !mXMasterPagesSupplier.is() )
+            break;
+        mXDrawPages = mXMasterPagesSupplier->getMasterPages();
+        if ( !mXDrawPages.is() )
+            break;
+        mnMasterPages = mXDrawPages->getCount();
+        mXDrawPages = mXDrawPagesSupplier->getDrawPages();
+        if( !mXDrawPages.is() )
+            break;
+        mnPages =  mXDrawPages->getCount();
+        if ( !ImplGetPageByIndex( 0, NORMAL ) )
+            break;
+
+        return sal_True;
+    }
+    return sal_False;
+
+}
+sal_Bool PPTEXPBase::ImplCreateSlide( sal_uInt32 nPageNum )
+{
+    Any aAny;
+
+    if ( !ImplGetPageByIndex( nPageNum, NORMAL ) )
+        return sal_False;
+
+    sal_uInt32 nMasterNum = ImplGetMasterIndex( NORMAL );
+    ImplSetCurrentStyleSheet( nMasterNum );
+
+    Reference< XPropertySet > aXBackgroundPropSet;
+    sal_Bool bHasBackground = GetPropertyValue( aAny, mXPagePropSet, String( RTL_CONSTASCII_USTRINGPARAM( "Background" ) ) );
+    if ( bHasBackground )
+        bHasBackground = ( aAny >>= aXBackgroundPropSet );
+
+    sal_uInt16 nMode = 7;   // Bit 1: Follow master objects, Bit 2: Follow master scheme, Bit 3: Follow master background
+    if ( bHasBackground )
+        nMode &=~4;
+
+    if ( GetPropertyValue( aAny, mXPagePropSet, String( RTL_CONSTASCII_USTRINGPARAM( "IsBackgroundObjectsVisible" ) ) ) )
+    {
+        sal_Bool bBackgroundObjectsVisible = sal_False;
+        if ( aAny >>= bBackgroundObjectsVisible )
+        {
+            if ( !bBackgroundObjectsVisible )
+                nMode &= ~1;
+        }
+    }
+
+    ImplWriteSlide( nPageNum, nMasterNum, nMode, bHasBackground, aXBackgroundPropSet );
+
+    return sal_True;
+}
+
+// ---------------------------------------------------------------------------------------------
+
+sal_Bool PPTEXPBase::ImplCreateNotes( sal_uInt32 nPageNum )
+{
+    if ( !ImplGetPageByIndex( nPageNum, NOTICE ) )
+        return sal_False;
+    ImplSetCurrentStyleSheet( ImplGetMasterIndex( NORMAL ) );
+
+    ImplWriteNotes( nPageNum );
+
+    return sal_True;
+}
+
+
+sal_Bool PPTEXPBase::CreateMainNotes()
+{
+    if ( !ImplGetPageByIndex( 0, NOTICE ) )
+        return sal_False;
+    ImplSetCurrentStyleSheet( 0 );
+
+    ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XMasterPageTarget >
+        aXMasterPageTarget( mXDrawPage, ::com::sun::star::uno::UNO_QUERY );
+
+    if ( !aXMasterPageTarget.is() )
+        return sal_False;
+
+    mXDrawPage = aXMasterPageTarget->getMasterPage();
+    if ( !mXDrawPage.is() )
+        return sal_False;
+
+    mXPropSet = ::com::sun::star::uno::Reference<
+        ::com::sun::star::beans::XPropertySet >
+        ( mXDrawPage, ::com::sun::star::uno::UNO_QUERY );
+    if ( !mXPropSet.is() )
+        return sal_False;
+
+    mXShapes = ::com::sun::star::uno::Reference<
+        ::com::sun::star::drawing::XShapes >
+        ( mXDrawPage, ::com::sun::star::uno::UNO_QUERY );
+    if ( !mXShapes.is() )
+        return sal_False;
+
+    return ImplCreateMainNotes();
+}
+
+
+sal_Bool PPTEXPBase::ImplCreateSlideMaster( sal_uInt32 nPageNum )
+{
+    if ( !ImplGetPageByIndex( nPageNum, MASTER ) )
+        return sal_False;
+    ImplSetCurrentStyleSheet( nPageNum );
+
+    if ( !ImplGetPropertyValue( mXPagePropSet, String( RTL_CONSTASCII_USTRINGPARAM( "Background" ) ) ) )              
+        return sal_False;
+    ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > aXBackgroundPropSet;
+    if ( !( mAny >>= aXBackgroundPropSet ) )
+        return sal_False;
+
+    ImplWriteSlideMaster( nPageNum, aXBackgroundPropSet );
+
+    return sal_True;
+}
+
+
+sal_Bool PPTEXPBase::ImplGetPageByIndex( sal_uInt32 nIndex, PageType ePageType )
+{
+    while( true )
+    {
+        if ( ePageType != meLatestPageType )
+        {
+            switch( ePageType )
+            {
+            case NORMAL :
+            case NOTICE :
+                {
+                    mXDrawPages = mXDrawPagesSupplier->getDrawPages();
+                    if( !mXDrawPages.is() )
+                        return sal_False;
+                }
+                break;
+
+            case MASTER :
+                {
+                    mXDrawPages = mXMasterPagesSupplier->getMasterPages();
+                    if( !mXDrawPages.is() )
+                        return sal_False;
+                }
+                break;
+            default:
+                break;
+            }
+            meLatestPageType = ePageType;
+        }
+        ::com::sun::star::uno::Any aAny( mXDrawPages->getByIndex( nIndex ) );
+        aAny >>= mXDrawPage;
+        if ( !mXDrawPage.is() )
+            break;
+        if ( ePageType == NOTICE )
+        {
+            ::com::sun::star::uno::Reference< ::com::sun::star::presentation::XPresentationPage >
+                aXPresentationPage( mXDrawPage, ::com::sun::star::uno::UNO_QUERY );
+            if ( !aXPresentationPage.is() )
+                break;
+            mXDrawPage = aXPresentationPage->getNotesPage();
+            if ( !mXDrawPage.is() )
+                break;
+        }
+        mXPagePropSet = ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >
+            ( mXDrawPage, ::com::sun::star::uno::UNO_QUERY );
+        if ( !mXPagePropSet.is() )
+            break;
+
+        mXShapes = ::com::sun::star::uno::Reference<
+            ::com::sun::star::drawing::XShapes >
+            ( mXDrawPage, ::com::sun::star::uno::UNO_QUERY );
+        if ( !mXShapes.is() )
+            break;
+
+        /* try to get the "real" background PropertySet. If the normal page is not supporting this property, it is
+        taken the property from the master */
+        sal_Bool bHasBackground = GetPropertyValue( aAny, mXPagePropSet, String( RTL_CONSTASCII_USTRINGPARAM( "Background" ) ), sal_True );
+        if ( bHasBackground )
+            bHasBackground = ( aAny >>= mXBackgroundPropSet );
+        if ( !bHasBackground )
+        {
+            ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XMasterPageTarget >
+                aXMasterPageTarget( mXDrawPage, ::com::sun::star::uno::UNO_QUERY );
+            if ( aXMasterPageTarget.is() )
+            {
+                ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage > aXMasterDrawPage;
+                aXMasterDrawPage = aXMasterPageTarget->getMasterPage();
+                if ( aXMasterDrawPage.is() )
+                {
+                    ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > aXMasterPagePropSet;
+                    aXMasterPagePropSet = ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >
+                        ( aXMasterDrawPage, ::com::sun::star::uno::UNO_QUERY );
+                    if ( aXMasterPagePropSet.is() )
+                    {
+                        sal_Bool bBackground = GetPropertyValue( aAny, aXMasterPagePropSet,
+                            String( RTL_CONSTASCII_USTRINGPARAM( "Background" ) ) );
+                        if ( bBackground )
+                        {
+                            aAny >>= mXBackgroundPropSet;
+                        }
+                    }
+                }
+            }
+        }
+        return sal_True;
+    }
+    return sal_False;
+}
+
+::com::sun::star::awt::Point PPTEXPBase::ImplMapPoint( const ::com::sun::star::awt::Point& rPoint )
+{
+    Point aRet( OutputDevice::LogicToLogic( Point( rPoint.X, rPoint.Y ), maMapModeSrc, maMapModeDest ) );
+    return ::com::sun::star::awt::Point( aRet.X(), aRet.Y() );
+}
+
+
+::com::sun::star::awt::Size PPTEXPBase::ImplMapSize( const ::com::sun::star::awt::Size& rSize )
+{
+    Size aRetSize( OutputDevice::LogicToLogic( Size( rSize.Width, rSize.Height ), maMapModeSrc, maMapModeDest ) );
+
+    if ( !aRetSize.Width() )
+        aRetSize.Width()++;
+    if ( !aRetSize.Height() )
+        aRetSize.Height()++;
+    return ::com::sun::star::awt::Size( aRetSize.Width(), aRetSize.Height() );
+}
+
+
+Rectangle PPTEXPBase::ImplMapRectangle( const ::com::sun::star::awt::Rectangle& rRect )
+{
+    ::com::sun::star::awt::Point    aPoint( rRect.X, rRect.Y );
+    ::com::sun::star::awt::Size     aSize( rRect.Width, rRect.Height );
+    ::com::sun::star::awt::Point    aP( ImplMapPoint( aPoint ) );
+    ::com::sun::star::awt::Size     aS( ImplMapSize( aSize ) );
+    return Rectangle( Point( aP.X, aP.Y ), Size( aS.Width, aS.Height ) );
+}
+
+
+sal_Bool PPTEXPBase::ImplGetStyleSheets()
+{
+    int             nInstance, nLevel;
+    sal_Bool        bRetValue = sal_False;
+    sal_uInt32		nPageNum;
+
+    for ( nPageNum = 0; nPageNum < mnMasterPages; nPageNum++ )
+    {
+        ::com::sun::star::uno::Reference< ::com::sun::star::container::XNamed >
+            aXNamed;
+
+        ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >
+            aXNameAccess;
+
+        ::com::sun::star::uno::Reference< ::com::sun::star::style::XStyleFamiliesSupplier >
+            aXStyleFamiliesSupplier( mXModel, ::com::sun::star::uno::UNO_QUERY );
+
+        ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >
+            aXPropSet( mXModel, ::com::sun::star::uno::UNO_QUERY );
+
+        sal_uInt16 nDefaultTab = ( aXPropSet.is() && ImplGetPropertyValue( aXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "TabStop" ) ) ) )
+            ? (sal_uInt16)( *(sal_Int32*)mAny.getValue() / 4.40972 )
+            : 1250;
+
+        maStyleSheetList.push_back( new PPTExStyleSheet( nDefaultTab, (PPTExBulletProvider&)*this ) );
+        ImplSetCurrentStyleSheet( nPageNum );
+        if ( ImplGetPageByIndex( nPageNum, MASTER ) )
+            aXNamed = ::com::sun::star::uno::Reference< ::com::sun::star::container::XNamed >
+            ( mXDrawPage, ::com::sun::star::uno::UNO_QUERY );
+
+        if ( aXStyleFamiliesSupplier.is() )
+            aXNameAccess = aXStyleFamiliesSupplier->getStyleFamilies();
+
+        bRetValue = aXNamed.is() && aXNameAccess.is() && aXStyleFamiliesSupplier.is();
+        if  ( bRetValue )
+        {
+            // Wang Xu Ming -- 4/28/2010
+            // Sym2_6917, Sym2_7468, half body style must be write for PPT table
+            //for ( nInstance = EPP_TEXTTYPE_Title; nInstance <= EPP_TEXTTYPE_CenterTitle; nInstance++ )
+            for ( nInstance = EPP_TEXTTYPE_Title; nInstance <= EPP_TEXTTYPE_HalfBody; nInstance++ )
+                // End
+            {
+                String aStyle;
+                String aFamily;
+                switch ( nInstance )
+                {
+                case EPP_TEXTTYPE_CenterTitle :
+                case EPP_TEXTTYPE_Title :
+                    {
+                        aStyle = String( RTL_CONSTASCII_USTRINGPARAM( "title" ) );
+                        aFamily = aXNamed->getName();
+                    }
+                    break;
+                    // Wang Xu Ming -- 4/28/2010
+                    // Sym2_6917
+                case EPP_TEXTTYPE_Body :
+                case EPP_TEXTTYPE_HalfBody:
+                    // End
+                    {
+                        aStyle = String( RTL_CONSTASCII_USTRINGPARAM( "outline1" ) );      // SD_LT_SEPARATOR
+                        aFamily = aXNamed->getName();
+                    }
+                    break;
+                case EPP_TEXTTYPE_Other :
+                    {
+                        aStyle = String( RTL_CONSTASCII_USTRINGPARAM( "standard" ) );
+                        aFamily = String( RTL_CONSTASCII_USTRINGPARAM( "graphics" ) );
+                    }
+                    break;
+                case EPP_TEXTTYPE_CenterBody :
+                    {
+                        aStyle = String( RTL_CONSTASCII_USTRINGPARAM( "subtitle" ) );
+                        aFamily = aXNamed->getName();
+                    }
+                    break;
+                }
+                if ( aStyle.Len() && aFamily.Len() )
+                {
+                    try
+                    {
+                        ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >xNameAccess;
+                        if ( aXNameAccess->hasByName( aFamily ) )
+                        {
+                            ::com::sun::star::uno::Any aAny( aXNameAccess->getByName( aFamily ) );
+                            if( aAny.getValue() && ::cppu::extractInterface( xNameAccess, aAny ) )
+                            {
+                                ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > aXFamily;
+                                if ( aAny >>= aXFamily )
+                                {
+                                    if ( aXFamily->hasByName( aStyle ) )
+                                    {
+                                        ::com::sun::star::uno::Reference< ::com::sun::star::style::XStyle > xStyle;
+                                        aAny = aXFamily->getByName( aStyle );
+                                        if( aAny.getValue() && ::cppu::extractInterface( xStyle, aAny ) )
+                                        {
+                                            ::com::sun::star::uno::Reference< ::com::sun::star::style::XStyle > aXStyle;
+                                            aAny >>= aXStyle;
+                                            ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >
+                                                xPropSet( aXStyle, ::com::sun::star::uno::UNO_QUERY );
+                                            if( xPropSet.is() )
+                                                mpStyleSheet->SetStyleSheet( xPropSet, maFontCollection, nInstance, 0 );
+                                            for ( nLevel = 1; nLevel < 5; nLevel++ )
+                                            {
+                                                // Wang Xu Ming -- 4/28/2010
+                                                // Sym2_6917
+                                                if ( nInstance == EPP_TEXTTYPE_Body || nInstance == EPP_TEXTTYPE_HalfBody )
+                                                    // End
+                                                {
+                                                    sal_Unicode cTemp = aStyle.GetChar( aStyle.Len() - 1 );
+                                                    aStyle.SetChar( aStyle.Len() - 1, ++cTemp );
+                                                    if ( aXFamily->hasByName( aStyle ) )
+                                                    {
+                                                        aXFamily->getByName( aStyle ) >>= xStyle;
+                                                        if( xStyle.is() )
+                                                        {
+                                                            ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >
+                                                                xPropertySet( xStyle, ::com::sun::star::uno::UNO_QUERY );
+                                                            if ( xPropertySet.is() )
+                                                                mpStyleSheet->SetStyleSheet( xPropertySet, maFontCollection, nInstance, nLevel );
+                                                        }
+                                                    }
+                                                }
+                                                else
+                                                    mpStyleSheet->SetStyleSheet( xPropSet, maFontCollection, nInstance, nLevel );
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    }
+                    catch( ::com::sun::star::uno::Exception& )
+                    {
+                        //
+                    }
+                }
+            }
+            for ( ; nInstance <= EPP_TEXTTYPE_QuarterBody; nInstance++ )
+            {
+
+            }
+        }
+    }
+    return bRetValue;
+}
+
+sal_Bool PPTEXPBase::ImplSetCurrentStyleSheet( sal_uInt32 nPageNum )
+{
+    sal_Bool bRet = sal_False;
+    if ( nPageNum >= maStyleSheetList.size() )
+        nPageNum = 0;
+    else
+        bRet = sal_True;
+    mpStyleSheet = maStyleSheetList[ nPageNum ];
+    return bRet;
+}
+
+sal_Bool PPTEXPBase::ContainsOtherShapeThanPlaceholders( sal_Bool bForOOMLX )
+{
+    sal_uInt32 nShapes = mXShapes->getCount();
+    sal_Bool bOtherThanPlaceHolders = sal_False;
+
+    if ( nShapes )
+        for ( sal_uInt32 nIndex = 0; ( nIndex < nShapes ) && ( bOtherThanPlaceHolders == sal_False ); nIndex++ ) {
+            if ( ImplGetShapeByIndex( nIndex ) && mType != "drawing.Page" ) {
+                if( bForOOMLX &&
+                    ( mType == "presentation.Page" ||
+                    mType == "presentation.Notes" ) ) {
+                        Reference< XSimpleText > rXText( mXShape, UNO_QUERY );
+
+                        if( rXText.is() && rXText->getString().getLength() != 0 )
+                            bOtherThanPlaceHolders = sal_True;
+                } else
+                    bOtherThanPlaceHolders = sal_True;
+            }
+
+        }
+
+        return bOtherThanPlaceHolders;
+}
+
+sal_Bool PPTEXPBase::ImplGetShapeByIndex( sal_uInt32 nIndex, sal_Bool bGroup )
+{
+    while ( true )
+    {
+        if ( ( bGroup == sal_False ) || ( GetCurrentGroupLevel() == 0 ) )
+        {
+            ::com::sun::star::uno::Any aAny( mXShapes->getByIndex( nIndex ) );
+            aAny >>= mXShape;
+        }
+        else
+        {
+            ::com::sun::star::uno::Any aAny( GetCurrentGroupAccess()->getByIndex( GetCurrentGroupIndex() ) );
+            aAny >>= mXShape;
+        }
+        if ( !mXShape.is() )
+            break;
+
+        ::com::sun::star::uno::Any aAny( mXShape->queryInterface( ::getCppuType( (const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >*) 0 ) ));
+        aAny >>= mXPropSet;
+
+        if ( !mXPropSet.is() )
+            break;
+        maPosition = ImplMapPoint( mXShape->getPosition() );
+        maSize = ImplMapSize( mXShape->getSize() );
+        maRect = Rectangle( Point( maPosition.X, maPosition.Y ), Size( maSize.Width, maSize.Height ) );
+        mType = ByteString( String( mXShape->getShapeType() ), RTL_TEXTENCODING_UTF8 );
+        mType.Erase( 0, 13 );                                   // "com.sun.star." entfernen
+        sal_uInt16 nPos = mType.Search( (const char*)"Shape" );
+        mType.Erase( nPos, 5 );
+
+        mbPresObj = mbEmptyPresObj = sal_False;
+        if ( ImplGetPropertyValue( String( RTL_CONSTASCII_USTRINGPARAM( "IsPresentationObject" ) ) ) )
+            mAny >>= mbPresObj;
+
+        if ( mbPresObj && ImplGetPropertyValue( String( RTL_CONSTASCII_USTRINGPARAM( "IsEmptyPresentationObject" ) ) ) )
+            mAny >>= mbEmptyPresObj;
+
+        mnAngle = ( PropValue::GetPropertyValue( aAny,
+            mXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "RotateAngle" ) ), sal_True ) )
+            ? *((sal_Int32*)aAny.getValue() )
+            : 0;
+
+        return sal_True;
+    }
+    return sal_False;
+}
+
+
+sal_uInt32 PPTEXPBase::ImplGetMasterIndex( PageType ePageType )
+{
+    sal_uInt32 nRetValue = 0;
+    ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XMasterPageTarget >
+        aXMasterPageTarget( mXDrawPage, ::com::sun::star::uno::UNO_QUERY );
+
+    if ( aXMasterPageTarget.is() )
+    {
+        ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage >
+            aXDrawPage = aXMasterPageTarget->getMasterPage();
+        if ( aXDrawPage.is() )
+        {
+            ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >
+                aXPropertySet( aXDrawPage, ::com::sun::star::uno::UNO_QUERY );
+
+            if ( aXPropertySet.is() )
+            {
+                if ( ImplGetPropertyValue( aXPropertySet, String( RTL_CONSTASCII_USTRINGPARAM( "Number" ) ) ) )
+                    nRetValue |= *(sal_Int16*)mAny.getValue();
+                if ( nRetValue & 0xffff )           // ueberlauf vermeiden
+                    nRetValue--;
+            }
+        }
+    }
+    if ( ePageType == NOTICE )
+        nRetValue += mnMasterPages;
+    return nRetValue;
+
+}
+
+sal_Int32 PPTEXPBase::GetLayoutOffset( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& rXPropSet ) const
+{
+    ::com::sun::star::uno::Any aAny;
+    sal_Int32 nLayout = 20;
+    if ( GetPropertyValue( aAny, rXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "Layout" ) ) ), sal_True )
+        aAny >>= nLayout;
+
+    return nLayout;
+}
+

Added: openoffice/branches/ooxml/main/sd/source/filter/eppt/pptexpbase.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/sd/source/filter/eppt/pptexpbase.hxx?rev=1572819&view=auto
==============================================================================
--- openoffice/branches/ooxml/main/sd/source/filter/eppt/pptexpbase.hxx (added)
+++ openoffice/branches/ooxml/main/sd/source/filter/eppt/pptexpbase.hxx Fri Feb 28 04:44:42 2014
@@ -0,0 +1,135 @@
+/**************************************************************
+ * 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ * 
+ *************************************************************/
+
+#ifndef PPTEXP_BASE_HXX
+#define PPTEXP_BASE_HXX
+
+#include "eppt.hxx"
+#include <vector>
+#include <vcl/mapmod.hxx>
+#include <tools/list.hxx>
+#include <tools/string.hxx>
+#include <tools/stream.hxx>
+#include <tools/gen.hxx>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/drawing/XDrawPagesSupplier.hpp>
+#include <com/sun/star/drawing/XMasterPagesSupplier.hpp>
+#include <com/sun/star/drawing/XMasterPageTarget.hpp>
+#include <com/sun/star/frame/XModel.hpp>
+#include <com/sun/star/presentation/XPresentationSupplier.hpp>
+#include <com/sun/star/presentation/FadeEffect.hpp>
+#include <com/sun/star/task/XStatusIndicatorSupplier.hpp>
+
+class PPTEXPBase : public PropValue, public GroupTable
+{
+protected:
+    ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel >                 mXModel;
+    ::com::sun::star::uno::Reference< ::com::sun::star::task::XStatusIndicator >        mXStatusIndicator;
+
+    sal_Bool            mbStatusIndicator;
+
+    ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPagesSupplier >   mXDrawPagesSupplier;
+    ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XMasterPagesSupplier > mXMasterPagesSupplier;
+    ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPages >           mXDrawPages;
+    ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage >            mXDrawPage;
+    ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >           mXPagePropSet;
+    ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >           mXBackgroundPropSet;
+    ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes >              mXShapes;
+    ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >               mXShape;
+    ::com::sun::star::awt::Size         maSize;
+    ::com::sun::star::awt::Point        maPosition;
+    Rectangle           maRect;
+    ByteString          mType;
+    sal_Bool            mbPresObj;
+    sal_Bool            mbEmptyPresObj;
+    sal_Int32           mnAngle;
+
+    sal_uInt32          mnPages;            // number of Slides ( w/o master pages & notes & handout )
+    sal_uInt32          mnMasterPages;
+
+    Fraction                        maFraction;
+    MapMode                         maMapModeSrc;
+    MapMode                         maMapModeDest;
+    ::com::sun::star::awt::Size     maDestPageSize;
+    ::com::sun::star::awt::Size     maNotesPageSize;
+
+    PageType                        meLatestPageType;
+    std::vector< PPTExStyleSheet* > maStyleSheetList;
+    PPTExStyleSheet*                mpStyleSheet;
+
+    FontCollection      maFontCollection;
+
+    List                maTextRuleList;     // TextRuleEntry's
+
+    virtual void ImplWriteSlide( sal_uInt32 /* nPageNum */, sal_uInt32 /* nMasterNum */, sal_uInt16 /* nMode */,
+                                 sal_Bool /* bHasBackground */, ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > /* aXBackgroundPropSet */ ) {}
+    virtual void ImplWriteNotes( sal_uInt32 nPageNum ) = 0;
+    virtual void ImplWriteSlideMaster( sal_uInt32 /* nPageNum */, ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > /* aXBackgroundPropSet */ ) {}
+    virtual void ImplWriteLayout( sal_Int32 /* nOffset */, sal_uInt32 /* nMasterNum */ ) {}
+
+    virtual void exportPPTPre() {}
+    virtual void exportPPTPost() {}
+
+    virtual sal_Bool ImplCreateDocument()=0;
+    virtual sal_Bool ImplCreateMainNotes()=0;
+
+    sal_Bool ImplGetStyleSheets();
+    sal_Bool ImplGetShapeByIndex( sal_uInt32 nIndex, sal_Bool bGroup = sal_False );
+
+    sal_Bool CreateMainNotes();
+
+    ::com::sun::star::awt::Size   ImplMapSize( const ::com::sun::star::awt::Size& );
+    ::com::sun::star::awt::Point  ImplMapPoint( const ::com::sun::star::awt::Point& );
+    Rectangle                     ImplMapRectangle( const ::com::sun::star::awt::Rectangle& );
+
+    sal_Bool ContainsOtherShapeThanPlaceholders( sal_Bool bForOOMLX );
+
+public:
+    PPTEXPBase();
+    PPTEXPBase( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > & rModel,
+                   const ::com::sun::star::uno::Reference< ::com::sun::star::task::XStatusIndicator > & rStatInd );
+
+    ~PPTEXPBase();
+    
+    sal_Bool InitUnoModel();
+    void exportPPT();
+   	
+    sal_Bool ImplGetPageByIndex( sal_uInt32 nIndex, PageType );
+    sal_uInt32 ImplGetMasterIndex( PageType ePageType );
+    sal_Bool ImplSetCurrentStyleSheet( sal_uInt32 nPageNum );
+
+    sal_Bool GetPresObj() { return mbPresObj; }
+
+    PHLayout& GetLayout( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& rXPropSet ) const;
+    PHLayout& GetLayout( sal_Int32 nOffset ) const;
+    sal_Int32 GetLayoutOffset( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& rXPropSet ) const;
+    sal_Int32 GetLayoutOffsetFixed( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& rXPropSet ) const;
+
+    sal_Bool ImplCreateSlide( sal_uInt32 nPageNum );
+    sal_Bool ImplCreateSlideMaster( sal_uInt32 nPageNum );
+    sal_Bool ImplCreateNotes( sal_uInt32 nPageNum );
+
+    static sal_Int8 GetTransition( sal_Int16 nTransitionType, sal_Int16 nTransitionSubtype, ::com::sun::star::presentation::FadeEffect eEffect, sal_uInt8& nDirection );
+    static sal_Int8 GetTransition( ::com::sun::star::presentation::FadeEffect eEffect, sal_uInt8& nDirection );
+};
+
+
+#endif

Modified: openoffice/branches/ooxml/main/sd/util/makefile.mk
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/sd/util/makefile.mk?rev=1572819&r1=1572818&r2=1572819&view=diff
==============================================================================
--- openoffice/branches/ooxml/main/sd/util/makefile.mk (original)
+++ openoffice/branches/ooxml/main/sd/util/makefile.mk Fri Feb 28 04:44:42 2014
@@ -19,8 +19,6 @@
 #  
 #**************************************************************
 
-
-
 PRJ=..
 
 PRJNAME=sd
@@ -163,9 +161,9 @@ SHL2STDLIBS= \
 			$(SVTOOLLIB) \
 			$(SVLLIB) \
 			$(VCLLIB) \
-                        $(SOTLIB) \
+            $(SOTLIB) \
 			$(TOOLSLIB) \
-              $(UNOTOOLSLIB)      \
+            $(UNOTOOLSLIB) \
 			$(UCBHELPERLIB) \
 			$(CPPUHELPERLIB) \
 			$(CPPULIB) \
@@ -181,7 +179,7 @@ SHL4TARGET= sdui$(DLLPOSTFIX)
 SHL4IMPLIB= sduiimp
 SHL4VERSIONMAP= sdui.map
 SHL4DEF=$(MISC)$/$(SHL4TARGET).def
-DEF4NAME=       $(SHL4TARGET)
+DEF4NAME=   $(SHL4TARGET)
 SHL4LIBS=   $(SLB)$/sdui_all.lib
 
 LIB4TARGET=	$(SLB)$/sdui_all.lib
@@ -243,10 +241,10 @@ SHL5LIBS      = $(SLB)$/ppt.lib $(SLB)$/
 
 DEF5NAME=$(SHL5TARGET)
 
-SHL5STDLIBS = $(ISDLIB) \
+SHL5STDLIBS = $(ISDLIB)           \
               $(EDITENGLIB)       \
               $(SVXCORELIB)       \
-              $(MSFILTERLIB)   \
+              $(MSFILTERLIB)      \
               $(SFX2LIB)          \
               $(SVTOOLLIB)        \
               $(SOTLIB)           \
@@ -260,6 +258,8 @@ SHL5STDLIBS = $(ISDLIB) \
               $(CPPULIB)          \
               $(SALLIB)           \
               $(COMPHELPERLIB)    \
+              $(OOXLIB)           \
+              $(SAXLIB)           \
               $(I18NISOLANGLIB)
 
 # --- Targets -------------------------------------------------------------
@@ -271,7 +271,7 @@ $(MISC)$/$(SHL1TARGET).flt: makefile.mk
     @echo Making: $@
     @$(TYPE) sd.flt > $@
 
-ALLTAR : $(MISC)/sd.component $(MISC)/sdd.component
+ALLTAR : $(MISC)/sd.component $(MISC)/sdfilt.component $(MISC)/sdd.component
 
 $(MISC)/sd.component .ERRREMOVE : $(SOLARENV)/bin/createcomponent.xslt \
         sd.component
@@ -279,6 +279,12 @@ $(MISC)/sd.component .ERRREMOVE : $(SOLA
         '$(COMPONENTPREFIX_BASIS_NATIVE)$(SHL1TARGETN:f)' -o $@ \
         $(SOLARENV)/bin/createcomponent.xslt sd.component
 
+$(MISC)/sdfilt.component .ERRREMOVE : $(SOLARENV)/bin/createcomponent.xslt \
+        sdfilt.component
+    $(XSLTPROC) --nonet --stringparam uri \
+        '$(COMPONENTPREFIX_BASIS_NATIVE)$(SHL5TARGETN:f)' -o $@ \
+        $(SOLARENV)/bin/createcomponent.xslt sdfilt.component
+
 $(MISC)/sdd.component .ERRREMOVE : $(SOLARENV)/bin/createcomponent.xslt \
         sdd.component
     $(XSLTPROC) --nonet --stringparam uri \

Added: openoffice/branches/ooxml/main/sd/util/sdfilt.component
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/sd/util/sdfilt.component?rev=1572819&view=auto
==============================================================================
--- openoffice/branches/ooxml/main/sd/util/sdfilt.component (added)
+++ openoffice/branches/ooxml/main/sd/util/sdfilt.component Fri Feb 28 04:44:42 2014
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--***********************************************************
+ * 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ * 
+ ***********************************************************-->
+
+<component loader="com.sun.star.loader.SharedLibrary"
+    xmlns="http://openoffice.org/2010/uno-components">
+  <implementation name="com.sun.star.comp.Impress.OOXMLExporter">
+    <service name="com.sun.star.document.ExportFilter"/>
+  </implementation>
+</component>

Modified: openoffice/branches/ooxml/main/sd/util/sdfilt.map
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/sd/util/sdfilt.map?rev=1572819&r1=1572818&r2=1572819&view=diff
==============================================================================
--- openoffice/branches/ooxml/main/sd/util/sdfilt.map (original)
+++ openoffice/branches/ooxml/main/sd/util/sdfilt.map Fri Feb 28 04:44:42 2014
@@ -3,6 +3,9 @@ UDK_3_0_0 {
                 ExportPPT;
                 ImportPPT;
 				SaveVBA;
+				component_getImplementationEnvironment;
+				component_writeInfo;
+				component_getFactory;
         local:
                 *;
 };

Modified: openoffice/branches/ooxml/main/sw/Library_msword.mk
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/sw/Library_msword.mk?rev=1572819&r1=1572818&r2=1572819&view=diff
==============================================================================
--- openoffice/branches/ooxml/main/sw/Library_msword.mk (original)
+++ openoffice/branches/ooxml/main/sw/Library_msword.mk Fri Feb 28 04:44:42 2014
@@ -19,8 +19,6 @@
 #  
 #**************************************************************
 
-
-
 $(eval $(call gb_Library_Library,msword))
 
 $(eval $(call gb_Library_set_componentfile,msword,sw/util/msword))
@@ -53,16 +51,17 @@ $(eval $(call gb_Library_add_linked_libs
 	icuuc \
 	msfilter \
 	sal \
+	sax \
 	sfx \
 	sot \
 	stl \
 	svl \
 	svt \
 	svx \
-	svx \
 	svxcore \
 	sw \
 	ootk \
+	oox \
 	tl \
 	ucbhelper \
 	utl \
@@ -76,6 +75,9 @@ $(eval $(call gb_Library_add_exception_o
 	sw/source/filter/rtf/rtfnum \
 	sw/source/filter/rtf/rtftbl \
 	sw/source/filter/rtf/swparrtf \
+	sw/source/filter/ww8/docxattributeoutput \
+	sw/source/filter/ww8/docxexport \
+	sw/source/filter/ww8/docxexportfilter \
 	sw/source/filter/ww8/rtfattributeoutput \
 	sw/source/filter/ww8/rtfexport \
 	sw/source/filter/ww8/rtfexportfilter \

Modified: openoffice/branches/ooxml/main/sw/source/filter/ww8/WW8TableInfo.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/sw/source/filter/ww8/WW8TableInfo.hxx?rev=1572819&r1=1572818&r2=1572819&view=diff
==============================================================================
--- openoffice/branches/ooxml/main/sw/source/filter/ww8/WW8TableInfo.hxx (original)
+++ openoffice/branches/ooxml/main/sw/source/filter/ww8/WW8TableInfo.hxx Fri Feb 28 04:44:42 2014
@@ -19,8 +19,6 @@
  * 
  *************************************************************/
 
-
- 
 #ifndef WW8_TABLE_INFO_HXX
 #define WW8_TABLE_INFO_HXX
 #include <hash_map>
@@ -31,6 +29,7 @@
 #include <boost/shared_ptr.hpp>
 #include <sal/types.h>
 #include <swrect.hxx>
+#include <set>
 
 class SwTable;
 class SwTableLine;

Modified: openoffice/branches/ooxml/main/sw/source/filter/ww8/attributeoutputbase.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/sw/source/filter/ww8/attributeoutputbase.hxx?rev=1572819&r1=1572818&r2=1572819&view=diff
==============================================================================
--- openoffice/branches/ooxml/main/sw/source/filter/ww8/attributeoutputbase.hxx (original)
+++ openoffice/branches/ooxml/main/sw/source/filter/ww8/attributeoutputbase.hxx Fri Feb 28 04:44:42 2014
@@ -327,7 +327,7 @@ public:
         sal_Int16 nFirstLineIndex,
         sal_Int16 nListTabPos,
         const String &rNumberingString ,
-	const SvxBrushItem* pBrush = 0) = 0;//For i120928,to export graphic of bullet
+        const SvxBrushItem* pBrush = 0) = 0;//For i120928,to export graphic of bullet
     
 protected: