Fawkes API Fawkes Development Version
|
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 MODE_LINES, 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().