20 #include <com/sun/star/embed/XEmbeddedObject.hpp>
39 #include <LibreOfficeKit/LibreOfficeKitEnums.h>
45 #include <osl/diagnose.h>
47 #include <drawview.hxx>
50 #include <document.hxx>
52 #include <globstr.hrc>
69 #define SC_HANDLESIZE_BIG 9
73 EnableExtendedKeyInputDispatcher(
false);
74 EnableExtendedMouseEventDispatcher(
false);
76 SetFrameDragSingles();
78 SetMinMoveDistancePixel( 2 );
79 SetHitTolerancePixel( 2 );
83 SCTAB nViewTab = pViewData->GetTabNo();
84 ShowSdrPage(GetModel()->GetPage(nViewTab));
86 bool bEx = pViewData->GetViewShell()->IsDrawSelMode();
87 bool bProt = rDoc.IsTabProtected( nViewTab ) ||
88 pViewData->GetSfxDocShell()->IsReadOnly();
94 SetLayerLocked( pLayer->
GetName(), bProt || !bEx );
97 SetLayerLocked( pLayer->GetName() );
101 SetLayerLocked( pLayer->GetName(), bProt );
102 SetActiveLayer( pLayer->GetName() );
106 SetLayerLocked( pLayer->GetName(), bProt );
110 SetLayerLocked( pLayer->GetName(), bProt );
111 SetLayerVisible( pLayer->GetName(),
false);
118 ShowSdrPage(GetModel()->GetPage(nTab));
121 UpdateUserViewOptions();
125 bInConstruct =
false;
135 ImplClearCalcDropMarker();
140 const SdrMarkList &rMrkList = GetMarkedObjectList();
147 if (
ScTabView* pView = pViewData->GetView())
148 pView->CreateAnchorHandles(maHdlList, pAnchor->maStart);
155 if (!pViewData)
return;
164 if (!pViewData)
return;
171 rBindings.
Invalidate( SID_ATTR_CHAR_FONTHEIGHT );
173 rBindings.
Invalidate( SID_ATTR_CHAR_POSTURE );
174 rBindings.
Invalidate( SID_ATTR_CHAR_UNDERLINE );
179 rBindings.
Invalidate( SID_ATTR_CHAR_OVERLINE );
181 rBindings.
Invalidate( SID_ATTR_CHAR_BACK_COLOR );
182 rBindings.
Invalidate( SID_ATTR_PARA_ADJUST_LEFT );
183 rBindings.
Invalidate( SID_ATTR_PARA_ADJUST_RIGHT );
184 rBindings.
Invalidate( SID_ATTR_PARA_ADJUST_BLOCK );
185 rBindings.
Invalidate( SID_ATTR_PARA_ADJUST_CENTER);
190 rBindings.
Invalidate( SID_ATTR_PARA_LINESPACE_10 );
191 rBindings.
Invalidate( SID_ATTR_PARA_LINESPACE_15 );
192 rBindings.
Invalidate( SID_ATTR_PARA_LINESPACE_20 );
195 rBindings.
Invalidate( SID_ATTR_CHAR_KERNING );
196 rBindings.
Invalidate( SID_ATTR_CHAR_STRIKEOUT );
197 rBindings.
Invalidate( SID_ATTR_CHAR_SHADOWED );
198 rBindings.
Invalidate( SID_TEXTDIRECTION_LEFT_TO_RIGHT );
199 rBindings.
Invalidate( SID_TEXTDIRECTION_TOP_TO_BOTTOM );
200 rBindings.
Invalidate( SID_ATTR_PARA_LEFT_TO_RIGHT );
201 rBindings.
Invalidate( SID_ATTR_PARA_RIGHT_TO_LEFT );
203 rBindings.
Invalidate( SID_TABLE_VERT_CENTER );
204 rBindings.
Invalidate( SID_TABLE_VERT_BOTTOM );
207 rBindings.
Invalidate( SID_ALIGN_ANY_HCENTER );
209 rBindings.
Invalidate( SID_ALIGN_ANY_JUSTIFIED );
214 if (!AreObjectsMarked())
219 BegUndo(
ScResId( STR_UNDO_SELATTR ) );
223 for (
size_t i=0;
i<nCount; ++
i)
228 AddUndo( std::make_unique<SdrUndoObjectLayerChange>( *pObj, pObj->
GetLayer(), nLayerNo) );
237 pViewData->GetDocShell()->SetDrawModified();
241 MarkListHasChanged();
248 if( dynamic_cast<const SdrUnoObj*>( pObj) != nullptr )
265 SdrPage* pPage = GetModel()->GetPage(static_cast<sal_uInt16>(nTab));
270 if ( aPageSize.Width() < 0 )
273 aNewArea.SetRight( 0 );
274 aNewArea.SetLeft( aPageSize.Width() + 1 );
276 SetWorkArea( aNewArea );
280 OSL_FAIL(
"Page not found");
287 BegUndo(
ScResId( STR_UNDO_CUT ) );
307 nTab = pViewData->GetTabNo();
308 nPPTX = pViewData->GetPPTX();
309 nPPTY = pViewData->GetPPTY();
310 aZoomX = pViewData->GetZoomX();
311 aZoomY = pViewData->GetZoomY();
316 nPPTX = aLogic.X() / 1000.0;
317 nPPTY = aLogic.Y() / 1000.0;
323 rDoc.GetTableArea( nTab, nEndCol, nEndRow );
330 rDoc, nTab, 0, 0, nEndCol, nEndRow, pDev, aZoomX, aZoomY, nPPTX, nPPTY,
334 resetGridOffsetsForAllSdrPageViews();
337 if ( !(pViewData && pPV) )
342 const size_t nCount = pPage->GetObjCount();
343 for (
size_t i = 0;
i < nCount; ++
i )
355 pViewData->GetViewShell()->ConnectObject( pOleObj );
365 if ( !bInConstruct && GetMarkedObjectList().GetMarkCount() )
370 SC_MOD()->InputEnterHandler();
391 const SdrMarkList& rMarkList = GetMarkedObjectList();
394 if ( nMarkCount == 0 && !pViewData->GetViewShell()->IsDrawSelMode() && !bInConstruct )
397 LockBackgroundLayer(
true);
401 bool bSubShellSet =
false;
432 if ( nMarkCount && !bSubShellSet )
434 bool bOnlyControls =
true;
435 bool bOnlyGraf =
true;
436 for (
size_t i=0;
i<nMarkCount; ++
i)
439 if (
auto pObjGroup = dynamic_cast<const SdrObjGroup*>( pObj) )
441 const SdrObjList *pLst = pObjGroup->GetSubList();
443 if ( nListCount == 0 )
447 bOnlyControls =
false;
450 for (
size_t j = 0; j < nListCount; ++j )
454 if (dynamic_cast<const SdrUnoObj*>( pSubObj) ==
nullptr)
455 bOnlyControls =
false;
459 if ( !bOnlyControls && !bOnlyGraf )
break;
464 if (dynamic_cast<const SdrUnoObj*>( pObj) ==
nullptr)
465 bOnlyControls =
false;
470 if ( !bOnlyControls && !bOnlyGraf )
break;
481 else if(nMarkCount>1)
491 uno::Sequence< embed::VerbDescriptor > aVerbs;
492 if ( pOle2Obj && !bOle )
494 const uno::Reference < embed::XEmbeddedObject >& xObj = pOle2Obj->
GetObjRef();
495 OSL_ENSURE( xObj.is(),
"SdrOle2Obj without ObjRef" );
497 aVerbs = xObj->getSupportedVerbs();
504 UpdateIMap( pOle2Obj );
506 UpdateIMap( pGrafObj );
509 InvalidateDrawTextAttrs();
511 for(sal_uInt32
a(0);
a < PaintWindowCount();
a++)
518 static_cast<vcl::Window&
>(rOutDev).PaintImmediately();
529 if (xController.is())
531 ScTabViewObj* pImp = comphelper::getUnoTunnelImplementation<ScTabViewObj>( xController );
550 bool bDontDeleteOutliner,
555 pObj, pPV, pWinL, bIsNewObj,
556 pGivenOutliner, pGivenOutlinerView, bDontDeleteOutliner,
557 bOnlyOneView, bGrabFocus );
568 OString sRectangle = aRectangle.
toString();
577 if (xController.is())
579 ScTabViewObj* pImp = comphelper::getUnoTunnelImplementation<ScTabViewObj>( xController );
601 if (xController.is())
603 ScTabViewObj* pImp = comphelper::getUnoTunnelImplementation<ScTabViewObj>( xController );
614 SdrObject* pEditObj = GetTextEditObject();
615 if ( pEditObj && !pEditObj->
IsInserted() && pViewData )
619 pViewData->GetViewShell()->SetDrawTextUndo(
nullptr);
643 SetSnapGridWidth( aFractX, aFractY );
656 sal_uInt16 nTabCount = rDoc.GetTableCount();
657 for (sal_uInt16
i=0;
i<nTabCount;
i++)
671 pObject = aIter.
Next();
683 sal_uInt16 nObjectTab = 0;
689 sal_uInt16 nTabCount = rDoc.GetTableCount();
690 for (sal_uInt16
i=0;
i<nTabCount && !pFound;
i++)
698 while (pObject && !pFound)
705 pObject = aIter.
Next();
714 if ( nObjectTab != nTab )
716 DBG_ASSERT( nTab == nObjectTab,
"Switching sheets did not work" );
719 !pViewData->GetViewShell()->IsDrawSelMode() &&
720 !rDoc.IsTabProtected( nTab ) &&
721 !pViewData->GetSfxDocShell()->IsReadOnly() )
725 SetLayerLocked( pLayer->
GetName(), false );
728 const bool bUnMark = IsObjMarked(pFound);
729 MarkObj( pFound, pPV, bUnMark);
736 SCTAB nObjectTab = 0;
743 SCTAB nTabCount = rDoc.GetTableCount();
744 for (
SCTAB i=0;
i<nTabCount && !pFound;
i++)
747 OSL_ENSURE(pPage,
"Page ?");
752 while (pObject && !pFound)
759 pObject = aIter.
Next();
768 if ( nObjectTab != nTab )
771 OSL_ENSURE( nTab == nObjectTab,
"Switching sheets did not work" );
779 !pViewData->GetViewShell()->IsDrawSelMode() &&
780 !rDoc.IsTabProtected( nTab ) &&
781 !pViewData->GetSfxDocShell()->IsReadOnly() )
783 LockBackgroundLayer(
false);
790 return ( pFound !=
nullptr );
796 bool bisMarked =
false;
799 bisMarked = IsObjMarked(pObject);
814 nOptions |= SdrInsertFlags::DONTMARK;
817 return InsertObjectAtView(pObj, rPV, nOptions);
822 const SdrMarkList& rMarkList = GetMarkedObjectList();
828 if( ppCaptData ) *ppCaptData = pCaptData;
837 SdrLayer* pLockLayer = GetModel()->GetLayerAdmin().GetLayerPerID( nLayer );
838 if( pLockLayer && (IsLayerLocked( pLockLayer->
GetName() ) != bLock) )
839 SetLayerLocked( pLockLayer->
GetName(), bLock );
847 if ( pViewData && pViewData->GetActiveWin() == &rWin )
848 pViewData->GetView()->MakeVisible( rRect );
860 if(
SdrObject* pCaptObj = GetMarkedNoteCaption( &pCaptData ) )
863 ScDocShell* pDocShell = pViewData ? pViewData->GetDocShell() :
nullptr;
865 bool bUndo = pDrawLayer && pDocShell && pUndoMgr && rDoc.
IsUndoEnabled();
868 std::unique_ptr<ScPostIt> pNote = rDoc.ReleaseNote( pCaptData->
maStart );
869 OSL_ENSURE( pNote,
"ScDrawView::DeleteMarked - cell note missing in document" );
874 OSL_ENSURE( aNoteData.
mxCaption.
get() == pCaptObj,
"ScDrawView::DeleteMarked - caption object does not match" );
896 bool bIsTextEdit = IsTextEdit();
900 pViewData->GetViewShell()->SetDrawTextUndo(
nullptr);
907 if ( pDropMarkObj != pObj )
910 ImplClearCalcDropMarker();
928 if (
auto pObjGroup = dynamic_cast<const SdrObjGroup*>( pObj) )
932 SyncForGrid( pLst->
GetObj(
i ) );
935 ScSplitPos eWhich = pViewData->GetActivePart();
962 Point aOldPos( rDoc.GetColOffset( aOldStt.
Col(), aOldStt.
Tab() ), rDoc.GetRowOffset( aOldStt.
Row(), aOldStt.
Tab() ) );
966 Point aCurPos = pViewData->GetScrPos( aOldStt.
Col(), aOldStt.
Row(), eWhich, true );
968 Point aGridOff = aCurPosHmm - aOldPos;
970 if( rDoc.IsNegativePage( GetTab() ) )
971 aGridOff.setX( aCurPosHmm.getX() + aOldPos.getX() );
978 if(
nullptr == pPageView)
984 assert(pPageWindow &&
"SdrView::SetMasterPagePaintCaching: Corrupt SdrPageWindow list (!)");
986 if(
nullptr != pPageWindow)
990 if(rObjectContact.supportsGridOffsets())
1004 comphelper::LibreOfficeKit::Compat::scPrintTwipsMsgs))
1009 if(
nullptr == pGridWin)
1036 MapMode aDrawMode = pGridWin->GetDrawMapMode();
1039 Point aOldPos(rDoc.GetColOffset(aOldStt.
Col(), aOldStt.
Tab()), rDoc.GetRowOffset(aOldStt.
Row(), aOldStt.
Tab()));
1044 ScSplitPos eWhich(pViewData->GetActivePart());
1045 Point aCurPos(pViewData->GetScrPos(aOldStt.
Col(), aOldStt.
Row(), eWhich,
true));
1046 Point aCurPosHmm(pGridWin->PixelToLogic(aCurPos, aDrawMode));
1047 Point aGridOff(aCurPosHmm - aOldPos);
1050 if(rDoc.IsNegativePage(GetTab()))
1052 aGridOff.setX(aCurPosHmm.getX() + aOldPos.getX());
1055 rTarget.
setX(aGridOff.X());
1056 rTarget.
setY(aGridOff.Y());
1066 if(
nullptr == pGridWin || rB2DRange.
isEmpty())
1084 MapMode aDrawMode = pGridWin->GetDrawMapMode();
1087 Point aOldPos(rDoc.GetColOffset(aOldStt.
Col(), aOldStt.
Tab()), rDoc.GetRowOffset(aOldStt.
Row(), aOldStt.
Tab()));
1092 ScSplitPos eWhich(pViewData->GetActivePart());
1093 Point aCurPos(pViewData->GetScrPos(aOldStt.
Col(), aOldStt.
Row(), eWhich,
true));
1094 Point aCurPosHmm(pGridWin->PixelToLogic(aCurPos, aDrawMode));
1095 Point aGridOff(aCurPosHmm - aOldPos);
1098 if(rDoc.IsNegativePage(GetTab()))
1100 aGridOff.setX(aCurPosHmm.getX() + aOldPos.getX());
1103 rTarget.
setX(aGridOff.X());
1104 rTarget.
setY(aGridOff.Y());
1118 const OUString& rBeginUndoText,
1119 const OUString& rFile)
1121 if(dynamic_cast< SdrGrafObj* >(&rHitObject))
1126 BegUndo(rBeginUndoText);
1127 ReplaceObjectAtView(&rHitObject, *GetSdrPageView(), pNewGrafObj);
1130 pNewGrafObj->SetGraphicLink( rFile );
1137 AddUndo(std::make_unique<SdrUndoAttrObj>(rHitObject));
1156 class ObjectContactOfScDrawView final :
public ObjectContactOfPageView
1163 explicit ObjectContactOfScDrawView(
1166 const char* pDebugName);
1168 virtual bool supportsGridOffsets()
const override;
1169 virtual void calculateGridOffsetForViewOjectContact(
1171 const ViewObjectContact& rClient)
const override;
1172 virtual void calculateGridOffsetForB2DRange(
1179 ObjectContactOfScDrawView::ObjectContactOfScDrawView(
1182 const char* pDebugName)
1183 : ObjectContactOfPageView(rPageWindow, pDebugName),
1188 bool ObjectContactOfScDrawView::supportsGridOffsets()
const
1194 comphelper::LibreOfficeKit::Compat::scPrintTwipsMsgs))
1198 if(isOutputToPrinter())
1204 if(isOutputToPDFFile())
1213 void ObjectContactOfScDrawView::calculateGridOffsetForViewOjectContact(
1215 const ViewObjectContact& rClient)
const
1218 SdrObject* pTargetSdrObject(rClient.GetViewContact().TryToGetSdrObject());
1220 if(
nullptr != pTargetSdrObject)
1228 void ObjectContactOfScDrawView::calculateGridOffsetForB2DRange(
1245 const char* pDebugName)
const
1247 return new sdr::contact::ObjectContactOfScDrawView(
void BeginCalcUndo(bool bDisableTextEditUsesCommonUndoManager)
SfxViewFrame * GetViewFrame() const
virtual void ModelHasChanged() override
OutDevType GetOutDevType() const
virtual bool SdrBeginTextEdit(SdrObject *pObj, SdrPageView *pPV=nullptr, vcl::Window *pWin=nullptr, bool bIsNewObj=false, SdrOutliner *pGivenOutliner=nullptr, OutlinerView *pGivenOutlinerView=nullptr, bool bDontDeleteOutliner=false, bool bOnlyOneView=false, bool bGrabFocus=true) override
sal_uInt32 GetFieldDivisionY() const
static void GetCellAnchorFromPosition(const tools::Rectangle &rRectangle, ScDrawObjData &rAnchor, const ScDocument &rDoc, SCTAB nTab, bool bHiddenAsZero=true)
static void notifyOtherViews(const SfxViewShell *pThisView, int nType, std::string_view rKey, const OString &rPayload)
void UpdateUserViewOptions()
virtual ~ScDrawView() override
void ImplClearCalcDropMarker()
size_t GetMarkCount() const
virtual SdrEndTextEditKind SdrEndTextEdit(bool bDontDeleteReally=false)
css::uno::Reference< css::embed::XEmbeddedObject > const & GetObjRef() const
MapMode GetDrawMapMode(bool bForce=false)
MapMode for the drawinglayer objects.
std::unique_ptr< ContentProperties > pData
Point LogicToLogic(const Point &rPtSource, const MapMode *pMapModeSource, const MapMode *pMapModeDest) const
bool IsObjectInPlaceActive() const
void SetMediaShell(bool bActive)
void PostPaintCell(SCCOL nCol, SCROW nRow, SCTAB nTab)
sal_uInt32 GetFieldDrawX() const
static ScDrawObjData * GetObjData(SdrObject *pObj, bool bCreate=false)
SdrObject * GetObj(size_t nNum) const
size_t GetObjCount() const
SdrObject * GetObjectByName(std::u16string_view rName)
const MapMode & GetMapMode() const
bool HasMarkedInternal() const
constexpr SdrLayerID SC_LAYER_BACK(1)
SdrMark * GetMark(size_t nNum) const
virtual void AddCustomHdl() override
void Invalidate(sal_uInt16 nId)
virtual SdrObjKind GetObjIdentifier() const
bool HasMarkedControl() const
EmbeddedObjectRef * pObject
void resetGridOffsetsForAllSdrPageViews()
constexpr auto convertTwipToMm100(N n)
virtual SfxUndoManager * GetUndoManager() override
virtual void DeleteMarked() override
SdrPageWindow * GetPageWindow(sal_uInt32 nIndex) const
Reference< XController > xController
const BorderLinePrimitive2D *pCandidateB assert(pCandidateA)
void LockCalcLayer(SdrLayerID nLayer, bool bLock)
Locks/unlocks the specified layer in the draw page.
SfxFrame & GetFrame() const
void SetGraphic(const Graphic &rGrf)
bool isCompatFlagSet(Compat flag)
bool IsDrawTextShell() const
void GetScale(Fraction &rFractX, Fraction &rFractY) const
void MarkDropObj(SdrObject *pObj)
B2IRange fround(const B2DRange &rRange)
void ScrollToObject(const SdrObject *pDrawObj)
void SetGraphicShell(bool bActive)
void SyncForGrid(SdrObject *pObj)
SdrObject * GetMarkedSdrObj() const
void SetChartShell(bool bActive)
virtual void MarkListHasChanged() override
void SelectCurrentViewObject(std::u16string_view rName)
virtual void SetLayer(SdrLayerID nLayer)
virtual void AddUndoAction(std::unique_ptr< SfxUndoAction > pAction, bool bTryMerg=false)
sal_uInt16 GetCurRefDlgId() const
bool calculateGridOffsetForB2DRange(const basegfx::B2DRange &rB2DRange, basegfx::B2DVector &rTarget) const
bool GetUseGridSnap() const
#define DBG_ASSERT(sCon, aError)
virtual SdrUndoManager * getSdrUndoManagerForEnhancedTextEdit() const override
bool SelectObject(std::u16string_view rName)
void SetMarkedToLayer(SdrLayerID nLayerNo)
static ScDrawObjData * GetNoteCaptionData(SdrObject *pObj, SCTAB nTab)
Returns the object data, if the passed object is a cell note caption.
void InvalidateDrawTextAttrs()
SC_DLLPUBLIC void SetTabNo(SCTAB nTab, bool bNew=false, bool bExtendSelection=false, bool bSameTabButMoved=false)
SfxViewShell * GetSfxViewShell() const override
See SdrMarkView::GetSfxViewShell().
virtual bool SdrBeginTextEdit(SdrObject *pObj, SdrPageView *pPV=nullptr, vcl::Window *pWin=nullptr, bool bIsNewObj=false, SdrOutliner *pGivenOutliner=nullptr, OutlinerView *pGivenOutlinerView=nullptr, bool bDontDeleteOutliner=false, bool bOnlyOneView=false, bool bGrabFocus=true)
const SdrPage * GetPage(sal_uInt16 nPgNum) const
void SetDrawShell(bool bActive)
const OUString & GetName() const
void SetMergedItemSetAndBroadcast(const SfxItemSet &rSet, bool bClearAllItems=false)
sal_uInt32 GetFieldDivisionX() const
OUString ScResId(const char *pId)
SdrModel & getSdrModelFromSdrObject() const
bool GetOption(ScViewOption eOpt) const
SdrLayer * GetLayerPerID(SdrLayerID nID)
const ScGridOptions & GetGridOptions() const
MapUnit GetMapUnit() const
SfxViewShell * GetViewShell() const
virtual void DoConnect(SdrOle2Obj *pOleObj) override
virtual SdrLayerID GetLayer() const
Point PixelToLogic(const Point &rDevicePt) const
bool InsertObjectSafe(SdrObject *pObj, SdrPageView &rPV)
void SetDrawFormShell(bool bActive)
void SetVerbs(const css::uno::Sequence< css::embed::VerbDescriptor > &aVerbs)
virtual void ModelHasChanged() override
SfxViewShell * GetViewShell() const
virtual SdrEndTextEditKind SdrEndTextEdit(bool bDontDeleteReally=false) override
SfxInPlaceClient * GetIPClient() const
ScCaptionPtr mxCaption
Initial data for invisible notes without SdrObject.
constexpr SdrLayerID SC_LAYER_HIDDEN(4)
std::unique_ptr< SdrUndoGroup > GetCalcUndo()
Internal data for a cell annotation.
const SdrCaptionObj * get() const
SdrPage * GetPage() const
void CheckSelectionTransfer()
static ScDrawObjData * GetObjDataTab(SdrObject *pObj, SCTAB nTab)
SdrObject * GetMarkedNoteCaption(ScDrawObjData **ppCaptData)
Returns the selected object, if it is the caption object of a cell note.
constexpr SdrLayerID SC_LAYER_FRONT(0)
css::uno::Reference< css::frame::XController > GetController() const
constexpr SdrLayerID SC_LAYER_INTERN(2)
virtual void DeleteMarked()
virtual SdrObject * CloneSdrObject(SdrModel &rTargetModel) const
void SetOleObjectShell(bool bActive)
sal_uInt32 GetFieldDrawY() const
static OUString GetVisibleName(const SdrObject *pObj)
SdrEndTextEditKind ScEndTextEdit()
static bool IsChart(const SdrObject *pObject)
SdrObject * ApplyGraphicToObject(SdrObject &rHitObject, const Graphic &rGraphic, const OUString &rBeginUndoText, const OUString &rFile)
void InvalidateAll(bool bWithMsg)
virtual sdr::contact::ObjectContact * createViewSpecificObjectContact(SdrPageWindow &rPageWindow, const char *pDebugName) const override
virtual const tools::Rectangle & GetLogicRect() const
bool GetGridVisible() const
static void CalcScale(const ScDocument &rDoc, SCTAB nTab, SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCROW nEndRow, const OutputDevice *pDev, const Fraction &rZoomX, const Fraction &rZoomY, double nPPTX, double nPPTY, Fraction &rScaleX, Fraction &rScaleY)
virtual void MakeVisible(const tools::Rectangle &rRect, vcl::Window &rWin) override
constexpr SdrLayerID SC_LAYER_CONTROLS(3)
OutputDevice & GetOutputDevice() const
bool calculateGridOffsetForSdrObject(SdrObject &rSdrObject, basegfx::B2DVector &rTarget) const
bool GetObjectIsMarked(const SdrObject *pObject)
#define SC_HANDLESIZE_BIG
bool IsUndoEnabled() const
sal_uInt32 PageWindowCount() const
const ScDrawView & mrScDrawView