1515 */
1616#include " ../../php_opencv.h"
1717#include " opencv_videoio.h"
18+ #include " ../../opencv_exception.h"
1819
1920zend_class_entry *opencv_video_capture_ce;
2021
@@ -34,15 +35,114 @@ zend_object* opencv_video_capture_create_handler(zend_class_entry *type)
3435
3536PHP_METHOD (opencv_video_capture, __construct)
3637{
38+ zval *zval1 = NULL ;
39+ if (zend_parse_parameters (ZEND_NUM_ARGS (), " |z" , &zval1) == FAILURE) {
40+ RETURN_NULL ();
41+ }
3742 opencv_video_capture_object *obj = Z_PHP_VIDEO_CAPTURE_P (getThis ());
38- obj->videoCapture = new VideoCapture ();
43+ char *error_message;
44+ VideoCapture *videoCapture;
45+ if (zval1 == NULL ){
46+ videoCapture = new VideoCapture ();
47+ }else {
48+ again:
49+ switch (Z_TYPE_P (zval1)) {
50+ case IS_LONG:
51+ try {
52+ int long_val = (int )zval_get_long (zval1);
53+ videoCapture = new VideoCapture (long_val);
54+ }catch (Exception e){
55+ opencv_throw_exception (e.what ());
56+ }
57+ break ;
58+ case IS_DOUBLE:
59+ try {
60+ int double_val = (int )zval_get_double (zval1);
61+ videoCapture = new VideoCapture (double_val);
62+ }catch (Exception e){
63+ opencv_throw_exception (e.what ());
64+ }
65+ break ;
66+ case IS_STRING:
67+ try {
68+ String string_val=(String)ZSTR_VAL (zval_get_string (zval1));
69+ videoCapture = new VideoCapture (string_val);
70+ }catch (Exception e){
71+ opencv_throw_exception (e.what ());
72+ }
73+ break ;
74+ case IS_REFERENCE:
75+ zval1 = Z_REFVAL_P (zval1);
76+ goto again;
77+ break ;
78+ default :
79+ error_message = (char *)malloc (strlen (" Can't write file on unknow type." )+ 1 );
80+ strcpy (error_message," Can't write file on unknow type." );
81+ opencv_throw_exception (error_message);
82+ free (error_message);
83+ break ;
84+ }
85+ }
86+
87+ obj->videoCapture = videoCapture;
88+ }
89+
90+ PHP_METHOD (opencv_video_capture, open)
91+ {
92+ zval *zval1 = NULL ;
93+ if (zend_parse_parameters (ZEND_NUM_ARGS (), " z" , &zval1) == FAILURE) {
94+ RETURN_NULL ();
95+ }
96+ opencv_video_capture_object *obj = Z_PHP_VIDEO_CAPTURE_P (getThis ());
97+ char *error_message;
98+ VideoCapture *videoCapture;
99+ again:
100+ switch (Z_TYPE_P (zval1)) {
101+ case IS_LONG:
102+ try {
103+ int long_val = (int )zval_get_long (zval1);
104+ obj->videoCapture ->open (long_val);
105+ }catch (Exception e){
106+ opencv_throw_exception (e.what ());
107+ }
108+ break ;
109+ case IS_DOUBLE:
110+ try {
111+ int double_val = (int )zval_get_double (zval1);
112+ obj->videoCapture ->open (double_val);
113+ }catch (Exception e){
114+ opencv_throw_exception (e.what ());
115+ }
116+ break ;
117+ case IS_STRING:
118+ try {
119+ String string_val=(String)ZSTR_VAL (zval_get_string (zval1));
120+ obj->videoCapture ->open (string_val);
121+ }catch (Exception e){
122+ opencv_throw_exception (e.what ());
123+ }
124+ break ;
125+ case IS_REFERENCE:
126+ zval1 = Z_REFVAL_P (zval1);
127+ goto again;
128+ break ;
129+ default :
130+ error_message = (char *)malloc (strlen (" Can't write file on unknow type." )+ 1 );
131+ strcpy (error_message," Can't write file on unknow type." );
132+ opencv_throw_exception (error_message);
133+ free (error_message);
134+ break ;
135+ }
136+
137+ obj->videoCapture = videoCapture;
39138}
40139
41140/* *
42141 * opencv_video_capture_methods[]
43142 */
44143const zend_function_entry opencv_video_capture_methods[] = {
45144 PHP_ME (opencv_video_capture, __construct, NULL , ZEND_ACC_PUBLIC|ZEND_ACC_CTOR)
145+ PHP_ME (opencv_video_capture, open, NULL , ZEND_ACC_PUBLIC)
46146 PHP_FE_END
47147};
48148/* }}} */
0 commit comments