LibreOffice Module drawinglayer (master) 1
Public Member Functions | Private Member Functions | Private Attributes | List of all members
drawinglayer::primitive2d::ScenePrimitive2D Class Referencefinal

ScenePrimitive2D class. More...

#include <sceneprimitive2d.hxx>

Inheritance diagram for drawinglayer::primitive2d::ScenePrimitive2D:
[legend]
Collaboration diagram for drawinglayer::primitive2d::ScenePrimitive2D:
[legend]

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::Primitive3DContainergetChildren3D () const
 data read access More...
 
const attribute::SdrSceneAttributegetSdrSceneAttribute () const
 
const attribute::SdrLightingAttributegetSdrLightingAttribute () const
 
const basegfx::B2DHomMatrixgetObjectTransformation () const
 
const geometry::ViewInformation3DgetViewInformation3D () 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 Primitive2DContainergetBuffered2DDecomposition () 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
 

Detailed Description

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.

Constructor & Destructor Documentation

◆ ScenePrimitive2D()

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.

Member Function Documentation

◆ calculateDiscreteSizes()

void drawinglayer::primitive2d::ScenePrimitive2D::calculateDiscreteSizes ( const geometry::ViewInformation2D rViewInformation,
basegfx::B2DRange rDiscreteRange,
basegfx::B2DRange rVisibleDiscreteRange,
basegfx::B2DRange rUnitVisibleRange 
) const
private

◆ create2DDecomposition()

void drawinglayer::primitive2d::ScenePrimitive2D::create2DDecomposition ( Primitive2DContainer rContainer,
const geometry::ViewInformation2D rViewInformation 
) const
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().

◆ get2DDecomposition()

void drawinglayer::primitive2d::ScenePrimitive2D::get2DDecomposition ( Primitive2DDecompositionVisitor rVisitor,
const geometry::ViewInformation2D rViewInformation 
) const
overridevirtual

◆ getB2DRange()

basegfx::B2DRange drawinglayer::primitive2d::ScenePrimitive2D::getB2DRange ( const geometry::ViewInformation2D rViewInformation) const
overridevirtual

◆ getChildren3D()

const primitive3d::Primitive3DContainer & drawinglayer::primitive2d::ScenePrimitive2D::getChildren3D ( ) const
inline

◆ getGeometry2D()

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().

◆ getObjectTransformation()

const basegfx::B2DHomMatrix & drawinglayer::primitive2d::ScenePrimitive2D::getObjectTransformation ( ) const
inline

◆ getPrimitive2DID()

sal_uInt32 drawinglayer::primitive2d::ScenePrimitive2D::getPrimitive2DID ( ) const
overridevirtual

provide unique ID

Implements drawinglayer::primitive2d::BasePrimitive2D.

Definition at line 683 of file sceneprimitive2d.cxx.

References PRIMITIVE2D_ID_SCENEPRIMITIVE2D.

◆ getSdrLightingAttribute()

const attribute::SdrLightingAttribute & drawinglayer::primitive2d::ScenePrimitive2D::getSdrLightingAttribute ( ) const
inline

Definition at line 128 of file sceneprimitive2d.hxx.

Referenced by create2DDecomposition(), and operator==().

◆ getSdrSceneAttribute()

const attribute::SdrSceneAttribute & drawinglayer::primitive2d::ScenePrimitive2D::getSdrSceneAttribute ( ) const
inline

Definition at line 127 of file sceneprimitive2d.hxx.

Referenced by create2DDecomposition(), impGetShadow3D(), and operator==().

◆ getShadow2D()

Primitive2DContainer drawinglayer::primitive2d::ScenePrimitive2D::getShadow2D ( ) const

◆ getViewInformation3D()

const geometry::ViewInformation3D & drawinglayer::primitive2d::ScenePrimitive2D::getViewInformation3D ( ) const
inline

◆ impGetShadow3D()

bool drawinglayer::primitive2d::ScenePrimitive2D::impGetShadow3D ( ) const
private

◆ operator==()

bool drawinglayer::primitive2d::ScenePrimitive2D::operator== ( const BasePrimitive2D rPrimitive) const
overridevirtual

◆ tryToCheckLastVisualisationDirectHit()

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().

Member Data Documentation

◆ maObjectTransformation

basegfx::B2DHomMatrix drawinglayer::primitive2d::ScenePrimitive2D::maObjectTransformation
private

object transformation for scene for 2D definition

Definition at line 63 of file sceneprimitive2d.hxx.

◆ maOldRenderedBitmap

BitmapEx drawinglayer::primitive2d::ScenePrimitive2D::maOldRenderedBitmap
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().

◆ maOldUnitVisiblePart

basegfx::B2DRange drawinglayer::primitive2d::ScenePrimitive2D::maOldUnitVisiblePart
private

◆ maSdrLightingAttribute

attribute::SdrLightingAttribute drawinglayer::primitive2d::ScenePrimitive2D::maSdrLightingAttribute
private

lighting attribute set

Definition at line 60 of file sceneprimitive2d.hxx.

Referenced by impGetShadow3D().

◆ maSdrSceneAttribute

attribute::SdrSceneAttribute drawinglayer::primitive2d::ScenePrimitive2D::maSdrSceneAttribute
private

3D scene attribute set

Definition at line 57 of file sceneprimitive2d.hxx.

◆ maShadowPrimitives

Primitive2DContainer drawinglayer::primitive2d::ScenePrimitive2D::maShadowPrimitives
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().

◆ maViewInformation3D

geometry::ViewInformation3D drawinglayer::primitive2d::ScenePrimitive2D::maViewInformation3D
private

scene transformation set and object transformation

Definition at line 66 of file sceneprimitive2d.hxx.

◆ mbShadow3DChecked

bool drawinglayer::primitive2d::ScenePrimitive2D::mbShadow3DChecked
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().

◆ mfOldDiscreteSizeX

double drawinglayer::primitive2d::ScenePrimitive2D::mfOldDiscreteSizeX
private

the last used NewDiscreteSize and NewUnitVisiblePart definitions for decomposition

Definition at line 77 of file sceneprimitive2d.hxx.

Referenced by get2DDecomposition().

◆ mfOldDiscreteSizeY

double drawinglayer::primitive2d::ScenePrimitive2D::mfOldDiscreteSizeY
private

Definition at line 78 of file sceneprimitive2d.hxx.

Referenced by get2DDecomposition().

◆ mxChildren3D

primitive3d::Primitive3DContainer drawinglayer::primitive2d::ScenePrimitive2D::mxChildren3D
private

the 3D geometry definition

Definition at line 54 of file sceneprimitive2d.hxx.


The documentation for this class was generated from the following files: