#include "reflex/ruby/shape.h" #include "defs.h" RUCY_DEFINE_WRAPPER_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::EllipseShape) #define THIS to(self) #define CHECK RUCY_CHECK_OBJ(Reflex::EllipseShape, self) #define CALL(fun) RUCY_CALL_SUPER(THIS, fun) static VALUE alloc(VALUE klass) { return value(new Reflex::RubyShape, klass); } static VALUE set_angle_from(VALUE self, VALUE degree) { CHECK; THIS->set_angle_from(to(degree)); return self; } static VALUE get_angle_from(VALUE self) { CHECK; return value(THIS->angle_from()); } static VALUE set_angle_to(VALUE self, VALUE degree) { CHECK; THIS->set_angle_to(to(degree)); return self; } static VALUE get_angle_to(VALUE self) { CHECK; return value(THIS->angle_to()); } static VALUE set_hole_size(VALUE self) { CHECK; check_arg_count(__FILE__, __LINE__, "EllipseShape#set_hole_size", argc, 1, 2, 3); THIS->set_hole_size(to(argc, argv)); return value(THIS->hole_size()); } static VALUE get_hole_size(VALUE self) { CHECK; return value(THIS->hole_size()); } static VALUE set_nsegment(VALUE self, VALUE nsegment) { CHECK; THIS->set_nsegment(to(nsegment)); return nsegment; } static VALUE get_nsegment(VALUE self) { CHECK; return value(THIS->nsegment()); } static Class cEllipseShape; void Init_reflex_ellipse_shape () { Module mReflex = rb_define_module("Reflex"); cEllipseShape = mReflex.define_class("EllipseShape", Reflex::shape_class()); rb_define_alloc_func(cEllipseShape, alloc); rb_define_method(cEllipseShape, "angle_from=", RUBY_METHOD_FUNC(set_angle_from), 1); rb_define_method(cEllipseShape, "angle_from", RUBY_METHOD_FUNC(get_angle_from), 0); rb_define_method(cEllipseShape, "angle_to=", RUBY_METHOD_FUNC(set_angle_to), 1); rb_define_method(cEllipseShape, "angle_to", RUBY_METHOD_FUNC(get_angle_to), 0); rb_define_method(cEllipseShape, "hole_size=", RUBY_METHOD_FUNC(set_hole_size), -1); rb_define_method(cEllipseShape, "hole_size", RUBY_METHOD_FUNC(get_hole_size), 0); rb_define_method(cEllipseShape, "nsegment=", RUBY_METHOD_FUNC(set_nsegment), 1); rb_define_method(cEllipseShape, "nsegment", RUBY_METHOD_FUNC(get_nsegment), 0); } namespace Reflex { Class ellipse_shape_class () { return cEllipseShape; } }// Reflex