cgv
Loading...
Searching...
No Matches
cgv::overlay::navigator Class Reference
Inheritance diagram for cgv::overlay::navigator:
cgv::overlay::overlay cgv::base::node cgv::render::drawable cgv::gui::provider cgv::gui::event_handler cgv::base::named cgv::base::traverse_policy cgv::base::traverse_policy cgv::base::base cgv::data::ref_counted cgv::reflect::self_reflection_tag

Public Member Functions

std::string get_type_name () const
 overload to return the type name of this object
void clear (cgv::render::context &ctx)
 clear all objects living in the context like textures or display lists
bool self_reflect (cgv::reflect::reflection_handler &_rh)
 overload to reflect members of derived classes
void stream_help (std::ostream &os)
 overload to stream help information to the given output stream
bool handle_mouse_event (cgv::gui::mouse_event &e, cgv::ivec2 local_mouse_pos)
 overload this method to handle mouse events; local_mouse_pos is the mouse position in the local coordinate space of the overlay rectangle
void on_set (void *member_ptr)
 default implementation of that calls handle_member_change and afterwards updates the member in the gui and post a redraw
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 init_frame (cgv::render::context &ctx)
 this method is called in one pass over all drawables before the draw method
void finish_draw (cgv::render::context &ctx)
 this method is called when the current drawable is left in a tree traversal that calls the draw method
void set_size (int size)
Public Member Functions inherited from cgv::overlay::overlay
virtual bool handle (cgv::gui::event &e)
 handle incomming events; calls handle_key_events or handle_mouse_events depending on the event type; mouse events will only be handled if the mouse is over the overlay rectangle
virtual bool handle_key_event (cgv::gui::key_event &e)
 overload this method to handle key events
virtual void handle_member_change (cgv::data::informed_ptr ptr)
 implement to handle member changes
bool blocks_events () const
 return whether this overlay blocks events, i.e. does not pass them to the next event handler
void blocks_events (bool flag)
 set whether the overlay blocks events
ivec2 get_viewport_size () const
 return the current viewport size
virtual ivec2 get_local_mouse_pos (ivec2 mouse_pos) const
 return the mouse position local to the container of this overlay
cgv::g2d::irect get_rectangle () const
 return the current rectangle area (in screen coordinates) of the overlay taking layout into account
cgv::g2d::irect get_local_rectangle () const
 return the current rectangle area of the overlay in local space, i.e. with position set to zero
Alignment get_horizontal_alignment () const
 get the horizontal alignment
Alignment get_vertical_alignment () const
 get the vertical alignment
vec2 get_percentual_offset () const
 get the percentual alignment offset (only valid if get_horizontal_alignment() or get_vertical_alignment() returns AlignmentOption::kPercentual)
void set_alignment (Alignment horizontal, Alignment vertical, vec2 percentual_offset=vec2(-1.0f))
 set the alignment
StretchMode get_stretch_mode () const
 get the stretch
vec2 get_percentual_size () const
 get the percentual stretch (only valid if get_stretch_mode() returns StretchMode::kPercentual)
void set_stretch_mode (StretchMode stretch, vec2 percentual_size=vec2(-1.0f))
 set the stretch mode
ivec2 get_margin () const
 return the margin as set in the layout parameters
void set_margin (const ivec2 &margin)
 set the overlay margin
void set_size (const ivec2 &size)
 set the default size of the overlay before stretch gets applied
void set_visibility (bool visible)
 set the visibility of the overlay
void toggle_visibility ()
 toggle the visibility of the overlay
bool ensure_viewport (cgv::render::context &ctx)
 Check whether the viewport size has changed since the last call to this method.
bool ensure_layout (cgv::render::context &ctx)
virtual bool is_hit (const ivec2 &mouse_pos) const
 Test if the mouse pointer is hovering over this overlay and returns true if this is the case.
bool begin_overlay_gui ()
 begins a tree node if create default tree node is set in the gui options; automatically creates the layout gui
void end_overlay_gui ()
 ends the tree node of the overlay gui
void create_layout_gui ()
 provides a default gui implementation for private overlay layout members
void create_gui ()
 Creates a tree node containing the overlay layout options and the gui as specified by the derived overlay class.
Public Member Functions inherited from cgv::base::node
 node (const std::string &name="")
 construct from name
node_ptr get_parent () const
 return the parent node
base_ptr get_root () const
 return the root node by traversing parents until no more parent is available
void set_parent (node_ptr _parent)
 set a new parent node
node_ptr get_node () override
 cast upward to node
const_node_ptr get_node_const () const override
 cast upward to const node
Public Member Functions inherited from cgv::base::named
 named (const std::string &name="")
 construct from name
const std::string & get_name () const
 return the parent node
void set_name (const std::string &_name)
 set a new parent node
named_ptr get_named () override
 cast upward to named
const_named_ptr get_named_const () const override
 cast upward to const named
Public Member Functions inherited from cgv::base::base
virtual std::string get_default_options () const
 overload to provide default options for registration
std::string get_name_or_type_name () const
 determine name of instance by checking cgv::base::named interface and in failure fallback to get_type_name()
virtual void on_register ()
 overload to handle register events that is sent after the instance has been registered
virtual void unregister ()
 overload to handle unregistration of instances
virtual bool on_exit_request ()
 overload to handle the appication exit request, return true if exiting is allowed and false otherwise
virtual void stream_stats (std::ostream &)
 overload to show the content of this object
virtual data::ref_ptr< group, true > get_group ()
 perform downcast to group
virtual data::ref_ptr< const group, true > get_group_const () const
 perform downcast to const group
template<class T>
data::ref_ptr< T, true > cast ()
 cast to arbitrary class, but use the casts to named, node and group from the interface
template<class T>
data::ref_ptr< const T, true > cast_const () const
 const cast to arbitrary class, but use the casts to named, node and group from the interface
template<class T>
T * get_interface ()
 use dynamic type cast to check for the given interface
template<class T>
const T * get_const_interface () const
 use dynamic type cast to check for the given interface
virtual void update ()
 this virtual update allows for example to ask a view to update the viewed value. The default implementation is empty.
virtual void * get_user_data () const
 this virtual method allows to pass application specific data for internal purposes
virtual std::string get_property_declarations ()
 return a semicolon separated list of property declarations
virtual bool set_void (const std::string &property, const std::string &value_type, const void *value_ptr)
 abstract interface for the setter of a dynamic property.
virtual bool get_void (const std::string &property, const std::string &value_type, void *value_ptr)
 abstract interface for the getter of a dynamic property.
virtual bool call_void (const std::string &method, const std::vector< std::string > &param_value_types, const std::vector< const void * > &param_value_ptrs, const std::string &result_type="", void *result_value_ptr=0)
 abstract interface to call an action
void set (const std::string &property, const char *value)
 specialization of set method to support const char* as strings
template<typename T>
void set (const std::string &property, const T &value)
 set a property of the element to the given value and perform standard conversions if necessary.
template<typename T>
T get (const std::string &property)
 query a property of the element and perform standard conversions if necessary.
void multi_set (const std::string &property_assignments, bool report_error=true)
 set several properties
bool is_property (const std::string &property_name, std::string *type_name=0)
 check if the given name specifies a property.
void * find_member_ptr (const std::string &property_name, std::string *type_name=0)
 find a member pointer by name.
Public Member Functions inherited from cgv::data::ref_counted
int get_ref_count () const
 read access to current count
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
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)
cgv::ray3 get_world_ray (int x, int y, view *view_ptr, const cgv::dmat4 &modelview_projection_window_matrix) const
 compute ray from eye of given view_ptr through pixel at given mouse location (x,y) according to given modelview projection window matrix
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 draw (context &)
 overload to draw the content of this drawable
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
virtual void destruct (context &) final
 do not use destruct for a drawable but clear!!
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
Public Member Functions inherited from cgv::gui::provider
void remove_element (cgv::base::base_ptr)
 remove a single element from the gui
void remove_all_elements ()
 this method removes all elements from the gui and can be used in a method that rebuilds the complete gui
cgv::base::base_ptr find_element (const std::string &name)
 find a gui element by name in the current group, return empty pointer if not found
template<typename T>
data::ref_ptr< view< T > > find_view (const T &value, int *idx_ptr=0)
 find a view of a given class member
template<typename T>
data::ref_ptr< control< T > > find_control (T &value, int *idx_ptr=0)
 find a control of a given class member
control_ptr find_control_void (void *value_ptr, int *idx_ptr)
 access to control of untyped member pointer
view_ptr find_view_void (void *value_ptr, int *idx_ptr)
 access to view of untyped member pointer
template<typename T>
void set_control_property (T &value, const std::string &property_name, const std::string &property_value)
 Set the property value of all controls of a given class member.
gui_group_ptr get_parent_group () const
 use the parent group to append to be managed elements that should be destroyed in a post_recreate_gui event
view_ptr add_view_void (const std::string &label, const void *value_ptr, const std::string &value_type, const std::string &gui_type, const std::string &options, const std::string &align)
 add a newly created view to the group
control_ptr add_control_void (const std::string &label, void *value_ptr, abst_control_provider *acp, const std::string &value_type, const std::string &gui_type, const std::string &options, const std::string &align, void *user_data)
 add a newly created control to the group
 provider ()
 default construction
 ~provider ()
 ensure to remove posted recreation callbacks
virtual std::string get_gui_name () const
 Derive a name for this instance that can be used in the gui as heading.
virtual std::string get_parent_type () const
 Returns the group type that should be used by the class embedding the gui of the provider.
virtual bool ensure_selected_in_tab_group_parent ()
 ensure that my UI is selected in the parent group in case this is a tab group, otherwise return false
virtual void update_member (void *member_ptr)
 call this to update all views and controls of a member
virtual void update_all_members ()
 call this to update all views and controls of all member
virtual std::string get_menu_path () const
 return a path in the main menu to select the gui
virtual shortcut get_shortcut () const
 return a shortcut to activate the gui without menu navigation
virtual void recreate_gui ()
 Recreate the gui of this instance right now.
virtual void post_recreate_gui ()
 delayed recreation of gui
void align (const std::string &_align)
 send pure alignment information
std::string concat_enum_def (const std::vector< std::string > &names, const std::string &additional_first_name="", const std::string &additional_last_name="")
 add a new group to the given parent group, not supported yet
gui_group_ptr add_object_gui (cgv::base::base_ptr object, const std::string &label, const std::string &group_type, const std::string &options, const std::string &align)
void integrate_object_gui (cgv::base::base_ptr object)
 call this in create_gui() function to integrate gui of another provider object by setting the parent group and parent provider of the other object
void inline_object_gui (cgv::base::base_ptr object)
 integrate (if not explicitly done before) and inline the gui of another object that must be derived from provider
gui_group_ptr add_group (const std::string &label, const std::string &group_type, const std::string &options="", const std::string &align="\n")
 add a newly created subgroup to the group
cgv::base::base_ptr add_decorator (const std::string &label, const std::string &decorator_type, const std::string &options="", const std::string &align="\n")
 add a newly created decorator to the group
button_ptr add_button (const std::string &label, const std::string &options="", const std::string &align="\n")
 use the current gui driver to append a new button with the given label
template<typename T>
data::ref_ptr< view< T > > add_view (const std::string &label, const T &value, const std::string &gui_type="", const std::string &options="", const std::string &align="\n")
 use this to add a new view to the gui with a given value type, gui type and init options
template<typename T>
data::ref_ptr< control< T > > add_control (const std::string &label, T &value, const std::string &gui_type="", const std::string &options="", const std::string &align="\n")
 use this to add a new control to the gui with a given value type, gui type and init options
template<typename T>
data::ref_ptr< control< T > > add_control (const std::string &label, control_provider< T > *provider, const std::string &gui_type="", const std::string &options="", const std::string &align="\n", void *user_data=0)
 use this to add a new control to the gui, where the control is implemented with a control provider class
template<typename T>
data::ref_ptr< control< T > > add_member_control (cgv::base::base *base_ptr, const std::string &label, T &value, const std::string &gui_type="", const std::string &options="", const std::string &align="\n")
 add control with callback to cgv::base::on_set method on cgv::gui::control::value_change
bool add_tree_node (const std::string &label, bool &toggle, int level, const std::string &a="\n", gui_group_ptr ggp=gui_group_ptr())
 add a collapsable node to the gui (deprecated)
template<typename T>
bool begin_tree_node (const std::string &label, const T &value, bool initial_visibility=false, const std::string &options="", gui_group_ptr ggp=gui_group_ptr())
 Begin a sub tree of a tree structured gui.
template<typename T>
void end_tree_node (const T &value)
 template specialization that allows to specify value reference plus node_instance by using the result of the function with_instance(value,idx) for the value argument finish a sub tree begun with begin_tree_node
template<typename T>
bool is_tree_node_visible (const T &value) const
 return whether the sub tree attached to a value is visible
template<typename T>
void set_tree_node_visibility (const T &value, bool is_visible)
 set the visibility status of sub tree attached to a value. This calls the post_recreate method if needed.
bool begin_tree_node_void (const std::string &label, const void *value_ptr, int index=-1, bool initial_visibility=false, const std::string &options="", gui_group_ptr ggp=gui_group_ptr())
 void version of the templated functions
void end_tree_node_void (const void *value_ptr, int index=-1)
bool is_tree_node_visible_void (const void *value_ptr, int index) const
void set_tree_node_visibility_void (const void *value_ptr, int index, bool is_visible)
template<typename T>
bool add_gui (const std::string &label, T &value, const std::string &gui_type="", const std::string &options="")
 Add a composed gui of the given gui_type for the given value.
Public Member Functions inherited from cgv::gui::event_handler
 event_handler ()
 default construction
bool grab_focus ()
 grab the focus in all parent nodes
bool add_key_control (const std::string &property, const std::string &options, cgv::base::group_ptr group=cgv::base::group_ptr())
 add a key control for the given property with the given options.

Protected Member Functions

mat4 get_model_matrix (cgv::render::context &ctx)
mat4 get_view_matrix (cgv::render::context &ctx)
mat4 get_projection_matrix ()
bool intersect_box (const vec3 &origin, const vec3 &direction, float &t) const
virtual void create_gui_impl ()
 virtual method to implement the derived class gui creation
Protected Member Functions inherited from cgv::overlay::overlay
virtual void on_visibility_change ()
 called when the overlay visibility is changed through the default gui
virtual void on_layout_change ()
 called when the overlay layout parameters are changed through the default gui
void update_layout ()
 update the layout of the overlay container
Protected Member Functions inherited from cgv::base::base
virtual ~base ()
 make destructor virtual and not accessible from outside
Protected Member Functions inherited from cgv::data::ref_counted
 ref_counted ()
 constructor initializes the count to 0
void set_ref_count (int c) const
 write access is also const to allow ref counted pointers to const instances
void set_parent (gui_group_ptr)
 the gui window sets the parent group through this method
void update_parent ()
 update the parent group
virtual void on_select ()
 called by selection_change_cb whenever the gui of this provider is selected
virtual void on_deselect ()
 called by selection_change_cb whenever the gui of this provider is deselected
virtual void selection_change_cb (cgv::base::base_ptr new_child, bool selected)
 this is called by the gui group when the selection changes

Protected Attributes

cgv::render::view * view_ptr
vec3 navigator_eye_pos
double check_for_click
cgv::render::managed_frame_buffer fbc
cgv::g2d::canvas blit_canvas
cgv::g2d::shape2d_style blit_style
int layout_size
bool show_box
bool show_wireframe
bool use_perspective
int hit_axis
cgv::render::arrow_render_data arrow_data
cgv::render::box_renderer box_renderer
cgv::render::box_render_data box_data
cgv::render::box_wire_render_data box_wire_data
cgv::render::rectangle_render_data rectangle_data
cgv::render::sphere_render_data sphere_data
Protected Attributes inherited from cgv::base::node
node_ptr parent
 store a pointer to the parent node
Protected Attributes inherited from cgv::base::named
std::string name
 store the name as a string
Protected Attributes inherited from cgv::base::traverse_policy
TraversePolicy policy
bool active
int focus
gui_group_ptr parent_group
 driver specific handle for the group gui element managing the gui built in the provider
provider * parent_provider

Additional Inherited Members

template<typename T>
static bool & ref_tree_node_visible_flag (const T &value)
 return a reference to the boolean flag, that tells whether the tree node for the passed value is visible
static bool & ref_tree_node_visible_flag_void (const void *value_ptr, int index=-1)
Public Attributes inherited from cgv::overlay::overlay
gui_options_t gui_options
 options for the GUI creation of this overlay (must be set before GUI creation)
Static Protected Member Functions inherited from cgv::base::base
template<class T>
static data::ref_ptr< T, true > cast_dynamic (base *b)
 use dynamic cast for downcast to given class

Detailed Description

Definition at line 22 of file navigator.h.

Constructor & Destructor Documentation

◆ navigator()

cgv::overlay::navigator::navigator ( )

Definition at line 14 of file navigator.cxx.

Member Function Documentation

◆ clear()

void cgv::overlay::navigator::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 67 of file navigator.cxx.

◆ create_gui_impl()

void cgv::overlay::navigator::create_gui_impl ( )
protectedvirtual

virtual method to implement the derived class gui creation

Reimplemented from cgv::overlay::overlay.

Definition at line 329 of file navigator.cxx.

References cgv::gui::provider::add_member_control().

◆ finish_draw()

void cgv::overlay::navigator::finish_draw ( cgv::render::context & )
virtual

this method is called when the current drawable is left in a tree traversal that calls the draw method

Reimplemented from cgv::render::drawable.

Definition at line 251 of file navigator.cxx.

References cgv::overlay::overlay::get_rectangle().

◆ get_model_matrix()

mat4 cgv::overlay::navigator::get_model_matrix ( cgv::render::context & ctx)
protected

Definition at line 337 of file navigator.cxx.

◆ get_projection_matrix()

mat4 cgv::overlay::navigator::get_projection_matrix ( )
protected

Definition at line 354 of file navigator.cxx.

◆ get_type_name()

std::string cgv::overlay::navigator::get_type_name ( ) const
inlinevirtual

overload to return the type name of this object

Reimplemented from cgv::base::node.

Definition at line 58 of file navigator.h.

◆ get_view_matrix()

mat4 cgv::overlay::navigator::get_view_matrix ( cgv::render::context & ctx)
protected

Definition at line 349 of file navigator.cxx.

◆ handle_mouse_event()

bool cgv::overlay::navigator::handle_mouse_event ( cgv::gui::mouse_event & e,
cgv::ivec2 local_mouse_pos )
virtual

◆ init()

bool cgv::overlay::navigator::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 189 of file navigator.cxx.

References cgv::overlay::overlay::get_rectangle().

◆ init_frame()

void cgv::overlay::navigator::init_frame ( cgv::render::context & )
virtual

this method is called in one pass over all drawables before the draw method

Reimplemented from cgv::render::drawable.

Definition at line 238 of file navigator.cxx.

References cgv::render::drawable::find_view_as_node(), cgv::overlay::overlay::get_rectangle(), and cgv::overlay::overlay::get_viewport_size().

◆ intersect_box()

bool cgv::overlay::navigator::intersect_box ( const vec3 & origin,
const vec3 & direction,
float & t ) const
protected

Definition at line 365 of file navigator.cxx.

◆ on_set()

void cgv::overlay::navigator::on_set ( void * member_ptr)
virtual

default implementation of that calls handle_member_change and afterwards updates the member in the gui and post a redraw

Reimplemented from cgv::overlay::overlay.

Definition at line 178 of file navigator.cxx.

References cgv::render::drawable::post_redraw(), cgv::overlay::overlay::set_size(), and cgv::gui::provider::update_member().

◆ self_reflect()

bool cgv::overlay::navigator::self_reflect ( cgv::reflect::reflection_handler & _rh)
virtual

overload to reflect members of derived classes

Reimplemented from cgv::overlay::overlay.

Definition at line 81 of file navigator.cxx.

References cgv::reflect::reflection_handler::reflect_member().

◆ set_size()

void cgv::overlay::navigator::set_size ( int size)

Definition at line 323 of file navigator.cxx.

◆ stream_help()

void cgv::overlay::navigator::stream_help ( std::ostream & os)
inlinevirtual

overload to stream help information to the given output stream

Reimplemented from cgv::overlay::overlay.

Definition at line 63 of file navigator.h.

Member Data Documentation

◆ arrow_data

cgv::render::arrow_render_data cgv::overlay::navigator::arrow_data
protected

Definition at line 40 of file navigator.h.

◆ blit_canvas

cgv::g2d::canvas cgv::overlay::navigator::blit_canvas
protected

Definition at line 31 of file navigator.h.

◆ blit_style

cgv::g2d::shape2d_style cgv::overlay::navigator::blit_style
protected

Definition at line 32 of file navigator.h.

◆ box_data

cgv::render::box_render_data cgv::overlay::navigator::box_data
protected

Definition at line 43 of file navigator.h.

◆ box_renderer

cgv::render::box_renderer cgv::overlay::navigator::box_renderer
protected

Definition at line 42 of file navigator.h.

◆ box_wire_data

cgv::render::box_wire_render_data cgv::overlay::navigator::box_wire_data
protected

Definition at line 45 of file navigator.h.

◆ check_for_click

double cgv::overlay::navigator::check_for_click
protected

Definition at line 27 of file navigator.h.

◆ fbc

cgv::render::managed_frame_buffer cgv::overlay::navigator::fbc
protected

Definition at line 29 of file navigator.h.

◆ hit_axis

int cgv::overlay::navigator::hit_axis
protected

Definition at line 38 of file navigator.h.

◆ layout_size

int cgv::overlay::navigator::layout_size
protected

Definition at line 34 of file navigator.h.

◆ navigator_eye_pos

vec3 cgv::overlay::navigator::navigator_eye_pos
protected

Definition at line 25 of file navigator.h.

◆ rectangle_data

cgv::render::rectangle_render_data cgv::overlay::navigator::rectangle_data
protected

Definition at line 46 of file navigator.h.

◆ show_box

bool cgv::overlay::navigator::show_box
protected

Definition at line 35 of file navigator.h.

◆ show_wireframe

bool cgv::overlay::navigator::show_wireframe
protected

Definition at line 36 of file navigator.h.

◆ sphere_data

cgv::render::sphere_render_data cgv::overlay::navigator::sphere_data
protected

Definition at line 47 of file navigator.h.

◆ use_perspective

bool cgv::overlay::navigator::use_perspective
protected

Definition at line 37 of file navigator.h.

◆ view_ptr

cgv::render::view* cgv::overlay::navigator::view_ptr
protected

Definition at line 24 of file navigator.h.


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