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

Definition at line 46 of file laser_drawing_area.h.


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_button_press_event(), on_expose_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:
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

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

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

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

Parameters:
event event data
Returns:
true

Definition at line 878 of file laser_drawing_area.cpp.

Referenced by LaserDrawingArea().

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

Mouse motion notify event handler.

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

Referenced by LaserGuiGtkWindow::on_disconnect().

void LaserDrawingArea::set_draw_mode ( draw_mode_t  mode  ) 

Set the drawing mode.

Parameters:
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  ) 
void LaserDrawingArea::set_laser720_if ( fawkes::Laser720Interface laser_if  ) 

Set 720 degree laser interface.

Parameters:
laser_if laser interface

Definition at line 171 of file laser_drawing_area.cpp.

Referenced by LaserGuiGtkWindow::on_connect(), and LaserGuiGtkWindow::on_resolution_toggled().

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

Set line interface.

Parameters:
line_if interface to use for line data to draw.

Definition at line 206 of file laser_drawing_area.cpp.

Referenced by LaserGuiGtkWindow::on_connect(), and LaserGuiGtkWindow::on_disconnect().

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_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.

Referenced by LaserGuiGtkWindow::on_legtracker_toggled().

void LaserDrawingArea::set_resolution ( unsigned int  resolution  ) 

Set resolution.

Every n'th beam will be drawn where n is the resolution.

Parameters:
resolution new resolution

Definition at line 237 of file laser_drawing_area.cpp.

Referenced by LaserGuiHildonWindow::on_resolution_toggled(), and LaserGuiGtkWindow::on_trimvals_toggled().

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

Set robot drawer.

Parameters:
robot_drawer new robot drawer to use

Definition at line 227 of file laser_drawing_area.cpp.

Referenced by LaserGuiGtkWindow::LaserGuiGtkWindow(), and LaserGuiHildonWindow::LaserGuiHildonWindow().

void LaserDrawingArea::set_rotation ( float  rot_rad  ) 

Set rotation.

Parameters:
rot_rad rotation angle in rad

Definition at line 282 of file laser_drawing_area.cpp.

Referenced by LaserGuiHildonWindow::on_rotation_toggled(), and LaserGuiGtkWindow::on_rotation_toggled().

void LaserDrawingArea::set_visdisp_if ( fawkes::VisualDisplay2DInterface visdisp_if  ) 

Set visual display interface.

Parameters:
visdisp_if interface to query for drawing ops

Definition at line 216 of file laser_drawing_area.cpp.

References VisualDisplay2D::set_interface().

Referenced by LaserGuiGtkWindow::on_connect(), and LaserGuiGtkWindow::on_disconnect().

void LaserDrawingArea::toggle_break_drawing (  ) 

Set a member for breaking the drawing.

Definition at line 867 of file laser_drawing_area.cpp.

Referenced by LaserGuiGtkWindow::on_stop_toggled().

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_x input x
p_y input 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 LaserGuiGtkWindow::LaserGuiGtkWindow(), LaserGuiHildonWindow::LaserGuiHildonWindow(), LaserGuiHildonWindow::on_key_pressed(), 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(), LaserGuiHildonWindow::on_key_pressed(), and on_scroll_event().


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

Generated on 1 Mar 2011 for Fawkes API by  doxygen 1.6.1