cedric pushed a commit to branch master.

commit 797ad7528f1d3fb90e66c4e45f7cd349321da9f9
Author: Cedric Bail <[email protected]>
Date:   Fri Sep 6 16:47:36 2013 +0900

    edje: add border linked to Image sets.
    
    It is quite common that in an image sets each image has different border 
size.
    This patch permit to define the border value on a per image basis in the 
set.
---
 ChangeLog                       |   4 +
 NEWS                            |   1 +
 src/bin/edje/edje_cc_handlers.c | 210 ++++++++++++++++++++++++++++++----------
 src/lib/edje/edje_calc.c        |  19 +++-
 src/lib/edje/edje_data.c        |   5 +
 src/lib/edje/edje_private.h     |   5 +
 6 files changed, 190 insertions(+), 54 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index f115014..048348a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2013-09-06  Cedric Bail
+
+       * Edje: Add border information to Image sets.
+
 2013-09-05  Cedric Bail
 
        * Evas: Add evas_object_smart_iterator_new().
diff --git a/NEWS b/NEWS
index 0794a9e..35a7f1d 100644
--- a/NEWS
+++ b/NEWS
@@ -131,6 +131,7 @@ Additions:
      - Reduce load time of Edje_Object using Evas_Object_Textblock and many 
styles.
      - Add edje_object_mmap_set.
      - Fix play sample parameter checking.
+     - Add border information to Image sets.
     * Eeze:
      - Add a dummy libmount replacement for when libmount is not there.
     * Ecore_Con:
diff --git a/src/bin/edje/edje_cc_handlers.c b/src/bin/edje/edje_cc_handlers.c
index aa943cd..7548f15 100644
--- a/src/bin/edje/edje_cc_handlers.c
+++ b/src/bin/edje/edje_cc_handlers.c
@@ -161,6 +161,8 @@ static void st_images_set_name(void);
 static void ob_images_set_image(void);
 static void st_images_set_image_image(void);
 static void st_images_set_image_size(void);
+static void st_images_set_image_border(void);
+static void st_images_set_image_border_scale_by(void);
 
 static void st_fonts_font(void);
 
@@ -401,6 +403,8 @@ New_Statement_Handler statement_handlers[] =
      {"images.set.name", st_images_set_name},
      {"images.set.image.image", st_images_set_image_image},
      {"images.set.image.size", st_images_set_image_size},
+     {"images.set.image.border", st_images_set_image_border},
+     {"images.set.image.scale_by", st_images_set_image_border_scale_by},
      {"fonts.font", st_fonts_font},
      {"data.item", st_data_item},
      {"data.file", st_data_file},
@@ -416,10 +420,14 @@ New_Statement_Handler statement_handlers[] =
      {"collections.set.name", st_images_set_name}, /* dup */
      {"collections.set.image.image", st_images_set_image_image}, /* dup */
      {"collections.set.image.size", st_images_set_image_size}, /* dup */
+     {"collections.set.image.border", st_images_set_image_border}, /* dup */
+     {"collections.set.image.scale_by", st_images_set_image_border_scale_by}, 
/* dup */
      {"collections.images.image", st_images_image}, /* dup */
      {"collections.images.set.name", st_images_set_name}, /* dup */
      {"collections.images.set.image.image", st_images_set_image_image}, /* dup 
*/
      {"collections.images.set.image.size", st_images_set_image_size}, /* dup */
+     {"collections.images.set.image.border", st_images_set_image_border}, /* 
dup */
+     {"collections.images.set.image.scale_by", 
st_images_set_image_border_scale_by}, /* dup */
      {"collections.font", st_fonts_font}, /* dup */
      {"collections.fonts.font", st_fonts_font}, /* dup */
      {"collections.styles.style.name", st_styles_style_name}, /* dup */
@@ -451,13 +459,17 @@ New_Statement_Handler statement_handlers[] =
      {"collections.group.limits.vertical", 
st_collections_group_limits_vertical},
      {"collections.group.externals.external", st_externals_external}, /* dup */
      {"collections.group.image", st_images_image}, /* dup */
-     {"collections.group.set.name", st_images_set_name},
-     {"collections.group.set.image.image", st_images_set_image_image},
-     {"collections.group.set.image.size", st_images_set_image_size},
+     {"collections.group.set.name", st_images_set_name}, /* dup */
+     {"collections.group.set.image.image", st_images_set_image_image}, /* dup 
*/
+     {"collections.group.set.image.size", st_images_set_image_size}, /* dup */
+     {"collections.group.set.image.border", st_images_set_image_border}, /* 
dup */
+     {"collections.group.set.image.scale_by", 
st_images_set_image_border_scale_by}, /* dup */
      {"collections.group.images.image", st_images_image}, /* dup */
-     {"collections.group.images.set.name", st_images_set_name},
-     {"collections.group.images.set.image.image", st_images_set_image_image},
-     {"collections.group.images.set.image.size", st_images_set_image_size},
+     {"collections.group.images.set.name", st_images_set_name}, /* dup */
+     {"collections.group.images.set.image.image", st_images_set_image_image}, 
/* dup */
+     {"collections.group.images.set.image.size", st_images_set_image_size}, /* 
dup */
+     {"collections.group.images.set.image.border", 
st_images_set_image_border}, /* dup */
+     {"collections.group.images.set.image.scale_by", 
st_images_set_image_border_scale_by}, /* dup */
      {"collections.group.font", st_fonts_font}, /* dup */
      {"collections.group.fonts.font", st_fonts_font}, /* dup */
      {"collections.group.styles.style.name", st_styles_style_name}, /* dup */
@@ -469,13 +481,17 @@ New_Statement_Handler statement_handlers[] =
      {"collections.group.color_classes.color_class.color3", 
st_color_class_color3}, /* dup */
      {"collections.group.parts.alias", st_collections_group_parts_alias },
      {"collections.group.parts.image", st_images_image}, /* dup */
-     {"collections.group.parts.set.name", st_images_set_name},
-     {"collections.group.parts.set.image.image", st_images_set_image_image},
-     {"collections.group.parts.set.image.size", st_images_set_image_size},
+     {"collections.group.parts.set.name", st_images_set_name}, /* dup */
+     {"collections.group.parts.set.image.image", st_images_set_image_image}, 
/* dup */
+     {"collections.group.parts.set.image.size", st_images_set_image_size}, /* 
dup */
+     {"collections.group.parts.set.image.border", st_images_set_image_border}, 
/* dup */
+     {"collections.group.parts.set.image.scale_by", 
st_images_set_image_border_scale_by}, /* dup */
      {"collections.group.parts.images.image", st_images_image}, /* dup */
-     {"collections.group.parts.images.set.name", st_images_set_name},
-     {"collections.group.parts.images.set.image.image", 
st_images_set_image_image},
-     {"collections.group.parts.images.set.image.size", 
st_images_set_image_size},
+     {"collections.group.parts.images.set.name", st_images_set_name}, /* dup */
+     {"collections.group.parts.images.set.image.image", 
st_images_set_image_image}, /* dup */
+     {"collections.group.parts.images.set.image.size", 
st_images_set_image_size}, /* dup */
+     {"collections.group.parts.images.set.image.border", 
st_images_set_image_border}, /* dup */
+     {"collections.group.parts.images.set.image.scale_by", 
st_images_set_image_border_scale_by}, /* dup */
      {"collections.group.parts.font", st_fonts_font}, /* dup */
      {"collections.group.parts.fonts.font", st_fonts_font}, /* dup */
      {"collections.group.parts.styles.style.name", st_styles_style_name}, /* 
dup */
@@ -521,13 +537,17 @@ New_Statement_Handler statement_handlers[] =
      {"collections.group.parts.part.multiline", 
st_collections_group_parts_part_multiline},
      {"collections.group.parts.part.access", 
st_collections_group_parts_part_access},
      {"collections.group.parts.part.image", st_images_image}, /* dup */
-     {"collections.group.parts.part.set.name", st_images_set_name},
-     {"collections.group.parts.part.set.image.image", 
st_images_set_image_image},
-     {"collections.group.parts.part.set.image.size", st_images_set_image_size},
+     {"collections.group.parts.part.set.name", st_images_set_name}, /* dup */
+     {"collections.group.parts.part.set.image.image", 
st_images_set_image_image}, /* dup */
+     {"collections.group.parts.part.set.image.size", 
st_images_set_image_size}, /* dup */
+     {"collections.group.parts.part.set.image.border", 
st_images_set_image_border}, /* dup */
+     {"collections.group.parts.part.set.image.scale_by", 
st_images_set_image_border_scale_by}, /* dup */
      {"collections.group.parts.part.images.image", st_images_image}, /* dup */
-     {"collections.group.parts.part.images.set.name", st_images_set_name},
-     {"collections.group.parts.part.images.set.image.image", 
st_images_set_image_image},
-     {"collections.group.parts.part.images.set.image.size", 
st_images_set_image_size},
+     {"collections.group.parts.part.images.set.name", st_images_set_name}, /* 
dup */
+     {"collections.group.parts.part.images.set.image.image", 
st_images_set_image_image}, /* dup */
+     {"collections.group.parts.part.images.set.image.size", 
st_images_set_image_size}, /* dup */
+     {"collections.group.parts.part.images.set.image.border", 
st_images_set_image_border}, /* dup */
+     {"collections.group.parts.part.images.set.image.scale_by", 
st_images_set_image_border_scale_by}, /* dup */
      {"collections.group.parts.part.font", st_fonts_font}, /* dup */
      {"collections.group.parts.part.fonts.font", st_fonts_font}, /* dup */
      {"collections.group.parts.part.styles.style.name", st_styles_style_name}, 
/* dup */
@@ -591,13 +611,17 @@ New_Statement_Handler statement_handlers[] =
      {"collections.group.parts.part.description.image.normal", 
st_collections_group_parts_part_description_image_normal},
      {"collections.group.parts.part.description.image.tween", 
st_collections_group_parts_part_description_image_tween},
      {"collections.group.parts.part.description.image.image", 
st_images_image}, /* dup */
-     {"collections.group.parts.part.description.image.set.name", 
st_images_set_name},
-     {"collections.group.parts.part.description.image.set.image.image", 
st_images_set_image_image},
-     {"collections.group.parts.part.description.image.set.image.size", 
st_images_set_image_size},
+     {"collections.group.parts.part.description.image.set.name", 
st_images_set_name}, /* dup */
+     {"collections.group.parts.part.description.image.set.image.image", 
st_images_set_image_image}, /* dup */
+     {"collections.group.parts.part.description.image.set.image.size", 
st_images_set_image_size}, /* dup */
+     {"collections.group.parts.part.description.images.set.image.border", 
st_images_set_image_border}, /* dup */
+     {"collections.group.parts.part.description.images.set.image.scale_by", 
st_images_set_image_border_scale_by}, /* dup */
      {"collections.group.parts.part.description.image.images.image", 
st_images_image}, /* dup */
-     {"collections.group.parts.part.description.image.images.set.name", 
st_images_set_name},
-     {"collections.group.parts.part.description.image.images.set.image.image", 
st_images_set_image_image},
-     {"collections.group.parts.part.description.image.images.set.image.size", 
st_images_set_image_size},
+     {"collections.group.parts.part.description.image.images.set.name", 
st_images_set_name}, /* dup */
+     {"collections.group.parts.part.description.image.images.set.image.image", 
st_images_set_image_image}, /* dup */
+     {"collections.group.parts.part.description.image.images.set.image.size", 
st_images_set_image_size}, /* dup */
+     
{"collections.group.parts.part.description.image.images.set.image.border", 
st_images_set_image_border}, /* dup */
+     
{"collections.group.parts.part.description.image.images.set.image.scale_by", 
st_images_set_image_border_scale_by}, /* dup */
      {"collections.group.parts.part.description.image.border", 
st_collections_group_parts_part_description_image_border},
      {"collections.group.parts.part.description.image.middle", 
st_collections_group_parts_part_description_image_middle},
      {"collections.group.parts.part.description.image.border_scale", 
st_collections_group_parts_part_description_image_border_scale},
@@ -681,9 +705,11 @@ New_Statement_Handler statement_handlers[] =
      {"collections.group.parts.part.description.params.bool", 
st_collections_group_parts_part_description_params_bool},
      {"collections.group.parts.part.description.params.choice", 
st_collections_group_parts_part_description_params_choice},
      {"collections.group.parts.part.description.images.image", 
st_images_image}, /* dup */
-     {"collections.group.parts.part.description.images.set.name", 
st_images_set_name},
-     {"collections.group.parts.part.description.images.set.image.image", 
st_images_set_image_image},
-     {"collections.group.parts.part.description.images.set.image.size", 
st_images_set_image_size},
+     {"collections.group.parts.part.description.images.set.name", 
st_images_set_name}, /* dup */
+     {"collections.group.parts.part.description.images.set.image.image", 
st_images_set_image_image}, /* dup */
+     {"collections.group.parts.part.description.images.set.image.size", 
st_images_set_image_size}, /* dup */
+     {"collections.group.parts.part.description.images.set.image.border", 
st_images_set_image_border}, /* dup */
+     {"collections.group.parts.part.description.images.set.image.scale_by", 
st_images_set_image_border_scale_by}, /* dup */
      {"collections.group.parts.part.description.font", st_fonts_font}, /* dup 
*/
      {"collections.group.parts.part.description.fonts.font", st_fonts_font}, 
/* dup */
      {"collections.group.parts.part.description.styles.style.name", 
st_styles_style_name}, /* dup */
@@ -694,13 +720,17 @@ New_Statement_Handler statement_handlers[] =
      
{"collections.group.parts.part.description.color_classes.color_class.color2", 
st_color_class_color2}, /* dup */
      
{"collections.group.parts.part.description.color_classes.color_class.color3", 
st_color_class_color3}, /* dup */
      {"collections.group.parts.part.description.programs.image", 
st_images_image}, /* dup */
-     {"collections.group.parts.part.description.programs.set.name", 
st_images_set_name},
-     {"collections.group.parts.part.description.programs.set.image.image", 
st_images_set_image_image},
-     {"collections.group.parts.part.description.programs.set.image.size", 
st_images_set_image_size},
+     {"collections.group.parts.part.description.programs.set.name", 
st_images_set_name}, /* dup */
+     {"collections.group.parts.part.description.programs.set.image.image", 
st_images_set_image_image}, /* dup */
+     {"collections.group.parts.part.description.programs.set.image.size", 
st_images_set_image_size}, /* dup */
+     {"collections.group.parts.part.description.programs.set.image.border", 
st_images_set_image_border}, /* dup */
+     {"collections.group.parts.part.description.programs.set.image.scale_by", 
st_images_set_image_border_scale_by}, /* dup */
      {"collections.group.parts.part.description.programs.images.image", 
st_images_image}, /* dup */
-     {"collections.group.parts.part.description.programs.images.set.name", 
st_images_set_name},
-     
{"collections.group.parts.part.description.programs.images.set.image.image", 
st_images_set_image_image},
-     
{"collections.group.parts.part.description.programs.images.set.image.size", 
st_images_set_image_size},
+     {"collections.group.parts.part.description.programs.images.set.name", 
st_images_set_name}, /* dup */
+     
{"collections.group.parts.part.description.programs.images.set.image.image", 
st_images_set_image_image}, /* dup */
+     
{"collections.group.parts.part.description.programs.images.set.image.size", 
st_images_set_image_size}, /* dup */
+     
{"collections.group.parts.part.description.programs.images.set.image.border", 
st_images_set_image_border}, /* dup */
+     
{"collections.group.parts.part.description.programs.images.set.image.scale_by", 
st_images_set_image_border_scale_by}, /* dup */
      {"collections.group.parts.part.description.programs.font", 
st_fonts_font}, /* dup */
      {"collections.group.parts.part.description.programs.fonts.font", 
st_fonts_font}, /* dup */
      {"collections.group.parts.part.description.programs.program.name", 
st_collections_group_programs_program_name}, /* dup */
@@ -722,13 +752,17 @@ New_Statement_Handler statement_handlers[] =
      {"collections.group.parts.part.description.program.after", 
st_collections_group_programs_program_after}, /* dup */
      {"collections.group.parts.part.description.program.api", 
st_collections_group_programs_program_api}, /* dup */
      {"collections.group.parts.part.programs.image", st_images_image}, /* dup 
*/
-     {"collections.group.parts.part.programs.set.name", st_images_set_name},
-     {"collections.group.parts.part.programs.set.image.image", 
st_images_set_image_image},
-     {"collections.group.parts.part.programs.set.image.size", 
st_images_set_image_size},
+     {"collections.group.parts.part.programs.set.name", st_images_set_name}, 
/* dup */
+     {"collections.group.parts.part.programs.set.image.image", 
st_images_set_image_image}, /* dup */
+     {"collections.group.parts.part.programs.set.image.size", 
st_images_set_image_size}, /* dup */
+     {"collections.group.parts.part.programs.set.image.border", 
st_images_set_image_border}, /* dup */
+     {"collections.group.parts.part.programs.set.image.scale_by", 
st_images_set_image_border_scale_by}, /* dup */
      {"collections.group.parts.part.programs.images.image", st_images_image}, 
/* dup */
-     {"collections.group.parts.part.programs.images.set.name", 
st_images_set_name},
-     {"collections.group.parts.part.programs.images.set.image.image", 
st_images_set_image_image},
-     {"collections.group.parts.part.programs.images.set.image.size", 
st_images_set_image_size},
+     {"collections.group.parts.part.programs.images.set.name", 
st_images_set_name}, /* dup */
+     {"collections.group.parts.part.programs.images.set.image.image", 
st_images_set_image_image}, /* dup */
+     {"collections.group.parts.part.programs.images.set.image.size", 
st_images_set_image_size}, /* dup */
+     {"collections.group.parts.part.programs.images.set.image.border", 
st_images_set_image_border}, /* dup */
+     {"collections.group.parts.part.programs.images.set.image.scale_by", 
st_images_set_image_border_scale_by}, /* dup */
      {"collections.group.parts.part.programs.font", st_fonts_font}, /* dup */
      {"collections.group.parts.part.programs.fonts.font", st_fonts_font}, /* 
dup */
      {"collections.group.parts.part.programs.program.name", 
st_collections_group_programs_program_name}, /* dup */
@@ -750,13 +784,17 @@ New_Statement_Handler statement_handlers[] =
      {"collections.group.parts.part.program.after", 
st_collections_group_programs_program_after}, /* dup */
      {"collections.group.parts.part.program.api", 
st_collections_group_programs_program_api}, /* dup */
      {"collections.group.parts.programs.image", st_images_image}, /* dup */
-     {"collections.group.parts.programs.set.name", st_images_set_name},
-     {"collections.group.parts.programs.set.image.image", 
st_images_set_image_image},
-     {"collections.group.parts.programs.set.image.size", 
st_images_set_image_size},
+     {"collections.group.parts.programs.set.name", st_images_set_name}, /* dup 
*/
+     {"collections.group.parts.programs.set.image.image", 
st_images_set_image_image}, /* dup */
+     {"collections.group.parts.programs.set.image.size", 
st_images_set_image_size}, /* dup */
+     {"collections.group.parts.programs.set.image.border", 
st_images_set_image_border}, /* dup */
+     {"collections.group.parts.programs.set.image.scale_by", 
st_images_set_image_border_scale_by}, /* dup */
      {"collections.group.parts.programs.images.image", st_images_image}, /* 
dup */
-     {"collections.group.parts.programs.images.set.name", st_images_set_name},
-     {"collections.group.parts.programs.images.set.image.image", 
st_images_set_image_image},
-     {"collections.group.parts.programs.images.set.image.size", 
st_images_set_image_size},
+     {"collections.group.parts.programs.images.set.name", st_images_set_name}, 
/* dup */
+     {"collections.group.parts.programs.images.set.image.image", 
st_images_set_image_image}, /* dup */
+     {"collections.group.parts.programs.images.set.image.size", 
st_images_set_image_size}, /* dup */
+     {"collections.group.parts.programs.images.set.image.border", 
st_images_set_image_border}, /* dup */
+     {"collections.group.parts.programs.images.set.image.scale_by", 
st_images_set_image_border_scale_by}, /* dup */
      {"collections.group.parts.programs.font", st_fonts_font}, /* dup */
      {"collections.group.parts.programs.fonts.font", st_fonts_font}, /* dup */
      {"collections.group.parts.programs.program.name", 
st_collections_group_programs_program_name}, /* dup */
@@ -806,13 +844,17 @@ New_Statement_Handler statement_handlers[] =
      {"collections.group.programs.program.after", 
st_collections_group_programs_program_after},
      {"collections.group.programs.program.api", 
st_collections_group_programs_program_api},
      {"collections.group.programs.image", st_images_image}, /* dup */
-     {"collections.group.programs.set.name", st_images_set_name},
-     {"collections.group.programs.set.image.image", st_images_set_image_image},
-     {"collections.group.programs.set.image.size", st_images_set_image_size},
+     {"collections.group.programs.set.name", st_images_set_name}, /* dup */
+     {"collections.group.programs.set.image.image", 
st_images_set_image_image}, /* dup */
+     {"collections.group.programs.set.image.size", st_images_set_image_size}, 
/* dup */
+     {"collections.group.programs.set.image.border", 
st_images_set_image_border}, /* dup */
+     {"collections.group.programs.set.image.scale_by", 
st_images_set_image_border_scale_by}, /* dup */
      {"collections.group.programs.images.image", st_images_image}, /* dup */
-     {"collections.group.programs.images.set.name", st_images_set_name},
-     {"collections.group.programs.images.set.image.image", 
st_images_set_image_image},
-     {"collections.group.programs.images.set.image.size", 
st_images_set_image_size},
+     {"collections.group.programs.images.set.name", st_images_set_name}, /* 
dup */
+     {"collections.group.programs.images.set.image.image", 
st_images_set_image_image}, /* dup */
+     {"collections.group.programs.images.set.image.size", 
st_images_set_image_size}, /* dup */
+     {"collections.group.programs.images.set.image.border", 
st_images_set_image_border}, /* dup */
+     {"collections.group.programs.images.set.image.scale_by", 
st_images_set_image_border_scale_by}, /* dup */
      {"collections.group.programs.font", st_fonts_font}, /* dup */
      {"collections.group.programs.fonts.font", st_fonts_font} /* dup */
 };
@@ -1697,6 +1739,72 @@ st_images_set_image_size(void)
 }
 
 /**
+    @page edcref
+    @property
+        border
+    @parameters
+        [left] [right] [top] [bottom]
+    @since 1.8
+    @effect
+        If set, the area (in pixels) of each side of the image will be
+        displayed as a fixed size border, from the side -> inwards, preventing
+        the corners from being changed on a resize.
+    @endproperty
+*/
+static void
+st_images_set_image_border(void)
+{
+   Edje_Image_Directory_Set_Entry *entry;
+   Edje_Image_Directory_Set *set;
+
+   set = edje_file->image_dir->sets + edje_file->image_dir->sets_count - 1;
+   entry = eina_list_data_get(eina_list_last(set->entries));
+
+   entry->border.l = parse_int_range(0, 0, 0x7fffffff);
+   entry->border.r = parse_int_range(1, 0, 0x7fffffff);
+   entry->border.t = parse_int_range(2, 0, 0x7fffffff);
+   entry->border.b = parse_int_range(3, 0, 0x7fffffff);
+}
+
+
+/**
+    @page edcref
+    @property
+        border_scale_by
+    @parameters
+        0.0 or bigger (0.0 or 1.0 to turn it off)
+    @since 1.8
+    @effect
+        If border scaling is enabled then normally the OUTPUT border sizes
+        (e.g. if 3 pixels on the left edge are set as a border, then normally
+        at scale 1.0, those 3 columns will always be the exact 3 columns of
+        output, or at scale 2.0 they will be 6 columns, or 0.33 they will merge
+        into a single column). This property multiplies the input scale
+        factor by this multiplier, allowing the creation of "supersampled"
+        borders to make much higher resolution outputs possible by always using
+        the highest resolution artwork and then runtime scaling it down.
+    @endproperty
+*/
+static void
+st_images_set_image_border_scale_by(void)
+{
+   Edje_Part_Description_Image *ed;
+
+   check_arg_count(1);
+
+   if (current_part->type != EDJE_PART_TYPE_IMAGE)
+     {
+        ERR("parse error %s:%i. image attributes in non-IMAGE part.",
+            file_in, line - 1);
+        exit(-1);
+     }
+
+   ed = (Edje_Part_Description_Image*) current_desc;
+
+   ed->image.border.scale_by = FROM_DOUBLE(parse_float_range(0, 0.0, 
999999999.0));
+}
+
+/**
    @edcsubsection{toplevel_fonts,Fonts}
  */
 
diff --git a/src/lib/edje/edje_calc.c b/src/lib/edje/edje_calc.c
index 0967a37..4ef7f48 100644
--- a/src/lib/edje/edje_calc.c
+++ b/src/lib/edje/edje_calc.c
@@ -9,7 +9,7 @@ static void _edje_part_recalc_single(Edje *ed, Edje_Real_Part 
*ep,
                                      Edje_Real_Part *rel1_to_x, Edje_Real_Part 
*rel1_to_y,
                                      Edje_Real_Part *rel2_to_x, Edje_Real_Part 
*rel2_to_y,
                                      Edje_Real_Part *confine_to, 
Edje_Real_Part *threshold,
-                                    Edje_Calc_Params *params,
+                                    Edje_Calc_Params *params, 
Edje_Real_Part_Set *set,
                                      Evas_Coord mmw, Evas_Coord mmh,
                                      FLOAT_T pos);
 
@@ -2239,6 +2239,7 @@ _edje_part_recalc_single(Edje *ed,
                          Edje_Real_Part *confine_to,
                          Edje_Real_Part *threshold,
                          Edje_Calc_Params *params,
+                         Edje_Real_Part_Set *set,
                          Evas_Coord mmw, Evas_Coord mmh,
                          FLOAT_T pos)
 {
@@ -2445,6 +2446,18 @@ _edje_part_recalc_single(Edje *ed,
               params->type.common.spec.image.b = img_desc->image.border.b;
 
               params->type.common.spec.image.border_scale_by = 
img_desc->image.border.scale_by;
+
+             if (set && set->set)
+               {
+#define SET_BORDER_DEFINED(Result, Value) Result = Value ? Value : Result;
+                   SET_BORDER_DEFINED(params->type.common.spec.image.l, 
set->entry->border.l);
+                   SET_BORDER_DEFINED(params->type.common.spec.image.r, 
set->entry->border.r);
+                   SET_BORDER_DEFINED(params->type.common.spec.image.t, 
set->entry->border.t);
+                   SET_BORDER_DEFINED(params->type.common.spec.image.b, 
set->entry->border.b);
+
+                   
SET_BORDER_DEFINED(params->type.common.spec.image.border_scale_by, 
set->entry->border.scale_by);
+                }
+
               break;
            }
       case EDJE_PART_TYPE_TEXT:
@@ -3356,7 +3369,7 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int 
flags, Edje_Calc_Params *sta
              _edje_part_recalc_single(ed, ep, ep->param1.description, 
chosen_desc, center[0], light[0], persp[0],
                                       rp1[Rel1X], rp1[Rel1Y], rp1[Rel2X], 
rp1[Rel2Y],
                                       confine_to, threshold,
-                                      p1, mmw, mmh, pos);
+                                      p1, ep->param1.set, mmw, mmh, pos);
 #ifdef EDJE_CALC_CACHE
              if (flags == FLAG_XY)
                ep->param1.state = ed->state;
@@ -3426,7 +3439,7 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int 
flags, Edje_Calc_Params *sta
                                       rp2[Rel2X],
                                       rp2[Rel2Y],
                                       confine_to, threshold,
-                                      p2, mmw, mmh, pos);
+                                      p2, ep->param2->set, mmw, mmh, pos);
 #ifdef EDJE_CALC_CACHE
              if (flags == FLAG_XY)
                ep->param2->state = ed->state;
diff --git a/src/lib/edje/edje_data.c b/src/lib/edje/edje_data.c
index 20725a0..f9e48ee 100644
--- a/src/lib/edje/edje_data.c
+++ b/src/lib/edje/edje_data.c
@@ -311,6 +311,11 @@ _edje_edd_init(void)
    EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_image_directory_set_entry, 
Edje_Image_Directory_Set_Entry, "min.h", size.min.h, EET_T_INT);
    EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_image_directory_set_entry, 
Edje_Image_Directory_Set_Entry, "max.w", size.max.w, EET_T_INT);
    EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_image_directory_set_entry, 
Edje_Image_Directory_Set_Entry, "max.h", size.max.h, EET_T_INT);
+   EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_image_directory_set_entry, 
Edje_Image_Directory_Set_Entry, "border.l", border.l, EET_T_INT);
+   EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_image_directory_set_entry, 
Edje_Image_Directory_Set_Entry, "border.r", border.r, EET_T_INT);
+   EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_image_directory_set_entry, 
Edje_Image_Directory_Set_Entry, "border.t", border.t, EET_T_INT);
+   EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_image_directory_set_entry, 
Edje_Image_Directory_Set_Entry, "border.b", border.b, EET_T_INT);
+   EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_image_directory_set_entry, 
Edje_Image_Directory_Set_Entry, "border.scale_by", border.scale_by, 
EDJE_T_FLOAT);
 
    EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Image_Directory_Set);
    _edje_edd_edje_image_directory_set =
diff --git a/src/lib/edje/edje_private.h b/src/lib/edje/edje_private.h
index b850992..b1c199f 100644
--- a/src/lib/edje/edje_private.h
+++ b/src/lib/edje/edje_private.h
@@ -580,6 +580,11 @@ struct _Edje_Image_Directory_Set_Entry
        int h;
      } min, max;
    } size;
+
+   struct {
+      int l, r, t, b;
+      FLOAT_T scale_by;
+   } border;
 };
 
 struct _Edje_Sound_Sample /*Sound Sample*/

-- 

------------------------------------------------------------------------------
Learn the latest--Visual Studio 2012, SharePoint 2013, SQL 2012, more!
Discover the easy way to master current and previous Microsoft technologies
and advance your career. Get an incredible 1,500+ hours of step-by-step
tutorial videos with LearnDevNow. Subscribe today and save!
http://pubads.g.doubleclick.net/gampad/clk?id=58041391&iu=/4140/ostg.clktrk

Reply via email to