I made some errors since I couldn't previously test compile my source. Anyway fixed now. Just gonna check runtime later too.

git-svn-id: https://sfml.svn.sourceforge.net/svnroot/sfml/branches/sfml2@1616 4e206d99-4929-0410-ac5d-dfc041789085
This commit is contained in:
groogy 2010-11-05 20:06:30 +00:00
parent 1279cb208c
commit e75c42869d

View File

@ -85,41 +85,50 @@ static void Event_Free( sf::Event *anObject )
delete anObject; delete anObject;
} }
#define EVENT_TYPE_ACCESSORS( a, b, conv1, conv2 ) \ #define AXIS2NUM( x ) INT2NUM( static_cast< int > ( x ) )
static VALUE a##Event_Get##b##( VALUE self ) \ #define NUM2AXIS( x ) static_cast< sf::Joy::Axis >( NUM2INT( x ) )
{ \
sf::Event::##a##Event * object = NULL; \ #define KEY2NUM( x ) INT2NUM( static_cast< int > ( x ) )
Data_Get_Struct( self, sf::Event::##a##Event, object ); \ #define NUM2KEY( x ) static_cast< sf::Key::Code >( NUM2INT( x ) )
return conv1##( object->##a##.##b ); \
} \ #define MOUSE2NUM( x ) INT2NUM( static_cast< int > ( x ) )
\ #define NUM2MOUSE( x ) static_cast< sf::Mouse::Button >( NUM2INT( x ) )
static VALUE a##Event_Set##b##( VALUE self, VALUE aVal ) \
{ \ #define EVENT_TYPE_ACCESSORS( a, b, conv1, conv2 ) \
sf::Event::##a##Event * object = NULL; \ static VALUE a##Event_Get##b ( VALUE self ) \
Data_Get_Struct( self, sf::Event::##a##Event, object ); \ { \
return conv1##( object->##a##.##b = conv2##( aVal ) ); \ sf::Event:: a##Event * object = NULL; \
Data_Get_Struct( self, sf::Event:: a##Event, object ); \
return conv1 ( object-> b ); \
} \
\
static VALUE a##Event_Set##b ( VALUE self, VALUE aVal ) \
{ \
sf::Event:: a##Event * object = NULL; \
Data_Get_Struct( self, sf::Event:: a##Event, object ); \
return conv1 ( object-> b = conv2 ( aVal ) ); \
} }
#define EVENT_TYÅE_BOOL_ACCESSORS( a, b ) \ #define EVENT_TYPE_BOOL_ACCESSORS( a, b ) \
static VALUE a##Event_Get##b##( VALUE self ) \ static VALUE a##Event_Get##b ( VALUE self ) \
{ \ { \
sf::Event::##a##Event * object = NULL; \ sf::Event:: a##Event * object = NULL; \
Data_Get_Struct( self, sf::Event::##a##Event, object ); \ Data_Get_Struct( self, sf::Event:: a##Event, object ); \
if( object->##a##.##b == true ) \ if( object-> b == true ) \
return Qtrue; \ return Qtrue; \
else \ else \
return Qfalse; \ return Qfalse; \
} \ } \
\ \
static VALUE a##Event_Set##b##( VALUE self, VALUE aVal ) \ static VALUE a##Event_Set##b ( VALUE self, VALUE aVal ) \
{ \ { \
sf::Event::##a##Event * object = NULL; \ sf::Event:: a##Event * object = NULL; \
Data_Get_Struct( self, sf::Event::##a##Event, object ); \ Data_Get_Struct( self, sf::Event:: a##Event, object ); \
if( aVal == Qtrue ) \ if( aVal == Qtrue ) \
object->##a##.##b = true; \ object-> b = true; \
else \ else \
object->##a##.##b = false; \ object-> b = false; \
return aVal; \ return aVal; \
} }
/*static VALUE JoyButtonEvent_GetJoystickId( VALUE self ) /*static VALUE JoyButtonEvent_GetJoystickId( VALUE self )
@ -140,15 +149,15 @@ EVENT_TYPE_ACCESSORS( JoyButton, JoystickId, INT2NUM, NUM2UINT );
EVENT_TYPE_ACCESSORS( JoyButton, Button, INT2NUM, NUM2UINT ); EVENT_TYPE_ACCESSORS( JoyButton, Button, INT2NUM, NUM2UINT );
EVENT_TYPE_ACCESSORS( JoyMove, JoystickId, INT2NUM, NUM2UINT ); EVENT_TYPE_ACCESSORS( JoyMove, JoystickId, INT2NUM, NUM2UINT );
EVENT_TYPE_ACCESSORS( JoyMove, Axis, INT2NUM, NUM2INT ); EVENT_TYPE_ACCESSORS( JoyMove, Axis, AXIS2NUM, NUM2AXIS );
EVENT_TYPE_ACCESSORS( JoyMove, Position, rb_float_new, NUM2DBL ); EVENT_TYPE_ACCESSORS( JoyMove, Position, rb_float_new, NUM2DBL );
EVENT_TYPE_ACCESSORS( Key, Code, INT2NUM, NUM2INT ); EVENT_TYPE_ACCESSORS( Key, Code, KEY2NUM, NUM2KEY );
EVENT_TYPE_BOOL_ACCESSORS( Key, Alt ); EVENT_TYPE_BOOL_ACCESSORS( Key, Alt );
EVENT_TYPE_BOOL_ACCESSORS( Key, Control ); EVENT_TYPE_BOOL_ACCESSORS( Key, Control );
EVENT_TYPE_BOOL_ACCESSORS( Key, Shift ); EVENT_TYPE_BOOL_ACCESSORS( Key, Shift );
EVENT_TYPE_ACCESSORS( MouseButton, Button, INT2NUM, NUM2INT ); EVENT_TYPE_ACCESSORS( MouseButton, Button, MOUSE2NUM, NUM2MOUSE );
EVENT_TYPE_ACCESSORS( MouseButton, X, INT2NUM, NUM2INT ); EVENT_TYPE_ACCESSORS( MouseButton, X, INT2NUM, NUM2INT );
EVENT_TYPE_ACCESSORS( MouseButton, Y, INT2NUM, NUM2INT ); EVENT_TYPE_ACCESSORS( MouseButton, Y, INT2NUM, NUM2INT );
@ -171,33 +180,33 @@ static VALUE Event_Initialize( VALUE self )
bool noSpecialType = false; bool noSpecialType = false;
VALUE eventType; VALUE eventType;
switch( self->Type ) switch( object->Type )
{ {
case JoyButtonPressed: case sf::Event::JoyButtonPressed:
case JoyButtonReleased: case sf::Event::JoyButtonReleased:
eventType = Data_Wrap_Struct( globalJoyButtonEventClass, 0, 0, &object->JoyButton ); eventType = Data_Wrap_Struct( globalJoyButtonEventClass, 0, 0, &object->JoyButton );
break; break;
case JoyMoved: case sf::Event::JoyMoved:
eventType = Data_Wrap_Struct( globalJoyMoveEventClass, 0, 0, &object->JoyMove ); eventType = Data_Wrap_Struct( globalJoyMoveEventClass, 0, 0, &object->JoyMove );
break; break;
case KeyPressed: case sf::Event::KeyPressed:
case KeyReleased: case sf::Event::KeyReleased:
eventType = Data_Wrap_Struct( globalKeyEventClass, 0, 0, &object->Key ); eventType = Data_Wrap_Struct( globalKeyEventClass, 0, 0, &object->Key );
break; break;
case MouseButtonPressed: case sf::Event::MouseButtonPressed:
case MouseButtonReleased: case sf::Event::MouseButtonReleased:
eventType = Data_Wrap_Struct( globalMouseButtonEventClass, 0, 0, &object->MouseButton ); eventType = Data_Wrap_Struct( globalMouseButtonEventClass, 0, 0, &object->MouseButton );
break; break;
case MouseMoved: case sf::Event::MouseMoved:
eventType = Data_Wrap_Struct( globalMouseMoveEventClass, 0, 0, &object->MouseMove ); eventType = Data_Wrap_Struct( globalMouseMoveEventClass, 0, 0, &object->MouseMove );
break; break;
case MouseWheelMoved: case sf::Event::MouseWheelMoved:
eventType = Data_Wrap_Struct( globalMouseWheelEventClass, 0, 0, &object->MouseWheel ); eventType = Data_Wrap_Struct( globalMouseWheelEventClass, 0, 0, &object->MouseWheel );
break; break;
case Resized: case sf::Event::Resized:
eventType = Data_Wrap_Struct( globalSizeEventClass, 0, 0, &object->Size ); eventType = Data_Wrap_Struct( globalSizeEventClass, 0, 0, &object->Size );
break; break;
case TextEntered: case sf::Event::TextEntered:
eventType = Data_Wrap_Struct( globalTextEventClass, 0, 0, &object->Text ); eventType = Data_Wrap_Struct( globalTextEventClass, 0, 0, &object->Text );
break; break;
default: default:
@ -226,11 +235,11 @@ static VALUE Event_New( VALUE aKlass )
void Init_Event( void ) void Init_Event( void )
{ {
globalEventClass = rb_define_class_under( GetNamespace(), "Event", rb_cObject ); globalEventClass = rb_define_class_under( GetNamespace(), "Event", rb_cObject );
globalJoyButtonEventClass = rb_define_class_under( globalEventClass, "JoyButton", rb_cObject ); globalJoyButtonEventClass = rb_define_class_under( globalEventClass, "JoyButton", rb_cObject );
globalJoyMoveEventClass = rb_define_class_under( globalEventClass, "JoyMove", rb_cObject ); globalJoyMoveEventClass = rb_define_class_under( globalEventClass, "JoyMove", rb_cObject );
globalKeyEventClass = rb_define_class_under( globalEventClass, "Key", rb_cObject ); globalKeyEventClass = rb_define_class_under( globalEventClass, "Key", rb_cObject );
globalMouseButtonEventClass = rb_define_class_under( globalEventClass, "MouseButton", rb_cObject ); globalMouseButtonEventClass = rb_define_class_under( globalEventClass, "MouseButton", rb_cObject );
globalMouseMoveEventClass = rb_define_class_under( globalEventClass, "MouseMove", rb_cObject ); globalMouseMoveEventClass = rb_define_class_under( globalEventClass, "MouseMove", rb_cObject );
globalMouseWheelEventClass = rb_define_class_under( globalEventClass, "MouseWheel", rb_cObject ); globalMouseWheelEventClass = rb_define_class_under( globalEventClass, "MouseWheel", rb_cObject );
globalSizeEventClass = rb_define_class_under( globalEventClass, "Size", rb_cObject ); globalSizeEventClass = rb_define_class_under( globalEventClass, "Size", rb_cObject );
@ -307,6 +316,6 @@ void Init_Event( void )
rb_define_method( globalSizeEventClass, "height=", FUNCPTR( SizeEvent_SetWidth ), 1 ); rb_define_method( globalSizeEventClass, "height=", FUNCPTR( SizeEvent_SetWidth ), 1 );
// Text methods // Text methods
rb_define_method( globalTextEventClass, "unicode", FUNCPTR( SizeEvent_GetUnicode ), 0 ); rb_define_method( globalTextEventClass, "unicode", FUNCPTR( TextEvent_GetUnicode ), 0 );
rb_define_method( globalTextEventClass, "unicode=", FUNCPTR( SizeEvent_SetUnicode ), 1 ) rb_define_method( globalTextEventClass, "unicode=", FUNCPTR( TextEvent_SetUnicode ), 1 );
} }