/* * call-seq: * new -> CvPoint.new(0, 0) * new(obj) -> CvPoint.new(obj.x.to_i, obj.y.to_i) * new(x, y) * * Create new 2D-coordinate, (x, y). It is dropped below the decimal point. * * new() is same as new(0, 0) * * new(obj) is same as new(obj.x.to_i, obj.y.to_i) */ VALUE rb_initialize(int argc, VALUE *argv, VALUE self) { CvPoint* self_ptr = CVPOINT(self); switch (argc) { case 0: break; case 1: { CvPoint point = VALUE_TO_CVPOINT(argv[0]); self_ptr->x = point.x; self_ptr->y = point.y; break; } case 2: self_ptr->x = NUM2INT(argv[0]); self_ptr->y = NUM2INT(argv[1]); break; default: rb_raise(rb_eArgError, "wrong number of arguments (%d for 0..2)", argc); break; } return self; }
/* * call-seq: * origin = point -> self * * Set Freeman chain code origin. */ VALUE rb_set_origin(VALUE self, VALUE origin) { CVCHAIN(self)->origin = VALUE_TO_CVPOINT(origin); return self; }