LibreOffice Module drawinglayer (master) 1
|
ScenePrimitive2D class. More...
#include <sceneprimitive2d.hxx>
Public Member Functions | |
Primitive2DContainer | getGeometry2D () const |
public helpers More... | |
Primitive2DContainer | getShadow2D () const |
bool | tryToCheckLastVisualisationDirectHit (const basegfx::B2DPoint &rLogicHitPoint, bool &o_rResult) const |
Fast HitTest which uses the last buffered BitmapEx from the last rendered area if available. More... | |
ScenePrimitive2D (primitive3d::Primitive3DContainer xChildren3D, attribute::SdrSceneAttribute aSdrSceneAttribute, attribute::SdrLightingAttribute aSdrLightingAttribute, basegfx::B2DHomMatrix aObjectTransformation, geometry::ViewInformation3D aViewInformation3D) | |
constructor More... | |
const primitive3d::Primitive3DContainer & | getChildren3D () const |
data read access More... | |
const attribute::SdrSceneAttribute & | getSdrSceneAttribute () const |
const attribute::SdrLightingAttribute & | getSdrLightingAttribute () const |
const basegfx::B2DHomMatrix & | getObjectTransformation () const |
const geometry::ViewInformation3D & | getViewInformation3D () const |
virtual bool | operator== (const BasePrimitive2D &rPrimitive) const override |
compare operator More... | |
virtual basegfx::B2DRange | getB2DRange (const geometry::ViewInformation2D &rViewInformation) const override |
get range More... | |
virtual sal_uInt32 | getPrimitive2DID () const override |
provide unique ID More... | |
virtual void | get2DDecomposition (Primitive2DDecompositionVisitor &rVisitor, const geometry::ViewInformation2D &rViewInformation) const override |
get local decomposition. Override since this decomposition is view-dependent More... | |
Public Member Functions inherited from drawinglayer::primitive2d::BufferedDecompositionPrimitive2D | |
BufferedDecompositionPrimitive2D () | |
virtual void | get2DDecomposition (Primitive2DDecompositionVisitor &rVisitor, const geometry::ViewInformation2D &rViewInformation) const override |
The getDecomposition default implementation will on demand use create2DDecomposition() if maBuffered2DDecomposition is empty. More... | |
void | setTransparenceForShadow (sal_uInt16 nTransparenceForShadow) |
sal_uInt16 | getTransparenceForShadow () const |
Public Member Functions inherited from drawinglayer::primitive2d::BasePrimitive2D | |
BasePrimitive2D () | |
virtual | ~BasePrimitive2D () override |
virtual bool | operator== (const BasePrimitive2D &rPrimitive) const |
the ==operator is mainly needed to allow testing newly-created primitives against their last incarnation which buffers/holds the made decompositions. More... | |
bool | operator!= (const BasePrimitive2D &rPrimitive) const |
virtual basegfx::B2DRange | getB2DRange (const geometry::ViewInformation2D &rViewInformation) const |
The default implementation will use getDecomposition results to create the range. More... | |
virtual sal_uInt32 | getPrimitive2DID () const =0 |
provide unique ID for fast identifying of known primitive implementations in renderers. More... | |
virtual void | get2DDecomposition (Primitive2DDecompositionVisitor &rVisitor, const geometry::ViewInformation2D &rViewInformation) const |
The default implementation will return an empty sequence. More... | |
Primitive2DContainer | getDecomposition (const css::uno::Sequence< css::beans::PropertyValue > &rViewParameters) |
The getDecomposition implementation for UNO API will use getDecomposition from this implementation. More... | |
css::geometry::RealRectangle2D | getRange (const css::uno::Sequence< css::beans::PropertyValue > &rViewParameters) |
The getRange implementation for UNO API will use getRange from this implementation. More... | |
virtual sal_Int64 | estimateUsage () |
Public Member Functions inherited from salhelper::SimpleReferenceObject | |
SimpleReferenceObject () | |
void | acquire () |
void | release () |
Private Member Functions | |
bool | impGetShadow3D () const |
private helpers More... | |
void | calculateDiscreteSizes (const geometry::ViewInformation2D &rViewInformation, basegfx::B2DRange &rDiscreteRange, basegfx::B2DRange &rVisibleDiscreteRange, basegfx::B2DRange &rUnitVisibleRange) const |
virtual void | create2DDecomposition (Primitive2DContainer &rContainer, const geometry::ViewInformation2D &rViewInformation) const override |
local decomposition. More... | |
Private Attributes | |
primitive3d::Primitive3DContainer | mxChildren3D |
the 3D geometry definition More... | |
attribute::SdrSceneAttribute | maSdrSceneAttribute |
3D scene attribute set More... | |
attribute::SdrLightingAttribute | maSdrLightingAttribute |
lighting attribute set More... | |
basegfx::B2DHomMatrix | maObjectTransformation |
object transformation for scene for 2D definition More... | |
geometry::ViewInformation3D | maViewInformation3D |
scene transformation set and object transformation More... | |
Primitive2DContainer | maShadowPrimitives |
the primitiveSequence for on-demand created shadow primitives (see mbShadow3DChecked) More... | |
bool | mbShadow3DChecked: 1 |
flag if given 3D geometry is already checked for shadow definitions and 2d shadows are created in maShadowPrimitives More... | |
double | mfOldDiscreteSizeX |
the last used NewDiscreteSize and NewUnitVisiblePart definitions for decomposition More... | |
double | mfOldDiscreteSizeY |
basegfx::B2DRange | maOldUnitVisiblePart |
BitmapEx | maOldRenderedBitmap |
the last created BitmapEx, e.g. More... | |
Additional Inherited Members | |
Static Public Member Functions inherited from salhelper::SimpleReferenceObject | |
static void * | operator new (std::size_t nSize) |
static void * | operator new (std::size_t nSize, std::nothrow_t const &rNothrow) |
static void | operator delete (void *pPtr) |
static void | operator delete (void *pPtr, std::nothrow_t const &rNothrow) |
Protected Member Functions inherited from drawinglayer::primitive2d::BufferedDecompositionPrimitive2D | |
const Primitive2DContainer & | getBuffered2DDecomposition () const |
access methods to maBuffered2DDecomposition. More... | |
void | setBuffered2DDecomposition (Primitive2DContainer &&rNew) |
virtual void | create2DDecomposition (Primitive2DContainer &rContainer, const geometry::ViewInformation2D &rViewInformation) const =0 |
method which is to be used to implement the local decomposition of a 2D primitive. More... | |
Protected Member Functions inherited from salhelper::SimpleReferenceObject | |
virtual | ~SimpleReferenceObject () COVERITY_NOEXCEPT_FALSE |
Protected Attributes inherited from salhelper::SimpleReferenceObject | |
oslInterlockedCount | m_nCount |
ScenePrimitive2D class.
This primitive defines a 3D scene as a 2D primitive and is the anchor point for a 3D visualisation. The decomposition is view-dependent and will try to re-use already rendered 3D content.
The rendering is done using the default-3D renderer from basegfx which supports AntiAliasing.
The 2D primitive's geometric range is defined completely by the ObjectTransformation combined with evtl. 2D shadows from the 3D objects. The shadows of 3D objects are 2D polygons, projected with the 3D transformation.
This is the class a renderer may process directly when he wants to implement an own (e.g. system-specific) 3D renderer.
Definition at line 50 of file sceneprimitive2d.hxx.
drawinglayer::primitive2d::ScenePrimitive2D::ScenePrimitive2D | ( | primitive3d::Primitive3DContainer | xChildren3D, |
attribute::SdrSceneAttribute | aSdrSceneAttribute, | ||
attribute::SdrLightingAttribute | aSdrLightingAttribute, | ||
basegfx::B2DHomMatrix | aObjectTransformation, | ||
geometry::ViewInformation3D | aViewInformation3D | ||
) |
constructor
Definition at line 564 of file sceneprimitive2d.cxx.
|
private |
Definition at line 166 of file sceneprimitive2d.cxx.
References basegfx::fTools::equal(), basegfx::fTools::equalZero(), drawinglayer::geometry::ViewInformation2D::getDiscreteViewport(), basegfx::Range2D< typename TYPE, typename TRAITS >::getHeight(), basegfx::Range2D< typename TYPE, typename TRAITS >::getMaxX(), basegfx::Range2D< typename TYPE, typename TRAITS >::getMaxY(), basegfx::Range2D< typename TYPE, typename TRAITS >::getMinX(), basegfx::Range2D< typename TYPE, typename TRAITS >::getMinY(), drawinglayer::geometry::ViewInformation2D::getObjectToViewTransformation(), getObjectTransformation(), drawinglayer::geometry::ViewInformation2D::getViewport(), basegfx::Range2D< typename TYPE, typename TRAITS >::getWidth(), basegfx::Range2D< typename TYPE, typename TRAITS >::intersect(), basegfx::Range2D< typename TYPE, typename TRAITS >::isEmpty(), and basegfx::B2DRange::transform().
Referenced by create2DDecomposition(), and get2DDecomposition().
|
overrideprivatevirtual |
local decomposition.
Implements drawinglayer::primitive2d::BufferedDecompositionPrimitive2D.
Definition at line 213 of file sceneprimitive2d.cxx.
References a, drawinglayer::primitive2d::Primitive2DContainer::append(), calculateDiscreteSizes(), comphelper::ThreadPool::createThreadTaskTag(), basegfx::utils::createUnitPolygon(), basegfx::B2DHomMatrix::decompose(), basegfx::Tuple2D< typename TYPE >::equal(), drawinglayer::processor3d::ZBufferProcessor3D::finish(), basegfx::fround(), drawinglayer::primitive2d::Primitive2DContainer::getB2DRange(), getChildren3D(), drawinglayer::geometry::ViewInformation3D::getDeviceToView(), drawinglayer::geometry::ViewInformation3D::getExtendedInformationSequence(), basegfx::BZPixelRaster::getHeight(), basegfx::Range2D< typename TYPE, typename TRAITS >::getHeight(), Size::getHeight(), drawinglayer::geometry::ViewInformation2D::getInverseObjectToViewTransformation(), basegfx::Range2D< typename TYPE, typename TRAITS >::getMinX(), basegfx::Range2D< typename TYPE, typename TRAITS >::getMinY(), drawinglayer::geometry::ViewInformation2D::getObjectToViewTransformation(), drawinglayer::geometry::ViewInformation3D::getObjectTransformation(), getObjectTransformation(), drawinglayer::geometry::ViewInformation3D::getOrientation(), drawinglayer::geometry::ViewInformation3D::getProjection(), SvtOptionsDrawinglayer::GetQuadratic3DRenderLimit(), drawinglayer::geometry::ViewInformation2D::getReducedDisplayQuality(), getSdrLightingAttribute(), getSdrSceneAttribute(), comphelper::ThreadPool::getSharedOptimalPool(), BitmapEx::GetSizePixel(), getViewInformation3D(), drawinglayer::geometry::ViewInformation2D::getViewport(), drawinglayer::geometry::ViewInformation3D::getViewTime(), basegfx::Range2D< typename TYPE, typename TRAITS >::getWidth(), Size::getWidth(), comphelper::ThreadPool::getWorkerCount(), basegfx::Tuple2D< typename TYPE >::getX(), basegfx::Tuple2D< typename TYPE >::getY(), impGetShadow3D(), SvtOptionsDrawinglayer::IsAntiAliasing(), basegfx::Range2D< typename TYPE, typename TRAITS >::isEmpty(), maOldRenderedBitmap, maShadowPrimitives, basegfx::Range2D< typename TYPE, typename TRAITS >::overlaps(), drawinglayer::processor3d::BaseProcessor3D::process(), comphelper::ThreadPool::pushTask(), basegfx::B3DHomMatrix::rotate(), basegfx::B2DHomMatrix::scale(), basegfx::B3DHomMatrix::scale(), basegfx::B2DHomMatrix::set(), basegfx::B2DHomMatrix::set3x2(), basegfx::B3DHomMatrix::shearXZ(), basegfx::B2DPolygon::transform(), basegfx::B2DHomMatrix::translate(), basegfx::B3DHomMatrix::translate(), and comphelper::ThreadPool::waitUntilDone().
|
overridevirtual |
get local decomposition. Override since this decomposition is view-dependent
Reimplemented from drawinglayer::primitive2d::BufferedDecompositionPrimitive2D.
Definition at line 624 of file sceneprimitive2d.cxx.
References calculateDiscreteSizes(), drawinglayer::primitive2d::BufferedDecompositionPrimitive2D::get2DDecomposition(), drawinglayer::primitive2d::BufferedDecompositionPrimitive2D::getBuffered2DDecomposition(), basegfx::Range2D< typename TYPE, typename TRAITS >::getHeight(), basegfx::Range2D< typename TYPE, typename TRAITS >::getWidth(), basegfx::Range2D< typename TYPE, typename TRAITS >::isInside(), maOldUnitVisiblePart, mfOldDiscreteSizeX, mfOldDiscreteSizeY, basegfx::fTools::more(), and drawinglayer::primitive2d::BufferedDecompositionPrimitive2D::setBuffered2DDecomposition().
|
overridevirtual |
get range
Reimplemented from drawinglayer::primitive2d::BasePrimitive2D.
Definition at line 597 of file sceneprimitive2d.cxx.
References basegfx::Range2D< typename TYPE, typename TRAITS >::expand(), drawinglayer::primitive2d::Primitive2DContainer::getB2DRange(), drawinglayer::geometry::ViewInformation2D::getInverseObjectToViewTransformation(), basegfx::Range2D< typename TYPE, typename TRAITS >::getMaxX(), basegfx::Range2D< typename TYPE, typename TRAITS >::getMaxY(), basegfx::Range2D< typename TYPE, typename TRAITS >::getMinX(), basegfx::Range2D< typename TYPE, typename TRAITS >::getMinY(), drawinglayer::geometry::ViewInformation2D::getObjectToViewTransformation(), getObjectTransformation(), impGetShadow3D(), basegfx::Range2D< typename TYPE, typename TRAITS >::isEmpty(), maShadowPrimitives, and basegfx::B2DRange::transform().
|
inline |
data read access
Definition at line 126 of file sceneprimitive2d.hxx.
Referenced by drawinglayer::processor2d::HitTestProcessor2D::check3DHit(), create2DDecomposition(), getGeometry2D(), impGetShadow3D(), and operator==().
Primitive2DContainer drawinglayer::primitive2d::ScenePrimitive2D::getGeometry2D | ( | ) | const |
public helpers
Geometry extractor. Shadow will be added as in create2DDecomposition, but the 3D content is not converted to a bitmap visualisation but to projected 2D geometry. This helper is useful e.g. for Contour extraction or HitTests.
Definition at line 489 of file sceneprimitive2d.cxx.
References getChildren3D(), getObjectTransformation(), drawinglayer::processor3d::Geometry2DExtractingProcessor::getPrimitive2DSequence(), getViewInformation3D(), and drawinglayer::processor3d::BaseProcessor3D::process().
Referenced by drawinglayer::processor2d::ContourExtractor2D::processBasePrimitive2D().
|
inline |
Definition at line 129 of file sceneprimitive2d.hxx.
Referenced by calculateDiscreteSizes(), drawinglayer::processor2d::HitTestProcessor2D::check3DHit(), create2DDecomposition(), getB2DRange(), getGeometry2D(), impGetShadow3D(), operator==(), and tryToCheckLastVisualisationDirectHit().
|
overridevirtual |
provide unique ID
Implements drawinglayer::primitive2d::BasePrimitive2D.
Definition at line 683 of file sceneprimitive2d.cxx.
References PRIMITIVE2D_ID_SCENEPRIMITIVE2D.
|
inline |
Definition at line 128 of file sceneprimitive2d.hxx.
Referenced by create2DDecomposition(), and operator==().
|
inline |
Definition at line 127 of file sceneprimitive2d.hxx.
Referenced by create2DDecomposition(), impGetShadow3D(), and operator==().
Primitive2DContainer drawinglayer::primitive2d::ScenePrimitive2D::getShadow2D | ( | ) | const |
Definition at line 511 of file sceneprimitive2d.cxx.
References impGetShadow3D(), and maShadowPrimitives.
Referenced by drawinglayer::processor2d::ContourExtractor2D::processBasePrimitive2D().
|
inline |
Definition at line 130 of file sceneprimitive2d.hxx.
Referenced by drawinglayer::processor2d::HitTestProcessor2D::check3DHit(), create2DDecomposition(), getGeometry2D(), impGetShadow3D(), and operator==().
|
private |
private helpers
Definition at line 130 of file sceneprimitive2d.cxx.
References getChildren3D(), drawinglayer::attribute::SdrLightingAttribute::getLightVector(), getObjectTransformation(), drawinglayer::processor3d::Shadow3DExtractingProcessor::getPrimitive2DSequence(), getSdrSceneAttribute(), getViewInformation3D(), maSdrLightingAttribute, maShadowPrimitives, mbShadow3DChecked, basegfx::B3DVector::normalize(), and drawinglayer::processor3d::BaseProcessor3D::process().
Referenced by create2DDecomposition(), getB2DRange(), and getShadow2D().
|
overridevirtual |
compare operator
Reimplemented from drawinglayer::primitive2d::BasePrimitive2D.
Definition at line 581 of file sceneprimitive2d.cxx.
References getChildren3D(), getObjectTransformation(), getSdrLightingAttribute(), getSdrSceneAttribute(), and getViewInformation3D().
bool drawinglayer::primitive2d::ScenePrimitive2D::tryToCheckLastVisualisationDirectHit | ( | const basegfx::B2DPoint & | rLogicHitPoint, |
bool & | o_rResult | ||
) | const |
Fast HitTest which uses the last buffered BitmapEx from the last rendered area if available.
The return value describes if the check could be done with the current information, so do NOT use o_rResult when it returns false. o_rResult will be changed on return true and then contains a definitive answer if content of this scene is hit or not. On return false, it is normally necessary to use the geometric HitTest (see CutFindProcessor usages). The given HitPoint has to be in logic coordinates in scene's ObjectCoordinateSystem.
Definition at line 525 of file sceneprimitive2d.cxx.
References basegfx::fTools::equalZero(), basegfx::fround(), BitmapEx::GetAlpha(), basegfx::Range2D< typename TYPE, typename TRAITS >::getHeight(), basegfx::Range2D< typename TYPE, typename TRAITS >::getMinX(), basegfx::Range2D< typename TYPE, typename TRAITS >::getMinY(), getObjectTransformation(), BitmapEx::GetSizePixel(), basegfx::Range2D< typename TYPE, typename TRAITS >::getWidth(), basegfx::Tuple2D< typename TYPE >::getX(), basegfx::Tuple2D< typename TYPE >::getY(), Size::Height(), basegfx::B2DHomMatrix::invert(), basegfx::Range2D< typename TYPE, typename TRAITS >::isEmpty(), BitmapEx::IsEmpty(), basegfx::Range2D< typename TYPE, typename TRAITS >::isInside(), maOldRenderedBitmap, maOldUnitVisiblePart, and Size::Width().
Referenced by drawinglayer::processor2d::HitTestProcessor2D::check3DHit().
|
private |
object transformation for scene for 2D definition
Definition at line 63 of file sceneprimitive2d.hxx.
|
private |
the last created BitmapEx, e.g.
for fast HitTest. This does not really need memory since BitmapEx is internally RefCounted
Definition at line 84 of file sceneprimitive2d.hxx.
Referenced by create2DDecomposition(), and tryToCheckLastVisualisationDirectHit().
|
private |
Definition at line 79 of file sceneprimitive2d.hxx.
Referenced by get2DDecomposition(), and tryToCheckLastVisualisationDirectHit().
|
private |
lighting attribute set
Definition at line 60 of file sceneprimitive2d.hxx.
Referenced by impGetShadow3D().
|
private |
3D scene attribute set
Definition at line 57 of file sceneprimitive2d.hxx.
|
private |
the primitiveSequence for on-demand created shadow primitives (see mbShadow3DChecked)
Definition at line 69 of file sceneprimitive2d.hxx.
Referenced by create2DDecomposition(), getB2DRange(), getShadow2D(), and impGetShadow3D().
|
private |
scene transformation set and object transformation
Definition at line 66 of file sceneprimitive2d.hxx.
|
private |
flag if given 3D geometry is already checked for shadow definitions and 2d shadows are created in maShadowPrimitives
Definition at line 74 of file sceneprimitive2d.hxx.
Referenced by impGetShadow3D().
|
private |
the last used NewDiscreteSize and NewUnitVisiblePart definitions for decomposition
Definition at line 77 of file sceneprimitive2d.hxx.
Referenced by get2DDecomposition().
|
private |
Definition at line 78 of file sceneprimitive2d.hxx.
Referenced by get2DDecomposition().
|
private |
the 3D geometry definition
Definition at line 54 of file sceneprimitive2d.hxx.