mirror of
https://github.com/ruby-opencv/ruby-opencv
synced 2023-03-27 23:22:12 -04:00
tested Trackbar
This commit is contained in:
parent
e3bf41ffd2
commit
4813ec29bc
3 changed files with 65 additions and 23 deletions
|
@ -9,7 +9,7 @@
|
||||||
************************************************************/
|
************************************************************/
|
||||||
#ifdef HAVE_CALLBACK_H
|
#ifdef HAVE_CALLBACK_H
|
||||||
|
|
||||||
#include"trackbar.h"
|
#include "trackbar.h"
|
||||||
/*
|
/*
|
||||||
* Document-class: OpenCV::GUI::Trackbar
|
* Document-class: OpenCV::GUI::Trackbar
|
||||||
*
|
*
|
||||||
|
@ -23,12 +23,12 @@ __NAMESPACE_BEGIN_TRACKBAR
|
||||||
|
|
||||||
VALUE rb_klass;
|
VALUE rb_klass;
|
||||||
|
|
||||||
VALUE rb_class(){
|
VALUE rb_class() {
|
||||||
return rb_klass;
|
return rb_klass;
|
||||||
}
|
}
|
||||||
|
|
||||||
void define_ruby_class(){
|
void define_ruby_class() {
|
||||||
if(rb_klass)
|
if (rb_klass)
|
||||||
return;
|
return;
|
||||||
/*
|
/*
|
||||||
* opencv = rb_define_module("OpenCV");
|
* opencv = rb_define_module("OpenCV");
|
||||||
|
@ -46,20 +46,15 @@ void define_ruby_class(){
|
||||||
rb_define_method(rb_klass, "value=", RUBY_METHOD_FUNC(rb_set_value), 1);
|
rb_define_method(rb_klass, "value=", RUBY_METHOD_FUNC(rb_set_value), 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
VALUE rb_allocate(VALUE klass){
|
VALUE rb_allocate(VALUE klass) {
|
||||||
Trackbar *ptr;
|
Trackbar *ptr;
|
||||||
return Data_Make_Struct(klass, Trackbar, mark, free, ptr);
|
return Data_Make_Struct(klass, Trackbar, trackbar_mark, 0, ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void mark(void *ptr){
|
void trackbar_mark(void *ptr) {
|
||||||
rb_gc_mark(((Trackbar*)ptr)->block);
|
rb_gc_mark(((Trackbar*)ptr)->block);
|
||||||
}
|
}
|
||||||
|
|
||||||
void free(void *ptr){
|
|
||||||
//::free(((Trackbar*)ptr)->name);
|
|
||||||
::free(ptr);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* call-seq:
|
* call-seq:
|
||||||
* new(<i>name,maxval[,val],&block</i>)
|
* new(<i>name,maxval[,val],&block</i>)
|
||||||
|
@ -70,10 +65,11 @@ void free(void *ptr){
|
||||||
* <i>maxval</i> and <i>val</i> should be Fixnum.
|
* <i>maxval</i> and <i>val</i> should be Fixnum.
|
||||||
* When Trackbar adjuster changed, block will be called.
|
* When Trackbar adjuster changed, block will be called.
|
||||||
*/
|
*/
|
||||||
VALUE rb_initialize(int argc, VALUE *argv, VALUE self){
|
VALUE rb_initialize(int argc, VALUE *argv, VALUE self) {
|
||||||
VALUE name, maxval, val, block;
|
VALUE name, maxval, val, block;
|
||||||
rb_scan_args(argc, argv, "21&", &name, &maxval, &val, &block);
|
rb_scan_args(argc, argv, "21&", &name, &maxval, &val, &block);
|
||||||
if(NIL_P(block)){rb_raise(rb_eArgError, "block not given.");}
|
if (NIL_P(block))
|
||||||
|
rb_raise(rb_eArgError, "block not given.");
|
||||||
Check_Type(name, T_STRING);
|
Check_Type(name, T_STRING);
|
||||||
Trackbar *trackbar = TRACKBAR(self);
|
Trackbar *trackbar = TRACKBAR(self);
|
||||||
trackbar->name = strcpy(ALLOC_N(char, RSTRING_LEN(name)), StringValueCStr(name));
|
trackbar->name = strcpy(ALLOC_N(char, RSTRING_LEN(name)), StringValueCStr(name));
|
||||||
|
@ -86,21 +82,21 @@ VALUE rb_initialize(int argc, VALUE *argv, VALUE self){
|
||||||
/*
|
/*
|
||||||
* Return trackbar name.
|
* Return trackbar name.
|
||||||
*/
|
*/
|
||||||
VALUE rb_name(VALUE self){
|
VALUE rb_name(VALUE self) {
|
||||||
return rb_str_new2(TRACKBAR(self)->name);
|
return rb_str_new2(TRACKBAR(self)->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Return the maximum value that can be taken this trackbar.
|
* Return the maximum value that can be taken this trackbar.
|
||||||
*/
|
*/
|
||||||
VALUE rb_max(VALUE self){
|
VALUE rb_max(VALUE self) {
|
||||||
return INT2FIX(TRACKBAR(self)->maxval);
|
return INT2FIX(TRACKBAR(self)->maxval);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Return the value of this trackbar.
|
* Return the value of this trackbar.
|
||||||
*/
|
*/
|
||||||
VALUE rb_value(VALUE self){
|
VALUE rb_value(VALUE self) {
|
||||||
return INT2FIX(TRACKBAR(self)->val);
|
return INT2FIX(TRACKBAR(self)->val);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -110,7 +106,7 @@ VALUE rb_value(VALUE self){
|
||||||
*
|
*
|
||||||
* Set trackbar value.
|
* Set trackbar value.
|
||||||
*/
|
*/
|
||||||
VALUE rb_set_value(VALUE self, VALUE val){
|
VALUE rb_set_value(VALUE self, VALUE val) {
|
||||||
TRACKBAR(self)->val = NUM2INT(val);
|
TRACKBAR(self)->val = NUM2INT(val);
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,12 +24,12 @@
|
||||||
__NAMESPACE_BEGIN_OPENCV
|
__NAMESPACE_BEGIN_OPENCV
|
||||||
__NAMESPACE_BEGIN_GUI
|
__NAMESPACE_BEGIN_GUI
|
||||||
|
|
||||||
typedef struct Trackbar{
|
typedef struct Trackbar {
|
||||||
char *name;
|
char *name;
|
||||||
int maxval;
|
int maxval;
|
||||||
int val;
|
int val;
|
||||||
VALUE block;
|
VALUE block;
|
||||||
}Trackbar;
|
} Trackbar;
|
||||||
|
|
||||||
__NAMESPACE_BEGIN_TRACKBAR
|
__NAMESPACE_BEGIN_TRACKBAR
|
||||||
|
|
||||||
|
@ -38,8 +38,7 @@ VALUE rb_class();
|
||||||
void define_ruby_class();
|
void define_ruby_class();
|
||||||
VALUE rb_allocate(VALUE klass);
|
VALUE rb_allocate(VALUE klass);
|
||||||
|
|
||||||
void mark(void *ptr);
|
void trackbar_mark(void *ptr);
|
||||||
void free(void *ptr);
|
|
||||||
|
|
||||||
VALUE rb_initialize(int argc, VALUE *argv, VALUE self);
|
VALUE rb_initialize(int argc, VALUE *argv, VALUE self);
|
||||||
VALUE rb_name(VALUE self);
|
VALUE rb_name(VALUE self);
|
||||||
|
@ -50,7 +49,7 @@ VALUE rb_set_value(VALUE self, VALUE val);
|
||||||
__NAMESPACE_END_TRACKBAR
|
__NAMESPACE_END_TRACKBAR
|
||||||
|
|
||||||
|
|
||||||
inline Trackbar *TRACKBAR(VALUE object){
|
inline Trackbar *TRACKBAR(VALUE object) {
|
||||||
Trackbar *ptr;
|
Trackbar *ptr;
|
||||||
Data_Get_Struct(object, Trackbar, ptr);
|
Data_Get_Struct(object, Trackbar, ptr);
|
||||||
return ptr;
|
return ptr;
|
||||||
|
|
47
test/test_trackbar.rb
Executable file
47
test/test_trackbar.rb
Executable file
|
@ -0,0 +1,47 @@
|
||||||
|
#!/usr/bin/env ruby
|
||||||
|
# -*- mode: ruby; coding: utf-8-unix -*-
|
||||||
|
require 'test/unit'
|
||||||
|
require 'opencv'
|
||||||
|
require File.expand_path(File.dirname(__FILE__)) + '/helper'
|
||||||
|
|
||||||
|
include OpenCV
|
||||||
|
include GUI
|
||||||
|
|
||||||
|
# Tests for OpenCV::Trackbar
|
||||||
|
class TestTrackbar < OpenCVTestCase
|
||||||
|
def setup
|
||||||
|
@trackbar1 = Trackbar.new('trackbar1', 100) {}
|
||||||
|
@trackbar2 = Trackbar.new('trackbar1', 100, 1) {}
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_initialize
|
||||||
|
assert_not_nil(Trackbar.new('trackbar', 100, 1) {})
|
||||||
|
assert_not_nil(Trackbar.new('trackbar', 100) {})
|
||||||
|
block = proc {}
|
||||||
|
assert_not_nil(Trackbar.new('trackbar', 100, 1, &block))
|
||||||
|
assert_not_nil(Trackbar.new('trackbar', 100, &block))
|
||||||
|
|
||||||
|
assert_raise(TypeError) {
|
||||||
|
Trackbar.new(123, 100, 1) {}
|
||||||
|
}
|
||||||
|
assert_raise(ArgumentError) {
|
||||||
|
Trackbar.new('trackbar', 100, 1)
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_name
|
||||||
|
assert_equal('trackbar1', @trackbar1.name)
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_max
|
||||||
|
assert_equal(100, @trackbar1.max)
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_value
|
||||||
|
assert_equal(0, @trackbar1.value)
|
||||||
|
assert_equal(1, @trackbar2.value)
|
||||||
|
@trackbar1.value = 50
|
||||||
|
assert_equal(50, @trackbar1.value)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue