ImFusion SDK 4.3
GlCurvedViewEllipse Class Reference

#include <ImFusion/GL/GlCurvedViewEllipse.h>

Ellipse annotation for curved views. More...

+ Inheritance diagram for GlCurvedViewEllipse:

Detailed Description

Ellipse annotation for curved views.

Public Member Functions

 GlCurvedViewEllipse ()
 Creates the ellipse.
 
 ~GlCurvedViewEllipse () override
 Destroy the ellipse.
 
void draw (const GlView &view) override
 Render annotation.
 
bool visibleInView (const GlSliceView &view) const
 
int hitTestHandles2D (int x, int y, const GlView &view) const override
 Returns the index of the handle being hit, or -1 when missing.
 
bool hitTestLine2D (int x, int y, const GlView &view) const override
 Checks whether the line between handles gets hit (if not a straight line, override this in the annotation)
 
void setPoints (const std::vector< vec3 > &points) override
 Set the points of the ellipse.
 
std::vector< vec3 > points () const
 
void evaluate (double t, vec3 &res) const override
 Evaluates ellipse.
 
void evaluateNormal (double t, vec3 &res) const override
 Evaluates primitive normal direction.
 
void evaluateTangent (double t, vec3 &res) const override
 Evaluates ellipse tangent.
 
void updatePoints () override
 Update the internal point structure.
 
void updateYDir () override
 Update the normal of the ellipse.
 
double getCurveLength () const override
 Get the length of the primitive.
 
double coordToArcLength (double t) const override
 
double arcLengthToCoord (double length) const override
 
void getUniformSamples (std::vector< std::pair< double, vec3 > > &samples, int n=0) const override
 Get the sample points of the primitive.
 
double calculateNearestPointCoord (const vec3 &pos) const override
 Calculates the curve parameter t of the point nearest to pos.
 
bool isClosed () const override
 Returns true if the curve is closed (i.e. first point is at the same position as the last point)
 
std::string typeName () const override
 Return unique identifier for this object class used for serialization.
 
void setFilledSurface (bool v)
 
bool filledSurface () const
 
void configure (const Properties *p) override
 Set one or multiple properties.
 
void configuration (Properties *p) const override
 Retrieve the properties of this object.
 
Geometry::AlignedBox bounds () const override
 Get the axis-aligned bounding box of this GlObject in world space.
 
- Public Member Functions inherited from GlEllipse
void draw (const GlView &view) override
 Draw the object in 3D space.
 
std::string typeName () const override
 Return unique identifier for this object class used for serialization.
 
void configure (const Properties *p) override
 Set one or multiple properties.
 
void configuration (Properties *p) const override
 Retrieve the properties of this object.
 
bool hitTestLine2D (int x, int y, const GlView &view) const override
 Checks whether the line between handles gets hit (if not a straight line, override this in the annotation)
 
bool sampleRenderPath (int samples, std::vector< vec3 > &out) const override
 For annotations where the rendered shape differs from the stored points, this method returns true and a set of points on the rendered curve.
 
vec3 center () const
 
void setCenter (const vec3 &c)
 
void setAllowAllPoints (bool v)
 If set to false (default) the first 2 points have to form the major axis for the ellipse to be valid.
 
void updatePoints () override
 Update the internal point structure.
 
- Public Member Functions inherited from GlImplicitlyPlanarPointBasedAnnotation
vec3 xAxis () const
 
vec3 yAxis () const
 
void setXAxis (vec3 xAxis)
 
void setYAxis (vec3 yAxis)
 
- Public Member Functions inherited from GlPointBasedAnnotation
void setView (const GlView *view) override
 Set the view through which this annotation is currently being manipulated.
 
bool hitTest (int x, int y, const GlView &view) const override
 Perform hit test at screen coordinates (x,y) (OpenGL screen coordinate system) for the specified view.
 
virtual int hitTestHandles3D (int x, int y, const GlView &view) const
 
virtual bool hitTestLabel (int x, int y, const GlView &view) const
 
virtual bool addPoint (const vec3 &p)
 Add point to annotation.
 
const std::vector< vec3 > & points () const
 Return points making up the annotation.
 
int maxPoints () const
 Return maximum number of points allowed for annotation. -1 means no limit.
 
int minPoints () const
 Return minimum number of points required for annotation. -1 means no limit.
 
void setEditable (bool editable) override
 Set annotation to be editable, i.e.
 
virtual void setPointColor (const vec3 &color)
 Set point color.
 
vec3 pointColor () const
 Get point color.
 
void configure (const Properties *p) override
 Set one or multiple properties.
 
void configuration (Properties *p) const override
 Retrieve the properties of this object.
 
Geometry::AlignedBox bounds () const override
 Get the axis-aligned bounding box of this GlObject in world space.
 
virtual void rotate (float angle)
 Change the GlObject matrix to reflect a rotation around the current m_rotationPoint Since this matrix is ignored by most renderers at the moment, this does not currently rotate anything.
 
virtual void rotateNoMatrix (float angle)
 Rotate the annotation by changing the handle positions instead of the matrix.
 
virtual void setRotationPoint (vec3 &point)
 Set the axis for rotation.
 
virtual void setPointSize (float s)
 Set the point size.
 
virtual void setLabelPixelOffset (const vec2 &offset)
 Set the label's pixel offset.
 
float pointSize () const
 Retrieve the point size.
 
virtual void setShowPointsAsCrosses (bool flag)
 Set the rendering of points.
 
virtual void setSelected (bool v) override
 When a GlAnnotation is selected, it may be rendered differently to distinguish it from non-selected annotations.
 
virtual void setMatrix (const mat4 &m) override
 Overwritten method to update points in world coordinates if the matrix has changed.
 
virtual void setMatrixWithoutMoving (const mat4 &m) override
 Change the matrix witout moving the annotation, e.g. for linking it with an image transformation.
 
virtual void setLineWidth (float value) override
 Set annotation line width.
 
void copyStyle (const GlPointBasedAnnotation &other)
 
virtual std::optional< vec3 > labelPosition (const GL::ViewState &state) const
 Position of the label If there is no valid position for the label, returns an empty optional.
 
- Public Member Functions inherited from GlAnnotation
virtual const GlViewview () const
 Get the view through which this annotation is currently being manipulated.
 
virtual bool editable () const
 When a GlAnnotation is editable it may alter its visualization and render UI elements for its manipulation.
 
virtual void setColor (const vec3 &color)
 Set annotation color.
 
virtual vec3 color () const
 Return annotation color.
 
virtual void setAlpha (double v)
 Set alpha channel.
 
virtual double alpha () const
 Get alpha channel.
 
virtual float lineWidth () const
 Return annotation line width.
 
virtual void setLabelVisible (bool visible)
 Set annotation label visibility.
 
virtual bool labelVisible () const
 Return annotation label visibility.
 
virtual void setLabelBackgroundVisible (bool visible)
 Set annotation label background visibility.
 
virtual bool labelBackgroundVisible () const
 Return annotation label background visibility.
 
virtual void setLabelBackgroundColor (vec4 color)
 Set annotation label background color.
 
virtual vec4 labelBackgroundColor () const
 Return annotation label background color.
 
virtual void setLabelBackgroundMargin (int margin)
 Set annotation label background margin in pixels.
 
virtual int labelBackgroundMargin () const
 Return annotation label background margin in pixels.
 
virtual void setLabelDepthTest (bool depthTest)
 Set annotation label depth test flag.
 
virtual bool labelDepthTest () const
 Return annotation label depth test flag.
 
virtual void setLabelColor (const vec3 &color)
 Set annotation label color.
 
virtual vec3 labelColor () const
 Return annotation label color.
 
virtual void setLabelText (const std::string &label)
 Set annotation label text.
 
virtual std::string labelText () const
 Return annotation label text.
 
virtual void setLabelTextPrefix (const std::string &labelPrefix)
 Set annotation label text prefix.
 
std::string labelTextPrefix () const
 Return annotation label text prefix.
 
virtual void setLabelTextSuffix (const std::string &labelSuffix)
 Set annotation label text suffix.
 
std::string labelTextSuffix () const
 Return annotation label text suffix.
 
virtual void setName (const std::string &name)
 Set annotation name.
 
virtual std::string name () const
 Return annotation name.
 
bool selected () const
 When a GlAnnotation is selected, it may be rendered differently to distinguish it from non-selected annotations.
 
void copyStyle (const GlAnnotation &other)
 Copies the settable parameters from another GlAnnotation.
 
- Public Member Functions inherited from GlObject
virtual Geometry::AlignedBox boundsSpherical () const
 Get the spherical bounds of this GlObject in world space.
 
virtual const mat4 & matrix () const
 Return the modelview matrix.
 
virtual void setVisible (bool visible)
 Set object visibility.
 
virtual bool visible () const
 Return object visibility.
 
virtual void setAlwaysVisible (bool alwaysVisible)
 Set if object is always visible.
 
virtual bool alwaysVisible () const
 Return if object is always visible.
 
RenderingOrderGroup renderingOrder () const
 Return current rendering order value for this GlObject.
 
void setRenderingOrder (RenderingOrderGroup group)
 Set rendering order value for this GlObject.
 
void setDraw3DIn2DView (bool draw3DIn2DView)
 
- Public Member Functions inherited from Configurable
virtual void configureDefaults ()
 Retrieve the properties of this object, replaces values with their defaults and sets it again.
 
void registerParameter (ParameterBase *param)
 Register the given Parameter or SubProperty, so that it will be configured during configure()/configuration().
 
void unregisterParameter (const ParameterBase *param)
 Remove the given Parameter or SubProperty from the list of registered parameters.
 
 Configurable (const Configurable &rhs)
 
 Configurable (Configurable &&rhs) noexcept
 
Configurableoperator= (const Configurable &)
 
Configurableoperator= (Configurable &&) noexcept
 
- Public Member Functions inherited from CurvedViewPrimitive
vec3 yDir () const
 Get the y-direction of the primitive The y-direction is defined as the normal of the plane in which the primitive is located.
 
void overrideCurvedSliceYDir (const vec3 &yDir, bool forcedYDir=true)
 
bool forcedYDir (vec3 &yDirOut) const
 
void updateCurveHeight (const SharedImageSet *imgSet)
 Update height of the primitive.
 
double curveHeight () const
 

Protected Attributes

std::unique_ptr< GL::VertexBufferm_curvedVbo
 
bool m_fillSurface
 
- Protected Attributes inherited from GlEllipse
vec3 m_center = vec3::Zero()
 
bool m_fitPoints = false
 
- Protected Attributes inherited from GlImplicitlyPlanarPointBasedAnnotation
vec3 m_xAxis = vec3(1.0, 0.0, 0.0)
 
vec3 m_yAxis = vec3(0.0, 1.0, 0.0)
 
- Protected Attributes inherited from GlPointBasedAnnotation
std::unique_ptr< GL::VertexBufferm_vbo
 Vertex buffer that can be used for rendering.
 
std::vector< vec3 > m_points
 Control points which define the form of the annotation.
 
std::vector< vec3 > m_worldPoints
 Points in world coordinates if object matrix differs from identity.
 
bool m_wpDirty = false
 True if the world point vector has to be updated.
 
bool m_showPointsAsCrosses = false
 
int m_maxPoints = -1
 
int m_minPoints = -1
 
float m_pointSize = 5.f
 
vec2 m_labelPixelOffset = vec2(6.0, 0.0)
 
vec4 m_pointColor = vec4(1, 1, 0, 1)
 
vec3 m_rotationPoint = vec3::Zero()
 
double m_hitTest2DMinSize = 4.0
 
double m_hitTest3DMinSize = 6.0
 
- Protected Attributes inherited from GlAnnotation
bool m_editable = true
 
vec4 m_color {1, 1, 0, 1}
 
float m_lineWidth = 1
 
bool m_labelVisible = true
 
bool m_labelBackgroundVisible = false
 
vec4 m_labelBackgroundColor {0.3, 0.3, 0.3, 0.7}
 
int m_labelBackgroundMargin = 3
 
bool m_labelDepthTest = true
 
bool m_selected = false
 
vec3 m_labelColor {0, 1, 1}
 
std::string m_labelText
 
std::string m_labelTextPrefix
 
std::string m_labelTextSuffix
 
const GlViewm_view = nullptr
 
std::string m_name
 
- Protected Attributes inherited from GlObject
mat4 m_matrix = mat4::Identity()
 Modelview transformation matrix of this object.
 
bool m_visible = true
 Object visibility.
 
bool m_alwaysVisible = false
 Object always visible.
 
bool m_draw3DIn2DView
 Draw 3D objects in 2D views. This is to render 3D objects in projective 2D views. Property is not serialized.
 
RenderingOrderGroup m_renderingOrder = RenderingGroupRest
 
- Protected Attributes inherited from Configurable
std::vector< Paramm_params
 List of all registered Parameter and SubProperty instances.
 
- Protected Attributes inherited from CurvedViewPrimitive
vec3 m_yDir = vec3(0, 0, 1)
 
std::optional< vec3 > m_forcedYDir
 
double m_curveHeight = 0.0
 

Additional Inherited Members

- Public Types inherited from GlObject
enum  RenderingOrderGroup { RenderingGroupRest , RenderingGroupMesh , RenderingGroupManipulator }
 Enumeration to determine rendering order of GlObjects in GlSliceView and GlVolumeView. More...
 
- Public Attributes inherited from GlPointBasedAnnotation
Signal< const GlPointBasedAnnotation * > signalPointsChanged
 
- Public Attributes inherited from Configurable
Signal signalParametersChanged
 Emitted whenever one of the registered Parameters' or SubPropertys' signalValueChanged signal was emitted.
 
- Public Attributes inherited from CurvedViewPrimitive
Signal signalGeometryChanged
 
- Protected Member Functions inherited from GlPointBasedAnnotation
void renderLabel (const GlView &view) const
 
void renderPoints (const GlView &view) const
 Render points.
 
void renderPoint (const GlView &view, int index) const
 Render point with the given index. Use -1 to render all points.
 
bool viewIsMetric () const
 
void renderLabel (const GlView &view, const vec3 &positionWorld) const
 Render the label of the annotation at the given position.
 
- Protected Member Functions inherited from GlAnnotation
void renderLabel (const GlView &view, const vec3 &positionWorld) const
 Render the label of the annotation at the given position.
 
vec2i labelSize () const
 
- Protected Member Functions inherited from CurvedViewPrimitive
Geometry::AlignedBox extendBounds (const Geometry::AlignedBox &b) const
 

Member Function Documentation

◆ draw()

void draw ( const GlView & view)
overridevirtual

Render annotation.

Implements GlObject.

◆ hitTestHandles2D()

int hitTestHandles2D ( int x,
int y,
const GlView & view ) const
overridevirtual

Returns the index of the handle being hit, or -1 when missing.

Reimplemented from GlPointBasedAnnotation.

◆ hitTestLine2D()

bool hitTestLine2D ( int x,
int y,
const GlView & view ) const
overridevirtual

Checks whether the line between handles gets hit (if not a straight line, override this in the annotation)

Reimplemented from GlPointBasedAnnotation.

◆ setPoints()

void setPoints ( const std::vector< vec3 > & points)
overridevirtual

Set the points of the ellipse.

Reimplemented from GlPointBasedAnnotation.

◆ evaluate()

void evaluate ( double t,
vec3 & res ) const
overridevirtual

Evaluates ellipse.

The ellipse is parametrized in the range t = [0;1]

Parameters
tellipse parameter
resposition at t (output parameter)

Implements CurvedViewPrimitive.

◆ evaluateNormal()

void evaluateNormal ( double t,
vec3 & res ) const
overridevirtual

Evaluates primitive normal direction.

The curve is parametrized in the range t = [0;1]

Parameters
tcurve parameter
resnormalized normal direction at t (output parameter)

Implements CurvedViewPrimitive.

◆ evaluateTangent()

void evaluateTangent ( double t,
vec3 & res ) const
overridevirtual

Evaluates ellipse tangent.

The polyline is parametrized in the range t = [0;1]

Parameters
tellipse parameter
restangent at t (output parameter)

Implements CurvedViewPrimitive.

◆ updatePoints()

void updatePoints ( )
overridevirtual

Update the internal point structure.

Reimplemented from GlPointBasedAnnotation.

◆ updateYDir()

void updateYDir ( )
overridevirtual

Update the normal of the ellipse.

Implements CurvedViewPrimitive.

◆ getCurveLength()

double getCurveLength ( ) const
overridevirtual

Get the length of the primitive.

Implements CurvedViewPrimitive.

◆ coordToArcLength()

double coordToArcLength ( double t) const
overridevirtual

Implements CurvedViewPrimitive.

◆ arcLengthToCoord()

double arcLengthToCoord ( double length) const
overridevirtual

Implements CurvedViewPrimitive.

◆ getUniformSamples()

void getUniformSamples ( std::vector< std::pair< double, vec3 > > & samples,
int n = 0 ) const
overridevirtual

Get the sample points of the primitive.

Implements CurvedViewPrimitive.

◆ calculateNearestPointCoord()

double calculateNearestPointCoord ( const vec3 & pos) const
overridevirtual

Calculates the curve parameter t of the point nearest to pos.

First the nearest point to pos on the curve is determined and the parameter t from the start of the curve to this point returned.

Parameters
posworldspace position of a point on the view

Implements CurvedViewPrimitive.

◆ isClosed()

bool isClosed ( ) const
inlineoverridevirtual

Returns true if the curve is closed (i.e. first point is at the same position as the last point)

Implements CurvedViewPrimitive.

◆ typeName()

std::string typeName ( ) const
inlineoverridevirtual

Return unique identifier for this object class used for serialization.

Implements GlObject.

◆ configure()

void configure ( const Properties * p)
overridevirtual

Set one or multiple properties.

Reimplemented from GlAnnotation.

◆ configuration()

void configuration ( Properties * p) const
overridevirtual

Retrieve the properties of this object.

Reimplemented from GlAnnotation.

◆ bounds()

Geometry::AlignedBox bounds ( ) const
overridevirtual

Get the axis-aligned bounding box of this GlObject in world space.

Return an empty (default-constructed) AlignedBox object if the GlObject does not reside in world space.

Implements GlObject.


The documentation for this class was generated from the following file:
Search Tab / S to search, Esc to close