cgv
|
The plot3d
class draws 2d plots with potentially several sub plots of different plot configuration.
More...
#include <plot3d.h>
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_config & | ref_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 | |
![]() | |
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_config * | get_domain_config_ptr () const |
return const pointer to domain configuration | |
domain_config * | get_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 quat & | get_orientation () const |
get current orientation quaternion | |
const vec3 & | get_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_config & | ref_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 | |
![]() | |
drawable () | |
default construction | |
void | hide () |
hide the drawable | |
void | show () |
show the drawable | |
bool | is_visible () const |
check whether the drawable is visible | |
context * | get_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 | |
view * | find_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 | |
![]() | |
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 | |
![]() | |
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 |
![]() | |
unsigned | dim |
dimension of plot | |
unsigned | nr_attributes |
number of additional attributes | |
domain_config | dom_cfg |
domain configuration | |
domain_config * | dom_cfg_ptr |
pointer to currently used domain config | |
std::vector< plot_base_config * > | configs |
store one configuration per sub plot | |
cgv::render::view * | view_ptr |
std::vector< label_info > | tick_labels |
all tick labels | |
std::vector< label_info > | legend_tick_labels |
std::vector< tick_batch_info > | tick_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_info > | legend_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_array > | attribute_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 |
![]() | |
TraversePolicy | policy |
bool | active |
int | focus |
Additional Inherited Members | |
![]() | |
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 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 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 | |
The plot3d
class draws 2d plots with potentially several sub plots of different plot configuration.
cgv::plot::plot3d::plot3d | ( | unsigned | nr_attributes = 0 | ) |
construct 3d plot with given number of additional attributes and default parameters
Definition at line 66 of file plot3d.cxx.
References cgv::plot::domain_config::axis_configs, cgv::plot::domain_config::blend_width_in_pixel, cgv::render::surface_render_style::culling_mode, cgv::plot::plot_base::get_domain_config_ptr(), cgv::render::surface_render_style::illumination_mode, cgv::plot::plot_base::legend_location, cgv::render::surface_render_style::map_color_to_material, cgv::plot::plot_base::nr_attributes, and cgv::utils::to_string().
|
virtual |
add sub plot and return reference to samples
Implements cgv::plot::plot_base.
Definition at line 84 of file plot3d.cxx.
References cgv::plot::plot_base::attribute_source_arrays, cgv::plot::plot_base::configs, cgv::plot::plot_base::get_nr_sub_plots(), cgv::plot::plot_base_config::name, ref_sub_plot3d_config(), and cgv::plot::plot_base::ref_sub_plot_config().
|
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().
|
protected |
overloaded in derived classes to compute complete tick render information
Definition at line 16 of file plot3d.cxx.
|
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().
|
virtual |
create the gui for a subplot configuration
Reimplemented from cgv::plot::plot_base.
Definition at line 565 of file plot3d.cxx.
References cgv::gui::provider::add_member_control(), cgv::gui::provider::add_view(), cgv::gui::provider::align(), cgv::gui::provider::begin_tree_node(), cgv::plot::plot_base::create_config_gui(), cgv::gui::provider::end_tree_node(), cgv::plot::plot3d_config::face_illumination, ref_sub_plot3d_config(), cgv::plot::plot3d_config::samples_per_row, cgv::render::drawable::show(), cgv::plot::plot3d_config::show_surface, cgv::plot::plot3d_config::surface_color, and cgv::plot::plot3d_config::wireframe.
|
virtual |
create a gui for the plot with gui for all configs
Reimplemented from cgv::plot::plot_base.
Definition at line 582 of file plot3d.cxx.
References cgv::gui::provider::add_decorator(), cgv::gui::provider::add_gui(), cgv::gui::provider::align(), cgv::gui::provider::begin_tree_node(), cgv::plot::plot_base::create_gui(), and cgv::gui::provider::end_tree_node().
|
virtual |
create the gui for a line subplot
Reimplemented from cgv::plot::plot_base.
Definition at line 552 of file plot3d.cxx.
References cgv::gui::provider::add_member_control(), cgv::plot::plot_base::create_line_config_gui(), and cgv::plot::plot3d_config::show_line_orientation.
|
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.
|
virtual |
overload to draw the content of this drawable
Reimplemented from cgv::render::drawable.
Definition at line 504 of file plot3d.cxx.
References cgv::plot::plot_base::center_location, cgv::plot::plot_base::get_domain_config_ptr(), cgv::plot::plot_base::legend_components, cgv::render::context::mul_modelview_matrix(), cgv::plot::plot_base::orientation, cgv::render::context::pop_modelview_matrix(), cgv::plot::plot_base::prepare_extents(), cgv::render::context::push_modelview_matrix(), and cgv::math::quaternion< T >::put_homogeneous_matrix().
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.
|
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().
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().
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.
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.
|
protected |