summaryrefslogtreecommitdiffstats
path: root/sw/inc/swatrset.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'sw/inc/swatrset.hxx')
-rw-r--r--sw/inc/swatrset.hxx327
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: */