.doc/ext/rays/camera.cpp in rays-0.1.16 vs .doc/ext/rays/camera.cpp in rays-0.1.17

- old
+ new

@@ -17,15 +17,18 @@ { return new_type<Rays::Camera>(klass); } static -VALUE initialize(VALUE self) +VALUE setup(VALUE self, VALUE device_name, VALUE min_width, VALUE min_height, VALUE resize, VALUE crop) { RUCY_CHECK_OBJ(Rays::Camera, self); - *THIS = Rays::Camera(); + *THIS = Rays::Camera( + device_name ? to<const char*>(device_name) : NULL, + to<int>(min_width), to<int>(min_height), + to<bool>(resize), to<bool>(crop)); return self; } static VALUE start(VALUE self) @@ -47,31 +50,111 @@ CHECK; return value(THIS->is_active()); } static +VALUE set_min_width(VALUE self, VALUE width) +{ + CHECK; + THIS->set_min_width(to<int>(width)); + return value(THIS->min_width()); +} + +static +VALUE min_width(VALUE self) +{ + CHECK; + return value(THIS->min_width()); +} + +static +VALUE set_min_height(VALUE self, VALUE height) +{ + CHECK; + THIS->set_min_height(to<int>(height)); + return value(THIS->min_height()); +} + +static +VALUE min_height(VALUE self) +{ + CHECK; + return value(THIS->min_height()); +} + +static +VALUE set_resize(VALUE self, VALUE resize) +{ + CHECK; + THIS->set_resize(to<bool>(resize)); + return value(THIS->is_resize()); +} + +static +VALUE is_resize(VALUE self) +{ + CHECK; + return value(THIS->is_resize()); +} + +static +VALUE set_crop(VALUE self, VALUE crop) +{ + CHECK; + THIS->set_crop(to<bool>(crop)); + return value(THIS->is_crop()); +} + +static +VALUE is_crop(VALUE self) +{ + CHECK; + return value(THIS->is_crop()); +} + +static VALUE image(VALUE self) { CHECK; const Rays::Image* img = THIS->image(); return img ? value(*img) : nil(); } +static +VALUE device_names(VALUE self) +{ + auto names = Rays::get_camera_device_names(); + std::vector<Value> v; + for (auto it = names.begin(), end = names.end(); it != end; ++it) + v.emplace_back(value(it->c_str())); + return value(v.size(), &v[0]); +} + + static Class cCamera; void Init_camera () { Module mRays = rb_define_module("Rays"); cCamera = rb_define_class_under(mRays, "Camera", rb_cObject); rb_define_alloc_func(cCamera, alloc); - rb_define_private_method(cCamera, "initialize", RUBY_METHOD_FUNC(initialize), -1); + rb_define_private_method(cCamera, "setup", RUBY_METHOD_FUNC(setup), 5); rb_define_method(cCamera, "start", RUBY_METHOD_FUNC(start), 0); rb_define_method(cCamera, "stop", RUBY_METHOD_FUNC(stop), 0); cCamera.define_method("active?", is_active); + rb_define_method(cCamera, "min_width=", RUBY_METHOD_FUNC(set_min_width), 1); + rb_define_method(cCamera, "min_width", RUBY_METHOD_FUNC(min_width), 0); + rb_define_method(cCamera, "min_height=", RUBY_METHOD_FUNC(set_min_height), 1); + rb_define_method(cCamera, "min_height", RUBY_METHOD_FUNC(min_height), 0); + rb_define_method(cCamera, "resize=", RUBY_METHOD_FUNC(set_resize), 1); + cCamera.define_method("resize?", is_resize); + rb_define_method(cCamera, "crop=", RUBY_METHOD_FUNC(set_crop), 1); + cCamera.define_method("crop?", is_crop); rb_define_method(cCamera, "image", RUBY_METHOD_FUNC(image), 0); + rb_define_module_function(cCamera, "device_names", RUBY_METHOD_FUNC(device_names), 0); } namespace Rays {