1616
1717
1818#include " ../../../php_opencv.h"
19+ #include " ../../../opencv_exception.h"
1920#include " opencv_type.h"
2021
2122zend_class_entry *opencv_point_ce;
@@ -82,7 +83,7 @@ const zend_function_entry opencv_point_methods[] = {
8283
8384zend_object* opencv_point_create_handler (zend_class_entry *type)
8485{
85- int size = sizeof (opencv_point_object);
86+ size_t size = sizeof (opencv_point_object);
8687 opencv_point_object *obj = (opencv_point_object *)ecalloc (1 ,size);
8788 memset (obj, 0 , sizeof (opencv_point_object));
8889 zend_object_std_init (&obj->std , type);
@@ -153,7 +154,7 @@ zend_object_handlers opencv_scalar_object_handlers;
153154
154155zend_object* opencv_scalar_create_handler (zend_class_entry *type)
155156{
156- int size = sizeof (opencv_scalar_object);
157+ size_t size = sizeof (opencv_scalar_object);
157158 opencv_scalar_object *obj = (opencv_scalar_object *)ecalloc (1 ,size);
158159 memset (obj, 0 , sizeof (opencv_scalar_object));
159160 zend_object_std_init (&obj->std , type);
@@ -257,7 +258,7 @@ zend_object_handlers opencv_size_object_handlers;
257258
258259zend_object* opencv_size_create_handler (zend_class_entry *type)
259260{
260- int size = sizeof (opencv_size_object);
261+ size_t size = sizeof (opencv_size_object);
261262 opencv_size_object *obj = (opencv_size_object *)ecalloc (1 ,size);
262263 memset (obj, 0 , sizeof (opencv_size_object));
263264 zend_object_std_init (&obj->std , type);
@@ -374,7 +375,7 @@ zend_object_handlers opencv_rect_object_handlers;
374375
375376zend_object* opencv_rect_create_handler (zend_class_entry *type)
376377{
377- int size = sizeof (opencv_rect_object);
378+ size_t size = sizeof (opencv_rect_object);
378379 opencv_rect_object *obj = (opencv_rect_object *)ecalloc (1 ,size);
379380 memset (obj, 0 , sizeof (opencv_rect_object));
380381 zend_object_std_init (&obj->std , type);
@@ -566,7 +567,7 @@ zend_object_handlers opencv_rotated_rect_object_handlers;
566567
567568zend_object* opencv_rotated_rect_create_handler (zend_class_entry *type)
568569{
569- int size = sizeof (opencv_rotated_rect_object);
570+ size_t size = sizeof (opencv_rotated_rect_object);
570571 opencv_rotated_rect_object *obj = (opencv_rotated_rect_object *)ecalloc (1 ,size);
571572 memset (obj, 0 , sizeof (opencv_rotated_rect_object));
572573 zend_object_std_init (&obj->std , type);
@@ -578,6 +579,7 @@ zend_object* opencv_rotated_rect_create_handler(zend_class_entry *type)
578579
579580
580581/* *
582+ * //todo $rotatedRect->property = &$a
581583 * RotatedRect Class write_property
582584 * @param object
583585 * @param member
@@ -586,20 +588,31 @@ zend_object* opencv_rotated_rect_create_handler(zend_class_entry *type)
586588 */
587589void opencv_rotated_rect_write_property (zval *object, zval *member, zval *value, void **cache_slot){
588590
589- // zend_string *str = zval_get_string(member);
590- // char *memberName=ZSTR_VAL(str);
591- // opencv_rect_object *obj = Z_PHP_RECT_OBJ_P(object);
592- //
593- // if(strcmp(memberName, "x") == 0 && obj->rect->x!=(int)zval_get_long(value)){
594- // obj->rect->x=(int)zval_get_long(value);
595- // }else if(strcmp(memberName, "y") == 0 && obj->rect->y!=(int)zval_get_long(value)){
596- // obj->rect->y=(int)zval_get_long(value);
597- // }else if(strcmp(memberName, "width") == 0 && obj->rect->width!=(int)zval_get_long(value)){
598- // obj->rect->width=(int)zval_get_long(value);
599- // }else if(strcmp(memberName, "height") == 0 && obj->rect->height!=(int)zval_get_long(value)){
600- // obj->rect->height=(int)zval_get_long(value);
601- // }
602- // zend_string_release(str);//free zend_string not memberName(zend_string->val)
591+ zend_string *str = zval_get_string (member);
592+ char *memberName = ZSTR_VAL (str);
593+ opencv_rotated_rect_object *obj = Z_PHP_ROTATED_RECT_OBJ_P (object);
594+ if (strcmp (memberName, " angle" ) == 0 && obj->rotatedRect ->angle != (int )zval_get_long (value)){
595+ obj->rotatedRect ->angle = (float )zval_get_long (value);
596+ }else if (strcmp (memberName, " center" ) == 0 ){
597+ if (Z_TYPE_P (value) == IS_OBJECT && Z_OBJCE_P (value) == opencv_point_ce){
598+ opencv_point_object *value_object = Z_PHP_POINT_OBJ_P (value);
599+ if (Point2f (*value_object->point ) != obj->rotatedRect ->center ){
600+ obj->rotatedRect ->center = Point2f (*value_object->point );
601+ }
602+ }else {
603+ opencv_throw_exception (" set property center only expect param is Point object." );
604+ }
605+ }else if (strcmp (memberName, " size" ) == 0 ){
606+ if (Z_TYPE_P (value) == IS_OBJECT && Z_OBJCE_P (value) == opencv_size_ce){
607+ opencv_size_object *value_object = Z_PHP_SIZE_OBJ_P (value);
608+ if (Size2f (*value_object->size ) != obj->rotatedRect ->size ){
609+ obj->rotatedRect ->size = Size2f (*value_object->size );
610+ }
611+ }else {
612+ opencv_throw_exception (" set property size only expect param is Size object." );
613+ }
614+ }
615+ zend_string_release (str);// free zend_string not memberName(zend_string->val)
603616 std_object_handlers.write_property (object,member,value,cache_slot);
604617
605618}
0 commit comments