cgv
Loading...
Searching...
No Matches
cgv::plot::plot3d Class Reference

The plot3d class draws 2d plots with potentially several sub plots of different plot configuration. More...

#include <plot3d.h>

Inheritance diagram for cgv::plot::plot3d:
cgv::plot::plot_base cgv::render::drawable cgv::base::traverse_policy

Public Member Functions

 plot3d (unsigned nr_attributes=0)
 construct 3d plot with given number of additional attributes and default parameters
 
management of sub plots
unsigned add_sub_plot (const std::string &name)
 add sub plot and return reference to samples
 
void set_samples_per_row (unsigned i, unsigned N)
 set the number of samples of the i-th sub plot to N
 
unsigned get_samples_per_row (unsigned i) const
 return the number of samples per row
 
void delete_sub_plot (unsigned i)
 delete the i-th sub plot
 
plot3d_configref_sub_plot3d_config (unsigned i=0)
 return a reference to the plot3d configuration of the i-th plot
 
std::vector< vec3 > & ref_sub_plot_samples (unsigned i=0)
 return the samples of the i-th sub plot
 
void create_line_config_gui (cgv::base::base *bp, cgv::gui::provider &p, plot_base_config &pbc)
 create the gui for a line subplot
 
void create_bar_config_gui (cgv::base::base *bp, cgv::gui::provider &p, plot_base_config &pbc)
 create the gui for a bar subplot
 
void create_config_gui (cgv::base::base *bp, cgv::gui::provider &p, unsigned i)
 create the gui for a subplot configuration
 
bool init (cgv::render::context &ctx)
 this method is called after creation or recreation of the context, return whether all necessary functionality is supported
 
void draw (cgv::render::context &ctx)
 overload to draw the content of this drawable
 
void clear (cgv::render::context &ctx)
 clear all objects living in the context like textures or display lists
 
void create_gui (cgv::base::base *bp, cgv::gui::provider &p)
 create a gui for the plot with gui for all configs
 
- Public Member Functions inherited from cgv::plot::plot_base
void set_label_font (float font_size, cgv::media::font::FontFaceAttributes ffa=cgv::media::font::FFA_REGULAR, const std::string &font_name="")
 configure the label font
 
const domain_configget_domain_config_ptr () const
 return const pointer to domain configuration
 
domain_configget_domain_config_ptr ()
 return pointer to domain configuration
 
void set_domain_config_ptr (domain_config *_new_ptr)
 set the domain configuration to an external configuration in order to synch several plots, if set to null, the internal domain config is used again
 
const box2 get_domain () const
 return 2d domain shown in plot
 
const box3 get_domain3 () const
 return 3d domain shown in plot
 
void set_domain (const box2 &dom)
 set the domain for 2d plots
 
void set_domain3 (const box3 &dom)
 set the domain for 3d plots
 
void set_extent (const vecn &new_extent)
 set the plot extend in 2D coordinates
 
vecn get_extent () const
 query the plot extend in 2D coordinates
 
void set_extent_scaling (float x_scale, float y_scale, float z_scale=0)
 set extent_scaling values for all axes
 
void set_width (float new_width, bool constrained=true)
 set the plot width to given value and if constrained == true the height, such that the aspect ration is the same as the aspect ratio of the domain
 
void set_height (float new_height, bool constrained=true)
 set the plot height to given value and if constrained == true the width, such that the aspect ration is the same as the aspect ratio of the domain
 
void set_orientation (const quat &_orientation)
 set new orientation quaternion
 
void place_origin (const vec3 &new_origin_location)
 place the origin of the plot in 3D to the given location
 
void place_center (const vec3 &new_center_location)
 place the plot extent center in 3D to the given location (this might can change the current origin location)
 
void place_corner (unsigned corner_index, const vec3 &new_corner_location)
 place a corner (0 .. lower left, 1 .. lower right, 2 .. upper left, 3 .. upper right) to a given 3D location ((this might can change the current origin / center location)
 
vec3 get_origin () const
 return the current origin in 3D coordinates
 
const quatget_orientation () const
 get current orientation quaternion
 
const vec3get_center () const
 return the current plot center in 3D coordinates
 
vec3 get_corner (unsigned i) const
 return the i-th plot corner in 3D coordinates
 
const vec3 get_axis_direction (unsigned ai) const
 return true world direction of x, y or z axis
 
bool determine_axis_extent_from_subplot (unsigned ai, unsigned i, float &sample_min, float &sample_max)
 adjust the domain with respect to ai th axis to the i-th subplot
 
void adjust_domain_axis_to_data (unsigned ai, bool adjust_min=true, bool adjust_max=true, bool only_visible=true)
 adjust the domain with respect to ai th axis to the visible or all data depending on last parameter
 
void adjust_domain_to_data (bool only_visible=true)
 adjust selected axes of domain to the visible or all data depending on last parameter
 
void include_axis_to_domain (unsigned ai)
 extend domain such that given axis is included
 
void adjust_tick_marks (unsigned max_nr_secondary_ticks=20, bool adjust_to_attribute_ranges=true)
 adjust tick marks of all axes based on maximum number of secondary ticks and domain min and max in coordinate of axis
 
void adjust_extent_to_domain_aspect_ratio (int preserve_ai=0)
 adjust the extent such that it has same aspect ration as domain
 
unsigned get_nr_sub_plots () const
 return current number of sub plots
 
plot_base_configref_sub_plot_config (unsigned i)
 return a reference to the plot base configuration of the i-th plot
 
void set_samples_out_of_date (unsigned i)
 notify plot that samples of given subplot are out of date
 
void set_sub_plot_colors (unsigned i, const rgb &base_color)
 set the colors for all plot features of the i-th sub plot as variation of the given color
 
void set_sub_plot_attribute (unsigned i, unsigned ai, int subplot_index, size_t aj)
 define a sub plot attribute ai from coordinate aj of the i-th internal sample container
 
void set_sub_plot_attribute (unsigned i, unsigned ai, const float *_pointer, size_t count, size_t stride)
 define a sub plot attribute from an external pointer
 
void set_sub_plot_attribute (unsigned i, unsigned ai, const cgv::render::vertex_buffer *_vbo_ptr, size_t _offset, size_t _count, size_t _stride)
 define a sub plot attribute from a vbo (attribute must be stored in float type in vbo)
 
bool init (cgv::render::context &ctx)
 build legend prog and create aab
 
void clear (cgv::render::context &ctx)
 destruct shader programs
 
 plot_base (unsigned dim, unsigned nr_attributes=0)
 construct from plot dimension and number of additional attributes with default parameters
 
unsigned get_dim () const
 return nr dimensions of plot
 
void set_view_ptr (cgv::render::view *_view_ptr)
 set the view ptr
 
void ensure_font_names ()
 ensure that font names have been enumerate
 
virtual void create_plot_gui (cgv::base::base *bp, cgv::gui::provider &p)
 create the gui for the plot without gui for sub plots
 
virtual void create_base_config_gui (cgv::base::base *bp, cgv::gui::provider &p, unsigned i)
 create the gui for base subplot settings
 
virtual void create_point_config_gui (cgv::base::base *bp, cgv::gui::provider &p, plot_base_config &pbc)
 create the gui for a point subplot
 
virtual void create_stick_config_gui (cgv::base::base *bp, cgv::gui::provider &p, plot_base_config &pbc)
 create the gui for a stick subplot
 
- Public Member Functions inherited from cgv::render::drawable
 drawable ()
 default construction
 
void hide ()
 hide the drawable
 
void show ()
 show the drawable
 
bool is_visible () const
 check whether the drawable is visible
 
contextget_context () const
 access the current context. The context will be available latestly in the init method but not in the contructor.
 
void set_context (context *_ctx)
 set the current focus context, this should only be called by the context itself
 
viewfind_view_as_node (size_t view_idx=0) const
 convenience function to find the view control in the current hierarchy
 
bool get_world_location (int x, int y, const view &V, dvec3 &world_location, double *window_z_ptr=0) const
 use given view together with depth buffer of context in order to compute the world location of the point at mouse pointer location (x,y)
 
void post_redraw ()
 posts a redraw event to the current context if one is available
 
void force_redraw ()
 forces a redraw right now. This cannot be called from init, init_frame, draw, finish_draw, finish_frame and clear
 
virtual void resize (unsigned int w, unsigned int h)
 callback to announce resizing of the output window
 
virtual void init_frame (context &)
 this method is called in one pass over all drawables before the draw method
 
virtual void finish_draw (context &)
 this method is called when the current drawable is left in a tree traversal that calls the draw method
 
virtual void finish_frame (context &)
 this method is called in one pass over all drawables after drawing
 
virtual void after_finish (context &)
 this method is called in one pass over all drawables after finish frame
 
- Public Member Functions inherited from cgv::base::traverse_policy
 traverse_policy (int _policy=TP_ALL+TP_STOP_ON_SUCCESS, bool _active=true, int _focus=-1)
 construct default traverse policy that visits everything
 
int get_policy () const
 return the policy without the stop on success flag
 
bool stop_on_success () const
 return whether to stop on success
 
bool stop_on_failure () const
 return whether to stop on failure
 
void set_policy (int _policy)
 set a new policy, always add stop on success flag if needed
 
int get_focused_child () const
 return the focused child or -1 if none is focused
 
void set_focused_child (int _focused_child)
 set the focused child
 
bool get_active () const
 return whether the current node is active
 
void set_active (bool _active)
 set the active flag of the current node
 

Protected Member Functions

void compute_tick_render_information ()
 overloaded in derived classes to compute complete tick render information
 
- Protected Member Functions inherited from cgv::plot::plot_base
vec3 world_space_from_plot_space (const vecn &pnt_plot) const
 
vec3 transform_to_world (const vecn &pnt_attr) const
 transform from attribute space to world space
 
void on_legend_axis_change (cgv::gui::provider &p, cgv::gui::control< int > &ctrl)
 
void on_font_selection ()
 callback to change fonts
 
void on_font_face_selection ()
 callback to change font face
 
void prepare_extents ()
 prepare extents for drawing
 
void set_plot_uniforms (cgv::render::context &ctx, cgv::render::shader_program &prog)
 set the uniforms for plot configurations
 
void set_mapping_uniforms (cgv::render::context &ctx, cgv::render::shader_program &prog)
 set the uniforms for defining the mappings to visual variables
 
void draw_rectangles (cgv::render::context &ctx, cgv::render::attribute_array_manager &aam, std::vector< box2 > &R, std::vector< rgb > &C, std::vector< float > &D, size_t offset=0)
 
void draw_tick_labels (cgv::render::context &ctx, cgv::render::attribute_array_manager &aam_ticks, std::vector< label_info > &tick_labels, std::vector< tick_batch_info > &tick_batches, float depth)
 
size_t enable_attributes (cgv::render::context &ctx, int i, const std::vector< std::vector< vec2 > > &samples)
 set vertex shader input attributes based on attribute source information
 
size_t enable_attributes (cgv::render::context &ctx, int i, const std::vector< std::vector< vec3 > > &samples)
 set vertex shader input attributes based on attribute source information
 
void disable_attributes (cgv::render::context &ctx, int i)
 
void update_samples_out_of_date_flag ()
 
void draw_sub_plot_samples (int count, const plot_base_config &spc, bool strip=false)
 
void draw_title (cgv::render::context &ctx, vec2 pos, float depth, int si=-1)
 
void draw_legend (cgv::render::context &ctx, int layer_idx=0, bool is_first=true, bool *multi_axis_modes=0)
 
bool extract_tick_rectangles_and_tick_labels (std::vector< box2 > &R, std::vector< rgb > &C, std::vector< float > &D, std::vector< label_info > &tick_labels, int ai, int ci, int ti, float he, float z_plot, float plot_scale=1.0f, vec2 plot_offset=vec2(0.0f, 0.0f), float d=0.0f, bool multi_axis=true)
 
void extract_legend_tick_rectangles_and_tick_labels (std::vector< box2 > &R, std::vector< rgb > &C, std::vector< float > &D, std::vector< label_info > &tick_labels, std::vector< tick_batch_info > &tick_batches, float d, bool clear_cache=false, bool is_first=true, bool *multi_axis_modes=0)
 
void update_ref_opacity (unsigned i, cgv::gui::provider &p)
 
void update_ref_opacity_index (unsigned i, cgv::gui::provider &p)
 
void update_ref_size (unsigned i, cgv::gui::provider &p)
 
void update_ref_size_index (unsigned i, cgv::gui::provider &p)
 
void update_ref_color (unsigned i, cgv::gui::provider &p)
 
void update_ref_color_index (unsigned i, cgv::gui::provider &p)
 

Protected Attributes

std::vector< std::vector< vec3 > > samples
 
- Protected Attributes inherited from cgv::plot::plot_base
unsigned dim
 dimension of plot
 
unsigned nr_attributes
 number of additional attributes
 
domain_config dom_cfg
 domain configuration
 
domain_configdom_cfg_ptr
 pointer to currently used domain config
 
std::vector< plot_base_config * > configs
 store one configuration per sub plot
 
cgv::render::viewview_ptr
 
std::vector< label_infotick_labels
 all tick labels
 
std::vector< label_infolegend_tick_labels
 
std::vector< tick_batch_infotick_batches
 twice number of axis pairs with index of first tick label and number of tick labels for primary and secondary ticks
 
std::vector< tick_batch_infolegend_tick_batches
 
float layer_depth
 depth offset of a single layer
 
quat orientation
 orientiation quaternion mapping from domain to world coordinates
 
vec3 center_location
 center location of domain in world coordinates
 
cgv::media::font::font_ptr label_font
 store pointer to label font
 
cgv::media::font::font_face_ptr label_font_face
 store pointer to label font face
 
cgv::media::font::font_ptr title_font
 store pointer to title font
 
cgv::media::font::font_face_ptr title_font_face
 store pointer to title font face
 
cgv::render::vertex_buffer vbo_legend
 vbo for legend drawing
 
cgv::render::attribute_array_binding aab_legend
 manage attributes for legend drawing
 
std::vector< attribute_source_arrayattribute_source_arrays
 attribute sources
 
vec3 extent
 extents used for drawing current
 
cgv::render::rectangle_render_style rrs
 render style of rectangles
 
cgv::render::rectangle_render_style font_rrs
 
cgv::render::attribute_array_manager aam_legend
 
cgv::render::attribute_array_manager aam_legend_ticks
 
cgv::render::attribute_array_manager aam_title
 
- Protected Attributes inherited from cgv::base::traverse_policy
TraversePolicy policy
 
bool active
 
int focus
 

Additional Inherited Members

- Public Attributes inherited from cgv::plot::plot_base
LegendComponent legend_components
 whether to show legend
 
vec3 legend_location
 center location of legend in domain coordinates
 
vec2 legend_extent
 width of legend
 
int legend_axis
 coordinate direction along which to draw legend
 
rgba legend_color
 color and opacity of legend
 
ivec4 out_of_range_mode
 handling of values that are out of range
 
int color_mapping [MAX_NR_COLOR_MAPPINGS]
 index of attribute mapped to primary and secondary color
 
cgv::media::ColorScale color_scale_index [MAX_NR_COLOR_MAPPINGS]
 color scale indices of primary and secondary color mapping
 
float color_scale_gamma [MAX_NR_COLOR_MAPPINGS]
 gamma adjustments for primary and secondary color mapping
 
float window_zero_position [MAX_NR_COLOR_MAPPINGS]
 window space position of zero for primary and secondary color mapping
 
int opacity_mapping [MAX_NR_OPACITY_MAPPINGS]
 index of attribute mapped to primary and secondary opacity
 
float opacity_gamma [MAX_NR_OPACITY_MAPPINGS]
 gamma adjustments for primary and secondary opacity mapping
 
bool opacity_is_bipolar [MAX_NR_OPACITY_MAPPINGS]
 flag whether opacity mapping is bipolar for primary and secondary opacity mapping
 
float opacity_window_zero_position [MAX_NR_OPACITY_MAPPINGS]
 window space position of zero for primary and secondary opacity mapping
 
float opacity_min [MAX_NR_OPACITY_MAPPINGS]
 minimum opacity value for primary and secondary opacity mapping
 
float opacity_max [MAX_NR_OPACITY_MAPPINGS]
 maximum opacity value for primary and secondary opacity mapping
 
int size_mapping [MAX_NR_SIZE_MAPPINGS]
 index of attribute mapped to size
 
float size_gamma [MAX_NR_SIZE_MAPPINGS]
 and independent gamma adjustments
 
float size_min [MAX_NR_SIZE_MAPPINGS]
 min and max of mapped size
 
float size_max [MAX_NR_SIZE_MAPPINGS]
 
- Static Public Attributes inherited from cgv::plot::plot_base
static const unsigned MAX_NR_COLOR_MAPPINGS = 2
 define maximum number of color mappings
 
static const unsigned MAX_NR_OPACITY_MAPPINGS = 2
 define maximum number of opacity mappings
 
static const unsigned MAX_NR_SIZE_MAPPINGS = 2
 define maximum number of size mappings
 
- Static Protected Attributes inherited from cgv::plot::plot_base
static std::vector< const char * > font_names
 store a vector with all fonts on the system
 
static std::string font_name_enum_def
 concatenate font names to enum definition for dropdown control
 

Detailed Description

The plot3d class draws 2d plots with potentially several sub plots of different plot configuration.

Definition at line 45 of file plot3d.h.

Constructor & Destructor Documentation

◆ plot3d()

Member Function Documentation

◆ add_sub_plot()

unsigned cgv::plot::plot3d::add_sub_plot ( const std::string &  name)
virtual

◆ clear()

void cgv::plot::plot3d::clear ( cgv::render::context )
virtual

clear all objects living in the context like textures or display lists

Reimplemented from cgv::render::drawable.

Definition at line 538 of file plot3d.cxx.

References cgv::plot::plot_base::clear(), cgv::render::shader_program::destruct(), cgv::render::ref_box_renderer(), and cgv::render::ref_cone_renderer().

◆ compute_tick_render_information()

void cgv::plot::plot3d::compute_tick_render_information ( )
protected

overloaded in derived classes to compute complete tick render information

Definition at line 16 of file plot3d.cxx.

◆ create_bar_config_gui()

void cgv::plot::plot3d::create_bar_config_gui ( cgv::base::base bp,
cgv::gui::provider p,
plot_base_config pbc 
)
virtual

create the gui for a bar subplot

Reimplemented from cgv::plot::plot_base.

Definition at line 558 of file plot3d.cxx.

References cgv::plot::plot3d_config::bar_percentual_depth, and cgv::plot::plot_base::create_bar_config_gui().

◆ create_config_gui()

◆ create_gui()

void cgv::plot::plot3d::create_gui ( cgv::base::base bp,
cgv::gui::provider p 
)
virtual

◆ create_line_config_gui()

void cgv::plot::plot3d::create_line_config_gui ( cgv::base::base bp,
cgv::gui::provider p,
plot_base_config pbc 
)
virtual

◆ delete_sub_plot()

void cgv::plot::plot3d::delete_sub_plot ( unsigned  i)
virtual

delete the i-th sub plot

Implements cgv::plot::plot_base.

Definition at line 108 of file plot3d.cxx.

References cgv::plot::plot_base::configs.

◆ draw()

◆ get_samples_per_row()

unsigned cgv::plot::plot3d::get_samples_per_row ( unsigned  i) const

return the number of samples per row

Definition at line 123 of file plot3d.cxx.

References ref_sub_plot3d_config(), and cgv::plot::plot3d_config::samples_per_row.

◆ init()

bool cgv::plot::plot3d::init ( cgv::render::context )
virtual

this method is called after creation or recreation of the context, return whether all necessary functionality is supported

Reimplemented from cgv::render::drawable.

Definition at line 142 of file plot3d.cxx.

References cgv::render::shader_program::build_program(), cgv::plot::plot_base::init(), cgv::render::ref_box_renderer(), cgv::render::ref_cone_renderer(), and cgv::render::shader_program::set_uniform().

◆ ref_sub_plot3d_config()

plot3d_config & cgv::plot::plot3d::ref_sub_plot3d_config ( unsigned  i = 0)

return a reference to the plot3d configuration of the i-th plot

return a reference to the plot base configuration of the i-th plot

Definition at line 129 of file plot3d.cxx.

References cgv::plot::plot_base::ref_sub_plot_config().

Referenced by add_sub_plot(), create_config_gui(), get_samples_per_row(), and set_samples_per_row().

◆ ref_sub_plot_samples()

std::vector< vec3 > & cgv::plot::plot3d::ref_sub_plot_samples ( unsigned  i = 0)

return the samples of the i-th sub plot

Definition at line 136 of file plot3d.cxx.

◆ set_samples_per_row()

void cgv::plot::plot3d::set_samples_per_row ( unsigned  i,
unsigned  N 
)

set the number of samples of the i-th sub plot to N

Definition at line 117 of file plot3d.cxx.

References ref_sub_plot3d_config(), and cgv::plot::plot3d_config::samples_per_row.

Member Data Documentation

◆ samples

std::vector<std::vector<vec3> > cgv::plot::plot3d::samples
protected

Definition at line 63 of file plot3d.h.


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