20 #include <fuconrec.hxx>
22 #include <drawview.hxx>
28 #include <svx/svxids.hrc>
29 #include <svx/strings.hrc>
37 #include <osl/diagnose.h>
64 if( pLineEndList.is() )
66 OUString aArrowName(
SvxResId(pResId) );
69 for( nIndex = 0; nIndex < nCount; nIndex++ )
72 if( pEntry->
GetName() == aArrowName )
99 Size aCaptionSize ( 2268, 1134 );
125 bool bReturn =
false;
140 if (
auto pSdrTextObj = dynamic_cast<SdrTextObj*>( pObj) )
141 pSdrTextObj->ForceOutlinerParaObject();
161 case SID_LINE_ARROW_END:
162 case SID_LINE_ARROW_CIRCLE:
163 case SID_LINE_ARROW_SQUARE:
164 case SID_LINE_ARROW_START:
165 case SID_LINE_CIRCLE_ARROW:
166 case SID_LINE_SQUARE_ARROW:
167 case SID_LINE_ARROWS:
169 aObjKind = SdrObjKind::Line;
172 case SID_DRAW_MEASURELINE:
174 aObjKind = SdrObjKind::Measure;
179 aObjKind = SdrObjKind::Rectangle;
182 case SID_DRAW_ELLIPSE:
184 aObjKind = SdrObjKind::CircleOrEllipse;
187 case SID_DRAW_CAPTION:
188 case SID_DRAW_CAPTION_VERTICAL:
190 aObjKind = SdrObjKind::Caption;
195 aObjKind = SdrObjKind::Rectangle;
211 if ( !(nSlotId == SID_LINE_ARROW_START ||
212 nSlotId == SID_LINE_ARROW_END ||
213 nSlotId == SID_LINE_ARROWS ||
214 nSlotId == SID_LINE_ARROW_CIRCLE ||
215 nSlotId == SID_LINE_CIRCLE_ARROW ||
216 nSlotId == SID_LINE_ARROW_SQUARE ||
217 nSlotId == SID_LINE_SQUARE_ARROW ||
218 nSlotId == SID_DRAW_MEASURELINE) )
226 if( !aArrow.
count() )
238 if( !aCircle.
count() )
242 aCircle.
append(aNewCircle);
247 if( !aSquare.
count() )
255 aSquare.
append(aNewSquare);
271 case SID_LINE_ARROWS:
272 case SID_DRAW_MEASURELINE:
282 case SID_LINE_ARROW_START:
283 case SID_LINE_ARROW_CIRCLE:
284 case SID_LINE_ARROW_SQUARE:
292 case SID_LINE_ARROW_END:
293 case SID_LINE_CIRCLE_ARROW:
294 case SID_LINE_SQUARE_ARROW:
306 case SID_LINE_ARROW_CIRCLE:
314 case SID_LINE_CIRCLE_ARROW:
322 case SID_LINE_ARROW_SQUARE:
330 case SID_LINE_SQUARE_ARROW:
364 case SID_LINE_ARROW_END:
365 case SID_LINE_ARROW_CIRCLE:
366 case SID_LINE_ARROW_SQUARE:
367 case SID_LINE_ARROW_START:
368 case SID_LINE_CIRCLE_ARROW:
369 case SID_LINE_SQUARE_ARROW:
370 case SID_LINE_ARROWS:
372 if(
auto pPathObj = dynamic_cast<SdrPathObj*>( pObj.get() ))
374 sal_Int32 nYMiddle((aRect.
Top() + aRect.
Bottom()) / 2);
382 OSL_FAIL(
"Object is NO line object");
388 case SID_DRAW_MEASURELINE:
390 if(
auto pMeasureObj = dynamic_cast<SdrMeasureObj*>( pObj.get() ))
392 sal_Int32 nYMiddle((aRect.
Top() + aRect.
Bottom()) / 2);
393 pMeasureObj->SetPoint(
Point(aStart.X(), nYMiddle), 0);
394 pMeasureObj->SetPoint(
Point(aEnd.X(), nYMiddle), 1);
400 case SID_DRAW_CAPTION:
401 case SID_DRAW_CAPTION_VERTICAL:
403 if(
auto pCaptionObj = dynamic_cast<SdrCaptionObj*>( pObj.get() ))
405 bool bIsVertical(SID_DRAW_CAPTION_VERTICAL == nID);
407 pCaptionObj->SetVerticalWriting(bIsVertical);
414 pObj->SetMergedItemSet(aSet);
421 pCaptionObj->SetLogicRect(aRect);
422 pCaptionObj->SetTailPos(
427 OSL_FAIL(
"Object is NO caption object");
435 pObj->SetLogicRect(aRect);
443 pObj->SetMergedItemSet(aAttr);
virtual bool MouseButtonUp(const MouseEvent &rMEvt) override
void append(const basegfx::B2DPoint &rPoint, sal_uInt32 nCount)
bool EndCreateObj(SdrCreateCmd eCmd)
FuConstRectangle(ScTabViewShell &rViewSh, vcl::Window *pWin, ScDrawView *pView, SdrModel *pDoc, const SfxRequest &rReq)
bool BegCreateObj(const Point &rPnt, OutputDevice *pOut=nullptr, short nMinMov=-3)
virtual void Deactivate() override
constexpr TypedWhichId< XLineWidthItem > XATTR_LINEWIDTH(XATTR_LINE_FIRST+2)
static SdrObject * MakeNewObject(SdrModel &rSdrModel, SdrInventor nInventor, SdrObjKind nObjIdentifier, const tools::Rectangle *pSnapRect=nullptr)
SdrMark * GetMark(size_t nNum) const
static void SetLineEnds(SfxItemSet &rAttr, const SdrObject &rObj, sal_uInt16 nSlotId)
virtual bool MouseButtonUp(const MouseEvent &rMEvt) override
sal_uInt16 GetButtons() const
void SetMouseButtonCode(sal_uInt16 nNew)
OUString SvxResId(TranslateId aId)
void SetMergedItemSet(const SfxItemSet &rSet, bool bClearAllItems=false)
XLineEndListRef GetLineEndList() const
ScTabViewShell & rViewShell
virtual bool MouseButtonDown(const MouseEvent &rMEvt) override
const OUString & GetName() const
SdrObject * GetMarkedSdrObj() const
PointerStyle GetPointer() const
SdrObject * GetCreateObj() const
void SetVertical(bool bNew)
void SetActivePointer(PointerStyle nPointer)
const SdrMarkList & GetMarkedObjectList() const
SdrModel & getSdrModelFromSdrObject() const
void SetCurrentObj(SdrObjKind nIdent, SdrInventor nInvent=SdrInventor::Default)
Point PixelToLogic(const Point &rDevicePt) const
const basegfx::B2DPolyPolygon & GetLineEnd() const
virtual bool IsAction() const override
void append(const B2DPolygon &rPolygon, sal_uInt32 nCount=1)
const SfxPoolItem * Put(const SfxPoolItem &rItem, sal_uInt16 nWhich)
void setClosed(bool bNew)
sal_uInt16 GetSlot() const
bool IsEffectivelyVertical() const
virtual SdrObjectUniquePtr CreateDefaultObject(const sal_uInt16 nID, const tools::Rectangle &rRectangle) override
virtual void Activate() override
std::unique_ptr< SdrObject, SdrObjectFreeOp > SdrObjectUniquePtr
const Point & GetPosPixel() const
bool BegCreateCaptionObj(const Point &rPnt, const Size &rObjSiz, OutputDevice *pOut=nullptr, short nMinMov=-3)
const SfxItemPool & GetItemPool() const
SdrObjKind GetCurrentObjIdentifier() const
virtual bool MouseButtonDown(const MouseEvent &rMEvt) override
virtual ~FuConstRectangle() override
virtual OutlinerParaObject * GetOutlinerParaObject() const
VclPtr< vcl::Window > pWindow
SdrInventor GetCurrentObjInventor() const
virtual void Deactivate()