diff options
Diffstat (limited to 'sw/source/filter/xml/xmltext.cxx')
-rw-r--r-- | sw/source/filter/xml/xmltext.cxx | 1518 |
1 files changed, 2 insertions, 1516 deletions
diff --git a/sw/source/filter/xml/xmltext.cxx b/sw/source/filter/xml/xmltext.cxx index 5dce75c62c77..5d2706fa59e6 100644 --- a/sw/source/filter/xml/xmltext.cxx +++ b/sw/source/filter/xml/xmltext.cxx @@ -2,9 +2,9 @@ * * $RCSfile: xmltext.cxx,v $ * - * $Revision: 1.3 $ + * $Revision: 1.4 $ * - * last change: $Author: mib $ $Date: 2000-10-18 11:20:44 $ + * last change: $Author: mib $ $Date: 2000-11-07 14:05:53 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -65,784 +65,22 @@ #pragma hdrstop -#include "hintids.hxx" - -#ifndef _RTL_STRBUF_HXX_ -#include <rtl/strbuf.hxx> -#endif -#ifndef _RTL_USTRBUF_HXX_ -#include <rtl/ustrbuf.hxx> -#endif - -#ifndef _RSCSFX_HXX -#include <rsc/rscsfx.hxx> -#endif - -#ifndef _XMLOFF_NMSPMAP_HXX -#include <xmloff/nmspmap.hxx> -#endif - #ifndef _XMLOFF_XMLNMSPE_HXX #include <xmloff/xmlnmspe.hxx> #endif - -#ifndef _XMLOFF_I18NMAP_HXX -#include <xmloff/i18nmap.hxx> -#endif - -#ifndef _XMLOFF_XMLITEM_HXX -#include <xmloff/xmlitem.hxx> -#endif - -#ifndef _XMLOFF_XMLIMPIT_HXX -#include <xmloff/xmlimpit.hxx> -#endif - -#ifndef _XMLOFF_XMLITMPR_HXX -#include <xmloff/xmlexpit.hxx> -#endif - -#ifndef _XMLOFF_XMLKYWD_HXX -#include <xmloff/xmlkywd.hxx> -#endif - -#ifndef _XMLOFF_XMLASTPL_HXX -#include <xmloff/xmlastpl.hxx> -#endif -#ifndef _XMLOFF_TXTIMP_HXX -#include <xmloff/txtimp.hxx> -#endif - -#ifndef _XMLOFF_TXTFLDE_HXX -#include <xmloff/txtflde.hxx> -#endif - -#ifndef _XMLOFF_TXTVFLDI_HXX -//#include <xmloff/txtvfldi.hxx> -#endif - -#ifndef _UNOFIELD_HXX -#include <unofield.hxx> -#endif - -#ifndef _SVX_FONTITEM_HXX //autogen wg. SvxFontItem -#include <svx/fontitem.hxx> -#endif - -#ifndef _NDTXT_HXX //autogen wg. SwTxtNode -#include <ndtxt.hxx> -#endif -#ifndef _SECTION_HXX //autogen wg. SwSection -#include <section.hxx> -#endif -#ifndef _DOC_HXX //autogen wg. SwDoc -#include <doc.hxx> -#endif -#ifndef _PAM_HXX //autogen wg. SwPaM -#include <pam.hxx> -#endif -#ifndef _TXATBASE_HXX -#include <txatbase.hxx> -#endif -#ifndef _CHARATR_HXX -#include <charatr.hxx> -#endif -#ifndef _CHARFMT_HXX -#include <charfmt.hxx> -#endif -#ifndef _PARATR_HXX -#include <paratr.hxx> -#endif -#ifndef _FLDBAS_HXX -#include <fldbas.hxx> -#endif -#ifndef _FMTFLD_HXX -#include <fmtfld.hxx> -#endif -#ifndef _FCHRFMT_HXX -#include <fchrfmt.hxx> -#endif -#ifndef _UNOSTYLE_HXX -#include "unostyle.hxx" -#endif - -#ifndef _XMLECTXT_HXX -#include "xmlectxt.hxx" -#endif -#ifndef _HINTLIST_HXX -#include "hintlist.hxx" -#endif #ifndef _XMLIMP_HXX #include "xmlimp.hxx" #endif -#ifndef _XMLEXP_HXX -#include "xmlexp.hxx" -#endif -#ifndef _XMLNUM_HXX -#include "xmlnum.hxx" -#endif -#ifndef _XMLTBLI_HXX -#include "xmltbli.hxx" -#endif -#ifndef _XMLFMTE_HXX -#include "xmlfmte.hxx" -#endif -#ifndef _XMLTEXTI_HXX -#include "xmltexti.hxx" -#endif using namespace ::rtl; using namespace ::com::sun::star; using namespace ::com::sun::star::uno; using namespace ::com::sun::star::text; -#ifdef XML_CORE_API -enum SwXMLTextPElemTokens -{ - XML_TOK_SW_SPAN, - XML_TOK_SW_TAB_STOP, - XML_TOK_SW_LINE_BREAK, - XML_TOK_SW_S, - XML_TOK_SW_P_ELEM_END=XML_TOK_UNKNOWN -}; - -static __FAR_DATA SvXMLTokenMapEntry aTextPElemTokenMap[] = -{ - { XML_NAMESPACE_TEXT, sXML_span, XML_TOK_SW_SPAN }, - { XML_NAMESPACE_TEXT, sXML_tab_stop, XML_TOK_SW_TAB_STOP }, - { XML_NAMESPACE_TEXT, sXML_line_break, XML_TOK_SW_LINE_BREAK }, - { XML_NAMESPACE_TEXT, sXML_s, XML_TOK_SW_S }, - XML_TOKEN_MAP_END -}; - -const SvXMLTokenMap& SwXMLImport::GetTextPElemTokenMap() -{ - if( !pTextPElemTokenMap ) - pTextPElemTokenMap = new SvXMLTokenMap( aTextPElemTokenMap ); - - return *pTextPElemTokenMap; -} - -// --------------------------------------------------------------------- - -class SwXMLHint_Impl -{ - SfxItemSet aItemSet; - xub_StrLen nStart; - xub_StrLen nEnd; - -public: - - SwXMLHint_Impl( SfxItemPool& rPool, xub_StrLen nPos ) : - aItemSet( rPool, RES_CHRATR_BEGIN, RES_CHRATR_END - 1, - RES_TXTATR_BEGIN, RES_TXTATR_END - 1, - RES_UNKNOWNATR_BEGIN, RES_UNKNOWNATR_END - 1, 0 ), - nStart( nPos ), - nEnd( nPos ) - {} - - SfxItemSet& GetItemSet() { return aItemSet; } - xub_StrLen GetStart() const { return nStart; } - xub_StrLen GetEnd() const { return nEnd; } - void SetEnd( xub_StrLen nPos ) { nEnd = nPos; } -}; - -typedef SwXMLHint_Impl *SwXMLHint_ImplPtr; -SV_DECL_PTRARR_DEL( SwXMLHints_Impl, SwXMLHint_ImplPtr, 5, 5 ) -SV_IMPL_PTRARR( SwXMLHints_Impl, SwXMLHint_ImplPtr ) - -// --------------------------------------------------------------------- - -class SwXMLImpCharContext_Impl : public SvXMLImportContext -{ -public: - - SwXMLImpCharContext_Impl( - SwXMLImport& rImport, sal_uInt16 nPrfx, - const OUString& rLName, - const Reference< xml::sax::XAttributeList > & xAttrList, - sal_Unicode c, - sal_Bool bCount ); - - virtual ~SwXMLImpCharContext_Impl(); - - SwXMLImport& GetSwImport() { return (SwXMLImport&)GetImport(); } -}; - -SwXMLImpCharContext_Impl::SwXMLImpCharContext_Impl( - SwXMLImport& rImport, - sal_uInt16 nPrfx, - const OUString& rLName, - const Reference< xml::sax::XAttributeList > & xAttrList, - sal_Unicode c, - sal_Bool bCount ) : - SvXMLImportContext( rImport, nPrfx, rLName ) -{ - sal_uInt16 nCount = 1; - - if( bCount ) - { - sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0; - for( sal_Int16 i=0; i < nAttrCount; i++ ) - { - const OUString& rAttrName = xAttrList->getNameByIndex( i ); - - OUString aLocalName; - sal_uInt16 nPrefix = - GetImport().GetNamespaceMap().GetKeyByAttrName( rAttrName, - &aLocalName ); - if( XML_NAMESPACE_TEXT == nPrefix && - aLocalName.compareToAscii( sXML_c ) == 0 ) - { - sal_Int32 nTmp = xAttrList->getValueByIndex(i).toInt32(); - if( nTmp > 0L ) - { - if( nTmp > USHRT_MAX ) - nCount = USHRT_MAX; - else - nCount = (sal_uInt16)nTmp; - } - } - } - } - - if( 1U == nCount ) - { - GetSwImport().GetDoc().Insert( GetSwImport().GetPaM(), c ); - } - else - { - OUStringBuffer sBuff( nCount ); - while( nCount-- ) - sBuff.append( c ); - - GetSwImport().GetDoc().Insert( GetSwImport().GetPaM(), - sBuff.makeStringAndClear() ); - } -} - -SwXMLImpCharContext_Impl::~SwXMLImpCharContext_Impl() -{ -} - // --------------------------------------------------------------------- -class SwXMLImpSpanContext_Impl : public SvXMLImportContext -{ - SwXMLHints_Impl& rHints; - SwXMLHint_Impl *pHint; - - sal_Bool& rIgnoreLeadingSpace; - -public: - - SwXMLImpSpanContext_Impl( - SwXMLImport& rImport, sal_uInt16 nPrfx, - const OUString& rLName, - const Reference< xml::sax::XAttributeList > & xAttrList, - SwXMLHints_Impl& rHnts, - sal_Bool& rIgnLeadSpace ); - - virtual ~SwXMLImpSpanContext_Impl(); - - virtual SvXMLImportContext *CreateChildContext( - sal_uInt16 nPrefix, const OUString& rLocalName, - const Reference< xml::sax::XAttributeList > & xAttrList ); - - virtual void Characters( const OUString& rChars ); - - SwXMLImport& GetSwImport() { return (SwXMLImport&)GetImport(); } -}; - -SwXMLImpSpanContext_Impl::SwXMLImpSpanContext_Impl( - SwXMLImport& rImport, - sal_uInt16 nPrfx, - const OUString& rLName, - const Reference< xml::sax::XAttributeList > & xAttrList, - SwXMLHints_Impl& rHnts, - sal_Bool& rIgnLeadSpace ) : - SvXMLImportContext( rImport, nPrfx, rLName ), - rHints( rHnts ), - rIgnoreLeadingSpace( rIgnLeadSpace ), - pHint( 0 ) -{ - OUString aStyleName; - - sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0; - for( sal_Int16 i=0; i < nAttrCount; i++ ) - { - const OUString& rAttrName = xAttrList->getNameByIndex( i ); - - OUString aLocalName; - sal_uInt16 nPrefix = - GetImport().GetNamespaceMap().GetKeyByAttrName( rAttrName, - &aLocalName ); - if( XML_NAMESPACE_TEXT == nPrefix && - aLocalName.compareToAscii( sXML_style_name ) == 0 ) - aStyleName = xAttrList->getValueByIndex( i ); - } - - if( aStyleName.getLength() ) - { - SwDoc& rDoc = GetSwImport().GetDoc(); - - // try to find a matching automatic style - const SfxItemSet *pAutoItemSet = 0; - OUString sParentStyle; - if( GetSwImport().FindAutomaticStyle( SFX_STYLE_FAMILY_CHAR, - aStyleName, &pAutoItemSet, - &sParentStyle ) ) - { - aStyleName = sParentStyle; - } - - // if an automatic style has not been found or has been found and - // has a parent style, try to find this one. - SwCharFmt *pCharFmt = 0; - if( aStyleName.getLength() ) - { - const SvI18NMap& rI18NMap = GetSwImport().GetI18NMap(); - String sName( rI18NMap.Get( SFX_STYLE_FAMILY_CHAR, - aStyleName) ); - pCharFmt = rDoc.FindCharFmtByName( sName ); - } - - if( pAutoItemSet || pCharFmt ) - { - xub_StrLen nPos = - GetSwImport().GetPaM().GetPoint()->nContent.GetIndex(); - pHint = new SwXMLHint_Impl( rDoc.GetAttrPool(), nPos ); - rHints.Insert( pHint, rHints.Count() ); - if( pAutoItemSet ) - pHint->GetItemSet().Put( *pAutoItemSet ); - if( pCharFmt ) - { - SwFmtCharFmt aCharFmt( pCharFmt ); - pHint->GetItemSet().Put( aCharFmt ); - } - } - } -} - -SwXMLImpSpanContext_Impl::~SwXMLImpSpanContext_Impl() -{ - if( pHint ) - { - xub_StrLen nPos = - GetSwImport().GetPaM().GetPoint()->nContent.GetIndex(); - pHint->SetEnd( nPos ); - } -} - -SvXMLImportContext *SwXMLImpSpanContext_Impl::CreateChildContext( - sal_uInt16 nPrefix, const OUString& rLocalName, - const Reference< xml::sax::XAttributeList > & xAttrList ) -{ - SvXMLImportContext *pContext = 0; - - const SvXMLTokenMap& rTokenMap = GetSwImport().GetTextPElemTokenMap(); - switch( rTokenMap.Get( nPrefix, rLocalName ) ) - { - case XML_TOK_SW_SPAN: - pContext = new SwXMLImpSpanContext_Impl( GetSwImport(), nPrefix, - rLocalName, xAttrList, - rHints, - rIgnoreLeadingSpace ); - break; - - case XML_TOK_SW_TAB_STOP: - pContext = new SwXMLImpCharContext_Impl( GetSwImport(), nPrefix, - rLocalName, xAttrList, - 0x0009, sal_False ); - rIgnoreLeadingSpace = sal_False; - break; - - case XML_TOK_SW_LINE_BREAK: - pContext = new SwXMLImpCharContext_Impl( GetSwImport(), nPrefix, - rLocalName, xAttrList, - 0x000A, sal_False ); - rIgnoreLeadingSpace = sal_False; - break; - - case XML_TOK_SW_S: - pContext = new SwXMLImpCharContext_Impl( GetSwImport(), nPrefix, - rLocalName, xAttrList, - 0x0020, sal_True ); - break; - - default: - // ignore unknown content - pContext = new SvXMLImportContext( GetImport(), nPrefix, rLocalName ); - break; - } - - return pContext; -} - -void SwXMLImpSpanContext_Impl::Characters( const OUString& rChars ) -{ - sal_Int32 nLen = rChars.getLength(); - OUStringBuffer sChars( nLen ); - - for( sal_Int32 i=0; i < nLen; i++ ) - { - sal_Unicode c = rChars[i]; - switch( c ) - { - case 0x20: - case 0x09: - case 0x0a: - case 0x0d: - if( !rIgnoreLeadingSpace ) - sChars.append( (sal_Unicode)0x20 ); - rIgnoreLeadingSpace = sal_True; - break; - default: - rIgnoreLeadingSpace = sal_False; - sChars.append( c ); - break; - } - } - - GetSwImport().GetDoc().Insert( GetSwImport().GetPaM(), - sChars.makeStringAndClear() ); -} - -// --------------------------------------------------------------------- - -enum SwXMLTextPAttrTokens -{ - XML_TOK_SW_P_STYLE_NAME, - XML_TOK_SW_P_COND_STYLE_NAME, - XML_TOK_SW_P_LEVEL, - XML_TOK_SW_P_END=XML_TOK_UNKNOWN -}; - -static __FAR_DATA SvXMLTokenMapEntry aTextPAttrTokenMap[] = -{ - { XML_NAMESPACE_TEXT, sXML_style_name, XML_TOK_SW_P_STYLE_NAME }, - { XML_NAMESPACE_TEXT, sXML_cond_style_name, - XML_TOK_SW_P_COND_STYLE_NAME }, - { XML_NAMESPACE_TEXT, sXML_level, XML_TOK_SW_P_LEVEL }, - XML_TOKEN_MAP_END -}; - -SwXMLParaContext::SwXMLParaContext( - SwXMLImport& rImport, - sal_uInt16 nPrfx, - const OUString& rLName, - const Reference< xml::sax::XAttributeList > & xAttrList, - sal_Bool bHead ) : - SvXMLImportContext( rImport, nPrfx, rLName ), - pItemSet( 0 ), - pHints( 0 ), - bIgnoreLeadingSpace( sal_True ), - bHeading( bHead ) -{ - const SvXMLTokenMap& rTokenMap = GetSwImport().GetTextPAttrTokenMap(); - - OUString aStyleName, aCondStyleName; - sal_uInt8 nOutlineLevel = NO_NUMBERING; - - sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0; - for( sal_Int16 i=0; i < nAttrCount; i++ ) - { - const OUString& rAttrName = xAttrList->getNameByIndex( i ); - const OUString& rValue = xAttrList->getValueByIndex( i ); - - OUString aLocalName; - sal_uInt16 nPrefix = - GetImport().GetNamespaceMap().GetKeyByAttrName( rAttrName, - &aLocalName ); - switch( rTokenMap.Get( nPrefix, aLocalName ) ) - { - case XML_TOK_SW_P_STYLE_NAME: - aStyleName = rValue; - break; - case XML_TOK_SW_P_COND_STYLE_NAME: - aCondStyleName = rValue; - break; - case XML_TOK_SW_P_LEVEL: - { - sal_Int32 nTmp = rValue.toInt32() - 1L; - if( nTmp >= 0L ) - { - if( nTmp > MAXLEVEL ) - nTmp = MAXLEVEL; - nOutlineLevel = (sal_uInt8)nTmp; - } - } - - } - } - - if( aCondStyleName.getLength() ) - { - OUString sTmp( aStyleName ); - aStyleName = aCondStyleName; - aCondStyleName = sTmp; - } - - if( aStyleName.getLength() ) - { - const SfxItemSet *pAutoItemSet = 0; - OUString sParentStyle; - if( GetSwImport().FindAutomaticStyle( SFX_STYLE_FAMILY_PARA, - aStyleName, &pAutoItemSet, - &sParentStyle ) ) - { - aStyleName = sParentStyle; - } - - if( pAutoItemSet ) - { - if( !pItemSet ) - pItemSet = new SfxItemSet( GetSwImport().GetDoc().GetAttrPool(), - aTxtNodeSetRange ); - pItemSet->Put( *pAutoItemSet ); - } - - if( aStyleName.getLength() ) - { - const SvI18NMap& rI18NMap = GetSwImport().GetI18NMap(); - String sName( rI18NMap.Get( SFX_STYLE_FAMILY_PARA, aStyleName ) ); - SwDoc& rDoc = GetSwImport().GetDoc(); - SwTxtFmtColl *pColl = rDoc.FindTxtFmtCollByName( sName ); - if( pColl ) - { - sal_uInt8 nCollOutlineLevel = pColl->GetOutlineLevel(); - if( bHeading && !( GetSwImport().IsInsertMode() || - GetSwImport().IsStylesOnlyMode() ) && - NO_NUMBERING != nOutlineLevel && - ( NO_NUMBERING == nCollOutlineLevel || - GetRealLevel(nCollOutlineLevel) != nOutlineLevel ) ) - { - sal_uInt16 nArrLen = rDoc.GetTxtFmtColls()->Count(); - for( sal_uInt16 i=0; i<nArrLen; i++ ) - { - SwTxtFmtColl* pCur = (*rDoc.GetTxtFmtColls())[i]; - sal_uInt8 nCurLevel = pCur->GetOutlineLevel(); - if( nCurLevel != NO_NUMBERING && - GetRealLevel(nCurLevel) == nOutlineLevel ) - { - if( pColl != pCur ) - pCur->SetOutlineLevel( NO_NUMBERING ); - break; - } - } - pColl->SetOutlineLevel( nOutlineLevel ); - } - rDoc.SetTxtFmtColl( GetSwImport().GetPaM(), pColl ); - } - } - } -} - -SwXMLParaContext::~SwXMLParaContext() -{ -#ifndef PRODUCT - SwCntntNode *pTTTNd = GetSwImport().GetPaM().GetNode()->GetCntntNode(); -#endif - - // Start a new node. - SwDoc& rDoc = GetSwImport().GetDoc(); - rDoc.AppendTxtNode( *GetSwImport().GetPaM().GetPoint() ); - - // Create a "attribute" PaM and move it to the previous node. - SwPaM aPaM( GetSwImport().GetPaM() ); - aPaM.Move( fnMoveBackward, fnGoCntnt ); - aPaM.SetMark(); - SwCntntNode *pCNd = aPaM.GetNode()->GetCntntNode(); - ASSERT( pCNd, - "SwXMLParaContext::~SwXMLParaContext: no content node" ); -#ifndef PRODUCT - ASSERT( pTTTNd == pCNd, - "SwXMLParaContext::~SwXMLParaContext: wrong content node" ); - ASSERT( (const SwIndexReg*)pTTTNd == aPaM.GetPoint()->nContent.GetIdxReg(), - "SwXMLParaContext::~SwXMLParaContext: wrong content node" ); -#endif - - aPaM.GetPoint()->nContent.Assign( pCNd, 0 ); - - // Set paragraph attributes. - if( pItemSet ) - rDoc.Insert( aPaM, *pItemSet ); - delete pItemSet; - - // Set numbering rules - SwTxtNode *pTxtNd = pCNd->GetTxtNode(); - const SwNumRule *pNumRule = pTxtNd->GetNumRule(); - if( GetSwImport().IsInList() ) - { - SwXMLListBlockContext *pListBlock = GetSwImport().GetListBlock(); - String sStyleName( GetSwImport().GetI18NMap().Get( - SFX_STYLE_FAMILY_PSEUDO,pListBlock->GetStyleName()) ); - if( !pNumRule || - ( !pListBlock->HasGeneratedStyle() && - pNumRule->GetName() != sStyleName ) ) - { - rDoc.Insert( aPaM, SwNumRuleItem( sStyleName ) ); - pNumRule = pTxtNd->GetNumRule(); - } - - ASSERT( pNumRule, "SwXMLParaContext::~SwXMLParaContext: no num rule" ); - GetSwImport().SetUsed( *pNumRule ); - - SwXMLListItemContext *pListItem = GetSwImport().GetListItem(); - - sal_uInt8 nLevel = pListBlock->GetLevel() > MAXLEVEL - ? MAXLEVEL - : (sal_uInt8)pListBlock->GetLevel(); - if( !pListItem ) - nLevel |= NO_NUMLEVEL; - - SwNodeNum aNodeNum( nLevel ); - if( pListBlock->IsRestartNumbering() ) - { - aNodeNum.SetStart(); - pListBlock->ResetRestartNumbering(); - } - if( pListItem && pListItem->HasStartValue() ) - { - aNodeNum.SetSetValue( pListItem->GetStartValue() ); - } - - pTxtNd->UpdateNum( aNodeNum ); - - GetSwImport().SetListItem( 0 ); - } - else - { - // If the paragraph is not in a list but its style, remove it from - // the list. - if( pNumRule ) - rDoc.Insert( aPaM, SwNumRuleItem() ); - } - - if( pHints && pHints->Count() ) - { - for( sal_uInt16 i=0; i<pHints->Count(); i++ ) - { - SwXMLHint_Impl *pHint = (*pHints)[i]; - xub_StrLen nStt = pHint->GetStart(); - xub_StrLen nEnd = pHint->GetEnd(); - if( nStt != nEnd ) - { - aPaM.GetPoint()->nContent.Assign( pCNd, nEnd ); - aPaM.SetMark(); - aPaM.GetPoint()->nContent.Assign( pCNd, nStt ); - rDoc.Insert( aPaM, pHint->GetItemSet() ); - } - } - } - delete pHints; -} - -SvXMLImportContext *SwXMLParaContext::CreateChildContext( - sal_uInt16 nPrefix, const OUString& rLocalName, - const Reference< xml::sax::XAttributeList > & xAttrList ) -{ - SvXMLImportContext *pContext = 0; - - const SvXMLTokenMap& rTokenMap = GetSwImport().GetTextPElemTokenMap(); - switch( rTokenMap.Get( nPrefix, rLocalName ) ) - { - case XML_TOK_SW_SPAN: - if( !pHints ) - pHints = new SwXMLHints_Impl; - pContext = new SwXMLImpSpanContext_Impl( GetSwImport(), nPrefix, - rLocalName, xAttrList, - *pHints, bIgnoreLeadingSpace ); - break; - - case XML_TOK_SW_TAB_STOP: - pContext = new SwXMLImpCharContext_Impl( GetSwImport(), nPrefix, - rLocalName, xAttrList, - 0x0009, sal_False ); - bIgnoreLeadingSpace = sal_False; - break; - - case XML_TOK_SW_LINE_BREAK: - pContext = new SwXMLImpCharContext_Impl( GetSwImport(), nPrefix, - rLocalName, xAttrList, - 0x000A, sal_False ); - bIgnoreLeadingSpace = sal_False; - break; - - case XML_TOK_SW_S: - pContext = new SwXMLImpCharContext_Impl( GetSwImport(), nPrefix, - rLocalName, xAttrList, - 0x0020, sal_True ); - break; - - default: - // ignore unknown content - pContext = new SvXMLImportContext( GetImport(), nPrefix, rLocalName ); - break; - } - - return pContext; -} - -void SwXMLParaContext::Characters( const OUString& rChars ) -{ - sal_Int32 nLen = rChars.getLength(); - OUStringBuffer sChars( nLen ); - - for( sal_Int32 i=0; i < nLen; i++ ) - { - sal_Unicode c = rChars[ i ]; - switch( c ) - { - case 0x20: - case 0x09: - case 0x0a: - case 0x0d: - if( !bIgnoreLeadingSpace ) - sChars.append( (sal_Unicode)0x20 ); - bIgnoreLeadingSpace = sal_True; - break; - default: - bIgnoreLeadingSpace = sal_False; - sChars.append( c ); - break; - } - } - - GetSwImport().GetDoc().Insert( GetSwImport().GetPaM(), - sChars.makeStringAndClear() ); -} - -const SvXMLTokenMap& SwXMLImport::GetTextPAttrTokenMap() -{ - if( !pTextPAttrTokenMap ) - pTextPAttrTokenMap = new SvXMLTokenMap( aTextPAttrTokenMap ); - - return *pTextPAttrTokenMap; -} -#endif - -// --------------------------------------------------------------------- - -#ifdef XML_CORE_API -static __FAR_DATA SvXMLTokenMapEntry aBodyElemTokenMap[] = -{ - { XML_NAMESPACE_TEXT, sXML_p, XML_TOK_SW_P }, - { XML_NAMESPACE_TEXT, sXML_h, XML_TOK_SW_H }, - { XML_NAMESPACE_TEXT, sXML_ordered_list, XML_TOK_SW_ORDERED_LIST }, - { XML_NAMESPACE_TEXT, sXML_unordered_list, XML_TOK_SW_UNORDERED_LIST }, - { XML_NAMESPACE_TABLE,sXML_table, XML_TOK_TABLE_TABLE }, - { XML_NAMESPACE_TABLE,sXML_sub_table, XML_TOK_TABLE_SUBTABLE }, - XML_TOKEN_MAP_END -}; -#endif - class SwXMLBodyContext_Impl : public SvXMLImportContext { -#ifdef XML_CORE_API - const SwXMLImport& GetSwImport() const - { return (const SwXMLImport&)GetImport(); } -#endif SwXMLImport& GetSwImport() { return (SwXMLImport&)GetImport(); } public: @@ -875,37 +113,9 @@ SvXMLImportContext *SwXMLBodyContext_Impl::CreateChildContext( { SvXMLImportContext *pContext = 0; -#ifndef XML_CORE_API pContext = GetSwImport().GetTextImport()->CreateTextChildContext( GetImport(), nPrefix, rLocalName, xAttrList, XML_TEXT_TYPE_BODY ); -#else - const SvXMLTokenMap& rTokenMap = GetSwImport().GetBodyElemTokenMap(); - sal_Bool bOrdered = sal_False; - sal_Bool bHeading = sal_False; - - switch( rTokenMap.Get( nPrefix, rLocalName ) ) - { - case XML_TOK_SW_H: - bHeading = sal_True; - case XML_TOK_SW_P: - pContext = new SwXMLParaContext( GetSwImport(),nPrefix, rLocalName, - xAttrList, bHeading ); - break; - case XML_TOK_SW_ORDERED_LIST: - bOrdered = sal_True; - case XML_TOK_SW_UNORDERED_LIST: - pContext = new SwXMLListBlockContext( GetSwImport(),nPrefix, rLocalName, - xAttrList, bOrdered ); - break; - case XML_TOK_TABLE_TABLE: - if( !GetSwImport().GetPaM().GetNode()->FindTableNode() ) - pContext = new SwXMLTableContext( GetSwImport(),nPrefix, rLocalName, - xAttrList ); - break; - } -#endif - if( !pContext ) pContext = new SvXMLImportContext( GetImport(), nPrefix, rLocalName ); @@ -917,16 +127,6 @@ void SwXMLBodyContext_Impl::EndElement() GetImport().GetTextImport()->SetOutlineStyles(); } -#ifdef XML_CORE_API -const SvXMLTokenMap& SwXMLImport::GetBodyElemTokenMap() -{ - if( !pBodyElemTokenMap ) - pBodyElemTokenMap = new SvXMLTokenMap( aBodyElemTokenMap ); - - return *pBodyElemTokenMap; -} -#endif - SvXMLImportContext *SwXMLImport::CreateBodyContext( const OUString& rLocalName ) { @@ -941,717 +141,3 @@ SvXMLImportContext *SwXMLImport::CreateBodyContext( return pContext; } - -// --------------------------------------------------------------------- - -#ifdef XML_CORE_API -class SwXMLHintEndPosList : public SwHintEndPosList -{ - OUString sQSpan; - SwXMLExport& rExport; - -public: - - SwXMLHintEndPosList( SwXMLExport& rExp ); - ~SwXMLHintEndPosList(); - - void Insert( const SfxPoolItem& rItem, xub_StrLen nStart, xub_StrLen nEnd ); - - sal_Bool HasStartingOrEndingHints( xub_StrLen nPos ); - - sal_Bool ExportStartingHints( xub_StrLen nPos ); - sal_Bool ExportEndingHints( xub_StrLen nPos ); -}; - -SwXMLHintEndPosList::SwXMLHintEndPosList( SwXMLExport& rExp ) : - rExport( rExp ) -{ - OUString sLName( OUString::createFromAscii( sXML_span ) ); - sQSpan = rExp.GetNamespaceMap().GetQNameByKey( XML_NAMESPACE_TEXT, sLName ); -} - -SwXMLHintEndPosList::~SwXMLHintEndPosList() -{ -} - -void SwXMLHintEndPosList::Insert( const SfxPoolItem& rItem, - xub_StrLen nStart, xub_StrLen nEnd ) -{ - // empty hints will be ignored - if( nStart != nEnd ) - { - InsertHint( rItem, nStart, nEnd ); - } -} - -sal_Bool SwXMLHintEndPosList::ExportStartingHints( xub_StrLen nPos ) -{ - sal_Bool bRet = sal_False; - - // Hints in the start list are sorted ascending. - - sal_uInt16 nCount = GetStartingCount(); - for( sal_uInt16 i=0; i< nCount; i++ ) - { - SwHintSttEndPos *pPos = GetStartingHint( i ); - xub_StrLen nStart = pPos->GetStart(); - if( nStart > nPos ) - { - // This and all following hint will be started later - break; - } - else if( nStart == nPos ) - { - // export hint's start -// if( bIWSOutside ) -// rExport.GetDocHandler()->ignorableWhitespace( rExport.sWS ); - const SfxPoolItem& rItem = pPos->GetItem(); - if( (rItem.Which() >= RES_CHRATR_BEGIN && - rItem.Which() < RES_CHRATR_END) || - (rItem.Which() >= RES_UNKNOWNATR_BEGIN && - rItem.Which() < RES_UNKNOWNATR_END) ) - { - SfxItemSet aItemSet( rExport.GetDoc().GetAttrPool(), - RES_CHRATR_BEGIN, RES_CHRATR_END - 1, - RES_UNKNOWNATR_BEGIN, RES_UNKNOWNATR_END - 1, - 0 ); - aItemSet.Put( rItem ); - OUString sName( rExport.GetItemSetAutoStylePool().Find( - SFX_STYLE_FAMILY_CHAR, aItemSet ) ); - ASSERT( sName.getLength(), "no automatic style found" ); - if( sName.getLength() ) - rExport.AddAttribute( XML_NAMESPACE_TEXT, sXML_style_name, - sName ); - } - else - { - rExport.GetParaItemMapper().exportXML( - rExport.GetAttrList(), rItem, - rExport.GetTwipUnitConverter(), - rExport.GetNamespaceMap() ); - } - - rExport.GetDocHandler()->startElement( sQSpan, - rExport.GetXAttrList() ); - rExport.ClearAttrList(); - - bRet = sal_True; - } - } - - return bRet; -} - -sal_Bool SwXMLHintEndPosList::ExportEndingHints( xub_StrLen nPos ) -{ - sal_Bool bRet = sal_False; - - // Hints in the end list are sorted ascending - sal_uInt16 i=0; - while( i < GetEndingCount() ) - { - SwHintSttEndPos *pPos = GetEndingHint( i ); - xub_StrLen nEnd = pPos->GetEnd(); - - if( STRING_LEN==nPos || nEnd == nPos ) - { -// if( bIgnWS ) -// rExport.GetDocHandler()->ignorableWhitespace( rExport.sWS ); - rExport.GetDocHandler()->endElement( sQSpan ); - _RemoveHint( i ); - - bRet = sal_True; - } - else if( nEnd > nPos ) - { - // This and all hints that are following will be closed later - break; - } - else - { - // This hint should have been exported already! - ASSERT( nEnd >= nPos, - "SwXMLHintEndPosLst::OutEndAttrs: hint overseen" ); - i++; - } - } - - return bRet; -} - -sal_Bool SwXMLHintEndPosList::HasStartingOrEndingHints( xub_StrLen nPos ) -{ - sal_Bool bRet = sal_False; - - // Hints in the start list are sorted ascending. - - sal_uInt16 nCount = GetStartingCount(); - for( sal_uInt16 i=0; i< nCount; i++ ) - { - SwHintSttEndPos *pPos = GetStartingHint( i ); - xub_StrLen nStart = pPos->GetStart(); - if( nStart == nPos ) - { - bRet = sal_True; - break; - } - else if( nStart > nPos ) - { - // This and all following hint will be started later - break; - } - } - - if( !bRet ) - { - nCount = GetEndingCount(); - for( i=0; i < nCount; i++ ) - { - SwHintSttEndPos *pPos = GetEndingHint( i ); - xub_StrLen nEnd = pPos->GetEnd(); - - if( nEnd == nPos ) - { - bRet = sal_True; - break; - } - else if( nEnd > nPos ) - { - // This and all hints that are following will be closed later - break; - } - } - } - - return bRet; -} - -void SwXMLExport::ExportTxtNode( const SwTxtNode& rTxtNd, xub_StrLen nStart, - xub_StrLen nEnd, sal_Bool bExportWholeNode ) -{ - // <text:p ...> - CheckAttrList(); - - const SfxItemSet *pItemSet = rTxtNd.GetpSwAttrSet(); - - // text:style-name="..." - // If the text collection is a conditional style, the current style - // is written as style-name rather than the master style. - const SwFmtColl& rColl = rTxtNd.GetAnyFmtColl(); - OUString sStyleName( rColl.GetName() ); - if( pItemSet ) - sStyleName = FindParaAutoStyle( sStyleName, *pItemSet ); - else - sStyleName = SwXStyleFamilies::GetProgrammaticName( sStyleName, - SFX_STYLE_FAMILY_PARA ); - ASSERT( sStyleName.getLength(), "auto para style not found" ); - AddAttribute( XML_NAMESPACE_TEXT, sXML_style_name, sStyleName ); - - sal_uInt8 nOutlineLevel = ((const SwTxtFmtColl&)rColl).GetOutlineLevel(); - - // text:cond-style-name="..." - if( rTxtNd.GetCondFmtColl() ) - { - // master style - const SwFmtColl *pColl = rTxtNd.GetFmtColl(); - OUString sCondStyleName; - if( &rColl == pColl ) - { - sCondStyleName = sStyleName; - } - else - { - sCondStyleName = pColl->GetName(); - if( pItemSet ) - sCondStyleName = FindParaAutoStyle( sCondStyleName, *pItemSet ); - else - sCondStyleName = SwXStyleFamilies::GetProgrammaticName( - sCondStyleName, - SFX_STYLE_FAMILY_PARA ); - ASSERT( sCondStyleName.getLength(), "auto para style not found" ); - nOutlineLevel = ((const SwTxtFmtColl *)pColl)->GetOutlineLevel(); - } - AddAttribute( XML_NAMESPACE_TEXT, sXML_cond_style_name, - sCondStyleName ); - } - - if( NO_NUMBERING != nOutlineLevel ) - { - OUStringBuffer sTmp; - sTmp.append( GetRealLevel(nOutlineLevel)+1L ); - AddAttribute( XML_NAMESPACE_TEXT, sXML_level, - sTmp.makeStringAndClear() ); - } - - { - const sal_Char *pElem = - NO_NUMBERING == nOutlineLevel ? sXML_p : sXML_h; - SvXMLElementExport aElem( *this, XML_NAMESPACE_TEXT, pElem, sal_True, - sal_False ); - xub_StrLen nOffset = 0; - - const String& rText = rTxtNd.GetTxt(); - xub_StrLen nPos = pCurPaM->GetPoint()->nContent.GetIndex(); - xub_StrLen nEndPos = rText.Len(); - if( pCurPaM->GetPoint()->nNode == pCurPaM->GetMark()->nNode ) - nEndPos = pCurPaM->GetMark()->nContent.GetIndex(); - - const SwpHints *pHints = rTxtNd.GetpSwpHints(); - sal_uInt16 nHintCount = pHints ? pHints->Count() : 0; - sal_uInt16 nHintPos = 0; - SwXMLHintEndPosList aHintLst( *this ); - - // export all hints before the current text position - const SwTxtAttr * pTxtAttr = 0; - if( nHintCount && nPos > *( pTxtAttr = (*pHints)[0] )->GetStart() ) - { - do - { - nHintPos++; - - if( pTxtAttr->GetEnd() ) - { - DBG_ASSERT( RES_TXTATR_FIELD == pTxtAttr->Which(), - "ignore fields" ); - xub_StrLen nHtEnd = *pTxtAttr->GetEnd(), - nHtStt = *pTxtAttr->GetStart(); - if( (!bExportWholeNode && nHtEnd <= nPos) || - nHtEnd == nHtStt ) - continue; - - // add hint to hint list - if( bExportWholeNode ) - { - aHintLst.Insert( pTxtAttr->GetAttr(), nHtStt + nOffset, - nHtEnd + nOffset ); - } - else - { - xub_StrLen nTmpStt = nHtStt < nPos ? nPos : nHtStt; - xub_StrLen nTmpEnd = nHtEnd < nEndPos ? nHtEnd : nEndPos; - aHintLst.Insert( pTxtAttr->GetAttr(), nTmpStt + nOffset, - nTmpEnd + nOffset ); - } - } - - } - while( nHintPos < nHintCount && - nPos > *( pTxtAttr = (*pHints)[nHintPos ] )->GetStart() ); - } - - xub_StrLen nExpStartPos = nPos; - sal_Bool bCurrCharIsSpace = sal_False; - xub_StrLen nSpaceChars = 0; - for( ; nPos < nEndPos; nPos++ ) - { - sal_Bool bExpCharAsText = sal_True; - const SwTxtAttr * pTxtAttrWOEnd = 0; - if( nHintPos < nHintCount && *pTxtAttr->GetStart() == nPos - && nPos != nEndPos ) - { - do - { - if( pTxtAttr->GetEnd() ) - { - if( *pTxtAttr->GetEnd() != nPos ) - { - // insert hint into the hint list if its not - // empty - aHintLst.Insert( pTxtAttr->GetAttr(), - nPos + nOffset, - *pTxtAttr->GetEnd() + nOffset ); - } - } - else - { - // hints without end must be exported after all - // other hints that start at this position - ASSERT( !pTxtAttrWOEnd, - "SwXMLExport::ExportTxtNode: There is a hint already" ); - pTxtAttrWOEnd = pTxtAttr; - bExpCharAsText = sal_False; // ignore 0xff - } - } - while( ++nHintPos < nHintCount && - nPos == *( pTxtAttr = (*pHints)[nHintPos] )->GetStart() ); - } - - // Some characters require some extra work ... - sal_Bool bExpCharAsElement = sal_False; - sal_Bool bPrevCharIsSpace = bCurrCharIsSpace; - bCurrCharIsSpace = sal_False; - if( bExpCharAsText ) - { - switch( rText.GetChar(nPos) ) - { - case 0x0009: // Tab - case 0x000A: // LF - // These characters are exported as text. - bExpCharAsElement = sal_True; - bExpCharAsText = sal_False; - break; - case 0x0020: // Blank - if( bPrevCharIsSpace ) - { - // If the previous character is a space character, - // too, export a special space element. - bExpCharAsText = sal_False; - } - bCurrCharIsSpace = sal_True; - break; - } - } - - // If the current character is not exported as text or if there - // are hints starting or ending before the current position, - // the text that has not been exported by now has to be exported - // now. - if( nPos > nExpStartPos && - ( !bExpCharAsText || - aHintLst.HasStartingOrEndingHints( nPos+nOffset ) ) ) - { - ASSERT( 0==nSpaceChars, - "SwXMLExport::ExportTxtNode: pending spaces" ); - String sExp( rText.Copy( nExpStartPos, - nPos - nExpStartPos ) ); - GetDocHandler()->characters( sExp ); - nExpStartPos = nPos; - } - - // If there are spaces left that have not been exported and the - // current chracter is either not a space or there are some - // hints starting or ending, the pending spaces have to be - // exported now. - if( nSpaceChars > 0 && - ( !bCurrCharIsSpace || - aHintLst.HasStartingOrEndingHints( nPos+nOffset ) ) ) - { - ASSERT( nExpStartPos == nPos, - "SwXMLExport::ExportTxtNode: pending characters" ); - - if( nSpaceChars > 1 ) - { - OUStringBuffer sTmp; - sTmp.append( (sal_Int32)nSpaceChars ); - AddAttribute( XML_NAMESPACE_TEXT, sXML_c, - sTmp.makeStringAndClear() ); - } - - SvXMLElementExport aElem( *this, XML_NAMESPACE_TEXT, - sXML_s, sal_False, sal_False ); - - nSpaceChars = 0; - } - - // Before the text or tag of the current element, ending and - // starting hints have to be exported. - aHintLst.ExportEndingHints( nPos + nOffset ); - aHintLst.ExportStartingHints( nPos + nOffset ); - - // If the current character has to be exported as a special - // element, the elemnt will be exported now. - if( bExpCharAsElement ) - { - switch( rText.GetChar(nPos) ) - { - case 0x0009: // Tab - { - SvXMLElementExport aElem( *this, XML_NAMESPACE_TEXT, - sXML_tab_stop, sal_False, - sal_False ); - } - break; - case 0x000A: // LF - { - SvXMLElementExport aElem( *this, XML_NAMESPACE_TEXT, - sXML_line_break, sal_False, - sal_False ); - } - break; - } - } - if( pTxtAttrWOEnd ) - { - // TODO: This is a hack as long as if there is no field - // export. - if( RES_TXTATR_FIELD == pTxtAttrWOEnd->Which() ) - { - const SwField *pFld = - ((const SwFmtFld&)pTxtAttrWOEnd->GetAttr()).GetFld(); - if( pFld ) - { - GetDocHandler()->characters( pFld->Expand() ); - } -#ifdef XML_CORE_API -// Reference < XTextField > xFld = new SwXTextField( -// ((const SwFmtFld&)pTxtAttrWOEnd->GetAttr()), -// &GetDoc() ); -// -// GetTextFieldExport().ExportField( xFld ); -#endif - } - } - - // If the current character is a space, and the previous one - // is a space, too, the number of pending spaces is incremented - // only. - if( bCurrCharIsSpace && bPrevCharIsSpace ) - nSpaceChars++; - - // If the currect character is not exported as text, the start - // position for text is the position behind the current position. - if( !bExpCharAsText ) - { - ASSERT( nExpStartPos == nPos, "wrong export start pos" ); - nExpStartPos = nPos+1; - } - } - - // If there is some text left, it has to be exported now. - if( nExpStartPos < nEndPos ) - { - ASSERT( 0==nSpaceChars, - "SwXMLExport::ExportTxtNode: pending spaces " ); - String sExp( rText.Copy( nExpStartPos, nEndPos - nExpStartPos ) ); - GetDocHandler()->characters( sExp ); - } - - // If there are some spaces left, they have to be exported now. - if( nSpaceChars > 0 ) - { - if( nSpaceChars > 1 ) - { - OUStringBuffer sTmp; - sTmp.append( (sal_Int32)nSpaceChars ); - AddAttribute( XML_NAMESPACE_TEXT, sXML_c, - sTmp.makeStringAndClear() ); - } - - SvXMLElementExport aElem( *this, XML_NAMESPACE_TEXT, sXML_s, - sal_False, sal_False ); - } - - // The same applies to all hints that are currently open. - aHintLst.ExportEndingHints( STRING_LEN ); - } -} - -void SwXMLExport::ExportSection( const SwSectionNode& rSectNd ) -{ -#if 0 - const SwSection& rSection = rSectNd.GetSection(); - const SwSectionFmt *pSectFmt = rSection.GetFmt(); - ASSERT( pSectFmt, "SwXMLExport::ExportSection: section without a format?" ); - - // <text:section-desc ...> - CheckAttrList(); - - // text:name="..." - AddAttribute( XML_NAMESPACE_TEXT, sXML_name, S2WS(rSection.GetName()) ); - - // text:hidden="..." - if( rSection.IsHidden() ) - { - AddAttributeASCII( XML_NAMESPACE_TEXT, sXML_hidden, sXML_true ); - - // text:condition="..." - if( rSection.IsCondHidden() ) - { - AddAttribute( XML_NAMESPACE_TEXT, sXML_condition, - S2WS(rSection.GetCondition()) ); - } - } - - { - SvXMLElementExport aElem( *this, XML_NAMESPACE_TEXT, sXML_section_desc, - sal_True, sal_True ); -// TODO -// pSectionItemExport->Export( pSectFmt->GetAttrSet(), XML_ITEM_IGN_WS ); - } - - // <text:section ...> - CheckAttrList(); - - // text:name="..." - AddAttribute( XML_NAMESPACE_TEXT, sXML_section_name, - S2WS(rSection.GetName()) ); -#endif - - SwNode *pStartNd = pDoc->GetNodes()[rSectNd.GetIndex() + 1]; - SwNode *pEndNd = pDoc->GetNodes()[rSectNd.EndOfSectionIndex() - 1]; - - { -#if 0 - SvXMLElementExport aElem( *this, XML_NAMESPACE_TEXT, sXML_section, - sal_True, sal_True ); -#endif - SwXMLExpContext aContext( *this, *pStartNd, *pEndNd, 0, STRING_LEN ); - ExportCurPaM(); - } - - pCurPaM->GetPoint()->nNode = *rSectNd.EndOfSectionNode(); -} -#endif - -/************************************************************************* - - Source Code Control System - Header - - $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sw/source/filter/xml/xmltext.cxx,v 1.3 2000-10-18 11:20:44 mib Exp $ - - Source Code Control System - Update - - $Log: not supported by cvs2svn $ - Revision 1.2 2000/09/27 06:15:11 mib - Setting outline styles at end of body - - Revision 1.1.1.1 2000/09/18 17:15:00 hr - initial import - - Revision 1.48 2000/09/18 16:05:08 willem.vandorp - OpenOffice header added. - - Revision 1.47 2000/09/18 11:58:03 mib - text frames/graphics import and export continued - - Revision 1.46 2000/08/24 11:16:42 mib - text import continued - - Revision 1.45 2000/08/10 10:22:16 mib - #74404#: Adeptions to new XSL/XLink working draft - - Revision 1.44 2000/08/04 11:39:54 dvo - - field declarations import removed from CORE API import - - Revision 1.43 2000/08/03 18:03:58 dvo - - variable field declarations import added - - Revision 1.42 2000/07/31 09:42:35 mib - text export continued - - Revision 1.41 2000/07/24 10:19:02 dvo - - textfield export for XML_CORE_API - - Revision 1.40 2000/07/21 12:55:15 mib - text import/export using StarOffice API - - Revision 1.39 2000/07/11 11:17:59 dvo - text field export added - - Revision 1.38 2000/06/08 09:45:55 aw - changed to use functionality from xmloff project now - - Revision 1.37 2000/05/24 12:08:11 mib - unicode bug fix - - Revision 1.36 2000/05/03 12:08:05 mib - unicode - - Revision 1.35 2000/03/13 14:33:45 mib - UNO3 - - Revision 1.34 2000/03/06 10:46:11 mib - #72585#: toInt32 - - Revision 1.33 2000/02/21 12:51:07 mib - #70271#: Export of section element removed - - Revision 1.32 2000/02/17 14:40:30 mib - #70271#: XML table import - - Revision 1.30 2000/01/27 08:59:02 mib - #70271#: outline numbering - - Revision 1.29 2000/01/20 10:03:16 mib - #70271#: Lists reworked - - Revision 1.28 2000/01/12 15:00:23 mib - #70271#: lists - - Revision 1.27 2000/01/06 15:08:28 mib - #70271#:separation of text/layout, cond. styles, adaptions to wd-xlink-19991229 - - Revision 1.26 1999/12/14 09:47:51 mib - #70271#: Export field content as text - - Revision 1.25 1999/12/13 08:29:07 mib - #70271#: Support for element items added, background and brush item - - Revision 1.24 1999/12/08 10:44:21 cl - #70271# added first support for importing tab-stops - - Revision 1.23 1999/12/06 11:41:33 mib - #70258#: Container item for unkown attributes - - Revision 1.22 1999/11/26 11:11:49 mib - export-flags, loading of styles only - - Revision 1.21 1999/11/19 15:27:59 mib - Opt: using C++ arrays instead of string buffers - - Revision 1.20 1999/11/12 11:43:03 mib - using item mapper, part iii - - Revision 1.19 1999/11/10 15:08:09 mib - Import now uses XMLItemMapper - - Revision 1.18 1999/11/09 15:40:08 mib - Using XMLItemMapper for export - - Revision 1.17 1999/11/03 11:13:50 mib - list style import continued - - Revision 1.16 1999/11/01 11:38:50 mib - List style import - - Revision 1.15 1999/10/26 13:33:50 mib - list styles continued - - Revision 1.14 1999/10/25 10:41:48 mib - Using new OUString ASCII methods - - Revision 1.13 1999/10/15 12:38:01 mib - XML_TOK_SW_LINE_FEED -> XML_TOK_SW_LINE_BREAK - - Revision 1.12 1999/10/08 11:47:56 mib - moved some file to SVTOOLS/SVX - - Revision 1.11 1999/10/06 06:48:06 mib - WS stripping - - Revision 1.10 1999/10/01 14:12:02 mib - tab, line break and space - - Revision 1.9 1999/09/28 10:47:05 mib - memory leak - - Revision 1.8 1999/09/28 08:31:47 mib - char fmts, hints - - Revision 1.7 1999/09/23 11:54:28 mib - i18n, token maps and hard paragraph attributes - - Revision 1.6 1999/09/22 11:57:46 mib - string -> wstring - - Revision 1.5 1999/08/18 15:03:38 MIB - Style import - - - Rev 1.4 18 Aug 1999 17:03:38 MIB - Style import - - Rev 1.3 17 Aug 1999 16:29:24 MIB - import of text nodes started - - Rev 1.2 13 Aug 1999 16:19:42 MIB - styles and sections - - Rev 1.1 12 Aug 1999 18:06:22 MIB - Export ofSvxFontItem, SvxFontHeightItem and SvxLRSpaceItem - - Rev 1.0 12 Aug 1999 12:29:28 MIB - Initial revision. - -*************************************************************************/ - |