diff options
Diffstat (limited to 'sw/inc/tox.hxx')
-rw-r--r-- | sw/inc/tox.hxx | 782 |
1 files changed, 782 insertions, 0 deletions
diff --git a/sw/inc/tox.hxx b/sw/inc/tox.hxx new file mode 100644 index 000000000000..1729cb93945d --- /dev/null +++ b/sw/inc/tox.hxx @@ -0,0 +1,782 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org 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 version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef SW_TOX_HXX +#define SW_TOX_HXX + +#include <cppuhelper/weakref.hxx> + +#include <i18npool/lang.h> +#include <tools/string.hxx> +#include <osl/diagnose.h> + +#include <editeng/svxenum.hxx> +#include <svl/svarray.hxx> +#include <svl/poolitem.hxx> +#include "swdllapi.h" +#include <swtypes.hxx> +#include <toxe.hxx> +#include <calbck.hxx> + +#ifndef INCLUDED_VECTOR +#include <vector> // #i21237# +#define INCLUDED_VECTOR +#endif + + +namespace com { namespace sun { namespace star { + namespace text { class XDocumentIndexMark; } +} } } + +class SwTOXType; +class SwTOXMark; +class SwTxtTOXMark; +class SwDoc; + +SV_DECL_PTRARR(SwTOXMarks, SwTOXMark*, 0, 10) + +/*-------------------------------------------------------------------- + Description: Entry of content index, alphabetical index or user defined index + --------------------------------------------------------------------*/ + +#define IVER_TOXMARK_STRPOOL ((sal_uInt16)1) +#define IVER_TOXMARK_NEWTOX ((sal_uInt16)2) + +class SW_DLLPUBLIC SwTOXMark + : public SfxPoolItem + , public SwModify +{ + friend void _InitCore(); + friend class SwTxtTOXMark; + + String aAltText; // Text of caption is different. + String aPrimaryKey, aSecondaryKey; + + // three more strings for phonetic sorting + String aTextReading; + String aPrimaryKeyReading; + String aSecondaryKeyReading; + + SwTxtTOXMark* pTxtAttr; + + sal_uInt16 nLevel; + sal_Bool bAutoGenerated : 1; // generated using a concordance file + sal_Bool bMainEntry : 1; // main entry emphasized by character style + + ::com::sun::star::uno::WeakReference< + ::com::sun::star::text::XDocumentIndexMark> m_wXDocumentIndexMark; + + SwTOXMark(); // to create the dflt. atr. in _InitCore + +protected: + // SwClient + virtual void Modify( const SfxPoolItem* pOld, const SfxPoolItem* pNew ); + +public: + TYPEINFO(); // rtti + + // single argument ctors shall be explicit. + explicit SwTOXMark( const SwTOXType* pTyp ); + virtual ~SwTOXMark(); + + SwTOXMark( const SwTOXMark& rCopy ); + SwTOXMark& operator=( const SwTOXMark& rCopy ); + + // "pure virtual methods" of SfxPoolItem + virtual int operator==( const SfxPoolItem& ) const; + virtual SfxPoolItem* Clone( SfxItemPool* pPool = 0 ) const; + + void InvalidateTOXMark(); + + String GetText() const; + + inline sal_Bool IsAlternativeText() const; + inline const String& GetAlternativeText() const; + + inline void SetAlternativeText( const String& rAlt ); + + // content or user defined index + inline void SetLevel(sal_uInt16 nLevel); + inline sal_uInt16 GetLevel() const; + + // for alphabetical index only + inline void SetPrimaryKey(const String& rStr ); + inline void SetSecondaryKey(const String& rStr); + inline void SetTextReading(const String& rStr); + inline void SetPrimaryKeyReading(const String& rStr ); + inline void SetSecondaryKeyReading(const String& rStr); + + inline const String& GetPrimaryKey() const; + inline const String& GetSecondaryKey() const; + inline const String& GetTextReading() const; + inline const String& GetPrimaryKeyReading() const; + inline const String& GetSecondaryKeyReading() const; + + sal_Bool IsAutoGenerated() const {return bAutoGenerated;} + void SetAutoGenerated(sal_Bool bSet) {bAutoGenerated = bSet;} + + sal_Bool IsMainEntry() const {return bMainEntry;} + void SetMainEntry(sal_Bool bSet) { bMainEntry = bSet;} + + inline const SwTOXType* GetTOXType() const; + + const SwTxtTOXMark* GetTxtTOXMark() const { return pTxtAttr; } + SwTxtTOXMark* GetTxtTOXMark() { return pTxtAttr; } + + SW_DLLPRIVATE ::com::sun::star::uno::WeakReference< + ::com::sun::star::text::XDocumentIndexMark> const& GetXTOXMark() const + { return m_wXDocumentIndexMark; } + SW_DLLPRIVATE void SetXTOXMark(::com::sun::star::uno::Reference< + ::com::sun::star::text::XDocumentIndexMark> const& xMark) + { m_wXDocumentIndexMark = xMark; } + void DeRegister() { GetRegisteredInNonConst()->Remove( this ); } + void RegisterToTOXType( SwTOXType& rMark ); + static void InsertTOXMarks( SwTOXMarks& aMarks, const SwTOXType& rType ); +}; + +/*-------------------------------------------------------------------- + Description: index types + --------------------------------------------------------------------*/ + +class SwTOXType : public SwModify +{ +public: + SwTOXType(TOXTypes eTyp, const String& aName); + + // @@@ public copy ctor, but no copy assignment? + SwTOXType(const SwTOXType& rCopy); + + inline const String& GetTypeName() const; + inline TOXTypes GetType() const; + +private: + String aName; + TOXTypes eType; + + // @@@ public copy ctor, but no copy assignment? + SwTOXType & operator= (const SwTOXType &); +}; + +/*-------------------------------------------------------------------- + Description: Structure of the index lines + --------------------------------------------------------------------*/ + +#define FORM_TITLE 0 +#define FORM_ALPHA_DELIMITTER 1 +#define FORM_PRIMARY_KEY 2 +#define FORM_SECONDARY_KEY 3 +#define FORM_ENTRY 4 + +/* + Pattern structure + + <E#> - entry number <E# CharStyleName,PoolId> + <ET> - entry text <ET CharStyleName,PoolId> + <E> - entry text and number <E CharStyleName,PoolId> + <T> - tab stop <T,,Position,Adjust> + <C> - chapter info n = {0, 1, 2, 3, 4 } values of SwChapterFormat <C CharStyleName,PoolId> + <TX> - text token <X CharStyleName,PoolId, TOX_STYLE_DELIMITERTextContentTOX_STYLE_DELIMITER> + <#> - Page number <# CharStyleName,PoolId> + <LS> - Link start <LS> + <LE> - Link end <LE> + <A00> - Authority entry field <A02 CharStyleName, PoolId> + */ + +// These enum values are stored and must not be changed! +enum FormTokenType +{ + TOKEN_ENTRY_NO, + TOKEN_ENTRY_TEXT, + TOKEN_ENTRY, + TOKEN_TAB_STOP, + TOKEN_TEXT, + TOKEN_PAGE_NUMS, + TOKEN_CHAPTER_INFO, + TOKEN_LINK_START, + TOKEN_LINK_END, + TOKEN_AUTHORITY, + TOKEN_END +}; + +struct SW_DLLPUBLIC SwFormToken +{ + String sText; + String sCharStyleName; + SwTwips nTabStopPosition; + FormTokenType eTokenType; + sal_uInt16 nPoolId; + SvxTabAdjust eTabAlign; + sal_uInt16 nChapterFormat; //SwChapterFormat; + sal_uInt16 nOutlineLevel;//the maximum permitted outline level in numbering + sal_uInt16 nAuthorityField; //enum ToxAuthorityField + sal_Unicode cTabFillChar; + sal_Bool bWithTab; // sal_True: do generate tab + // character only the tab stop + // #i21237# + + SwFormToken(FormTokenType eType ) : + nTabStopPosition(0), + eTokenType(eType), + nPoolId(USHRT_MAX), + eTabAlign( SVX_TAB_ADJUST_LEFT ), + nChapterFormat(0 /*CF_NUMBER*/), + nOutlineLevel(MAXLEVEL), //default to maximum outline level + nAuthorityField(0 /*AUTH_FIELD_IDENTIFIER*/), + cTabFillChar(' '), + bWithTab(sal_True) // #i21237# + {} + + String GetString() const; +}; + +struct SwFormTokenEqualToFormTokenType +{ + FormTokenType eType; + + SwFormTokenEqualToFormTokenType(FormTokenType _eType) : eType(_eType) {} + bool operator()(const SwFormToken & rToken) + { + return rToken.eTokenType == eType; + } +}; + +/** + Functor that appends the string representation of a given token to a string. + + @param _rText string to append the string representation to + @param rToken token whose string representation is appended +*/ +struct SwFormTokenToString +{ + String & rText; + SwFormTokenToString(String & _rText) : rText(_rText) {} + void operator()(const SwFormToken & rToken) { rText += rToken.GetString(); } +}; + +/// Vector of tokens. +typedef std::vector<SwFormToken> SwFormTokens; + +/** + Helper class that converts vectors of tokens to strings and vice + versa. + */ +class SW_DLLPUBLIC SwFormTokensHelper +{ + /// the tokens + SwFormTokens aTokens; + + /** + Builds a token from its string representation. + + @sPattern the whole pattern + @nCurPatternPos starting position of the token + + @return the token + */ + SW_DLLPRIVATE SwFormToken BuildToken( const String & sPattern, + xub_StrLen & nCurPatternPos ) const; + + /** + Returns the string of a token. + + @param sPattern the whole pattern + @param nStt starting position of the token + + @return the string representation of the token + */ + SW_DLLPRIVATE String SearchNextToken( const String & sPattern, + xub_StrLen nStt ) const; + + /** + Returns the type of a token. + + @param sToken the string representation of the token + @param pTokenLen return parameter the length of the head of the token + + If pTokenLen is non-NULL the length of the token's head is + written to *pTokenLen + + @return the type of the token + */ + SW_DLLPRIVATE FormTokenType GetTokenType(const String & sToken, + xub_StrLen * pTokenLen) const; + +public: + /** + contructor + + @param rTokens vector of tokens + */ + SwFormTokensHelper(const SwFormTokens & rTokens) : aTokens(rTokens) {} + + /** + constructor + + @param rStr string representation of the tokens + */ + SwFormTokensHelper(const String & rStr); + + /** + Returns vector of tokens. + + @return vector of tokens + */ + const SwFormTokens & GetTokens() const { return aTokens; } +}; + +class SW_DLLPUBLIC SwForm +{ + SwFormTokens aPattern[ AUTH_TYPE_END + 1 ]; // #i21237# + String aTemplate[ AUTH_TYPE_END + 1 ]; + + TOXTypes eType; + sal_uInt16 nFormMaxLevel; + + sal_Bool bGenerateTabPos : 1; + sal_Bool bIsRelTabPos : 1; + sal_Bool bCommaSeparated : 1; + +public: + SwForm( TOXTypes eTOXType = TOX_CONTENT ); + SwForm( const SwForm& rForm ); + + SwForm& operator=( const SwForm& rForm ); + + inline void SetTemplate(sal_uInt16 nLevel, const String& rName); + inline const String& GetTemplate(sal_uInt16 nLevel) const; + + // #i21237# + void SetPattern(sal_uInt16 nLevel, const SwFormTokens& rName); + void SetPattern(sal_uInt16 nLevel, const String& rStr); + const SwFormTokens& GetPattern(sal_uInt16 nLevel) const; + + // fill tab stop positions from template to pattern + // #i21237# + void AdjustTabStops(SwDoc& rDoc, + sal_Bool bInsertNewTabStops = sal_False); + + inline TOXTypes GetTOXType() const; + inline sal_uInt16 GetFormMax() const; + + sal_Bool IsRelTabPos() const { return bIsRelTabPos; } + void SetRelTabPos( sal_Bool b ) { bIsRelTabPos = b; } + + sal_Bool IsCommaSeparated() const { return bCommaSeparated;} + void SetCommaSeparated( sal_Bool b) { bCommaSeparated = b;} + + static sal_uInt16 GetFormMaxLevel( TOXTypes eType ); + + static const sal_Char* aFormEntry; // <E> + static sal_uInt8 nFormEntryLen; // 3 characters + static const sal_Char* aFormTab; // <T> + static sal_uInt8 nFormTabLen; // 3 characters + static const sal_Char* aFormPageNums; // <P> + static sal_uInt8 nFormPageNumsLen; // 3 characters + static const sal_Char* aFormLinkStt; // <LS> + static sal_uInt8 nFormLinkSttLen; // 4 characters + static const sal_Char* aFormLinkEnd; // <LE> + static sal_uInt8 nFormLinkEndLen; // 4 characters + static const sal_Char* aFormEntryNum; // <E#> + static sal_uInt8 nFormEntryNumLen; // 4 characters + static const sal_Char* aFormEntryTxt; // <ET> + static sal_uInt8 nFormEntryTxtLen; // 4 characters + static const sal_Char* aFormChapterMark; // <C> + static sal_uInt8 nFormChapterMarkLen; // 3 characters + static const sal_Char* aFormText; // <TX> + static sal_uInt8 nFormTextLen; // 4 characters + static const sal_Char* aFormAuth; // <Axx> xx - decimal enum value + static sal_uInt8 nFormAuthLen; // 3 characters +}; + +/*-------------------------------------------------------------------- + Description: Content to create indexes of + --------------------------------------------------------------------*/ + +typedef sal_uInt16 SwTOXElement; +namespace nsSwTOXElement +{ + const SwTOXElement TOX_MARK = 1; + const SwTOXElement TOX_OUTLINELEVEL = 2; + const SwTOXElement TOX_TEMPLATE = 4; + const SwTOXElement TOX_OLE = 8; + const SwTOXElement TOX_TABLE = 16; + const SwTOXElement TOX_GRAPHIC = 32; + const SwTOXElement TOX_FRAME = 64; + const SwTOXElement TOX_SEQUENCE = 128; +} + +typedef sal_uInt16 SwTOIOptions; +namespace nsSwTOIOptions +{ + const SwTOIOptions TOI_SAME_ENTRY = 1; + const SwTOIOptions TOI_FF = 2; + const SwTOIOptions TOI_CASE_SENSITIVE = 4; + const SwTOIOptions TOI_KEY_AS_ENTRY = 8; + const SwTOIOptions TOI_ALPHA_DELIMITTER = 16; + const SwTOIOptions TOI_DASH = 32; + const SwTOIOptions TOI_INITIAL_CAPS = 64; +} + +//which part of the caption is to be displayed +enum SwCaptionDisplay +{ + CAPTION_COMPLETE, + CAPTION_NUMBER, + CAPTION_TEXT +}; + +typedef sal_uInt16 SwTOOElements; +namespace nsSwTOOElements +{ + const SwTOOElements TOO_MATH = 0x01; + const SwTOOElements TOO_CHART = 0x02; + const SwTOOElements TOO_CALC = 0x08; + const SwTOOElements TOO_DRAW_IMPRESS = 0x10; + const SwTOOElements TOO_OTHER = 0x80; +} + +#define TOX_STYLE_DELIMITER ((sal_Unicode)0x01) + +/*-------------------------------------------------------------------- + Description: Class for all indexes + --------------------------------------------------------------------*/ + +class SW_DLLPUBLIC SwTOXBase : public SwClient +{ + SwForm aForm; // description of the lines + String aName; // unique name + String aTitle; // title + + String sMainEntryCharStyle; // name of the character style applied to main index entries + + String aStyleNames[MAXLEVEL]; // (additional) style names TOX_CONTENT, TOX_USER + String sSequenceName; // FieldTypeName of a caption sequence + + LanguageType eLanguage; + String sSortAlgorithm; + + union { + sal_uInt16 nLevel; // consider outline levels + sal_uInt16 nOptions; // options of alphabetical index + } aData; + + sal_uInt16 nCreateType; // sources to create the index from + sal_uInt16 nOLEOptions; // OLE sources + SwCaptionDisplay eCaptionDisplay; // + sal_Bool bProtected : 1; // index protected ? + sal_Bool bFromChapter : 1; // create from chapter or document + sal_Bool bFromObjectNames : 1; // create a table or object index + // from the names rather than the caption + sal_Bool bLevelFromChapter : 1; // User index: get the level from the source chapter +public: + SwTOXBase( const SwTOXType* pTyp, const SwForm& rForm, + sal_uInt16 nCreaType, const String& rTitle ); + SwTOXBase( const SwTOXBase& rCopy, SwDoc* pDoc = 0 ); + virtual ~SwTOXBase(); + + virtual sal_Bool GetInfo( SfxPoolItem& rInfo ) const; + + // a kind of CopyCtor - check if the TOXBase is at TOXType of the doc. + // If not, so create it an copy all other used things. The return is this + SwTOXBase& CopyTOXBase( SwDoc*, const SwTOXBase& ); + + const SwTOXType* GetTOXType() const; // + + sal_uInt16 GetCreateType() const; // creation types + + const String& GetTOXName() const {return aName;} + void SetTOXName(const String& rSet) {aName = rSet;} + + const String& GetTitle() const; // Title + const String& GetTypeName() const; // Name + const SwForm& GetTOXForm() const; // description of the lines + + void SetCreate(sal_uInt16); + void SetTitle(const String& rTitle); + void SetTOXForm(const SwForm& rForm); + + TOXTypes GetType() const; + + const String& GetMainEntryCharStyle() const {return sMainEntryCharStyle;} + void SetMainEntryCharStyle(const String& rSet) {sMainEntryCharStyle = rSet;} + + // content index only + inline void SetLevel(sal_uInt16); // consider outline level + inline sal_uInt16 GetLevel() const; + + // alphabetical index only + inline sal_uInt16 GetOptions() const; // alphabetical index options + inline void SetOptions(sal_uInt16 nOpt); + + // index of objects + sal_uInt16 GetOLEOptions() const {return nOLEOptions;} + void SetOLEOptions(sal_uInt16 nOpt) {nOLEOptions = nOpt;} + + // index of objects + + // user defined index only + inline void SetTemplateName(const String& rName); // Absatzlayout beachten + + const String& GetStyleNames(sal_uInt16 nLevel) const + { + OSL_ENSURE( nLevel < MAXLEVEL, "Which level?"); + return aStyleNames[nLevel]; + } + void SetStyleNames(const String& rSet, sal_uInt16 nLevel) + { + OSL_ENSURE( nLevel < MAXLEVEL, "Which level?"); + aStyleNames[nLevel] = rSet; + } + sal_Bool IsFromChapter() const { return bFromChapter;} + void SetFromChapter(sal_Bool bSet) { bFromChapter = bSet;} + + sal_Bool IsFromObjectNames() const {return bFromObjectNames;} + void SetFromObjectNames(sal_Bool bSet) {bFromObjectNames = bSet;} + + sal_Bool IsLevelFromChapter() const {return bLevelFromChapter;} + void SetLevelFromChapter(sal_Bool bSet) {bLevelFromChapter = bSet;} + + sal_Bool IsProtected() const { return bProtected; } + void SetProtected(sal_Bool bSet) { bProtected = bSet; } + + const String& GetSequenceName() const {return sSequenceName;} + void SetSequenceName(const String& rSet) {sSequenceName = rSet;} + + SwCaptionDisplay GetCaptionDisplay() const { return eCaptionDisplay;} + void SetCaptionDisplay(SwCaptionDisplay eSet) {eCaptionDisplay = eSet;} + + sal_Bool IsTOXBaseInReadonly() const; + + const SfxItemSet* GetAttrSet() const; + void SetAttrSet( const SfxItemSet& ); + + LanguageType GetLanguage() const {return eLanguage;} + void SetLanguage(LanguageType nLang) {eLanguage = nLang;} + + const String& GetSortAlgorithm()const {return sSortAlgorithm;} + void SetSortAlgorithm(const String& rSet) {sSortAlgorithm = rSet;} + // #i21237# + void AdjustTabStops(SwDoc & rDoc, sal_Bool bDefaultRightTabStop); + SwTOXBase& operator=(const SwTOXBase& rSource); + void RegisterToTOXType( SwTOXType& rMark ); +}; + + +/*-------------------------------------------------------------------- + Description: Inlines + --------------------------------------------------------------------*/ + +// +//SwTOXMark +// +inline const String& SwTOXMark::GetAlternativeText() const + { return aAltText; } + +inline const SwTOXType* SwTOXMark::GetTOXType() const + { return (SwTOXType*)GetRegisteredIn(); } + +inline sal_Bool SwTOXMark::IsAlternativeText() const + { return aAltText.Len() > 0; } + +inline void SwTOXMark::SetAlternativeText(const String& rAlt) +{ + aAltText = rAlt; +} + +inline void SwTOXMark::SetLevel( sal_uInt16 nLvl ) +{ + OSL_ENSURE( !GetTOXType() || GetTOXType()->GetType() != TOX_INDEX, "Falscher Feldtyp"); + nLevel = nLvl; +} + +inline void SwTOXMark::SetPrimaryKey( const String& rKey ) +{ + OSL_ENSURE( GetTOXType()->GetType() == TOX_INDEX, "Falscher Feldtyp"); + aPrimaryKey = rKey; +} + +inline void SwTOXMark::SetSecondaryKey( const String& rKey ) +{ + OSL_ENSURE(GetTOXType()->GetType() == TOX_INDEX, "Falscher Feldtyp"); + aSecondaryKey = rKey; +} + +inline void SwTOXMark::SetTextReading( const String& rTxt ) +{ + OSL_ENSURE(GetTOXType()->GetType() == TOX_INDEX, "Falscher Feldtyp"); + aTextReading = rTxt; +} + +inline void SwTOXMark::SetPrimaryKeyReading( const String& rKey ) +{ + OSL_ENSURE(GetTOXType()->GetType() == TOX_INDEX, "Falscher Feldtyp"); + aPrimaryKeyReading = rKey; +} + +inline void SwTOXMark::SetSecondaryKeyReading( const String& rKey ) +{ + OSL_ENSURE(GetTOXType()->GetType() == TOX_INDEX, "Falscher Feldtyp"); + aSecondaryKeyReading = rKey; +} + +inline sal_uInt16 SwTOXMark::GetLevel() const +{ + OSL_ENSURE( !GetTOXType() || GetTOXType()->GetType() != TOX_INDEX, "Falscher Feldtyp"); + return nLevel; +} + +inline const String& SwTOXMark::GetPrimaryKey() const +{ + OSL_ENSURE(GetTOXType()->GetType() == TOX_INDEX, "Falscher Feldtyp"); + return aPrimaryKey; +} + +inline const String& SwTOXMark::GetSecondaryKey() const +{ + OSL_ENSURE(GetTOXType()->GetType() == TOX_INDEX, "Falscher Feldtyp"); + return aSecondaryKey; +} + +inline const String& SwTOXMark::GetTextReading() const +{ + OSL_ENSURE(GetTOXType()->GetType() == TOX_INDEX, "Falscher Feldtyp"); + return aTextReading; +} + +inline const String& SwTOXMark::GetPrimaryKeyReading() const +{ + OSL_ENSURE(GetTOXType()->GetType() == TOX_INDEX, "Falscher Feldtyp"); + return aPrimaryKeyReading; +} + +inline const String& SwTOXMark::GetSecondaryKeyReading() const +{ + OSL_ENSURE(GetTOXType()->GetType() == TOX_INDEX, "Falscher Feldtyp"); + return aSecondaryKeyReading; +} + +// +//SwForm +// +inline void SwForm::SetTemplate(sal_uInt16 nLevel, const String& rTemplate) +{ + OSL_ENSURE(nLevel < GetFormMax(), "Index >= FORM_MAX"); + aTemplate[nLevel] = rTemplate; +} + +inline const String& SwForm::GetTemplate(sal_uInt16 nLevel) const +{ + OSL_ENSURE(nLevel < GetFormMax(), "Index >= FORM_MAX"); + return aTemplate[nLevel]; +} + +inline TOXTypes SwForm::GetTOXType() const +{ + return eType; +} + +inline sal_uInt16 SwForm::GetFormMax() const +{ + return nFormMaxLevel; +} + + +// +//SwTOXType +// +inline const String& SwTOXType::GetTypeName() const + { return aName; } + +inline TOXTypes SwTOXType::GetType() const + { return eType; } + +// +// SwTOXBase +// +inline const SwTOXType* SwTOXBase::GetTOXType() const + { return (SwTOXType*)GetRegisteredIn(); } + +inline sal_uInt16 SwTOXBase::GetCreateType() const + { return nCreateType; } + +inline const String& SwTOXBase::GetTitle() const + { return aTitle; } + +inline const String& SwTOXBase::GetTypeName() const + { return GetTOXType()->GetTypeName(); } + +inline const SwForm& SwTOXBase::GetTOXForm() const + { return aForm; } + +inline void SwTOXBase::AdjustTabStops(SwDoc & rDoc, sal_Bool bDefaultRightTabStop) +{ + aForm.AdjustTabStops(rDoc, bDefaultRightTabStop); +} + +inline void SwTOXBase::SetCreate(sal_uInt16 nCreate) + { nCreateType = nCreate; } + +inline void SwTOXBase::SetTOXForm(const SwForm& rForm) + { aForm = rForm; } + +inline TOXTypes SwTOXBase::GetType() const + { return GetTOXType()->GetType(); } + +inline void SwTOXBase::SetLevel(sal_uInt16 nLev) +{ + OSL_ENSURE(GetTOXType()->GetType() != TOX_INDEX, "Falscher Feldtyp"); + aData.nLevel = nLev; +} + +inline sal_uInt16 SwTOXBase::GetLevel() const +{ + OSL_ENSURE(GetTOXType()->GetType() != TOX_INDEX, "Falscher Feldtyp"); + return aData.nLevel; +} + +inline void SwTOXBase::SetTemplateName(const String& rName) +{ + OSL_FAIL("SwTOXBase::SetTemplateName obsolete"); + aStyleNames[0] = rName; +} + +inline sal_uInt16 SwTOXBase::GetOptions() const +{ + OSL_ENSURE(GetTOXType()->GetType() == TOX_INDEX, "Falscher Feldtyp"); + return aData.nOptions; +} + +inline void SwTOXBase::SetOptions(sal_uInt16 nOpt) +{ + OSL_ENSURE(GetTOXType()->GetType() == TOX_INDEX, "Falscher Feldtyp"); + aData.nOptions = nOpt; +} + + +#endif // SW_TOX_HXX + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |