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:
parent
ae94135979
commit
3461df5eea
1 changed files with 8 additions and 5 deletions
|
@ -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);
|
||||
|
|
Loading…
Add table
Reference in a new issue