#include <ButtonGroup.h>
Inheritance diagram for vrjGA::ButtonGroup:

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 () |
|
|
Definition at line 32 of file ButtonGroup.h. Referenced by 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 } |
|
|
Definition at line 46 of file ButtonGroup.cpp.
00047 {
00048 }
|
|
|
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 }
|
|
|
Definition at line 44 of file ButtonGroup.h.
00044 { return _down; }
|
|
|
Definition at line 47 of file ButtonGroup.h.
00047 { return _pressed; }
|
|
|
Definition at line 50 of file ButtonGroup.h.
00050 { return _released; }
|
|
|
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 }
|
|
|
Smart-pointer definitions.
|
1.3.5