diff options
author | Jean-Philippe Andre <jp.andre@samsung.com> | 2015-05-12 17:37:01 +0900 |
---|---|---|
committer | Jean-Philippe Andre <jp.andre@samsung.com> | 2015-06-15 16:59:41 +0900 |
commit | 111e51a6ff35c3bf4dc835775b44b630e0191ba1 (patch) | |
tree | 92eb947706f0b9a6d3fafc05b98faebb690e7d0b /src/bin/edje | |
parent | 75ec3a7338c9c2406d4765a4cc8247f72d6bec7b (diff) |
Evas: Add "no-render" flag for proxy sources & clippers
Those objects should never be rendered on the canvas, even if they
are visible. On the other hand, they need to be rendered in mask or
proxy surfaces.
note: this patch includes some extra whitespaces changes :(
@feature
Diffstat (limited to 'src/bin/edje')
-rw-r--r-- | src/bin/edje/edje_cc_handlers.c | 27 | ||||
-rwxr-xr-x | src/bin/edje/edje_cc_out.c | 10 |
2 files changed, 32 insertions, 5 deletions
diff --git a/src/bin/edje/edje_cc_handlers.c b/src/bin/edje/edje_cc_handlers.c index b371aec5ca..d9ddbd3898 100644 --- a/src/bin/edje/edje_cc_handlers.c +++ b/src/bin/edje/edje_cc_handlers.c | |||
@@ -258,6 +258,7 @@ static void st_collections_group_parts_part_pointer_mode(void); | |||
258 | static void st_collections_group_parts_part_precise_is_inside(void); | 258 | static void st_collections_group_parts_part_precise_is_inside(void); |
259 | static void st_collections_group_parts_part_use_alternate_font_metrics(void); | 259 | static void st_collections_group_parts_part_use_alternate_font_metrics(void); |
260 | static void st_collections_group_parts_part_clip_to_id(void); | 260 | static void st_collections_group_parts_part_clip_to_id(void); |
261 | static void st_collections_group_parts_part_no_render(void); | ||
261 | static void st_collections_group_parts_part_source(void); | 262 | static void st_collections_group_parts_part_source(void); |
262 | static void st_collections_group_parts_part_source2(void); | 263 | static void st_collections_group_parts_part_source2(void); |
263 | static void st_collections_group_parts_part_source3(void); | 264 | static void st_collections_group_parts_part_source3(void); |
@@ -693,6 +694,7 @@ New_Statement_Handler statement_handlers[] = | |||
693 | {"collections.group.parts.part.precise_is_inside", st_collections_group_parts_part_precise_is_inside}, | 694 | {"collections.group.parts.part.precise_is_inside", st_collections_group_parts_part_precise_is_inside}, |
694 | {"collections.group.parts.part.use_alternate_font_metrics", st_collections_group_parts_part_use_alternate_font_metrics}, | 695 | {"collections.group.parts.part.use_alternate_font_metrics", st_collections_group_parts_part_use_alternate_font_metrics}, |
695 | {"collections.group.parts.part.clip_to", st_collections_group_parts_part_clip_to_id}, | 696 | {"collections.group.parts.part.clip_to", st_collections_group_parts_part_clip_to_id}, |
697 | {"collections.group.parts.part.no_render", st_collections_group_parts_part_no_render}, | ||
696 | {"collections.group.parts.part.source", st_collections_group_parts_part_source}, | 698 | {"collections.group.parts.part.source", st_collections_group_parts_part_source}, |
697 | {"collections.group.parts.part.source2", st_collections_group_parts_part_source2}, | 699 | {"collections.group.parts.part.source2", st_collections_group_parts_part_source2}, |
698 | {"collections.group.parts.part.source3", st_collections_group_parts_part_source3}, | 700 | {"collections.group.parts.part.source3", st_collections_group_parts_part_source3}, |
@@ -4417,6 +4419,7 @@ st_collections_group_parts_alias(void) | |||
4417 | source: "groupname"; | 4419 | source: "groupname"; |
4418 | pointer_mode: AUTOGRAB; | 4420 | pointer_mode: AUTOGRAB; |
4419 | use_alternate_font_metrics: 0; | 4421 | use_alternate_font_metrics: 0; |
4422 | no_render: 0; | ||
4420 | 4423 | ||
4421 | dragable { } | 4424 | dragable { } |
4422 | items { } | 4425 | items { } |
@@ -4469,6 +4472,7 @@ edje_cc_handlers_part_make(int id) | |||
4469 | ep->use_alternate_font_metrics = 0; | 4472 | ep->use_alternate_font_metrics = 0; |
4470 | ep->access = 0; | 4473 | ep->access = 0; |
4471 | ep->clip_to_id = -1; | 4474 | ep->clip_to_id = -1; |
4475 | ep->no_render = 0; | ||
4472 | ep->dragable.confine_id = -1; | 4476 | ep->dragable.confine_id = -1; |
4473 | ep->dragable.threshold_id = -1; | 4477 | ep->dragable.threshold_id = -1; |
4474 | ep->dragable.event_id = -1; | 4478 | ep->dragable.event_id = -1; |
@@ -5396,6 +5400,29 @@ st_collections_group_parts_part_clip_to_id(void) | |||
5396 | /** | 5400 | /** |
5397 | @page edcref | 5401 | @page edcref |
5398 | @property | 5402 | @property |
5403 | no_render | ||
5404 | @parameters | ||
5405 | [1 or 0] | ||
5406 | @effect | ||
5407 | Setting the no_render flag on an object will make it never render | ||
5408 | directly on the canvas, regardless of the visible and color properties. | ||
5409 | But the object will still be rendered in a dedicated surface when | ||
5410 | required if it is a proxy source or a mask (clipper). | ||
5411 | Strongly recommended for use with mask objects and proxy sources | ||
5412 | (instead of setting "source_visible" on the proxy itself). | ||
5413 | @endproperty | ||
5414 | */ | ||
5415 | static void | ||
5416 | st_collections_group_parts_part_no_render(void) | ||
5417 | { | ||
5418 | check_arg_count(1); | ||
5419 | |||
5420 | current_part->no_render = parse_bool(0); | ||
5421 | } | ||
5422 | |||
5423 | /** | ||
5424 | @page edcref | ||
5425 | @property | ||
5399 | source | 5426 | source |
5400 | @parameters | 5427 | @parameters |
5401 | [another group's name] | 5428 | [another group's name] |
diff --git a/src/bin/edje/edje_cc_out.c b/src/bin/edje/edje_cc_out.c index 78d3fab431..be534aab5f 100755 --- a/src/bin/edje/edje_cc_out.c +++ b/src/bin/edje/edje_cc_out.c | |||
@@ -485,20 +485,20 @@ check_part(Edje_Part_Collection *pc, Edje_Part *ep, Eet_File *ef) | |||
485 | /* FIXME: check image set and sort them. */ | 485 | /* FIXME: check image set and sort them. */ |
486 | if (!ep->default_desc) | 486 | if (!ep->default_desc) |
487 | error_and_abort(ef, "Collection %i: default description missing " | 487 | error_and_abort(ef, "Collection %i: default description missing " |
488 | "for part \"%s\"", pc->id, ep->name); | 488 | "for part \"%s\"", pc->id, ep->name); |
489 | 489 | ||
490 | for (i = 0; i < ep->other.desc_count; ++i) | 490 | for (i = 0; i < ep->other.desc_count; ++i) |
491 | check_state(pc, ep, ep->other.desc[i], ef); | 491 | check_state(pc, ep, ep->other.desc[i], ef); |
492 | 492 | ||
493 | if (ep->type == EDJE_PART_TYPE_IMAGE) | 493 | if (ep->type == EDJE_PART_TYPE_IMAGE) |
494 | { | 494 | { |
495 | check_image_part_desc(pc, ep, (Edje_Part_Description_Image*) ep->default_desc, ef); | 495 | check_image_part_desc(pc, ep, (Edje_Part_Description_Image*) ep->default_desc, ef); |
496 | 496 | ||
497 | for (i = 0; i < ep->other.desc_count; ++i) | 497 | for (i = 0; i < ep->other.desc_count; ++i) |
498 | check_image_part_desc (pc, ep, (Edje_Part_Description_Image*) ep->other.desc[i], ef); | 498 | check_image_part_desc(pc, ep, (Edje_Part_Description_Image*) ep->other.desc[i], ef); |
499 | } | 499 | } |
500 | else if ((ep->type == EDJE_PART_TYPE_BOX) || | 500 | else if ((ep->type == EDJE_PART_TYPE_BOX) || |
501 | (ep->type == EDJE_PART_TYPE_TABLE)) | 501 | (ep->type == EDJE_PART_TYPE_TABLE)) |
502 | check_packed_items(pc, ep, ef); | 502 | check_packed_items(pc, ep, ef); |
503 | else if (ep->type == EDJE_PART_TYPE_GROUP) | 503 | else if (ep->type == EDJE_PART_TYPE_GROUP) |
504 | check_source_links(pc, ep, ef, group_path); | 504 | check_source_links(pc, ep, ef, group_path); |