summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMykyta Biliavskyi <m.biliavskyi@samsung.com>2016-05-16 15:48:15 +0300
committerMykyta Biliavskyi <m.biliavskyi@samsung.com>2016-05-16 15:53:48 +0300
commitd027a2f65c42d041b4449260ef37c98036c8b6df (patch)
treec4463772937090f5158a03e51f6e1bcdf0ca56d3
parentfa17ff96e1cc707a7707efca97072d002e22cd22 (diff)
downloadefl-d027a2f65c42d041b4449260ef37c98036c8b6df.tar.gz
Edje_edit: generate states of the box and table part edc code with inheritance.
Generate inheritance box and table attributes from similar state.
-rw-r--r--src/lib/edje/edje_edit.c200
1 files changed, 130 insertions, 70 deletions
diff --git a/src/lib/edje/edje_edit.c b/src/lib/edje/edje_edit.c
index e1d303b552..3817adbac7 100644
--- a/src/lib/edje/edje_edit.c
+++ b/src/lib/edje/edje_edit.c
@@ -13415,80 +13415,46 @@ fill_proxy:
}
static void
-_edje_generate_source_state_box(Edje_Part_Description_Common *pd, Eina_Strbuf *buf)
+_edje_generate_source_state_table(Edje_Part_Description_Common *pd,
+ Edje_Part_Description_Common *inherit_pd,
+ Eina_Strbuf *buf)
{
int attr_amount = 0;
int indent_space = 0;
Eina_Bool ret = EINA_FALSE;
- Edje_Part_Description_Box *box;
-
- box = (Edje_Part_Description_Box *)pd;
-
- attr_amount += (box->box.layout == NULL && box->box.alt_layout == NULL) ? 0 : 1;
- attr_amount += (box->box.align.x == 0.5 && box->box.align.y == 0.5) ? 0 : 1;
- attr_amount += (box->box.padding.x == 0 && box->box.padding.y == 0) ? 0 : 1;
- attr_amount += (box->box.min.h == 0 && box->box.min.v == 0) ? 0 : 1;
-
- if (attr_amount > 1)
- indent_space = strlen(I6);
-
- if (attr_amount)
- {
- if (attr_amount > 1)
- BUF_APPEND(I5 "box {\n");
- else
- BUF_APPEND(I5 "box.");
-
- if (box->box.layout && box->box.alt_layout)
- BUF_APPENDF("%*slayout: \"%s\" \"%s\";\n", indent_space, "",
- box->box.layout, box->box.alt_layout);
- else if (!box->box.layout && box->box.alt_layout)
- BUF_APPENDF("%*slayout: \"horizontal\" \"%s\";\n", indent_space, "",
- box->box.alt_layout);
- else if (box->box.layout && !box->box.alt_layout)
- BUF_APPENDF("%*slayout: \"%s\";\n", indent_space, "",
- box->box.layout);
-
- if (box->box.align.x != 0.5 || box->box.align.y != 0.5)
- {
- char align[strlen("align") + indent_space + 1];
- snprintf(align, strlen("align") + indent_space + 1,
- "%*salign", indent_space, "");
- _edje_source_with_double_values_append(align, 2,
- TO_DOUBLE(box->box.align.x),
- TO_DOUBLE(box->box.align.y),
- buf, &ret);
- }
+ Edje_Part_Description_Table *table = (Edje_Part_Description_Table *)pd;
+ Edje_Part_Description_Table *inherit_pd_table = (Edje_Part_Description_Table *) inherit_pd;
- if (box->box.padding.x != 0 || box->box.padding.y != 0)
- BUF_APPENDF("%*spadding: %d %d;\n", indent_space, "",
- box->box.padding.x, box->box.padding.y);
+ Eina_Bool homogeneous = EINA_FALSE;
+ Eina_Bool align = EINA_FALSE;
+ Eina_Bool padding = EINA_FALSE;
+ Eina_Bool min = EINA_FALSE;
- if (box->box.min.h || box->box.min.v)
- BUF_APPENDF("%*smin: %d %d;\n", indent_space, "",
- box->box.min.h, box->box.min.v);
+ if (inherit_pd_table)
+ {
+ homogeneous = (inherit_pd_table->table.homogeneous == table->table.homogeneous) ? EINA_FALSE : EINA_TRUE;
- if (attr_amount > 1)
- BUF_APPEND(I5 "}\n");
- }
-}
+ align = ((inherit_pd_table->table.align.x == table->table.align.x) &&
+ (inherit_pd_table->table.align.y == table->table.align.y)) ? EINA_FALSE : EINA_TRUE;
-static void
-_edje_generate_source_state_table(Edje_Part_Description_Common *pd, Eina_Strbuf *buf)
-{
- int attr_amount = 0;
- int indent_space = 0;
- Eina_Bool ret = EINA_FALSE;
+ padding = ((inherit_pd_table->table.padding.x == table->table.padding.x) &&
+ (inherit_pd_table->table.padding.y == table->table.padding.y)) ? EINA_FALSE : EINA_TRUE;
- Edje_Part_Description_Table *table;
+ min = ((inherit_pd_table->table.min.h == table->table.min.h) &&
+ (inherit_pd_table->table.min.v == table->table.min.v)) ? EINA_FALSE : EINA_TRUE;
+ }
+ else
+ {
+ homogeneous = (table->table.homogeneous == EDJE_OBJECT_TABLE_HOMOGENEOUS_NONE) ? EINA_FALSE : EINA_TRUE;
+ align = (table->table.align.x == 0.5 && table->table.align.y == 0.5) ? EINA_FALSE : EINA_TRUE;
+ padding = (table->table.padding.x == 0 && table->table.padding.y == 0) ? EINA_FALSE : EINA_TRUE;
+ min = (table->table.min.h == 0 && table->table.min.v == 0) ? EINA_FALSE : EINA_TRUE;
+ }
- table = (Edje_Part_Description_Table *)pd;
+ attr_amount = homogeneous + align + padding + min;
- attr_amount += (table->table.homogeneous == EDJE_OBJECT_TABLE_HOMOGENEOUS_NONE) ? 0 : 1;
- attr_amount += (table->table.align.x == 0.5 && table->table.align.y == 0.5) ? 0 : 1;
- attr_amount += (table->table.padding.x == 0 && table->table.padding.y == 0) ? 0 : 1;
- attr_amount += (table->table.min.h == 0 && table->table.min.v == 0) ? 0 : 1;
+ if (attr_amount == 0) return;
if (attr_amount > 1)
indent_space = strlen(I6);
@@ -13515,22 +13481,22 @@ _edje_generate_source_state_table(Edje_Part_Description_Common *pd, Eina_Strbuf
}
}
- if (table->table.align.x != 0.5 || table->table.align.y != 0.5)
+ if (align)
{
- char align[strlen("align") + indent_space + 1];
- snprintf(align, strlen("align") + indent_space + 1,
+ char align_str[strlen("align") + indent_space + 1];
+ snprintf(align_str, strlen("align") + indent_space + 1,
"%*salign", indent_space, "");
- _edje_source_with_double_values_append(align, 2,
+ _edje_source_with_double_values_append(align_str, 2,
TO_DOUBLE(table->table.align.x),
TO_DOUBLE(table->table.align.y),
buf, &ret);
}
- if (table->table.padding.x != 0 || table->table.padding.y != 0)
+ if (padding)
BUF_APPENDF("%*spadding: %d %d;\n", indent_space, "",
table->table.padding.x, table->table.padding.y);
- if (table->table.min.h || table->table.min.v)
+ if (min)
BUF_APPENDF("%*smin: %d %d;\n", indent_space, "",
table->table.min.h, table->table.min.v);
@@ -13540,6 +13506,100 @@ _edje_generate_source_state_table(Edje_Part_Description_Common *pd, Eina_Strbuf
}
static void
+_edje_generate_source_state_box(Edje_Part_Description_Common *pd,
+ Edje_Part_Description_Common *inherit_pd,
+ Eina_Strbuf *buf)
+{
+ int attr_amount = 0;
+ int indent_space = 0;
+ Eina_Bool ret = EINA_FALSE;
+
+ Edje_Part_Description_Box *box = (Edje_Part_Description_Box *)pd;
+ Edje_Part_Description_Box *inherit_pd_box = (Edje_Part_Description_Box *)inherit_pd;
+
+ Eina_Bool alt_layout = EINA_FALSE;
+ Eina_Bool layout = EINA_FALSE;
+ Eina_Bool align = EINA_FALSE;
+ Eina_Bool padding = EINA_FALSE;
+ Eina_Bool min = EINA_FALSE;
+
+ if (inherit_pd_box)
+ {
+ layout = ((inherit_pd_box->box.layout != NULL && box->box.layout != NULL &&
+ !strcmp(inherit_pd_box->box.layout, box->box.layout)) ||
+ (inherit_pd_box->box.layout == NULL && box->box.layout == NULL)) ? EINA_FALSE : EINA_TRUE;
+
+ alt_layout = ((inherit_pd_box->box.alt_layout != NULL && box->box.alt_layout != NULL &&
+ !strcmp(inherit_pd_box->box.alt_layout, box->box.alt_layout)) ||
+ (inherit_pd_box->box.alt_layout == NULL && box->box.alt_layout == NULL)) ? EINA_FALSE : EINA_TRUE;
+
+ align = ((inherit_pd_box->box.align.x == box->box.align.x) &&
+ (inherit_pd_box->box.align.y == box->box.align.y)) ? EINA_FALSE : EINA_TRUE;
+
+ padding = ((inherit_pd_box->box.padding.x == box->box.padding.x) &&
+ (inherit_pd_box->box.padding.y == box->box.padding.y)) ? EINA_FALSE : EINA_TRUE;
+
+ min = ((inherit_pd_box->box.min.h == box->box.min.h) &&
+ (inherit_pd_box->box.min.v == box->box.min.v)) ? EINA_FALSE : EINA_TRUE;
+ }
+ else
+ {
+ layout = (box->box.layout == NULL) ? EINA_FALSE : EINA_TRUE;
+ alt_layout = (box->box.alt_layout == NULL) ? EINA_FALSE : EINA_TRUE;
+ align = (box->box.align.x == 0.5 && box->box.align.y == 0.5) ? EINA_FALSE : EINA_TRUE;
+ padding = (box->box.padding.x == 0 && box->box.padding.y == 0) ? EINA_FALSE : EINA_TRUE;
+ min = (box->box.min.h == 0 && box->box.min.v == 0) ? EINA_FALSE : EINA_TRUE;
+ }
+
+ attr_amount = (layout || alt_layout) + align + padding + min;
+
+ if (attr_amount == 0) return;
+
+ if (attr_amount > 1)
+ indent_space = strlen(I6);
+
+ if (attr_amount)
+ {
+ if (attr_amount > 1)
+ BUF_APPEND(I5 "box {\n");
+ else
+ BUF_APPEND(I5 "box.");
+
+ if (layout && alt_layout)
+ BUF_APPENDF("%*slayout: \"%s\" \"%s\";\n", indent_space, "",
+ box->box.layout, box->box.alt_layout);
+ else if (!layout && alt_layout)
+ BUF_APPENDF("%*slayout: \"horizontal\" \"%s\";\n", indent_space, "",
+ box->box.alt_layout);
+ else if (layout && !alt_layout)
+ BUF_APPENDF("%*slayout: \"%s\";\n", indent_space, "",
+ box->box.layout);
+
+ if (align)
+ {
+ char align_str[strlen("align") + indent_space + 1];
+ snprintf(align_str, strlen("align") + indent_space + 1,
+ "%*salign", indent_space, "");
+ _edje_source_with_double_values_append(align_str, 2,
+ TO_DOUBLE(box->box.align.x),
+ TO_DOUBLE(box->box.align.y),
+ buf, &ret);
+ }
+
+ if (padding)
+ BUF_APPENDF("%*spadding: %d %d;\n", indent_space, "",
+ box->box.padding.x, box->box.padding.y);
+
+ if (min)
+ BUF_APPENDF("%*smin: %d %d;\n", indent_space, "",
+ box->box.min.h, box->box.min.v);
+
+ if (attr_amount > 1)
+ BUF_APPEND(I5 "}\n");
+ }
+}
+
+static void
_edje_generate_source_state_text(Edje *ed, Edje_Part_Description_Common *pd,
Edje_Part_Description_Common *inherit_pd,
Eina_Strbuf *buf)
@@ -14219,11 +14279,11 @@ _edje_generate_source_of_state(Evas_Object *obj, const char *part, const char *s
//Box
if (rp->part->type == EDJE_PART_TYPE_BOX)
- _edje_generate_source_state_box(pd, buf);
+ _edje_generate_source_state_box(pd, inherit_pd, buf);
//Table
if (rp->part->type == EDJE_PART_TYPE_TABLE)
- _edje_generate_source_state_table(pd, buf);
+ _edje_generate_source_state_table(pd, inherit_pd, buf);
//Image
if (rp->part->type == EDJE_PART_TYPE_IMAGE)