Fawkes API  Fawkes Development Version
LaserDrawingArea Class Reference

Laser drawing area. More...

#include "laser_drawing_area.h"

List of all members.

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.

Detailed Description

Laser drawing area.

Derived version of Gtk::DrawingArea that renders values of a laser interface.

Author:
Tim Niemueller

Member Enumeration Documentation

Draw modes.

Enumerator:
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.


Constructor & Destructor Documentation

LaserDrawingArea::LaserDrawingArea ( )

Constructor.

Definition at line 90 of file laser_drawing_area.cpp.

References MODE_LINES, on_expose_event(), on_button_press_event(), and on_motion_notify_event().

LaserDrawingArea::~LaserDrawingArea ( )

Destructor.

Definition at line 123 of file laser_drawing_area.cpp.


Member Function Documentation

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.

Parameters:
windowGdk window
crCairo 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::Laser360Interface::distances(), fawkes::Laser720Interface::distances(), fawkes::Laser360Interface::maxlenof_distances(), fawkes::Laser720Interface::maxlenof_distances(), fawkes::Laser360Interface::is_clockwise_angle(), fawkes::Laser720Interface::is_clockwise_angle(), draw_scalebox(), MODE_LINES, fawkes::deg2rad(), 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

Parameters:
windowGdk window
crCairo 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 transform_coords_from_fawkes(), fawkes::Interface::has_writer(), fawkes::Interface::read(), fawkes::ObjectPositionInterface::is_valid(), fawkes::ObjectPositionInterface::relative_x(), and fawkes::ObjectPositionInterface::relative_y().

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.

Parameters:
windowGdk window
crCairo 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.

Parameters:
windowGdk window
crCairo 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::Laser360Interface::distances(), fawkes::Laser720Interface::distances(), fawkes::Laser720Interface::maxlenof_distances(), fawkes::Interface::has_writer(), fawkes::Interface::read(), MODE_POINTS, and fawkes::deg2rad().

Referenced by on_expose_event().

bool LaserDrawingArea::on_button_press_event ( GdkEventButton *  event) [protected, virtual]

Button press event handler.

Parameters:
eventevent data
Returns:
true

Definition at line 878 of file laser_drawing_area.cpp.

Referenced by LaserDrawingArea().

bool LaserDrawingArea::on_motion_notify_event ( GdkEventMotion *  event) [protected, virtual]

Mouse motion notify event handler.

Parameters:
eventevent data
Returns:
true

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.

Parameters:
eventevent structure
Returns:
signal return value

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.

Parameters:
modethe 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.

Parameters:
laser_iflaser 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.

Parameters:
laser_iflaser interface

Definition at line 171 of file laser_drawing_area.cpp.

void LaserDrawingArea::set_line_if ( fawkes::ObjectPositionInterface line_if)

Set line interface.

Parameters:
line_ifinterface 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.

Parameters:
l_objpos_if_personslist of objectposition interfaces for persons
l_objpos_if_legslist of objectposition interfaces for legs
l_objpos_if_misclist of objectposition interfaces for miscellanous objects
laser_segmentation_ifLaser interface indicating the segmentation-borfers of the legtracker
l_track_iflist of track interfaces
target_ifthe current target
switch_ifused 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.

Parameters:
resolutionnew resolution

Definition at line 237 of file laser_drawing_area.cpp.

void LaserDrawingArea::set_robot_drawer ( fawkes::CairoRobotDrawer robot_drawer)

Set robot drawer.

Parameters:
robot_drawernew robot drawer to use

Definition at line 227 of file laser_drawing_area.cpp.

void LaserDrawingArea::set_rotation ( float  rot_rad)

Set rotation.

Parameters:
rot_radrotation 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.

Parameters:
visdisp_ifinterface 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.

Parameters:
p_xinput x
p_yinput y
Returns:
the transformed position

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 on_scroll_event(), LaserGuiGtkWindow::LaserGuiGtkWindow(), and LaserGuiHildonWindow::LaserGuiHildonWindow().

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 on_scroll_event(), LaserGuiGtkWindow::LaserGuiGtkWindow(), and LaserGuiHildonWindow::LaserGuiHildonWindow().


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