1
0
Fork 0
mirror of https://github.com/ruby-opencv/ruby-opencv synced 2023-03-27 23:22:12 -04:00

fix CvChain for enabling to call CvSeq's methods

This commit is contained in:
ser1zw 2012-08-20 19:42:34 +09:00
parent ae94135979
commit 3461df5eea

View file

@ -67,8 +67,7 @@ define_ruby_class()
VALUE
rb_allocate(VALUE klass)
{
CvChain *ptr;
return Data_Make_Struct(klass, CvChain, 0, 0, ptr);
return Data_Wrap_Struct(klass, mark_root_object, unregister_object, NULL);
}
VALUE
@ -84,11 +83,15 @@ rb_initialize(int argc, VALUE *argv, VALUE self)
storage = rb_cvCreateMemStorage(0);
try {
DATA_PTR(self) = (CvChain*)cvCreateSeq(CV_SEQ_ELTYPE_CODE, sizeof(CvChain),
sizeof(char), storage);
sizeof(int), storage);
}
catch (cv::Exception& e) {
raise_cverror(e);
}
CvSeq* self_ptr = CVSEQ(self);
cCvSeq::register_elem_class(self_ptr, rb_cFixnum);
register_root_object(self_ptr, storage_value);
return self;
}
@ -134,7 +137,7 @@ rb_codes(VALUE self)
cvStartReadChainPoints(chain, &reader);
for (int i = 0; i < total; ++i) {
CV_READ_SEQ_ELEM(reader.code, (*((CvSeqReader*)&(reader))));
rb_ary_store(ary, i, CHR2FIX(reader.code));
rb_ary_store(ary, i, INT2FIX(reader.code));
}
}
catch (cv::Exception& e) {
@ -218,7 +221,7 @@ new_object()
VALUE storage = cCvMemStorage::new_object();
CvSeq *seq = NULL;
try {
seq = cvCreateSeq(CV_SEQ_CHAIN_CONTOUR, sizeof(CvChain), sizeof(char), CVMEMSTORAGE(storage));
seq = cvCreateSeq(CV_SEQ_CHAIN_CONTOUR, sizeof(CvChain), sizeof(int), CVMEMSTORAGE(storage));
}
catch (cv::Exception& e) {
raise_cverror(e);