LibreOffice Module svx (master)  1
svdmrkv.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 
20 #ifndef INCLUDED_SVX_SVDMRKV_HXX
21 #define INCLUDED_SVX_SVDMRKV_HXX
22 
23 #include <svx/svdmark.hxx>
24 #include <svx/svdhdl.hxx>
25 #include <svx/svdsnpv.hxx>
26 #include <svx/svdtypes.hxx>
27 #include <svx/svxdllapi.h>
28 #include <o3tl/typed_flags_set.hxx>
29 
30 class SfxViewShell;
31 
32 // The following is not yet implemented, or just partially:
33 enum class SdrSearchOptions
34 {
35  NONE = 0x0000,
36  DEEP = 0x0001, /* recursive into group objects */
37  ALSOONMASTER = 0x0002, /* MasterPages are also scanned */
38  WHOLEPAGE = 0x0004, /* Not just the ObjList of PageView */
39  TESTMARKABLE = 0x0008, /* just markable objects/points/handles/... */
40  TESTMACRO = 0x0010, /* Just objects with macro */
41  TESTTEXTEDIT = 0x0020, /* Just TextEdit-enabled objects */
42  MARKED = 0x0040, /* Just marked objects/points/... */
43  PASS2BOUND = 0x0080, /* In case of empty search results, then 2nd. try with BoundRectHit */
44  BEFOREMARK = 0x0100, /* if one marked one found, ignore all behind that */
45 
46  IMPISMASTER = 0x0200, /* MasterPage is being searched right now */
50 };
51 namespace o3tl
52 {
53  template<> struct typed_flags<SdrSearchOptions> : is_typed_flags<SdrSearchOptions, 0x03ff> {};
54 }
55 
56 enum class SdrHitKind
57 {
58  NONE, // No hit
59  Object, // Hit
60  Handle, // Marking handle
61  HelpLine, // Reference line
62  Gluepoint, // Glue point
63  TextEdit, // Open OutlinerView was hit
64  TextEditObj, // Object for SdrBeginTextEdit (Textbereich)
65  UrlField, // Field in TextObj was hit (while it is currently not edited)
66  Macro, // Object for BegMacroObj
67  MarkedObject, // Marked object (e.g. for dragging)
68  UnmarkedObject, // non-marked Object (e.g. for marking)
69  Cell // hit on a cell inside a table shape (outside of the cells text area)
70 };
71 
72 enum class SdrViewEditMode {
73  Edit, // Also known as arrow or pointer mode
74  Create, // Tool for object creation
75  GluePointEdit // Glue point editing mode
76 };
77 
80 {
81  NONE = 0,
82  POINTS = 1,
83  GLUEPOINTS = 2,
84 };
85 
86 class ImplMarkingOverlay;
87 
89 {
90  friend class SdrPageView;
91 
92  // #114409#-3 Migrate selections
96 
97 protected:
98  SdrObject* mpMarkedObj; // If not just one object ( i.e. More than one object ) is marked.
99  SdrPageView* mpMarkedPV; // If all marked obects are situated on the same PageView.
100 
101  Point maRef1; // Persistent - Rotation center / axis of reflection
102  Point maRef2; // Persistent
105 
109 
111 
112  SdrDragMode meDragMode; // Persistent
115 
116  bool mbDesignMode : 1; // DesignMode for SdrUnoObj
117  bool mbForceFrameHandles : 1; // Persistent - FrameDrag also for single objects
118  bool mbPlusHdlAlways : 1; // Persistent
119  bool mbInsPolyPoint : 1; // at this time InsPolyPointDragging
120  bool mbMarkedObjRectDirty : 1;
121  bool mbMrkPntDirty : 1;
122  bool mbMarkedPointsRectsDirty : 1;
123 
124  // flag to completely disable handles at the view
125  bool mbMarkHandlesHidden : 1;
126 
127  // Helper to get a possible GridOffset from SdrObject
128  bool getPossibleGridOffsetForSdrObject(
129  basegfx::B2DVector& rOffset,
130  const SdrObject* pObj,
131  const SdrPageView* pPV) const;
132 
133  // Helper to get a possible GridOffset from Position
134  bool getPossibleGridOffsetForPosition(
135  basegfx::B2DVector& rOffset,
136  const basegfx::B2DPoint& rPoint,
137  const SdrPageView* pPV) const;
138 
139 private:
141  SVX_DLLPRIVATE void ImpSetPointsRects() const;
142  void UndirtyMrkPnt() const;
143 
144 protected:
145  virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint) override;
146  virtual void ModelHasChanged() override; // Is called by the PaintView
147  virtual void SetMarkHandles(SfxViewShell* pOtherShell); // maHdlList - fill (List of handles)
148  void SetMarkRects(); // Rects at the PageViews
149  void CheckMarked(); // Scan MarkList after Del and Lock Layer ...
150  void AddDragModeHdl(SdrDragMode eMode);
151  virtual bool MouseMove(const MouseEvent& rMEvt, OutputDevice* pWin) override;
152  virtual bool RequestHelp(const HelpEvent& rHEvt) override;
153 
154  // add custom handles (used by other apps, e.g. AnchorPos)
155  virtual void AddCustomHdl();
156 
157  void ForceRefToMarked();
158  void ForceUndirtyMrkPnt() const { if (mbMrkPntDirty) UndirtyMrkPnt(); }
159 
160  virtual SdrObject* CheckSingleSdrObjectHit(const Point& rPnt, sal_uInt16 nTol, SdrObject* pObj, SdrPageView* pPV, SdrSearchOptions nOptions, const SdrLayerIDSet* pMVisLay) const;
161  SdrObject* CheckSingleSdrObjectHit(const Point& rPnt, sal_uInt16 nTol, SdrObjList const * pOL, SdrPageView* pPV, SdrSearchOptions nOptions, const SdrLayerIDSet* pMVisLay, SdrObject*& rpRootObj) const;
162  SdrObject* CheckSingleSdrObjectHit(const Point& rPnt, sal_uInt16 nTol, SdrObjList const * pOL, SdrPageView* pPV, SdrSearchOptions nOptions, const SdrLayerIDSet* pMVisLay, SdrObject*& rpRootObj,const SdrMarkList * pMarkList) const;
163  bool ImpIsFrameHandles() const;
164  OUString ImpGetDescriptionString(const char* pStrCacheID, ImpGetDescriptionOptions nOpt=ImpGetDescriptionOptions::NONE) const;
165 
166  // Generates a string including degrees symbol, from an angel specification in 1/100deg
167  bool ImpMarkPoint(SdrHdl* pHdl, SdrMark* pMark, bool bUnmark);
168  virtual bool MarkPoints(const tools::Rectangle* pRect, bool bUnmark);
169  bool MarkGluePoints(const tools::Rectangle* pRect, bool bUnmark);
170 
171  void SetMoveOutside(bool bOn);
172  bool MarkableObjectsExceed( int n ) const;
173 
174 protected:
175  // #i71538# make constructors of SdrView sub-components protected to avoid incomplete incarnations which may get casted to SdrView
176  SdrMarkView(
177  SdrModel& rSdrModel,
178  OutputDevice* pOut);
179 
180  virtual ~SdrMarkView() override;
181 
182 public:
183  virtual bool IsAction() const override;
184  virtual void MovAction(const Point& rPnt) override;
185  virtual void EndAction() override;
186  virtual void BckAction() override;
187  virtual void BrkAction() override;
188  virtual void TakeActionRect(tools::Rectangle& rRect) const override;
189 
190  virtual void ClearPageView() override;
191  virtual void HideSdrPage() override;
192  bool IsObjMarkable(SdrObject const * pObj, SdrPageView const * pPV) const;
193 
194  // Returns sal_True if objects, points or glue points are selected by drawing a frame
195  // (as long as the frame is drawn).
196  bool IsMarking() const { return IsMarkObj() || IsMarkPoints() || IsMarkGluePoints(); }
197 
198  // Marking objects by drawing of a selection frame
199  void BegMarkObj(const Point& rPnt, bool bUnmark = false);
200  void MovMarkObj(const Point& rPnt);
201  bool EndMarkObj();
202  void BrkMarkObj();
203  bool IsMarkObj() const { return (nullptr != mpMarkObjOverlay); }
204 
205  // DragModes: SDRDRAG_CREATE,SdrDragMode::Move,SdrDragMode::Resize,SdrDragMode::Rotate,SdrDragMode::Mirror,SdrDragMode::Shear,SdrDragMode::Crook
206  // Move==Resize
207  // The interface might maybe be changed in the future because of Ortho-Drag
208  void SetDragMode(SdrDragMode eMode);
209  SdrDragMode GetDragMode() const { return meDragMode; }
210  void SetFrameHandles(bool bOn);
211  bool IsFrameHandles() const { return mbForceFrameHandles; }
212 
213  // returns true if number of markable objects is greater than 1
214  bool HasMultipleMarkableObjects() const { return MarkableObjectsExceed(1); };
215 
216  void SetEditMode(SdrViewEditMode eMode);
217  SdrViewEditMode GetEditMode() const { return meEditMode; }
218 
220  bool IsEditMode() const { return meEditMode==SdrViewEditMode::Edit; }
221  void SetCreateMode(bool bOn) { SetEditMode(bOn?SdrViewEditMode::Create:SdrViewEditMode::Edit); }
222  bool IsCreateMode() const { return meEditMode==SdrViewEditMode::Create; }
223  void SetGluePointEditMode(bool bOn) { SetEditMode(bOn?SdrViewEditMode::GluePointEdit:meEditMode0); }
224  bool IsGluePointEditMode() const { return meEditMode==SdrViewEditMode::GluePointEdit; }
225 
226  void SetDesignMode(bool bOn = true);
227  bool IsDesignMode() const { return mbDesignMode; }
228 
229  void SetFrameDragSingles(bool bOn=true) { SetFrameHandles(bOn); }
230  bool IsFrameDragSingles() const { return IsFrameHandles(); }
231 
232  bool HasMarkableObj() const { return MarkableObjectsExceed(0); };
233 
234 
235 // migrate selections
236 
237 protected:
238  // all available changing methods
240 
241 public:
242  // all available const methods for read access to selection
243  const SdrMarkList& GetMarkedObjectList() const { return maSdrViewSelection.GetMarkedObjectList(); }
244  // returns SAL_MAX_SIZE if not found
245  size_t TryToFindMarkedObject(const SdrObject* pObj) const { return GetMarkedObjectList().FindObject(pObj); }
246  SdrPageView* GetSdrPageViewOfMarkedByIndex(size_t nNum) const { return GetMarkedObjectList().GetMark(nNum)->GetPageView(); }
247  SdrMark* GetSdrMarkByIndex(size_t nNum) const { return GetMarkedObjectList().GetMark(nNum); }
248  SdrObject* GetMarkedObjectByIndex(size_t nNum) const { return GetMarkedObjectList().GetMark(nNum)->GetMarkedSdrObj(); }
249  size_t GetMarkedObjectCount() const { return GetMarkedObjectList().GetMarkCount(); }
250  void SortMarkedObjects() const { GetMarkedObjectList().ForceSort(); }
251  bool AreObjectsMarked() const { return 0 != GetMarkedObjectList().GetMarkCount(); }
252  OUString const & GetDescriptionOfMarkedObjects() const { return GetMarkedObjectList().GetMarkDescription(); }
253  OUString const & GetDescriptionOfMarkedPoints() const { return GetMarkedObjectList().GetPointMarkDescription(); }
254  OUString const & GetDescriptionOfMarkedGluePoints() const { return GetMarkedObjectList().GetGluePointMarkDescription(); }
255 
256  // Get a list of all those links which are connected to marked nodes,
257  // but which are not marked themselves.
258  const SdrMarkList& GetEdgesOfMarkedNodes() const { return maSdrViewSelection.GetEdgesOfMarkedNodes(); }
259  const SdrMarkList& GetMarkedEdgesOfMarkedNodes() const { return maSdrViewSelection.GetMarkedEdgesOfMarkedNodes(); }
260  const std::vector<SdrObject*>& GetTransitiveHullOfMarkedObjects() const { return maSdrViewSelection.GetAllMarkedObjects(); }
261 
262 
263  // mechanism to complete disable handles at the view. Handles will be hidden and deleted
264  // when set, no new ones created, no interaction allowed. Handles will be recreated and shown
265  // when reset. Default is false.
266  void hideMarkHandles();
267  void showMarkHandles();
268  bool areMarkHandlesHidden() const { return mbMarkHandlesHidden; }
269 
270  bool IsMarkedHit(const Point& rPnt, short nTol=-2) const { return IsMarkedObjHit(rPnt,nTol); }
271  bool IsMarkedObjHit(const Point& rPnt, short nTol=-2) const;
272 
273  SdrHdl* PickHandle(const Point& rPnt) const;
274 
275  // Pick: Supported options for nOptions are:
276  // SdrSearchOptions::DEEP SdrSearchOptions::ALSOONMASTER SdrSearchOptions::TESTMARKABLE SdrSearchOptions::TESTTEXTEDIT
277  // SdrSearchOptions::MARKED
278  // SdrSearchOptions::WHOLEPAGE
279  SdrObject* PickObj(const Point& rPnt, short nTol, SdrPageView*& rpPV, SdrSearchOptions nOptions, SdrObject** ppRootObj, bool* pbHitPassDirect=nullptr) const;
280  SdrObject* PickObj(const Point& rPnt, short nTol, SdrPageView*& rpPV, SdrSearchOptions nOptions=SdrSearchOptions::NONE) const;
281  bool MarkObj(const Point& rPnt, short nTol=-2, bool bToggle=false, bool bDeep=false);
282 
283  // Pick: Supported options for nOptions are SdrSearchOptions::PASS2BOUND
284  bool PickMarkedObj(const Point& rPnt, SdrObject*& rpObj, SdrPageView*& rpPV, SdrSearchOptions nOptions) const;
285 
286  // Selects the most upper of the marked objects (O1) and scans from there
287  // towards bottom direction, selecting the first non-marked object (O2).
288  // In case of success the marking of O1 is deleted, a marking is created at
289  // O2 and TRUE is returned. With the parameter bPrev=sal_True the scan
290  // direction is turned to the other direction.
291  bool MarkNextObj(bool bPrev=false);
292 
293  // Selects the most upper of the marked objects which is hit by rPnt/nTol
294  // and scans from there to bottom direction, selecting the first non-marked
295  // object (O2). In case of success the marking of O1 is deleted, a marking
296  // is created at O2 and sal_True is returned. With the parameter
297  // bPrev=sal_True the scan direction is turned to the other direction.
298  bool MarkNextObj(const Point& rPnt, short nTol, bool bPrev);
299 
300  // Mark all objects within a rectangular area
301  // Just objects are marked which are inclosed completely
302  void MarkObj(const tools::Rectangle& rRect, bool bUnmark);
303  void MarkObj(SdrObject* pObj, SdrPageView* pPV, bool bUnmark=false, bool bImpNoSetMarkHdl=false);
304  void MarkAllObj(SdrPageView* pPV=nullptr); // pPage=NULL => all displayed pages
305  void UnmarkAllObj(SdrPageView const * pPV=nullptr); // pPage=NULL => all displayed pages
306 
307  // This function is time-consuming intensive, as the MarkList has to be scanned.
308  bool IsObjMarked(SdrObject const * pObj) const;
309  void UnMarkAll(SdrPageView const * pPV=nullptr) { UnmarkAllObj(pPV); }
310 
311  // Request/set the size of the marking handles. Declaration in Pixel.
312  // The value is meant to be the edge length ( link length ).
313  // Pair values are round up to impair values: 3->3, 4->5, 5->5, 6->7, 7->7, ...
314  // Default value is 7, minimum value is 3 Pixels.
315  sal_uInt16 GetMarkHdlSizePixel() const;
316  void SetMarkHdlSizePixel(sal_uInt16 nSiz);
317 
318  virtual bool HasMarkablePoints() const;
319  virtual sal_Int32 GetMarkablePointCount() const;
320  virtual bool HasMarkedPoints() const;
321 
322  // There might be points which can't be marked:
323  bool IsPointMarkable(const SdrHdl& rHdl) const;
324  virtual bool MarkPoint(SdrHdl& rHdl, bool bUnmark=false);
325 
327  bool MarkPointHelper(SdrHdl* pHdl, SdrMark* pMark, bool bUnmark);
328 
329  bool UnmarkPoint(SdrHdl& rHdl) { return MarkPoint(rHdl,true); }
330  bool IsPointMarked(const SdrHdl& rHdl) const { ForceUndirtyMrkPnt(); return rHdl.IsSelected(); }
331  bool MarkAllPoints() { return MarkPoints(nullptr,false); }
332  bool UnmarkAllPoints() { return MarkPoints(nullptr,true); }
333 
334  // Selects the first marked point (P1) which is hit by rPnt
335  // and from there it searches the first non-marked point(P2).
336  // In case of success the marking of
337  // P1 is deleted, a mark is set at P2.
338  void MarkNextPoint();
339 
340  // Search for the number of the suitable handle. In case of empty search result,
341  // SAL_MAX_SIZE is returned.
342  size_t GetHdlNum(SdrHdl const * pHdl) const { return maHdlList.GetHdlNum(pHdl); }
343  SdrHdl* GetHdl(size_t nHdlNum) const { return maHdlList.GetHdl(nHdlNum); }
344  const SdrHdlList& GetHdlList() const { return maHdlList; }
345 
346  // Draw a selection frame for marking of points.
347  // This routine will just be started in case that HasMarkablePoints() returns sal_True.
348  bool BegMarkPoints(const Point& rPnt, bool bUnmark = false);
349  void MovMarkPoints(const Point& rPnt);
350  bool EndMarkPoints();
351  void BrkMarkPoints();
352  bool IsMarkPoints() const { return (nullptr != mpMarkPointsOverlay); }
353 
354  // Select that additional handles are displayed permanently.
355  void SetPlusHandlesAlwaysVisible(bool bOn);
356  bool IsPlusHandlesAlwaysVisible() const { return mbPlusHdlAlways; }
357 
358  bool HasMarkableGluePoints() const;
359  bool HasMarkedGluePoints() const;
360 
361  // A gluepoint is clearly identified by the SdrObject
362  // (to which it belongs) as well as by a sal_uInt16 nId (as each SdrObject may consist of
363  // several glue points. Here at the View there is an additional
364  // SdrPageView, which should be defined correctly always.
365  // Alternatively a gluepoint may be characterized by a SdrHdl.
366  // In this case the SdrHdl instance consists of all required information.
367  // And in this case, the glue point are always is marked by enforcement
368  // (Handlers are just situated at marked gluepoints )
369  // Attention: With each change of the glue point status the handle list is re-calculated.
370  // All previously saved SdrHdl* became invalid by this, the same with the point IDs!
371  bool PickGluePoint(const Point& rPnt, SdrObject*& rpObj, sal_uInt16& rnId, SdrPageView*& rpPV) const;
372  bool MarkGluePoint(const SdrObject* pObj, sal_uInt16 nId, bool bUnmark);
373  void UnmarkGluePoint(const SdrObject* pObj, sal_uInt16 nId) { MarkGluePoint(pObj,nId,true); }
374  bool IsGluePointMarked(const SdrObject* pObj, sal_uInt16 nId) const;
375 
376  // Get the Hdl (handle) of a marked GluePoint. Non-marked
377  // GluePoints don`t have handles
378  SdrHdl* GetGluePointHdl(const SdrObject* pObj, sal_uInt16 nId) const;
379 
380  // Mark all points within this rectangular (View coordinates)
381  bool MarkAllGluePoints() { return MarkGluePoints(nullptr,false); }
382  bool UnmarkAllGluePoints() { return MarkGluePoints(nullptr,true); }
383 
384  // Selects the first marked point (P1) which is hit by rPnt
385  // and from there it searches the first non-marked point(P2).
386  // In case of success the marking of
387  // P1 is deleted, a mark is set at P2.
388  void MarkNextGluePoint();
389 
390  // Draw a selection frame for glue point marking.
391  // This routine will just be started in case that HasMarkablePoints() returns sal_True.
392  // The GlueEditMode sal_True is disregarded.
393  // bool BegMarkGluePoints(const Point& rPnt, OutputDevice* pOut);
394  bool BegMarkGluePoints(const Point& rPnt, bool bUnmark = false);
395  void MovMarkGluePoints(const Point& rPnt);
396  void EndMarkGluePoints();
397  void BrkMarkGluePoints();
398  bool IsMarkGluePoints() const { return (nullptr != mpMarkGluePointsOverlay); }
399 
400  // bRestraintPaint=sal_False causes the handles not to be drawn immediately.
401  // AdjustMarkHdl is just called in case of changes; usually this causes an Invalidate
402  // At the end of a redraw the handles are drawn automatically.
403  // The purpose is to avoid unnecessary flickering. -> This does not yet work, that's why sal_True!
404  void AdjustMarkHdl(SfxViewShell* pOtherShell = nullptr); //HMHBOOL bRestraintPaint=sal_True);
405 
406  const tools::Rectangle& GetMarkedObjRect() const; // SnapRects of Objects, without line width
407  tools::Rectangle GetMarkedObjBoundRect() const; // incl. line width, overlapping rags, ...
408  const tools::Rectangle& GetMarkedPointsRect() const; // Enclosing rectangle of all marked points
409  const tools::Rectangle& GetMarkedGluePointsRect() const; // Enclosing rectangle of all marked glue points
410  const tools::Rectangle& GetAllMarkedRect() const { return GetMarkedObjRect(); }
411  tools::Rectangle GetAllMarkedBoundRect() const { return GetMarkedObjBoundRect(); }
412 
413  // Will be always called, if the list of marked objects might be changed.
414  // If you override this method, be sure that you call the
415  // methods of the base class!
416  virtual void MarkListHasChanged();
417 
418  // Entering (Editing) of a maybe marked object group. If there are several
419  // object groups marked, the most upper group is selected. After that
420  // all member objects of the group are directly accessible. All other
421  // objects may not be processed in the meantime (until the next
422  // LeaveGroup()). With markings which overlaps pages, every page is processed
423  // separately. The method returns sal_True, if at least one group was entered.
424  void EnterMarkedGroup();
425 
426  // Rotation center point and start point of the axis of reflection, respectively
427  const Point& GetRef1() const { return maRef1; }
428  void SetRef1(const Point& rPt);
429 
430  // End point of the axis of reflection
431  const Point& GetRef2() const { return maRef2; }
432  void SetRef2(const Point& rPt);
434  virtual SfxViewShell* GetSfxViewShell() const;
435 };
436 
437 
438 // - Hit tolerances:
439 // It has to be declared in logical coordinates. So please translate the
440 // wanted pixel value with PixelToLogic in Logical values.
441 // Taking as example a logical value of 100:
442 // - For a horizontal hairline (Object with height 0), the generated data is +/-100, i.e.
443 // a vertical area of 200 logical units is sensitive.
444 // - For a polygon, a rectangular of the size (200,200) is generated and a
445 // touch test between Poly and this Rect is processed.
446 // - Obects which respond SdrObject::HasEdit()==TRUE ( e.g. a text frame ),
447 // are specially treated: An additional sensitive area with a width of
448 // 2*Tol (200 units for this example) is created around the object.
449 // When an object is directly hit, the Edit method is called.
450 // In opposite, a hit in the surrounding sensitive area enables Dragging.
451 
452 
453 #endif // INCLUDED_SVX_SVDMRKV_HXX
454 
455 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
virtual void HideSdrPage()
Definition: svdpntv.cxx:390
bool UnmarkPoint(SdrHdl &rHdl)
Definition: svdmrkv.hxx:329
const SdrMarkList & GetMarkedObjectList() const
Definition: svdmark.hxx:244
size_t GetHdlNum(const SdrHdl *pHdl) const
Definition: svdhdl.cxx:2287
size_t GetHdlNum(SdrHdl const *pHdl) const
Definition: svdmrkv.hxx:342
tools::Rectangle maMarkedGluePointsRect
Definition: svdmrkv.hxx:108
void SortMarkedObjects() const
Definition: svdmrkv.hxx:250
tools::Rectangle GetAllMarkedBoundRect() const
Definition: svdmrkv.hxx:411
bool UnmarkAllGluePoints()
Definition: svdmrkv.hxx:382
bool HasMarkableObj() const
Definition: svdmrkv.hxx:232
virtual void ModelHasChanged()
Definition: svdpntv.cxx:271
sal_uInt16 mnFrameHandlesLimit
Definition: svdmrkv.hxx:110
ImplMarkingOverlay * mpMarkObjOverlay
Definition: svdmrkv.hxx:93
void UnmarkGluePoint(const SdrObject *pObj, sal_uInt16 nId)
Definition: svdmrkv.hxx:373
bool AreObjectsMarked() const
Definition: svdmrkv.hxx:251
SdrSearchOptions
Definition: svdmrkv.hxx:33
sdr::ViewSelection maSdrViewSelection
Definition: svdmrkv.hxx:104
bool IsDesignMode() const
Definition: svdmrkv.hxx:227
ImplMarkingOverlay * mpMarkPointsOverlay
Definition: svdmrkv.hxx:94
SdrViewEditMode
Definition: svdmrkv.hxx:72
virtual void Notify(SfxBroadcaster &rBC, const SfxHint &rHint) override
Definition: svdpntv.cxx:211
OUString const & GetDescriptionOfMarkedGluePoints() const
Definition: svdmrkv.hxx:254
OUString const & GetDescriptionOfMarkedPoints() const
Definition: svdmrkv.hxx:253
SdrPageView * GetSdrPageViewOfMarkedByIndex(size_t nNum) const
Definition: svdmrkv.hxx:246
size_t TryToFindMarkedObject(const SdrObject *pObj) const
Definition: svdmrkv.hxx:245
void SetFrameDragSingles(bool bOn=true)
Definition: svdmrkv.hxx:229
#define SVX_DLLPUBLIC
Definition: svxdllapi.h:28
void SetEditMode(bool bOn)
Definition: svdmrkv.hxx:219
SdrDragMode GetDragMode() const
Definition: svdmrkv.hxx:209
void SetGluePointEditMode(bool bOn)
Definition: svdmrkv.hxx:223
void SetCreateMode(bool bOn)
Definition: svdmrkv.hxx:221
virtual void BrkAction() override
Definition: svdsnpv.cxx:239
const SdrMarkList & GetMarkedEdgesOfMarkedNodes() const
Definition: svdmark.cxx:682
bool MarkAllPoints()
Definition: svdmrkv.hxx:331
bool IsEditMode() const
Definition: svdmrkv.hxx:220
virtual void TakeActionRect(tools::Rectangle &rRect) const override
Definition: svdsnpv.cxx:246
bool HasMultipleMarkableObjects() const
Definition: svdmrkv.hxx:214
SdrHdl * GetHdl(size_t nHdlNum) const
Definition: svdmrkv.hxx:343
virtual bool MouseMove(const MouseEvent &, OutputDevice *)
Definition: svdpntv.hxx:461
virtual bool RequestHelp(const HelpEvent &)
Definition: svdpntv.hxx:462
void ForceUndirtyMrkPnt() const
Definition: svdmrkv.hxx:158
bool IsMarkedHit(const Point &rPnt, short nTol=-2) const
Definition: svdmrkv.hxx:270
bool IsMarkGluePoints() const
Definition: svdmrkv.hxx:398
Point maRef1
Definition: svdmrkv.hxx:101
bool MarkAllGluePoints()
Definition: svdmrkv.hxx:381
const SdrMarkList & GetEdgesOfMarkedNodes() const
Definition: svdmark.cxx:672
Point maRef2
Definition: svdmrkv.hxx:102
SdrHitKind
Definition: svdmrkv.hxx:56
Everything a View needs to know about a selected object.
Definition: svdmark.hxx:43
virtual void ClearPageView()
Definition: svdpntv.cxx:362
SdrDragMode meDragMode
Definition: svdmrkv.hxx:112
bool IsMarkObj() const
Definition: svdmrkv.hxx:203
size_t GetMarkedObjectCount() const
Definition: svdmrkv.hxx:249
OUString const & GetDescriptionOfMarkedObjects() const
Definition: svdmrkv.hxx:252
bool IsSelected() const
Definition: svdhdl.hxx:206
const std::vector< SdrObject * > & GetAllMarkedObjects() const
Definition: svdmark.cxx:692
SdrMarkList & GetMarkedObjectListWriteAccess()
Definition: svdmark.hxx:253
const SdrMarkList & GetMarkedObjectList() const
Definition: svdmrkv.hxx:243
virtual bool IsAction() const override
Definition: svdsnpv.cxx:205
bool IsGluePointEditMode() const
Definition: svdmrkv.hxx:224
const SdrMarkList & GetEdgesOfMarkedNodes() const
Definition: svdmrkv.hxx:258
SdrPageView * mpMarkedPV
Definition: svdmrkv.hxx:99
Abstract DrawObject.
Definition: svdobj.hxx:312
bool IsCreateMode() const
Definition: svdmrkv.hxx:222
const tools::Rectangle & GetAllMarkedRect() const
Definition: svdmrkv.hxx:410
SdrObject * mpMarkedObj
Definition: svdmrkv.hxx:98
const SdrMarkList & GetMarkedEdgesOfMarkedNodes() const
Definition: svdmrkv.hxx:259
SdrViewEditMode meEditMode
Definition: svdmrkv.hxx:113
SdrHdl * GetHdl(size_t nNum) const
Definition: svdhdl.hxx:462
SdrViewEditMode meEditMode0
Definition: svdmrkv.hxx:114
bool IsMarkPoints() const
Definition: svdmrkv.hxx:352
bool IsFrameHandles() const
Definition: svdmrkv.hxx:211
bool UnmarkAllPoints()
Definition: svdmrkv.hxx:332
const Point & GetRef2() const
Definition: svdmrkv.hxx:431
SdrDragMode
Definition: svdtypes.hxx:34
virtual void MovAction(const Point &rPnt) override
Definition: svdsnpv.cxx:210
virtual void BckAction() override
Definition: svdsnpv.cxx:232
bool IsFrameDragSingles() const
Definition: svdmrkv.hxx:230
bool IsPointMarked(const SdrHdl &rHdl) const
Definition: svdmrkv.hxx:330
virtual void EndAction() override
Definition: svdsnpv.cxx:221
void SetDesignMode(bool _bDesignMode) const
Sets all elements in the view which support a design and an alive mode into the given mode...
Definition: svdpagv.cxx:355
bool areMarkHandlesHidden() const
Definition: svdmrkv.hxx:268
SdrObject * GetMarkedObjectByIndex(size_t nNum) const
Definition: svdmrkv.hxx:248
SdrViewEditMode GetEditMode() const
Definition: svdmrkv.hxx:217
ImpGetDescriptionOptions
options for ImpGetDescriptionString()
Definition: svdmrkv.hxx:79
bool IsPlusHandlesAlwaysVisible() const
Definition: svdmrkv.hxx:356
tools::Rectangle maMarkedPointsRect
Definition: svdmrkv.hxx:107
const std::vector< SdrObject * > & GetTransitiveHullOfMarkedObjects() const
Definition: svdmrkv.hxx:260
SdrHdlList maHdlList
Definition: svdmrkv.hxx:103
const SdrHdlList & GetHdlList() const
Definition: svdmrkv.hxx:344
SdrMark * GetSdrMarkByIndex(size_t nNum) const
Definition: svdmrkv.hxx:247
ImplMarkingOverlay * mpMarkGluePointsOverlay
Definition: svdmrkv.hxx:95
tools::Rectangle maMarkedObjRect
Definition: svdmrkv.hxx:106
bool IsMarking() const
Definition: svdmrkv.hxx:196
#define SVX_DLLPRIVATE
Definition: svxdllapi.h:30
SdrMarkList & GetMarkedObjectListWriteAccess()
Definition: svdmrkv.hxx:239
void UnMarkAll(SdrPageView const *pPV=nullptr)
Definition: svdmrkv.hxx:309
SVX_DLLPRIVATE void ImpClearVars()
Definition: svdpntv.cxx:134
bool IsObjMarkable(SdrObject const *pObj) const
At least one member must be visible for the Group object and it must not be locked.
Definition: svdpagv.cxx:596
const Point & GetRef1() const
Definition: svdmrkv.hxx:427