diff --git a/src/bin/edje/edje_cc_handlers.c b/src/bin/edje/edje_cc_handlers.c index 435e92aa76..86316fb528 100644 --- a/src/bin/edje/edje_cc_handlers.c +++ b/src/bin/edje/edje_cc_handlers.c @@ -365,6 +365,7 @@ static void st_collections_group_parts_part_description_proxy_source_visible(voi static void st_collections_group_parts_part_description_proxy_source_clip(void); static void st_collections_group_parts_part_description_position_point(void); static void st_collections_group_parts_part_description_position_space(void); +static void st_collections_group_parts_part_description_camera_properties(void); #ifdef HAVE_EPHYSICS static void st_collections_group_parts_part_description_physics_mass(void); @@ -717,6 +718,7 @@ New_Statement_Handler statement_handlers[] = {"collections.group.parts.part.description.proxy.source_clip", st_collections_group_parts_part_description_proxy_source_clip}, {"collections.group.parts.part.description.position.point", st_collections_group_parts_part_description_position_point}, {"collections.group.parts.part.description.position.space", st_collections_group_parts_part_description_position_space}, + {"collections.group.parts.part.description.properties.perspective", st_collections_group_parts_part_description_camera_properties}, #ifdef HAVE_EPHYSICS {"collections.group.parts.part.description.physics.mass", st_collections_group_parts_part_description_physics_mass}, @@ -9081,6 +9083,59 @@ st_collections_group_parts_part_description_position_space(void) } } +/** + @edcsubsection{collections_group_parts_description_camera,Properties} + */ + +/** + @page edcref + + @block + properties + @context + part { + description { + .. + properties { + perspective: fovy aspect near far; + } + .. + } + } + @description + @endblock + + @property + properties + @parameters + [fovy] [aspect] [near] [far] + @effect + Specifies the basic attributes of the camera. + @endproperty +*/ +static void +st_collections_group_parts_part_description_camera_properties(void) +{ + Edje_Part_Description_Camera *ed; + + check_arg_count(4); + + if (current_part->type != EDJE_PART_TYPE_CAMERA) + { + ERR("parse error %s:%i. camera attributes in non-CAMERA part.", + file_in, line - 1); + exit(-1); + } + + ed = (Edje_Part_Description_Camera*) current_desc; + + ed->camera.camera.fovy = FROM_DOUBLE(parse_float(0)); + ed->camera.camera.aspect = FROM_DOUBLE(parse_float(1)); + ed->camera.camera.near = FROM_DOUBLE(parse_float(2)); + ed->camera.camera.far = FROM_DOUBLE(parse_float(3)); +} + + static void st_collections_group_parts_part_description_proxy_source_visible(void) { diff --git a/src/lib/edje/edje_private.h b/src/lib/edje/edje_private.h index 6e310eb144..bda31c1935 100644 --- a/src/lib/edje/edje_private.h +++ b/src/lib/edje/edje_private.h @@ -1384,8 +1384,8 @@ struct _Edje_Part_Description_Spec_Camera struct { Evas_Real fovy; Evas_Real aspect; - /* Evas_Real near; */ - /* Evas_Real far; */ + Evas_Real near; + Evas_Real far; } camera; struct {