On Sun, Feb 9, 2014 at 11:37 PM, Davide Andreoli <d...@gurumeditation.it>wrote:

> 2014-02-09 14:59 GMT+01:00 nirajkr <niraj...@samsung.com>:
>
> > raster pushed a commit to branch master.
> >
> >
> >
> http://git.enlightenment.org/core/elementary.git/commit/?id=56a2c96ea7a731d6066aa7cb0964a633c5bed35c
> >
> > commit 56a2c96ea7a731d6066aa7cb0964a633c5bed35c
> > Author: nirajkr <niraj...@samsung.com>
> > Date:   Sun Feb 9 22:55:38 2014 +0900
> >
> >     label : Added the API to match the speed of label to different label
>
>
> >     Summary:
> >     Currently we do not set the speed of two label same
> >              This patch fetch the information of the previous
> >              label to set it to the next label to match the speed
> >              of the previous label
> >
>
> This new API is really, really bad !!!
> elm_label_slide_speed_match(lb, duration, textlen); !!
>
> what you really want here is just:
> elm_label_slide_speed_set(lb, speed);
>
> So that you can set the same speed on every label.
>
> I vote to revert this
>
> davemds
>
>
>
>
+1 here.

Actually I was reviewing this patch.
elm_label_slide_speed_set(lb, speed) is acceptable to me.

And to fit your actual requirement you need
elm_label_slide_speed_match(lb1, lb2)
This matches lb1's speed to lb2's speed and when lb2's speed is changed (by
duration_set or by changing text) lb1's speed should be changed accordingly.

Thanks.

Daniel Juyung Seo (SeoZ)



>
>
> >
> >     Reviewers: seoz, raster
> >
> >     Reviewed By: raster
> >
> >     CC: singh.amitesh
> >
> >     Differential Revision: https://phab.enlightenment.org/D531
> > ---
> >  src/bin/test_label.c       | 47 ++++++++++++++++++++++++++++++++
> >  src/lib/elm_label.c        | 68
> > +++++++++++++++++++++++++++++++++++++++++++---
> >  src/lib/elm_label_eo.h     | 32 ++++++++++++++++++++++
> >  src/lib/elm_label_legacy.h | 32 ++++++++++++++++++++++
> >  src/lib/elm_widget_label.h |  5 ++++
> >  5 files changed, 180 insertions(+), 4 deletions(-)
> >
> > diff --git a/src/bin/test_label.c b/src/bin/test_label.c
> > index 7e6a73d..d5e7898 100644
> > --- a/src/bin/test_label.c
> > +++ b/src/bin/test_label.c
> > @@ -113,6 +113,8 @@ void
> >  test_label2(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void
> > *event_info EINA_UNUSED)
> >  {
> >     Evas_Object *win, *gd, *rect, *lb, *rd, *rdg, *sl;
> > +   double duration;
> > +   Evas_Coord textlen;
> >
> >     win = elm_win_util_standard_add("label2", "Label 2");
> >     elm_win_autodel_set(win, EINA_TRUE);
> > @@ -212,6 +214,51 @@ test_label2(void *data EINA_UNUSED, Evas_Object *obj
> > EINA_UNUSED, void *event_in
> >     elm_grid_pack(gd, sl, 5, 60, 90, 10);
> >     evas_object_show(sl);
> >
> > +   /*Test label slide speed */
> > +   lb = elm_label_add(win);
> > +   elm_object_text_set(lb, "Test Label Slide Speed:");
> > +   elm_label_slide_mode_set(lb, ELM_LABEL_SLIDE_MODE_ALWAYS);
> > +   elm_label_slide_go(lb);
> > +   elm_grid_pack(gd, lb, 5, 70, 90, 10);
> > +   evas_object_show(lb);
> > +
> > +   rect = evas_object_rectangle_add(evas_object_evas_get(win));
> > +   elm_grid_pack(gd, rect, 5, 80, 90, 10);
> > +   evas_object_color_set(rect, 255, 125, 125, 255);
> > +   evas_object_show(rect);
> > +
> > +   lb = elm_label_add(win);
> > +   elm_object_style_set(lb, "slide_long");
> > +   elm_object_text_set(lb,
> > +                       "This is a label set to slide and this will"
> > +                       " test the speed of label with the below label."
> > +                       " This label has few extra char to test");
> > +   elm_label_slide_duration_set(lb, 8.0);
> > +   elm_label_slide_mode_set(lb,  ELM_LABEL_SLIDE_MODE_ALWAYS);
> > +   elm_label_slide_go(lb);
> > +   elm_grid_pack(gd, lb, 5, 80, 90, 10);
> > +   evas_object_show(lb);
> > +
> > +   //Get the required parameter of the previous label
> > +   duration = elm_label_slide_duration_get(lb);
> > +   textlen = elm_label_slide_text_length_get(lb);
> > +
> > +   rect = evas_object_rectangle_add(evas_object_evas_get(win));
> > +   elm_grid_pack(gd, rect, 5, 90, 90, 10);
> > +   evas_object_color_set(rect, 255, 125, 125, 255);
> > +   evas_object_show(rect);
> > +
> > +   lb = elm_label_add(win);
> > +   elm_object_style_set(lb, "slide_long");
> > +   elm_object_text_set(lb,
> > +                       "This is a label set to slide and this will"
> > +                       " match the speed of the upper label.");
> > +   elm_label_slide_mode_set(lb,  ELM_LABEL_SLIDE_MODE_ALWAYS);
> > +   elm_label_slide_speed_match(lb, duration, textlen);
> > +   elm_label_slide_go(lb);
> > +   elm_grid_pack(gd, lb, 5, 90, 90, 10);
> > +   evas_object_show(lb);
> > +
> >     evas_object_resize(win, 320, 320);
> >     evas_object_show(win);
> >  }
> > diff --git a/src/lib/elm_label.c b/src/lib/elm_label.c
> > index 976b186..a46badf 100644
> > --- a/src/lib/elm_label.c
> > +++ b/src/lib/elm_label.c
> > @@ -78,7 +78,9 @@ static void
> >  _label_slide_change(Evas_Object *obj)
> >  {
> >     Evas_Object *tb;
> > +   Evas_Coord   lw;
> >     char *plaintxt;
> > +   double speed;
> >     int plainlen = 0;
> >
> >     ELM_LABEL_DATA_GET(obj, sd);
> > @@ -138,6 +140,17 @@ _label_slide_change(Evas_Object *obj)
> >          Edje_Message_Float_Set *msg =
> >            alloca(sizeof(Edje_Message_Float_Set) + (sizeof(double)));
> >
> > +        evas_object_geometry_get(wd->resize_obj,
> > +                                  NULL, NULL, &lw, NULL);
> > +        if ((sd->slide_duration_recalc) &&
> > +            (lw > 0) &&
> > +            (sd->matchslide_duration > 0))
> > +          {
> > +             speed = (sd->matchslide_textlen + lw) /
> > (sd->matchslide_duration);
> > +             sd->slide_duration = (sd->text_formatted_length + lw) /
> > (speed);
> > +             sd->slide_duration_recalc = EINA_FALSE;
> > +          }
> > +
> >          msg->count = 1;
> >          msg->val[0] = sd->slide_duration;
> >
> > @@ -214,9 +227,10 @@ _on_label_resize(void *data,
> >                   Evas_Object *obj EINA_UNUSED,
> >                   void *event_info EINA_UNUSED)
> >  {
> > -   ELM_LABEL_DATA_GET(data, sd);
> > +  ELM_LABEL_DATA_GET(data, sd);
> >
> > -   if (sd->linewrap) elm_layout_sizing_eval(data);
> > +  if (sd->slide_duration_recalc) _label_slide_change(data);
> > +  if (sd->linewrap) elm_layout_sizing_eval(data);
> >  }
> >
> >  static int
> > @@ -324,6 +338,8 @@ _stringshare_key_value_replace(const char
> **srcstring,
> >  static void
> >  _elm_label_smart_text_set(Eo *obj, void *_pd, va_list *list)
> >  {
> > +   Evas_Object *tb;
> > +
> >     Elm_Label_Smart_Data *sd = _pd;
> >     ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
> >     const char *part = va_arg(*list, const char *);
> > @@ -341,6 +357,11 @@ _elm_label_smart_text_set(Eo *obj, void *_pd,
> va_list
> > *list)
> >          sd->lastw = 0;
> >          eo_do(obj, elm_obj_layout_sizing_eval());
> >       }
> > +
> > +   tb = (Evas_Object *)edje_object_part_object_get(wd->resize_obj,
> > +                                                   "elm.text");
> > +   evas_object_textblock_size_formatted_get(tb,
> > &sd->text_formatted_length, NULL);
> > +
> >     if (ret) *ret = int_ret;
> >  }
> >
> > @@ -674,6 +695,41 @@ elm_label_slide_duration_get(const Evas_Object *obj)
> >  }
> >
> >  EAPI void
> > +elm_label_slide_speed_match(Evas_Object *obj, double duration,
> Evas_Coord
> > textlen)
> > +{
> > +   ELM_LABEL_CHECK(obj);
> > +   eo_do(obj, elm_obj_label_slide_speed_match(duration, textlen));
> > +}
> > +
> > +static void
> > +_slide_speed_match(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
> > +{
> > +   double duration = va_arg(*list, double);
> > +   Evas_Coord textlen = va_arg(*list, Evas_Coord);
> > +   Elm_Label_Smart_Data *sd = _pd;
> > +   sd->matchslide_duration = duration;
> > +   sd->matchslide_textlen = textlen;
> > +   sd->slide_duration_recalc = EINA_TRUE;
> > +}
> > +
> > +EAPI Evas_Coord
> > +elm_label_slide_text_length_get(const Evas_Object *obj)
> > +{
> > +   ELM_LABEL_CHECK(obj) 0;
> > +   Evas_Coord ret = 0;
> > +   eo_do((Eo *) obj, elm_obj_label_slide_text_length_get(&ret));
> > +   return ret;
> > +}
> > +
> > +static void
> > +_slide_textlen_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
> > +{
> > +   Evas_Coord *ret = va_arg(*list, Evas_Coord *);
> > +   Elm_Label_Smart_Data *sd = _pd;
> > +   *ret = sd->text_formatted_length;
> > +}
> > +
> > +EAPI void
> >  elm_label_slide_go(Evas_Object *obj)
> >  {
> >     ELM_LABEL_CHECK(obj);
> > @@ -743,6 +799,8 @@ _class_constructor(Eo_Class *klass)
> >
> >  EO_OP_FUNC(ELM_OBJ_LABEL_ID(ELM_OBJ_LABEL_SUB_ID_SLIDE_DURATION_SET),
> > _slide_duration_set),
> >
> >  EO_OP_FUNC(ELM_OBJ_LABEL_ID(ELM_OBJ_LABEL_SUB_ID_SLIDE_DURATION_GET),
> > _slide_duration_get),
> >          EO_OP_FUNC(ELM_OBJ_LABEL_ID(ELM_OBJ_LABEL_SUB_ID_SLIDE_GO),
> > _slide_go),
> > +
> >  EO_OP_FUNC(ELM_OBJ_LABEL_ID(ELM_OBJ_LABEL_SUB_ID_SLIDE_SPEED_MATCH),
> > _slide_speed_match),
> > +
> >  EO_OP_FUNC(ELM_OBJ_LABEL_ID(ELM_OBJ_LABEL_SUB_ID_TEXT_LENGTH_GET),
> > _slide_textlen_get),
> >          EO_OP_FUNC_SENTINEL
> >     };
> >     eo_class_funcs_set(klass, func_desc);
> > @@ -758,9 +816,11 @@ static const Eo_Op_Description op_desc[] = {
> >       EO_OP_DESCRIPTION(ELM_OBJ_LABEL_SUB_ID_ELLIPSIS_GET, "Get the
> > ellipsis behavior of the label."),
> >       EO_OP_DESCRIPTION(ELM_OBJ_LABEL_SUB_ID_SLIDE_MODE_SET, "Set slide
> > effect mode of label widget."),
> >       EO_OP_DESCRIPTION(ELM_OBJ_LABEL_SUB_ID_SLIDE_MODE_GET, "Get current
> > slide effect mode."),
> > -     EO_OP_DESCRIPTION(ELM_OBJ_LABEL_SUB_ID_SLIDE_DURATION_SET, "Set the
> > slide duration (speed) of the label."),
> > -     EO_OP_DESCRIPTION(ELM_OBJ_LABEL_SUB_ID_SLIDE_DURATION_GET, "Get the
> > slide duration(speed) of the label."),
> > +     EO_OP_DESCRIPTION(ELM_OBJ_LABEL_SUB_ID_SLIDE_DURATION_SET, "Set the
> > slide duration  of the label."),
> > +     EO_OP_DESCRIPTION(ELM_OBJ_LABEL_SUB_ID_SLIDE_DURATION_GET, "Get the
> > slide duration of the label."),
> >       EO_OP_DESCRIPTION(ELM_OBJ_LABEL_SUB_ID_SLIDE_GO, "Start slide
> > effect."),
> > +     EO_OP_DESCRIPTION(ELM_OBJ_LABEL_SUB_ID_SLIDE_SPEED_MATCH, "Set the
> > required parameter to match slide speed."),
> > +     EO_OP_DESCRIPTION(ELM_OBJ_LABEL_SUB_ID_TEXT_LENGTH_GET, "Get the
> > text length of the label."),
> >       EO_OP_DESCRIPTION_SENTINEL
> >  };
> >  static const Eo_Class_Description class_desc = {
> > diff --git a/src/lib/elm_label_eo.h b/src/lib/elm_label_eo.h
> > index f79cb95..efd4013 100644
> > --- a/src/lib/elm_label_eo.h
> > +++ b/src/lib/elm_label_eo.h
> > @@ -22,6 +22,8 @@ enum
> >     ELM_OBJ_LABEL_SUB_ID_SLIDE_DURATION_SET,
> >     ELM_OBJ_LABEL_SUB_ID_SLIDE_DURATION_GET,
> >     ELM_OBJ_LABEL_SUB_ID_SLIDE_GO,
> > +   ELM_OBJ_LABEL_SUB_ID_SLIDE_SPEED_MATCH,
> > +   ELM_OBJ_LABEL_SUB_ID_TEXT_LENGTH_GET,
> >     ELM_OBJ_LABEL_SUB_ID_LAST
> >  };
> >
> > @@ -179,6 +181,36 @@ enum
> >   * @ingroup Label
> >   */
> >  #define elm_obj_label_slide_go()
> > ELM_OBJ_LABEL_ID(ELM_OBJ_LABEL_SUB_ID_SLIDE_GO)
> > +
> > +/**
> > + * @def elm_obj_label_slide_speed_match
> > + * @since 1.9
> > + *
> > + * @brief Set the required parameter to set the same speed of the label
> > + *
> > + * @param[in] duration
> > + * @param[in] textlen
> > + *
> > + * @see elm_label_slide_duration_set
> > + *
> > + * @ingroup Label
> > + */
> > +#define elm_obj_label_slide_speed_match(duration, textlen)
> > ELM_OBJ_LABEL_ID(ELM_OBJ_LABEL_SUB_ID_SLIDE_SPEED_MATCH),
> > EO_TYPECHECK(double, duration), EO_TYPECHECK(Evas_Coord, textlen)
> > +
> > +/**
> > + * @def elm_obj_label_slide_text_length_get
> > + * @since 1.9
> > + *
> > + * @brief Get the text label length
> > + *
> > + * @param[out] ret
> > + *
> > + * @see elm_object_text_set
> > + *
> > + * @ingroup Label
> > + */
> > +#define elm_obj_label_slide_text_length_get(ret)
> > ELM_OBJ_LABEL_ID(ELM_OBJ_LABEL_SUB_ID_TEXT_LENGTH_GET),
> > EO_TYPECHECK(Evas_Coord * , ret)
> > +
> >  /**
> >   * @}
> >   */
> > diff --git a/src/lib/elm_label_legacy.h b/src/lib/elm_label_legacy.h
> > index b3222b8..04cfc7e 100644
> > --- a/src/lib/elm_label_legacy.h
> > +++ b/src/lib/elm_label_legacy.h
> > @@ -162,3 +162,35 @@ EAPI double
> >  elm_label_slide_duration_get(const Evas_Object
> >   * @ingroup Label
> >   */
> >  EAPI void                        elm_label_slide_go(Evas_Object *obj);
> > +
> > +/**
> > + * @brief Set the required parameter to set the same speed of the label
> > + *
> > + * @param obj The label object
> > + * @param duration The duration of the previous slide label
> > + * @param duration The textlen of the previous slide label text
> > + *
> > + * @note If this API is called then it is not required to set the
> > + * duration of the label. Internally it will calcuate the duration
> > + * which will match the speed of the previous label. If the duration
> > + * is explicitly set it will override these parameters.
> > + *
> > + * @see elm_label_slide_duration_set()
> > + * @since 1.9
> > + *
> > + * @ingroup Label
> > + */
> > +EAPI void                        elm_label_slide_speed_match(Evas_Object
> > *obj, double duration, Evas_Coord textlen);
> > +
> > +/**
> > + * @brief Get the text length of the label
> > + *
> > + * @param obj The label object
> > + * @return The text length of the label
> > + *
> > + * @see elm_object_text_set()
> > + * @since 1.9
> > + *
> > + * @ingroup Label
> > + */
> > +EAPI Evas_Coord                  elm_label_slide_text_length_get(const
> > Evas_Object *obj);
> > diff --git a/src/lib/elm_widget_label.h b/src/lib/elm_widget_label.h
> > index 4e2ac72..4464e76 100644
> > --- a/src/lib/elm_widget_label.h
> > +++ b/src/lib/elm_widget_label.h
> > @@ -13,13 +13,18 @@ struct _Elm_Label_Smart_Data
> >  {
> >     const char           *format;
> >     double                slide_duration;
> > +   double                matchslide_duration;
> > +
> >     Evas_Coord            lastw;
> >     Evas_Coord            wrap_w;
> > +   Evas_Coord            text_formatted_length;
> > +   Evas_Coord            matchslide_textlen;
> >     Elm_Wrap_Type         linewrap;
> >     Elm_Label_Slide_Mode  slide_mode;
> >
> >     Eina_Bool             ellipsis : 1;
> >     Eina_Bool             slide_ellipsis : 1;
> > +   Eina_Bool             slide_duration_recalc : 1;
> >  };
> >
> >  #define ELM_LABEL_DATA_GET(o, sd) \
> >
> > --
> >
> >
> >
>
> ------------------------------------------------------------------------------
> Managing the Performance of Cloud-Based Applications
> Take advantage of what the Cloud has to offer - Avoid Common Pitfalls.
> Read the Whitepaper.
>
> http://pubads.g.doubleclick.net/gampad/clk?id=121051231&iu=/4140/ostg.clktrk
> _______________________________________________
> enlightenment-devel mailing list
> enlightenment-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
>
------------------------------------------------------------------------------
Managing the Performance of Cloud-Based Applications
Take advantage of what the Cloud has to offer - Avoid Common Pitfalls.
Read the Whitepaper.
http://pubads.g.doubleclick.net/gampad/clk?id=121051231&iu=/4140/ostg.clktrk
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to