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 [1/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/...

Author: clarence_guo
Date: Fri Feb 28 04:44:42 2014
New Revision: 1572819

URL: http://svn.apache.org/r1572819
Log: (empty)

Added:
    openoffice/branches/ooxml/main/sc/util/scfilt.component
    openoffice/branches/ooxml/main/sd/source/filter/eppt/pptexooxml.cxx
    openoffice/branches/ooxml/main/sd/source/filter/eppt/pptexooxml.hxx
    openoffice/branches/ooxml/main/sd/source/filter/eppt/pptexpbase.cxx
    openoffice/branches/ooxml/main/sd/source/filter/eppt/pptexpbase.hxx
    openoffice/branches/ooxml/main/sd/util/sdfilt.component
Modified:
    openoffice/branches/ooxml/main/Repository.mk
    openoffice/branches/ooxml/main/filter/inc/filter/msfilter/escherex.hxx
    openoffice/branches/ooxml/main/filter/source/config/fragments/filters/MS_Word_2007_XML.xcu
    openoffice/branches/ooxml/main/filter/source/config/fragments/filters/calc_MS_Excel_2007_XML.xcu
    openoffice/branches/ooxml/main/filter/source/config/fragments/filters/impress_MS_PowerPoint_2007_XML.xcu
    openoffice/branches/ooxml/main/filter/source/config/fragments/types/MS_Excel_2007_XML.xcu
    openoffice/branches/ooxml/main/filter/source/config/fragments/types/MS_PowerPoint_2007_XML.xcu
    openoffice/branches/ooxml/main/filter/source/msfilter/escherex.cxx
    openoffice/branches/ooxml/main/formula/inc/formula/FormulaCompiler.hxx
    openoffice/branches/ooxml/main/formula/inc/formula/grammar.hxx
    openoffice/branches/ooxml/main/formula/inc/formula/token.hxx
    openoffice/branches/ooxml/main/formula/source/core/api/FormulaCompiler.cxx
    openoffice/branches/ooxml/main/oox/inc/oox/export/drawingml.hxx
    openoffice/branches/ooxml/main/oox/inc/oox/export/shapes.hxx
    openoffice/branches/ooxml/main/oox/inc/oox/export/utils.hxx
    openoffice/branches/ooxml/main/oox/inc/oox/export/vmlexport.hxx
    openoffice/branches/ooxml/main/oox/inc/oox/ppt/pptimport.hxx
    openoffice/branches/ooxml/main/oox/inc/oox/xls/excelfilter.hxx
    openoffice/branches/ooxml/main/oox/prj/build.lst
    openoffice/branches/ooxml/main/oox/prj/d.lst
    openoffice/branches/ooxml/main/oox/source/export/drawingml.cxx
    openoffice/branches/ooxml/main/oox/source/export/makefile.mk
    openoffice/branches/ooxml/main/oox/source/export/shapes.cxx
    openoffice/branches/ooxml/main/oox/source/export/vmlexport.cxx
    openoffice/branches/ooxml/main/oox/source/ppt/pptimport.cxx
    openoffice/branches/ooxml/main/oox/source/xls/excelfilter.cxx
    openoffice/branches/ooxml/main/oox/source/xls/stylesbuffer.cxx
    openoffice/branches/ooxml/main/oox/util/makefile.mk
    openoffice/branches/ooxml/main/postprocess/packcomponents/makefile.mk
    openoffice/branches/ooxml/main/sc/inc/compiler.hxx
    openoffice/branches/ooxml/main/sc/inc/drwlayer.hxx
    openoffice/branches/ooxml/main/sc/prj/d.lst
    openoffice/branches/ooxml/main/sc/source/core/data/drwlayer.cxx
    openoffice/branches/ooxml/main/sc/source/core/tool/compiler.cxx
    openoffice/branches/ooxml/main/sc/source/filter/excel/excdoc.cxx
    openoffice/branches/ooxml/main/sc/source/filter/excel/excrecds.cxx
    openoffice/branches/ooxml/main/sc/source/filter/excel/expop2.cxx
    openoffice/branches/ooxml/main/sc/source/filter/excel/xecontent.cxx
    openoffice/branches/ooxml/main/sc/source/filter/excel/xeformula.cxx
    openoffice/branches/ooxml/main/sc/source/filter/excel/xename.cxx
    openoffice/branches/ooxml/main/sc/source/filter/excel/xestream.cxx
    openoffice/branches/ooxml/main/sc/source/filter/excel/xestyle.cxx
    openoffice/branches/ooxml/main/sc/source/filter/excel/xetable.cxx
    openoffice/branches/ooxml/main/sc/source/filter/excel/xlformula.cxx
    openoffice/branches/ooxml/main/sc/source/filter/excel/xltools.cxx
    openoffice/branches/ooxml/main/sc/source/filter/inc/excdoc.hxx
    openoffice/branches/ooxml/main/sc/source/filter/inc/excrecds.hxx
    openoffice/branches/ooxml/main/sc/source/filter/inc/xcl97rec.hxx
    openoffice/branches/ooxml/main/sc/source/filter/inc/xecontent.hxx
    openoffice/branches/ooxml/main/sc/source/filter/inc/xestream.hxx
    openoffice/branches/ooxml/main/sc/source/filter/inc/xestyle.hxx
    openoffice/branches/ooxml/main/sc/source/filter/inc/xetable.hxx
    openoffice/branches/ooxml/main/sc/source/filter/inc/xlformula.hxx
    openoffice/branches/ooxml/main/sc/source/filter/inc/xltools.hxx
    openoffice/branches/ooxml/main/sc/source/filter/xcl97/xcl97esc.cxx
    openoffice/branches/ooxml/main/sc/source/filter/xcl97/xcl97rec.cxx
    openoffice/branches/ooxml/main/sc/util/makefile.mk
    openoffice/branches/ooxml/main/sc/util/scfilt.map
    openoffice/branches/ooxml/main/scp2/source/ooo/file_library_ooo.scp
    openoffice/branches/ooxml/main/sd/prj/d.lst
    openoffice/branches/ooxml/main/sd/source/filter/eppt/makefile.mk
    openoffice/branches/ooxml/main/sd/util/makefile.mk
    openoffice/branches/ooxml/main/sd/util/sdfilt.map
    openoffice/branches/ooxml/main/sw/Library_msword.mk
    openoffice/branches/ooxml/main/sw/source/filter/ww8/WW8TableInfo.hxx
    openoffice/branches/ooxml/main/sw/source/filter/ww8/attributeoutputbase.hxx
    openoffice/branches/ooxml/main/sw/source/filter/ww8/docxattributeoutput.cxx
    openoffice/branches/ooxml/main/sw/source/filter/ww8/docxattributeoutput.hxx
    openoffice/branches/ooxml/main/sw/source/filter/ww8/docxexport.cxx
    openoffice/branches/ooxml/main/sw/source/filter/ww8/docxexport.hxx
    openoffice/branches/ooxml/main/sw/source/filter/ww8/docxexportfilter.cxx
    openoffice/branches/ooxml/main/sw/source/filter/ww8/docxexportfilter.hxx
    openoffice/branches/ooxml/main/sw/source/filter/ww8/rtfexportfilter.cxx
    openoffice/branches/ooxml/main/sw/source/filter/ww8/wrtw8sty.cxx
    openoffice/branches/ooxml/main/sw/source/filter/ww8/wrtww8.hxx
    openoffice/branches/ooxml/main/sw/util/msword.component
    openoffice/branches/ooxml/main/writerfilter/source/filter/ImportFilter.cxx
    openoffice/branches/ooxml/main/writerfilter/source/filter/WriterFilter.cxx
    openoffice/branches/ooxml/main/writerfilter/source/filter/WriterFilter.hxx

Modified: openoffice/branches/ooxml/main/Repository.mk
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/Repository.mk?rev=1572819&r1=1572818&r2=1572819&view=diff
==============================================================================
--- openoffice/branches/ooxml/main/Repository.mk (original)
+++ openoffice/branches/ooxml/main/Repository.mk Fri Feb 28 04:44:42 2014
@@ -19,11 +19,8 @@
 #  
 #**************************************************************
 
-
-
 $(eval $(call gb_Helper_register_repository,SRCDIR))
 
-
 $(eval $(call gb_Helper_register_executables,NONE, \
 	bmp \
 	bmpsum \
@@ -59,6 +56,7 @@ $(eval $(call gb_Helper_register_librari
 	lng \
 	msfilter \
 	msword \
+	oox \
 	qstart_gtk \
 	sax \
 	sb \

Modified: openoffice/branches/ooxml/main/filter/inc/filter/msfilter/escherex.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/filter/inc/filter/msfilter/escherex.hxx?rev=1572819&r1=1572818&r2=1572819&view=diff
==============================================================================
--- openoffice/branches/ooxml/main/filter/inc/filter/msfilter/escherex.hxx (original)
+++ openoffice/branches/ooxml/main/filter/inc/filter/msfilter/escherex.hxx Fri Feb 28 04:44:42 2014
@@ -1255,7 +1255,7 @@ class MSFILTER_DLLPUBLIC EscherPropertyC
 	static sal_Bool GetLineArrow( const sal_Bool bLineStart,
 				      const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & rXPropSet,
 				      ESCHER_LineEnd& reLineEnd, sal_Int32& rnArrowLength, sal_Int32& rnArrowWidth );
-	static sal_Bool IsDefaultObject( SdrObjCustomShape* pCustoShape, const MSO_SPT eShapeType );
+	static sal_Bool IsDefaultObject( SdrObjCustomShape* pCustoShape );
 	static void LookForPolarHandles( const MSO_SPT eShapeType, sal_Int32& nAdjustmentsWhichNeedsToBeConverted );
 	static sal_Bool GetAdjustmentValue( const com::sun::star::drawing::EnhancedCustomShapeAdjustmentValue & rkProp, sal_Int32 nIndex, sal_Int32 nAdjustmentsWhichNeedsToBeConverted, sal_Int32& nValue );
 };

Modified: openoffice/branches/ooxml/main/filter/source/config/fragments/filters/MS_Word_2007_XML.xcu
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/filter/source/config/fragments/filters/MS_Word_2007_XML.xcu?rev=1572819&r1=1572818&r2=1572819&view=diff
==============================================================================
--- openoffice/branches/ooxml/main/filter/source/config/fragments/filters/MS_Word_2007_XML.xcu (original)
+++ openoffice/branches/ooxml/main/filter/source/config/fragments/filters/MS_Word_2007_XML.xcu Fri Feb 28 04:44:42 2014
@@ -20,7 +20,7 @@
  ***********************************************************-->
 
     <node oor:name="MS Word 2007 XML" oor:op="replace">
-        <prop oor:name="Flags"><value>IMPORT ALIEN 3RDPARTYFILTER</value></prop>
+        <prop oor:name="Flags"><value>IMPORT EXPORT ALIEN 3RDPARTYFILTER</value></prop>
         <prop oor:name="UIComponent"/>
         <prop oor:name="FilterService"><value>com.sun.star.comp.Writer.WriterFilter</value></prop>
         <prop oor:name="UserData"><value>OXML</value></prop>

Modified: openoffice/branches/ooxml/main/filter/source/config/fragments/filters/calc_MS_Excel_2007_XML.xcu
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/filter/source/config/fragments/filters/calc_MS_Excel_2007_XML.xcu?rev=1572819&r1=1572818&r2=1572819&view=diff
==============================================================================
--- openoffice/branches/ooxml/main/filter/source/config/fragments/filters/calc_MS_Excel_2007_XML.xcu (original)
+++ openoffice/branches/ooxml/main/filter/source/config/fragments/filters/calc_MS_Excel_2007_XML.xcu Fri Feb 28 04:44:42 2014
@@ -20,7 +20,7 @@
  ***********************************************************-->
 
 <node oor:name="Calc MS Excel 2007 XML" oor:op="replace">
-	<prop oor:name="Flags"><value>IMPORT ALIEN 3RDPARTYFILTER PREFERRED</value></prop>
+	<prop oor:name="Flags"><value>IMPORT EXPORT ALIEN 3RDPARTYFILTER PREFERRED</value></prop>
 	<prop oor:name="UIComponent"/>
 	<prop oor:name="FilterService"><value>com.sun.star.comp.oox.xls.ExcelFilter</value></prop>
 	<prop oor:name="UserData"/>

Modified: openoffice/branches/ooxml/main/filter/source/config/fragments/filters/impress_MS_PowerPoint_2007_XML.xcu
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/filter/source/config/fragments/filters/impress_MS_PowerPoint_2007_XML.xcu?rev=1572819&r1=1572818&r2=1572819&view=diff
==============================================================================
--- openoffice/branches/ooxml/main/filter/source/config/fragments/filters/impress_MS_PowerPoint_2007_XML.xcu (original)
+++ openoffice/branches/ooxml/main/filter/source/config/fragments/filters/impress_MS_PowerPoint_2007_XML.xcu Fri Feb 28 04:44:42 2014
@@ -20,7 +20,7 @@
  ***********************************************************-->
 
 <node oor:name="Impress MS PowerPoint 2007 XML" oor:op="replace">
-	<prop oor:name="Flags"><value>IMPORT ALIEN 3RDPARTYFILTER PREFERRED</value></prop>
+	<prop oor:name="Flags"><value>IMPORT EXPORT ALIEN 3RDPARTYFILTER TEMPLATE PREFERRED</value></prop>
 	<prop oor:name="UIComponent"/>
 	<prop oor:name="FilterService"><value>com.sun.star.comp.oox.ppt.PowerPointImport</value></prop>
 	<prop oor:name="UserData"/>

Modified: openoffice/branches/ooxml/main/filter/source/config/fragments/types/MS_Excel_2007_XML.xcu
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/filter/source/config/fragments/types/MS_Excel_2007_XML.xcu?rev=1572819&r1=1572818&r2=1572819&view=diff
==============================================================================
--- openoffice/branches/ooxml/main/filter/source/config/fragments/types/MS_Excel_2007_XML.xcu (original)
+++ openoffice/branches/ooxml/main/filter/source/config/fragments/types/MS_Excel_2007_XML.xcu Fri Feb 28 04:44:42 2014
@@ -22,7 +22,7 @@
 <node oor:name="MS Excel 2007 XML" oor:op="replace" >
 	<prop oor:name="DetectService"><value>com.sun.star.comp.oox.FormatDetector</value></prop>
 	<prop oor:name="URLPattern"/>
-	<prop oor:name="Extensions"><value>xlsm xlsx</value></prop>
+	<prop oor:name="Extensions"><value>xlsx xlsm</value></prop>
 	<prop oor:name="MediaType"/>
 	<prop oor:name="Preferred"><value>false</value></prop>
 	<prop oor:name="PreferredFilter"><value>Calc MS Excel 2007 XML</value></prop>

Modified: openoffice/branches/ooxml/main/filter/source/config/fragments/types/MS_PowerPoint_2007_XML.xcu
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/filter/source/config/fragments/types/MS_PowerPoint_2007_XML.xcu?rev=1572819&r1=1572818&r2=1572819&view=diff
==============================================================================
--- openoffice/branches/ooxml/main/filter/source/config/fragments/types/MS_PowerPoint_2007_XML.xcu (original)
+++ openoffice/branches/ooxml/main/filter/source/config/fragments/types/MS_PowerPoint_2007_XML.xcu Fri Feb 28 04:44:42 2014
@@ -22,7 +22,7 @@
 <node oor:name="MS PowerPoint 2007 XML" oor:op="replace" >
 	<prop oor:name="DetectService"><value>com.sun.star.comp.oox.FormatDetector</value></prop>
 	<prop oor:name="URLPattern"/>
-	<prop oor:name="Extensions"><value>pptm pptx</value></prop>
+	<prop oor:name="Extensions"><value>pptx pptm</value></prop>
 	<prop oor:name="MediaType"/>
 	<prop oor:name="Preferred"><value>true</value></prop>
 	<prop oor:name="PreferredFilter"><value>Impress MS PowerPoint 2007 XML</value></prop>

Modified: openoffice/branches/ooxml/main/filter/source/msfilter/escherex.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/filter/source/msfilter/escherex.cxx?rev=1572819&r1=1572818&r2=1572819&view=diff
==============================================================================
--- openoffice/branches/ooxml/main/filter/source/msfilter/escherex.cxx (original)
+++ openoffice/branches/ooxml/main/filter/source/msfilter/escherex.cxx Fri Feb 28 04:44:42 2014
@@ -2613,19 +2613,10 @@ void ConvertEnhancedCustomShapeEquation(
 		}
 	}
 }
-
-sal_Bool EscherPropertyContainer::IsDefaultObject( SdrObjCustomShape* pCustoShape , const MSO_SPT eShapeType )
+//zhaosz_xml
+sal_Bool EscherPropertyContainer::IsDefaultObject( SdrObjCustomShape* pCustoShape )
 {
     sal_Bool bIsDefaultObject = sal_False;
-	switch(eShapeType)
-	{
-		//if the custom shape is not default shape of ppt, return sal_Fasle;
-		case mso_sptTearDrop:
-			return bIsDefaultObject;
-			
-		default:
-			break;
-	}
 	
     if ( pCustoShape )
     {
@@ -2714,7 +2705,7 @@ void EscherPropertyContainer::CreateCust
 			sal_Int32 nAdjustmentsWhichNeedsToBeConverted = 0;
 			uno::Sequence< beans::PropertyValues > aHandlesPropSeq;
 			sal_Bool bPredefinedHandlesUsed = sal_True;
-			sal_Bool bIsDefaultObject = IsDefaultObject( pCustoShape , eShapeType);
+			sal_Bool bIsDefaultObject = IsDefaultObject( pCustoShape);
 
 			// convert property "Equations" into std::vector< EnhancedCustomShapeEquationEquation >
 			std::vector< EnhancedCustomShapeEquation >	aEquations;

Modified: openoffice/branches/ooxml/main/formula/inc/formula/FormulaCompiler.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/formula/inc/formula/FormulaCompiler.hxx?rev=1572819&r1=1572818&r2=1572819&view=diff
==============================================================================
--- openoffice/branches/ooxml/main/formula/inc/formula/FormulaCompiler.hxx (original)
+++ openoffice/branches/ooxml/main/formula/inc/formula/FormulaCompiler.hxx Fri Feb 28 04:44:42 2014
@@ -19,8 +19,6 @@
  * 
  *************************************************************/
 
-
-
 #ifndef FORMULA_COMPILER_HXX_INCLUDED
 #define FORMULA_COMPILER_HXX_INCLUDED
 
@@ -223,6 +221,12 @@ public:
     short GetNumFormatType() const { return nNumFmt; }
     sal_Bool  CompileTokenArray();
 
+    void CreateStringFromTokenArrayOOXML( String& rFormula );
+    void CreateStringFromTokenArrayOOXML( rtl::OUStringBuffer& rBuffer);
+    FormulaToken* CreateStringFromTokenOOXML( String& rFormula, FormulaToken* pToken,
+                                    sal_Bool bAllowArrAdvance = sal_False );
+    FormulaToken* CreateStringFromTokenOOXML( rtl::OUStringBuffer& rBuffer, FormulaToken* pToken,
+                                    sal_Bool bAllowArrAdvance = sal_False );
     void CreateStringFromTokenArray( String& rFormula );
     void CreateStringFromTokenArray( rtl::OUStringBuffer& rBuffer );
     FormulaToken* CreateStringFromToken( String& rFormula, FormulaToken* pToken,
@@ -258,6 +262,7 @@ protected:
     virtual void CreateStringFromMatrix(rtl::OUStringBuffer& rBuffer,FormulaToken* pTokenP);
     virtual void CreateStringFromIndex(rtl::OUStringBuffer& rBuffer,FormulaToken* pTokenP);
     virtual void LocalizeString( String& rName );	// modify rName - input: exact name
+    virtual void LoadExcelString( String& rName );
     virtual sal_Bool IsImportingXML() const;
 
     sal_Bool   GetToken();
@@ -297,23 +302,24 @@ protected:
     OpCode              eLastOp;
     short               nRecursion;                 // GetToken() recursions
     short               nNumFmt;                    // set during CompileTokenArray()
-    sal_uInt16              pc;
+    sal_uInt16          pc;
 
     FormulaGrammar::Grammar  
-                        meGrammar;          // The grammar used, language plus convention.
+                        meGrammar;                  // The grammar used, language plus convention.
 
-    sal_Bool                bAutoCorrect;               // whether to apply AutoCorrection
-    sal_Bool                bCorrected;                 // AutoCorrection was applied
-    sal_Bool                bCompileForFAP;             //! not real RPN but names, for FunctionAutoPilot,
+    sal_Bool            bAutoCorrect;               // whether to apply AutoCorrection
+    sal_Bool            bCorrected;                 // AutoCorrection was applied
+    sal_Bool            bCompileForFAP;             //! not real RPN but names, for FunctionAutoPilot,
                                                     // will not be resolved
-    sal_Bool                bIgnoreErrors;              // on AutoCorrect and CompileForFAP
+    sal_Bool            bIgnoreErrors;              // on AutoCorrect and CompileForFAP
                                                     // ignore errors and create RPN nevertheless
-    sal_Bool                glSubTotal;                 // if code contains one or more subtotal functions
+    sal_Bool            glSubTotal;                 // if code contains one or more subtotal functions
 private:
     void InitSymbolsNative() const;    /// only SymbolsNative, on first document creation
     void InitSymbolsEnglish() const;   /// only SymbolsEnglish, maybe later
     void InitSymbolsPODF() const;      /// only SymbolsPODF, on demand
     void InitSymbolsODFF() const;      /// only SymbolsODFF, on demand
+    void InitSymbolsOOXML() const;     /// only SymbolsOOXML
 
     void loadSymbols(sal_uInt16 _nSymbols,FormulaGrammar::Grammar _eGrammar,NonConstOpCodeMapPtr& _xMap) const;
 
@@ -362,11 +368,11 @@ private:
             { return operator->(); }
     };
     
-
     mutable NonConstOpCodeMapPtr  mxSymbolsODFF;                          // ODFF symbols
     mutable NonConstOpCodeMapPtr  mxSymbolsPODF;                          // ODF 1.1 symbols
     mutable NonConstOpCodeMapPtr  mxSymbolsNative;                        // native symbols
     mutable NonConstOpCodeMapPtr  mxSymbolsEnglish;                       // English symbols
+    mutable NonConstOpCodeMapPtr  mxSymbolsOOXML;                         // OOXML symbols
 };
 // =============================================================================
 } // formula

Modified: openoffice/branches/ooxml/main/formula/inc/formula/grammar.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/formula/inc/formula/grammar.hxx?rev=1572819&r1=1572818&r2=1572819&view=diff
==============================================================================
--- openoffice/branches/ooxml/main/formula/inc/formula/grammar.hxx (original)
+++ openoffice/branches/ooxml/main/formula/inc/formula/grammar.hxx Fri Feb 28 04:44:42 2014
@@ -123,6 +123,10 @@ public:
         GRAM_NATIVE_XL_R1C1 = ::com::sun::star::sheet::FormulaLanguage::NATIVE  |
                                 ((CONV_XL_R1C1       +
                                   kConventionOffset) << kConventionShift),
+        /// OOXML
+        GRAM_OOXML          = ::com::sun::star::sheet::FormulaLanguage::OOXML  |
+                                ((CONV_XL_OOX        +
+                                  kConventionOffset) << kConventionShift),
         /// Central definition of the default grammar to be used.
         GRAM_DEFAULT        = GRAM_NATIVE_UI,
 
@@ -173,6 +177,7 @@ public:
             case GRAM_NATIVE_ODF     :
             case GRAM_NATIVE_XL_A1   :
             case GRAM_NATIVE_XL_R1C1 :
+            case GRAM_OOXML          :
                 return true;
             default:
                 return extractFormulaLanguage( eGrammar) == GRAM_EXTERNAL;

Modified: openoffice/branches/ooxml/main/formula/inc/formula/token.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/formula/inc/formula/token.hxx?rev=1572819&r1=1572818&r2=1572819&view=diff
==============================================================================
--- openoffice/branches/ooxml/main/formula/inc/formula/token.hxx (original)
+++ openoffice/branches/ooxml/main/formula/inc/formula/token.hxx Fri Feb 28 04:44:42 2014
@@ -97,13 +97,14 @@ class FORMULA_DLLPUBLIC FormulaToken : p
 protected:
 
             const StackVar      eType;          // type of data
-            mutable sal_uInt16      nRefCnt;        // reference count
+            mutable sal_uInt16  nRefCnt;        // reference count
+            bool                mbCalcOnly;
 
 public:
                                 FormulaToken( StackVar eTypeP,OpCode e = ocPush ) :
-                                    eOp(e), eType( eTypeP ), nRefCnt(0) {}
+                                    eOp(e), eType( eTypeP ), nRefCnt(0), mbCalcOnly(false){}
                                 FormulaToken( const FormulaToken& r ) : IFormulaToken(),
-                                    eOp(r.eOp), eType( r.eType ), nRefCnt(0) {}
+                                    eOp(r.eOp), eType( r.eType ), nRefCnt(0), mbCalcOnly(false){}
 
     virtual                     ~FormulaToken();
 
@@ -136,6 +137,8 @@ public:
         Any other non-overloaded method pops up an assertion.
      */
 
+    void SetCalcOnly(bool bCalcOnly) {mbCalcOnly = bCalcOnly;}
+    const bool GetCalcOnly() const {return mbCalcOnly;}
     virtual sal_uInt8                GetByte() const;
     virtual void                SetByte( sal_uInt8 n );
     virtual bool                HasForceArray() const;
@@ -180,7 +183,7 @@ public:
 class FORMULA_DLLPUBLIC FormulaByteToken : public FormulaToken
 {
 private:
-            sal_uInt8                nByte;
+            sal_uInt8           nByte;
             bool                bHasForceArray;
 protected:
                                 FormulaByteToken( OpCode e, sal_uInt8 n, StackVar v, bool b ) :
@@ -201,11 +204,11 @@ public:
                                     bHasForceArray( r.bHasForceArray ) {}
 
     virtual FormulaToken*       Clone() const { return new FormulaByteToken(*this); }
-    virtual sal_uInt8                GetByte() const;
+    virtual sal_uInt8           GetByte() const;
     virtual void                SetByte( sal_uInt8 n );
     virtual bool                HasForceArray() const;
     virtual void                SetForceArray( bool b );
-    virtual sal_Bool                operator==( const FormulaToken& rToken ) const;
+    virtual sal_Bool            operator==( const FormulaToken& rToken ) const;
 
     DECL_FIXEDMEMPOOL_NEWDEL_DLL( FormulaByteToken )
 };

Modified: openoffice/branches/ooxml/main/formula/source/core/api/FormulaCompiler.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/formula/source/core/api/FormulaCompiler.cxx?rev=1572819&r1=1572818&r2=1572819&view=diff
==============================================================================
--- openoffice/branches/ooxml/main/formula/source/core/api/FormulaCompiler.cxx (original)
+++ openoffice/branches/ooxml/main/formula/source/core/api/FormulaCompiler.cxx Fri Feb 28 04:44:42 2014
@@ -25,6 +25,7 @@
 #include "formula/errorcodes.hxx"
 #include "formula/token.hxx"
 #include "formula/tokenarray.hxx"
+#include "formula/grammar.hxx"
 #include "core_resource.hxx"
 #include "core_resource.hrc"
 
@@ -152,7 +153,7 @@ class OpCodeList : public Resource      
 {
 public:
 
-    OpCodeList( sal_uInt16, FormulaCompiler::NonConstOpCodeMapPtr );
+    OpCodeList( sal_uInt16, FormulaCompiler::NonConstOpCodeMapPtr, bool bOOXML = false );
 
 private:
     bool getOpCodeString( String& rStr, sal_uInt16 nOp );
@@ -167,9 +168,9 @@ private:
     SeparatorType meSepType;
 };
 
-OpCodeList::OpCodeList( sal_uInt16 nRID, FormulaCompiler::NonConstOpCodeMapPtr xMap ) :
+OpCodeList::OpCodeList( sal_uInt16 nRID, FormulaCompiler::NonConstOpCodeMapPtr xMap, bool bOOXML ) :
     Resource( ResId(nRID,*ResourceManager::getResManager()) )
-    ,meSepType(SEMICOLON_BASE)
+    ,meSepType( bOOXML ? COMMA_BASE : SEMICOLON_BASE)
 {
      for (sal_uInt16 i = 0; i <= SC_OPCODE_LAST_OPCODE_ID; ++i)
     {
@@ -229,6 +230,47 @@ bool OpCodeList::getOpCodeString( String
             }
         }
         break;
+        case SC_OPCODE_UNION:
+        {
+            if ( meSepType == COMMA_BASE )
+            {
+                rStr = String::CreateFromAscii( "," );
+                return true;
+            }
+            else if ( meSepType == SEMICOLON_BASE )
+            {
+                rStr = String::CreateFromAscii( "~" );
+                return true;
+            }
+        }
+        break;
+        case SC_OPCODE_INTERSECT:
+        {
+            if ( meSepType == COMMA_BASE )
+            {
+                rStr = String::CreateFromAscii( " " );
+                return true;
+            }
+            else if ( meSepType == SEMICOLON_BASE )
+            {
+                rStr = String::CreateFromAscii( "!" );
+                return true;
+            }
+        }
+        break;
+        case SC_OPCODE_ERROR_TYPE:
+        {
+            // Only handle comma(Excel) mode.
+            // For calc mode, it will use different string for this Op on importing 
+            // which can be obtained from resource file directly
+            if ( meSepType == COMMA_BASE )
+            {
+                //Calc name: ERRORTYPE    Excel name: ERROR.TYPE
+                rStr = String::CreateFromAscii( "ERROR.TYPE" );
+                return true;
+            }
+        }
+        break;
     }
 
     return false;
@@ -564,6 +606,11 @@ FormulaCompiler::OpCodeMapPtr FormulaCom
                 InitSymbolsNative();
             xMap = mxSymbolsNative;
             break;
+        case FormulaLanguage::OOXML :
+            if (!mxSymbolsOOXML)
+                InitSymbolsOOXML();
+            xMap = mxSymbolsOOXML;
+            break;
         default:
             ;   // nothing, NULL map returned
     }
@@ -652,6 +699,19 @@ void FormulaCompiler::InitSymbolsNative(
 	    lcl_fillNativeSymbols(s_sSymbol);
 	mxSymbolsNative = s_sSymbol;
 }
+
+// -----------------------------------------------------------------------------
+void FormulaCompiler::InitSymbolsOOXML() const
+{
+    static NonConstOpCodeMapPtr s_sSymbol;
+    if ( !s_sSymbol.get() )
+    {
+        s_sSymbol.reset( new FormulaCompiler::OpCodeMap( SC_OPCODE_LAST_OPCODE_ID + 1, true, FormulaGrammar::GRAM_OOXML ) );
+        OpCodeList aOpCodeListNative( RID_STRLIST_FUNCTION_NAMES, s_sSymbol, true );
+    }
+    mxSymbolsOOXML = s_sSymbol;
+}
+
 // -----------------------------------------------------------------------------
 void FormulaCompiler::InitSymbolsEnglish() const
 {
@@ -1450,6 +1510,47 @@ void FormulaCompiler::PopTokenArray()
         delete p;
     }
 }
+
+void FormulaCompiler::CreateStringFromTokenArrayOOXML( String& rFormula )
+{
+    rtl::OUStringBuffer aBuffer( pArr->GetLen() * 5 );
+    CreateStringFromTokenArrayOOXML( aBuffer);
+    rFormula = aBuffer;
+}
+
+void FormulaCompiler::CreateStringFromTokenArrayOOXML( rtl::OUStringBuffer& rBuffer )
+{
+    rBuffer.setLength(0);
+    if( !pArr->GetLen() )
+        return;
+
+    FormulaTokenArray* pSaveArr = pArr;
+    bool bODFF = FormulaGrammar::isODFF( meGrammar );
+    if ( bODFF || FormulaGrammar::isPODF( meGrammar ) )
+    {
+        // Scan token array for missing args and re-write if present.
+        MissingConvention aConv( bODFF);
+        if (pArr->NeedsPofRewrite( aConv ) )
+            pArr = pArr->RewriteMissingToPof( aConv );
+    }
+
+    // At least one character per token, plus some are references, some are
+    // function names, some are numbers, ...
+    rBuffer.ensureCapacity( pArr->GetLen() * 5 );
+
+    if ( pArr->IsRecalcModeForced() )
+        rBuffer.append( sal_Unicode( '=' ) );
+    FormulaToken* t = pArr->First();
+    while( t )
+        t = CreateStringFromTokenOOXML( rBuffer, t, sal_True );
+
+    if ( pSaveArr != pArr )
+    {
+        delete pArr;
+        pArr = pSaveArr;
+    }
+}
+
 // -----------------------------------------------------------------------------
 void FormulaCompiler::CreateStringFromTokenArray( String& rFormula )
 {
@@ -1490,8 +1591,152 @@ void FormulaCompiler::CreateStringFromTo
         pArr = pSaveArr;
     }
 }
+
+FormulaToken* FormulaCompiler::CreateStringFromTokenOOXML( String& rFormula, FormulaToken* pTokenP, sal_Bool bAllowArrAdvance )
+{
+    rtl::OUStringBuffer aBuffer;
+    FormulaToken* p = CreateStringFromTokenOOXML( aBuffer, pTokenP, bAllowArrAdvance );
+    rFormula += aBuffer;
+    return p;
+}
+
+FormulaToken* FormulaCompiler::CreateStringFromTokenOOXML( rtl::OUStringBuffer& rBuffer, FormulaToken* pTokenP, sal_Bool bAllowArrAdvance )
+{
+    sal_Bool bNext = sal_True;
+    sal_Bool bSpaces = sal_False;
+    FormulaToken* t = pTokenP;
+    
+    bool bCalcOnly = t->GetCalcOnly();
+    if(bCalcOnly)//If this token is calc only not for excel, ingnore this token
+    {
+        t = pArr->Next();
+        return t;
+    }
+    
+    OpCode eOp = t->GetOpCode();
+    if( eOp >= ocAnd && eOp <= ocOr )
+    {
+        // AND, OR infix?
+        if ( bAllowArrAdvance )
+            t = pArr->Next();
+        else
+            t = pArr->PeekNext();
+        bNext = sal_False;
+        bSpaces = ( !t || t->GetOpCode() != ocOpen );
+    }
+    if( bSpaces )
+        rBuffer.append(sal_Unicode(' '));
+
+    if( eOp == ocSpaces )
+    {
+        bool bIntersectionOp = mxSymbols->isODFF();
+        if (bIntersectionOp)
+        {
+            const FormulaToken* p = pArr->PeekPrevNoSpaces();
+            bIntersectionOp = (p && p->GetOpCode() == ocColRowName);
+            if (bIntersectionOp)
+            {
+                p = pArr->PeekNextNoSpaces();
+                bIntersectionOp = (p && p->GetOpCode() == ocColRowName);
+            }
+        }
+        if (bIntersectionOp)
+            rBuffer.appendAscii( "!!");
+        else
+        {
+            // most times it's just one blank
+            sal_uInt8 n = t->GetByte();
+            for ( sal_uInt8 j=0; j<n; ++j )
+            {
+                rBuffer.append(sal_Unicode(' '));
+            }
+        }
+    }
+    else if( eOp >= ocInternalBegin && eOp <= ocInternalEnd )
+        rBuffer.appendAscii( pInternal[ eOp - ocInternalBegin ] );
+    else if( (sal_uInt16) eOp < mxSymbols->getSymbolCount())        // Keyword:
+        rBuffer.append(mxSymbols->getSymbol(eOp));
+    else
+    {
+        DBG_ERRORFILE("unknown OpCode");
+        rBuffer.append(GetNativeSymbol( ocErrName ));
+    }
+    if( bNext ) 
+    {
+        if (eOp == ocExternalRef)
+        {
+            CreateStringFromExternal(rBuffer, pTokenP);
+        }
+        else
+        {
+            switch( t->GetType() )
+            {
+            case svDouble:
+                AppendDouble( rBuffer, t->GetDouble() );
+            break;
+
+            case svString:
+                if( eOp == ocBad )
+                    rBuffer.append(t->GetString());
+                else
+                    AppendString( rBuffer, t->GetString() );
+                break;
+            case svSingleRef:
+                CreateStringFromSingleRef(rBuffer,t);
+                break;
+            case svDoubleRef:
+                CreateStringFromDoubleRef(rBuffer,t);
+                break;
+            case svMatrix:
+                CreateStringFromMatrix( rBuffer, t );
+                break;
+
+            case svIndex:
+                CreateStringFromIndex( rBuffer, t );
+                break;
+            case svExternal:
+            {
+                // mapped or translated name of AddIns
+                String aAddIn( t->GetExternal() );
+                bool bMapped = mxSymbols->isPODF();     // ODF 1.1 directly uses programmatical name
+                if (!bMapped && mxSymbols->hasExternals())
+                {
+                    ExternalHashMap::const_iterator iLook = mxSymbols->getReverseExternalHashMap()->find( aAddIn);
+                    if (iLook != mxSymbols->getReverseExternalHashMap()->end())
+                    {
+                        aAddIn = (*iLook).second;
+                        bMapped = true;
+                    }
+                }
+                if (!bMapped && !mxSymbols->isEnglish())
+                    LoadExcelString( aAddIn );//If this token is external, use Excel String
+                rBuffer.append(aAddIn);
+             }
+            break;
+            case svByte:
+            case svJump:
+            case svFAP:
+            case svMissing:
+            case svSep:
+                break;      // Opcodes
+            default:
+                DBG_ERROR("FormulaCompiler:: GetStringFromToken errUnknownVariable");
+            } // of switch
+        }
+    }
+    if( bSpaces )
+        rBuffer.append(sal_Unicode(' '));
+    if ( bAllowArrAdvance )
+    {
+        if( bNext )
+            t = pArr->Next();
+        return t;
+    }
+    return pTokenP;
+}
+
 // -----------------------------------------------------------------------------
-FormulaToken* FormulaCompiler::CreateStringFromToken( String& rFormula, FormulaToken* pTokenP,sal_Bool bAllowArrAdvance )
+FormulaToken* FormulaCompiler::CreateStringFromToken( String& rFormula, FormulaToken* pTokenP, sal_Bool bAllowArrAdvance )
 {
     rtl::OUStringBuffer aBuffer;
     FormulaToken* p = CreateStringFromToken( aBuffer, pTokenP, bAllowArrAdvance );
@@ -1499,7 +1744,7 @@ FormulaToken* FormulaCompiler::CreateStr
     return p;
 }
 
-FormulaToken* FormulaCompiler::CreateStringFromToken( rtl::OUStringBuffer& rBuffer, FormulaToken* pTokenP,sal_Bool bAllowArrAdvance )
+FormulaToken* FormulaCompiler::CreateStringFromToken( rtl::OUStringBuffer& rBuffer, FormulaToken* pTokenP, sal_Bool bAllowArrAdvance )
 {
     sal_Bool bNext = sal_True;
     sal_Bool bSpaces = sal_False;
@@ -1591,7 +1836,7 @@ FormulaToken* FormulaCompiler::CreateStr
             	String aAddIn( t->GetExternal() );
 	            bool bMapped = mxSymbols->isPODF();     // ODF 1.1 directly uses programmatical name
     	        if (!bMapped && mxSymbols->hasExternals())
-        	    {
+                {
             	    ExternalHashMap::const_iterator iLook = mxSymbols->getReverseExternalHashMap()->find( aAddIn);
 	                if (iLook != mxSymbols->getReverseExternalHashMap()->end())
     	            {
@@ -1600,9 +1845,9 @@ FormulaToken* FormulaCompiler::CreateStr
 	                }
 	            }
 	            if (!bMapped && !mxSymbols->isEnglish())
-   		             LocalizeString( aAddIn );
-	   	         rBuffer.append(aAddIn);
-   		     }
+   		        LocalizeString( aAddIn );
+                    rBuffer.append(aAddIn);
+                }
             break;
         	case svByte:
 	        case svJump:
@@ -1835,6 +2080,11 @@ void FormulaCompiler::CreateStringFromEx
 void FormulaCompiler::LocalizeString( String& /*rName*/ )
 {
 }
+
+void FormulaCompiler::LoadExcelString( String& /*rName*/ )
+{
+}
+
 void FormulaCompiler::PushTokenArray( FormulaTokenArray* pa, sal_Bool bTemp )
 {
     if ( bAutoCorrect && !pStack )

Modified: openoffice/branches/ooxml/main/oox/inc/oox/export/drawingml.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/oox/inc/oox/export/drawingml.hxx?rev=1572819&r1=1572818&r2=1572819&view=diff
==============================================================================
--- openoffice/branches/ooxml/main/oox/inc/oox/export/drawingml.hxx (original)
+++ openoffice/branches/ooxml/main/oox/inc/oox/export/drawingml.hxx Fri Feb 28 04:44:42 2014
@@ -28,7 +28,9 @@
 #include <com/sun/star/awt/FontDescriptor.hpp>
 #include <com/sun/star/uno/XReference.hpp>
 #include <tools/poly.hxx>
-#include <svx/escherex.hxx>
+//zhaosz_xml
+//#include <svx/escherex.hxx>
+#include <filter/msfilter/escherex.hxx>
 
 class Graphic;
 class String;

Modified: openoffice/branches/ooxml/main/oox/inc/oox/export/shapes.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/oox/inc/oox/export/shapes.hxx?rev=1572819&r1=1572818&r2=1572819&view=diff
==============================================================================
--- openoffice/branches/ooxml/main/oox/inc/oox/export/shapes.hxx (original)
+++ openoffice/branches/ooxml/main/oox/inc/oox/export/shapes.hxx Fri Feb 28 04:44:42 2014
@@ -69,9 +69,13 @@ private:
 
     typedef std::hash_map< const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape>, sal_Int32, ShapeHash, ShapeCheck> ShapeHashMap;
     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, ::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;
@@ -149,9 +153,12 @@ public:
     virtual ShapeExport&
                         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 );
-    sal_Int32 GetShapeID( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > rShape );
-};
+  //zhaosz_xml
+	sal_Int32 GetNewShapeID( 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 );
+  };
 
 }}
 

Modified: openoffice/branches/ooxml/main/oox/inc/oox/export/utils.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/oox/inc/oox/export/utils.hxx?rev=1572819&r1=1572818&r2=1572819&view=diff
==============================================================================
--- openoffice/branches/ooxml/main/oox/inc/oox/export/utils.hxx (original)
+++ openoffice/branches/ooxml/main/oox/inc/oox/export/utils.hxx Fri Feb 28 04:44:42 2014
@@ -43,15 +43,15 @@
 #endif
 
 // ---------------------------------------------------------------------------------------------
-
-static inline sal_Int64 PPTtoEMU( INT32 nPPT )
+//zhaosz_xml, INT32 to sal_Int32
+static inline sal_Int64 PPTtoEMU( sal_Int32 nPPT )
 {
     return (sal_Int64)( (double)nPPT * 1587.5 );
 }
 
 // ---------------------------------------------------------------------------------------------
 
-static inline sal_Int64 MM100toEMU( INT32 nMM100 )
+static inline sal_Int64 MM100toEMU( sal_Int32 nMM100 )
 {
     return (sal_Int64)nMM100 * 360;
 }

Modified: openoffice/branches/ooxml/main/oox/inc/oox/export/vmlexport.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/oox/inc/oox/export/vmlexport.hxx?rev=1572819&r1=1572818&r2=1572819&view=diff
==============================================================================
--- openoffice/branches/ooxml/main/oox/inc/oox/export/vmlexport.hxx (original)
+++ openoffice/branches/ooxml/main/oox/inc/oox/export/vmlexport.hxx Fri Feb 28 04:44:42 2014
@@ -23,7 +23,7 @@
 
 #include <oox/dllapi.h>
 #include <sax/fshelper.hxx>
-#include <svx/escherex.hxx>
+#include <filter/msfilter/escherex.hxx> //zhaosz_xml
 
 namespace rtl {
     class OString;
@@ -87,13 +87,13 @@ protected:
 
 private:
 
-    virtual void OpenContainer( UINT16 nEscherContainer, int nRecInstance = 0 );
+    virtual void OpenContainer( sal_Int16 nEscherContainer, int nRecInstance = 0 );
     virtual void CloseContainer();
 
-    virtual UINT32 EnterGroup( const String& rShapeName, const Rectangle* pBoundRect = 0 );
+    virtual sal_uInt32 EnterGroup( const String& rShapeName, const Rectangle* pBoundRect = 0 );
     virtual void LeaveGroup();
 
-    virtual void AddShape( UINT32 nShapeType, UINT32 nShapeFlags, UINT32 nShapeId = 0 );
+    virtual void AddShape( sal_Int32 nShapeType, sal_Int32 nShapeFlags, sal_Int32 nShapeId = 0 );
 
 private:
     /// Create an OString representing the id from a numerical id.

Modified: openoffice/branches/ooxml/main/oox/inc/oox/ppt/pptimport.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/oox/inc/oox/ppt/pptimport.hxx?rev=1572819&r1=1572818&r2=1572819&view=diff
==============================================================================
--- openoffice/branches/ooxml/main/oox/inc/oox/ppt/pptimport.hxx (original)
+++ openoffice/branches/ooxml/main/oox/inc/oox/ppt/pptimport.hxx Fri Feb 28 04:44:42 2014
@@ -19,8 +19,6 @@
  * 
  *************************************************************/
 
-
-
 #ifndef OOX_POWERPOINT_POWERPOINTIMPORT_HXX
 #define OOX_POWERPOINT_POWERPOINTIMPORT_HXX
 
@@ -41,9 +39,13 @@ class PowerPointImport : public oox::cor
 {
 public:
 
-	PowerPointImport( const com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >& rxContext )
+    PowerPointImport( const com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >& rxContext )
+        throw( ::com::sun::star::uno::RuntimeException );
+    virtual ~PowerPointImport();
+
+    virtual sal_Bool SAL_CALL filter(
+        const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& rMediaDescSeq )
         throw( ::com::sun::star::uno::RuntimeException );
-	virtual ~PowerPointImport();
 
     // from FilterBase
     virtual bool importDocument() throw();
@@ -51,14 +53,14 @@ public:
 
     virtual const ::oox::drawingml::Theme* getCurrentTheme() const;
     virtual ::oox::vml::Drawing* getVmlDrawing();
-	virtual const oox::drawingml::table::TableStyleListPtr getTableStyles();
+    virtual const oox::drawingml::table::TableStyleListPtr getTableStyles();
     virtual ::oox::drawingml::chart::ChartConverter& getChartConverter();
 
-	void													setActualSlidePersist( SlidePersistPtr pActualSlidePersist ){ mpActualSlidePersist = pActualSlidePersist; };
-	std::map< rtl::OUString, oox::drawingml::ThemePtr >&	getThemes(){ return maThemes; };
-	std::vector< SlidePersistPtr >&							getDrawPages(){ return maDrawPages; };
-	std::vector< SlidePersistPtr >&							getMasterPages(){ return maMasterPages; };
-	std::vector< SlidePersistPtr >&							getNotesPages(){ return maNotesPages; };
+    void													setActualSlidePersist( SlidePersistPtr pActualSlidePersist ){ mpActualSlidePersist = pActualSlidePersist; };
+    std::map< rtl::OUString, oox::drawingml::ThemePtr >&	getThemes(){ return maThemes; };
+    std::vector< SlidePersistPtr >&							getDrawPages(){ return maDrawPages; };
+    std::vector< SlidePersistPtr >&							getMasterPages(){ return maMasterPages; };
+    std::vector< SlidePersistPtr >&							getNotesPages(){ return maNotesPages; };
 
     sal_Int32 getSchemeColor( sal_Int32 nToken ) const;
 
@@ -68,15 +70,15 @@ private:
     virtual ::rtl::OUString implGetImplementationName() const;
 
 private:
-	rtl::OUString										maTableStyleListPath;
-	oox::drawingml::table::TableStyleListPtr			mpTableStyleList;
+    rtl::OUString										maTableStyleListPath;
+    oox::drawingml::table::TableStyleListPtr			mpTableStyleList;
 
-	SlidePersistPtr										mpActualSlidePersist;
-	std::map< rtl::OUString, oox::drawingml::ThemePtr > maThemes;
+    SlidePersistPtr										mpActualSlidePersist;
+    std::map< rtl::OUString, oox::drawingml::ThemePtr > maThemes;
 
-	std::vector< SlidePersistPtr > maDrawPages;
-	std::vector< SlidePersistPtr > maMasterPages;
-	std::vector< SlidePersistPtr > maNotesPages;
+    std::vector< SlidePersistPtr > maDrawPages;
+    std::vector< SlidePersistPtr > maMasterPages;
+    std::vector< SlidePersistPtr > maNotesPages;
 
     ::boost::shared_ptr< ::oox::drawingml::chart::ChartConverter > mxChartConv;
 };

Modified: openoffice/branches/ooxml/main/oox/inc/oox/xls/excelfilter.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/oox/inc/oox/xls/excelfilter.hxx?rev=1572819&r1=1572818&r2=1572819&view=diff
==============================================================================
--- openoffice/branches/ooxml/main/oox/inc/oox/xls/excelfilter.hxx (original)
+++ openoffice/branches/ooxml/main/oox/inc/oox/xls/excelfilter.hxx Fri Feb 28 04:44:42 2014
@@ -61,7 +61,9 @@ public:
 
     virtual bool        importDocument() throw();
     virtual bool        exportDocument() throw();
-
+    virtual sal_Bool SAL_CALL filter(
+                            const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& rMediaDescSeq )
+                            throw( ::com::sun::star::uno::RuntimeException );
     virtual const ::oox::drawingml::Theme* getCurrentTheme() const;
     virtual ::oox::vml::Drawing* getVmlDrawing();
 	virtual const ::oox::drawingml::table::TableStyleListPtr getTableStyles();

Modified: openoffice/branches/ooxml/main/oox/prj/build.lst
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/oox/prj/build.lst?rev=1572819&r1=1572818&r2=1572819&view=diff
==============================================================================
--- openoffice/branches/ooxml/main/oox/prj/build.lst (original)
+++ openoffice/branches/ooxml/main/oox/prj/build.lst Fri Feb 28 04:44:42 2014
@@ -1,4 +1,4 @@
-oox	oox : vos cppu cppuhelper comphelper sal offapi sax basegfx xmlscript tools vcl BOOST:boost OPENSSL:openssl LIBXSLT:libxslt NULL
+oox	oox : vos cppu cppuhelper comphelper sal offapi sax basegfx xmlscript tools vcl BOOST:boost OPENSSL:openssl LIBXSLT:libxslt svx NULL
 oox	oox				usr1	-   all	oox_mkout NULL
 oox	oox\prj				get	-   all	oox_prj NULL
 oox	oox\source\token		nmake	-   all	oox_token NULL
@@ -15,4 +15,5 @@ oox	oox\source\vml			nmake	-   all	oox_v
 oox	oox\source\xls			nmake	-   all	oox_xls oox_token NULL
 oox	oox\source\dump			nmake	-   all	oox_dump oox_token NULL
 oox	oox\source\shape		nmake   -   all oox_shape oox_token NULL
-oox	oox\util			nmake   -   all oox_util oox_token oox_helper oox_core oox_ole oox_vml oox_drawingml oox_diagram oox_chart oox_table oox_ppt oox_xls oox_dump oox_shape oox_docprop NULL
+oox	oox\source\export		nmake   -   all oox_export oox_token NULL
+oox	oox\util			nmake   -   all oox_util oox_token oox_helper oox_core oox_ole oox_vml oox_drawingml oox_diagram oox_chart oox_table oox_ppt oox_xls oox_dump oox_export oox_shape oox_docprop NULL

Modified: openoffice/branches/ooxml/main/oox/prj/d.lst
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/oox/prj/d.lst?rev=1572819&r1=1572818&r2=1572819&view=diff
==============================================================================
--- openoffice/branches/ooxml/main/oox/prj/d.lst (original)
+++ openoffice/branches/ooxml/main/oox/prj/d.lst Fri Feb 28 04:44:42 2014
@@ -3,11 +3,13 @@ mkdir: %_DEST%\inc%_EXT%\oox\core
 mkdir: %_DEST%\inc%_EXT%\oox\drawingml
 mkdir: %_DEST%\inc%_EXT%\oox\drawingml\chart
 mkdir: %_DEST%\inc%_EXT%\oox\drawingml\table
+mkdir: %_DEST%\inc%_EXT%\oox\export
 mkdir: %_DEST%\inc%_EXT%\oox\helper
 mkdir: %_DEST%\inc%_EXT%\oox\ole
 mkdir: %_DEST%\inc%_EXT%\oox\token
 mkdir: %_DEST%\inc%_EXT%\oox\vml
 mkdir: %_DEST%\inc%_EXT%\oox\xls
+mkdir: %_DEST%\inc%_EXT%\oox\export
 
 ..\%__SRC%\misc\*.map %_DEST%\bin%_EXT%\*.map
 ..\%__SRC%\lib\ixo.lib %_DEST%\lib%_EXT%\ixo.lib
@@ -25,6 +27,7 @@ mkdir: %_DEST%\inc%_EXT%\oox\xls
 ..\source\token\tokens.txt %_DEST%\inc%_EXT%\oox\token\tokens.txt
 
 ..\inc\oox\dllapi.h %_DEST%\inc%_EXT%\oox\dllapi.h
+..\inc\oox\export\drawingml.hxx %_DEST%\inc%_EXT%\oox\export\drawingml.hxx
 ..\inc\oox\helper\binarystreambase.hxx %_DEST%\inc%_EXT%\oox\helper\binarystreambase.hxx
 ..\inc\oox\helper\helper.hxx %_DEST%\inc%_EXT%\oox\helper\helper.hxx
 ..\inc\oox\helper\refmap.hxx %_DEST%\inc%_EXT%\oox\helper\refmap.hxx
@@ -35,13 +38,15 @@ mkdir: %_DEST%\inc%_EXT%\oox\xls
 ..\inc\oox\core\filterdetect.hxx %_DEST%\inc%_EXT%\oox\core\filterdetect.hxx
 ..\inc\oox\core\relations.hxx %_DEST%\inc%_EXT%\oox\core\relations.hxx
 ..\inc\oox\core\xmlfilterbase.hxx %_DEST%\inc%_EXT%\oox\core\xmlfilterbase.hxx
+..\inc\oox\drawingml\*.hxx %_DEST%\inc%_EXT%\oox\drawingml\*.hxx
 ..\inc\oox\drawingml\chart\chartconverter.hxx %_DEST%\inc%_EXT%\oox\drawingml\chart\chartconverter.hxx
 ..\inc\oox\drawingml\table\tablestylelist.hxx %_DEST%\inc%_EXT%\oox\drawingml\table\tablestylelist.hxx
 ..\inc\oox\ole\vbaproject.hxx %_DEST%\inc%_EXT%\oox\ole\vbaproject.hxx
+..\inc\oox\ole\oleobjecthelper.hxx %_DEST%\inc%_EXT%\oox\ole\oleobjecthelper.hxx
 ..\inc\oox\vml\vmldrawing.hxx %_DEST%\inc%_EXT%\oox\vml\vmldrawing.hxx
 ..\inc\oox\vml\vmlshape.hxx %_DEST%\inc%_EXT%\oox\vml\vmlshape.hxx
 ..\inc\oox\xls\excelvbaproject.hxx %_DEST%\inc%_EXT%\oox\xls\excelvbaproject.hxx
-
+..\inc\oox\export\*.hxx %_DEST%\inc%_EXT%\oox\export\*.hxx
 dos: sh -c "if test %OS% = MACOSX; then create-bundle %_DEST%\lib%_EXT%\*.dylib; fi"
 
 ..\xml\components.xml %_DEST%\xml%_EXT%\components.xml

Modified: openoffice/branches/ooxml/main/oox/source/export/drawingml.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/oox/source/export/drawingml.cxx?rev=1572819&r1=1572818&r2=1572819&view=diff
==============================================================================
--- openoffice/branches/ooxml/main/oox/source/export/drawingml.cxx (original)
+++ openoffice/branches/ooxml/main/oox/source/export/drawingml.cxx Fri Feb 28 04:44:42 2014
@@ -24,6 +24,8 @@
 #include "oox/core/xmlfilterbase.hxx"
 #include "oox/export/drawingml.hxx"
 #include "oox/export/utils.hxx"
+//zhaosz_xml
+#include "oox/token/tokens.hxx"
 
 #include <cstdio>
 #include <com/sun/star/awt/CharSet.hpp>
@@ -35,6 +37,9 @@
 #include <com/sun/star/beans/XPropertySet.hpp>
 #include <com/sun/star/beans/XPropertyState.hpp>
 #include <com/sun/star/container/XEnumerationAccess.hpp>
+//zhaosz_xml
+#include <com/sun/star/container/XIndexAccess.hpp>
+
 #include <com/sun/star/drawing/BitmapMode.hpp>
 #include <com/sun/star/drawing/EnhancedCustomShapeAdjustmentValue.hpp>
 #include <com/sun/star/drawing/LineDash.hpp>
@@ -42,6 +47,12 @@
 #include <com/sun/star/drawing/LineStyle.hpp>
 #include <com/sun/star/drawing/TextHorizontalAdjust.hpp>
 #include <com/sun/star/drawing/TextVerticalAdjust.hpp>
+
+//zhaosz_xml
+#include <com/sun/star/drawing/XShape.hpp>
+#include <com/sun/star/drawing/FillStyle.hpp>
+
+
 #include <com/sun/star/i18n/ScriptType.hpp>
 #include <com/sun/star/io/XOutputStream.hpp>
 #include <com/sun/star/style/ParagraphAdjust.hpp>
@@ -58,13 +69,23 @@
 #include <rtl/strbuf.hxx>
 #include <sfx2/app.hxx>
 #include <svl/languageoptions.hxx>
-#include <svx/escherex.hxx>
-#include <svx/svxenum.hxx>
+//zhaosz_xml
+//#include <svx/escherex.hxx>
+#include <filter/msfilter/escherex.hxx>
+#include <unotools/fontcvt.hxx>
+#include <unotools/fontdefs.hxx>
+#include <editeng/svxenum.hxx>
 
 using namespace ::com::sun::star;
 using namespace ::com::sun::star::uno;
 using namespace ::com::sun::star::drawing;
 using namespace ::com::sun::star::i18n;
+//zhaosz_xml
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::style;
+using namespace ::com::sun::star::text;
+using namespace ::com::sun::star::drawing;
+
 using ::com::sun::star::beans::PropertyState;
 using ::com::sun::star::beans::PropertyValue;
 using ::com::sun::star::beans::XPropertySet;
@@ -313,10 +334,10 @@ void DrawingML::WriteOutline( Reference<
 
     sal_uInt32 nLineWidth = 0;
     sal_uInt32 nColor = 0;
-    sal_Bool bColorSet = FALSE;
+    sal_Bool bColorSet = sal_False; //zhaosz_xml
     const char* cap = NULL;
     drawing::LineDash aLineDash;
-    sal_Bool bDashSet = FALSE;
+    sal_Bool bDashSet = sal_False;
 
     GET( nLineWidth, LineWidth );
 
@@ -324,7 +345,7 @@ void DrawingML::WriteOutline( Reference<
         case drawing::LineStyle_DASH:
             if( GETA( LineDash ) ) {
                 aLineDash = *(drawing::LineDash*) mAny.getValue();
-                bDashSet = TRUE;
+                bDashSet = sal_True;
                 if( aLineDash.Style == DashStyle_ROUND || aLineDash.Style == DashStyle_ROUNDRELATIVE )
                     cap = "rnd";
 
@@ -336,7 +357,7 @@ void DrawingML::WriteOutline( Reference<
         default:
             if ( GETA( LineColor ) ) {
                 nColor = *((sal_uInt32*) mAny.getValue()) & 0xffffff;
-                bColorSet = TRUE;
+                bColorSet = sal_True;
             }
             break;
     }
@@ -466,7 +487,9 @@ OUString DrawingML::WriteImage( const Gr
             }
 
             aData = aStream.GetData();
-            nDataSize = aStream.GetSize();
+            //nDataSize = aStream.GetSize();
+			//zhaosz_xml
+			nDataSize = aStream.GetEndOfData();//just function replacing
             break;
             }
     }
@@ -478,8 +501,27 @@ OUString DrawingML::WriteImage( const Gr
         case DOCUMENT_PPTX: pComponent = "ppt"; break;
         case DOCUMENT_XLSX: pComponent = "xl"; break;
     }
-
-    Reference< XOutputStream > xOutStream = mpFB->openOutputStream( OUStringBuffer()
+//zhaosz_xml 
+    /*Reference< XOutputStream > xOutStream = mpFB->openOutputStream( OUStringBuffer()
+                                                                    .appendAscii( pComponent )
+                                                                    .appendAscii( "/media/image" )
+                                                                    .append( (sal_Int32) mnImageCounter )
+                                                                    .appendAscii( sExtension )
+                                                                    .makeStringAndClear(),
+                                                                    sMediaType );
+                                                                    */
+     /*
+     
+		Reference< XOutputStream > XmlFilterBase::openFragmentStream( const OUString& rStreamName, const OUString& rMediaType )
+		{
+			Reference< XOutputStream > xOutputStream = openOutputStream( rStreamName );
+			PropertySet aPropSet( xOutputStream );
+			aPropSet.setProperty( PROP_MediaType, rMediaType );
+			return xOutputStream;
+		}
+                                                                    
+        */
+    Reference< XOutputStream > xOutStream = mpFB->openFragmentStream( OUStringBuffer()
                                                                     .appendAscii( pComponent )
                                                                     .appendAscii( "/media/image" )
                                                                     .append( (sal_Int32) mnImageCounter )
@@ -791,7 +833,7 @@ const char* DrawingML::GetFieldType( ::c
         if( rXTextField.is() ) {
             rXPropSet.set( rXTextField, UNO_QUERY );
             if( rXPropSet.is() ) {
-                String aFieldKind( rXTextField->getPresentation( TRUE ) );
+                String aFieldKind( rXTextField->getPresentation( sal_True ) );
                 DBG(printf ("field kind: %s\n", ST(aFieldKind) ));
                 if( aFieldKind == S( "Page" ) ) {
                     return "slidenum";
@@ -1092,7 +1134,7 @@ void DrawingML::WriteParagraph( Referenc
 
     mpFS->startElementNS( XML_a, XML_p, FSEND );
 
-    sal_Bool bPropertiesWritten = FALSE;
+    sal_Bool bPropertiesWritten = sal_False;
     while( enumeration->hasMoreElements() ) {
         Reference< XTextRange > run;
         Any any ( enumeration->nextElement() );
@@ -1100,7 +1142,7 @@ void DrawingML::WriteParagraph( Referenc
         if (any >>= run) {
             if( !bPropertiesWritten && run->getString().getLength() ) {
                 WriteParagraphProperties( rParagraph );
-                bPropertiesWritten = TRUE;
+                bPropertiesWritten = sal_True;
             }
             WriteRun( run );
         }
@@ -1152,11 +1194,11 @@ void DrawingML::WriteText( Reference< XS
     if( eHorizontalAlignment == TextHorizontalAdjust_CENTER )
         bHorizontalCenter = true;
 
-    sal_Bool bHasWrap = FALSE;
-    sal_Bool bWrap = FALSE;
+    sal_Bool bHasWrap = sal_False;
+    sal_Bool bWrap = sal_False;
     if( GETA( TextWordWrap ) ) {
         mAny >>= bWrap;
-        bHasWrap = TRUE;
+        bHasWrap = sal_True;
         //DBG(printf("wrap: %d\n", bWrap));
     }
 
@@ -1241,11 +1283,11 @@ void DrawingML::WritePolyPolygon( const 
 
     mpFS->startElementNS( XML_a, XML_pathLst, FSEND );
 
-    for( USHORT i = 0; i < rPolyPolygon.Count(); i ++ ) {
+    for( sal_uInt16 i = 0; i < rPolyPolygon.Count(); i ++ ) {
 
         const Polygon& rPoly = rPolyPolygon[ i ];
         Rectangle aRect( rPoly.GetBoundRect() );
-        sal_Bool bBezier = FALSE;
+        sal_Bool bBezier = sal_False;
 
         mpFS->startElementNS( XML_a, XML_path,
                               XML_w, I64S( aRect.GetWidth() ),
@@ -1264,13 +1306,13 @@ void DrawingML::WritePolyPolygon( const 
             mpFS->endElementNS( XML_a, XML_moveTo );
         }
 
-        for( USHORT j = 1; j < rPoly.GetSize(); j ++ )
+        for( sal_uInt16 j = 1; j < rPoly.GetSize(); j ++ )
         {
             enum PolyFlags flags = rPoly.GetFlags(j);
             if( flags == POLY_CONTROL && !bBezier )
             {
                 mpFS->startElementNS( XML_a, XML_cubicBezTo, FSEND );
-                bBezier = TRUE;
+                bBezier = sal_True;
             }
             else if( flags == POLY_NORMAL && !bBezier )
                 mpFS->startElementNS( XML_a, XML_lnTo, FSEND );
@@ -1283,7 +1325,7 @@ void DrawingML::WritePolyPolygon( const 
             if( ( flags == POLY_NORMAL || flags == POLY_SYMMTR ) && bBezier )
             {
                 mpFS->endElementNS( XML_a, XML_cubicBezTo );
-                bBezier = FALSE;
+                bBezier = sal_False;
             }
             else if( flags == POLY_NORMAL && !bBezier )
                 mpFS->endElementNS( XML_a, XML_lnTo );
@@ -1323,11 +1365,11 @@ void DrawingML::WriteConnectorConnection
 {
     mpFS->singleElementNS( XML_a, XML_stCxn,
                            XML_id, I32S( nStartID ),
-                           XML_idx, I64S( rConnectorEntry.GetConnectorRule( TRUE ) ),
+                           XML_idx, I64S( rConnectorEntry.GetConnectorRule( sal_True ) ),
                            FSEND );
     mpFS->singleElementNS( XML_a, XML_endCxn,
                            XML_id, I32S( nEndID ),
-                           XML_idx, I64S( rConnectorEntry.GetConnectorRule( FALSE ) ),
+                           XML_idx, I64S( rConnectorEntry.GetConnectorRule( sal_False ) ),
                            FSEND );
 }
 

Modified: openoffice/branches/ooxml/main/oox/source/export/makefile.mk
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/oox/source/export/makefile.mk?rev=1572819&r1=1572818&r2=1572819&view=diff
==============================================================================
--- openoffice/branches/ooxml/main/oox/source/export/makefile.mk (original)
+++ openoffice/branches/ooxml/main/oox/source/export/makefile.mk Fri Feb 28 04:44:42 2014
@@ -36,8 +36,8 @@ ENABLE_EXCEPTIONS=TRUE
 SLOFILES =	\
 		$(SLO)$/drawingml.obj \
 		$(SLO)$/shapes.obj \
-		$(SLO)$/vmlexport.obj \
-		$(SLO)$/vmlexport-shape-types.obj
+		$(SLO)$/vmlexport.obj 
+#		$(SLO)$/vmlexport-shape-types.obj
 
 # --- Targets -------------------------------------------------------
 

Modified: openoffice/branches/ooxml/main/oox/source/export/shapes.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/oox/source/export/shapes.cxx?rev=1572819&r1=1572818&r2=1572819&view=diff
==============================================================================
--- openoffice/branches/ooxml/main/oox/source/export/shapes.cxx (original)
+++ openoffice/branches/ooxml/main/oox/source/export/shapes.cxx Fri Feb 28 04:44:42 2014
@@ -19,8 +19,6 @@
  * 
  *************************************************************/
 
-
-
 #include "oox/core/xmlfilterbase.hxx"
 #include "oox/export/shapes.hxx"
 #include "oox/export/utils.hxx"
@@ -61,10 +59,13 @@
 #include <rtl/strbuf.hxx>
 #include <sfx2/app.hxx>
 #include <svl/languageoptions.hxx>
-#include <svx/escherex.hxx>
+#include <filter/msfilter/escherex.hxx>
+#include <editeng/svxenum.hxx>
 #include <svx/svdoashp.hxx>
-#include <svx/svxenum.hxx>
 #include <svx/unoapi.hxx>
+#include "oox/token/tokens.hxx"
+
+#include <hash_map>
 
 using namespace ::com::sun::star;
 using namespace ::com::sun::star::uno;
@@ -89,6 +90,8 @@ using ::rtl::OStringBuffer;
 using ::rtl::OUString;
 using ::rtl::OUStringBuffer;
 using ::sax_fastparser::FSHelperPtr;
+using ::oox::core::XmlFilterBase;
+using ::std::hash_map;
 
 DBG(extern void dump_pset(Reference< XPropertySet > rXPropSet));
 
@@ -306,8 +309,24 @@ static const CustomShapeTypeTranslationT
     { "mso-spt201", "hostControl" },
     { "mso-spt202", "rect" }
 };
+//zhaosz_xml
+struct ShapeHash
+{
+    size_t operator()( const char* s ) const
+    {
+        return rtl_str_hashCode(s);
+    }
+};
 
-typedef std::hash_map< const char*, const char*, CStringHash, CStringEqual> CustomShapeTypeTranslationHashMap;
+struct ShapeCheck
+{
+    bool operator()( const char* s1, const char* s2 ) const
+    {
+        return strcmp( s1, s2 ) == 0;
+    }
+};
+
+typedef hash_map< const char*, const char*, rtl::CStringHash, rtl::CStringEqual> CustomShapeTypeTranslationHashMap;
 static CustomShapeTypeTranslationHashMap* pCustomShapeTypeTranslationHashMap = NULL;
 
 static const char* lcl_GetPresetGeometry( const char* sShapeType )
@@ -344,14 +363,16 @@ namespace oox { namespace drawingml {
     if ( GETA(propName) ) \
         mAny >>= variable;
 
-ShapeExport::ShapeExport( sal_Int32 nXmlNamespace, FSHelperPtr pFS, ::oox::core::XmlFilterBase* pFB, DocumentType eDocumentType )
+ShapeExport::ShapeExport( sal_Int32 nXmlNamespace, FSHelperPtr pFS,
+	ShapeHashMap* pShapeMap, XmlFilterBase* pFB, DocumentType eDocumentType )
     : DrawingML( pFS, pFB, eDocumentType )
-    , mnXmlNamespace( nXmlNamespace )
     , mnShapeIdMax( 1 )
     , mnPictureIdMax( 1 )
+    , mnXmlNamespace( nXmlNamespace )
     , maFraction( 1, 576 )
     , maMapModeSrc( MAP_100TH_MM )
     , maMapModeDest( MAP_INCH, Point(), maFraction, maFraction )
+    , mpShapeMap( pShapeMap ? pShapeMap : &maShapeMap )
 {
 }
 
@@ -430,12 +451,12 @@ ShapeExport& ShapeExport::WriteBezierSha
 
 ShapeExport& ShapeExport::WriteClosedBezierShape( Reference< XShape > xShape )
 {
-    return WriteBezierShape( xShape, TRUE );
+    return WriteBezierShape( xShape, sal_True );
 }
 
 ShapeExport& ShapeExport::WriteOpenBezierShape( Reference< XShape > xShape )
 {
-    return WriteBezierShape( xShape, FALSE );
+    return WriteBezierShape( xShape, sal_False );
 }
 
 ShapeExport& ShapeExport::WriteCustomShape( Reference< XShape > xShape )
@@ -445,7 +466,7 @@ ShapeExport& ShapeExport::WriteCustomSha
     Reference< XPropertySet > rXPropSet( xShape, UNO_QUERY );
     SdrObjCustomShape* pShape = (SdrObjCustomShape*) GetSdrObjectFromXShape( xShape );
     sal_Bool bIsDefaultObject = EscherPropertyContainer::IsDefaultObject( pShape );
-    sal_Bool bPredefinedHandlesUsed = TRUE;
+    sal_Bool bPredefinedHandlesUsed = sal_True;
     OUString sShapeType;
     sal_uInt32 nMirrorFlags = 0;
     MSO_SPT eShapeType = EscherPropertyContainer::GetCustomShapeType( xShape, nMirrorFlags, sShapeType );
@@ -468,7 +489,7 @@ ShapeExport& ShapeExport::WriteCustomSha
                     nAdjustmentValuesIndex = i;
                 else if( rProp.Name.equalsAscii( "Handles" )) {
                     if( !bIsDefaultObject )
-                        bPredefinedHandlesUsed = FALSE;
+                        bPredefinedHandlesUsed = sal_False;
                     // TODO: update nAdjustmentsWhichNeedsToBeConverted here
                 }
             }
@@ -702,13 +723,13 @@ ShapeExport& ShapeExport::WriteConnector
 
     Rectangle aRect( Point( aStartPoint.X, aStartPoint.Y ), Point( aEndPoint.X, aEndPoint.Y ) );
     if( aRect.getWidth() < 0 ) {
-        bFlipH = TRUE;
+        bFlipH = sal_True;
         aRect.setX( aEndPoint.X );
         aRect.setWidth( aStartPoint.X - aEndPoint.X );
     }
 
     if( aRect.getHeight() < 0 ) {
-        bFlipV = TRUE;
+        bFlipV = sal_True;
         aRect.setY( aEndPoint.Y );
         aRect.setHeight( aStartPoint.Y - aEndPoint.Y );
     }
@@ -861,7 +882,7 @@ ShapeExport& ShapeExport::WriteRectangle
 }
 
 typedef ShapeExport& (ShapeExport::*ShapeConverter)( Reference< XShape > );
-typedef std::hash_map< const char*, ShapeConverter, CStringHash, CStringEqual> NameToConvertMapType;
+typedef std::hash_map< const char*, ShapeConverter, ShapeHash, ShapeCheck> NameToConvertMapType;
 
 static const NameToConvertMapType& lcl_GetConverters()
 {

Modified: openoffice/branches/ooxml/main/oox/source/export/vmlexport.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/oox/source/export/vmlexport.cxx?rev=1572819&r1=1572818&r2=1572819&view=diff
==============================================================================
--- openoffice/branches/ooxml/main/oox/source/export/vmlexport.cxx (original)
+++ openoffice/branches/ooxml/main/oox/source/export/vmlexport.cxx Fri Feb 28 04:44:42 2014
@@ -19,11 +19,10 @@
  * 
  *************************************************************/
 
-
-
 #include <oox/export/vmlexport.hxx>
 
-#include <tokens.hxx>
+//#include <tokens.hxx>
+#include "oox/token/tokens.hxx"
 
 #include <rtl/strbuf.hxx>
 #include <rtl/ustring.hxx>
@@ -60,7 +59,9 @@ public:
 };
 
 VMLExport::VMLExport( ::sax_fastparser::FSHelperPtr pSerializer )
-    : EscherEx( *( new SvNullStream ), 0 ),
+    //: EscherEx( *( new SvNullStream ), 0 ),
+    //zhaosz_xml
+    : EscherEx( EscherExGlobalRef(new EscherExGlobal(0)), *( new SvNullStream ) ),
       m_pSerializer( pSerializer ),
       m_pShapeAttrList( NULL ),
       m_nShapeType( ESCHER_ShpInst_Nil ),
@@ -78,7 +79,7 @@ VMLExport::~VMLExport()
     delete[] m_pShapeTypeWritten, m_pShapeTypeWritten = NULL;
 }
 
-void VMLExport::OpenContainer( UINT16 nEscherContainer, int nRecInstance )
+void VMLExport::OpenContainer( sal_Int16 nEscherContainer, int nRecInstance )
 {
     EscherEx::OpenContainer( nEscherContainer, nRecInstance );
 
@@ -122,9 +123,9 @@ void VMLExport::CloseContainer()
     EscherEx::CloseContainer();
 }
 
-UINT32 VMLExport::EnterGroup( const String& rShapeName, const Rectangle* pRect )
+sal_uInt32 VMLExport::EnterGroup( const String& rShapeName, const Rectangle* pRect )
 {
-    UINT32 nShapeId = GetShapeID();
+    sal_Int32 nShapeId = GenerateShapeId();//zhaosz_xml,just function replacing 
 
     OStringBuffer aStyle( 200 );
     FastAttributeList *pAttrList = m_pSerializer->createAttrList();
@@ -167,7 +168,7 @@ void VMLExport::LeaveGroup()
     m_pSerializer->endElementNS( XML_v, XML_group );
 }
 
-void VMLExport::AddShape( UINT32 nShapeType, UINT32 nShapeFlags, UINT32 nShapeId )
+void VMLExport::AddShape( sal_Int32 nShapeType, sal_Int32 nShapeFlags, sal_Int32 nShapeId )
 {
     m_nShapeType = nShapeType;
     m_nShapeFlags = nShapeFlags;
@@ -771,6 +772,7 @@ sal_Int32 VMLExport::StartShape()
     // some of the shapes have their own name ;-)
     sal_Int32 nShapeElement = -1;
     bool bReferToShapeType = false;
+/* clarence_guo temporarily comment for enable build
     switch ( m_nShapeType )
     {
         case ESCHER_ShpInst_NotPrimitive:   nShapeElement = XML_shape;     break;
@@ -819,7 +821,7 @@ sal_Int32 VMLExport::StartShape()
         // start of the shape
         m_pSerializer->startElementNS( XML_v, nShapeElement, XFastAttributeListRef( m_pShapeAttrList ) );
     }
-
+*/
     return nShapeElement;
 }
 

Modified: openoffice/branches/ooxml/main/oox/source/ppt/pptimport.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/oox/source/ppt/pptimport.cxx?rev=1572819&r1=1572818&r2=1572819&view=diff
==============================================================================
--- openoffice/branches/ooxml/main/oox/source/ppt/pptimport.cxx (original)
+++ openoffice/branches/ooxml/main/oox/source/ppt/pptimport.cxx Fri Feb 28 04:44:42 2014
@@ -19,8 +19,6 @@
  * 
  *************************************************************/
 
-
-
 #include "oox/ppt/pptimport.hxx"
 #include "oox/drawingml/chart/chartconverter.hxx"
 #include "oox/dump/pptxdumper.hxx"
@@ -29,6 +27,7 @@
 #include "oox/ole/vbaproject.hxx"
 
 using ::rtl::OUString;
+using ::com::sun::star::lang::XComponent;
 using namespace ::com::sun::star;
 using namespace ::com::sun::star::uno;
 using namespace ::com::sun::star::xml::sax;
@@ -64,6 +63,32 @@ PowerPointImport::~PowerPointImport()
 {
 }
 
+sal_Bool SAL_CALL PowerPointImport::filter( const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& rDescriptor ) throw( ::com::sun::star::uno::RuntimeException )
+{
+     if ( XmlFilterBase::filter( rDescriptor ) )
+         return true;
+ 
+     if ( isExportFilter() )
+     {
+         Reference< XExporter > xExporter( getServiceFactory()->createInstance( CREATE_OUSTRING( "com.sun.star.comp.Impress.OOXMLExporter" ) ), UNO_QUERY );
+ 
+         if ( xExporter.is() )
+         {
+             Reference< XComponent > xDocument( getModel(), UNO_QUERY );
+             Reference< XFilter > xFilter( xExporter, UNO_QUERY );
+ 
+             if ( xFilter.is() )
+             {
+                 xExporter->setSourceDocument( xDocument );
+                 if ( xFilter->filter( rDescriptor ) )
+                     return true;
+             }
+         }
+     }
+ 
+     return false;
+}
+
 bool PowerPointImport::importDocument() throw()
 {
     /*  to activate the PPTX dumper, define the environment variable
@@ -75,8 +100,6 @@ bool PowerPointImport::importDocument() 
 	FragmentHandlerRef xPresentationFragmentHandler( new PresentationFragmentHandler( *this, aFragmentPath ) );
     maTableStyleListPath = xPresentationFragmentHandler->getFragmentPathFromFirstType( CREATE_OFFICEDOC_RELATION_TYPE( "tableStyles" ) );
     return importFragment( xPresentationFragmentHandler );
-
-
 }
 
 bool PowerPointImport::exportDocument() throw()

Modified: openoffice/branches/ooxml/main/oox/source/xls/excelfilter.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/oox/source/xls/excelfilter.cxx?rev=1572819&r1=1572818&r2=1572819&view=diff
==============================================================================
--- openoffice/branches/ooxml/main/oox/source/xls/excelfilter.cxx (original)
+++ openoffice/branches/ooxml/main/oox/source/xls/excelfilter.cxx Fri Feb 28 04:44:42 2014
@@ -19,8 +19,6 @@
  * 
  *************************************************************/
 
-
-
 #include "oox/xls/excelfilter.hxx"
 
 #include <com/sun/star/sheet/XSpreadsheetDocument.hpp>
@@ -47,6 +45,8 @@ using namespace ::com::sun::star::xml::s
 using namespace ::oox::core;
 
 using ::rtl::OUString;
+using ::com::sun::star::uno::UNO_QUERY;
+using ::com::sun::star::lang::XComponent;
 using ::oox::drawingml::table::TableStyleListPtr;
 
 // ============================================================================
@@ -109,6 +109,33 @@ ExcelFilter::~ExcelFilter()
 {
 }
 
+sal_Bool SAL_CALL ExcelFilter::filter( const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& rDescriptor ) throw( ::com::sun::star::uno::RuntimeException )
+{
+    if ( XmlFilterBase::filter( rDescriptor ) )
+        return true;
+ 
+    if ( isExportFilter() )
+    {
+        const Reference< XMultiServiceFactory > xFactory = getServiceFactory();
+        Reference< XExporter > xExporter( xFactory->createInstance( CREATE_OUSTRING( "com.sun.star.comp.Calc.OOXMLExporter" ) ), UNO_QUERY );
+ 
+        if ( xExporter.is() )
+        {
+            Reference< XFilter > xFilter( xExporter, UNO_QUERY );
+ 
+            if ( xFilter.is() )
+            {
+                Reference< XComponent > xDocument( getModel(), UNO_QUERY );
+                xExporter->setSourceDocument( xDocument );
+                if ( xFilter->filter( rDescriptor ) )
+                    return true;
+            }
+        }
+    }
+ 
+    return false;
+}
+
 bool ExcelFilter::importDocument() throw()
 {
     /*  To activate the XLSX/XLSB dumper, insert the full path to the file

Modified: openoffice/branches/ooxml/main/oox/source/xls/stylesbuffer.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/oox/source/xls/stylesbuffer.cxx?rev=1572819&r1=1572818&r2=1572819&view=diff
==============================================================================
--- openoffice/branches/ooxml/main/oox/source/xls/stylesbuffer.cxx (original)
+++ openoffice/branches/ooxml/main/oox/source/xls/stylesbuffer.cxx Fri Feb 28 04:44:42 2014
@@ -19,8 +19,6 @@
  * 
  *************************************************************/
 
-
-
 #include "oox/xls/stylesbuffer.hxx"
 
 #include <com/sun/star/awt/FontDescriptor.hpp>
@@ -2765,7 +2763,7 @@ OUString lclGetBuiltinStyleName( sal_Int
     else
         aStyleName.append( nBuiltinId );
     if( (nBuiltinId == OOX_STYLE_ROWLEVEL) || (nBuiltinId == OOX_STYLE_COLLEVEL) )
-        aStyleName.append( nLevel );
+        aStyleName.append( nLevel + 1 );
     return aStyleName.makeStringAndClear();
 }
 

Modified: openoffice/branches/ooxml/main/oox/util/makefile.mk
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/oox/util/makefile.mk?rev=1572819&r1=1572818&r2=1572819&view=diff
==============================================================================
--- openoffice/branches/ooxml/main/oox/util/makefile.mk (original)
+++ openoffice/branches/ooxml/main/oox/util/makefile.mk Fri Feb 28 04:44:42 2014
@@ -49,7 +49,8 @@ LIB1FILES=	\
     $(SLB)$/table.lib\
     $(SLB)$/shape.lib\
     $(SLB)$/dump.lib\
-    $(SLB)$/docprop.lib
+    $(SLB)$/docprop.lib\
+    $(SLB)$/export.lib
 
 # --- Shared-Library -----------------------------------------------
 
@@ -62,9 +63,17 @@ SHL1STDLIBS= \
 		$(CPPUHELPERLIB)\
 		$(COMPHELPERLIB)\
 		$(RTLLIB)		\
+		$(TOOLSLIB) \
 		$(SALLIB)		\
 		$(BASEGFXLIB)	\
+		$(VCLLIB) \
 		$(SAXLIB)       \
+		$(MSFILTERLIB)	\
+		$(SVTOOLLIB)	\
+		$(SVXLIB)  \
+		$(SVXCORELIB)  \
+		$(UNOTOOLSLIB)	\
+		$(SVLLIB) \
         $(XMLSCRIPTLIB)
 
 # link openssl, copied this bit from ucb/source/ucp/webdav/makefile.mk
@@ -95,6 +104,6 @@ ALLTAR : $(MISC)/oox.component
 
 $(MISC)/oox.component .ERRREMOVE : $(SOLARENV)/bin/createcomponent.xslt \
         oox.component
-    $(XSLTPROC) --nonet --stringparam uri \
+        $(XSLTPROC) --nonet --stringparam uri \
         '$(COMPONENTPREFIX_BASIS_NATIVE)$(SHL1TARGETN:f)' -o $@ \
         $(SOLARENV)/bin/createcomponent.xslt oox.component

Modified: openoffice/branches/ooxml/main/postprocess/packcomponents/makefile.mk
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/postprocess/packcomponents/makefile.mk?rev=1572819&r1=1572818&r2=1572819&view=diff
==============================================================================
--- openoffice/branches/ooxml/main/postprocess/packcomponents/makefile.mk (original)
+++ openoffice/branches/ooxml/main/postprocess/packcomponents/makefile.mk Fri Feb 28 04:44:42 2014
@@ -19,8 +19,6 @@
 #  
 #**************************************************************
 
-
-
 PRJ = ..
 PRJNAME = postprocess
 TARGET = packcomponents
@@ -153,12 +151,14 @@ my_components = \
     sb \
     sc \
     scd \
+    scfilt \
     scn \
     scriptframe \
     sd \
     sdbc2 \
     sdbt \
     sdd \
+    sdfilt \
     simplecanvas \
     slideshow \
     sm \

Modified: openoffice/branches/ooxml/main/sc/inc/compiler.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/sc/inc/compiler.hxx?rev=1572819&r1=1572818&r2=1572819&view=diff
==============================================================================
--- openoffice/branches/ooxml/main/sc/inc/compiler.hxx (original)
+++ openoffice/branches/ooxml/main/sc/inc/compiler.hxx Fri Feb 28 04:44:42 2014
@@ -320,6 +320,7 @@ private:
     bool        mbCloseBrackets;            // whether to close open brackets automatically, default TRUE
     bool        mbExtendedErrorDetection;
     bool        mbRewind;                   // whether symbol is to be rewound to some step during lexical analysis
+    LanguageType mnLang;
 
     sal_Bool   NextNewToken(bool bInArray = false);
 
@@ -351,6 +352,7 @@ public:
     ScCompiler( ScDocument* pDocument, const ScAddress&,ScTokenArray& rArr);
 
 public:
+    void SetUILang(LanguageType nLang) {mnLang = nLang;}
     static void DeInit();               /// all
 
     // for ScAddress::Format()
@@ -530,6 +532,7 @@ private:
     virtual void CreateStringFromMatrix( rtl::OUStringBuffer& rBuffer, formula::FormulaToken* _pTokenP);
     virtual void CreateStringFromIndex(rtl::OUStringBuffer& rBuffer,formula::FormulaToken* _pTokenP);
     virtual void LocalizeString( String& rName );	// modify rName - input: exact name
+    virtual void LoadExcelString(String& rName);
     virtual sal_Bool IsImportingXML() const;
 
     /// Access the CharTable flags

Modified: openoffice/branches/ooxml/main/sc/inc/drwlayer.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/sc/inc/drwlayer.hxx?rev=1572819&r1=1572818&r2=1572819&view=diff
==============================================================================
--- openoffice/branches/ooxml/main/sc/inc/drwlayer.hxx (original)
+++ openoffice/branches/ooxml/main/sc/inc/drwlayer.hxx Fri Feb 28 04:44:42 2014
@@ -208,6 +208,7 @@ public:
 	// Verankerung setzen und ermitteln
 	static void		SetAnchor( SdrObject*, ScAnchorType );
 	static ScAnchorType	GetAnchor( const SdrObject* );
+	static ScAnchorType GetAnchorType( const SdrObject& );
 
 	// Positionen fuer Detektivlinien
 	static ScDrawObjData* GetObjData( SdrObject* pObj, sal_Bool bCreate=sal_False );

Modified: openoffice/branches/ooxml/main/sc/prj/d.lst
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/sc/prj/d.lst?rev=1572819&r1=1572818&r2=1572819&view=diff
==============================================================================
--- openoffice/branches/ooxml/main/sc/prj/d.lst (original)
+++ openoffice/branches/ooxml/main/sc/prj/d.lst Fri Feb 28 04:44:42 2014
@@ -34,4 +34,5 @@ mkdir: %_DEST%\xml%_EXT%\uiconfig\module
 ..\%__SRC%\bin\*-layout.zip %_DEST%\pck%_EXT%\*.*
 ..\%__SRC%\misc\sc.component %_DEST%\xml%_EXT%\sc.component
 ..\%__SRC%\misc\scd.component %_DEST%\xml%_EXT%\scd.component
+..\%__SRC%\misc\scfilt.component %_DEST%\xml%_EXT%\scfilt.component
 ..\%__SRC%\misc\vbaobj.component %_DEST%\xml%_EXT%\vbaobj.component

Modified: openoffice/branches/ooxml/main/sc/source/core/data/drwlayer.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/sc/source/core/data/drwlayer.cxx?rev=1572819&r1=1572818&r2=1572819&view=diff
==============================================================================
--- openoffice/branches/ooxml/main/sc/source/core/data/drwlayer.cxx (original)
+++ openoffice/branches/ooxml/main/sc/source/core/data/drwlayer.cxx Fri Feb 28 04:44:42 2014
@@ -1892,6 +1892,13 @@ ScAnchorType ScDrawLayer::GetAnchor( con
 	return ( aAnchor.Y() != 0 ) ? SCA_PAGE : SCA_CELL;
 }
 
+ScAnchorType ScDrawLayer::GetAnchorType( const SdrObject &rObj )
+{
+    //If this object has a cell anchor associated with it
+    //then its cell-anchored, otherwise its page-anchored
+    return ScDrawLayer::GetObjData(const_cast<SdrObject*>(&rObj)) ? SCA_CELL : SCA_PAGE;
+}
+
 ScDrawObjData* ScDrawLayer::GetObjData( SdrObject* pObj, sal_Bool bCreate )		// static
 {
 	sal_uInt16 nCount = pObj ? pObj->GetUserDataCount() : 0;

Modified: openoffice/branches/ooxml/main/sc/source/core/tool/compiler.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/sc/source/core/tool/compiler.cxx?rev=1572819&r1=1572818&r2=1572819&view=diff
==============================================================================
--- openoffice/branches/ooxml/main/sc/source/core/tool/compiler.cxx (original)
+++ openoffice/branches/ooxml/main/sc/source/core/tool/compiler.cxx Fri Feb 28 04:44:42 2014
@@ -1792,13 +1792,14 @@ ScCompiler::ScCompiler( ScDocument* pDoc
         pDoc( pDocument ),
         aPos( rPos ),
         pCharClass( ScGlobal::pCharClass ),
-        mnPredetectedReference(0),
-        mnRangeOpPosInSymbol(-1),
+        mnPredetectedReference( 0 ),
+        mnRangeOpPosInSymbol( -1 ),
         pConv( pConvOOO_A1 ),
         meEncodeUrlMode( ENCODE_BY_GRAMMAR ),
         mbCloseBrackets( true ),
         mbExtendedErrorDetection( false ),
-        mbRewind( false )
+        mbRewind( false ),
+        mnLang( LANGUAGE_SYSTEM )
 {
     nMaxTab = pDoc ? pDoc->GetTableCount() - 1 : 0;
 }
@@ -1814,7 +1815,8 @@ ScCompiler::ScCompiler( ScDocument* pDoc
         meEncodeUrlMode( ENCODE_BY_GRAMMAR ),
         mbCloseBrackets( true ),
         mbExtendedErrorDetection( false ),
-        mbRewind( false )
+        mbRewind( false ),
+        mnLang( LANGUAGE_SYSTEM )
 {
     nMaxTab = pDoc ? pDoc->GetTableCount() - 1 : 0;
 }
@@ -5183,6 +5185,12 @@ void ScCompiler::LocalizeString( String&
 {
     ScGlobal::GetAddInCollection()->LocalizeString( rName );
 }
+
+void ScCompiler::LoadExcelString(String& rName)
+{
+    ScGlobal::GetAddInCollection()->GetExcelName( rName, mnLang, rName );
+}
+
 // -----------------------------------------------------------------------------
 sal_Bool ScCompiler::IsImportingXML() const
 {

Modified: openoffice/branches/ooxml/main/sc/source/filter/excel/excdoc.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ooxml/main/sc/source/filter/excel/excdoc.cxx?rev=1572819&r1=1572818&r2=1572819&view=diff
==============================================================================
--- openoffice/branches/ooxml/main/sc/source/filter/excel/excdoc.cxx (original)
+++ openoffice/branches/ooxml/main/sc/source/filter/excel/excdoc.cxx Fri Feb 28 04:44:42 2014
@@ -19,12 +19,9 @@
  * 
  *************************************************************/
 
-
-
 // MARKER(update_precomp.py): autogen include statement, do not remove
 #include "precompiled_sc.hxx"
 
-
 //------------------------------------------------------------------------
 
 #include "scitems.hxx"
@@ -80,6 +77,11 @@
 
 #include <math.h>
 
+#include <com/sun/star/document/XDocumentProperties.hpp>
+#include <com/sun/star/document/XDocumentPropertiesSupplier.hpp>
+
+#include <com/sun/star/document/XDocumentProperties.hpp>
+#include <com/sun/star/document/XDocumentPropertiesSupplier.hpp>
 using namespace ::oox;
 using ::rtl::OString;
 
@@ -403,8 +405,9 @@ void ExcTable::FillAsHeader( ExcBoundshe
 
         Add( new XclExpRecalcId );
 
-		// MSODRAWINGGROUP per-document data
-        aRecList.AppendRecord( GetObjectManager().CreateDrawingGroup() );
+        // MSODRAWINGGROUP per-document data
+        if( GetOutput() == EXC_OUTPUT_BINARY )
+            aRecList.AppendRecord( GetObjectManager().CreateDrawingGroup() );
         // Shared string table: SST, EXTSST
         aRecList.AppendRecord( CreateRecord( EXC_ID_SST ) );
 
@@ -427,7 +430,7 @@ void ExcTable::FillAsTable( SCTAB nCodeN
     DBG_ASSERT( nExcTab <= static_cast<sal_uInt16>(MAXTAB), "-ExcTable::Table(): nExcTab - no ordinary table!" );
 
     // create a new OBJ list for this sheet (may be used by notes, autofilter, data validation)
-    if( eBiff == EXC_BIFF8 )
+    if( eBiff == EXC_BIFF8 && ( GetOutput() == EXC_OUTPUT_BINARY || GetOutput() == EXC_OUTPUT_XML_2007 ) )
         GetObjectManager().StartSheet();
 
     // cell table: DEFROWHEIGHT, DEFCOLWIDTH, COLINFO, DIMENSIONS, ROW, cell records
@@ -439,7 +442,6 @@ void ExcTable::FillAsTable( SCTAB nCodeN
         return;
     }
 
-
     // WSBOOL needs data from page settings, create it here, add it later
     ScfRef< XclExpPageSettings > xPageSett( new XclExpPageSettings( GetRoot() ) );
     bool bFitToPages = xPageSett->GetPageData().mbFitToPages;
@@ -630,6 +632,9 @@ void ExcTable::FillAsXmlTable( SCTAB nCo
         }
     }
 
+	if (GetOutput() == EXC_OUTPUT_XML_2007 )//call mxObjList->EndSheet();
+		   aRecList.AppendRecord( GetObjectManager().ProcessDrawing( GetSdrPage( mnScTab ) ) );
+
     // EOF
     Add( new ExcEof );
 }
@@ -737,15 +742,15 @@ void ExcDocument::ReadDoc( void )
         xTab->FillAsEmptyTable( nCodeNameIdx );
     }
 
-    if ( GetBiff() == EXC_BIFF8 )
-	{
-		// complete temporary Escher stream
+    if ( GetOutput() == EXC_OUTPUT_BINARY && GetBiff() == EXC_BIFF8 )
+    {
+        // complete temporary Escher stream
         GetObjectManager().EndDocument();
 
-		// change tracking
+        // change tracking
         if ( GetDoc().GetChangeTrack() )
             pExpChangeTrack = new XclExpChangeTrack( GetRoot() );
-	}
+    }
 }
 
 
@@ -780,48 +785,45 @@ void ExcDocument::Write( SvStream& rSvSt
 		pExpChangeTrack->Write();
 }
 
-void ExcDocument::WriteXml( SvStream& rStrm )
+void ExcDocument::WriteXml( XclExpXmlStream& rStrm )
 {
+    SfxObjectShell* pDocShell = GetDocShell();
+
+    using namespace ::com::sun::star;
+    uno::Reference<document::XDocumentPropertiesSupplier> xDPS( pDocShell->GetModel(), uno::UNO_QUERY_THROW );
+    uno::Reference<document::XDocumentProperties> xDocProps = xDPS->getDocumentProperties();
+
+    rStrm.exportDocumentProperties( xDocProps );
+
+    sax_fastparser::FSHelperPtr& rWorkbook = rStrm.GetCurrentStream();
+    rWorkbook->startElement( XML_workbook,
+            XML_xmlns, "http://schemas.openxmlformats.org/spreadsheetml/2006/main",
+            FSNS(XML_xmlns, XML_r), "http://schemas.openxmlformats.org/officeDocument/2006/relationships",
+            FSEND );
+    rWorkbook->singleElement( XML_fileVersion,
+            XML_appName, "Calc",
+            // OOXTODO: XML_codeName
+            // OOXTODO: XML_lastEdited
+            // OOXTODO: XML_lowestEdited
+            // OOXTODO: XML_rupBuild
+            FSEND );
+
     if( !maTableList.IsEmpty() )
     {
         InitializeSave();
 
-        XclExpXmlStream aStrm( ::comphelper::getProcessComponentContext(), rStrm, GetRoot() );
-
-        sax_fastparser::FSHelperPtr& rWorkbook = aStrm.GetCurrentStream();
-        rWorkbook->startElement( XML_workbook,
-                XML_xmlns, "http://schemas.openxmlformats.org/spreadsheetml/2006/main",
-                FSNS(XML_xmlns, XML_r), "http://schemas.openxmlformats.org/officeDocument/2006/relationships",
-                FSEND );
-        rWorkbook->singleElement( XML_fileVersion,
-                XML_appName, "Calc",
-                // OOXTODO: XML_codeName
-                // OOXTODO: XML_lastEdited
-                // OOXTODO: XML_lowestEdited
-                // OOXTODO: XML_rupBuild
-                FSEND );
-
-        aHeader.WriteXml( aStrm );
+        aHeader.WriteXml( rStrm );
 
         for( size_t nTab = 0, nTabCount = maTableList.GetSize(); nTab < nTabCount; ++nTab )
         {
-            // set current stream position in BOUNDSHEET record
-#if 0
-            ExcBoundsheetRef xBoundsheet = maBoundsheetList.GetRecord( nTab );
-            if( xBoundsheet.get() )
-                xBoundsheet->SetStreamPos( aXclStrm.GetSvStreamPos() );
-#endif
             // write the table
-            maTableList.GetRecord( nTab )->WriteXml( aStrm );
+            maTableList.GetRecord( nTab )->WriteXml( rStrm );
         }
-
-        rWorkbook->endElement( XML_workbook );
-        rWorkbook.reset();
-        aStrm.commitStorage();
     }
-#if 0
-    if( pExpChangeTrack )
-        pExpChangeTrack->WriteXml();
-#endif
+
+    rWorkbook->endElement( XML_workbook );
+    rWorkbook.reset();
+
+    rStrm.commitStorage();
 }