edje: add part_valign property for internal usage 46/166146/1
authorYoungbok Shin <youngb.shin@samsung.com>
Tue, 2 Jan 2018 07:40:19 +0000 (16:40 +0900)
committerYoungbok Shin <youngb.shin@samsung.com>
Mon, 8 Jan 2018 07:42:49 +0000 (07:42 +0000)
@tizen_feature

Change-Id: I4e9f19fc68e2d43e19a733791a3c22b14ecc240f
(cherry picked from commit 9d52a3f37c2c09d994da5f9d2d985798acc95dbf)

src/lib/edje/edje_calc.c
src/lib/edje/edje_edit.c
src/lib/edje/edje_load.c
src/lib/edje/edje_object.eo
src/lib/edje/edje_private.h
src/lib/edje/edje_util.c

index 7395970..a6c2c73 100644 (file)
@@ -1368,15 +1368,29 @@ _edje_part_recalc_single_aspect(Edje *ed,
    params->eval.x = ADD(want_x,
                         MUL(SUB(want_w, params->eval.w),
                             desc->align.x));
+   /* TIZEN_ONLY(20180102): add part_valign property for internal usage */
+   if (ep->valign != -1.0)
+     params->eval.y = ADD(want_y,
+                          MUL(SUB(want_h, params->eval.h),
+                              ep->valign));
+   else
+   /* END */
    params->eval.y = ADD(want_y,
                         MUL(SUB(want_h, params->eval.h),
                             desc->align.y));
    return apref;
 }
 
+/* TIZEN_ONLY(20180102): add part_valign property for internal usage
 static void
 _edje_part_recalc_single_step(Edje_Part_Description_Common *desc,
                               Edje_Calc_Params *params)
+ */
+static void
+_edje_part_recalc_single_step(Edje_Real_Part *ep,
+                              Edje_Part_Description_Common *desc,
+                              Edje_Calc_Params *params)
+/* END */
 {
    if (desc->step.x > 0)
      {
@@ -1401,6 +1415,11 @@ _edje_part_recalc_single_step(Edje_Part_Description_Common *desc,
         new_h = desc->step.y * steps;
         if (params->eval.h > FROM_INT(new_h))
           {
+             /* TIZEN_ONLY(20180102): add part_valign property for internal usage */
+             if (ep->valign != -1.0)
+               params->eval.y = ADD(params->eval.y, SCALE(ep->valign, SUB(params->eval.h, FROM_INT(new_h))));
+             else
+             /* END */
              params->eval.y = ADD(params->eval.y, SCALE(desc->align.y, SUB(params->eval.h, FROM_INT(new_h))));
              params->eval.h = FROM_INT(new_h);
           }
@@ -2295,11 +2314,20 @@ _edje_part_recalc_single_min_length(FLOAT_T align, FLOAT_T *start, FLOAT_T *leng
      }
 }
 
+/* TIZEN_ONLY(20180102): add part_valign property for internal usage
 static void
 _edje_part_recalc_single_min(Edje_Part_Description_Common *desc,
                              Edje_Calc_Params *params,
                              int minw, int minh,
                              Edje_Internal_Aspect aspect)
+ */
+static void
+_edje_part_recalc_single_min(Edje_Real_Part *ep,
+                             Edje_Part_Description_Common *desc,
+                             Edje_Calc_Params *params,
+                             int minw, int minh,
+                             Edje_Internal_Aspect aspect)
+/* END */
 {
    FLOAT_T tmp;
    FLOAT_T w;
@@ -2349,6 +2377,11 @@ _edje_part_recalc_single_min(Edje_Part_Description_Common *desc,
      }
 
    _edje_part_recalc_single_min_length(desc->align.x, &params->eval.x, &params->eval.w, minw);
+   /* TIZEN_ONLY(20180102): add part_valign property for internal usage */
+   if (ep->valign != -1.0)
+     _edje_part_recalc_single_min_length(ep->valign, &params->eval.y, &params->eval.h, minh);
+   else
+   /* END */
    _edje_part_recalc_single_min_length(desc->align.y, &params->eval.y, &params->eval.h, minh);
 }
 
@@ -2365,11 +2398,20 @@ _edje_part_recalc_single_max_length(FLOAT_T align, FLOAT_T *start, FLOAT_T *leng
      }
 }
 
+/* TIZEN_ONLY(20180102): add part_valign property for internal usage
 static void
 _edje_part_recalc_single_max(Edje_Part_Description_Common *desc,
                              Edje_Calc_Params *params,
                              int maxw, int maxh,
                              Edje_Internal_Aspect aspect)
+ */
+static void
+_edje_part_recalc_single_max(Edje_Real_Part *ep,
+                             Edje_Part_Description_Common *desc,
+                             Edje_Calc_Params *params,
+                             int maxw, int maxh,
+                             Edje_Internal_Aspect aspect)
+/* END */
 {
    FLOAT_T tmp;
    FLOAT_T w;
@@ -2419,6 +2461,11 @@ _edje_part_recalc_single_max(Edje_Part_Description_Common *desc,
      }
 
    _edje_part_recalc_single_max_length(desc->align.x, &params->eval.x, &params->eval.w, maxw);
+   /* TIZEN_ONLY(20180102): add part_valign property for internal usage */
+   if (ep->valign != -1.0)
+     _edje_part_recalc_single_max_length(ep->valign, &params->eval.y, &params->eval.h, maxh);
+   else
+   /* END */
    _edje_part_recalc_single_max_length(desc->align.y, &params->eval.y, &params->eval.h, maxh);
 }
 
@@ -3188,7 +3235,11 @@ _edje_part_recalc_single(Edje *ed,
    apref = _edje_part_recalc_single_aspect(ed, ep, desc, params, &minw, &minh, &maxw, &maxh, pos);
 
    /* size step */
+   /* TIZEN_ONLY(20180102): add part_valign property for internal usage
    _edje_part_recalc_single_step(desc, params);
+    */
+   _edje_part_recalc_single_step(ep, desc, params);
+   /* END */
 
    /* colors */
    if (ep->part->type != EDJE_PART_TYPE_SPACER)
@@ -3403,10 +3454,18 @@ _edje_part_recalc_single(Edje *ed,
    params->req.h = TO_INT(params->eval.h);
 
    /* adjust for min size */
+   /* TIZEN_ONLY(20180102): add part_valign property for internal usage
    _edje_part_recalc_single_min(desc, params, minw, minh, apref);
+    */
+   _edje_part_recalc_single_min(ep, desc, params, minw, minh, apref);
+   /* END */
 
    /* adjust for max size */
+   /* TIZEN_ONLY(20180102): add part_valign property for internal usage
    _edje_part_recalc_single_max(desc, params, maxw, maxh, apref);
+    */
+   _edje_part_recalc_single_max(ep, desc, params, maxw, maxh, apref);
+   /* END */
 
    /* take care of dragable part */
    if (ep->drag)
index 738e63e..6be5c43 100644 (file)
@@ -3146,6 +3146,9 @@ _edje_edit_real_part_add(Evas_Object *obj, const char *name, Edje_Part_Type type
         return EINA_FALSE;
      }
    memset(rp, 0, sizeof(Edje_Real_Part));
+   /* TIZEN_ONLY(20180102): add part_valign property for internal usage */
+   rp->valign = -1.0;
+   /* END */
 
    /* Init Edje_Part */
    pc = ed->collection;
index 098af96..867503e 100644 (file)
@@ -668,6 +668,9 @@ _edje_object_file_set_internal(Evas_Object *obj, const Eina_File *file, const ch
                     }
 
                   memset(rp, 0, sizeof (Edje_Real_Part));
+                  /* TIZEN_ONLY(20180102): add part_valign property for internal usage */
+                  rp->valign = -1.0;
+                  /* END */
 
                   rp->param1.p.map = eina_cow_alloc(_edje_calc_params_map_cow);
 #ifdef HAVE_EPHYSICS
index 1556610..0765da9 100644 (file)
@@ -3081,6 +3081,30 @@ class Edje.Object (Evas.Smart_Clipped, Efl.File)
          }
       }
       /* END */
+      /* TIZEN_ONLY(20180102): add part_valign property for internal usage */
+      @property part_valign @internal {
+         set {
+            [[Sets the valign for a common description.
+
+              Do not use this API without understanding whats going on.
+              It is made for internal usage.
+            ]]
+            return: bool; [[$true, on success or $false, on error]]
+         }
+         get {
+            [[Gets the valign for a common description.
+
+              Do not use this API without understanding whats going on.
+              It is made for internal usage.
+            ]]
+         }
+         keys {
+            part: const(char)*; [[The part name]]
+         }
+         values {
+            valign: double; [[The valign 0.0~1.0. -1.0 for respect EDC's align value.]]
+         }
+      }
       /* TIZEN_ONLY(20170801): add text marquee duration set/get APIs for internal usages */
       @property part_text_marquee_duration @internal {
          set {
index 5d8c965..376d0b3 100644 (file)
@@ -2058,6 +2058,9 @@ struct _Edje_Real_Part
       Edje_Real_Part_Vector    *vector;
    } typedata; // 4
    FLOAT_T                   description_pos; // 8
+   /* TIZEN_ONLY(20180102): add part_valign property for internal usage */
+   FLOAT_T                   valign; // 8
+   /* END */
    Edje_Rectangle            req; // 16
    int                       x, y, w, h; // 16
    int                       clicked_button; // 4
index d720ea7..ecbebd7 100644 (file)
@@ -6987,6 +6987,50 @@ _edje_object_part_text_valign_get(Eo *eo_obj EINA_UNUSED, Edje *ed, const char *
 }
 /* END */
 
+/* TIZEN_ONLY(20180102): add part_valign property for internal usage */
+EOLIAN Eina_Bool
+_edje_object_part_valign_set(Eo *eo_obj EINA_UNUSED, Edje *ed, const char *part, double valign)
+{
+   Edje_Real_Part *rp;
+   FLOAT_T va;
+
+   if (!part) return EINA_FALSE;
+   rp = _edje_real_part_recursive_get(&ed, part);
+   if (!rp) return EINA_FALSE;
+
+   va = FROM_DOUBLE(valign);
+
+   if (rp->valign != va)
+     {
+        rp->valign = va;
+
+        ed->dirty = EINA_TRUE;
+        ed->recalc_call = EINA_TRUE;
+#ifdef EDJE_CALC_CACHE
+        ed->all_part_change = EINA_TRUE;
+#endif
+        _edje_recalc(ed);
+     }
+
+   return EINA_TRUE;
+}
+
+EOLIAN double
+_edje_object_part_valign_get(Eo *eo_obj EINA_UNUSED, Edje *ed, const char *part)
+{
+   Edje_Real_Part *rp;
+
+   if (!part) return -1.0;
+   rp = _edje_real_part_recursive_get(&ed, part);
+   if (!rp) return -1.0;
+
+   if (rp->valign == -1.0)
+     return TO_DOUBLE(rp->chosen_description->align.y);
+
+   return TO_DOUBLE(rp->valign);
+}
+/* END */
+
 /* TIZEN_ONLY(20170801): add text marquee duration set/get APIs for internal usages */
 EOLIAN Eina_Bool
 _edje_object_part_text_marquee_duration_set(Eo *eo_obj EINA_UNUSED, Edje *ed, const char *part, double duration)