blob: 21f8a894cb71975d2889933455f6ff19e7b0faaa [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
#ifndef INCLUDED_DMAPPER_DOMAINMAPPER_IMPL_HXX
#define INCLUDED_DMAPPER_DOMAINMAPPER_IMPL_HXX
#include <com/sun/star/text/XTextDocument.hpp>
#include <com/sun/star/text/XTextCursor.hpp>
#include <com/sun/star/text/XTextAppend.hpp>
#include <com/sun/star/text/XTextAppendAndConvert.hpp>
#include <com/sun/star/text/XTextFrame.hpp>
#include <com/sun/star/style/TabStop.hpp>
#include <com/sun/star/container/XNameContainer.hpp>
#include <vector>
#include <stack>
#ifndef INCLUDED_RESOURCESIDS
#include <doctok/resourceids.hxx>
#include <ooxml/resourceids.hxx>
#endif
#include <dmapper/DomainMapper.hxx>
#include <DomainMapperTableManager.hxx>
#include <PropertyMap.hxx>
#include <FontTable.hxx>
#include <NumberingManager.hxx>
#include <StyleSheetTable.hxx>
#include <SettingsTable.hxx>
#include <ThemeTable.hxx>
#include <SettingsTable.hxx>
#include <GraphicImport.hxx>
#include <OLEHandler.hxx>
#include <FFDataHandler.hxx>
#include <FormControlHelper.hxx>
#include <map>
#include <hash_map>
#include <string.h>
namespace com{ namespace sun{ namespace star{
namespace awt{
struct Size;
}
namespace lang{
class XMultiServiceFactory;
struct Locale;
}
namespace text
{
class XTextField;
}
namespace beans{ class XPropertySet;}
}}}
namespace writerfilter {
namespace dmapper {
using namespace com::sun::star;
//#define TWIP_TO_MM100(TWIP) ((TWIP) >= 0 ? (((TWIP)*127L+36L)/72L) : (((TWIP)*127L-36L)/72L))
//sal_Int32 lcl_convertToMM100(sal_Int32 _t);
struct _PageMar
{
sal_Int32 top;
sal_Int32 right;
sal_Int32 bottom;
sal_Int32 left;
sal_Int32 header;
sal_Int32 footer;
sal_Int32 gutter;
public:
_PageMar();
};
enum PageMarElement
{
PAGE_MAR_TOP,
PAGE_MAR_RIGHT,
PAGE_MAR_BOTTOM,
PAGE_MAR_LEFT,
PAGE_MAR_HEADER,
PAGE_MAR_FOOTER,
PAGE_MAR_GUTTER
};
/*-- 14.06.2006 07:42:52---------------------------------------------------
property stack element
-----------------------------------------------------------------------*/
enum ContextType
{
CONTEXT_SECTION,
CONTEXT_PARAGRAPH,
CONTEXT_CHARACTER,
CONTEXT_STYLESHEET,
CONTEXT_LIST,
NUMBER_OF_CONTEXTS
};
enum BreakType
{
PAGE_BREAK,
COLUMN_BREAK
};
/*-----------------29.01.2007 11:47-----------------
field stack element
* --------------------------------------------------*/
class FieldContext
{
bool m_bFieldCommandCompleted;
::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > m_xStartRange;
::rtl::OUString m_sCommand;
::com::sun::star::uno::Reference< ::com::sun::star::text::XTextField > m_xTextField;
::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > m_xTOC;//TOX
::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > m_xTC;//TOX entry
::rtl::OUString m_sHyperlinkURL;
FFDataHandler::Pointer_t m_pFFDataHandler;
FormControlHelper::Pointer_t m_pFormControlHelper;
public:
FieldContext(::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > xStart);
~FieldContext();
::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > GetStartRange() const { return m_xStartRange; }
void AppendCommand(const ::rtl::OUString& rPart);
const ::rtl::OUString& GetCommand() const {return m_sCommand; }
void SetCommandCompleted() { m_bFieldCommandCompleted = true; }
bool IsCommandCompleted() const { return m_bFieldCommandCompleted; }
::com::sun::star::uno::Reference< ::com::sun::star::text::XTextField > GetTextField() const { return m_xTextField;}
void SetTextField(::com::sun::star::uno::Reference< ::com::sun::star::text::XTextField > xTextField) { m_xTextField = xTextField;}
void SetTOC( ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > xTOC ) { m_xTOC = xTOC; }
::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > GetTOC() { return m_xTOC; }
void SetTC( ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > xTC ) { m_xTC = xTC; }
::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > GetTC( ) { return m_xTC; }
void SetHyperlinkURL( const ::rtl::OUString& rURL ) { m_sHyperlinkURL = rURL; }
const ::rtl::OUString& GetHyperlinkURL() { return m_sHyperlinkURL; }
void setFFDataHandler(FFDataHandler::Pointer_t pFFDataHandler) { m_pFFDataHandler = pFFDataHandler; }
FFDataHandler::Pointer_t getFFDataHandler() const { return m_pFFDataHandler; }
void setFormControlHelper(FormControlHelper::Pointer_t pFormControlHelper) { m_pFormControlHelper = pFormControlHelper; }
FormControlHelper::Pointer_t getFormControlHelper() const { return m_pFormControlHelper; }
::std::vector<rtl::OUString> GetCommandParts() const;
};
struct TextAppendContext
{
::com::sun::star::uno::Reference< ::com::sun::star::text::XTextAppend > xTextAppend;
ParagraphPropertiesPtr pLastParagraphProperties;
TextAppendContext( const ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextAppend >& xAppend )
: xTextAppend( xAppend )
{
}
};
typedef boost::shared_ptr<FieldContext> FieldContextPtr;
typedef std::stack<ContextType> ContextStack;
typedef std::stack<PropertyMapPtr> PropertyStack;
typedef std::stack< TextAppendContext > TextAppendStack;
typedef std::stack<FieldContextPtr> FieldStack;
typedef std::stack< com::sun::star::uno::Reference< com::sun::star::text::XTextContent > > TextContentStack;
/*-- 18.07.2006 08:49:08---------------------------------------------------
-----------------------------------------------------------------------*/
class FIB
{
sal_Int32 aFIBData[ NS_rtf::LN_LCBSTTBFUSSR - NS_rtf::LN_WIDENT + 1];
sal_Int32 nLNCHS;
public:
FIB() :
nLNCHS( 0 )
{
memset(&aFIBData, 0x00, sizeof(aFIBData));
}
sal_Int32 GetLNCHS() const {return nLNCHS;}
void SetLNCHS(sal_Int32 nValue) {nLNCHS = nValue;}
sal_Int32 GetData( Id nName );
void SetData( Id nName, sal_Int32 nValue );
};
/*-- 17.07.2006 09:14:13---------------------------------------------------
extended tab stop struct
-----------------------------------------------------------------------*/
struct DeletableTabStop : public ::com::sun::star::style::TabStop
{
bool bDeleted;
DeletableTabStop()
: TabStop()
, bDeleted( false )
{}
DeletableTabStop( const ::com::sun::star::style::TabStop& rTabStop )
: TabStop( rTabStop )
, bDeleted( false )
{}
};
/*-- 12.06.2007 07:15:31---------------------------------------------------
/// helper to remember bookmark start position
-----------------------------------------------------------------------*/
struct BookmarkInsertPosition
{
bool m_bIsStartOfText;
::rtl::OUString m_sBookmarkName;
::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > m_xTextRange;
BookmarkInsertPosition(
bool bIsStartOfText,
const ::rtl::OUString& rName,
::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > xTextRange )
: m_bIsStartOfText( bIsStartOfText )
, m_sBookmarkName( rName )
, m_xTextRange( xTextRange )
{}
};
/// Stores the start/end positions of an annotation before its insertion.
struct AnnotationPosition
{
::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > m_xStart;
::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > m_xEnd;
};
typedef std::unordered_map< sal_Int32, AnnotationPosition > AnnotationPositions_t;
struct RedlineParams
{
::rtl::OUString m_sAuthor;
::rtl::OUString m_sDate;
sal_Int32 m_nId;
sal_Int32 m_nToken;
};
typedef boost::shared_ptr< RedlineParams > RedlineParamsPtr;
/*-- 03.03.2008 11:01:38---------------------------------------------------
-----------------------------------------------------------------------*/
struct LineNumberSettings
{
bool bIsOn;
sal_Int32 nDistance;
sal_Int32 nInterval;
sal_Int32 bRestartAtEachPage;
sal_Int32 nStartValue;
LineNumberSettings() :
bIsOn(false)
,nDistance(0)
,nInterval(0)
,bRestartAtEachPage(true)
,nStartValue(1)
{}
};
/*-- 09.06.2006 10:15:20---------------------------------------------------
-----------------------------------------------------------------------*/
class DomainMapper;
class DomainMapper_Impl
{
public:
typedef TableManager< ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange >, PropertyMapPtr > TableManager_t;
typedef TableDataHandler< ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange >, TablePropertyMapPtr > TableDataHandler_t;
typedef std::map < sal_Int32, BookmarkInsertPosition > BookmarkMap_t;
private:
SourceDocumentType m_eDocumentType;
DomainMapper& m_rDMapper;
::com::sun::star::uno::Reference< ::com::sun::star::text::XTextDocument > m_xTextDocument;
::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > m_xDocumentSettings;
::com::sun::star::uno::Reference < ::com::sun::star::lang::XMultiServiceFactory > m_xTextFactory;
::com::sun::star::uno::Reference < com::sun::star::uno::XComponentContext > m_xComponentContext;
::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer > m_xPageStyles;
::com::sun::star::uno::Reference< ::com::sun::star::text::XText > m_xBodyText;
TextAppendStack m_aTextAppendStack;
TextContentStack
m_aAnchoredStack;
FieldStack m_aFieldStack;
bool m_bFieldMode;
bool m_bSetUserFieldContent;
bool m_bIsFirstSection;
bool m_bIsColumnBreakDeferred;
bool m_bIsPageBreakDeferred;
bool m_bIsInShape;
bool m_bShapeContextAdded;
LineNumberSettings m_aLineNumberSettings;
BookmarkMap_t m_aBookmarkMap;
_PageMar m_aPageMargins;
// TableManagers are stacked: one for each stream to avoid any confusion
std::stack< boost::shared_ptr< DomainMapperTableManager > > m_aTableManagers;
//each context needs a stack of currently used attributes
FIB m_aFIB;
PropertyStack m_aPropertyStacks[NUMBER_OF_CONTEXTS];
ContextStack m_aContextStack;
FontTablePtr m_pFontTable;
ListsManager::Pointer m_pListTable;
StyleSheetTablePtr m_pStyleSheetTable;
ThemeTablePtr m_pThemeTable;
SettingsTablePtr m_pSettingsTable;
GraphicImportPtr m_pGraphicImport;
PropertyMapPtr m_pTopContext;
PropertyMapPtr m_pLastSectionContext;
::std::vector<DeletableTabStop> m_aCurrentTabStops;
sal_uInt32 m_nCurrentTabStopIndex;
::rtl::OUString m_sCurrentParaStyleId;
bool m_bInStyleSheetImport; //in import of fonts, styles, lists or lfos
bool m_bInAnyTableImport; //in import of fonts, styles, lists or lfos
bool m_bLineNumberingSet;
bool m_bIsInFootnoteProperties;
bool m_bIsCustomFtnMark;
//registered frame properties
::com::sun::star::uno::Sequence< beans::PropertyValue > m_aFrameProperties;
::com::sun::star::uno::Reference< text::XTextRange > m_xFrameStartRange;
::com::sun::star::uno::Reference< text::XTextRange > m_xFrameEndRange;
// Redline stack
std::vector< RedlineParamsPtr > m_aRedlines;
RedlineParamsPtr m_pParaRedline;
bool m_bIsParaChange;
bool m_bParaChanged;
bool m_bIsLastParaInSection;
bool m_bIsInComments;
//annotation import
uno::Reference< beans::XPropertySet > m_xAnnotationField;
sal_Int32 m_nAnnotationId;
AnnotationPositions_t m_aAnnotationPositions;
void GetCurrentLocale(::com::sun::star::lang::Locale& rLocale);
void SetNumberFormat( const ::rtl::OUString& rCommand,
::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& xPropertySet );
::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >
FindOrCreateFieldMaster( const sal_Char* pFieldMasterService,
const ::rtl::OUString& rFieldMasterName )
throw(::com::sun::star::uno::Exception);
::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > GetDocumentSettings();
public:
DomainMapper_Impl(
DomainMapper& rDMapper,
uno::Reference < uno::XComponentContext > xContext,
uno::Reference< lang::XComponent > xModel,
SourceDocumentType eDocumentType );
DomainMapper_Impl();
virtual ~DomainMapper_Impl();
SectionPropertyMap* GetLastSectionContext( )
{
return dynamic_cast< SectionPropertyMap* >( m_pLastSectionContext.get( ) );
}
::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer > GetPageStyles();
::com::sun::star::uno::Reference< ::com::sun::star::text::XText > GetBodyText();
::com::sun::star::uno::Reference < ::com::sun::star::lang::XMultiServiceFactory > GetTextFactory() const
{
return m_xTextFactory;
}
::com::sun::star::uno::Reference < com::sun::star::uno::XComponentContext > GetComponentContext() const
{
return m_xComponentContext;
}
::com::sun::star::uno::Reference< ::com::sun::star::text::XTextDocument > GetTextDocument() const
{
return m_xTextDocument;
}
void SetDocumentSettingsProperty( const ::rtl::OUString& rPropName, const uno::Any& rValue );
void CreateRedline( ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > xRange, RedlineParamsPtr& pRedline );
void CheckParaRedline( ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > xRange );
void CheckRedline( ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > xRange );
void StartParaChange( );
void EndParaChange( );
void RemoveLastParagraph( );
void SetIsLastParagraphInSection( bool bIsLast );
void deferBreak( BreakType deferredBreakType );
bool isBreakDeferred( BreakType deferredBreakType );
void clearDeferredBreaks();
void finishParagraph( PropertyMapPtr pPropertyMap );
void appendTextPortion( const ::rtl::OUString& rString, PropertyMapPtr pPropertyMap );
void appendTextContent( const ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextContent >,
const uno::Sequence< beans::PropertyValue > );
void appendOLE( const ::rtl::OUString& rStreamName, OLEHandlerPtr pOleHandler );
::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > appendTextSectionAfter(
::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange >& xBefore );
// void appendTextSection();
FIB& GetFIB() {return m_aFIB;}
// push the new properties onto the stack and make it the 'current' property map
void PushProperties(ContextType eId);
void PushStyleProperties(PropertyMapPtr pStyleProperties);
void PushListProperties(PropertyMapPtr pListProperties);
void PopProperties(ContextType eId);
ContextType GetTopContextType() const { return m_aContextStack.top(); }
PropertyMapPtr GetTopContext()
{
return m_pTopContext;
}
PropertyMapPtr GetTopContextOfType(ContextType eId);
::com::sun::star::uno::Reference< ::com::sun::star::text::XTextAppend > GetTopTextAppend();
FontTablePtr GetFontTable()
{
if(!m_pFontTable)
m_pFontTable.reset(new FontTable());
return m_pFontTable;
}
StyleSheetTablePtr GetStyleSheetTable()
{
if(!m_pStyleSheetTable)
m_pStyleSheetTable.reset(new StyleSheetTable( m_rDMapper, m_xTextDocument ));
return m_pStyleSheetTable;
}
ListsManager::Pointer GetListTable();
ThemeTablePtr GetThemeTable()
{
if(!m_pThemeTable)
m_pThemeTable.reset( new ThemeTable );
return m_pThemeTable;
}
SettingsTablePtr GetSettingsTable()
{
if( !m_pSettingsTable )
m_pSettingsTable.reset( new SettingsTable( m_rDMapper, m_xTextFactory ) );
return m_pSettingsTable;
}
GraphicImportPtr GetGraphicImport( GraphicImportType eGraphicImportType );
void ResetGraphicImport();
// this method deletes the current m_pGraphicImport after import
void ImportGraphic(writerfilter::Reference< Properties>::Pointer_t, GraphicImportType eGraphicImportType );
void InitTabStopFromStyle( const ::com::sun::star::uno::Sequence< ::com::sun::star::style::TabStop >& rInitTabStops );
void ModifyCurrentTabStop( Id nId, sal_Int32 nValue);
void IncorporateTabStop( const DeletableTabStop &aTabStop );
::com::sun::star::uno::Sequence< ::com::sun::star::style::TabStop > GetCurrentTabStopAndClear();
void NextTabStop() {++m_nCurrentTabStopIndex;}
void SetCurrentParaStyleId(::rtl::OUString sStringValue) {m_sCurrentParaStyleId = sStringValue;}
::rtl::OUString GetCurrentParaStyleId() const {return m_sCurrentParaStyleId;}
::com::sun::star::uno::Any GetPropertyFromStyleSheet(PropertyIds eId);
void SetStyleSheetImport( bool bSet ) { m_bInStyleSheetImport = bSet;}
bool IsStyleSheetImport()const { return m_bInStyleSheetImport;}
void SetAnyTableImport( bool bSet ) { m_bInAnyTableImport = bSet;}
bool IsAnyTableImport()const { return m_bInAnyTableImport;}
void PushShapeContext( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > xShape );
void PopShapeContext();
void PushPageHeader(SectionPropertyMap::PageType eType);
void PushPageFooter(SectionPropertyMap::PageType eType);
void PopPageHeaderFooter();
void PushFootOrEndnote( bool bIsFootnote );
void PopFootOrEndnote();
void PushAnnotation();
void PopAnnotation();
//field context starts with a 0x13
void PushFieldContext();
//the current field context waits for the completion of the command
bool IsOpenFieldCommand() const;
bool IsOpenField() const;
//collect the pieces of the command
void AppendFieldCommand(::rtl::OUString& rPartOfCommand);
void handleFieldAsk
(FieldContextPtr pContext,
PropertyNameSupplier& rPropNameSupplier,
uno::Reference< uno::XInterface > & xFieldInterface,
uno::Reference< beans::XPropertySet > xFieldProperties);
void handleAutoNum
(FieldContextPtr pContext,
PropertyNameSupplier& rPropNameSupplier,
uno::Reference< uno::XInterface > & xFieldInterface,
uno::Reference< beans::XPropertySet > xFieldProperties);
void handleAuthor
(FieldContextPtr pContext,
PropertyNameSupplier& rPropNameSupplier,
uno::Reference< uno::XInterface > & xFieldInterface,
uno::Reference< beans::XPropertySet > xFieldProperties);
void handleDocProperty
(FieldContextPtr pContext,
PropertyNameSupplier& rPropNameSupplier,
uno::Reference< uno::XInterface > & xFieldInterface,
uno::Reference< beans::XPropertySet > xFieldProperties);
void handleToc
(FieldContextPtr pContext,
PropertyNameSupplier& rPropNameSupplier,
uno::Reference< uno::XInterface > & xFieldInterface,
uno::Reference< beans::XPropertySet > xFieldProperties,
const ::rtl::OUString & sTOCServiceName);
//the field command has to be closed (0x14 appeared)
void CloseFieldCommand();
//the _current_ fields require a string type result while TOCs accept richt results
bool IsFieldResultAsString();
//apply the result text to the related field
void SetFieldResult( ::rtl::OUString& rResult );
// set FFData of top field context
void SetFieldFFData( FFDataHandler::Pointer_t pFFDataHandler );
//the end of field is reached (0x15 appeared) - the command might still be open
void PopFieldContext();
void AddBookmark(
const ::rtl::OUString& rBookmarkName,
const sal_Int32 nId );
void AddAnnotationPosition(
const bool bStart,
const sal_Int32 nAnnotationId );
DomainMapperTableManager& getTableManager()
{
boost::shared_ptr< DomainMapperTableManager > pMngr = m_aTableManagers.top();
return *pMngr.get( );
}
void appendTableManager()
{
boost::shared_ptr< DomainMapperTableManager > pMngr(
new DomainMapperTableManager( m_eDocumentType == DOCUMENT_OOXML ) );
m_aTableManagers.push( pMngr );
}
void popTableManager( )
{
if ( m_aTableManagers.size( ) > 0 )
m_aTableManagers.pop( );
}
void SetLineNumbering( sal_Int32 nLnnMod, sal_Int32 nLnc, sal_Int32 ndxaLnn );
bool IsLineNumberingSet() const {return m_bLineNumberingSet;}
DeletableTabStop m_aCurrentTabStop;
bool IsOOXMLImport() const { return m_eDocumentType == DOCUMENT_OOXML; }
void InitPageMargins() { m_aPageMargins = _PageMar(); }
void SetPageMarginTwip( PageMarElement eElement, sal_Int32 nValue );
const _PageMar& GetPageMargins() const {return m_aPageMargins;}
const LineNumberSettings& GetLineNumberSettings() const { return m_aLineNumberSettings;}
void SetLineNumberSettings(const LineNumberSettings& rSet) { m_aLineNumberSettings = rSet;}
void SetInFootnoteProperties(bool bSet) { m_bIsInFootnoteProperties = bSet;}
bool IsInFootnoteProperties() const { return m_bIsInFootnoteProperties;}
void SetCustomFtnMark(bool bSet) { m_bIsCustomFtnMark = bSet; }
bool IsCustomFtnMark() const { return m_bIsCustomFtnMark; }
bool IsInComments() const { return m_bIsInComments; };
void RegisterFrameConversion(
::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > xFrameStartRange,
::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > xFrameEndRange,
::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > aFrameProperties
);
bool ExecuteFrameConversion();
void AddNewRedline( );
RedlineParamsPtr GetTopRedline( );
sal_Int32 GetCurrentRedlineToken( );
void SetCurrentRedlineAuthor( rtl::OUString sAuthor );
void SetCurrentRedlineDate( rtl::OUString sDate );
void SetCurrentRedlineId( sal_Int32 nId );
void SetCurrentRedlineToken( sal_Int32 nToken );
void RemoveCurrentRedline( );
void ResetParaRedline( );
void SetCurrentRedlineInitials( rtl::OUString sInitials );
void ApplySettingsTable();
SectionPropertyMap * GetSectionContext();
};
} //namespace dmapper
} //namespace writerfilter
#endif