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

fixed a bug of CvFont (about italic font setting), added CvFont#italic and its tests

This commit is contained in:
ser1zw 2011-01-11 03:17:38 +09:00
parent 2ed3220989
commit 908d208ea9
3 changed files with 16 additions and 2 deletions

View file

@ -65,6 +65,7 @@ define_ruby_class()
rb_define_method(rb_klass, "shear", RUBY_METHOD_FUNC(rb_shear), 0);
rb_define_method(rb_klass, "thickness", RUBY_METHOD_FUNC(rb_thickness), 0);
rb_define_method(rb_klass, "line_type", RUBY_METHOD_FUNC(rb_line_type), 0);
rb_define_method(rb_klass, "italic", RUBY_METHOD_FUNC(rb_italic), 0);
}
VALUE
@ -175,5 +176,11 @@ rb_line_type(VALUE self)
return INT2FIX(CVFONT(self)->line_type);
}
VALUE
rb_italic(VALUE self)
{
return ((CVFONT(self)->font_face & CV_FONT_ITALIC) > 0) ? Qtrue : Qfalse;
}
__NAMESPACE_END_CVFONT
__NAMESPACE_END_OPENCV

View file

@ -19,7 +19,7 @@ __NAMESPACE_BEGIN_OPENCV
__NAMESPACE_BEGIN_CVFONT
#define FONT_OPTION(op) NIL_P(op) ? rb_const_get(rb_class(), rb_intern("FONT_OPTION")) : rb_funcall(rb_const_get(rb_class(), rb_intern("FONT_OPTION")), rb_intern("merge"), 1, font_option)
#define FO_ITALIC(op) ({VALUE _italic = rb_hash_aref(op, ID2SYM(rb_intern("italic"))); NIL_P(_italic) ? 0 : _italic == Qfalse ? 0 : 1;})
#define FO_ITALIC(op) ({VALUE _italic = rb_hash_aref(op, ID2SYM(rb_intern("italic"))); NIL_P(_italic) ? 0 : _italic == Qfalse ? 0 : CV_FONT_ITALIC;})
#define FO_HSCALE(op) NUM2DBL(rb_hash_aref(op, ID2SYM(rb_intern("hscale"))))
#define FO_VSCALE(op) NUM2DBL(rb_hash_aref(op, ID2SYM(rb_intern("vscale"))))
#define FO_SHEAR(op) NUM2DBL(rb_hash_aref(op, ID2SYM(rb_intern("shear"))))
@ -40,6 +40,7 @@ VALUE rb_vscale(VALUE self);
VALUE rb_shear(VALUE self);
VALUE rb_thickness(VALUE self);
VALUE rb_line_type(VALUE self);
VALUE rb_italic(VALUE self);
__NAMESPACE_END_CVFONT

View file

@ -34,15 +34,21 @@ class TestCvFont < OpenCVTestCase
assert_equal(0, font.shear)
assert_equal(1, font.thickness)
assert_equal(8, font.line_type)
assert(!font.italic)
font = CvFont.new(:plain, :hscale => 2.5, :vscale => 3.5,
:shear => 0.5, :thickness => 3, :line_type => 2)
:shear => 0.5, :thickness => 3, :line_type => 2, :italic => false)
assert_equal(1, font.face)
assert_equal(2.5, font.hscale)
assert_equal(3.5, font.vscale)
assert_equal(0.5, font.shear)
assert_equal(3, font.thickness)
assert_equal(2, font.line_type)
assert(!font.italic)
font = CvFont.new(:simplex, :italic => true)
assert_equal(16, font.face)
assert(font.italic)
assert_raise(ArgumentError) {
CvFont.new(:foo)