diff options
Diffstat (limited to 'sw/inc/swatrset.hxx')
-rw-r--r-- | sw/inc/swatrset.hxx | 327 |
1 files changed, 327 insertions, 0 deletions
diff --git a/sw/inc/swatrset.hxx b/sw/inc/swatrset.hxx new file mode 100644 index 000000000..fc9f034bc --- /dev/null +++ b/sw/inc/swatrset.hxx @@ -0,0 +1,327 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * 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 . + */ +#ifndef INCLUDED_SW_INC_SWATRSET_HXX +#define INCLUDED_SW_INC_SWATRSET_HXX + +#include <svl/itemset.hxx> +#include <svl/itempool.hxx> +#include "swdllapi.h" + +class SwModify; +class SwDoc; +class OutputDevice; +class IDocumentSettingAccess; +class SvxPostureItem; +class SvxWeightItem; +class SvxShadowedItem; +class SvxAutoKernItem; +class SvxWordLineModeItem; +class SvxContourItem; +class SvxKerningItem; +class SvxUnderlineItem; +class SvxOverlineItem; +class SvxCrossedOutItem; +class SvxFontHeightItem; +class SvxFontItem; +class SvxColorItem; +class SvxLanguageItem; +class SvxEscapementItem; +class SvxCaseMapItem; +class SvxNoHyphenItem; +class SvxBlinkItem; +class SvxEmphasisMarkItem; +class SvxTwoLinesItem; +class SvxCharScaleWidthItem; +class SvxCharRotateItem; +class SvxCharReliefItem; +class SvxCharHiddenItem; + +// Frame attributes +class SwFormatFillOrder; +class SwFormatFrameSize; +class SvxPaperBinItem; +class SvxLRSpaceItem; +class SvxULSpaceItem; +class SwFormatContent; +class SwFormatHeader; +class SwFormatFooter; +class SvxPrintItem; +class SvxOpaqueItem; +class SvxProtectItem; +class SwFormatSurround; +class SwFormatVertOrient; +class SwFormatHoriOrient; +class SwFormatAnchor; +class SvxBoxItem; +class SvxBrushItem; +class SvxShadowItem; +class SwFormatPageDesc; +class SvxFormatBreakItem; +class SwFormatCol; +class SvxMacroItem; +class SvxFormatKeepItem; +class SwFormatURL; +class SwFormatLineNumber; +class SwFormatEditInReadonly; +class SwFormatLayoutSplit; +class SwFormatRowSplit; +class SwFormatChain; +class SwFormatFootnoteAtTextEnd; +class SwFormatEndAtTextEnd; +class SwFormatNoBalancedColumns; +class SvxFrameDirectionItem; +class SwHeaderAndFooterEatSpacingItem; +class SwFormatFollowTextFlow; +class SwFormatWrapInfluenceOnObjPos; +class SdrTextVertAdjustItem; + +// Graphic attributes +class SwMirrorGrf; +class SwCropGrf; +class SwRotationGrf; +class SwLuminanceGrf; +class SwContrastGrf; +class SwChannelRGrf; +class SwChannelGGrf; +class SwChannelBGrf; +class SwGammaGrf; +class SwInvertGrf; +class SwTransparencyGrf; +class SwDrawModeGrf; + +// Paragraph attributes +class SvxLineSpacingItem; +class SvxAdjustItem; +class SvxFormatSplitItem; +class SwRegisterItem; +class SwNumRuleItem; +class SvxWidowsItem; +class SvxOrphansItem; +class SvxTabStopItem; +class SvxHyphenZoneItem; +class SwFormatDrop; +class SvxScriptSpaceItem; +class SvxHangingPunctuationItem; +class SvxForbiddenRuleItem; +class SvxParaVertAlignItem; +class SvxParaGridItem; +class SwParaConnectBorderItem; + +// TableBox attributes +class SwTableBoxNumFormat; +class SwTableBoxFormula; +class SwTableBoxValue; + +namespace vcl { + typedef OutputDevice RenderContext; +}; + +class SAL_DLLPUBLIC_RTTI SwAttrPool final : public SfxItemPool +{ +private: + // helpers to add/remove DrawingLayer ItemPool, used in constructor + // and destructor; still isolated to evtl. allow other use later, but + // used bz default now to have it instantly as needed for DrawingLayer + // FillStyle support + void createAndAddSecondaryPools(); + void removeAndDeleteSecondaryPools(); + + friend void InitCore(); // For creating/deleting of version maps. + friend void FinitCore(); + + SwDoc* m_pDoc; + +public: + SwAttrPool( SwDoc* pDoc ); +private: + virtual ~SwAttrPool() override; +public: + + SwDoc* GetDoc() { return m_pDoc; } + const SwDoc* GetDoc() const { return m_pDoc; } + +}; + +class SW_DLLPUBLIC SwAttrSet final : public SfxItemSet +{ + // Pointer for Modify-System + SwAttrSet *m_pOldSet, *m_pNewSet; + + // Notification-Callback + virtual void Changed( const SfxPoolItem& rOld, const SfxPoolItem& rNew ) override; + + void PutChgd( const SfxPoolItem& rI ) { SfxItemSet::PutDirect( rI ); } +public: + SwAttrSet( SwAttrPool&, sal_uInt16 nWhich1, sal_uInt16 nWhich2 ); + SwAttrSet( SwAttrPool&, const sal_uInt16* nWhichPairTable ); + SwAttrSet( const SwAttrSet& ); + + virtual std::unique_ptr<SfxItemSet> Clone(bool bItems = true, SfxItemPool *pToPool = nullptr) const override; + + bool Put_BC( const SfxPoolItem& rAttr, SwAttrSet* pOld, SwAttrSet* pNew ); + bool Put_BC( const SfxItemSet& rSet, SwAttrSet* pOld, SwAttrSet* pNew ); + + // Delete an item or a range. + sal_uInt16 ClearItem_BC( sal_uInt16 nWhich, SwAttrSet* pOld, SwAttrSet* pNew ); + sal_uInt16 ClearItem_BC( sal_uInt16 nWhich1, sal_uInt16 nWhich2, + SwAttrSet* pOld = nullptr, SwAttrSet* pNew = nullptr ); + + int Intersect_BC( const SfxItemSet& rSet, SwAttrSet* pOld, SwAttrSet* pNew ); + + void GetPresentation( SfxItemPresentation ePres, + MapUnit eCoreMetric, MapUnit ePresMetric, OUString &rText ) const; + + SwAttrPool* GetPool() const { return static_cast<SwAttrPool*>(SfxItemSet::GetPool()); } + + // Copy attributes, if necessary across documents. + void CopyToModify( SwModify& rMod ) const; + + // Special treatment for some attributes. + // Set Modify-pointer (the old pDefinedIn) at the following attributes: + // - SwFormatDropCaps + // - SwFormatPageDesc + // (Is called at insert in formats/nodes.) + // Second version is for the SwAttrSet handles of SwContentNode. + bool SetModifyAtAttr( const SwModify* pModify ); + + // Document is set at SwAttrPool. Therefore it is always accessible. + const SwDoc *GetDoc() const { return GetPool()->GetDoc(); } + SwDoc *GetDoc() { return GetPool()->GetDoc(); } + + // Get methods: bool indicates whether to search only in Set (when false) + // or also in parents. If nothing is found then default attribute is returned. + // Character attributes. Implementation in charatr.hxx. + inline const SvxPostureItem &GetPosture( bool = true ) const; + inline const SvxWeightItem &GetWeight( bool = true ) const; + inline const SvxShadowedItem &GetShadowed( bool = true ) const; + inline const SvxAutoKernItem &GetAutoKern( bool = true ) const; + inline const SvxWordLineModeItem &GetWordLineMode( bool = true ) const; + inline const SvxContourItem &GetContour( bool = true ) const; + inline const SvxKerningItem &GetKerning( bool = true ) const; + inline const SvxUnderlineItem &GetUnderline( bool = true ) const; + inline const SvxOverlineItem &GetOverline( bool = true ) const; + inline const SvxCrossedOutItem &GetCrossedOut( bool = true ) const; + inline const SvxFontHeightItem &GetSize( bool = true ) const; + inline const SvxFontItem &GetFont( bool = true ) const; + inline const SvxColorItem &GetColor( bool = true ) const; + inline const SvxLanguageItem &GetLanguage( bool = true ) const; + inline const SvxEscapementItem &GetEscapement( bool = true ) const; + inline const SvxCaseMapItem &GetCaseMap( bool = true ) const; + inline const SvxNoHyphenItem &GetNoHyphenHere( bool = true ) const; + inline const SvxFontItem &GetCJKFont( bool = true ) const; + inline const SvxFontHeightItem &GetCJKSize( bool = true ) const; + inline const SvxLanguageItem &GetCJKLanguage( bool = true ) const; + inline const SvxPostureItem &GetCJKPosture( bool = true ) const; + inline const SvxWeightItem &GetCJKWeight( bool = true ) const; + inline const SvxFontItem &GetCTLFont( bool = true ) const; + inline const SvxFontHeightItem &GetCTLSize( bool = true ) const; + inline const SvxLanguageItem &GetCTLLanguage( bool = true ) const; + inline const SvxPostureItem &GetCTLPosture( bool = true ) const; + inline const SvxWeightItem &GetCTLWeight( bool = true ) const; + inline const SvxEmphasisMarkItem &GetEmphasisMark( bool = true ) const; + inline const SvxTwoLinesItem &Get2Lines( bool = true ) const; + inline const SvxCharScaleWidthItem &GetCharScaleW( bool = true ) const; + inline const SvxCharRotateItem &GetCharRotate( bool = true ) const; + inline const SvxCharReliefItem &GetCharRelief( bool = true ) const; + inline const SvxCharHiddenItem &GetCharHidden( bool = true ) const; + + // Frame attributes. Implementation in frmatr.hxx. + inline const SwFormatFillOrder &GetFillOrder( bool = true ) const; + inline const SwFormatFrameSize &GetFrameSize( bool = true ) const; + inline const SvxPaperBinItem &GetPaperBin( bool = true ) const; + inline const SvxLRSpaceItem &GetLRSpace( bool = true ) const; + inline const SvxULSpaceItem &GetULSpace( bool = true ) const; + inline const SwFormatContent &GetContent( bool = true ) const; + inline const SwFormatHeader &GetHeader( bool = true ) const; + inline const SwFormatFooter &GetFooter( bool = true ) const; + inline const SvxPrintItem &GetPrint( bool = true ) const; + inline const SvxOpaqueItem &GetOpaque( bool = true ) const; + inline const SvxProtectItem &GetProtect( bool = true ) const; + inline const SwFormatSurround &GetSurround( bool = true ) const; + inline const SwFormatVertOrient &GetVertOrient( bool = true ) const; + inline const SwFormatHoriOrient &GetHoriOrient( bool = true ) const; + inline const SwFormatAnchor &GetAnchor( bool = true ) const; + inline const SvxBoxItem &GetBox( bool = true ) const; + inline const SvxFormatKeepItem &GetKeep( bool = true ) const; + inline const SvxBrushItem &GetBackground( bool = true ) const; + inline const SvxShadowItem &GetShadow( bool = true ) const; + inline const SwFormatPageDesc &GetPageDesc( bool = true ) const; + inline const SvxFormatBreakItem &GetBreak( bool = true ) const; + inline const SwFormatCol &GetCol( bool = true ) const; + inline const SvxMacroItem &GetMacro( bool = true ) const; + inline const SwFormatURL &GetURL( bool = true ) const; + inline const SwFormatEditInReadonly &GetEditInReadonly( bool = true ) const; + inline const SwFormatLayoutSplit &GetLayoutSplit( bool = true ) const; + inline const SwFormatRowSplit &GetRowSplit( bool = true ) const; + inline const SwFormatChain &GetChain( bool = true ) const; + inline const SwFormatLineNumber &GetLineNumber( bool = true ) const; + inline const SwFormatFootnoteAtTextEnd &GetFootnoteAtTextEnd( bool = true ) const; + inline const SwFormatEndAtTextEnd &GetEndAtTextEnd( bool = true ) const; + inline const SwFormatNoBalancedColumns &GetBalancedColumns( bool = true ) const; + inline const SvxFrameDirectionItem &GetFrameDir( bool = true ) const; + inline const SwHeaderAndFooterEatSpacingItem &GetHeaderAndFooterEatSpacing( bool = true ) const; + inline const SwFormatFollowTextFlow &GetFollowTextFlow(bool = true) const; + inline const SwFormatWrapInfluenceOnObjPos& GetWrapInfluenceOnObjPos(bool = true) const; + inline const SdrTextVertAdjustItem& GetTextVertAdjust(bool = true) const; + + // Graphic attributes - implementation in grfatr.hxx + inline const SwMirrorGrf &GetMirrorGrf( bool = true ) const; + inline const SwCropGrf &GetCropGrf( bool = true ) const; + inline const SwRotationGrf &GetRotationGrf(bool = true ) const; + inline const SwLuminanceGrf &GetLuminanceGrf(bool = true ) const; + inline const SwContrastGrf &GetContrastGrf(bool = true ) const; + inline const SwChannelRGrf &GetChannelRGrf(bool = true ) const; + inline const SwChannelGGrf &GetChannelGGrf(bool = true ) const; + inline const SwChannelBGrf &GetChannelBGrf(bool = true ) const; + inline const SwGammaGrf &GetGammaGrf(bool = true ) const; + inline const SwInvertGrf &GetInvertGrf(bool = true ) const; + inline const SwTransparencyGrf &GetTransparencyGrf(bool = true ) const; + inline const SwDrawModeGrf &GetDrawModeGrf(bool = true ) const; + + // Paragraph attributes - implementation in paratr.hxx + inline const SvxLineSpacingItem &GetLineSpacing( bool = true ) const; + inline const SvxAdjustItem &GetAdjust( bool = true ) const; + inline const SvxFormatSplitItem &GetSplit( bool = true ) const; + inline const SwRegisterItem &GetRegister( bool = true ) const; + inline const SwNumRuleItem &GetNumRule( bool = true ) const; + inline const SvxWidowsItem &GetWidows( bool = true ) const; + inline const SvxOrphansItem &GetOrphans( bool = true ) const; + inline const SvxTabStopItem &GetTabStops( bool = true ) const; + inline const SvxHyphenZoneItem &GetHyphenZone( bool = true ) const; + inline const SwFormatDrop &GetDrop( bool = true ) const; + inline const SvxScriptSpaceItem &GetScriptSpace(bool = true) const; + inline const SvxHangingPunctuationItem &GetHangingPunctuation(bool = true) const; + inline const SvxForbiddenRuleItem &GetForbiddenRule(bool = true) const; + inline const SvxParaVertAlignItem &GetParaVertAlign(bool = true) const; + inline const SvxParaGridItem &GetParaGrid(bool = true) const; + inline const SwParaConnectBorderItem &GetParaConnectBorder(bool = true ) const; + + // Tablebox attributes - implementation in cellatr.hxx + inline const SwTableBoxNumFormat &GetTableBoxNumFormat( bool = true ) const; + inline const SwTableBoxFormula &GetTableBoxFormula( bool = true ) const; + inline const SwTableBoxValue &GetTableBoxValue( bool = true ) const; +}; + +//Helper for filters to find true lineheight of a font +SW_DLLPUBLIC long AttrSetToLineHeight( const IDocumentSettingAccess& rIDocumentSettingAccess, + const SwAttrSet &rSet, + const vcl::RenderContext &rOut, sal_Int16 nScript); +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |