#include "reflex/ruby/event.h" #include "rays/ruby/point.h" #include "defs.h" RUCY_DEFINE_VALUE_FROM_TO(Reflex::ScrollEvent) #define THIS to(self) #define CHECK RUCY_CHECK_OBJ(Reflex::ScrollEvent, self) static VALUE alloc(VALUE klass) { return new_type(klass); } static VALUE initialize(VALUE self) { CHECK; check_arg_count(__FILE__, __LINE__, "ScrollEvent#initialize", argc, 0, 1, 2, 3, 4, 5, 6); THIS->x = (argc >= 1) ? to(argv[0]) : 0; THIS->y = (argc >= 2) ? to(argv[1]) : 0; THIS->z = (argc >= 3) ? to(argv[2]) : 0; THIS->dx = (argc >= 4) ? to(argv[3]) : 0; THIS->dy = (argc >= 5) ? to(argv[4]) : 0; THIS->dz = (argc >= 6) ? to(argv[5]) : 0; return rb_call_super(0, NULL); } static VALUE initialize_copy(VALUE self, VALUE obj) { CHECK; *THIS = to(obj); return self; } static VALUE x(VALUE self) { CHECK; return value(THIS->x); } static VALUE y(VALUE self) { CHECK; return value(THIS->y); } static VALUE z(VALUE self) { CHECK; return value(THIS->z); } static VALUE dx(VALUE self) { CHECK; return value(THIS->dx); } static VALUE dy(VALUE self) { CHECK; return value(THIS->dy); } static VALUE dz(VALUE self) { CHECK; return value(THIS->dz); } static VALUE scroll(VALUE self) { CHECK; return value(Rays::Point(THIS->x, THIS->y, THIS->z)); } static VALUE delta(VALUE self) { CHECK; return value(Rays::Point(THIS->dx, THIS->dy, THIS->dz)); } static Class cScrollEvent; void Init_scroll_event () { Module mReflex = rb_define_module("Reflex"); cScrollEvent = mReflex.define_class("ScrollEvent", Reflex::event_class()); rb_define_alloc_func(cScrollEvent, alloc); rb_define_private_method(cScrollEvent, "initialize", RUBY_METHOD_FUNC(initialize), -1); rb_define_private_method(cScrollEvent, "initialize_copy", RUBY_METHOD_FUNC(initialize_copy), 1); rb_define_method(cScrollEvent, "x", RUBY_METHOD_FUNC(x), 0); rb_define_method(cScrollEvent, "y", RUBY_METHOD_FUNC(y), 0); rb_define_method(cScrollEvent, "z", RUBY_METHOD_FUNC(z), 0); rb_define_method(cScrollEvent, "dx", RUBY_METHOD_FUNC(dx), 0); rb_define_method(cScrollEvent, "dy", RUBY_METHOD_FUNC(dy), 0); rb_define_method(cScrollEvent, "dz", RUBY_METHOD_FUNC(dz), 0); rb_define_method(cScrollEvent, "scroll", RUBY_METHOD_FUNC(scroll), 0); rb_define_method(cScrollEvent, "delta", RUBY_METHOD_FUNC(delta), 0); } namespace Reflex { Class scroll_event_class () { return cScrollEvent; } }// Reflex