24 #include <svx/strings.hrc>
53 ImpRemap3DDepth(sal_uInt32 nOrdNum,
double fMinimalDepth);
54 explicit ImpRemap3DDepth(sal_uInt32 nOrdNum);
57 bool operator<(
const ImpRemap3DDepth& rComp)
const;
59 sal_uInt32 GetOrdNum()
const {
return mnOrdNum; }
60 bool IsScene()
const {
return mbIsScene; }
65 ImpRemap3DDepth::ImpRemap3DDepth(sal_uInt32 nOrdNum,
double fMinimalDepth)
72 ImpRemap3DDepth::ImpRemap3DDepth(sal_uInt32 nOrdNum)
114 for(
size_t a = 0;
a < nObjCount; ++
a)
120 if(
auto pCompoundObj = dynamic_cast< const E3dCompoundObject*>(pCandidate))
124 ImpRemap3DDepth aEntry(
a, fMinimalDepth);
130 ImpRemap3DDepth aEntry(
a);
156 return std::make_unique<sdr::properties::E3dSceneProperties>(*this);
164 return std::make_unique<sdr::contact::ViewContactOfE3dScene>(*this);
171 bDrawOnlySelected(
false),
172 mbSkipSettingDirty(
false)
181 bDrawOnlySelected(
false),
182 mbSkipSettingDirty(
false)
212 _control87( _MCW_EM, _MCW_EM );
227 if(fabs(fNew - aActualPosition.getZ()) > 1.0)
248 return const_cast< E3dScene*
>(
this);
253 return const_cast< E3dScene*
>(
this);
263 aViewInfo3D.getObjectToView()));
328 aNewSnapRect.
Move(rSize);
336 ResizeRect(aNewSnapRect, rRef, rXFact, rYFact);
391 if(
nullptr != pParent)
396 return const_cast< E3dScene*
>(
this);
409 bool bRemoveObject(
false);
411 if(
auto pScene = dynamic_cast<E3dScene*>(pObj))
414 pScene->removeAllNonSelectedObjects();
417 const size_t nObjCount(pScene->GetSubList() ? pScene->GetSubList()->GetObjCount() : 0);
422 bRemoveObject =
true;
425 else if(
auto pCompound = dynamic_cast<E3dCompoundObject*>(pObj))
427 if(!pCompound->GetSelected())
429 bRemoveObject =
true;
445 return new E3dScene(rTargetModel, *
this);
452 if(
nullptr != pScene)
462 if(
nullptr != pScene)
472 if(
nullptr != pScene)
487 while(a3DIterator.
IsMore())
489 E3dObject* p3DObj(static_cast< E3dObject* >(a3DIterator.
Next()));
498 return std::make_unique<E3DSceneGeoData>();
531 tools::Long dxOutRectHalf = std::abs(UpperLeft.X() - LowerRight.X());
533 tools::Long dyOutRectHalf = std::abs(UpperLeft.Y() - LowerRight.Y());
541 Center.setX( (UpperLeft.X() + dxOutRectHalf) - rRef.X() );
542 Center.setY( -((UpperLeft.Y() + dyOutRectHalf) - rRef.Y()) );
544 if (sn==1.0 && cs==0.0) {
545 NewCenter.setX( -Center.Y() );
546 NewCenter.setY( -Center.X() );
547 }
else if (sn==0.0 && cs==-1.0) {
548 NewCenter.setX( -Center.X() );
549 NewCenter.setY( -Center.Y() );
550 }
else if (sn==-1.0 && cs==0.0) {
551 NewCenter.setX( Center.Y() );
552 NewCenter.setY( -Center.X() );
560 NewCenter.setX( static_cast<tools::Long>(Center.X() * cs - Center.Y() * sn) );
561 NewCenter.setY( static_cast<tools::Long>(Center.X() * sn + Center.Y() * cs) );
565 Point DiffPoint = NewCenter - Center;
566 Differenz.
setWidth( DiffPoint.X() );
576 if (!aName.isEmpty())
577 sName +=
" '" + aName +
"'";
583 return SvxResId(STR_ObjNamePluralScene3d);
625 aRotation.
rotate(0.0, 0.0, fAngleInRad);
670 while ( a3DIterator.
IsMore() )
745 if(
nullptr != dynamic_cast< const E3dObject* >(pObj))
764 if(
nullptr != dynamic_cast< const E3dObject* >(pObj))
836 if(pOldPage == pNewPage)
852 OSL_ENSURE(
false,
"E3dScene::handlePageChange invalid object list (!)");
859 return const_cast< E3dScene*
>(
this);
867 for(
size_t a = 0;
a < nObjCnt; ++
a)
875 aRetval.
expand(aLocalRange);
virtual OUString TakeObjNameSingul() const override
virtual SdrObject * RemoveObject(size_t nObjNum) override
const tools::Rectangle & GetDeviceWindow() const
void SetDeviceWindow(const tools::Rectangle &rRect)
virtual void SetBoundRectDirty() override
void SuspendReportingDirtyRects()
ProjectionType GetProjection() const
virtual SdrObjKind GetObjIdentifier() const override
void setWidth(tools::Long nWidth)
virtual void SetTransformChanged()
virtual void StructureChanged() override
void SetViewWindow(double fX, double fY, double fW, double fH)
virtual void NbcSetLayer(SdrLayerID nLayer) override
virtual std::unique_ptr< SdrObjGeoData > NewGeoData() const override
A derived class must override these 3 methods if it has own geometric data that must be saved for Und...
virtual void handlePageChange(SdrPage *pOldPage, SdrPage *pNewPage)
virtual void SetBoundAndSnapRectsDirty(bool bNotMyself=false, bool bRecursive=true) override
const Point & GetStart() const
virtual void SetTransformChanged() override
virtual void RestoreGeoData(const SdrObjGeoData &rGeo) override
double getMinimalDepthInViewCoordinates(const E3dCompoundObject &rObject)
support extracting the minimal depth of a 3d object in its scene
virtual SdrObjList * getChildrenOfSdrObject() const override
std::vector< ImpRemap3DDepth > maVector
virtual void NbcInsertObject(SdrObject *pObj, size_t nPos=SAL_MAX_SIZE)
virtual OUString TakeObjNamePlural() const override
virtual void SaveGeoData(SdrObjGeoData &rGeo) const override
SdrObject * GetObj(size_t nNum) const
size_t GetObjCount() const
virtual void SetBoundRectDirty()
void SetGlueReallyAbsolute(bool bOn)
void CopyObjects(const SdrObjList &rSrcList)
tools::Rectangle m_aOutRect
B2DPolyPolygon createB2DPolyPolygonFromB3DPolyPolygon(const B3DPolyPolygon &rCandidate, const B3DHomMatrix &rMat)
virtual bool IsBreakObjPossible() override
const basegfx::B3DHomMatrix & GetTransform() const
static void Free(SdrObject *&_rpObject)
virtual SdrObjList * GetSubList() const override
virtual sdr::properties::BaseProperties & GetProperties() const
virtual void InsertObject(SdrObject *pObj, size_t nPos=SAL_MAX_SIZE)
virtual const tools::Rectangle & GetSnapRect() const override
All geometrical data of an arbitrary object for use in undo/redo.
virtual bool BckCreate(SdrDragStat &rStat) override
double GetDistance() const
sdr::contact::ViewContact & GetViewContact() const
void SetAllSceneRectsDirty()
ProjectionType GetPerspective() const
basegfx::B3DHomMatrix maTransformation
virtual SdrObject * getSdrObjectFromSdrObjList() const override
std::unique_ptr< Imp3DDepthRemapper > mp3DDepthRemapper
SdrPage * getSdrPageFromSdrObject() const
virtual void StructureChanged()
virtual void NbcSetTransform(const basegfx::B3DHomMatrix &rMatrix) override
virtual bool IsBreakObjPossible()
void SetCamera(const Camera3D &rNewCamera)
OUString SvxResId(TranslateId aId)
void ImpCleanup3DDepthMapper()
double GetFocalLength() const
void SetOrtho4Possible(bool bOn=true)
void removeAllNonSelectedObjects()
void SetDefaultAttributes()
void TakeCreateRect(tools::Rectangle &rRect) const
virtual void SetSelected(bool bNew) override
tools::Rectangle maSnapRect
virtual void NbcResize(const Point &rRef, const Fraction &rXFact, const Fraction &rYFact) override
virtual bool EndCreate(SdrDragStat &rStat, SdrCreateCmd eCmd) override
virtual void SetBoundAndSnapRectsDirty(bool bNotMyself=false, bool bRecursive=true)
virtual void NbcSetTransform(const basegfx::B3DHomMatrix &rMatrix)
void RotateScene(const Point &rRef, double sn, double cs)
const basegfx::B3DPoint & GetViewPoint()
E3dScene(SdrModel &rSdrModel)
void ResizeRect(tools::Rectangle &rRect, const Point &rRef, const Fraction &rxFact, const Fraction &ryFact)
E3dScene * getParentE3dSceneFromE3dObject() const
sal_uInt32 RemapOrdNum(sal_uInt32 nOrdNum) const
virtual E3dScene * CloneSdrObject(SdrModel &rTargetModel) const override
void SetViewportValues(const basegfx::B3DPoint &rNewVRP, const basegfx::B3DVector &rNewVPN, const basegfx::B3DVector &rNewVUV)
virtual ~E3dScene() override
void expand(const B3DTuple &rTuple)
sal_Int32 GetPointCount() const
void SetFocalLength(double fLen)
void transform(const basegfx::B2DHomMatrix &rMatrix)
sal_uInt32 GetOrdNum() const
The order number (aka ZOrder, aka z-index) determines whether a SdrObject is located above or below a...
virtual void handlePageChange(SdrPage *pOldPage, SdrPage *pNewPage) override
virtual void NbcMove(const Size &rSize) override
The methods Move, Resize, Rotate, Mirror, Shear, SetSnapRect and SetLogicRect call the corresponding ...
const basegfx::B3DRange & GetBoundVolume() const
virtual void SaveGeoData(SdrObjGeoData &rGeo) const override
virtual SdrObject * NbcRemoveObject(size_t nObjNum)
remove from list without delete
virtual basegfx::B3DRange RecalcBoundVolume() const override
virtual SdrObject * RemoveObject(size_t nObjNum)
virtual void RestoreGeoData(const SdrObjGeoData &rGeo) override
BASEGFX_DLLPUBLIC void transform(const B3DHomMatrix &rMatrix)
virtual SdrLayerID GetLayer() const
virtual SdrObject * NbcRemoveObject(size_t nObjNum) override
remove from list without delete
Imp3DDepthRemapper(E3dScene const &rScene)
virtual void SetTransform(const basegfx::B3DHomMatrix &rMatrix)
virtual void SetTransform(const basegfx::B3DHomMatrix &rMatrix) override
void SetActionRect(const tools::Rectangle &rR)
virtual bool BegCreate(SdrDragStat &rStat) override
Every object must be able to create itself interactively.
const basegfx::B3DPoint & GetPosition() const
bool operator<(const Subset &rLHS, const Subset &rRHS)
virtual void NbcSetSnapRect(const tools::Rectangle &rRect)
virtual void InsertObject(SdrObject *pObj, size_t nPos=SAL_MAX_SIZE) override
virtual void Notify(SfxBroadcaster &rBC, const SfxHint &rHint) override
Detects when a stylesheet is changed.
const basegfx::B3DPoint & GetVRP() const
virtual void RecalcSnapRect() override
Snap is not done on the BoundRect but if possible on logic coordinates (i.e.
virtual SdrPage * getSdrPageFromSdrObjList() const override
virtual void NbcRotate(const Point &rRef, Degree100 nAngle, double sn, double cs) override
void SetProjection(ProjectionType ePrj)
virtual bool MovCreate(SdrDragStat &rStat) override
const Point & GetNow() const
void setHeight(tools::Long nHeight)
Helper for 3d object changes affecting 2d geometry.
virtual void Notify(SfxBroadcaster &rBC, const SfxHint &rHint) override
Detects when a stylesheet is changed.
sal_uInt32 RemapOrdNum(sal_uInt32 nOrdNum) const
virtual std::unique_ptr< sdr::properties::BaseProperties > CreateObjectSpecificProperties() override
virtual void BrkCreate(SdrDragStat &rStat) override
void rotate(double fAngleX, double fAngleY, double fAngleZ)
A SdrPage contains exactly one SdrObjList and a description of the physical page dimensions (size / m...
virtual void SetSelected(bool bNew)
virtual void NbcInsertObject(SdrObject *pObj, size_t nPos=SAL_MAX_SIZE) override
void SetPosition(const basegfx::B3DPoint &rNewPos)
const basegfx::B3DVector & GetVUV() const
virtual std::unique_ptr< sdr::contact::ViewContact > CreateObjectSpecificViewContact() override
basegfx::B3DPolyPolygon CreateWireframe() const
const OUString & GetName() const
virtual E3dScene * getRootE3dSceneFromE3dObject() const override
void InvalidateBoundVolume()
virtual void RecalcSnapRect() override
Snap is not done on the BoundRect but if possible on logic coordinates (i.e.
B3dCamera & GetCameraSet()
virtual basegfx::B2DPolyPolygon TakeXorPoly() const override
The Xor-Polygon is required by the View to drag the object.
virtual void NbcSetSnapRect(const tools::Rectangle &rRect) override
void ResumeReportingDirtyRects()
virtual basegfx::B2DPolyPolygon TakeCreatePoly(const SdrDragStat &rDrag) const override
Polygon dragged by the user when creating the object.
bool m_bDetectedRangeSegmentation false
void NbcRotateGluePoints(const Point &rRef, Degree100 nAngle, double sn, double cs)
virtual void NbcSetLayer(SdrLayerID nLayer)