LibreOffice Module sw (master)  1
format.hxx
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3  * This file is part of the LibreOffice project.
4  *
5  * This Source Code Form is subject to the terms of the Mozilla Public
6  * License, v. 2.0. If a copy of the MPL was not distributed with this
7  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8  *
9  * This file incorporates work covered by the following license notice:
10  *
11  * Licensed to the Apache Software Foundation (ASF) under one or more
12  * contributor license agreements. See the NOTICE file distributed
13  * with this work for additional information regarding copyright
14  * ownership. The ASF licenses this file to you under the Apache
15  * License, Version 2.0 (the "License"); you may not use this file
16  * except in compliance with the License. You may obtain a copy of
17  * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18  */
19 #ifndef INCLUDED_SW_INC_FORMAT_HXX
20 #define INCLUDED_SW_INC_FORMAT_HXX
21 
22 #include "swdllapi.h"
23 
24 #include "BorderCacheOwner.hxx"
25 #include "calbck.hxx"
26 #include "hintids.hxx"
27 #include "swatrset.hxx"
28 #include <memory>
29 
36 class SwDoc;
37 class SfxGrabBagItem;
38 class SwTextGridItem;
39 
40 namespace drawinglayer::attribute {
42  typedef std::shared_ptr< SdrAllFillAttributesHelper > SdrAllFillAttributesHelperPtr;
43 }
44 
47 {
48  friend class SwFrameFormat;
49 
50  OUString m_aFormatName;
52 
53  sal_uInt16 m_nWhichId;
54  sal_uInt16 m_nPoolFormatId;
56  sal_uInt16 m_nPoolHelpId;
58  bool m_bAutoFormat : 1;
60  bool m_bFormatInDTOR : 1;
64  bool m_bHidden : 1;
65  std::shared_ptr<SfxGrabBagItem> m_pGrabBagItem;
66  virtual void InvalidateInSwFntCache(sal_uInt16) {};
67 
68 protected:
69  SwFormat( SwAttrPool& rPool, const char* pFormatNm,
70  const WhichRangesContainer& pWhichRanges, SwFormat *pDrvdFrame, sal_uInt16 nFormatWhich );
71  SwFormat( SwAttrPool& rPool, const OUString &rFormatNm, const WhichRangesContainer& pWhichRanges,
72  SwFormat *pDrvdFrame, sal_uInt16 nFormatWhich );
73  SwFormat( const SwFormat& rFormat );
74  virtual void SwClientNotify(const SwModify&, const SfxHint&) override;
75 
76 public:
77 
78  virtual ~SwFormat() override;
79  SwFormat &operator=(const SwFormat&);
80 
82  sal_uInt16 Which() const { return m_nWhichId; };
83 
85  void CopyAttrs( const SwFormat& );
86 
88  void DelDiffs( const SfxItemSet& rSet );
89  void DelDiffs( const SwFormat& rFormat ) { DelDiffs( rFormat.GetAttrSet() ); }
90 
92  bool SetDerivedFrom(SwFormat *pDerivedFrom = nullptr);
93 
95  const SfxPoolItem& GetFormatAttr( sal_uInt16 nWhich,
96  bool bInParents = true ) const;
97  template<class T> const T& GetFormatAttr( TypedWhichId<T> nWhich, bool bInParents = true ) const
98  {
99  return static_cast<const T&>(GetFormatAttr(sal_uInt16(nWhich), bInParents));
100  }
101  SfxItemState GetItemState( sal_uInt16 nWhich, bool bSrchInParent = true,
102  const SfxPoolItem **ppItem = nullptr ) const;
103  SfxItemState GetBackgroundState(std::unique_ptr<SvxBrushItem>& rItem) const;
104  virtual bool SetFormatAttr( const SfxPoolItem& rAttr );
105  virtual bool SetFormatAttr( const SfxItemSet& rSet );
106  virtual bool ResetFormatAttr( sal_uInt16 nWhich1, sal_uInt16 nWhich2 = 0 );
107 
110  virtual sal_uInt16 ResetAllFormatAttr();
111 
112  SwFormat* DerivedFrom() const { return const_cast<SwFormat*>(static_cast<const SwFormat*>(GetRegisteredIn())); }
113  bool IsDefault() const { return DerivedFrom() == nullptr; }
114 
115  const OUString& GetName() const { return m_aFormatName; }
116  bool HasName(std::u16string_view rName) const { return m_aFormatName == rName; }
117  virtual void SetName( const OUString& rNewName, bool bBroadcast=false );
118 
120  const SwAttrSet& GetAttrSet() const { return m_aSet; }
121 
123  const SwDoc *GetDoc() const { return m_aSet.GetDoc(); }
124  SwDoc *GetDoc() { return m_aSet.GetDoc(); }
125 
128 
132 
136 
139 
142 
145 
147  sal_uInt16 GetPoolFormatId() const { return m_nPoolFormatId; }
148  void SetPoolFormatId( sal_uInt16 nId ) { m_nPoolFormatId = nId; }
149 
151  sal_uInt16 GetPoolHelpId() const { return m_nPoolHelpId; }
152  void SetPoolHelpId( sal_uInt16 nId ) { m_nPoolHelpId = nId; }
154  void SetPoolHlpFileId( sal_uInt8 nId ) { m_nPoolHlpFileId = nId; }
155 
158  MapUnit eCoreMetric, MapUnit ePresMetric, OUString &rText ) const
159  { m_aSet.GetPresentation( ePres, eCoreMetric, ePresMetric, rText ); }
160 
162  bool IsAuto() const { return m_bAutoFormat; }
163  void SetAuto( bool bNew ) { m_bAutoFormat = bNew; }
164 
165  bool IsHidden() const { return m_bHidden; }
166  void SetHidden( bool bValue ) { m_bHidden = bValue; }
167 
168  void GetGrabBagItem(css::uno::Any& rVal) const;
169  void SetGrabBagItem(const css::uno::Any& rVal);
170 
172  bool IsAutoUpdateFormat() const { return m_bAutoUpdateFormat; }
173  void SetAutoUpdateFormat( bool bNew = true ) { m_bAutoUpdateFormat = bNew; }
174 
175  bool IsFormatInDTOR() const { return m_bFormatInDTOR; }
176 
181  inline const SvxUnderlineItem &GetUnderline( bool = true ) const;
183  inline const SvxFontHeightItem &GetSize( bool = true ) const;
184  inline const SvxFontItem &GetFont( bool = true ) const;
185  inline const SvxColorItem &GetColor( bool = true ) const;
186  inline const SvxFontItem &GetCJKFont( bool = true ) const;
187  inline const SvxFontItem &GetCTLFont( bool = true ) const;
188 
190  inline const SwFormatFillOrder &GetFillOrder( bool = true ) const;
191  inline const SwFormatFrameSize &GetFrameSize( bool = true ) const;
192  inline const SwFormatHeader &GetHeader( bool = true ) const;
193  inline const SwFormatFooter &GetFooter( bool = true ) const;
194  inline const SwFormatSurround &GetSurround( bool = true ) const;
195  inline const SwFormatHoriOrient &GetHoriOrient( bool = true ) const;
196  inline const SwFormatAnchor &GetAnchor( bool = true ) const;
197  inline const SwFormatCol &GetCol( bool = true ) const;
198  inline const SvxPaperBinItem &GetPaperBin( bool = true ) const;
199  inline const SvxLRSpaceItem &GetLRSpace( bool = true ) const;
200  inline const SvxULSpaceItem &GetULSpace( bool = true ) const;
201  inline const SwFormatContent &GetContent( bool = true ) const;
202  inline const SvxPrintItem &GetPrint( bool = true ) const;
203  inline const SvxOpaqueItem &GetOpaque( bool = true ) const;
204  inline const SvxProtectItem &GetProtect( bool = true ) const;
205  inline const SwFormatVertOrient &GetVertOrient( bool = true ) const;
206  inline const SvxBoxItem &GetBox( bool = true ) const;
207  inline const SvxFormatKeepItem &GetKeep( bool = true ) const;
208 
209  // Create SvxBrushItem for Background fill (partially for backwards compatibility)
210  std::unique_ptr<SvxBrushItem> makeBackgroundBrushItem( bool = true ) const;
211 
212  inline const SvxShadowItem &GetShadow( bool = true ) const;
213  inline const SwFormatPageDesc &GetPageDesc( bool = true ) const;
214  inline const SvxFormatBreakItem &GetBreak( bool = true ) const;
215  inline const SvxMacroItem &GetMacro( bool = true ) const;
216  inline const SwFormatURL &GetURL( bool = true ) const;
217  inline const SwFormatEditInReadonly &GetEditInReadonly( bool = true ) const;
218  inline const SwFormatLayoutSplit &GetLayoutSplit( bool = true ) const;
219  inline const SwFormatRowSplit &GetRowSplit( bool = true ) const;
220  inline const SwFormatChain &GetChain( bool = true ) const;
221  inline const SwFormatFootnoteAtTextEnd &GetFootnoteAtTextEnd( bool = true ) const;
222  inline const SwFormatEndAtTextEnd &GetEndAtTextEnd( bool = true ) const;
223  inline const SwFormatNoBalancedColumns &GetBalancedColumns( bool = true ) const;
224  inline const SvxFrameDirectionItem &GetFrameDir( bool = true ) const;
225  inline const SwTextGridItem &GetTextGrid( bool = true ) const;
226  inline const SwHeaderAndFooterEatSpacingItem &GetHeaderAndFooterEatSpacing( bool = true ) const;
227  // #i18732#
228  inline const SwFormatFollowTextFlow &GetFollowTextFlow(bool = true) const;
229  // #i28701#
230  inline const SwFormatWrapInfluenceOnObjPos& GetWrapInfluenceOnObjPos(bool = true) const;
231  inline const SdrTextVertAdjustItem& GetTextVertAdjust(bool = true) const;
232 
234  inline const SvxLineSpacingItem &GetLineSpacing( bool = true ) const;
235  inline const SwNumRuleItem &GetNumRule( bool = true ) const;
236  inline const SvxTabStopItem &GetTabStops( bool = true ) const;
237  inline const SwFormatDrop &GetDrop( bool = true ) const;
238 
240  inline const SwTableBoxNumFormat &GetTableBoxNumFormat( bool = true ) const;
241  inline const SwTableBoxFormula &GetTableBoxFormula( bool = true ) const;
242  inline const SwTableBoxValue &GetTableBoxValue( bool = true ) const;
243 
244  void SetPageFormatToDefault();
245 
254  virtual bool IsBackgroundTransparent() const;
255 
256  // Access to DrawingLayer FillAttributes in a preprocessed form for primitive usage
258  virtual bool supportsFullDrawingLayerFillAttributeSet() const;
259  void RemoveAllUnos();
260 };
261 
262 #endif // INCLUDED_SW_INC_FORMAT_HXX
263 
264 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
const SwTableBoxNumFormat & GetTableBoxNumFormat(bool=true) const
TableBox attributes - implemented in cellatr.hxx.
Definition: cellatr.hxx:105
virtual void SwClientNotify(const SwModify &, const SfxHint &) override
Definition: atrfrm.cxx:2627
const SvxColorItem & GetColor(bool=true) const
Definition: charatr.hxx:128
sal_uInt16 m_nPoolFormatId
Id for "automatically" created formats.
Definition: format.hxx:54
const SvxTabStopItem & GetTabStops(bool=true) const
Definition: paratr.hxx:228
const SwFormatCol & GetCol(bool=true) const
Definition: fmtclds.hxx:168
const SwFormatLayoutSplit & GetLayoutSplit(bool=true) const
Definition: fmtlsplt.hxx:46
void DelDiffs(const SwFormat &rFormat)
Definition: format.hxx:89
const SvxUnderlineItem & GetUnderline(bool=true) const
GetMethods: Bool indicates whether to search only in Set (FALSE) or also in Parents.
Definition: charatr.hxx:118
bool HasName(std::u16string_view rName) const
Definition: format.hxx:116
sal_uInt16 m_nWhichId
Definition: format.hxx:53
Pagedescriptor Client of SwPageDesc that is "described" by the attribute.
Definition: fmtpdsc.hxx:35
SwDoc * GetDoc()
Definition: format.hxx:124
const SwTextGridItem & GetTextGrid(bool=true) const
Definition: tgrditem.hxx:112
bool IsDefault() const
Definition: format.hxx:113
void SetPoolHelpId(sal_uInt16 nId)
Definition: format.hxx:152
const SwFormatHeader & GetHeader(bool=true) const
Definition: fmthdft.hxx:97
bool IsHidden() const
Definition: format.hxx:165
const SwFormatVertOrient & GetVertOrient(bool=true) const
Definition: fmtornt.hxx:106
OUString m_aFormatName
Definition: format.hxx:50
const SvxFrameDirectionItem & GetFrameDir(bool=true) const
Definition: frmatr.hxx:94
Handle the background jobs of a Writer document.
const SvxFontItem & GetFont(bool=true) const
Definition: charatr.hxx:122
If text in multi-column sections should be evenly distributed.
Definition: fmtclbl.hxx:28
Definition: doc.hxx:188
void DelDiffs(const SfxItemSet &rSet)
Delete all attributes that are not in rFormat.
Definition: format.cxx:672
virtual ~SwFormat() override
Definition: format.cxx:206
const SdrTextVertAdjustItem & GetTextVertAdjust(bool=true) const
Definition: frmatr.hxx:96
Content, content of frame (header, footer, fly).
Definition: fmtcntnt.hxx:31
const SvxLineSpacingItem & GetLineSpacing(bool=true) const
Paragraph-attributes - implemented in paratr.hxx.
Definition: paratr.hxx:226
SwAttrSet m_aSet
Definition: format.hxx:51
IDocumentChartDataProviderAccess & getIDocumentChartDataProviderAccess()
Gives access to the chart data-provider.
Definition: format.cxx:724
IDocumentTimerAccess & getIDocumentTimerAccess()
Provides access to the document idle timer interface.
Definition: format.cxx:722
const SvxFontItem & GetCJKFont(bool=true) const
Definition: charatr.hxx:124
const SvxBoxItem & GetBox(bool=true) const
Definition: frmatr.hxx:84
const SwFormatEditInReadonly & GetEditInReadonly(bool=true) const
Definition: fmteiro.hxx:48
std::unique_ptr< SvxBrushItem > makeBackgroundBrushItem(bool=true) const
Definition: format.cxx:742
const SwFormatNoBalancedColumns & GetBalancedColumns(bool=true) const
Definition: fmtclbl.hxx:42
void SetPoolFormatId(sal_uInt16 nId)
Definition: format.hxx:148
std::shared_ptr< SfxGrabBagItem > m_pGrabBagItem
Style InteropGrabBag.
Definition: format.hxx:65
sal_uInt16 m_nPoolHelpId
HelpId for this Pool-style.
Definition: format.hxx:56
const OUString & GetName() const
Definition: format.hxx:115
Footer, for pageformats Client of FrameFormat describing the footer.
Definition: fmthdft.hxx:64
const SvxPrintItem & GetPrint(bool=true) const
Definition: frmatr.hxx:78
void SetPoolHlpFileId(sal_uInt8 nId)
Definition: format.hxx:154
virtual void SetName(const OUString &rNewName, bool bBroadcast=false) override
Definition: atrfrm.cxx:2560
std::shared_ptr< SdrAllFillAttributesHelper > SdrAllFillAttributesHelperPtr
Definition: format.hxx:41
const SwFormatFootnoteAtTextEnd & GetFootnoteAtTextEnd(bool=true) const
Definition: fmtftntx.hxx:111
const SwFormatSurround & GetSurround(bool=true) const
Definition: fmtsrnd.hxx:66
const SvxFormatKeepItem & GetKeep(bool=true) const
Definition: frmatr.hxx:86
const SvxMacroItem & GetMacro(bool=true) const
Definition: frmatr.hxx:92
sal_uInt8 m_nPoolHlpFileId
FilePos to Doc to these style helps.
Definition: format.hxx:57
const SwFormatFillOrder & GetFillOrder(bool=true) const
Frame-attributes - implemented in frmatr.hxx.
Definition: fmtfordr.hxx:49
bool SetDerivedFrom(SwFormat *pDerivedFrom=nullptr)
0 is Default.
Definition: format.cxx:321
const SvxFontHeightItem & GetSize(bool=true) const
Definition: charatr.hxx:120
sal_uInt16 GetPoolFormatId() const
Get and set Pool style IDs.
Definition: format.hxx:147
virtual sal_uInt16 ResetAllFormatAttr()
Takes all hints from Delta-Array,.
Definition: format.cxx:652
Base class for various Writer styles.
Definition: format.hxx:46
IDocumentFieldsAccess & getIDocumentFieldsAccess()
Provides access to the document idle timer interface.
Definition: format.cxx:723
bool IsFormatInDTOR() const
Definition: format.hxx:175
const SwFormatFollowTextFlow & GetFollowTextFlow(bool=true) const
Style of a layout element.
Definition: frmfmt.hxx:58
SfxItemPresentation
bool m_bHidden
Definition: format.hxx:64
const SwFormatAnchor & GetAnchor(bool=true) const
Definition: fmtanchr.hxx:81
const SwFormatDrop & GetDrop(bool=true) const
Definition: paratr.hxx:230
const IDocumentLayoutAccess & getIDocumentLayoutAccess() const
Provides access to the document layout interface.
Definition: format.cxx:720
const SwFormatHoriOrient & GetHoriOrient(bool=true) const
Definition: fmtornt.hxx:108
void SetAuto(bool bNew)
Definition: format.hxx:163
Document fields related interfaces.
SwFormat(SwAttrPool &rPool, const char *pFormatNm, const WhichRangesContainer &pWhichRanges, SwFormat *pDrvdFrame, sal_uInt16 nFormatWhich)
Definition: format.cxx:40
void SetHidden(bool bValue)
Definition: format.hxx:166
FlyAnchors.
Definition: fmtanchr.hxx:34
SfxItemState GetBackgroundState(std::unique_ptr< SvxBrushItem > &rItem) const
Definition: format.cxx:422
const SwFormatURL & GetURL(bool=true) const
Definition: fmturl.hxx:78
sal_uInt8 GetPoolHlpFileId() const
Definition: format.hxx:153
const SwFormatFooter & GetFooter(bool=true) const
Definition: fmthdft.hxx:99
void GetPresentation(SfxItemPresentation ePres, MapUnit eCoreMetric, MapUnit ePresMetric, OUString &rText) const
Get attribute-description. Returns passed string.
Definition: format.hxx:157
Provides access to settings of a document.
SfxItemState GetItemState(sal_uInt16 nWhich, bool bSrchInParent=true, const SfxPoolItem **ppItem=nullptr) const
Definition: format.cxx:388
Connection (text flow) between two FlyFrames.
Definition: fmtcnct.hxx:31
Bookkeeping helper for SwCache caching writer borders.
const SvxFormatBreakItem & GetBreak(bool=true) const
Definition: frmatr.hxx:90
bool IsAutoUpdateFormat() const
Query / set bAutoUpdateFormat-flag.
Definition: format.hxx:172
const SwDoc * GetDoc() const
The document is set in SwAttrPool now, therefore you always can access it.
Definition: format.hxx:123
const IDocumentSettingAccess & getIDocumentSettingAccess() const
Provides access to the document settings interface.
Definition: format.cxx:717
#define SW_DLLPUBLIC
Definition: swdllapi.h:28
const SwFormatEndAtTextEnd & GetEndAtTextEnd(bool=true) const
Definition: fmtftntx.hxx:113
void SetGrabBagItem(const css::uno::Any &rVal)
Definition: format.cxx:734
virtual drawinglayer::attribute::SdrAllFillAttributesHelperPtr getSdrAllFillAttributesHelper() const override
Definition: atrfrm.cxx:3608
void GetPresentation(SfxItemPresentation ePres, MapUnit eCoreMetric, MapUnit ePresMetric, OUString &rText) const
Definition: attrdesc.cxx:63
virtual bool SetFormatAttr(const SfxPoolItem &rAttr)
Definition: format.cxx:450
sal_uInt16 Which() const
for Querying of Writer-functions.
Definition: format.hxx:82
const SwTableBoxValue & GetTableBoxValue(bool=true) const
Definition: cellatr.hxx:109
SwFormat * DerivedFrom() const
Definition: format.hxx:112
const SvxULSpaceItem & GetULSpace(bool=true) const
Definition: frmatr.hxx:76
virtual bool ResetFormatAttr(sal_uInt16 nWhich1, sal_uInt16 nWhich2=0)
Definition: format.cxx:624
bool m_bAutoUpdateFormat
TRUE: Set attributes of a whole paragraph at format (UI-side!).
Definition: format.hxx:62
SfxItemState
const SwFormatChain & GetChain(bool=true) const
Definition: fmtcnct.hxx:70
const SvxOpaqueItem & GetOpaque(bool=true) const
Definition: frmatr.hxx:80
sal_uInt16 GetPoolHelpId() const
Get and set Help-IDs for document templates.
Definition: format.hxx:151
void CopyAttrs(const SwFormat &)
Copy attributes even among documents.
Definition: format.cxx:174
unsigned char sal_uInt8
void GetGrabBagItem(css::uno::Any &rVal) const
Definition: format.cxx:726
const SwDoc * GetDoc() const
Definition: swatrset.hxx:197
bool m_bFormatInDTOR
TRUE: Format becomes deleted.
Definition: format.hxx:60
const SvxPaperBinItem & GetPaperBin(bool=true) const
Definition: frmatr.hxx:72
const SwModify * GetRegisteredIn() const
Definition: calbck.hxx:159
const SfxPoolItem & GetFormatAttr(sal_uInt16 nWhich, bool bInParents=true) const
If bInParents is FALSE, search only in this format for attribute.
Definition: format.cxx:369
const SvxFontItem & GetCTLFont(bool=true) const
Definition: charatr.hxx:126
const SwFormatRowSplit & GetRowSplit(bool=true) const
Definition: fmtrowsplt.hxx:46
virtual bool supportsFullDrawingLayerFillAttributeSet() const override
Definition: atrfrm.cxx:2622
const SwFormatWrapInfluenceOnObjPos & GetWrapInfluenceOnObjPos(bool=true) const
Header, for PageFormats Client of FrameFormat describing the header.
Definition: fmthdft.hxx:33
const SwFormatFrameSize & GetFrameSize(bool=true) const
Definition: fmtfsize.hxx:104
const SwFormatContent & GetContent(bool=true) const
Definition: fmtcntnt.hxx:55
void RemoveAllUnos()
Definition: format.cxx:763
const SwHeaderAndFooterEatSpacingItem & GetHeaderAndFooterEatSpacing(bool=true) const
Provides access to the layout of a document.
MapUnit
BorderCacheOwner & operator=(const BorderCacheOwner &)
const SvxProtectItem & GetProtect(bool=true) const
Definition: frmatr.hxx:82
bool m_bAutoFormat
FALSE: it is a template.
Definition: format.hxx:58
Give access to the data-provider for chart.
const SwAttrSet & GetAttrSet() const
For querying the attribute array.
Definition: format.hxx:120
If SwFormatDrop is a Client, it is the CharFormat that describes the font for the DropCaps...
Definition: paratr.hxx:62
const T & GetFormatAttr(TypedWhichId< T > nWhich, bool bInParents=true) const
Definition: format.hxx:97
const SwFormatPageDesc & GetPageDesc(bool=true) const
Definition: fmtpdsc.hxx:78
void SetPageFormatToDefault()
Definition: format.cxx:694
virtual bool IsBackgroundTransparent() const
SwFormat::IsBackgroundTransparent.
Definition: format.cxx:709
SwNumRule * GetNumRule(SwTextFormatColl &rTextFormatColl)
determines the list style, which directly set at the given paragraph style
Definition: fmtcol.cxx:76
bool IsAuto() const
Query / set AutoFormat-flag.
Definition: format.hxx:162
virtual void InvalidateInSwFntCache(sal_uInt16)
Definition: format.hxx:66
const IDocumentDrawModelAccess & getIDocumentDrawModelAccess() const
Provides access to the document draw model interface.
Definition: format.cxx:718
const SvxLRSpaceItem & GetLRSpace(bool=true) const
Definition: frmatr.hxx:74
const SwTableBoxFormula & GetTableBoxFormula(bool=true) const
Definition: cellatr.hxx:107
const SvxShadowItem & GetShadow(bool=true) const
Definition: frmatr.hxx:88
void SetAutoUpdateFormat(bool bNew=true)
Definition: format.hxx:173