29 #include <com/sun/star/uno/Sequence.h>
36 class ImplPairDephAndObject
49 bool operator<(
const ImplPairDephAndObject& rComp)
const
51 return (mfDepth < rComp.mfDepth);
65 ::std::vector< basegfx::B3DPoint >& o_rResult,
70 if(!rFront.
equal(rBack))
76 if(!aPrimitives.empty())
79 const basegfx::B3DRange aObjectRange(aPrimitives.getB3DRange(rObjectViewInformation3D));
81 if(!aObjectRange.isEmpty())
85 if(aObjectRange.overlaps(aFrontBackRange))
89 aCutFindProcessor.
process(aPrimitives);
111 E3dScene* pParentParentScene(pParentScene->getParentE3dSceneFromE3dObject());
113 if(pParentParentScene)
116 aInBetweenSceneMatrix = pParentScene->GetTransform() * aInBetweenSceneMatrix;
121 pRootScene = pParentScene;
124 pParentScene = pParentParentScene;
141 aViewInfo3D.getObjectTransformation() * aInBetweenSceneMatrix,
142 aViewInfo3D.getOrientation(),
143 aViewInfo3D.getProjection(),
144 aViewInfo3D.getDeviceToView(),
145 aViewInfo3D.getViewTime(),
146 aViewInfo3D.getExtendedInformationSequence());
151 const uno::Sequence< beans::PropertyValue > aEmptyParameters;
162 ::std::vector< const E3dCompoundObject* >& o_rResult)
174 aInverseSceneTransform.
invert();
178 if(aRelativePoint.
getX() >= 0.0 && aRelativePoint.
getX() <= 1.0 && aRelativePoint.
getY() >= 0.0 && aRelativePoint.
getY() <= 1.0)
181 ::std::vector< ImplPairDephAndObject > aDepthAndObjectResults;
182 const uno::Sequence< beans::PropertyValue > aEmptyParameters;
199 if(!aFront.equal(aBack))
202 ::std::vector< basegfx::B3DPoint > aHitsWithObject;
208 aDepthAndObjectResults.emplace_back(pCandidate, aPointInViewCoordinates.getZ());
215 const sal_uInt32
nCount(aDepthAndObjectResults.size());
220 ::std::sort(aDepthAndObjectResults.begin(), aDepthAndObjectResults.end());
223 for(
const auto& rResult : aDepthAndObjectResults)
225 o_rResult.push_back(rResult.getObject());
237 const uno::Sequence< beans::PropertyValue > aEmptyParameters;
248 aInverseSceneTransform.
invert();
252 if(aRelativePoint.
getX() >= 0.0 && aRelativePoint.
getX() <= 1.0 && aRelativePoint.
getY() >= 0.0 && aRelativePoint.
getY() <= 1.0)
260 if(!aFront.equal(aBack))
263 ::std::vector< basegfx::B3DPoint > aHitsWithObject;
266 if(!aHitsWithObject.empty())
size_t GetObjCount() const
virtual SdrObjList * GetSubList() const override
sdr::contact::ViewContact & GetViewContact() const
void process(const primitive3d::Primitive3DContainer &rSource)
E3dScene * getParentE3dSceneFromE3dObject() const
static void getAllHit3DObjectWithRelativePoint(const basegfx::B3DPoint &rFront, const basegfx::B3DPoint &rBack, const E3dCompoundObject &rObject, const drawinglayer::geometry::ViewInformation3D &rObjectViewInformation3D,::std::vector< basegfx::B3DPoint > &o_rResult, bool bAnyHit)
bool checkHitSingle3DObject(const basegfx::B2DPoint &rPoint, const E3dCompoundObject &rCandidate)
support for checking if the single given 3d object is hit at position
bool equal(const B3DTuple &rTup) const
bool operator<(const Subset &rLHS, const Subset &rRHS)
const ::std::vector< basegfx::B3DPoint > & getCutPoints() const
void getAllHit3DObjectsSortedFrontToBack(const basegfx::B2DPoint &rPoint, const E3dScene &rScene,::std::vector< const E3dCompoundObject * > &o_rResult)
support for getting all from a 2d position hit objects in a 3d scene in a depth sorted array ...
E3dScene * fillViewInformation3DForCompoundObject(drawinglayer::geometry::ViewInformation3D &o_rViewInformation3D, const E3dCompoundObject &rCandidate)
support for getting a ViewInformation3D for a given CompoudObject3D with correct ObjectTransformation...