Developer Documentation
ACG::SceneGraph::LineNode Class Reference

#include <ACG/Scenegraph/LineNode.hh>

Inheritance diagram for ACG::SceneGraph::LineNode:
ACG::SceneGraph::MaterialNode ACG::SceneGraph::ACG::SceneGraph::BaseNode

Public Types

enum  LineMode { LineSegmentsMode, PolygonMode }
 Line mode: draw line segments (every 2 points) or ONE polyline.
 
typedef ACG::Vec3uc Color
 
typedef ACG::Vec4f Color4f
 
typedef std::vector< Vec3dPointVector
 
typedef PointVector::iterator PointIter
 
typedef PointVector::const_iterator ConstPointIter
 
typedef std::vector< ACG::Vec3ucColorVector
 
typedef ColorVector::iterator ColorIter
 
typedef ColorVector::const_iterator ConstColorIter
 
typedef std::vector< Color4fColor4fVector
 
typedef Color4fVector::iterator Color4fIter
 
typedef Color4fVector::const_iterator ConstColor4fIter
 
typedef Vec3d value_type
 
typedef Vec3dreference
 
typedef const Vec3dconst_reference
 
- Public Types inherited from ACG::SceneGraph::MaterialNode
enum  ApplyProperties {
  None =0, All =0xffff, BaseColor =1, Material =2,
  PointSize =4, LineWidth =8, RoundPoints =16, LineSmooth =32,
  AlphaTest =64, Blending =128, BackFaceCulling =256, ColorMaterial =512,
  MultiSampling =1024
}
 Apply which properties? Others will be ignored. Values may be OR'ed. More...
 
- Public Types inherited from ACG::SceneGraph::ACG::SceneGraph::BaseNode
enum  StatusMode { Active = 0x1, HideNode = 0x2, HideChildren = 0x4, HideSubtree = 0x8 }
 Status modi. More...
 
enum  TraverseMode { NodeFirst = 0x1, ChildrenFirst = 0x2, SecondPass = 0x4 }
 Node traverse types. More...
 
typedef std::vector< BaseNode * >::const_iterator ConstChildIter
 allows to iterate over children
 
typedef std::vector< BaseNode * >::iterator ChildIter
 allows to iterate over children
 
typedef std::vector< BaseNode * >::const_reverse_iterator ConstChildRIter
 allows to reverse iterate over children
 
typedef std::vector< BaseNode * >::reverse_iterator ChildRIter
 allows to reverse iterate over children
 
enum  PASSES {
  NOPASS = 0, ALLPASSES = 1 << 0, PASS_1 = 1 << 1, PASS_2 = 1 << 2,
  PASS_3 = 1 << 3, PASS_4 = 1 << 4, PASS_5 = 1 << 5, PASS_6 = 1 << 6,
  PASS_7 = 1 << 7, PASS_8 = 1 << 8
}
 This enum should be used to enable rendering of a node in different.
 
typedef unsigned int MultipassBitMask
 Multipass pass bit mask type.
 

Public Member Functions

 LineNode (LineMode _mode, BaseNode *_parent=0, std::string _name="<LineNode>")
 default constructor
 
 ~LineNode ()
 destructor
 
void set_line_mode (LineMode _mode)
 set line mode (see LineNode::LineMode)
 
 ACG_CLASSNAME (LineNode)
 static name of this class
 
DrawModes::DrawMode availableDrawModes () const override
 return available draw modes
 
void boundingBox (Vec3d &_bbMin, Vec3d &_bbMax) override
 update bounding box
 
void enter (GLState &_state, const DrawModes::DrawMode &_drawMode) override
 set depth function (needed for lasso selection so that the line can be draw in pseudo-2D)
 
void draw (GLState &_state, const DrawModes::DrawMode &_drawMode) override
 draw lines and normals
 
void drawCompat (GLState &_state, const DrawModes::DrawMode &_drawMode)
 
void leave (GLState &_state, const DrawModes::DrawMode &_drawMode) override
 reset depth function to what it was before enter()
 
void pick (GLState &_state, PickTarget _target) override
 Draw the line using the GL picking name stack.
 
void pickCompat (GLState &_state, PickTarget _target)
 
void reserve_lines (unsigned int _n)
 reserve mem for _n lines
 
void reserve_points (unsigned int _n)
 reserve mem for _n points
 
void clear ()
 clear points/lines and colors
 
void clear_points ()
 clear points/lines
 
void clear_colors ()
 clear colors
 
void set_color (const Vec4f &_c)
 Override material node's set color function in order to locally add color.
 
void add_point (const Vec3d &_v)
 add point (for LineMode == PolygonMode)
 
void add_line (const Vec3d &_v0, const Vec3d &_v1)
 add line (for LineMode == LineSegmentsMode)
 
void add_color (const ACG::Vec3uc &_c)
 add color (only for LineMode == LineSegmentsMode)
 
void add_color (const Color4f _c)
 add color 4f (only for LineMode == LineSegmentsMode)
 
void set_picking_line_width (float _width)
 set line width used by the picking renderer
 
float picking_line_width () const
 get line width used by the picking renderer. Defaults to line_width().
 
size_t n_points () const
 number of points
 
const PointVector & points () const
 return reference to point vector More...
 
ColorVector & colors ()
 get and set color container More...
 
bool & alwaysOnTop ()
 get and set always on top
 
void updateVBO ()
 
void push_back (const Vec3d &_v)
 STL conformance.
 
void getRenderObjects (IRenderer *_renderer, GLState &_state, const DrawModes::DrawMode &_drawMode, const ACG::SceneGraph::Material *_mat) override
 Add the objects to the given renderer. More...
 
- Public Member Functions inherited from ACG::SceneGraph::MaterialNode
 MaterialNode (BaseNode *_parent=0, const std::string &_name="<MaterialNode>", unsigned int _applyProperties=(All &~BackFaceCulling))
 Default constructor. Applies all properties.
 
virtual ~MaterialNode ()
 Destructor.
 
void read (std::istream &_is)
 read MaterialFile
 
float alpha_value ()
 get current alpha value for alpha_test
 
bool blending ()
 
GLenum blending_param1 ()
 
GLenum blending_param2 ()
 
void enable_blending (GLenum _p1=GL_SRC_ALPHA, GLenum _p2=GL_ONE_MINUS_SRC_ALPHA)
 enable blending with Parameters (_p1, _p2)
 
void disable_blending ()
 disable blending
 
bool backface_culling ()
 
void enable_backface_culling ()
 enable backface culling (not active by default, see applyProperties)
 
void disable_backface_culling ()
 disable backface culling (not active by default, see applyProperties)
 
unsigned int applyProperties () const
 get properties that will be applied (OR'ed ApplyProperties)
 
void applyProperties (unsigned int _applyProperties)
 set properties that will be applied (OR'ed ApplyProperties)
 
ACG::SceneGraph::Materialmaterial ()
 Get material object reference.
 
void set_material (const ACG::SceneGraph::Material &_m)
 Set material object.
 
 ACG_CLASSNAME (MaterialNode)
 set current GL-color and GL-material
 
void enter (GLState &_state, const DrawModes::DrawMode &_drawmode) override
 set current GL-color and GL-material
 
void leave (GLState &_state, const DrawModes::DrawMode &_drawmode) override
 restores original GL-color and GL-material
 
void enterPick (GLState &_state, PickTarget _target, const DrawModes::DrawMode &_drawMode) override
 Do nothing in picking.
 
void leavePick (GLState &_state, PickTarget _target, const DrawModes::DrawMode &_drawMode) override
 Do nothing in picking.
 
void set_color (const Vec4f &_c)
 set color (base, ambient, diffuse, specular) based on _c
 
void set_random_color ()
 Generates a random color and sets it.
 
void set_base_color (const Vec4f &_c)
 set the base color ( Same as set_emission(const Vec4f& _c) )
 
const Vec4fbase_color () const
 get the base color ( same as emission() )
 
void set_emission (const Vec4f &_c)
 set emission ( same as set_base_color(const Vec4f& _c) )
 
const Vec4femission () const
 get emission ( same as base_color() )
 
void set_ambient_color (const Vec4f &_a)
 set the ambient color.
 
const Vec4fambient_color () const
 get the ambient color.
 
void set_diffuse_color (const Vec4f &_d)
 set the diffuse color.
 
const Vec4fdiffuse_color () const
 get the diffuse color.
 
void set_specular_color (const Vec4f &_s)
 set the specular color
 
const Vec4fspecular_color () const
 get the specular color
 
void set_overlay_color (const Vec4f &_s)
 set the overlay color
 
const Vec4foverlay_color () const
 get the overlay color
 
void colorMaterial (const bool _cm)
 Set colorMaterial.
 
void enable_color_material ()
 Enable Color Material.
 
void disable_color_material ()
 Disable Color Material.
 
bool colorMaterial ()
 get colorMaterial state
 
void set_shininess (float _s)
 set shininess
 
float shininess () const
 get shininess
 
void set_reflectance (double _m)
 set reflectance
 
double reflectance () const
 get reflectance
 
void set_indexOfRefraction (double _m)
 set index of refraction
 
double indexOfRefraction () const
 get index of refraction
 
void set_refractive (bool _r)
 set refractive flag
 
bool isRefractive () const
 get refractive flag
 
void set_point_size (float _sz)
 set point size (default: 1.0)
 
float point_size () const
 get point size
 
void set_line_width (float _sz)
 set line width (default: 1.0)
 
float line_width () const
 get line width
 
void set_round_points (bool _b)
 set round points enabled
 
bool round_points () const
 get round points enabled
 
void set_line_smooth (bool _b)
 set: smooth lines enabled
 
bool line_smooth () const
 get: rsmooth lines enabled
 
void enable_alpha_test (float _clip)
 enable alpha test (draw pixels if alpha >= _clip)
 
void disable_alpha_test ()
 disable alpha test
 
bool alpha_test ()
 Return state of Alpha test.
 
void enable_multisampling ()
 Enable Multisampling.
 
void disable_multisampling ()
 enable alpha test (draw pixels if alpha >= _clip)
 
bool multiSampling ()
 Get state of multisampling.
 
void set_multisampling (bool _state)
 Set state of multisampling.
 
- Public Member Functions inherited from ACG::SceneGraph::ACG::SceneGraph::BaseNode
 BaseNode (BaseNode *_parent=0, std::string _name="<unknown>")
 Default constructor.
 
 BaseNode (BaseNode *_parent, BaseNode *_child, std::string _name="<unknown>")
 Put this node between _parent and _child.
 
virtual ~BaseNode ()
 Destructor.
 
void delete_subtree ()
 Delete the whole subtree of this node. More...
 
virtual const std::string & className () const =0
 Return class name (implemented by the ACG_CLASSNAME macro)
 
virtual void enter (GLState &, const DrawModes::DrawMode &)
 
virtual void enter (IRenderer *, GLState &_state, const DrawModes::DrawMode &_drawMode)
 
virtual void draw (GLState &, const DrawModes::DrawMode &)
 Draw this node using the draw modes _drawMode. More...
 
virtual void getRenderObjects (IRenderer *_renderer, GLState &_state, const DrawModes::DrawMode &_drawMode, const Material *_mat)
 Deferred draw call with shader based renderer. More...
 
virtual void leave (GLState &, const DrawModes::DrawMode &)
 
virtual void leave (IRenderer *, GLState &_state, const DrawModes::DrawMode &_drawMode)
 
virtual void enterPick (GLState &_state, PickTarget _target, const DrawModes::DrawMode &_drawMode)
 
virtual void pick (GLState &, PickTarget)
 
virtual void leavePick (GLState &_state, PickTarget _target, const DrawModes::DrawMode &_drawMode)
 
void enablePicking (bool _enable)
 
bool pickingEnabled ()
 
virtual void mouseEvent (GLState &, QMouseEvent *)
 Handle mouse event (some interaction, e.g. modeling)
 
void setDirty (bool _dirty=true)
 mark node for redrawn
 
bool isDirty () const
 Check if node should be redrawn.
 
ChildIter childrenBegin ()
 Returns: begin-iterator of children.
 
ConstChildIter childrenBegin () const
 Same but cont.
 
ChildIter childrenEnd ()
 Returns: end-iterator of children.
 
ConstChildIter childrenEnd () const
 Same but const.
 
ChildRIter childrenRBegin ()
 Returns: reverse begin-iterator of children.
 
ConstChildRIter childrenRBegin () const
 Same but const.
 
ChildRIter childrenREnd ()
 Returns: reverse end-iterator of children.
 
ConstChildRIter childrenREnd () const
 Same but const.
 
void push_back (BaseNode *_node)
 Insert _node at the end of the list of children.
 
void remove (ChildIter _pos)
 
size_t nChildren () const
 number of children
 
ChildIter find (BaseNode *_node)
 
BaseNodefind (const std::string &_name)
 
BaseNodeparent ()
 Get the nodes parent node.
 
const BaseNodeparent () const
 Get the nodes parent node.
 
void set_parent (BaseNode *_parent)
 Set the parent of this node. More...
 
StatusMode status () const
 Get node's status.
 
void set_status (StatusMode _s)
 Set the status of this node.
 
void hide ()
 Hide Node: set status to HideNode.
 
void show ()
 Show node: set status to Active.
 
bool visible ()
 Is node visible (status == Active)?
 
bool hidden ()
 Is node not visible (status != Active)?
 
std::string name () const
 Returns: name of node (needs not be unique)
 
void name (const std::string &_name)
 rename a node
 
unsigned int id () const
 
DrawModes::DrawMode drawMode () const
 Return the own draw modes of this node.
 
void drawMode (DrawModes::DrawMode _drawMode)
 
unsigned int traverseMode () const
 Return how the node should be traversed.
 
void setTraverseMode (unsigned int _mode)
 Set traverse mode for node.
 
MultipassBitMask multipassStatus () const
 Get the current multipass settings for the nodes status functions. More...
 
void setMultipassStatus (const MultipassBitMask _passStatus)
 Set multipass settings for the nodes status functions. More...
 
void multipassStatusSetActive (const unsigned int _i, bool _active)
 Set multipass status to traverse in a specific pass. More...
 
bool multipassStatusActive (const unsigned int _i) const
 Get multipass status to traverse in a specific pass. More...
 
MultipassBitMask multipassNode () const
 Get the current multipass settings for the node. More...
 
void setMultipassNode (const MultipassBitMask _passNode)
 Set multipass settings for the node. More...
 
void multipassNodeSetActive (const unsigned int _i, bool _active)
 Set Node status to traverse in a specific pass. More...
 
bool multipassNodeActive (const unsigned int _i) const
 Get Node status to traverse in a specific pass. More...
 
void setRenderObjectShaders (const std::string &_vertexShaderFile, const std::string &_geometryShaderFile, const std::string &_fragmentShaderFile, bool _relativePaths=true, DrawModes::DrawModePrimitive _primitiveType=DrawModes::PRIMITIVE_POLYGON)
 Set custom shaders. More...
 
void setRenderObjectShaders (const std::string &_vertexShaderFile, const std::string &_tessControlShaderFile, const std::string &_tessEvalShaderFile, const std::string &_geometryShaderFile, const std::string &_fragmentShaderFile, bool _relativePaths=true, DrawModes::DrawModePrimitive _primitiveType=DrawModes::PRIMITIVE_POLYGON)
 Set custom shaders. More...
 
void setRenderObjectUniformPool (const GLSL::UniformPool *_pool)
 Set uniforms for shader based rendering. More...
 
const GLSL::UniformPoolgetRenderObjectUniformPool ()
 Get uniforms for shader based rendering. More...
 
void setRenderObjectTexture (int _samplerSlot, GLuint _texId, GLenum _texType=GL_TEXTURE_2D)
 Set textures for shader based rendering. More...
 
void setRenderObjectModifier (RenderObjectModifier *_modifier)
 Set modifier for render objects. More...
 
RenderObjectModifiergetRenderObjectModifier ()
 Get render-object modifier. More...
 
void applyRenderObjectSettings (DrawModes::DrawModePrimitive _primitive, RenderObject *_obj) const
 Set shaders, textures and uniforms as provided by user to a render-object. More...
 

Protected Member Functions

void pick_vertices (GLState &_state)
 
void pick_edges (GLState &_state, unsigned int _offset)
 
void pick_edgesCompat (GLState &_state, unsigned int _offset)
 
void createVBO ()
 creates the vbo only if update was requested
 

Protected Attributes

float picking_line_width_
 
PointVector points_
 
ColorVector colors_
 
Color4fVector colors4f_
 
LineMode line_mode_
 
bool draw_always_on_top
 
GLint prev_depth_
 
unsigned int vbo_
 
bool updateVBO_
 
ACG::VertexDeclaration vertexDecl_
 
std::string lineNodeName_
 

Detailed Description

LineNode renders a set of line segments or polylines.

LineNode renders a set of line segments or one connected polyline, depending on the LineMode, that can be set using the set_line_mode(LineMode) method.

Definition at line 84 of file LineNode.hh.

Member Function Documentation

◆ colors()

ColorVector& ACG::SceneGraph::LineNode::colors ( )
inline

get and set color container

If you change something here, you need to call updateVBO() in order to tell the system, that your data arrays changed

Definition at line 195 of file LineNode.hh.

◆ getRenderObjects()

void ACG::SceneGraph::LineNode::getRenderObjects ( IRenderer _renderer,
GLState _state,
const DrawModes::DrawMode _drawMode,
const ACG::SceneGraph::Material _mat 
)
override

Add the objects to the given renderer.

Parameters
_rendererThe renderer which will be used. Add your geometry into this class
_stateThe current GL State when this object is called
_drawModeThe active draw mode
_matCurrent material

Definition at line 544 of file LineNode.cc.

◆ points()

const PointVector& ACG::SceneGraph::LineNode::points ( ) const
inline

return reference to point vector

If you change something here, you need to call updateVBO() in order to tell the system, that your data arrays changed

Definition at line 188 of file LineNode.hh.

Member Data Documentation

◆ picking_line_width_

float ACG::SceneGraph::LineNode::picking_line_width_
protected

Line width used by the picking renderer. If this is not set (i.e. NAN), line_width() is used instead.

Definition at line 228 of file LineNode.hh.


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