Laser drawing area. More...
#include "laser_drawing_area.h"
Public Types | |
| enum | draw_mode_t { MODE_LINES, MODE_POINTS, MODE_HULL } |
Draw modes. More... | |
Public Member Functions | |
| LaserDrawingArea () | |
| Constructor. | |
| ~LaserDrawingArea () | |
| Destructor. | |
| void | set_laser360_if (fawkes::Laser360Interface *laser_if) |
| Set 360 degree laser interface. | |
| void | set_laser720_if (fawkes::Laser720Interface *laser_if) |
| Set 720 degree laser interface. | |
| void | reset_laser_ifs () |
| Reset laser interfaces to "no laser available". | |
| void | set_objpos_if (std::list< fawkes::ObjectPositionInterface * > *l_objpos_if_persons, std::list< fawkes::ObjectPositionInterface * > *l_objpos_if_legs, std::list< fawkes::ObjectPositionInterface * > *l_objpos_if_misc, fawkes::Laser720Interface *laser_segmentation_if, std::list< fawkes::Position2DTrackInterface * > *l_track_if, fawkes::ObjectPositionInterface *target_if, fawkes::SwitchInterface *switch_if) |
| Set ObjectPosition interfaces. | |
| void | set_line_if (fawkes::ObjectPositionInterface *line_if) |
| Set line interface. | |
| void | set_visdisp_if (fawkes::VisualDisplay2DInterface *visdisp_if) |
| Set visual display interface. | |
| void | set_robot_drawer (fawkes::CairoRobotDrawer *robot_drawer) |
| Set robot drawer. | |
| void | set_resolution (unsigned int resolution) |
| Set resolution. | |
| void | zoom_in () |
| Zoom in. | |
| void | zoom_out () |
| Zoom out. | |
| void | set_rotation (float rot_rad) |
| Set rotation. | |
| void | set_draw_mode (draw_mode_t mode) |
| Set the drawing mode. | |
| void | toggle_break_drawing () |
| Set a member for breaking the drawing. | |
Protected Member Functions | |
| virtual bool | on_expose_event (GdkEventExpose *event) |
| Expose event handler. | |
| virtual bool | on_scroll_event (GdkEventScroll *event) |
| Scroll event handler. | |
| virtual bool | on_motion_notify_event (GdkEventMotion *event) |
| Mouse motion notify event handler. | |
| virtual bool | on_button_press_event (GdkEventButton *event) |
| Button press event handler. | |
| void | draw_beams (Glib::RefPtr< Gdk::Window > &window, Cairo::RefPtr< Cairo::Context > &cr) |
| Draw Beams. | |
| void | draw_segments (Glib::RefPtr< Gdk::Window > &window, Cairo::RefPtr< Cairo::Context > &cr) |
| Draw laser segments as produced by leg tracker application. | |
| void | draw_scalebox (Glib::RefPtr< Gdk::Window > &window, Cairo::RefPtr< Cairo::Context > &cr) |
| Draw scale box. | |
| void | draw_persons_legs (Glib::RefPtr< Gdk::Window > &window, Cairo::RefPtr< Cairo::Context > &cr) |
| Draw person legs. | |
| std::pair< float, float > | transform_coords_from_fawkes (float p_x, float p_y) |
| Transform a position from the fawkes coordinate system to the Cairo coordinate system. | |
Laser drawing area.
Derived version of Gtk::DrawingArea that renders values of a laser interface.
Definition at line 46 of file laser_drawing_area.h.
Draw modes.
| MODE_LINES |
Draw beams as lines. |
| MODE_POINTS |
Only draw beam end points. |
| MODE_HULL |
Draw hull of beams. |
Definition at line 51 of file laser_drawing_area.h.
| LaserDrawingArea::LaserDrawingArea | ( | ) |
Constructor.
Definition at line 90 of file laser_drawing_area.cpp.
References on_button_press_event(), on_expose_event(), and on_motion_notify_event().
| LaserDrawingArea::~LaserDrawingArea | ( | ) |
Destructor.
Definition at line 123 of file laser_drawing_area.cpp.
| void LaserDrawingArea::draw_beams | ( | Glib::RefPtr< Gdk::Window > & | window, | |
| Cairo::RefPtr< Cairo::Context > & | cr | |||
| ) | [protected] |
Draw Beams.
Draws the beams as lines, circles or hull, depending on draw mode.
| window | Gdk window | |
| cr | Cairo context to draw to. It is assumed that possible transformations have been setup before. |
Definition at line 427 of file laser_drawing_area.cpp.
References fawkes::deg2rad(), fawkes::Laser720Interface::distances(), fawkes::Laser360Interface::distances(), draw_scalebox(), fawkes::Laser720Interface::is_clockwise_angle(), fawkes::Laser360Interface::is_clockwise_angle(), fawkes::Laser720Interface::maxlenof_distances(), fawkes::Laser360Interface::maxlenof_distances(), MODE_LINES, MODE_POINTS, and fawkes::normalize_rad().
Referenced by on_expose_event().
| void LaserDrawingArea::draw_persons_legs | ( | Glib::RefPtr< Gdk::Window > & | window, | |
| Cairo::RefPtr< Cairo::Context > & | cr | |||
| ) | [protected] |
Draw person legs.
Draws the legs of persons
| window | Gdk window | |
| cr | Cairo context to draw to. It is assumed that possible transformations have been setup before. |
Definition at line 497 of file laser_drawing_area.cpp.
References fawkes::Interface::has_writer(), fawkes::ObjectPositionInterface::is_valid(), fawkes::Interface::read(), fawkes::ObjectPositionInterface::relative_x(), fawkes::ObjectPositionInterface::relative_y(), and transform_coords_from_fawkes().
Referenced by on_expose_event().
| void LaserDrawingArea::draw_scalebox | ( | Glib::RefPtr< Gdk::Window > & | window, | |
| Cairo::RefPtr< Cairo::Context > & | cr | |||
| ) | [protected] |
Draw scale box.
Draws a circle with a radius of 1m around the robot.
| window | Gdk window | |
| cr | Cairo context to draw to. It is assumed that possible transformations have been setup before. |
Definition at line 409 of file laser_drawing_area.cpp.
Referenced by draw_beams().
| void LaserDrawingArea::draw_segments | ( | Glib::RefPtr< Gdk::Window > & | window, | |
| Cairo::RefPtr< Cairo::Context > & | cr | |||
| ) | [protected] |
Draw laser segments as produced by leg tracker application.
| window | Gdk window | |
| cr | Cairo context to draw to. It is assumed that possible transformations have been setup before. |
Definition at line 791 of file laser_drawing_area.cpp.
References fawkes::deg2rad(), fawkes::Laser720Interface::distances(), fawkes::Laser360Interface::distances(), fawkes::Interface::has_writer(), fawkes::Laser720Interface::maxlenof_distances(), MODE_POINTS, and fawkes::Interface::read().
Referenced by on_expose_event().
| bool LaserDrawingArea::on_button_press_event | ( | GdkEventButton * | event | ) | [protected, virtual] |
Button press event handler.
| event | event data |
Definition at line 878 of file laser_drawing_area.cpp.
Referenced by LaserDrawingArea().
| bool LaserDrawingArea::on_expose_event | ( | GdkEventExpose * | event | ) | [protected, virtual] |
Expose event handler.
| event | event info structure. |
Definition at line 293 of file laser_drawing_area.cpp.
References VisualDisplay2D::draw(), draw_beams(), draw_persons_legs(), fawkes::CairoRobotDrawer::draw_robot(), draw_segments(), fawkes::Interface::has_writer(), fawkes::ObjectPositionInterface::is_valid(), fawkes::ObjectPositionInterface::is_visible(), fawkes::Interface::msgq_enqueue(), VisualDisplay2D::process_messages(), fawkes::Interface::read(), fawkes::ObjectPositionInterface::relative_x(), fawkes::ObjectPositionInterface::relative_y(), fawkes::ObjectPositionInterface::world_x(), and fawkes::ObjectPositionInterface::world_y().
Referenced by LaserDrawingArea().
| bool LaserDrawingArea::on_motion_notify_event | ( | GdkEventMotion * | event | ) | [protected, virtual] |
Mouse motion notify event handler.
| event | event data |
Definition at line 891 of file laser_drawing_area.cpp.
Referenced by LaserDrawingArea().
| bool LaserDrawingArea::on_scroll_event | ( | GdkEventScroll * | event | ) | [protected, virtual] |
Scroll event handler.
| event | event structure |
Definition at line 855 of file laser_drawing_area.cpp.
References zoom_in(), and zoom_out().
| void LaserDrawingArea::reset_laser_ifs | ( | ) |
Reset laser interfaces to "no laser available".
Definition at line 180 of file laser_drawing_area.cpp.
| void LaserDrawingArea::set_draw_mode | ( | draw_mode_t | mode | ) |
Set the drawing mode.
| mode | the new drawing mode |
Definition at line 247 of file laser_drawing_area.cpp.
Referenced by LaserGuiGtkWindow::LaserGuiGtkWindow(), and LaserGuiHildonWindow::LaserGuiHildonWindow().
| void LaserDrawingArea::set_laser360_if | ( | fawkes::Laser360Interface * | laser_if | ) |
Set 360 degree laser interface.
| laser_if | laser interface |
Definition at line 160 of file laser_drawing_area.cpp.
| void LaserDrawingArea::set_laser720_if | ( | fawkes::Laser720Interface * | laser_if | ) |
Set 720 degree laser interface.
| laser_if | laser interface |
Definition at line 171 of file laser_drawing_area.cpp.
| void LaserDrawingArea::set_line_if | ( | fawkes::ObjectPositionInterface * | line_if | ) |
Set line interface.
| line_if | interface to use for line data to draw. |
Definition at line 206 of file laser_drawing_area.cpp.
| void LaserDrawingArea::set_objpos_if | ( | std::list< fawkes::ObjectPositionInterface * > * | l_objpos_if_persons, | |
| std::list< fawkes::ObjectPositionInterface * > * | l_objpos_if_legs, | |||
| std::list< fawkes::ObjectPositionInterface * > * | l_objpos_if_misc, | |||
| fawkes::Laser720Interface * | laser_segmentation_if, | |||
| std::list< fawkes::Position2DTrackInterface * > * | l_track_if, | |||
| fawkes::ObjectPositionInterface * | target_if, | |||
| fawkes::SwitchInterface * | switch_if | |||
| ) |
Set ObjectPosition interfaces.
| l_objpos_if_persons | list of objectposition interfaces for persons | |
| l_objpos_if_legs | list of objectposition interfaces for legs | |
| l_objpos_if_misc | list of objectposition interfaces for miscellanous objects | |
| laser_segmentation_if | Laser interface indicating the segmentation-borfers of the legtracker | |
| l_track_if | list of track interfaces | |
| target_if | the current target | |
| switch_if | used to indicate that a drawing-run is finish (so e.g. new data can be sent) |
Definition at line 138 of file laser_drawing_area.cpp.
| void LaserDrawingArea::set_resolution | ( | unsigned int | resolution | ) |
Set resolution.
Every n'th beam will be drawn where n is the resolution.
| resolution | new resolution |
Definition at line 237 of file laser_drawing_area.cpp.
| void LaserDrawingArea::set_robot_drawer | ( | fawkes::CairoRobotDrawer * | robot_drawer | ) |
Set robot drawer.
| robot_drawer | new robot drawer to use |
Definition at line 227 of file laser_drawing_area.cpp.
| void LaserDrawingArea::set_rotation | ( | float | rot_rad | ) |
Set rotation.
| rot_rad | rotation angle in rad |
Definition at line 282 of file laser_drawing_area.cpp.
| void LaserDrawingArea::set_visdisp_if | ( | fawkes::VisualDisplay2DInterface * | visdisp_if | ) |
Set visual display interface.
| visdisp_if | interface to query for drawing ops |
Definition at line 216 of file laser_drawing_area.cpp.
References VisualDisplay2D::set_interface().
| void LaserDrawingArea::toggle_break_drawing | ( | ) |
Set a member for breaking the drawing.
Definition at line 867 of file laser_drawing_area.cpp.
| std::pair< float, float > LaserDrawingArea::transform_coords_from_fawkes | ( | float | p_x, | |
| float | p_y | |||
| ) | [protected] |
Transform a position from the fawkes coordinate system to the Cairo coordinate system.
| p_x | input x | |
| p_y | input y |
Definition at line 914 of file laser_drawing_area.cpp.
Referenced by draw_persons_legs().
| void LaserDrawingArea::zoom_in | ( | ) |
Zoom in.
Increases zoom factor by 20, no upper limit.
Definition at line 257 of file laser_drawing_area.cpp.
Referenced by LaserGuiGtkWindow::LaserGuiGtkWindow(), LaserGuiHildonWindow::LaserGuiHildonWindow(), and on_scroll_event().
| void LaserDrawingArea::zoom_out | ( | ) |
Zoom out.
Decreases zoom factor by 20 with a minimum of 1.
Definition at line 267 of file laser_drawing_area.cpp.
Referenced by LaserGuiGtkWindow::LaserGuiGtkWindow(), LaserGuiHildonWindow::LaserGuiHildonWindow(), and on_scroll_event().
1.7.1