LibreOffice Module sw (master) 1
PageBreakWin.cxx
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
10#include <bitmaps.hlst>
11
12#include <cmdid.h>
13#include <cntfrm.hxx>
14#include <txtfrm.hxx>
15#include <notxtfrm.hxx>
16#include <ndtxt.hxx>
17#include <DashedLine.hxx>
18#include <doc.hxx>
19#include <edtwin.hxx>
20#include <fmtpdsc.hxx>
21#include <IDocumentUndoRedo.hxx>
23#include <PageBreakWin.hxx>
24#include <pagefrm.hxx>
25#include <PostItMgr.hxx>
27#include <strings.hrc>
28#include <tabfrm.hxx>
29#include <uiitems.hxx>
30#include <uiobject.hxx>
31#include <view.hxx>
32#include <viewopt.hxx>
33#include <wrtsh.hxx>
34
46#include <sfx2/dispatch.hxx>
47#include <sfx2/viewfrm.hxx>
48#include <svl/stritem.hxx>
49#include <vcl/canvastools.hxx>
50#include <vcl/event.hxx>
51#include <vcl/svapp.hxx>
52#include <vcl/settings.hxx>
53#include <memory>
54
55#define BUTTON_WIDTH 30
56#define BUTTON_HEIGHT 19
57#define ARROW_WIDTH 9
58
59using namespace basegfx;
60using namespace basegfx::utils;
61
63 : SwDashedLine(pEditWin, &SwViewOption::GetPageBreakColor)
64 , m_pEditWin(pEditWin)
65 , m_pFrame(pFrame)
66{
67 set_id("PageBreak"); // for uitest
68}
69
71{
72 if (!m_pWin)
73 {
75 m_pWin->SetPosSizePixel(m_aBtnRect.TopLeft(), m_aBtnRect.GetSize());
76 m_pWin->SetZOrder(this, ZOrderFlags::Before);
77 }
78 return *m_pWin;
79}
80
82{
84}
85
87{
88 if ( rMEvt.IsLeaveWindow() )
89 {
90 // don't fade if we just move to the 'button'
91 Point aEventPos( GetPosPixel() + rMEvt.GetPosPixel() );
92 if (m_pWin && (!Contains(aEventPos) || !m_pWin->IsVisible()))
93 m_pWin->Fade(false);
94 }
95 else if (!m_pWin || !m_pWin->IsVisible())
96 {
97 GetOrCreateWin().Fade(true);
98 }
99
100 if (!rMEvt.IsSynthetic() && (!m_pWin || !m_pWin->IsVisible()))
101 {
103 }
104}
105
107{
108 Show(bShow);
109}
110
112{
113 ShowAll(!bReadonly);
114}
115
116bool SwBreakDashedLine::Contains(const Point &rDocPt) const
117{
118 if (m_aBtnRect.Contains(rDocPt))
119 return true;
120
122 return aLineRect.Contains(rDocPt);
123}
124
126 InterimItemWindow(pEditWin, "modules/swriter/ui/pbmenubutton.ui", "PBMenuButton"),
127 m_xMenuButton(m_xBuilder->weld_menu_button("menubutton")),
128 m_pLine(pLine),
129 m_pEditWin(pEditWin),
130 m_pFrame(pFrame),
131 m_bIsAppearing( false ),
132 m_nFadeRate( 100 ),
133 m_nDelayAppearing( 0 ),
134 m_aFadeTimer("SwPageBreakWin m_aFadeTimer"),
135 m_bDestroyed( false )
136{
137 m_xMenuButton->connect_toggled(LINK(this, SwPageBreakWin, ToggleHdl));
138 m_xMenuButton->connect_selected(LINK(this, SwPageBreakWin, SelectHdl));
139 m_xMenuButton->set_accessible_name(SwResId(STR_PAGE_BREAK_BUTTON));
140
141 m_xVirDev = m_xMenuButton->create_virtual_device();
143
144 // Use pixels for the rest of the drawing
145 m_xVirDev->SetMapMode( MapMode ( MapUnit::MapPixel ) );
146
148 m_aFadeTimer.SetInvokeHandler( LINK( this, SwPageBreakWin, FadeHandler ) );
149}
150
152{
153 disposeOnce();
154}
155
157{
158 m_bDestroyed = true;
161
162 m_pLine.clear();
164
165 m_xMenuButton.reset();
167}
168
170{
171 if (!m_xVirDev)
172 return;
173
174 const ::tools::Rectangle aRect(::tools::Rectangle(Point(0, 0), m_xVirDev->PixelToLogic(GetSizePixel())));
175
176 // Properly paint the control
178
179 BColor aHslLine = rgb2hsl(aColor);
180 double nLuminance = aHslLine.getZ();
181 nLuminance += (1.0 - nLuminance) * 0.75;
182 if ( aHslLine.getZ() > 0.7 )
183 nLuminance = aHslLine.getZ() * 0.7;
184 aHslLine.setZ(nLuminance);
185 BColor aOtherColor = hsl2rgb(aHslLine);
186
188 if (rSettings.GetHighContrastMode())
189 {
190 aColor = rSettings.GetDialogTextColor().getBColor();
191 aOtherColor = rSettings.GetDialogColor().getBColor();
192 }
193
194 bool bRtl = AllSettings::GetLayoutRTL();
195
198 B2DPolygon aPolygon = createPolygonFromRect(aBRect, 3.0 / BUTTON_WIDTH, 3.0 / BUTTON_HEIGHT);
199
200 // Create the polygon primitives
202 B2DPolyPolygon(aPolygon), aOtherColor));
204 std::move(aPolygon), aColor));
205
206 // Create the primitive for the image
207 BitmapEx aBmpEx(RID_BMP_PAGE_BREAK);
208 double nImgOfstX = 3.0;
209 if (bRtl)
210 nImgOfstX = aRect.Right() - aBmpEx.GetSizePixel().Width() - 3.0;
212 aBmpEx, B2DPoint(nImgOfstX, 1.0)));
213
214 double nTop = double(aRect.getOpenHeight()) / 2.0;
215 double nBottom = nTop + 4.0;
216 double nLeft = aRect.getOpenWidth() - ARROW_WIDTH - 6.0;
217 if (bRtl)
218 nLeft = ARROW_WIDTH - 2.0;
219 double nRight = nLeft + 8.0;
220
221 B2DPolygon aTriangle;
222 aTriangle.append(B2DPoint(nLeft, nTop));
223 aTriangle.append(B2DPoint(nRight, nTop));
224 aTriangle.append(B2DPoint((nLeft + nRight) / 2.0, nBottom));
225 aTriangle.setClosed(true);
226
227 BColor aTriangleColor = COL_BLACK.getBColor();
228 if (Application::GetSettings().GetStyleSettings().GetHighContrastMode())
229 aTriangleColor = COL_WHITE.getBColor();
230
231 aSeq.emplace_back();
233 B2DPolyPolygon(aTriangle), aTriangleColor));
234
236 double nFadeRate = double(m_nFadeRate) / 100.0;
237 const basegfx::BColorModifierSharedPtr aBColorModifier =
238 std::make_shared<basegfx::BColorModifier_interpolate>(COL_WHITE.getBColor(),
239 1.0 - nFadeRate);
241 std::move(aSeq), aBColorModifier));
242
243 // Create the processor and process the primitives
245 std::unique_ptr<drawinglayer::processor2d::BaseProcessor2D> pProcessor(
247
248 pProcessor->process(aGhostedSeq);
249
250 m_xMenuButton->set_custom_button(m_xVirDev.get());
251}
252
254{
255 SvxBreak eBreak = SvxBreak::NONE;
256 if ( pCnt )
257 {
258 if ( pCnt->IsInTab() )
259 eBreak = pCnt->FindTabFrame()->GetBreakItem().GetBreak();
260 else
261 eBreak = pCnt->GetBreakItem().GetBreak();
262 }
263 return eBreak;
264}
265
266IMPL_LINK(SwPageBreakWin, SelectHdl, const OUString&, rIdent, void)
267{
268 SwFrameControlPtr pFrameControl = m_pEditWin->GetFrameControlsManager().GetControl(FrameControlType::PageBreak, m_pFrame);
269
270 m_pLine->execute(rIdent);
271
272 // Only fade if there is more than this temporary shared pointer:
273 // The main reference has been deleted due to a page break removal
274 if (pFrameControl.use_count() > 1)
275 Fade( false );
276}
277
278void SwBreakDashedLine::execute(std::u16string_view rIdent)
279{
281 // Is there a PageBefore break on this page?
282 SwContentFrame *pCnt = const_cast<SwContentFrame*>(pPageFrame->FindFirstBodyContent());
283 SvxBreak eBreak = lcl_GetBreakItem( pCnt );
284
285 // Also check the previous page - to see if there is a PageAfter break
286 SwContentFrame *pPrevCnt = nullptr;
287 SvxBreak ePrevBreak = SvxBreak::NONE;
288 const SwPageFrame* pPrevPage = static_cast<const SwPageFrame*>(pPageFrame->GetPrev());
289 if ( pPrevPage )
290 {
291 pPrevCnt = const_cast<SwContentFrame*>(pPrevPage->FindLastBodyContent());
292 ePrevBreak = lcl_GetBreakItem( pPrevCnt );
293 }
294
295 if (pCnt && rIdent == u"edit")
296 {
297 SwWrtShell& rSh = m_pEditWin->GetView().GetWrtShell();
298 bool bOldLock = rSh.IsViewLocked();
299 rSh.LockView( true );
300
301 // Order of edit detection: first RES_BREAK PageAfter, then RES_BREAK PageBefore/RES_PAGEDESC
302 if ( ePrevBreak == SvxBreak::PageAfter )
303 pCnt = pPrevCnt;
304
305 SwContentNode& rNd = pCnt->IsTextFrame()
306 ? *static_cast<SwTextFrame*>(pCnt)->GetTextNodeFirst()
307 : *static_cast<SwNoTextFrame*>(pCnt)->GetNode();
308
309 if ( pCnt->IsInTab() )
310 {
311 rSh.Push( );
312 rSh.ClearMark();
313
314 rSh.SetSelection( SwPaM(rNd) );
315
316 SfxStringItem aItem(m_pEditWin->GetView().GetPool().GetWhich(FN_FORMAT_TABLE_DLG), "textflow");
317 m_pEditWin->GetView().GetViewFrame().GetDispatcher()->ExecuteList(
319 SfxCallMode::SYNCHRON | SfxCallMode::RECORD,
320 { &aItem });
321
323 }
324 else
325 {
326 SwPaM aPaM( rNd );
327 SwPaMItem aPaMItem( m_pEditWin->GetView().GetPool( ).GetWhich( FN_PARAM_PAM ), &aPaM );
328 SfxStringItem aItem( SID_PARA_DLG, "textflow" );
329 m_pEditWin->GetView().GetViewFrame().GetDispatcher()->ExecuteList(
330 SID_PARA_DLG,
331 SfxCallMode::SYNCHRON | SfxCallMode::RECORD,
332 { &aItem, &aPaMItem });
333 }
334 rSh.LockView( bOldLock );
335 m_pEditWin->GrabFocus( );
336 }
337 else if (pCnt && rIdent == u"delete")
338 {
339 SwContentNode& rNd = pCnt->IsTextFrame()
340 ? *static_cast<SwTextFrame*>(pCnt)->GetTextNodeFirst()
341 : *static_cast<SwNoTextFrame*>(pCnt)->GetNode();
342
343 rNd.GetDoc().GetIDocumentUndoRedo( ).StartUndo( SwUndoId::UI_DELETE_PAGE_BREAK, nullptr );
344
346 m_pEditWin->GetView().GetWrtShell().GetAttrPool());
347
348 aSet.Put( SwFormatPageDesc( nullptr ) );
349 // This break could be from the current paragraph, if it has a PageBefore break.
350 if ( eBreak == SvxBreak::PageBefore )
351 aSet.Put( SvxFormatBreakItem( SvxBreak::NONE, RES_BREAK ) );
352
354 SwPaM(rNd), aSet, SetAttrMode::DEFAULT, pPageFrame->getRootFrame());
355
356 // This break could be from the previous paragraph, if it has a PageAfter break.
357 if ( ePrevBreak == SvxBreak::PageAfter )
358 {
359 SwContentNode& rPrevNd = pPrevCnt->IsTextFrame()
360 ? *static_cast<SwTextFrame*>(pPrevCnt)->GetTextNodeFirst()
361 : *static_cast<SwNoTextFrame*>(pPrevCnt)->GetNode();
362 aSet.ClearItem();
363 aSet.Put( SvxFormatBreakItem( SvxBreak::NONE, RES_BREAK ) );
365 SwPaM(rPrevNd), aSet, SetAttrMode::DEFAULT, pPrevCnt->getRootFrame());
366 }
367
369 }
370}
371
372void SwBreakDashedLine::UpdatePosition(const std::optional<Point>& xEvtPt)
373{
374 if ( xEvtPt )
375 {
376 if ( xEvtPt == m_xMousePt )
377 return;
378 m_xMousePt = xEvtPt;
379 }
380
382 const SwFrame* pPrevPage = pPageFrame;
383 do
384 {
385 pPrevPage = pPrevPage->GetPrev();
386 }
387 while ( pPrevPage && ( ( pPrevPage->getFrameArea().Top( ) == pPageFrame->getFrameArea().Top( ) )
388 || static_cast< const SwPageFrame* >( pPrevPage )->IsEmptyPage( ) ) );
389
390 ::tools::Rectangle aBoundRect = GetEditWin()->LogicToPixel( pPageFrame->GetBoundRect(GetEditWin()->GetOutDev()).SVRect() );
391 ::tools::Rectangle aFrameRect = GetEditWin()->LogicToPixel( pPageFrame->getFrameArea().SVRect() );
392
393 tools::Long nYLineOffset = ( aBoundRect.Top() + aFrameRect.Top() ) / 2;
394 if ( pPrevPage )
395 {
396 ::tools::Rectangle aPrevFrameRect = GetEditWin()->LogicToPixel( pPrevPage->getFrameArea().SVRect() );
397 nYLineOffset = ( aPrevFrameRect.Bottom() + aFrameRect.Top() ) / 2;
398 }
399
400 // Get the page + sidebar coords
401 tools::Long nPgLeft = aFrameRect.Left();
402 tools::Long nPgRight = aFrameRect.Right();
403
404 tools::ULong nSidebarWidth = 0;
405 const SwPostItMgr* pPostItMngr = GetEditWin()->GetView().GetWrtShell().GetPostItMgr();
406 if ( pPostItMngr && pPostItMngr->HasNotes() && pPostItMngr->ShowNotes() )
407 nSidebarWidth = pPostItMngr->GetSidebarBorderWidth( true ) + pPostItMngr->GetSidebarWidth( true );
408
410 nPgLeft -= nSidebarWidth;
412 nPgRight += nSidebarWidth;
413
415
416 // Place the button on the left or right?
417 ::tools::Rectangle aVisArea = GetEditWin()->LogicToPixel( GetEditWin()->GetView().GetVisArea() );
418
419 tools::Long nLineLeft = std::max( nPgLeft, aVisArea.Left() );
420 tools::Long nLineRight = std::min( nPgRight, aVisArea.Right() );
421 tools::Long nBtnLeft = nLineLeft;
422
423 if ( m_xMousePt )
424 {
425 nBtnLeft = nLineLeft + m_xMousePt->X() - aBtnSize.getWidth() / 2;
426
427 if ( nBtnLeft < nLineLeft )
428 nBtnLeft = nLineLeft;
429 else if ( ( nBtnLeft + aBtnSize.getWidth() ) > nLineRight )
430 nBtnLeft = nLineRight - aBtnSize.getWidth();
431 }
432
433 // Set the button position
434 m_aBtnRect = ::tools::Rectangle(Point(nBtnLeft, nYLineOffset - BUTTON_HEIGHT / 2), aBtnSize);
435 if (m_pWin)
436 m_pWin->SetRectanglePixel(m_aBtnRect);
437
438 // Set the line position
439 Point aLinePos( nLineLeft, nYLineOffset - 5 );
440 Size aLineSize( nLineRight - nLineLeft, 10 );
441 SetPosSizePixel(aLinePos, aLineSize);
442}
443
444void SwPageBreakWin::SetRectanglePixel(const ::tools::Rectangle& rRect)
445{
446 SetPosSizePixel(rRect.TopLeft(), rRect.GetSize());
447 m_xVirDev->SetOutputSizePixel(rRect.GetSize());
448}
449
450void SwPageBreakWin::Fade( bool bFadeIn )
451{
452 m_bIsAppearing = bFadeIn;
453 if ( bFadeIn )
455
458 if ( !m_bDestroyed )
460}
461
462IMPL_LINK(SwPageBreakWin, ToggleHdl, weld::Toggleable&, rMenuButton, void)
463{
464 // hide on dropdown, draw fully unfaded if dropdown before fully faded in
465 Fade(rMenuButton.get_active());
466}
467
469{
470 const int TICKS_BEFORE_WE_APPEAR = 10;
471 if ( m_bIsAppearing && m_nDelayAppearing < TICKS_BEFORE_WE_APPEAR )
472 {
473 ++m_nDelayAppearing;
474 m_aFadeTimer.Start();
475 return;
476 }
477
478 if ( m_bIsAppearing && m_nFadeRate > 0 )
479 m_nFadeRate -= 25;
480 else if ( !m_bIsAppearing && m_nFadeRate < 100 )
481 m_nFadeRate += 25;
482
483 if ( m_nFadeRate != 100 && !IsVisible() )
484 Show();
485 else if ( m_nFadeRate == 100 && IsVisible( ) )
486 {
487 Hide();
488 m_pLine->DestroyWin();
489 return;
490 }
491 else
492 {
493 m_pLine->UpdatePosition();
494 PaintButton();
495 }
496
497 if (IsVisible( ) && m_nFadeRate > 0 && m_nFadeRate < 100)
498 m_aFadeTimer.Start();
499}
500
502{
504}
505
506/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
std::shared_ptr< SwFrameControl > SwFrameControlPtr
static SvxBreak lcl_GetBreakItem(const SwContentFrame *pCnt)
IMPL_LINK(SwPageBreakWin, SelectHdl, const OUString &, rIdent, void)
IMPL_LINK_NOARG(SwPageBreakWin, FadeHandler, Timer *, void)
#define ARROW_WIDTH
#define BUTTON_HEIGHT
#define BUTTON_WIDTH
const StyleSettings & GetStyleSettings() const
static bool GetLayoutRTL()
static const AllSettings & GetSettings()
const Size & GetSizePixel() const
basegfx::BColor getBColor() const
virtual void InsertItemSet(const SwPaM &rRg, const SfxItemSet &, const SetAttrMode nFlags=SetAttrMode::DEFAULT, SwRootFrame const *pLayout=nullptr)=0
virtual void dispose() override
bool IsSynthetic() const
bool IsLeaveWindow() const
const Point & GetPosPixel() const
static std::unique_ptr< UIObject > create(vcl::Window *pWindow)
Definition: uiobject.cxx:237
sal_uInt16 ClearItem(sal_uInt16 nWhich=0)
const SfxPoolItem * Put(const SfxPoolItem &rItem, sal_uInt16 nWhich)
constexpr tools::Long getWidth() const
constexpr tools::Long Width() const
const Color & GetDialogTextColor() const
bool GetHighContrastMode() const
const Color & GetDialogColor() const
SvxBreak GetBreak() const
Class for the page break control window.
virtual void SetReadonly(bool bReadonly) override
SwBreakDashedLine(SwEditWin *pEditWin, const SwFrame *pFrame)
void UpdatePosition(const std::optional< Point > &xEvtPt=std::optional< Point >())
VclPtr< SwEditWin > m_pEditWin
virtual void MouseMove(const MouseEvent &rMEvt) override
virtual FactoryFunction GetUITestFactory() const override
virtual SwEditWin * GetEditWin() override
std::optional< Point > m_xMousePt
virtual void ShowAll(bool bShow) override
const SwFrame * m_pFrame
virtual bool Contains(const Point &rDocPt) const override
void execute(std::u16string_view rIdent)
::tools::Rectangle m_aBtnRect
SwPageBreakWin & GetOrCreateWin()
VclPtr< SwPageBreakWin > m_pWin
SwContentFrame is the layout for content nodes: a common base class for text (paragraph) and non-text...
Definition: cntfrm.hxx:59
void Push()
store a copy of the current cursor on the cursor stack
Definition: crsrsh.cxx:2550
void SetSelection(const SwPaM &rCursor)
Definition: crsrsh.cxx:3868
void ClearMark()
Definition: crsrsh.cxx:1225
Class for displaying a dashed line in the Writer GUI.
Definition: DashedLine.hxx:18
IDocumentContentOperations const & getIDocumentContentOperations() const
Definition: doc.cxx:329
IDocumentUndoRedo & GetIDocumentUndoRedo()
Definition: doc.cxx:158
Window class for the Writer edit area, this is the one handling mouse and keyboard events and doing t...
Definition: edtwin.hxx:61
const SwView & GetView() const
Definition: edtwin.hxx:246
Pagedescriptor Client of SwPageDesc that is "described" by the attribute.
Definition: fmtpdsc.hxx:36
const SwRect & getFrameArea() const
Definition: frame.hxx:179
const SwPageFrame * GetPageFrame() const
Base class of the Writer layout elements.
Definition: frame.hxx:315
bool IsTextFrame() const
Definition: frame.hxx:1240
SwTabFrame * FindTabFrame()
Definition: frame.hxx:1105
bool IsInTab() const
Definition: frame.hxx:961
SwRootFrame * getRootFrame()
Definition: frame.hxx:685
virtual const SvxFormatBreakItem & GetBreakItem() const
Definition: findfrm.cxx:742
SwFrame * GetPrev()
Definition: frame.hxx:683
SwDoc & GetDoc()
Definition: node.hxx:233
PaM is Point and Mark: a selection of the document model.
Definition: pam.hxx:188
virtual ~SwPageBreakWin() override
int m_nDelayAppearing
Before we show the control, let it transparent for a few timer ticks to avoid appearing with every mo...
void Fade(bool bFadeIn)
VclPtr< SwEditWin > m_pEditWin
std::unique_ptr< weld::MenuButton > m_xMenuButton
SwPageBreakWin(SwBreakDashedLine *pLine, SwEditWin *pEditWin, const SwFrame *pFrame)
void SetRectanglePixel(const ::tools::Rectangle &rRect)
VclPtr< VirtualDevice > m_xVirDev
VclPtr< SwBreakDashedLine > m_pLine
virtual void dispose() override
A page of the document layout.
Definition: pagefrm.hxx:60
SwContentFrame * FindLastBodyContent()
Searches the last ContentFrame in BodyText below the page.
Definition: findfrm.cxx:57
bool IsEmptyPage() const
Definition: pagefrm.hxx:161
SwContentFrame * FindFirstBodyContent()
Definition: pagefrm.hxx:359
sw::sidebarwindows::SidebarPosition SidebarPosition() const
asks the page on which side a margin should be shown, e.g for notes returns true for left side,...
Definition: pagechg.cxx:1462
SwRect GetBoundRect(OutputDevice const *pOutputDevice) const
Definition: paintfrm.cxx:6440
bool HasNotes() const
Definition: PostItMgr.cxx:2116
bool ShowNotes() const
Definition: PostItMgr.cxx:2110
tools::ULong GetSidebarWidth(bool bPx=false) const
Definition: PostItMgr.cxx:2121
tools::ULong GetSidebarBorderWidth(bool bPx=false) const
Definition: PostItMgr.cxx:2147
void Top(const tools::Long nTop)
Definition: swrect.hxx:206
tools::Rectangle SVRect() const
Definition: swrect.hxx:292
Represents the visualization of a paragraph.
Definition: txtfrm.hxx:168
static const SwViewOption & GetCurrentViewOptions()
Definition: viewopt.cxx:605
const Color & GetPageBreakColor() const
Definition: viewopt.cxx:532
bool IsViewLocked() const
Definition: viewsh.hxx:490
void LockView(bool b)
Definition: viewsh.hxx:491
const SwPostItMgr * GetPostItMgr() const
Definition: viewsh.hxx:583
SwWrtShell & GetWrtShell() const
Definition: view.hxx:423
Used by the UI to modify the document model.
Definition: wrtsh.hxx:97
bool Pop(SwCursorShell::PopMode, ::std::optional< SwCallLink > &roLink)
Definition: wrtsh1.cxx:2047
bool IsActive() const
void Stop()
void SetTimeout(sal_uInt64 nTimeoutMs)
void SetInvokeHandler(const Link< Timer *, void > &rLink)
virtual void Start(bool bStartTimer=true) override
void disposeAndClear()
void clear()
reference_type * get() const
static VclPtr< reference_type > Create(Arg &&... arg)
void append(const basegfx::B2DPoint &rPoint, sal_uInt32 nCount)
void setClosed(bool bNew)
TYPE getZ() const
void setZ(TYPE fZ)
bool Contains(const Point &rPOINT) const
constexpr tools::Long Top() const
constexpr Point TopLeft() const
constexpr Size GetSize() const
constexpr tools::Long Right() const
constexpr tools::Long Left() const
constexpr tools::Long Bottom() const
Point LogicToPixel(const Point &rLogicPt) const
void set_id(const OUString &rID)
virtual Point GetPosPixel() const
void Show(bool bVisible=true, ShowFlags nFlags=ShowFlags::NONE)
::OutputDevice const * GetOutDev() const
virtual Size GetSizePixel() const
virtual void SetPosSizePixel(const Point &rNewPos, const Size &rNewSize)
#define FN_FORMAT_TABLE_DLG
Definition: cmdid.h:355
#define FN_PARAM_PAM
Definition: cmdid.h:858
constexpr ::Color COL_WHITE(0xFF, 0xFF, 0xFF)
constexpr ::Color COL_BLACK(0x00, 0x00, 0x00)
float u
constexpr TypedWhichId< SvxFormatBreakItem > RES_BREAK(100)
std::function< std::unique_ptr< UIObject >(vcl::Window *)> FactoryFunction
Sequence< sal_Int8 > aSeq
B2DPolygon createPolygonFromRect(const B2DRectangle &rRect, double fRadiusX, double fRadiusY)
BColor rgb2hsl(const BColor &rRGBColor)
BColor hsl2rgb(const BColor &rHSLColor)
std::shared_ptr< BColorModifier > BColorModifierSharedPtr
std::unique_ptr< BaseProcessor2D > createProcessor2DFromOutputDevice(OutputDevice &rTargetOutDev, const drawinglayer::geometry::ViewInformation2D &rViewInformation2D)
unsigned long ULong
long Long
basegfx::B2DRange b2DRectangleFromRectangle(const ::tools::Rectangle &rRect)
SwNodeOffset min(const SwNodeOffset &a, const SwNodeOffset &b)
Definition: nodeoffset.hxx:35
SwContentNode * GetNode(SwPaM &rPam, bool &rbFirst, SwMoveFnCollection const &fnMove, bool const bInReadOnly, SwRootFrame const *const i_pLayout)
This function returns the next node in direction of search.
Definition: pam.cxx:1043
SvxBreak
OUString SwResId(TranslateId aId)
Definition: swmodule.cxx:168
@ UI_DELETE_PAGE_BREAK