Main Page | Namespace List | Class Hierarchy | Class List | File List | Namespace Members | Class Members | File Members

vrjGA::ButtonGroup Class Reference

#include <ButtonGroup.h>

Inheritance diagram for vrjGA::ButtonGroup:

vrjGA::Referenced List of all members.

Public Types

typedef Referenced BaseClass

Public Member Functions

 VRJGA_DECLARE_POINTER (ButtonGroup)
 Smart-pointer definitions.

 ButtonGroup ()
void add (ButtonDevice *)
unsigned long down () const
unsigned long pressed () const
unsigned long released () const
void update ()

Protected Member Functions

virtual ~ButtonGroup ()

Member Typedef Documentation

typedef Referenced vrjGA::ButtonGroup::BaseClass
 

Definition at line 32 of file ButtonGroup.h.

Referenced by ButtonGroup().


Constructor & Destructor Documentation

ButtonGroup::ButtonGroup  ) 
 

Definition at line 31 of file ButtonGroup.cpp.

References BaseClass.

00031                          : BaseClass(),
00032   _buttons  (),
00033   _down     ( 0 ),
00034   _pressed  ( 0 ),
00035   _released ( 0 )
00036 {
00037 }

ButtonGroup::~ButtonGroup  )  [protected, virtual]
 

Definition at line 46 of file ButtonGroup.cpp.

00047 {
00048 }


Member Function Documentation

void ButtonGroup::add ButtonDevice  ) 
 

Definition at line 123 of file ButtonGroup.cpp.

References vrjGA::ButtonDevice::mask().

00124 {
00125   // Only valid pointers.
00126   if ( 0x0 == b )
00127     throw std::invalid_argument ( "Error 3629364095: Null pointer." );
00128 
00129   // See if another button with the same mask is already in the group.
00130   if ( _buttons.end() != std::find_if ( _buttons.begin(), _buttons.end(), Detail::SameMask ( b->mask() ) ) )
00131   {
00132     std::ostringstream message;
00133     message << "Error 1927963521: Button mask value of " 
00134             << b->mask()
00135             << " is already in the button group.";
00136     throw std::runtime_error ( message.str() );
00137   }
00138 
00139   // Add the new button device.
00140   _buttons.push_back ( b );
00141 }

unsigned long vrjGA::ButtonGroup::down  )  const [inline]
 

Definition at line 44 of file ButtonGroup.h.

00044 { return _down; }

unsigned long vrjGA::ButtonGroup::pressed  )  const [inline]
 

Definition at line 47 of file ButtonGroup.h.

00047 { return _pressed; }

unsigned long vrjGA::ButtonGroup::released  )  const [inline]
 

Definition at line 50 of file ButtonGroup.h.

00050 { return _released; }

void ButtonGroup::update  ) 
 

Definition at line 57 of file ButtonGroup.cpp.

00058 {
00059   // Initialize.
00060   _down = _pressed = _released = 0;
00061 
00062   // Loop though the buttons.
00063   for ( Buttons::size_type i = 0; i < _buttons.size(); ++i )
00064   {
00065     // Get the digital interface.
00066     Buttons::value_type &button = _buttons.at ( i );
00067 
00068     // Query the button's state.
00069     switch ( button->state() )
00070     {
00071       case gadget::Digital::ON:
00072         _down |= button->mask();
00073         break;
00074       case gadget::Digital::OFF:
00075         break;
00076       case gadget::Digital::TOGGLE_ON:
00077         _pressed |= button->mask();
00078         break;
00079       case gadget::Digital::TOGGLE_OFF:
00080         _released |= button->mask();
00081         break;
00082       default:
00083       {
00084         std::ostringstream message;
00085         message << "Error 2194534052: unknown state of digital interface: " << button->state();
00086         throw std::logic_error ( message.str() );
00087       }
00088     }
00089   }
00090 }

vrjGA::ButtonGroup::VRJGA_DECLARE_POINTER ButtonGroup   ) 
 

Smart-pointer definitions.


The documentation for this class was generated from the following files:
Generated on Thu Aug 12 16:42:14 2004 for vrjGA by doxygen 1.3.5