ruby-opencv 0.0.9-x86-mswin32 → 0.0.10.pre-x86-mswin32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/History.txt +5 -5
- data/README.md +1 -1
- data/examples/contours/contour_retrieval_modes.rb +139 -139
- data/examples/face_detect.rb +20 -20
- data/examples/houghcircle.rb +22 -22
- data/examples/paint.rb +70 -70
- data/examples/snake.rb +43 -43
- data/ext/opencv/cvcondensation.cpp +282 -282
- data/ext/opencv/cvcondensation.h +49 -49
- data/ext/opencv/cvmat.cpp +6 -6
- data/ext/opencv/cvmatnd.cpp +44 -44
- data/ext/opencv/cvmatnd.h +28 -28
- data/ext/opencv/cvmemstorage.cpp +68 -68
- data/ext/opencv/cvmemstorage.h +53 -53
- data/ext/opencv/cvmoments.h +75 -75
- data/ext/opencv/cvpoint.h +64 -64
- data/ext/opencv/cvpoint2d32f.h +63 -63
- data/ext/opencv/cvpoint3d32f.h +66 -66
- data/ext/opencv/cvrect.h +79 -79
- data/ext/opencv/cvscalar.h +71 -71
- data/ext/opencv/cvsize.h +65 -65
- data/ext/opencv/cvsize2d32f.h +64 -64
- data/ext/opencv/cvslice.h +61 -61
- data/ext/opencv/cvsparsemat.cpp +44 -44
- data/ext/opencv/cvsparsemat.h +28 -28
- data/ext/opencv/cvsurfparams.h +58 -58
- data/ext/opencv/cvsurfpoint.h +52 -52
- data/ext/opencv/cvtermcriteria.h +71 -71
- data/ext/opencv/cvtwopoints.cpp +116 -116
- data/ext/opencv/cvtwopoints.h +51 -51
- data/ext/opencv/cvvideowriter.h +43 -43
- data/ext/opencv/gui.cpp +68 -68
- data/ext/opencv/gui.h +30 -30
- data/ext/opencv/iplconvkernel.h +71 -71
- data/ext/opencv/mouseevent.cpp +181 -181
- data/ext/opencv/mouseevent.h +56 -56
- data/ext/opencv/opencv.cpp +5 -0
- data/ext/opencv/trackbar.h +69 -69
- data/ext/opencv/window.h +66 -66
- data/lib/opencv/version.rb +1 -1
- data/ruby-opencv.gemspec +7 -7
- data/test/test_cvmat_imageprocessing.rb +15 -25
- data/test/test_opencv.rb +7 -2
- metadata +7 -7
data/ext/opencv/cvvideowriter.h
CHANGED
@@ -1,43 +1,43 @@
|
|
1
|
-
/************************************************************
|
2
|
-
|
3
|
-
cvvideowriter.h -
|
4
|
-
|
5
|
-
$Author: lsxi $
|
6
|
-
|
7
|
-
Copyright (C) 2005-2006 Masakazu Yonekura
|
8
|
-
|
9
|
-
************************************************************/
|
10
|
-
#ifndef RUBY_OPENCV_CVVIDEOWRITER_H
|
11
|
-
#define RUBY_OPENCV_CVVIDEOWRITER_H
|
12
|
-
|
13
|
-
#include "opencv.h"
|
14
|
-
|
15
|
-
#define __NAMESPACE_BEGIN_CVVIDEOWRITER namespace cCvVideoWriter {
|
16
|
-
#define __NAMESPACE_END_CVVIDEOWRITER }
|
17
|
-
|
18
|
-
__NAMESPACE_BEGIN_OPENCV
|
19
|
-
__NAMESPACE_BEGIN_CVVIDEOWRITER
|
20
|
-
|
21
|
-
VALUE rb_class();
|
22
|
-
|
23
|
-
void define_ruby_class();
|
24
|
-
|
25
|
-
VALUE rb_initialize(int argc, VALUE *argv, VALUE self);
|
26
|
-
VALUE rb_write(VALUE self, VALUE frame);
|
27
|
-
VALUE rb_close(VALUE self);
|
28
|
-
|
29
|
-
__NAMESPACE_END_CVVIDEOWRITER
|
30
|
-
|
31
|
-
inline CvVideoWriter*
|
32
|
-
CVVIDEOWRITER(VALUE object)
|
33
|
-
{
|
34
|
-
// CvVideoWriter is
|
35
|
-
// CvVideoWriter *ptr;
|
36
|
-
// Data_Get_Struct(object, CvVideoWriter, ptr);
|
37
|
-
// return ptr;
|
38
|
-
return (CvVideoWriter*)DATA_PTR(object);
|
39
|
-
}
|
40
|
-
|
41
|
-
__NAMESPACE_END_OPENCV
|
42
|
-
|
43
|
-
#endif // RUBY_OPENCV_CVVIDEOWRITER_H
|
1
|
+
/************************************************************
|
2
|
+
|
3
|
+
cvvideowriter.h -
|
4
|
+
|
5
|
+
$Author: lsxi $
|
6
|
+
|
7
|
+
Copyright (C) 2005-2006 Masakazu Yonekura
|
8
|
+
|
9
|
+
************************************************************/
|
10
|
+
#ifndef RUBY_OPENCV_CVVIDEOWRITER_H
|
11
|
+
#define RUBY_OPENCV_CVVIDEOWRITER_H
|
12
|
+
|
13
|
+
#include "opencv.h"
|
14
|
+
|
15
|
+
#define __NAMESPACE_BEGIN_CVVIDEOWRITER namespace cCvVideoWriter {
|
16
|
+
#define __NAMESPACE_END_CVVIDEOWRITER }
|
17
|
+
|
18
|
+
__NAMESPACE_BEGIN_OPENCV
|
19
|
+
__NAMESPACE_BEGIN_CVVIDEOWRITER
|
20
|
+
|
21
|
+
VALUE rb_class();
|
22
|
+
|
23
|
+
void define_ruby_class();
|
24
|
+
|
25
|
+
VALUE rb_initialize(int argc, VALUE *argv, VALUE self);
|
26
|
+
VALUE rb_write(VALUE self, VALUE frame);
|
27
|
+
VALUE rb_close(VALUE self);
|
28
|
+
|
29
|
+
__NAMESPACE_END_CVVIDEOWRITER
|
30
|
+
|
31
|
+
inline CvVideoWriter*
|
32
|
+
CVVIDEOWRITER(VALUE object)
|
33
|
+
{
|
34
|
+
// CvVideoWriter is
|
35
|
+
// CvVideoWriter *ptr;
|
36
|
+
// Data_Get_Struct(object, CvVideoWriter, ptr);
|
37
|
+
// return ptr;
|
38
|
+
return (CvVideoWriter*)DATA_PTR(object);
|
39
|
+
}
|
40
|
+
|
41
|
+
__NAMESPACE_END_OPENCV
|
42
|
+
|
43
|
+
#endif // RUBY_OPENCV_CVVIDEOWRITER_H
|
data/ext/opencv/gui.cpp
CHANGED
@@ -1,68 +1,68 @@
|
|
1
|
-
/************************************************************
|
2
|
-
|
3
|
-
gui.cpp -
|
4
|
-
|
5
|
-
$Author: lsxi $
|
6
|
-
|
7
|
-
Copyright (C) 2005-2006 Masakazu Yonekura
|
8
|
-
|
9
|
-
************************************************************/
|
10
|
-
#include "gui.h"
|
11
|
-
/*
|
12
|
-
* Document-module: OpenCV::GUI
|
13
|
-
*
|
14
|
-
* OpenCV simple GUI interface. Provides Window, Trackbar.
|
15
|
-
* This GUI work on GTK or Microsoft Windows native GUI.
|
16
|
-
*/
|
17
|
-
__NAMESPACE_BEGIN_OPENCV
|
18
|
-
__NAMESPACE_BEGIN_GUI
|
19
|
-
|
20
|
-
VALUE rb_module;
|
21
|
-
|
22
|
-
VALUE
|
23
|
-
rb_module_GUI()
|
24
|
-
{
|
25
|
-
return rb_module;
|
26
|
-
}
|
27
|
-
|
28
|
-
void
|
29
|
-
define_ruby_module()
|
30
|
-
{
|
31
|
-
if (rb_module)
|
32
|
-
return;
|
33
|
-
/*
|
34
|
-
* opencv = rb_define_module("OpenCV");
|
35
|
-
*
|
36
|
-
* note: this comment is used by rdoc.
|
37
|
-
*/
|
38
|
-
VALUE opencv = rb_module_opencv();
|
39
|
-
rb_module = rb_define_module_under(opencv, "GUI");
|
40
|
-
rb_define_singleton_method(rb_module, "wait_key", RUBY_METHOD_FUNC(rb_wait_key), -1);
|
41
|
-
}
|
42
|
-
|
43
|
-
/*
|
44
|
-
* call-seq:
|
45
|
-
* wait_key(<i>[delay]</i>) -> int or nil
|
46
|
-
*
|
47
|
-
* Waits for a pressed key each GUI wedget.
|
48
|
-
* Return the code of the pressed key or nil if no key were pressed until the specified timeout has elapsed.
|
49
|
-
* <i>delay</i> should be Fixnum. Wait <i>delay</i> millisecond.
|
50
|
-
*/
|
51
|
-
VALUE
|
52
|
-
rb_wait_key(int argc, VALUE *argv, VALUE self)
|
53
|
-
{
|
54
|
-
VALUE delay;
|
55
|
-
rb_scan_args(argc, argv, "01", &delay);
|
56
|
-
int keycode = 0;
|
57
|
-
try {
|
58
|
-
keycode = cvWaitKey(IF_INT(delay, 0));
|
59
|
-
}
|
60
|
-
catch (cv::Exception& e) {
|
61
|
-
raise_cverror(e);
|
62
|
-
}
|
63
|
-
return (keycode < 0) ? Qnil : INT2NUM(keycode);
|
64
|
-
}
|
65
|
-
|
66
|
-
__NAMESPACE_END_GUI
|
67
|
-
__NAMESPACE_END_OPENCV
|
68
|
-
|
1
|
+
/************************************************************
|
2
|
+
|
3
|
+
gui.cpp -
|
4
|
+
|
5
|
+
$Author: lsxi $
|
6
|
+
|
7
|
+
Copyright (C) 2005-2006 Masakazu Yonekura
|
8
|
+
|
9
|
+
************************************************************/
|
10
|
+
#include "gui.h"
|
11
|
+
/*
|
12
|
+
* Document-module: OpenCV::GUI
|
13
|
+
*
|
14
|
+
* OpenCV simple GUI interface. Provides Window, Trackbar.
|
15
|
+
* This GUI work on GTK or Microsoft Windows native GUI.
|
16
|
+
*/
|
17
|
+
__NAMESPACE_BEGIN_OPENCV
|
18
|
+
__NAMESPACE_BEGIN_GUI
|
19
|
+
|
20
|
+
VALUE rb_module;
|
21
|
+
|
22
|
+
VALUE
|
23
|
+
rb_module_GUI()
|
24
|
+
{
|
25
|
+
return rb_module;
|
26
|
+
}
|
27
|
+
|
28
|
+
void
|
29
|
+
define_ruby_module()
|
30
|
+
{
|
31
|
+
if (rb_module)
|
32
|
+
return;
|
33
|
+
/*
|
34
|
+
* opencv = rb_define_module("OpenCV");
|
35
|
+
*
|
36
|
+
* note: this comment is used by rdoc.
|
37
|
+
*/
|
38
|
+
VALUE opencv = rb_module_opencv();
|
39
|
+
rb_module = rb_define_module_under(opencv, "GUI");
|
40
|
+
rb_define_singleton_method(rb_module, "wait_key", RUBY_METHOD_FUNC(rb_wait_key), -1);
|
41
|
+
}
|
42
|
+
|
43
|
+
/*
|
44
|
+
* call-seq:
|
45
|
+
* wait_key(<i>[delay]</i>) -> int or nil
|
46
|
+
*
|
47
|
+
* Waits for a pressed key each GUI wedget.
|
48
|
+
* Return the code of the pressed key or nil if no key were pressed until the specified timeout has elapsed.
|
49
|
+
* <i>delay</i> should be Fixnum. Wait <i>delay</i> millisecond.
|
50
|
+
*/
|
51
|
+
VALUE
|
52
|
+
rb_wait_key(int argc, VALUE *argv, VALUE self)
|
53
|
+
{
|
54
|
+
VALUE delay;
|
55
|
+
rb_scan_args(argc, argv, "01", &delay);
|
56
|
+
int keycode = 0;
|
57
|
+
try {
|
58
|
+
keycode = cvWaitKey(IF_INT(delay, 0));
|
59
|
+
}
|
60
|
+
catch (cv::Exception& e) {
|
61
|
+
raise_cverror(e);
|
62
|
+
}
|
63
|
+
return (keycode < 0) ? Qnil : INT2NUM(keycode);
|
64
|
+
}
|
65
|
+
|
66
|
+
__NAMESPACE_END_GUI
|
67
|
+
__NAMESPACE_END_OPENCV
|
68
|
+
|
data/ext/opencv/gui.h
CHANGED
@@ -1,30 +1,30 @@
|
|
1
|
-
/************************************************************
|
2
|
-
|
3
|
-
gui.h -
|
4
|
-
|
5
|
-
$Author: lsxi $
|
6
|
-
|
7
|
-
Copyright (C) 2005-2006 Masakazu Yonekura
|
8
|
-
|
9
|
-
************************************************************/
|
10
|
-
#ifndef RUBY_OPENCV_GUI_H
|
11
|
-
#define RUBY_OPENCV_GUI_H
|
12
|
-
|
13
|
-
#define __NAMESPACE_BEGIN_GUI namespace mGUI {
|
14
|
-
#define __NAMESPACE_END_GUI }
|
15
|
-
|
16
|
-
#include "opencv.h"
|
17
|
-
|
18
|
-
__NAMESPACE_BEGIN_OPENCV
|
19
|
-
__NAMESPACE_BEGIN_GUI
|
20
|
-
|
21
|
-
VALUE rb_module_GUI();
|
22
|
-
void define_ruby_module();
|
23
|
-
|
24
|
-
VALUE rb_wait_key(int argc, VALUE *argv, VALUE self);
|
25
|
-
|
26
|
-
__NAMESPACE_END_GUI
|
27
|
-
__NAMESPACE_END_OPENCV
|
28
|
-
|
29
|
-
#endif // RUBY_OPENCV_GUI_H
|
30
|
-
|
1
|
+
/************************************************************
|
2
|
+
|
3
|
+
gui.h -
|
4
|
+
|
5
|
+
$Author: lsxi $
|
6
|
+
|
7
|
+
Copyright (C) 2005-2006 Masakazu Yonekura
|
8
|
+
|
9
|
+
************************************************************/
|
10
|
+
#ifndef RUBY_OPENCV_GUI_H
|
11
|
+
#define RUBY_OPENCV_GUI_H
|
12
|
+
|
13
|
+
#define __NAMESPACE_BEGIN_GUI namespace mGUI {
|
14
|
+
#define __NAMESPACE_END_GUI }
|
15
|
+
|
16
|
+
#include "opencv.h"
|
17
|
+
|
18
|
+
__NAMESPACE_BEGIN_OPENCV
|
19
|
+
__NAMESPACE_BEGIN_GUI
|
20
|
+
|
21
|
+
VALUE rb_module_GUI();
|
22
|
+
void define_ruby_module();
|
23
|
+
|
24
|
+
VALUE rb_wait_key(int argc, VALUE *argv, VALUE self);
|
25
|
+
|
26
|
+
__NAMESPACE_END_GUI
|
27
|
+
__NAMESPACE_END_OPENCV
|
28
|
+
|
29
|
+
#endif // RUBY_OPENCV_GUI_H
|
30
|
+
|
data/ext/opencv/iplconvkernel.h
CHANGED
@@ -1,71 +1,71 @@
|
|
1
|
-
/************************************************************
|
2
|
-
|
3
|
-
iplconvkernel.h -
|
4
|
-
|
5
|
-
$Author: lsxi $
|
6
|
-
|
7
|
-
Copyright (C) 2005-2006 Masakazu Yonekura
|
8
|
-
|
9
|
-
************************************************************/
|
10
|
-
#ifndef RUBY_OPENCV_IPLCONVKERNEL_H
|
11
|
-
#define RUBY_OPENCV_IPLCONVKERNEL_H
|
12
|
-
|
13
|
-
#include "opencv.h"
|
14
|
-
|
15
|
-
#define __NAMESPACE_BEGIN_IPLCONVKERNEL namespace cIplConvKernel {
|
16
|
-
#define __NAMESPACE_END_IPLCONVKERNEL }
|
17
|
-
|
18
|
-
__NAMESPACE_BEGIN_OPENCV
|
19
|
-
__NAMESPACE_BEGIN_IPLCONVKERNEL
|
20
|
-
|
21
|
-
VALUE rb_class();
|
22
|
-
VALUE rb_allocate(VALUE klass);
|
23
|
-
|
24
|
-
void define_ruby_class();
|
25
|
-
VALUE rb_initialize(int argc, VALUE *argv, VALUE self);
|
26
|
-
VALUE rb_size(VALUE self);
|
27
|
-
VALUE rb_cols(VALUE self);
|
28
|
-
VALUE rb_rows(VALUE self);
|
29
|
-
VALUE rb_anchor(VALUE self);
|
30
|
-
VALUE rb_anchor_x(VALUE self);
|
31
|
-
VALUE rb_anchor_y(VALUE self);
|
32
|
-
|
33
|
-
__NAMESPACE_END_IPLCONVKERNEL
|
34
|
-
|
35
|
-
inline IplConvKernel*
|
36
|
-
IPLCONVKERNEL(VALUE object)
|
37
|
-
{
|
38
|
-
IplConvKernel *ptr;
|
39
|
-
Data_Get_Struct(object, IplConvKernel, ptr);
|
40
|
-
return ptr;
|
41
|
-
}
|
42
|
-
|
43
|
-
inline IplConvKernel*
|
44
|
-
IPLCONVKERNEL_WITH_CHECK(VALUE object)
|
45
|
-
{
|
46
|
-
if (!rb_obj_is_kind_of(object, cIplConvKernel::rb_class()))
|
47
|
-
raise_typeerror(object, cIplConvKernel::rb_class());
|
48
|
-
return IPLCONVKERNEL(object);
|
49
|
-
}
|
50
|
-
|
51
|
-
/*
|
52
|
-
inline IplConvKernel*
|
53
|
-
IPLCONVKERNEL(VALUE object)
|
54
|
-
{
|
55
|
-
IplConvKernel *ptr;
|
56
|
-
if (NIL_P(object))
|
57
|
-
return NULL;
|
58
|
-
else if (rb_obj_is_kind_of(object, cIplConvKernel::rb_class())) {
|
59
|
-
Data_Get_Struct(object, IplConvKernel, ptr);
|
60
|
-
return ptr;
|
61
|
-
}
|
62
|
-
else {
|
63
|
-
rb_warn("invalid kernel. use default kernel (3x3 rectangle).");
|
64
|
-
return NULL;
|
65
|
-
}
|
66
|
-
}
|
67
|
-
*/
|
68
|
-
|
69
|
-
__NAMESPACE_END_OPENCV
|
70
|
-
|
71
|
-
#endif // RUBY_OPENCV_IPLCONVKERNEL_H
|
1
|
+
/************************************************************
|
2
|
+
|
3
|
+
iplconvkernel.h -
|
4
|
+
|
5
|
+
$Author: lsxi $
|
6
|
+
|
7
|
+
Copyright (C) 2005-2006 Masakazu Yonekura
|
8
|
+
|
9
|
+
************************************************************/
|
10
|
+
#ifndef RUBY_OPENCV_IPLCONVKERNEL_H
|
11
|
+
#define RUBY_OPENCV_IPLCONVKERNEL_H
|
12
|
+
|
13
|
+
#include "opencv.h"
|
14
|
+
|
15
|
+
#define __NAMESPACE_BEGIN_IPLCONVKERNEL namespace cIplConvKernel {
|
16
|
+
#define __NAMESPACE_END_IPLCONVKERNEL }
|
17
|
+
|
18
|
+
__NAMESPACE_BEGIN_OPENCV
|
19
|
+
__NAMESPACE_BEGIN_IPLCONVKERNEL
|
20
|
+
|
21
|
+
VALUE rb_class();
|
22
|
+
VALUE rb_allocate(VALUE klass);
|
23
|
+
|
24
|
+
void define_ruby_class();
|
25
|
+
VALUE rb_initialize(int argc, VALUE *argv, VALUE self);
|
26
|
+
VALUE rb_size(VALUE self);
|
27
|
+
VALUE rb_cols(VALUE self);
|
28
|
+
VALUE rb_rows(VALUE self);
|
29
|
+
VALUE rb_anchor(VALUE self);
|
30
|
+
VALUE rb_anchor_x(VALUE self);
|
31
|
+
VALUE rb_anchor_y(VALUE self);
|
32
|
+
|
33
|
+
__NAMESPACE_END_IPLCONVKERNEL
|
34
|
+
|
35
|
+
inline IplConvKernel*
|
36
|
+
IPLCONVKERNEL(VALUE object)
|
37
|
+
{
|
38
|
+
IplConvKernel *ptr;
|
39
|
+
Data_Get_Struct(object, IplConvKernel, ptr);
|
40
|
+
return ptr;
|
41
|
+
}
|
42
|
+
|
43
|
+
inline IplConvKernel*
|
44
|
+
IPLCONVKERNEL_WITH_CHECK(VALUE object)
|
45
|
+
{
|
46
|
+
if (!rb_obj_is_kind_of(object, cIplConvKernel::rb_class()))
|
47
|
+
raise_typeerror(object, cIplConvKernel::rb_class());
|
48
|
+
return IPLCONVKERNEL(object);
|
49
|
+
}
|
50
|
+
|
51
|
+
/*
|
52
|
+
inline IplConvKernel*
|
53
|
+
IPLCONVKERNEL(VALUE object)
|
54
|
+
{
|
55
|
+
IplConvKernel *ptr;
|
56
|
+
if (NIL_P(object))
|
57
|
+
return NULL;
|
58
|
+
else if (rb_obj_is_kind_of(object, cIplConvKernel::rb_class())) {
|
59
|
+
Data_Get_Struct(object, IplConvKernel, ptr);
|
60
|
+
return ptr;
|
61
|
+
}
|
62
|
+
else {
|
63
|
+
rb_warn("invalid kernel. use default kernel (3x3 rectangle).");
|
64
|
+
return NULL;
|
65
|
+
}
|
66
|
+
}
|
67
|
+
*/
|
68
|
+
|
69
|
+
__NAMESPACE_END_OPENCV
|
70
|
+
|
71
|
+
#endif // RUBY_OPENCV_IPLCONVKERNEL_H
|
data/ext/opencv/mouseevent.cpp
CHANGED
@@ -1,181 +1,181 @@
|
|
1
|
-
/************************************************************
|
2
|
-
|
3
|
-
mouseevent.cpp -
|
4
|
-
|
5
|
-
$Author: lsxi $
|
6
|
-
|
7
|
-
Copyright (C) 2005-2007 Masakazu Yonekura
|
8
|
-
|
9
|
-
************************************************************/
|
10
|
-
#include "mouseevent.h"
|
11
|
-
/*
|
12
|
-
* Document-module: OpenCV::GUI::MouseEvent
|
13
|
-
*
|
14
|
-
* MouseEvent object.
|
15
|
-
* have
|
16
|
-
* see OpenCV::GUI::Window#set_mouse_callback.
|
17
|
-
*/
|
18
|
-
__NAMESPACE_BEGIN_OPENCV
|
19
|
-
__NAMESPACE_BEGIN_GUI
|
20
|
-
__NAMESPACE_BEGIN_MOUSEEVENT
|
21
|
-
|
22
|
-
VALUE rb_klass;
|
23
|
-
|
24
|
-
VALUE
|
25
|
-
rb_class()
|
26
|
-
{
|
27
|
-
return rb_klass;
|
28
|
-
}
|
29
|
-
|
30
|
-
void
|
31
|
-
define_ruby_class()
|
32
|
-
{
|
33
|
-
if (rb_klass)
|
34
|
-
return;
|
35
|
-
/*
|
36
|
-
* opencv = rb_define_module("OpenCV");
|
37
|
-
* GUI = rb_define_module_under(opencv, "GUI");
|
38
|
-
* cvpoint = rb_define_class_under(opencv, "CvPoint", rb_cObject);
|
39
|
-
*/
|
40
|
-
VALUE GUI = rb_module_GUI();
|
41
|
-
VALUE cvpoint = cCvPoint::rb_class();
|
42
|
-
rb_klass = rb_define_class_under(GUI, "MouseEvent", cvpoint);
|
43
|
-
rb_define_alloc_func(rb_klass, rb_allocate);
|
44
|
-
rb_define_method(rb_klass, "event", RUBY_METHOD_FUNC(rb_event), 0);
|
45
|
-
rb_define_method(rb_klass, "left_button?", RUBY_METHOD_FUNC(rb_left_button_q), 0);
|
46
|
-
rb_define_method(rb_klass, "right_button?", RUBY_METHOD_FUNC(rb_right_button_q), 0);
|
47
|
-
rb_define_method(rb_klass, "middle_button?", RUBY_METHOD_FUNC(rb_middle_button_q), 0);
|
48
|
-
rb_define_method(rb_klass, "ctrl_key?", RUBY_METHOD_FUNC(rb_ctrl_key_q), 0);
|
49
|
-
rb_define_method(rb_klass, "shift_key?", RUBY_METHOD_FUNC(rb_shift_key_q), 0);
|
50
|
-
rb_define_method(rb_klass, "alt_key?", RUBY_METHOD_FUNC(rb_alt_key_q), 0);
|
51
|
-
}
|
52
|
-
|
53
|
-
VALUE
|
54
|
-
rb_allocate(VALUE klass)
|
55
|
-
{
|
56
|
-
MouseEvent *ptr;
|
57
|
-
return Data_Make_Struct(klass, MouseEvent, 0, 0, ptr);
|
58
|
-
}
|
59
|
-
|
60
|
-
/*
|
61
|
-
* call-seq:
|
62
|
-
* event -> symbol
|
63
|
-
*
|
64
|
-
* Return Symbol about mouse event.
|
65
|
-
*
|
66
|
-
* Currently, return these symbol:
|
67
|
-
* :move
|
68
|
-
* When mouse move.
|
69
|
-
* :right_button_down
|
70
|
-
* When mouse right button down.
|
71
|
-
* :left_button_down
|
72
|
-
* When mosue left button down.
|
73
|
-
* :middle_button_down
|
74
|
-
* When mosue middle button down.
|
75
|
-
* :left_button_up
|
76
|
-
* When mouse left button down.
|
77
|
-
* :right_button_up
|
78
|
-
* When mouse right button down.
|
79
|
-
* :middle_button_up
|
80
|
-
* When mouse middle button down.
|
81
|
-
*
|
82
|
-
* note: original OpenCV define "double-click" event(e.g. CV_EVENT_LBUTTONDBLCLK).
|
83
|
-
* But never call these event. Is it bug?
|
84
|
-
*/
|
85
|
-
VALUE rb_event(VALUE self)
|
86
|
-
{
|
87
|
-
switch(MOUSEEVENT(self)->event) {
|
88
|
-
case CV_EVENT_MOUSEMOVE:
|
89
|
-
return ID2SYM(rb_intern("move"));
|
90
|
-
case CV_EVENT_LBUTTONDOWN:
|
91
|
-
return ID2SYM(rb_intern("left_button_down"));
|
92
|
-
case CV_EVENT_RBUTTONDOWN:
|
93
|
-
return ID2SYM(rb_intern("right_button_down"));
|
94
|
-
case CV_EVENT_MBUTTONDOWN:
|
95
|
-
return ID2SYM(rb_intern("middle_button_down"));
|
96
|
-
case CV_EVENT_LBUTTONUP:
|
97
|
-
return ID2SYM(rb_intern("left_button_up"));
|
98
|
-
case CV_EVENT_RBUTTONUP:
|
99
|
-
return ID2SYM(rb_intern("right_button_up"));
|
100
|
-
case CV_EVENT_MBUTTONUP:
|
101
|
-
return ID2SYM(rb_intern("middle_button_up"));
|
102
|
-
case CV_EVENT_LBUTTONDBLCLK:
|
103
|
-
return ID2SYM(rb_intern("left_button_double_click"));
|
104
|
-
case CV_EVENT_RBUTTONDBLCLK:
|
105
|
-
return ID2SYM(rb_intern("right_button_double_click"));
|
106
|
-
case CV_EVENT_MBUTTONDBLCLK:
|
107
|
-
return ID2SYM(rb_intern("middle_button_double_click"));
|
108
|
-
}
|
109
|
-
return Qnil;
|
110
|
-
}
|
111
|
-
|
112
|
-
/*
|
113
|
-
* Return true when mouse left button is pushed. Otherwise return false.
|
114
|
-
*/
|
115
|
-
VALUE
|
116
|
-
rb_left_button_q(VALUE self)
|
117
|
-
{
|
118
|
-
return MOUSEEVENT(self)->flags & CV_EVENT_FLAG_LBUTTON ? Qtrue : Qfalse;
|
119
|
-
}
|
120
|
-
|
121
|
-
/*
|
122
|
-
* Return true when mouse right button is pushed. Otherwise return false.
|
123
|
-
*/
|
124
|
-
VALUE
|
125
|
-
rb_right_button_q(VALUE self)
|
126
|
-
{
|
127
|
-
return MOUSEEVENT(self)->flags & CV_EVENT_FLAG_RBUTTON ? Qtrue : Qfalse;
|
128
|
-
}
|
129
|
-
|
130
|
-
/*
|
131
|
-
* Return true when mouse middle button is pushed. Otherwise return false.
|
132
|
-
*/
|
133
|
-
VALUE
|
134
|
-
rb_middle_button_q(VALUE self)
|
135
|
-
{
|
136
|
-
return MOUSEEVENT(self)->flags & CV_EVENT_FLAG_MBUTTON ? Qtrue : Qfalse;
|
137
|
-
}
|
138
|
-
|
139
|
-
/*
|
140
|
-
* Return true when CTRL key is pushed. Otherwise return false.
|
141
|
-
*/
|
142
|
-
VALUE
|
143
|
-
rb_ctrl_key_q(VALUE self)
|
144
|
-
{
|
145
|
-
return MOUSEEVENT(self)->flags & CV_EVENT_FLAG_CTRLKEY ? Qtrue : Qfalse;
|
146
|
-
}
|
147
|
-
|
148
|
-
/*
|
149
|
-
* Return true when shift key is pushed. Otherwise return false.
|
150
|
-
*/
|
151
|
-
VALUE
|
152
|
-
rb_shift_key_q(VALUE self)
|
153
|
-
{
|
154
|
-
return MOUSEEVENT(self)->flags & CV_EVENT_FLAG_SHIFTKEY ? Qtrue : Qfalse;
|
155
|
-
}
|
156
|
-
|
157
|
-
/*
|
158
|
-
* Return true when ALT key is pushed. Otherwise return false.
|
159
|
-
*/
|
160
|
-
VALUE
|
161
|
-
rb_alt_key_q(VALUE self)
|
162
|
-
{
|
163
|
-
return MOUSEEVENT(self)->flags & CV_EVENT_FLAG_ALTKEY ? Qtrue : Qfalse;
|
164
|
-
}
|
165
|
-
|
166
|
-
VALUE
|
167
|
-
new_object(int event, int x, int y, int flags)
|
168
|
-
{
|
169
|
-
VALUE object = rb_allocate(rb_class());
|
170
|
-
MouseEvent *mouseevent = MOUSEEVENT(object);
|
171
|
-
mouseevent->point.x = x;
|
172
|
-
mouseevent->point.y = y;
|
173
|
-
mouseevent->event = event;
|
174
|
-
mouseevent->flags = flags;
|
175
|
-
return object;
|
176
|
-
}
|
177
|
-
|
178
|
-
__NAMESPACE_END_MOUSEEVENT
|
179
|
-
__NAMESPACE_END_GUI
|
180
|
-
__NAMESPACE_END_OPENCV
|
181
|
-
|
1
|
+
/************************************************************
|
2
|
+
|
3
|
+
mouseevent.cpp -
|
4
|
+
|
5
|
+
$Author: lsxi $
|
6
|
+
|
7
|
+
Copyright (C) 2005-2007 Masakazu Yonekura
|
8
|
+
|
9
|
+
************************************************************/
|
10
|
+
#include "mouseevent.h"
|
11
|
+
/*
|
12
|
+
* Document-module: OpenCV::GUI::MouseEvent
|
13
|
+
*
|
14
|
+
* MouseEvent object.
|
15
|
+
* have
|
16
|
+
* see OpenCV::GUI::Window#set_mouse_callback.
|
17
|
+
*/
|
18
|
+
__NAMESPACE_BEGIN_OPENCV
|
19
|
+
__NAMESPACE_BEGIN_GUI
|
20
|
+
__NAMESPACE_BEGIN_MOUSEEVENT
|
21
|
+
|
22
|
+
VALUE rb_klass;
|
23
|
+
|
24
|
+
VALUE
|
25
|
+
rb_class()
|
26
|
+
{
|
27
|
+
return rb_klass;
|
28
|
+
}
|
29
|
+
|
30
|
+
void
|
31
|
+
define_ruby_class()
|
32
|
+
{
|
33
|
+
if (rb_klass)
|
34
|
+
return;
|
35
|
+
/*
|
36
|
+
* opencv = rb_define_module("OpenCV");
|
37
|
+
* GUI = rb_define_module_under(opencv, "GUI");
|
38
|
+
* cvpoint = rb_define_class_under(opencv, "CvPoint", rb_cObject);
|
39
|
+
*/
|
40
|
+
VALUE GUI = rb_module_GUI();
|
41
|
+
VALUE cvpoint = cCvPoint::rb_class();
|
42
|
+
rb_klass = rb_define_class_under(GUI, "MouseEvent", cvpoint);
|
43
|
+
rb_define_alloc_func(rb_klass, rb_allocate);
|
44
|
+
rb_define_method(rb_klass, "event", RUBY_METHOD_FUNC(rb_event), 0);
|
45
|
+
rb_define_method(rb_klass, "left_button?", RUBY_METHOD_FUNC(rb_left_button_q), 0);
|
46
|
+
rb_define_method(rb_klass, "right_button?", RUBY_METHOD_FUNC(rb_right_button_q), 0);
|
47
|
+
rb_define_method(rb_klass, "middle_button?", RUBY_METHOD_FUNC(rb_middle_button_q), 0);
|
48
|
+
rb_define_method(rb_klass, "ctrl_key?", RUBY_METHOD_FUNC(rb_ctrl_key_q), 0);
|
49
|
+
rb_define_method(rb_klass, "shift_key?", RUBY_METHOD_FUNC(rb_shift_key_q), 0);
|
50
|
+
rb_define_method(rb_klass, "alt_key?", RUBY_METHOD_FUNC(rb_alt_key_q), 0);
|
51
|
+
}
|
52
|
+
|
53
|
+
VALUE
|
54
|
+
rb_allocate(VALUE klass)
|
55
|
+
{
|
56
|
+
MouseEvent *ptr;
|
57
|
+
return Data_Make_Struct(klass, MouseEvent, 0, 0, ptr);
|
58
|
+
}
|
59
|
+
|
60
|
+
/*
|
61
|
+
* call-seq:
|
62
|
+
* event -> symbol
|
63
|
+
*
|
64
|
+
* Return Symbol about mouse event.
|
65
|
+
*
|
66
|
+
* Currently, return these symbol:
|
67
|
+
* :move
|
68
|
+
* When mouse move.
|
69
|
+
* :right_button_down
|
70
|
+
* When mouse right button down.
|
71
|
+
* :left_button_down
|
72
|
+
* When mosue left button down.
|
73
|
+
* :middle_button_down
|
74
|
+
* When mosue middle button down.
|
75
|
+
* :left_button_up
|
76
|
+
* When mouse left button down.
|
77
|
+
* :right_button_up
|
78
|
+
* When mouse right button down.
|
79
|
+
* :middle_button_up
|
80
|
+
* When mouse middle button down.
|
81
|
+
*
|
82
|
+
* note: original OpenCV define "double-click" event(e.g. CV_EVENT_LBUTTONDBLCLK).
|
83
|
+
* But never call these event. Is it bug?
|
84
|
+
*/
|
85
|
+
VALUE rb_event(VALUE self)
|
86
|
+
{
|
87
|
+
switch(MOUSEEVENT(self)->event) {
|
88
|
+
case CV_EVENT_MOUSEMOVE:
|
89
|
+
return ID2SYM(rb_intern("move"));
|
90
|
+
case CV_EVENT_LBUTTONDOWN:
|
91
|
+
return ID2SYM(rb_intern("left_button_down"));
|
92
|
+
case CV_EVENT_RBUTTONDOWN:
|
93
|
+
return ID2SYM(rb_intern("right_button_down"));
|
94
|
+
case CV_EVENT_MBUTTONDOWN:
|
95
|
+
return ID2SYM(rb_intern("middle_button_down"));
|
96
|
+
case CV_EVENT_LBUTTONUP:
|
97
|
+
return ID2SYM(rb_intern("left_button_up"));
|
98
|
+
case CV_EVENT_RBUTTONUP:
|
99
|
+
return ID2SYM(rb_intern("right_button_up"));
|
100
|
+
case CV_EVENT_MBUTTONUP:
|
101
|
+
return ID2SYM(rb_intern("middle_button_up"));
|
102
|
+
case CV_EVENT_LBUTTONDBLCLK:
|
103
|
+
return ID2SYM(rb_intern("left_button_double_click"));
|
104
|
+
case CV_EVENT_RBUTTONDBLCLK:
|
105
|
+
return ID2SYM(rb_intern("right_button_double_click"));
|
106
|
+
case CV_EVENT_MBUTTONDBLCLK:
|
107
|
+
return ID2SYM(rb_intern("middle_button_double_click"));
|
108
|
+
}
|
109
|
+
return Qnil;
|
110
|
+
}
|
111
|
+
|
112
|
+
/*
|
113
|
+
* Return true when mouse left button is pushed. Otherwise return false.
|
114
|
+
*/
|
115
|
+
VALUE
|
116
|
+
rb_left_button_q(VALUE self)
|
117
|
+
{
|
118
|
+
return MOUSEEVENT(self)->flags & CV_EVENT_FLAG_LBUTTON ? Qtrue : Qfalse;
|
119
|
+
}
|
120
|
+
|
121
|
+
/*
|
122
|
+
* Return true when mouse right button is pushed. Otherwise return false.
|
123
|
+
*/
|
124
|
+
VALUE
|
125
|
+
rb_right_button_q(VALUE self)
|
126
|
+
{
|
127
|
+
return MOUSEEVENT(self)->flags & CV_EVENT_FLAG_RBUTTON ? Qtrue : Qfalse;
|
128
|
+
}
|
129
|
+
|
130
|
+
/*
|
131
|
+
* Return true when mouse middle button is pushed. Otherwise return false.
|
132
|
+
*/
|
133
|
+
VALUE
|
134
|
+
rb_middle_button_q(VALUE self)
|
135
|
+
{
|
136
|
+
return MOUSEEVENT(self)->flags & CV_EVENT_FLAG_MBUTTON ? Qtrue : Qfalse;
|
137
|
+
}
|
138
|
+
|
139
|
+
/*
|
140
|
+
* Return true when CTRL key is pushed. Otherwise return false.
|
141
|
+
*/
|
142
|
+
VALUE
|
143
|
+
rb_ctrl_key_q(VALUE self)
|
144
|
+
{
|
145
|
+
return MOUSEEVENT(self)->flags & CV_EVENT_FLAG_CTRLKEY ? Qtrue : Qfalse;
|
146
|
+
}
|
147
|
+
|
148
|
+
/*
|
149
|
+
* Return true when shift key is pushed. Otherwise return false.
|
150
|
+
*/
|
151
|
+
VALUE
|
152
|
+
rb_shift_key_q(VALUE self)
|
153
|
+
{
|
154
|
+
return MOUSEEVENT(self)->flags & CV_EVENT_FLAG_SHIFTKEY ? Qtrue : Qfalse;
|
155
|
+
}
|
156
|
+
|
157
|
+
/*
|
158
|
+
* Return true when ALT key is pushed. Otherwise return false.
|
159
|
+
*/
|
160
|
+
VALUE
|
161
|
+
rb_alt_key_q(VALUE self)
|
162
|
+
{
|
163
|
+
return MOUSEEVENT(self)->flags & CV_EVENT_FLAG_ALTKEY ? Qtrue : Qfalse;
|
164
|
+
}
|
165
|
+
|
166
|
+
VALUE
|
167
|
+
new_object(int event, int x, int y, int flags)
|
168
|
+
{
|
169
|
+
VALUE object = rb_allocate(rb_class());
|
170
|
+
MouseEvent *mouseevent = MOUSEEVENT(object);
|
171
|
+
mouseevent->point.x = x;
|
172
|
+
mouseevent->point.y = y;
|
173
|
+
mouseevent->event = event;
|
174
|
+
mouseevent->flags = flags;
|
175
|
+
return object;
|
176
|
+
}
|
177
|
+
|
178
|
+
__NAMESPACE_END_MOUSEEVENT
|
179
|
+
__NAMESPACE_END_GUI
|
180
|
+
__NAMESPACE_END_OPENCV
|
181
|
+
|