add back face cull option.

SVN revision: 46217
This commit is contained in:
Carsten Haitzler 2010-02-16 16:36:16 +00:00
parent bf293931a1
commit 3c71b10522
4 changed files with 32 additions and 0 deletions

View File

@ -208,6 +208,7 @@ static void st_collections_group_parts_part_description_map_rotation_x(void);
static void st_collections_group_parts_part_description_map_rotation_y(void);
static void st_collections_group_parts_part_description_map_rotation_z(void);
static void st_collections_group_parts_part_description_map_on(void);
static void st_collections_group_parts_part_description_map_backface_cull(void);
static void st_collections_group_parts_part_description_perspective_zplane(void);
static void st_collections_group_parts_part_description_perspective_focal(void);
static void st_collections_group_parts_part_api(void);
@ -429,6 +430,7 @@ New_Statement_Handler statement_handlers[] =
{"collections.group.parts.part.description.map.rotation.y", st_collections_group_parts_part_description_map_rotation_y},
{"collections.group.parts.part.description.map.rotation.z", st_collections_group_parts_part_description_map_rotation_z},
{"collections.group.parts.part.description.map.on", st_collections_group_parts_part_description_map_on},
{"collections.group.parts.part.description.map.backface_cull", st_collections_group_parts_part_description_map_backface_cull},
{"collections.group.parts.part.description.perspective.zplane", st_collections_group_parts_part_description_perspective_zplane},
{"collections.group.parts.part.description.perspective.focal", st_collections_group_parts_part_description_perspective_focal},
{"collections.group.parts.part.description.params.int", st_collections_group_parts_part_description_params_int},
@ -3092,6 +3094,7 @@ ob_collections_group_parts_part_description(void)
ed->map.rot.y = FROM_DOUBLE(0.0);
ed->map.rot.z = FROM_DOUBLE(0.0);
ed->map.on = 0;
ed->map.backcull = 0;
ed->persp.zplane = 0;
ed->persp.focal = 1000;
ed->external_params = NULL;
@ -5754,6 +5757,23 @@ st_collections_group_parts_part_description_map_on(void)
ed->map.on = parse_bool(0);
}
static void
st_collections_group_parts_part_description_map_backface_cull(void)
{
Edje_Part_Collection *pc;
Edje_Part *ep;
Edje_Part_Description *ed;
check_arg_count(1);
pc = eina_list_data_get(eina_list_last(edje_collections));
ep = eina_list_data_get(eina_list_last(pc->parts));
ed = ep->default_desc;
if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc));
ed->map.backcull = parse_bool(0);
}
static void
st_collections_group_parts_part_description_perspective_zplane(void)
{

View File

@ -2111,6 +2111,16 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags)
}
evas_object_map_set(mo, map);
evas_object_map_enable_set(mo, 1);
if (ep->param1.description->map.backcull)
{
if (pf->visible)
{
if (evas_map_util_clockwise_get(map))
evas_object_show(mo);
else
evas_object_hide(mo);
}
}
evas_map_free(map);
}
else

View File

@ -356,6 +356,7 @@ _edje_edd_init(void)
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "map.rot.y", map.rot.y, EDJE_T_FLOAT);
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "map.rot.z", map.rot.z, EDJE_T_FLOAT);
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "map.on", map.on, EET_T_UCHAR);
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "map.backcull", map.backcull, EET_T_UCHAR);
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "persp.zplane", persp.zplane, EET_T_INT);
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "persp.focal", persp.focal, EET_T_INT);
EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_edje_part_description, Edje_Part_Description, "external_params", external_params, _edje_edd_edje_external_param);

View File

@ -671,6 +671,7 @@ struct _Edje_Part_Description
int id_center;
FLOAT_T x, y, z;
} rot;
unsigned char backcull;
unsigned char on;
} map;