summaryrefslogtreecommitdiff
path: root/sw/source/filter/xml/xmltexte.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sw/source/filter/xml/xmltexte.cxx')
-rw-r--r--sw/source/filter/xml/xmltexte.cxx250
1 files changed, 250 insertions, 0 deletions
diff --git a/sw/source/filter/xml/xmltexte.cxx b/sw/source/filter/xml/xmltexte.cxx
new file mode 100644
index 000000000000..ce221829ea1b
--- /dev/null
+++ b/sw/source/filter/xml/xmltexte.cxx
@@ -0,0 +1,250 @@
+/*************************************************************************
+ *
+ * $RCSfile: xmltexte.cxx,v $
+ *
+ * $Revision: 1.1 $
+ *
+ * last change: $Author: mib $ $Date: 2001-01-03 11:41:33 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (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.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _IPOBJ_HXX
+#include <so3/ipobj.hxx>
+#endif
+
+#ifndef _XMLOFF_FAMILIES_HXX_
+#include <xmloff/families.hxx>
+#endif
+#ifndef _XMLOFF_XMLNMSPE_HXX
+#include <xmloff/xmlnmspe.hxx>
+#endif
+#ifndef _XMLOFF_XMLKYWD_HXX
+#include <xmloff/xmlkywd.hxx>
+#endif
+
+#ifndef _DOC_HXX //autogen wg. SwDoc
+#include <doc.hxx>
+#endif
+#ifndef _NDOLE_HXX
+#include <ndole.hxx>
+#endif
+#ifndef _UNOSTYLE_HXX
+#include <unostyle.hxx>
+#endif
+#ifndef _UNOFRAME_HXX
+#include <unoframe.hxx>
+#endif
+
+#ifndef _XMLEXP_HXX
+#include "xmlexp.hxx"
+#endif
+#ifndef _XMLTEXTE_HXX
+#include "xmltexte.hxx"
+#endif
+
+using namespace ::rtl;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::style;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::lang;
+
+// ---------------------------------------------------------------------
+
+SwNoTxtNode *SwXMLTextParagraphExport::GetNoTxtNode(
+ const Reference < XPropertySet >& rPropSet ) const
+{
+ Reference<XUnoTunnel> xCrsrTunnel( rPropSet, UNO_QUERY );
+ ASSERT( xCrsrTunnel.is(), "missing XUnoTunnel for embedded" );
+ SwXFrame *pFrame =
+ (SwXFrame *)xCrsrTunnel->getSomething(
+ SwXFrame::getUnoTunnelId() );
+ ASSERT( pFrame, "SwXFrame missing" );
+ SwFrmFmt *pFrmFmt = pFrame->GetFrmFmt();
+ const SwFmtCntnt& rCntnt = pFrmFmt->GetCntnt();
+ const SwNodeIndex *pNdIdx = rCntnt.GetCntntIdx();
+ return pNdIdx->GetNodes()[pNdIdx->GetIndex() + 1]->GetNoTxtNode();
+}
+
+void SwXMLTextParagraphExport::exportStyleContent(
+ const Reference< XStyle > & rStyle )
+{
+
+ const SwXStyle* pStyle = 0;
+ Reference<XUnoTunnel> xStyleTunnel( rStyle, UNO_QUERY);
+ if( xStyleTunnel.is() )
+ {
+ pStyle = (SwXStyle*)xStyleTunnel->getSomething(
+ SwXStyle::getUnoTunnelId() );
+ }
+ if( pStyle && SFX_STYLE_FAMILY_PARA == pStyle->GetFamily() )
+ {
+ const SwDoc& rDoc = ((SwXMLExport&)GetExport()).GetDoc();
+ const SwTxtFmtColl *pColl =
+ rDoc.FindTxtFmtCollByName( SwXStyleFamilies::GetUIName( pStyle->GetStyleName(), SFX_STYLE_FAMILY_PARA ) );
+ ASSERT( pColl, "There is the text collection?" );
+ if( pColl && RES_CONDTXTFMTCOLL == pColl->Which() )
+ {
+ const SwFmtCollConditions& rConditions =
+ ((const SwConditionTxtFmtColl *)pColl)->GetCondColls();
+ for( sal_uInt16 i=0; i < rConditions.Count(); i++ )
+ {
+ const SwCollCondition& rCond = *rConditions[i];
+
+ const sal_Char *pFunc = 0;
+ OUStringBuffer sBuffer( 20 );
+ switch( rCond.GetCondition() )
+ {
+ case PARA_IN_LIST:
+ pFunc = sXML_list_level;
+ sBuffer.append( (sal_Int32)(rCond.GetSubCondition()+1) );
+ break;
+ case PARA_IN_OUTLINE:
+ pFunc = sXML_outline_level;
+ sBuffer.append( (sal_Int32)(rCond.GetSubCondition()+1) );
+ break;
+ case PARA_IN_FRAME:
+ pFunc = sXML_text_box;
+ break;
+ case PARA_IN_TABLEHEAD:
+ pFunc = sXML_table_header;
+ break;
+ case PARA_IN_TABLEBODY:
+ pFunc = sXML_table;
+ break;
+ case PARA_IN_SECTION:
+ pFunc = sXML_section;
+ break;
+ case PARA_IN_FOOTENOTE:
+ pFunc = sXML_footnote;
+ break;
+ case PARA_IN_FOOTER:
+ pFunc = sXML_footer;
+ break;
+ case PARA_IN_HEADER:
+ pFunc = sXML_header;
+ break;
+ case PARA_IN_ENDNOTE:
+ pFunc = sXML_endnote;
+ break;
+ }
+ OUString sVal( sBuffer.makeStringAndClear() );
+
+ DBG_ASSERT( pFunc, "SwXMLExport::ExportFmt: unknon condition" );
+ if( pFunc )
+ {
+ sBuffer.appendAscii( pFunc );
+ sBuffer.append( (sal_Unicode)'(' );
+ sBuffer.append( (sal_Unicode)')' );
+ if( sVal.getLength() )
+ {
+ sBuffer.append( (sal_Unicode)'=' );
+ sBuffer.append( sVal );
+ }
+
+ GetExport().AddAttribute( XML_NAMESPACE_STYLE,
+ sXML_condition,
+ sBuffer.makeStringAndClear() );
+ const String& rName =
+ SwXStyleFamilies::GetProgrammaticName(
+ rCond.GetTxtFmtColl()->GetName(),
+ SFX_STYLE_FAMILY_PARA );
+ GetExport().AddAttribute( XML_NAMESPACE_STYLE,
+ sXML_apply_style_name, rName );
+ SvXMLElementExport aElem( GetExport(), XML_NAMESPACE_STYLE,
+ sXML_map, sal_True, sal_True );
+ }
+ }
+ }
+ }
+}
+
+void SwXMLTextParagraphExport::exportTextAutoStyles()
+{
+ XMLTextParagraphExport::exportTextAutoStyles();
+ GetAutoStylePool().exportXML( XML_STYLE_FAMILY_SD_GRAPHICS_ID,
+ GetExport().GetDocHandler(),
+ GetExport().GetMM100UnitConverter(),
+ GetExport().GetNamespaceMap() );
+}
+
+SwXMLTextParagraphExport::SwXMLTextParagraphExport(
+ SwXMLExport& rExp,
+ SvXMLAutoStylePoolP& rAutoStylePool ) :
+ XMLTextParagraphExport( rExp, rAutoStylePool ),
+ sTextTable( RTL_CONSTASCII_USTRINGPARAM( "TextTable" ) )
+{
+}
+
+SwXMLTextParagraphExport::~SwXMLTextParagraphExport()
+{
+}
+
+void SwXMLTextParagraphExport::getTextEmbeddedObjectProperties(
+ const Reference < XPropertySet >& rPropSet,
+ OUString& rStreamName,
+ OUString& rClassId ) const
+{
+ SwOLENode *pOLENd = GetNoTxtNode( rPropSet )->GetOLENode();
+ SwOLEObj& rOLEObj = pOLENd->GetOLEObj();
+
+ rStreamName = rOLEObj.GetName();
+ const SvInPlaceObjectRef& rOLERef = rOLEObj.GetOleRef();
+ rClassId = rOLERef->GetClassName().GetHexName();
+}