.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
{