Open CASCADE Technology 7.8.0
Data Structures | Public Member Functions | Static Public Member Functions
Graphic3d_TransformPers Class Reference

Transformation Persistence definition. More...

#include <Graphic3d_TransformPers.hxx>

Inheritance diagram for Graphic3d_TransformPers:
Inheritance graph
[legend]

Public Member Functions

 Graphic3d_TransformPers (const Graphic3d_TransModeFlags theMode)
 Set transformation persistence.
 
 Graphic3d_TransformPers (const Graphic3d_TransModeFlags theMode, const gp_Pnt &thePnt)
 Set Zoom/Rotate transformation persistence with an anchor 3D point. Anchor point defines the origin of Local Coordinate system within World Coordinate system. Throws an exception if persistence mode is not Graphic3d_TMF_ZoomPers, Graphic3d_TMF_ZoomRotatePers or Graphic3d_TMF_RotatePers.
 
 Graphic3d_TransformPers (const Graphic3d_TransModeFlags theMode, const Aspect_TypeOfTriedronPosition theCorner, const Graphic3d_Vec2i &theOffset=Graphic3d_Vec2i(0, 0))
 Set 2d/trihedron transformation persistence with a corner and 2D offset. 2D offset defines the origin of Local Coordinate system as projection of 2D point on screen plane into World Coordinate system. Throws an exception if persistence mode is not Graphic3d_TMF_TriedronPers or Graphic3d_TMF_2d. The offset is a positive displacement from the view corner in pixels.
 
Standard_Boolean IsZoomOrRotate () const
 Return true for Graphic3d_TMF_ZoomPers, Graphic3d_TMF_ZoomRotatePers or Graphic3d_TMF_RotatePers modes.
 
Standard_Boolean IsTrihedronOr2d () const
 Return true for Graphic3d_TMF_TriedronPers and Graphic3d_TMF_2d modes.
 
Graphic3d_TransModeFlags Mode () const
 Transformation persistence mode flags.
 
Graphic3d_TransModeFlags Flags () const
 Transformation persistence mode flags.
 
void SetPersistence (const Graphic3d_TransModeFlags theMode, const gp_Pnt &thePnt)
 Set Zoom/Rotate transformation persistence with an anchor 3D point. Throws an exception if persistence mode is not Graphic3d_TMF_ZoomPers, Graphic3d_TMF_ZoomRotatePers or Graphic3d_TMF_RotatePers.
 
void SetPersistence (const Graphic3d_TransModeFlags theMode, const Aspect_TypeOfTriedronPosition theCorner, const Graphic3d_Vec2i &theOffset)
 Set 2d/trihedron transformation persistence with a corner and 2D offset. Throws an exception if persistence mode is not Graphic3d_TMF_TriedronPers or Graphic3d_TMF_2d.
 
gp_Pnt AnchorPoint () const
 Return the anchor point for zoom/rotate transformation persistence.
 
void SetAnchorPoint (const gp_Pnt &thePnt)
 Set the anchor point for zoom/rotate transformation persistence.
 
Aspect_TypeOfTriedronPosition Corner2d () const
 Return the corner for 2d/trihedron transformation persistence.
 
void SetCorner2d (const Aspect_TypeOfTriedronPosition thePos)
 Set the corner for 2d/trihedron transformation persistence.
 
Graphic3d_Vec2i Offset2d () const
 Return the offset from the corner for 2d/trihedron transformation persistence.
 
void SetOffset2d (const Graphic3d_Vec2i &theOffset)
 Set the offset from the corner for 2d/trihedron transformation persistence.
 
virtual Standard_Real persistentScale (const Handle< Graphic3d_Camera > &theCamera, const Standard_Integer theViewportWidth, const Standard_Integer theViewportHeight) const
 Find scale value based on the camera position and view dimensions.
 
virtual NCollection_Mat3< Standard_RealpersistentRotationMatrix (const Handle< Graphic3d_Camera > &theCamera, const Standard_Integer theViewportWidth, const Standard_Integer theViewportHeight) const
 Create orientation matrix based on camera and view dimensions. Default implementation locks rotation by nullifying rotation component. Camera and view dimensions are not used, by default.
 
template<class T >
void Apply (const Handle< Graphic3d_Camera > &theCamera, const NCollection_Mat4< T > &theProjection, const NCollection_Mat4< T > &theWorldView, const Standard_Integer theViewportWidth, const Standard_Integer theViewportHeight, Bnd_Box &theBoundingBox) const
 Apply transformation to bounding box of presentation.
 
template<class T >
void Apply (const Handle< Graphic3d_Camera > &theCamera, const NCollection_Mat4< T > &theProjection, const NCollection_Mat4< T > &theWorldView, const Standard_Integer theViewportWidth, const Standard_Integer theViewportHeight, BVH_Box< T, 3 > &theBoundingBox) const
 Apply transformation to bounding box of presentation.
 
template<class T >
NCollection_Mat4< T > Compute (const Handle< Graphic3d_Camera > &theCamera, const NCollection_Mat4< T > &theProjection, const NCollection_Mat4< T > &theWorldView, const Standard_Integer theViewportWidth, const Standard_Integer theViewportHeight) const
 Compute transformation. Computed matrix can be applied to model world transformation of an object to implement effect of transformation persistence.
 
template<class T >
void Apply (const Handle< Graphic3d_Camera > &theCamera, const NCollection_Mat4< T > &theProjection, NCollection_Mat4< T > &theWorldView, const Standard_Integer theViewportWidth, const Standard_Integer theViewportHeight, const gp_Pnt *theAnchor=NULL) const
 Apply transformation persistence on specified matrices.
 
virtual void DumpJson (Standard_OStream &theOStream, Standard_Integer theDepth=-1) const
 Dumps the content of me into the stream.
 
- 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.
 

Static Public Member Functions

static Standard_Boolean IsZoomOrRotate (Graphic3d_TransModeFlags theMode)
 Return true if specified mode is zoom/rotate transformation persistence.
 
static Standard_Boolean IsTrihedronOr2d (Graphic3d_TransModeFlags theMode)
 Return true if specified mode is 2d/trihedron transformation persistence.
 
- 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.
 

Additional Inherited Members

- Public Types inherited from Standard_Transient
typedef void base_type
 Returns a type descriptor about this object.
 

Detailed Description

Transformation Persistence definition.

Transformation Persistence defines a mutable Local Coordinate system which depends on camera position, so that visual appearance of the object becomes partially immutable while camera moves. Object visually preserves particular property such as size, placement, rotation or their combination.

Graphic3d_TMF_ZoomPers, Graphic3d_TMF_RotatePers and Graphic3d_TMF_ZoomRotatePers define Local Coordinate system having origin in specified anchor point defined in World Coordinate system, while Graphic3d_TMF_TriedronPers and Graphic3d_TMF_2d define origin as 2D offset from screen corner in pixels.

Graphic3d_TMF_2d, Graphic3d_TMF_TriedronPers and Graphic3d_TMF_ZoomPers defines Local Coordinate system where length units are pixels. Beware that Graphic3d_RenderingParams::ResolutionRatio() will be ignored! For other Persistence flags, normal (world) length units will apply.

WARNING: Graphic3d_TMF_None is not permitted for defining instance of this class - NULL handle should be used for this purpose!

Constructor & Destructor Documentation

◆ Graphic3d_TransformPers() [1/3]

Graphic3d_TransformPers::Graphic3d_TransformPers ( const Graphic3d_TransModeFlags  theMode)
inline

Set transformation persistence.

◆ Graphic3d_TransformPers() [2/3]

Graphic3d_TransformPers::Graphic3d_TransformPers ( const Graphic3d_TransModeFlags  theMode,
const gp_Pnt thePnt 
)
inline

Set Zoom/Rotate transformation persistence with an anchor 3D point. Anchor point defines the origin of Local Coordinate system within World Coordinate system. Throws an exception if persistence mode is not Graphic3d_TMF_ZoomPers, Graphic3d_TMF_ZoomRotatePers or Graphic3d_TMF_RotatePers.

◆ Graphic3d_TransformPers() [3/3]

Graphic3d_TransformPers::Graphic3d_TransformPers ( const Graphic3d_TransModeFlags  theMode,
const Aspect_TypeOfTriedronPosition  theCorner,
const Graphic3d_Vec2i theOffset = Graphic3d_Vec2i (0, 0) 
)
inline

Set 2d/trihedron transformation persistence with a corner and 2D offset. 2D offset defines the origin of Local Coordinate system as projection of 2D point on screen plane into World Coordinate system. Throws an exception if persistence mode is not Graphic3d_TMF_TriedronPers or Graphic3d_TMF_2d. The offset is a positive displacement from the view corner in pixels.

Member Function Documentation

◆ AnchorPoint()

gp_Pnt Graphic3d_TransformPers::AnchorPoint ( ) const
inline

Return the anchor point for zoom/rotate transformation persistence.

◆ Apply() [1/3]

template<class T >
void Graphic3d_TransformPers::Apply ( const Handle< Graphic3d_Camera > &  theCamera,
const NCollection_Mat4< T > &  theProjection,
const NCollection_Mat4< T > &  theWorldView,
const Standard_Integer  theViewportWidth,
const Standard_Integer  theViewportHeight,
Bnd_Box theBoundingBox 
) const

Apply transformation to bounding box of presentation.

Parameters
theCamera[in] camera definition
theProjection[in] the projection transformation matrix.
theWorldView[in] the world view transformation matrix.
theViewportWidth[in] the width of viewport (for 2d persistence).
theViewportHeight[in] the height of viewport (for 2d persistence).
theBoundingBox[in/out] the bounding box to transform.

◆ Apply() [2/3]

template<class T >
void Graphic3d_TransformPers::Apply ( const Handle< Graphic3d_Camera > &  theCamera,
const NCollection_Mat4< T > &  theProjection,
const NCollection_Mat4< T > &  theWorldView,
const Standard_Integer  theViewportWidth,
const Standard_Integer  theViewportHeight,
BVH_Box< T, 3 > &  theBoundingBox 
) const

Apply transformation to bounding box of presentation.

Parameters
theCamera[in] camera definition
theProjection[in] the projection transformation matrix.
theWorldView[in] the world view transformation matrix.
theViewportWidth[in] the width of viewport (for 2d persistence).
theViewportHeight[in] the height of viewport (for 2d persistence).
theBoundingBox[in/out] the bounding box to transform.

◆ Apply() [3/3]

template<class T >
void Graphic3d_TransformPers::Apply ( const Handle< Graphic3d_Camera > &  theCamera,
const NCollection_Mat4< T > &  theProjection,
NCollection_Mat4< T > &  theWorldView,
const Standard_Integer  theViewportWidth,
const Standard_Integer  theViewportHeight,
const gp_Pnt theAnchor = NULL 
) const

Apply transformation persistence on specified matrices.

Parameters
theCameracamera definition
theProjectionprojection matrix to modify
theWorldViewworld-view matrix to modify
theViewportWidthviewport width
theViewportHeightviewport height
theAnchorif not NULL, overrides anchor point

◆ Compute()

template<class T >
NCollection_Mat4< T > Graphic3d_TransformPers::Compute ( const Handle< Graphic3d_Camera > &  theCamera,
const NCollection_Mat4< T > &  theProjection,
const NCollection_Mat4< T > &  theWorldView,
const Standard_Integer  theViewportWidth,
const Standard_Integer  theViewportHeight 
) const

Compute transformation. Computed matrix can be applied to model world transformation of an object to implement effect of transformation persistence.

Parameters
theCamera[in] camera definition
theProjection[in] the projection transformation matrix.
theWorldView[in] the world view transformation matrix.
theViewportWidth[in] the width of viewport (for 2d persistence).
theViewportHeight[in] the height of viewport (for 2d persistence).
Returns
transformation matrix to be applied to model world transformation of an object.

◆ Corner2d()

Aspect_TypeOfTriedronPosition Graphic3d_TransformPers::Corner2d ( ) const
inline

Return the corner for 2d/trihedron transformation persistence.

◆ DumpJson()

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

Dumps the content of me into the stream.

◆ Flags()

Graphic3d_TransModeFlags Graphic3d_TransformPers::Flags ( ) const
inline

Transformation persistence mode flags.

◆ IsTrihedronOr2d() [1/2]

Standard_Boolean Graphic3d_TransformPers::IsTrihedronOr2d ( ) const
inline

Return true for Graphic3d_TMF_TriedronPers and Graphic3d_TMF_2d modes.

◆ IsTrihedronOr2d() [2/2]

static Standard_Boolean Graphic3d_TransformPers::IsTrihedronOr2d ( Graphic3d_TransModeFlags  theMode)
inlinestatic

Return true if specified mode is 2d/trihedron transformation persistence.

◆ IsZoomOrRotate() [1/2]

Standard_Boolean Graphic3d_TransformPers::IsZoomOrRotate ( ) const
inline

Return true for Graphic3d_TMF_ZoomPers, Graphic3d_TMF_ZoomRotatePers or Graphic3d_TMF_RotatePers modes.

◆ IsZoomOrRotate() [2/2]

static Standard_Boolean Graphic3d_TransformPers::IsZoomOrRotate ( Graphic3d_TransModeFlags  theMode)
inlinestatic

Return true if specified mode is zoom/rotate transformation persistence.

◆ Mode()

Graphic3d_TransModeFlags Graphic3d_TransformPers::Mode ( ) const
inline

Transformation persistence mode flags.

◆ Offset2d()

Graphic3d_Vec2i Graphic3d_TransformPers::Offset2d ( ) const
inline

Return the offset from the corner for 2d/trihedron transformation persistence.

◆ persistentRotationMatrix()

virtual NCollection_Mat3< Standard_Real > Graphic3d_TransformPers::persistentRotationMatrix ( const Handle< Graphic3d_Camera > &  theCamera,
const Standard_Integer  theViewportWidth,
const Standard_Integer  theViewportHeight 
) const
inlinevirtual

Create orientation matrix based on camera and view dimensions. Default implementation locks rotation by nullifying rotation component. Camera and view dimensions are not used, by default.

Parameters
theCamera[in] camera definition
theViewportWidth[in] the width of viewport
theViewportHeight[in] the height of viewport

◆ persistentScale()

virtual Standard_Real Graphic3d_TransformPers::persistentScale ( const Handle< Graphic3d_Camera > &  theCamera,
const Standard_Integer  theViewportWidth,
const Standard_Integer  theViewportHeight 
) const
inlinevirtual

Find scale value based on the camera position and view dimensions.

Parameters
theCamera[in] camera definition
theViewportWidth[in] the width of viewport.
theViewportHeight[in] the height of viewport.

Reimplemented in Graphic3d_TransformPersScaledAbove.

◆ SetAnchorPoint()

void Graphic3d_TransformPers::SetAnchorPoint ( const gp_Pnt thePnt)
inline

Set the anchor point for zoom/rotate transformation persistence.

◆ SetCorner2d()

void Graphic3d_TransformPers::SetCorner2d ( const Aspect_TypeOfTriedronPosition  thePos)
inline

Set the corner for 2d/trihedron transformation persistence.

◆ SetOffset2d()

void Graphic3d_TransformPers::SetOffset2d ( const Graphic3d_Vec2i theOffset)
inline

Set the offset from the corner for 2d/trihedron transformation persistence.

◆ SetPersistence() [1/2]

void Graphic3d_TransformPers::SetPersistence ( const Graphic3d_TransModeFlags  theMode,
const Aspect_TypeOfTriedronPosition  theCorner,
const Graphic3d_Vec2i theOffset 
)
inline

Set 2d/trihedron transformation persistence with a corner and 2D offset. Throws an exception if persistence mode is not Graphic3d_TMF_TriedronPers or Graphic3d_TMF_2d.

◆ SetPersistence() [2/2]

void Graphic3d_TransformPers::SetPersistence ( const Graphic3d_TransModeFlags  theMode,
const gp_Pnt thePnt 
)
inline

Set Zoom/Rotate transformation persistence with an anchor 3D point. Throws an exception if persistence mode is not Graphic3d_TMF_ZoomPers, Graphic3d_TMF_ZoomRotatePers or Graphic3d_TMF_RotatePers.

Field Documentation

◆ Params2d

PersParams2d Graphic3d_TransformPers::Params2d

◆ Params3d

PersParams3d Graphic3d_TransformPers::Params3d

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