LibreOffice Module sw (master) 1
rootfrm.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_SOURCE_CORE_INC_ROOTFRM_HXX
20#define INCLUDED_SW_SOURCE_CORE_INC_ROOTFRM_HXX
21
22#include "layfrm.hxx"
23#include <viewsh.hxx>
24#include <doc.hxx>
27#include <set>
28#include <vector>
29
30class SwContentFrame;
31class SdrPage;
32class SwFrameFormat;
33class SwPaM;
34class SwCursor;
35class SwShellCursor;
36class SwTableCursor;
37class SwLayVout;
38class SwViewOption;
39class SwSelectionList;
40struct SwPosition;
42
43namespace sw {
44 enum class RedlineMode
45 {
47 };
48
49 enum class FieldmarkMode { ShowCommand = 1, ShowResult = 2, ShowBoth = 3 };
51};
52
54{
55 Size = 0x01,
56 PrtArea = 0x02,
57 Pos = 0x04,
58 Table = 0x08,
59 Section = 0x10,
60 LineNum = 0x20,
61 Direction = 0x40,
62};
63
64namespace o3tl
65{
66 template<> struct typed_flags<SwInvalidateFlags> : is_typed_flags<SwInvalidateFlags, 0x7f> {};
67};
68
70{
71 Next,
72 Prev
73};
74
75using SwCurrShells = std::set<CurrShell*>;
76
77class SwSectionFrame;
79
83{
84 // Needs to disable the Superfluous temporarily
85 friend void AdjustSizeChgNotify( SwRootFrame *pRoot );
86
87 // Maintains the mpLastPage (Cut() and Paste() of SwPageFrame
88 friend inline void SetLastPage( SwPageFrame* );
89
90 // For creating and destroying of the virtual output device manager
91 friend void FrameInit(); // Creates s_pVout
92 friend void FrameFinit(); // Destroys s_pVout
93
94 std::vector<SwRect> maPageRects;// returns the current rectangle for each page frame
95 // the rectangle is extended to the top/bottom/left/right
96 // for pages located at the outer margins
97 SwRect maPagesArea; // the area covered by the pages
98 tools::Long mnViewWidth; // the current page layout bases on this view width
99 sal_uInt16 mnColumns; // the current page layout bases on this number of columns
100 bool mbBookMode; // the current page layout is in book view
101 bool mbSidebarChanged; // the notes sidebar state has changed
102
103 bool mbNeedGrammarCheck; // true when sth needs to be checked (not necessarily started yet!)
104
106 static bool s_isInPaint; // Protection against double Paints
107 static bool s_isNoVirDev;// No virt. Device for SystemPaints
108
110 static constexpr sal_Int64 MIN_BROWSE_WIDTH = o3tl::toTwips(20000, o3tl::Length::mm100);
111
112 bool mbCheckSuperfluous :1; // Search for empty Pages?
113 bool mbIdleFormat :1; // Trigger Idle Formatter?
114 bool mbBrowseWidthValid :1; // Is mnBrowseWidth valid?
116 bool mbAssertFlyPages :1; // Insert more Pages for Flys if needed?
117 bool mbTableUpdateInProgress : 1; // tdf#139426 to allow suppression of AssertFlyPages during TableUpdate
118 bool mbIsVirtPageNum :1; // Do we have a virtual pagenumber?
119 bool mbIsNewLayout :1; // Layout loaded or newly created
120 bool mbCallbackActionEnabled:1; // No Action in Notification desired
121 // @see dcontact.cxx, ::Changed()
126
133
136
139
162 friend class CurrShell;
163 friend void SetShell( SwViewShell *pSh );
164 friend void InitCurrShells( SwRootFrame *pRoot );
167 std::unique_ptr<SwCurrShells> mpCurrShells;
168
171
172 std::unique_ptr<SwDestroyList> mpDestroy;
173
174 sal_uInt16 mnPhyPageNums;
175 sal_uInt16 mnAccessibleShells; // Number of accessible shells
176
177 void ImplCalcBrowseWidth();
178 void ImplInvalidateBrowseWidth();
179
180 void DeleteEmptySct_(); // Destroys the registered SectionFrames
181 void RemoveFromList_( SwSectionFrame* pSct ); // Removes SectionFrames from the Delete List
182
183 virtual void DestroyImpl() override;
184 virtual ~SwRootFrame() override;
185
186 virtual void MakeAll(vcl::RenderContext* pRenderContext) override;
187
188public:
189
191 static void RemoveMasterObjs( SdrPage *pPg );
192
193 void AllCheckPageDescs() const;
194 void AllInvalidateAutoCompleteWords() const;
195 void AllAddPaintRect() const;
196 void AllRemoveFootnotes() ;
197 void AllInvalidateSmartTagsOrSpelling(bool bSmartTags) const;
198
200 static bool FlushVout();
201
203 static bool HasSameRect( const SwRect& rRect );
204
206 void Init(SwFrameFormat*);
207
208 SwViewShell *GetCurrShell() const { return mpCurrShell; }
209 void DeRegisterShell( SwViewShell *pSh );
210
218 void StartAllAction();
219 void EndAllAction( bool bVirDev = false );
220
225 void UnoRemoveAllActions();
226 void UnoRestoreAllActions();
227
228 const SdrPage* GetDrawPage() const { return mpDrawPage; }
229 SdrPage* GetDrawPage() { return mpDrawPage; }
230 void SetDrawPage( SdrPage* pNew ){ mpDrawPage = pNew; }
231
232 virtual bool GetModelPositionForViewPoint( SwPosition *, Point&,
233 SwCursorMoveState* = nullptr, bool bTestBackground = false ) const override;
234
235 virtual void PaintSwFrame( vcl::RenderContext& rRenderContext, SwRect const&,
236 SwPrintData const*const pPrintData = nullptr ) const override;
237 virtual SwTwips ShrinkFrame( SwTwips, bool bTst = false, bool bInfo = false ) override;
238 virtual SwTwips GrowFrame ( SwTwips, bool bTst = false, bool bInfo = false ) override;
239#ifdef DBG_UTIL
240 virtual void Cut() override;
241 virtual void Paste( SwFrame* pParent, SwFrame* pSibling = nullptr ) override;
242#endif
243
244 virtual bool FillSelection( SwSelectionList& rList, const SwRect& rRect ) const override;
245
246 Point GetNextPrevContentPos( const Point &rPoint, bool bNext ) const;
247
248 virtual Size ChgSize( const Size& aNewSize ) override;
249
251 {
252 mbIdleFormat = true;
253
254 SwViewShell* pCurrShell = GetCurrShell();
255 // May be NULL if called from SfxBaseModel::dispose
256 // (this happens in the build test 'rtfexport').
257 if (pCurrShell != nullptr)
258 pCurrShell->GetDoc()->getIDocumentTimerAccess().StartIdling();
259 }
260 bool IsIdleFormat() const { return mbIdleFormat; }
261 void ResetIdleFormat() { mbIdleFormat = false; }
262
263 bool IsNeedGrammarCheck() const { return mbNeedGrammarCheck; }
264 void SetNeedGrammarCheck( bool bVal )
265 {
266 mbNeedGrammarCheck = bVal;
267
268 if ( bVal )
269 {
270 SwViewShell* pCurrShell = GetCurrShell();
271 // May be NULL if called from SfxBaseModel::dispose
272 // (this happens in the build test 'rtfexport').
273 if (pCurrShell != nullptr)
274 pCurrShell->GetDoc()->getIDocumentTimerAccess().StartIdling();
275 }
276 }
277
279 void SetAssertFlyPages() { mbAssertFlyPages = true; }
280 void AssertFlyPages();
281 bool IsAssertFlyPages() const { return mbAssertFlyPages; }
282
283 void SetTableUpdateInProgress(bool bValue) { mbTableUpdateInProgress = bValue; }
284 bool IsTableUpdateInProgress() const { return mbTableUpdateInProgress; }
285
290 static void AssertPageFlys( SwPageFrame * );
291
293 void InvalidateAllContent( SwInvalidateFlags nInvalidate );
294
300 void InvalidateAllObjPos();
301
303 void SetSuperfluous() { mbCheckSuperfluous = true; }
304 bool IsSuperfluous() const { return mbCheckSuperfluous; }
305 void RemoveSuperfluous();
306
311 sal_uInt16 GetCurrPage( const SwPaM* ) const;
312 sal_uInt16 SetCurrPage( SwCursor*, sal_uInt16 nPageNum );
313 Point GetPagePos( sal_uInt16 nPageNum ) const;
314 sal_uInt16 GetPageNum() const { return mnPhyPageNums; }
315 void DecrPhyPageNums() { --mnPhyPageNums; }
316 void IncrPhyPageNums() { ++mnPhyPageNums; }
317 bool IsVirtPageNum() const { return mbIsVirtPageNum; }
318 inline void SetVirtPageNum( const bool bOf ) const;
319 bool IsDummyPage( sal_uInt16 nPageNum ) const;
320
328 const SwPageFrame* GetPageAtPos( const Point& rPt, const Size* pSize = nullptr, bool bExtend = false ) const;
329
337 bool IsBetweenPages(const Point& rPt) const;
338
339 void CalcFrameRects( SwShellCursor& );
340
347 bool MakeTableCursors( SwTableCursor& );
348
349 void DisallowTurbo() const { const_cast<SwRootFrame*>(this)->mbTurboAllowed = false; }
350 void ResetTurboFlag() const { const_cast<SwRootFrame*>(this)->mbTurboAllowed = true; }
351 bool IsTurboAllowed() const { return mbTurboAllowed; }
352 void SetTurbo( const SwContentFrame *pContent ) { mpTurbo = pContent; }
353 void ResetTurbo() { mpTurbo = nullptr; }
354 const SwContentFrame *GetTurbo() const { return mpTurbo; }
355
357 void UpdateFootnoteNums(); // Only for page by page numbering!
358
360 void RemoveFootnotes( SwPageFrame *pPage = nullptr, bool bPageOnly = false,
361 bool bEndNotes = false );
362 void CheckFootnotePageDescs( bool bEndNote );
363
364 const SwPageFrame *GetLastPage() const { return mpLastPage; }
365 SwPageFrame *GetLastPage() { return mpLastPage; }
366
367 static bool IsInPaint() { return s_isInPaint; }
368
369 static void SetNoVirDev(const bool bNew) { s_isNoVirDev = bNew; }
370
371 inline tools::Long GetBrowseWidth() const;
372 inline void InvalidateBrowseWidth();
373
374 bool IsNewLayout() const { return mbIsNewLayout; }
375 void ResetNewLayout() { mbIsNewLayout = false;}
376
381 void InsertEmptySct( SwSectionFrame* pDel );
382 void DeleteEmptySct() { if( mpDestroy ) DeleteEmptySct_(); }
383 void RemoveFromList( SwSectionFrame* pSct ) { if( mpDestroy ) RemoveFromList_( pSct ); }
384#ifdef DBG_UTIL
385 bool IsInDelList( SwSectionFrame* pSct ) const;
386#endif
387
388 void SetCallbackActionEnabled( bool b ) { mbCallbackActionEnabled = b; }
389 bool IsCallbackActionEnabled() const { return mbCallbackActionEnabled; }
390
391 bool IsAnyShellAccessible() const { return mnAccessibleShells > 0; }
392 void AddAccessibleShell() { ++mnAccessibleShells; }
393 void RemoveAccessibleShell() { --mnAccessibleShells; }
394
407 SwPageFrame* GetPageByPageNum( sal_uInt16 _nPageNum ) const;
408
409 void CheckViewLayout( const SwViewOption* pViewOpt, const SwRect* pVisArea );
410 bool IsLeftToRightViewLayout() const;
411 const SwRect& GetPagesArea() const { return maPagesArea; }
412 void SetSidebarChanged() { mbSidebarChanged = true; }
413
414 bool IsLayoutFreezed() const { return mbLayoutFreezed; }
415 void FreezeLayout( bool freeze ) { mbLayoutFreezed = freeze; }
416
417 void RemovePage( SwPageFrame **pDel, SwRemoveResult eResult );
418
423 bool IsHideRedlines() const { return mbHideRedlines; }
424 void SetHideRedlines(bool);
425 sw::FieldmarkMode GetFieldmarkMode() const { return m_FieldmarkMode; }
426 void SetFieldmarkMode(sw::FieldmarkMode, sw::ParagraphBreakMode);
427 sw::ParagraphBreakMode GetParagraphBreakMode() const { return m_ParagraphBreakMode; }
428 bool HasMergedParas() const;
429};
430
432{
433 if ( !mbBrowseWidthValid )
434 const_cast<SwRootFrame*>(this)->ImplCalcBrowseWidth();
435 return mnBrowseWidth;
436}
437
439{
440 if ( mbBrowseWidthValid )
442}
443
444inline void SwRootFrame::SetVirtPageNum( const bool bOf) const
445{
446 const_cast<SwRootFrame*>(this)->mbIsVirtPageNum = bOf;
447}
448
452{
453 private:
456
457 public:
458 explicit DisableCallbackAction(SwRootFrame & rRootFrame)
459 : m_rRootFrame(rRootFrame)
460 , m_bOldCallbackActionState(rRootFrame.IsCallbackActionEnabled())
461 {
463 }
464
466 {
468 }
469};
470
471#endif // INCLUDED_SW_SOURCE_CORE_INC_ROOTFRM_HXX
472
473/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
SwRootFrame * pRoot
Definition: viewsh.hxx:591
helper class to disable creation of an action by a callback event in particular, change event from a ...
Definition: rootfrm.hxx:452
SwRootFrame & m_rRootFrame
Definition: rootfrm.hxx:454
DisableCallbackAction(SwRootFrame &rRootFrame)
Definition: rootfrm.hxx:458
bool m_bOldCallbackActionState
Definition: rootfrm.hxx:455
virtual void StartIdling()=0
Start the idle task.
SwContentFrame is the layout for content nodes: a common base class for text (paragraph) and non-text...
Definition: cntfrm.hxx:58
IDocumentTimerAccess const & getIDocumentTimerAccess() const
Definition: doc.cxx:257
Style of a layout element.
Definition: frmfmt.hxx:62
Base class of the Writer layout elements.
Definition: frame.hxx:315
virtual Size ChgSize(const Size &aNewSize)
Definition: wsfrm.cxx:737
A layout frame is a frame that contains other frames (m_pLower), e.g. SwPageFrame or SwTabFrame.
Definition: layfrm.hxx:36
virtual void MakeAll(vcl::RenderContext *pRenderContext) override
Definition: calcmove.cxx:944
virtual bool GetModelPositionForViewPoint(SwPosition *, Point &, SwCursorMoveState *=nullptr, bool bTestBackground=false) const override
Searches the ContentFrame owning the PrtArea containing the point.
Definition: trvlfrm.cxx:151
virtual SwTwips GrowFrame(SwTwips, bool bTst=false, bool bInfo=false) override
Definition: wsfrm.cxx:2633
virtual bool FillSelection(SwSelectionList &rList, const SwRect &rRect) const override
Definition: trvlfrm.cxx:367
virtual void DestroyImpl() override
Definition: ssfrm.cxx:485
virtual void Paste(SwFrame *pParent, SwFrame *pSibling=nullptr) override
Definition: wsfrm.cxx:1344
virtual SwTwips ShrinkFrame(SwTwips, bool bTst=false, bool bInfo=false) override
Definition: wsfrm.cxx:2817
virtual void PaintSwFrame(vcl::RenderContext &rRenderContext, SwRect const &, SwPrintData const *const pPrintData=nullptr) const override
Definition: paintfrm.cxx:3490
virtual void Cut() override
Definition: wsfrm.cxx:1441
PaM is Point and Mark: a selection of the document model.
Definition: pam.hxx:187
A page of the document layout.
Definition: pagefrm.hxx:58
Of course Writer needs its own rectangles.
Definition: swrect.hxx:35
The root element of a Writer document layout.
Definition: rootfrm.hxx:83
void AddAccessibleShell()
Definition: rootfrm.hxx:392
bool IsAssertFlyPages() const
Definition: rootfrm.hxx:281
void DeleteEmptySct()
Definition: rootfrm.hxx:382
bool IsNewLayout() const
Definition: rootfrm.hxx:374
SwPageFrame * mpLastPage
We should not need to always struggle to find the last page, so store it here.
Definition: rootfrm.hxx:138
SwViewShell * mpCurrShell
Definition: rootfrm.hxx:165
void ResetTurboFlag() const
Definition: rootfrm.hxx:350
void SetVirtPageNum(const bool bOf) const
Definition: rootfrm.hxx:444
void FreezeLayout(bool freeze)
Definition: rootfrm.hxx:415
bool IsSuperfluous() const
Definition: rootfrm.hxx:304
std::unique_ptr< SwCurrShells > mpCurrShells
Definition: rootfrm.hxx:167
const SwContentFrame * mpTurbo
If we only have to format one ContentFrame, its in mpTurbo.
Definition: rootfrm.hxx:135
static bool s_isInPaint
Definition: rootfrm.hxx:106
SwViewShell * GetCurrShell() const
Definition: rootfrm.hxx:208
static bool IsInPaint()
Definition: rootfrm.hxx:367
bool IsVirtPageNum() const
Definition: rootfrm.hxx:317
bool mbIdleFormat
Definition: rootfrm.hxx:113
std::unique_ptr< SwDestroyList > mpDestroy
Definition: rootfrm.hxx:172
bool IsLayoutFreezed() const
Definition: rootfrm.hxx:414
void ImplInvalidateBrowseWidth()
Definition: pagechg.cxx:1781
SdrPage * GetDrawPage()
Definition: rootfrm.hxx:229
sal_uInt16 mnAccessibleShells
Page count.
Definition: rootfrm.hxx:175
const SwContentFrame * GetTurbo() const
Definition: rootfrm.hxx:354
tools::Long GetBrowseWidth() const
Definition: rootfrm.hxx:431
void SetSuperfluous()
Remove superfluous Pages.
Definition: rootfrm.hxx:303
bool mbIsVirtPageNum
Definition: rootfrm.hxx:118
bool IsAnyShellAccessible() const
Definition: rootfrm.hxx:391
bool mbTableUpdateInProgress
Definition: rootfrm.hxx:117
const SdrPage * GetDrawPage() const
Definition: rootfrm.hxx:228
std::vector< SwRect > maPageRects
Definition: rootfrm.hxx:94
void InvalidateBrowseWidth()
Definition: rootfrm.hxx:438
sal_uInt16 GetPageNum() const
Definition: rootfrm.hxx:314
void SetTurbo(const SwContentFrame *pContent)
Definition: rootfrm.hxx:352
void SetIdleFlags()
Definition: rootfrm.hxx:250
const SwRect & GetPagesArea() const
Definition: rootfrm.hxx:411
SwRect maPagesArea
Definition: rootfrm.hxx:97
bool IsTableUpdateInProgress() const
Definition: rootfrm.hxx:284
sal_uInt16 mnPhyPageNums
Definition: rootfrm.hxx:174
sal_uInt16 mnColumns
Definition: rootfrm.hxx:99
void ResetIdleFormat()
Definition: rootfrm.hxx:261
void DecrPhyPageNums()
Definition: rootfrm.hxx:315
bool mbLayoutFreezed
Definition: rootfrm.hxx:122
bool IsHideRedlines() const
Replacement for sw::DocumentRedlineManager::GetRedlineFlags() (this is layout-level redline hiding).
Definition: rootfrm.hxx:423
bool IsCallbackActionEnabled() const
Definition: rootfrm.hxx:389
bool mbCallbackActionEnabled
Definition: rootfrm.hxx:120
SwViewShell * mpWaitingCurrShell
Definition: rootfrm.hxx:166
void SetNeedGrammarCheck(bool bVal)
Definition: rootfrm.hxx:264
bool mbBrowseWidthValid
Definition: rootfrm.hxx:114
SwPageFrame * GetLastPage()
Definition: rootfrm.hxx:365
bool mbAssertFlyPages
Definition: rootfrm.hxx:116
const SwPageFrame * GetLastPage() const
Definition: rootfrm.hxx:364
SdrPage * mpDrawPage
One Page per DrawModel per Document; is always the size of the Root.
Definition: rootfrm.hxx:170
void RemoveAccessibleShell()
Definition: rootfrm.hxx:393
bool IsIdleFormat() const
Definition: rootfrm.hxx:260
bool mbSidebarChanged
Definition: rootfrm.hxx:101
sw::FieldmarkMode GetFieldmarkMode() const
Definition: rootfrm.hxx:425
void ResetNewLayout()
Definition: rootfrm.hxx:375
tools::Long mnViewWidth
Definition: rootfrm.hxx:98
void SetDrawPage(SdrPage *pNew)
Definition: rootfrm.hxx:230
void DisallowTurbo() const
Definition: rootfrm.hxx:349
tools::Long mnBrowseWidth
For BrowseMode mnBrowseWidth is the outer margin of the object most to the right.
Definition: rootfrm.hxx:132
bool mbBookMode
Definition: rootfrm.hxx:100
static void SetNoVirDev(const bool bNew)
Definition: rootfrm.hxx:369
void RemoveFromList(SwSectionFrame *pSct)
Definition: rootfrm.hxx:383
void SetCallbackActionEnabled(bool b)
Definition: rootfrm.hxx:388
void SetTableUpdateInProgress(bool bValue)
Definition: rootfrm.hxx:283
bool IsTurboAllowed() const
Definition: rootfrm.hxx:351
bool mbCheckSuperfluous
Definition: rootfrm.hxx:112
sw::FieldmarkMode m_FieldmarkMode
Definition: rootfrm.hxx:124
void ResetTurbo()
Definition: rootfrm.hxx:353
void SetSidebarChanged()
Definition: rootfrm.hxx:412
void SetAssertFlyPages()
Makes sure that all requested page-bound Flys find a Page.
Definition: rootfrm.hxx:279
sw::ParagraphBreakMode GetParagraphBreakMode() const
Definition: rootfrm.hxx:427
bool mbTurboAllowed
Definition: rootfrm.hxx:115
void IncrPhyPageNums()
Definition: rootfrm.hxx:316
static bool s_isNoVirDev
Definition: rootfrm.hxx:107
static SwLayVout * s_pVout
Definition: rootfrm.hxx:105
bool mbNeedGrammarCheck
Definition: rootfrm.hxx:103
sw::ParagraphBreakMode m_ParagraphBreakMode
Definition: rootfrm.hxx:125
bool IsNeedGrammarCheck() const
Definition: rootfrm.hxx:263
void ImplCalcBrowseWidth()
Definition: pagechg.cxx:1792
bool mbHideRedlines
Definition: rootfrm.hxx:123
bool mbIsNewLayout
Definition: rootfrm.hxx:119
This class is used as parameter for creation of a block cursor selection.
Represents the current text cursor of one opened edit window.
Definition: viscrs.hxx:140
SwDoc * GetDoc() const
Definition: viewsh.hxx:290
void Init()
constexpr auto toTwips(N number, Length from)
Dialog to specify the properties of date form field.
ParagraphBreakMode
Definition: rootfrm.hxx:50
FieldmarkMode
Definition: rootfrm.hxx:49
RedlineMode
Definition: rootfrm.hxx:45
long Long
void FrameInit()
Definition: newfrm.cxx:295
void SetShell(SwViewShell *pSh)
Definition: newfrm.cxx:352
void FrameFinit()
Definition: newfrm.cxx:306
void InitCurrShells(SwRootFrame *pRoot)
Definition: newfrm.cxx:389
void AdjustSizeChgNotify(SwRootFrame *pRoot)
Definition: pagechg.cxx:822
void SetLastPage(SwPageFrame *pPage)
Definition: pagechg.cxx:841
SwInvalidateFlags
Definition: rootfrm.hxx:54
std::set< CurrShell * > SwCurrShells
Definition: rootfrm.hxx:75
SwRemoveResult
Definition: rootfrm.hxx:70
Marks a position in the document model.
Definition: pam.hxx:37
#define SW_DLLPUBLIC
Definition: swdllapi.h:28
tools::Long SwTwips
Definition: swtypes.hxx:51