00001 #include "ViewController.h"
00002 #include "Property.h"
00003
00004 namespace RenderTools{
00005
00006 unsigned int ViewController::s_majorVersion = 1;
00007 unsigned int ViewController::s_minorVersion = 0;
00008 DeviceName ViewController::s_deviceName = DEVICENAME_UNKNOWN;
00009 ViewControllerWeakList ViewController::s_instances;
00010
00011 ViewController::ViewController( void ):
00012 AbstractPropertyContainer(),
00013 m_width( 400 ),
00014 m_height( 400 ),
00015 m_timer( false ),
00016 m_timerMillisec( 0 ),
00017 m_show( false ){
00018
00019 }
00020
00021 PropertyPtr ViewController::create( const XMLNodePtr & xml ){
00022 ViewControllerPtr p( new ViewController() );
00023 p->setName( xml );
00024 p->createProperties();
00025 p->setProperties( xml, false );
00026 return( dynamic_pointer_cast< AbstractProperty, ViewController >( p ) );
00027 }
00028
00029 void ViewController::createProperties( void ){
00030 AbstractPropertyContainer::createProperties();
00031
00032 s_instances.push_back( getSharedPtr< ViewController >() );
00033
00034 createProperty( this, "width", & m_width );
00035 createProperty( this, "height", & m_height );
00036 }
00037
00038 const string ViewController::getTypeName( bool ofComponent ) const {
00039 return( "ViewController" );
00040 }
00041
00042 ViewController::~ViewController( void ){
00043 for( unsigned int i = 0; i < s_instances.size(); i++ ){
00044 if( s_instances[ i ].lock() == getSharedPtr< ViewController >() ){
00045 s_instances[ i ] = s_instances[ s_instances.size() - 1 ];
00046 s_instances.pop_back();
00047 break;
00048 }
00049 }
00050 }
00051
00052 void ViewController::onViewControllerEvent( const ViewControllerEvent & e ){
00053 switch( e.getType() ){
00054 case ViewControllerEvent::CLOSE:
00055 case ViewControllerEvent::HIDE:
00056 case ViewControllerEvent::RESIZE:
00057 case ViewControllerEvent::SHOW:
00058 case ViewControllerEvent::TIMER:
00059 case ViewControllerEvent::TIMER_START:
00060 case ViewControllerEvent::TIMER_STOP:
00061 break;
00062 }
00063 }
00064
00065 void ViewController::onInitialize( void ){
00066 setSize( m_width, m_height );
00067 }
00068
00069 void ViewController::onRender( void ){
00070
00071 }
00072
00073
00074 void ViewController::sendViewControllerEvent( const ViewControllerEvent & e ){
00075 onViewControllerEvent( e );
00076 }
00077
00078 void ViewController::show( bool state ){
00079 m_show = state;
00080 sendViewControllerEvent( ViewControllerEvent( state ? ViewControllerEvent::SHOW : ViewControllerEvent::HIDE ) );
00081 }
00082
00083 void ViewController::startTimer( unsigned int millisec ){
00084 m_timer = true;
00085 m_timerMillisec = millisec;
00086 sendViewControllerEvent( ViewControllerEvent( ViewControllerEvent::TIMER_START ) );
00087 }
00088
00089 void ViewController::stopTimer( void ){
00090 m_timer = false;
00091 sendViewControllerEvent( ViewControllerEvent( ViewControllerEvent::TIMER_STOP ) );
00092 }
00093
00094 bool ViewController::getTimer( void ) const {
00095 return( m_timer );
00096 }
00097
00098 unsigned int ViewController::getTimerMillisec( void ) const {
00099 return( m_timerMillisec );
00100 }
00101
00102 bool ViewController::getShow( void ) const {
00103 return( m_show );
00104 }
00105
00106 const ViewControllerWeakList & ViewController::getViewControllers( void ){
00107 return( s_instances );
00108 }
00109
00110 void ViewController::setSize( unsigned int width, unsigned int height ){
00111 m_width = width;
00112 m_height = height;
00113
00114 vector< float > values;
00115 values.push_back( width );
00116 values.push_back( height );
00117 sendViewControllerEvent( ViewControllerEvent( ViewControllerEvent::RESIZE, getSharedPtr< ViewController >(), values ) );
00118 }
00119
00120 const Vec2 ViewController::getSize( void ) const {
00121 return( Vec2( m_width, m_height ) );
00122 }
00123
00124 unsigned int ViewController::getMajorVersion( void ){
00125 return( s_majorVersion );
00126 }
00127
00128 unsigned int ViewController::getMinorVersion( void ){
00129 return( s_minorVersion );
00130 }
00131
00132 DeviceName ViewController::getDeviceName( void ){
00133 return( s_deviceName );
00134 }
00135
00136 void ViewController::setMajorVersion( unsigned int v ){
00137 s_majorVersion = v;
00138 }
00139
00140 void ViewController::setMinorVersion( unsigned int v ){
00141 s_minorVersion = v;
00142 }
00143
00144 void ViewController::setDeviceName( DeviceName v ){
00145 s_deviceName = v;
00146 }
00147
00148 };