Open CASCADE Technology 7.8.0
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes
OpenGl_Structure Class Reference

Implementation of low-level graphic structure. More...

#include <OpenGl_Structure.hxx>

Inheritance diagram for OpenGl_Structure:
Inheritance graph
[legend]

Public Types

typedef SubclassStructIterator< OpenGl_StructureStructIterator
 Auxiliary wrapper to iterate OpenGl_Structure sequence.
 
typedef SubclassGroupIterator< OpenGl_GroupGroupIterator
 Auxiliary wrapper to iterate OpenGl_Group sequence.
 
- Public Types inherited from Standard_Transient
typedef void base_type
 Returns a type descriptor about this object.
 

Public Member Functions

 OpenGl_Structure (const Handle< Graphic3d_StructureManager > &theManager)
 Create empty structure.
 
virtual void OnVisibilityChanged () override
 Setup structure graphic state.
 
virtual void Clear () override
 Clear graphic data.
 
virtual void Connect (Graphic3d_CStructure &theStructure) override
 Connect other structure to this one.
 
virtual void Disconnect (Graphic3d_CStructure &theStructure) override
 Disconnect other structure to this one.
 
virtual void SetTransformation (const Handle< TopLoc_Datum3D > &theTrsf) override
 Synchronize structure transformation.
 
virtual void SetTransformPersistence (const Handle< Graphic3d_TransformPers > &theTrsfPers) override
 Set transformation persistence.
 
virtual void SetZLayer (const Graphic3d_ZLayerId theLayerIndex) override
 Set z layer ID to display the structure in specified layer.
 
virtual void GraphicHighlight (const Handle< Graphic3d_PresentationAttributes > &theStyle) override
 Highlights structure according to the given style and updates corresponding class fields (highlight status and style)
 
virtual void GraphicUnhighlight () override
 Unighlights structure and updates corresponding class fields (highlight status and style)
 
virtual Handle< Graphic3d_CStructureShadowLink (const Handle< Graphic3d_StructureManager > &theManager) const override
 Create shadow link to this structure.
 
virtual Handle< Graphic3d_GroupNewGroup (const Handle< Graphic3d_Structure > &theStruct) override
 Create new group within this structure.
 
virtual void RemoveGroup (const Handle< Graphic3d_Group > &theGroup) override
 Remove group from this structure.
 
OpenGl_GraphicDriverGlDriver () const
 Access graphic driver.
 
void Clear (const Handle< OpenGl_Context > &theGlCtx)
 
virtual void Render (const Handle< OpenGl_Workspace > &theWorkspace) const
 Renders the structure.
 
virtual void Release (const Handle< OpenGl_Context > &theGlCtx)
 Releases structure resources.
 
void ReleaseGlResources (const Handle< OpenGl_Context > &theGlCtx)
 This method releases GL resources without actual elements destruction. As result structure could be correctly destroyed layer without GL context (after last window was closed for example).
 
const OpenGl_StructureInstancedStructure () const
 Returns instanced OpenGL structure.
 
Standard_Size ModificationState () const
 Returns structure modification state (for ray-tracing).
 
void ResetModificationState () const
 Resets structure modification state (for ray-tracing).
 
Standard_Boolean IsRaytracable () const
 Is the structure ray-tracable (contains ray-tracable elements)?
 
virtual void updateLayerTransformation () override
 Update render transformation matrix.
 
virtual void DumpJson (Standard_OStream &theOStream, Standard_Integer theDepth=-1) const override
 Dumps the content of me into the stream.
 
- Public Member Functions inherited from Graphic3d_CStructure
const Handle< Graphic3d_GraphicDriver > & GraphicDriver () const
 
const Graphic3d_SequenceOfGroupGroups () const
 
const Handle< TopLoc_Datum3D > & Transformation () const
 Return transformation.
 
const Handle< Graphic3d_TransformPers > & TransformPersistence () const
 Return transformation persistence.
 
bool HasGroupTransformPersistence () const
 Return TRUE if some groups might have transform persistence; FALSE by default.
 
void SetGroupTransformPersistence (bool theValue)
 Set if some groups might have transform persistence.
 
const Handle< Graphic3d_SequenceOfHClipPlane > & ClipPlanes () const
 
void SetClipPlanes (const Handle< Graphic3d_SequenceOfHClipPlane > &thePlanes)
 Pass clip planes to the associated graphic driver structure.
 
const Graphic3d_BndBox3dBoundingBox () const
 
Graphic3d_BndBox3dChangeBoundingBox ()
 
bool IsVisible () const
 Return structure visibility flag.
 
bool IsVisible (const Standard_Integer theViewId) const
 Return structure visibility considering both View Affinity and global visibility state.
 
Graphic3d_ZLayerId ZLayer () const
 Get z layer ID.
 
const Handle< Graphic3d_PresentationAttributes > & HighlightStyle () const
 Returns valid handle to highlight style of the structure in case if highlight flag is set to true.
 
Standard_Integer Identification () const
 Return structure id (generated by Graphic3d_GraphicDriver::NewIdentification() during structure construction).
 
Graphic3d_DisplayPriority Priority () const
 Return structure display priority.
 
void SetPriority (Graphic3d_DisplayPriority thePriority)
 Set structure display priority.
 
Graphic3d_DisplayPriority PreviousPriority () const
 Return previous structure display priority.
 
void SetPreviousPriority (Graphic3d_DisplayPriority thePriority)
 Set previous structure display priority.
 
Standard_Boolean IsCulled () const
 Returns FALSE if the structure hits the current view volume, otherwise returns TRUE.
 
void SetCulled (Standard_Boolean theIsCulled) const
 Marks structure as culled/not culled - note that IsAlwaysRendered() is ignored here!
 
void MarkAsNotCulled () const
 Marks structure as overlapping the current view volume one. The method is called during traverse of BVH tree.
 
Standard_Boolean BndBoxClipCheck () const
 Returns whether check of object's bounding box clipping is enabled before drawing of object; TRUE by default.
 
void SetBndBoxClipCheck (Standard_Boolean theBndBoxClipCheck)
 Enable/disable check of object's bounding box clipping before drawing of object.
 
Standard_Boolean IsAlwaysRendered () const
 Checks if the structure should be included into BVH tree or not.
 
- Public Member Functions inherited from Standard_Transient
 Standard_Transient ()
 Empty constructor.
 
 Standard_Transient (const Standard_Transient &)
 Copy constructor – does nothing.
 
Standard_Transientoperator= (const Standard_Transient &)
 Assignment operator, needed to avoid copying reference counter.
 
virtual ~Standard_Transient ()
 Destructor must be virtual.
 
virtual const opencascade::handle< Standard_Type > & DynamicType () const
 Returns a type descriptor about this object.
 
Standard_Boolean IsInstance (const opencascade::handle< Standard_Type > &theType) const
 Returns a true value if this is an instance of Type.
 
Standard_Boolean IsInstance (const Standard_CString theTypeName) const
 Returns a true value if this is an instance of TypeName.
 
Standard_Boolean IsKind (const opencascade::handle< Standard_Type > &theType) const
 Returns true if this is an instance of Type or an instance of any class that inherits from Type. Note that multiple inheritance is not supported by OCCT RTTI mechanism.
 
Standard_Boolean IsKind (const Standard_CString theTypeName) const
 Returns true if this is an instance of TypeName or an instance of any class that inherits from TypeName. Note that multiple inheritance is not supported by OCCT RTTI mechanism.
 
Standard_TransientThis () const
 Returns non-const pointer to this object (like const_cast). For protection against creating handle to objects allocated in stack or call from constructor, it will raise exception Standard_ProgramError if reference counter is zero.
 
Standard_Integer GetRefCount () const noexcept
 Get the reference counter of this object.
 
void IncrementRefCounter () noexcept
 Increments the reference counter of this object.
 
Standard_Integer DecrementRefCounter () noexcept
 Decrements the reference counter of this object; returns the decremented value.
 
virtual void Delete () const
 Memory deallocator for transient classes.
 

Protected Member Functions

virtual ~OpenGl_Structure ()
 
void UpdateStateIfRaytracable (const Standard_Boolean toCheck=Standard_True) const
 Updates ray-tracable status for structure and its parents.
 
void renderGeometry (const Handle< OpenGl_Workspace > &theWorkspace, bool &theHasClosed) const
 Renders groups of structure without applying any attributes (i.e. transform, material etc).
 
void renderBoundingBox (const Handle< OpenGl_Workspace > &theWorkspace) const
 Render the bounding box.
 
void applyPersistence (const Handle< OpenGl_Context > &theCtx, const Handle< Graphic3d_TransformPers > &theTrsfPersistence, const Standard_Boolean theIsLocal, Standard_Boolean &theOldCastShadows) const
 Apply transform persistence into context. It disables shadows on non-3d objects when toEnable is true and restores otherwise.
 
void revertPersistence (const Handle< OpenGl_Context > &theCtx, const Handle< Graphic3d_TransformPers > &theTrsfPersistence, const Standard_Boolean theIsLocal, const Standard_Boolean theOldCastShadows) const
 Restore context from transform persistence changes.
 
- Protected Member Functions inherited from Graphic3d_CStructure
 Graphic3d_CStructure (const Handle< Graphic3d_StructureManager > &theManager)
 Create empty structure.
 

Protected Attributes

OpenGl_StructuremyInstancedStructure
 
Graphic3d_Mat4 myRenderTrsf
 transformation, actually used for rendering (includes Local Origin shift)
 
Standard_Boolean myIsRaytracable
 
Standard_Size myModificationState
 
Standard_Boolean myIsMirrored
 Used to tell OpenGl to interpret polygons in clockwise order.
 
- Protected Attributes inherited from Graphic3d_CStructure
Handle< Graphic3d_GraphicDrivermyGraphicDriver
 
Graphic3d_SequenceOfGroup myGroups
 
Graphic3d_BndBox3d myBndBox
 
Handle< TopLoc_Datum3DmyTrsf
 
Handle< Graphic3d_TransformPersmyTrsfPers
 
Handle< Graphic3d_SequenceOfHClipPlanemyClipPlanes
 
Handle< Graphic3d_PresentationAttributesmyHighlightStyle
 
Standard_Integer myId
 Current highlight style; is set only if highlight flag is true.
 
Graphic3d_ZLayerId myZLayer
 
Graphic3d_DisplayPriority myPriority
 
Graphic3d_DisplayPriority myPreviousPriority
 
Standard_Boolean myIsCulled
 A status specifying is structure needs to be rendered after BVH tree traverse.
 
Standard_Boolean myBndBoxClipCheck
 Flag responsible for checking of bounding box clipping before drawing of object.
 
Standard_Boolean myHasGroupTrsf
 flag specifying that some groups might have transform persistence
 

Additional Inherited Members

- Static Public Member Functions inherited from Standard_Transient
static constexpr const charget_type_name ()
 Returns a type descriptor about this object.
 
static const opencascade::handle< Standard_Type > & get_type_descriptor ()
 Returns type descriptor of Standard_Transient class.
 
- Data Fields inherited from Graphic3d_CStructure
Handle< Graphic3d_ViewAffinityViewAffinity
 view affinity mask
 
unsigned IsInfinite: 1
 
unsigned stick: 1
 displaying state - should be set when structure has been added to scene graph (but can be in hidden state)
 
unsigned highlight: 1
 
unsigned visible: 1
 visibility flag - can be used to suppress structure while leaving it in the scene graph
 
unsigned HLRValidation: 1
 
unsigned IsForHighlight: 1
 
unsigned IsMutable: 1
 
unsigned Is2dText: 1
 

Detailed Description

Implementation of low-level graphic structure.

Member Typedef Documentation

◆ GroupIterator

Auxiliary wrapper to iterate OpenGl_Group sequence.

◆ StructIterator

Auxiliary wrapper to iterate OpenGl_Structure sequence.

Constructor & Destructor Documentation

◆ OpenGl_Structure()

OpenGl_Structure::OpenGl_Structure ( const Handle< Graphic3d_StructureManager > &  theManager)

Create empty structure.

◆ ~OpenGl_Structure()

virtual OpenGl_Structure::~OpenGl_Structure ( )
protectedvirtual

Member Function Documentation

◆ applyPersistence()

void OpenGl_Structure::applyPersistence ( const Handle< OpenGl_Context > &  theCtx,
const Handle< Graphic3d_TransformPers > &  theTrsfPersistence,
const Standard_Boolean  theIsLocal,
Standard_Boolean theOldCastShadows 
) const
protected

Apply transform persistence into context. It disables shadows on non-3d objects when toEnable is true and restores otherwise.

Parameters
[in]theCtxcurrent context
[in]theTrsfPerstransform persistence
[in]theIsLocalspecifies if transform persistence is defined locally or to entire presentation
[out]theOldCastShadowsstate of the previous cast shadows state

◆ Clear() [1/2]

virtual void OpenGl_Structure::Clear ( )
overridevirtual

Clear graphic data.

Implements Graphic3d_CStructure.

◆ Clear() [2/2]

void OpenGl_Structure::Clear ( const Handle< OpenGl_Context > &  theGlCtx)

◆ Connect()

virtual void OpenGl_Structure::Connect ( Graphic3d_CStructure theStructure)
overridevirtual

Connect other structure to this one.

Implements Graphic3d_CStructure.

Reimplemented in OpenGl_StructureShadow.

◆ Disconnect()

virtual void OpenGl_Structure::Disconnect ( Graphic3d_CStructure theStructure)
overridevirtual

Disconnect other structure to this one.

Implements Graphic3d_CStructure.

Reimplemented in OpenGl_StructureShadow.

◆ DumpJson()

virtual void OpenGl_Structure::DumpJson ( Standard_OStream theOStream,
Standard_Integer  theDepth = -1 
) const
overridevirtual

Dumps the content of me into the stream.

Reimplemented from Graphic3d_CStructure.

◆ GlDriver()

OpenGl_GraphicDriver * OpenGl_Structure::GlDriver ( ) const
inline

Access graphic driver.

◆ GraphicHighlight()

virtual void OpenGl_Structure::GraphicHighlight ( const Handle< Graphic3d_PresentationAttributes > &  theStyle)
overridevirtual

Highlights structure according to the given style and updates corresponding class fields (highlight status and style)

Implements Graphic3d_CStructure.

◆ GraphicUnhighlight()

virtual void OpenGl_Structure::GraphicUnhighlight ( )
overridevirtual

Unighlights structure and updates corresponding class fields (highlight status and style)

Implements Graphic3d_CStructure.

◆ InstancedStructure()

const OpenGl_Structure * OpenGl_Structure::InstancedStructure ( ) const
inline

Returns instanced OpenGL structure.

◆ IsRaytracable()

Standard_Boolean OpenGl_Structure::IsRaytracable ( ) const

Is the structure ray-tracable (contains ray-tracable elements)?

◆ ModificationState()

Standard_Size OpenGl_Structure::ModificationState ( ) const
inline

Returns structure modification state (for ray-tracing).

◆ NewGroup()

virtual Handle< Graphic3d_Group > OpenGl_Structure::NewGroup ( const Handle< Graphic3d_Structure > &  theStruct)
overridevirtual

Create new group within this structure.

Implements Graphic3d_CStructure.

◆ OnVisibilityChanged()

virtual void OpenGl_Structure::OnVisibilityChanged ( )
overridevirtual

Setup structure graphic state.

Implements Graphic3d_CStructure.

◆ Release()

virtual void OpenGl_Structure::Release ( const Handle< OpenGl_Context > &  theGlCtx)
virtual

Releases structure resources.

◆ ReleaseGlResources()

void OpenGl_Structure::ReleaseGlResources ( const Handle< OpenGl_Context > &  theGlCtx)

This method releases GL resources without actual elements destruction. As result structure could be correctly destroyed layer without GL context (after last window was closed for example).

Notice however that reusage of this structure after calling this method is incorrect and will lead to broken visualization due to loosed data.

◆ RemoveGroup()

virtual void OpenGl_Structure::RemoveGroup ( const Handle< Graphic3d_Group > &  theGroup)
overridevirtual

Remove group from this structure.

Implements Graphic3d_CStructure.

◆ Render()

virtual void OpenGl_Structure::Render ( const Handle< OpenGl_Workspace > &  theWorkspace) const
virtual

Renders the structure.

◆ renderBoundingBox()

void OpenGl_Structure::renderBoundingBox ( const Handle< OpenGl_Workspace > &  theWorkspace) const
protected

Render the bounding box.

◆ renderGeometry()

void OpenGl_Structure::renderGeometry ( const Handle< OpenGl_Workspace > &  theWorkspace,
bool theHasClosed 
) const
protected

Renders groups of structure without applying any attributes (i.e. transform, material etc).

Parameters
theWorkspacecurrent workspace
theHasClosedflag will be set to TRUE if structure contains at least one group of closed primitives

◆ ResetModificationState()

void OpenGl_Structure::ResetModificationState ( ) const
inline

Resets structure modification state (for ray-tracing).

◆ revertPersistence()

void OpenGl_Structure::revertPersistence ( const Handle< OpenGl_Context > &  theCtx,
const Handle< Graphic3d_TransformPers > &  theTrsfPersistence,
const Standard_Boolean  theIsLocal,
const Standard_Boolean  theOldCastShadows 
) const
protected

Restore context from transform persistence changes.

Parameters
[in]theCtxcurrent context
[in]theTrsfPerstransform persistence
[in]theIsLocalspecifies if transform persistence is defined locally or to entire presentation
[in]theOldCastShadowsstate of the previous cast shadows state

◆ SetTransformation()

virtual void OpenGl_Structure::SetTransformation ( const Handle< TopLoc_Datum3D > &  theTrsf)
overridevirtual

Synchronize structure transformation.

Reimplemented from Graphic3d_CStructure.

◆ SetTransformPersistence()

virtual void OpenGl_Structure::SetTransformPersistence ( const Handle< Graphic3d_TransformPers > &  theTrsfPers)
overridevirtual

Set transformation persistence.

Reimplemented from Graphic3d_CStructure.

◆ SetZLayer()

virtual void OpenGl_Structure::SetZLayer ( const Graphic3d_ZLayerId  theLayerIndex)
overridevirtual

Set z layer ID to display the structure in specified layer.

Reimplemented from Graphic3d_CStructure.

◆ ShadowLink()

virtual Handle< Graphic3d_CStructure > OpenGl_Structure::ShadowLink ( const Handle< Graphic3d_StructureManager > &  theManager) const
overridevirtual

Create shadow link to this structure.

Implements Graphic3d_CStructure.

◆ updateLayerTransformation()

virtual void OpenGl_Structure::updateLayerTransformation ( )
overridevirtual

Update render transformation matrix.

Reimplemented from Graphic3d_CStructure.

◆ UpdateStateIfRaytracable()

void OpenGl_Structure::UpdateStateIfRaytracable ( const Standard_Boolean  toCheck = Standard_True) const
protected

Updates ray-tracable status for structure and its parents.

Field Documentation

◆ myInstancedStructure

OpenGl_Structure* OpenGl_Structure::myInstancedStructure
protected

◆ myIsMirrored

Standard_Boolean OpenGl_Structure::myIsMirrored
protected

Used to tell OpenGl to interpret polygons in clockwise order.

◆ myIsRaytracable

Standard_Boolean OpenGl_Structure::myIsRaytracable
mutableprotected

◆ myModificationState

Standard_Size OpenGl_Structure::myModificationState
mutableprotected

◆ myRenderTrsf

Graphic3d_Mat4 OpenGl_Structure::myRenderTrsf
protected

transformation, actually used for rendering (includes Local Origin shift)


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