herdsman pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=f107ea24325c66ce5a2fcb7beb3947ebe77c66ef

commit f107ea24325c66ce5a2fcb7beb3947ebe77c66ef
Author: SubodhKumar <[email protected]>
Date:   Mon Sep 17 00:28:22 2018 +0300

    edje: Remove hack code
    
    Summary:
    special calculation for textblock is for fit calculation.
    This is obvious from code that fit is being calculated
    before text is actually been set to textblock.
    I am not sure whether this is intentional or mistake
    but it make sense to calculate fit after text is being
    set so that formatted and native calculation can be proper.
    
    @fix
    
    Test Plan: NA
    
    Reviewers: cedric, zmike, herdsman, devilhorns
    
    Subscribers: stefan_schmidt, #reviewers, #committers, shilpasingh
    
    Tags: #efl
    
    Differential Revision: https://phab.enlightenment.org/D6045
---
 src/lib/edje/edje_calc.c      |   5 +-
 src/lib/edje/edje_private.h   |   5 --
 src/lib/edje/edje_textblock.c | 167 ++++++++++++++++++------------------------
 3 files changed, 74 insertions(+), 103 deletions(-)

diff --git a/src/lib/edje/edje_calc.c b/src/lib/edje/edje_calc.c
index 86c7aafd19..610f55773c 100644
--- a/src/lib/edje/edje_calc.c
+++ b/src/lib/edje/edje_calc.c
@@ -4972,14 +4972,11 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int 
flags, Edje_Calc_Params *sta
              _edje_table_recalc_apply(ed, ep, pf, (Edje_Part_Description_Table 
*)chosen_desc);
              break;
 
-           case EDJE_PART_TYPE_TEXTBLOCK:
-             _edje_textblock_recalc_apply(ed, ep, pf, 
(Edje_Part_Description_Text *)chosen_desc);
-             break;
-
            case EDJE_PART_TYPE_VECTOR:
              _edje_svg_recalc_apply(ed, ep, pf, (Edje_Part_Description_Vector 
*)chosen_desc, pos);
              break;
 
+           case EDJE_PART_TYPE_TEXTBLOCK:
            case EDJE_PART_TYPE_EXTERNAL:
            case EDJE_PART_TYPE_RECTANGLE:
            case EDJE_PART_TYPE_SWALLOW:
diff --git a/src/lib/edje/edje_private.h b/src/lib/edje/edje_private.h
index 2c12ea6a51..8429175a97 100644
--- a/src/lib/edje/edje_private.h
+++ b/src/lib/edje/edje_private.h
@@ -2575,11 +2575,6 @@ _edje_part_recalc_single_textblock(FLOAT_T sc,
                                    Edje_Calc_Params *params,
                                    int *minw, int *minh,
                                    int *maxw, int *maxh);
-void
-_edje_textblock_recalc_apply(Edje *ed, Edje_Real_Part *ep,
-                             Edje_Calc_Params *params,
-                             Edje_Part_Description_Text *chosen_desc);
-
 
 Edje_Real_Part   *_edje_real_part_get(const Edje *ed, const char *part);
 Edje_Real_Part   *_edje_real_part_recursive_get(Edje **ed, const char *part);
diff --git a/src/lib/edje/edje_textblock.c b/src/lib/edje/edje_textblock.c
index 312238735c..6786b0d91a 100644
--- a/src/lib/edje/edje_textblock.c
+++ b/src/lib/edje/edje_textblock.c
@@ -460,92 +460,92 @@ _edje_part_recalc_single_textblock(FLOAT_T sc,
         if (ep->part->scale)
           evas_object_scale_set(ep->object, TO_DOUBLE(sc));
 
-        if ((chosen_desc->text.fit_x) || (chosen_desc->text.fit_y))
+        if (stl)
           {
-             double base_s = 1.0;
-             double orig_s;
-             double s = base_s;
-
-             if (ep->part->scale) base_s = TO_DOUBLE(sc);
-             efl_gfx_entity_scale_set(ep->object, base_s);
-             efl_canvas_text_size_native_get(ep->object, &tw, &th);
-
-             orig_s = base_s;
-             /* Now make it bigger so calculations will be more accurate
-              * and less influenced by hinting... */
-             {
-                orig_s = 
_edje_part_recalc_single_textblock_scale_range_adjust(chosen_desc, base_s,
-                                                                               
orig_s * TO_INT(params->eval.w) / tw);
-                efl_gfx_entity_scale_set(ep->object, orig_s);
-                efl_canvas_text_size_native_get(ep->object, &tw, &th);
-             }
-             if (chosen_desc->text.fit_x)
+             if (evas_object_textblock_style_get(ep->object) != stl->style)
+               evas_object_textblock_style_set(ep->object, stl->style);
+             // FIXME: need to account for editing
+             if (ep->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE)
                {
-                  if (tw > 0)
-                    {
-                       s = 
_edje_part_recalc_single_textblock_scale_range_adjust(chosen_desc, base_s,
-                                                                               
  orig_s * TO_INT(params->eval.w) / tw);
-                       efl_gfx_entity_scale_set(ep->object, s);
-                       efl_canvas_text_size_native_get(ep->object, NULL, NULL);
-                    }
+                  // do nothing - should be done elsewhere
+               }
+             else
+               {
+                  evas_object_textblock_text_markup_set(ep->object, text);
                }
-             if (chosen_desc->text.fit_y)
+
+             if ((chosen_desc->text.fit_x) || (chosen_desc->text.fit_y))
                {
-                  if (th > 0)
+                  double base_s = 1.0;
+                  double orig_s;
+                  double s = base_s;
+
+                  if (ep->part->scale) base_s = TO_DOUBLE(sc);
+                  efl_gfx_entity_scale_set(ep->object, base_s);
+                  efl_canvas_text_size_native_get(ep->object, &tw, &th);
+
+                  orig_s = base_s;
+                  /* Now make it bigger so calculations will be more accurate
+                   * and less influenced by hinting... */
+                  {
+                     orig_s = 
_edje_part_recalc_single_textblock_scale_range_adjust(chosen_desc, base_s,
+                                                                               
     orig_s * TO_INT(params->eval.w) / tw);
+                     efl_gfx_entity_scale_set(ep->object, orig_s);
+                     efl_canvas_text_size_native_get(ep->object, &tw, &th);
+                  }
+                  if (chosen_desc->text.fit_x)
                     {
-                       double tmp_s = 
_edje_part_recalc_single_textblock_scale_range_adjust(chosen_desc, base_s,
-                                                                               
             orig_s * TO_INT(params->eval.h) / th);
-                       /* If we already have X fit, restrict Y to be no bigger
-                        * than what we got with X. */
-                       if (!((chosen_desc->text.fit_x) && (tmp_s > s)))
+                       if (tw > 0)
                          {
-                            s = tmp_s;
+                            s = 
_edje_part_recalc_single_textblock_scale_range_adjust(chosen_desc, base_s,
+                                                                               
       orig_s * TO_INT(params->eval.w) / tw);
+                            efl_gfx_entity_scale_set(ep->object, s);
+                            efl_canvas_text_size_native_get(ep->object, NULL, 
NULL);
                          }
+                    }
+                  if (chosen_desc->text.fit_y)
+                    {
+                       if (th > 0)
+                         {
+                            double tmp_s = 
_edje_part_recalc_single_textblock_scale_range_adjust(chosen_desc, base_s,
+                                                                               
                  orig_s * TO_INT(params->eval.h) / th);
+                            /* If we already have X fit, restrict Y to be no 
bigger
+                             * than what we got with X. */
+                            if (!((chosen_desc->text.fit_x) && (tmp_s > s)))
+                              {
+                                 s = tmp_s;
+                              }
 
-                       efl_gfx_entity_scale_set(ep->object, s);
-                       efl_canvas_text_size_native_get(ep->object, NULL, NULL);
+                            efl_gfx_entity_scale_set(ep->object, s);
+                            efl_canvas_text_size_native_get(ep->object, NULL, 
NULL);
+                         }
                     }
-               }
 
-             /* Final tuning, try going down 90% at a time, hoping it'll
-              * actually end up being correct. */
-             {
-                int i = 5;   /* Tries before we give up. */
-                Evas_Coord fw, fh;
-                efl_canvas_text_size_native_get(ep->object, &fw, &fh);
-
-                /* If we are still too big, try reducing the size to
-                 * 95% each try. */
-                while ((i > 0) &&
-                       ((chosen_desc->text.fit_x && (fw > 
TO_INT(params->eval.w))) ||
-                        (chosen_desc->text.fit_y && (fh > 
TO_INT(params->eval.h)))))
+                  /* Final tuning, try going down 90% at a time, hoping it'll
+                   * actually end up being correct. */
                   {
-                     double tmp_s = 
_edje_part_recalc_single_textblock_scale_range_adjust(chosen_desc, base_s, s * 
0.95);
-
-                     /* Break if we are not making any progress. */
-                     if (EQ(tmp_s, s))
-                       break;
-                     s = tmp_s;
-
-                     efl_gfx_entity_scale_set(ep->object, s);
+                     int i = 5;   /* Tries before we give up. */
+                     Evas_Coord fw, fh;
                      efl_canvas_text_size_native_get(ep->object, &fw, &fh);
-                     i--;
-                  }
-             }
-          }
 
-        if (stl)
-          {
-             if (evas_object_textblock_style_get(ep->object) != stl->style)
-               evas_object_textblock_style_set(ep->object, stl->style);
-             // FIXME: need to account for editing
-             if (ep->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE)
-               {
-                  // do nothing - should be done elsewhere
-               }
-             else
-               {
-                  evas_object_textblock_text_markup_set(ep->object, text);
+                     /* If we are still too big, try reducing the size to
+                      * 95% each try. */
+                     while ((i > 0) &&
+                            ((chosen_desc->text.fit_x && (fw > 
TO_INT(params->eval.w))) ||
+                             (chosen_desc->text.fit_y && (fh > 
TO_INT(params->eval.h)))))
+                       {
+                          double tmp_s = 
_edje_part_recalc_single_textblock_scale_range_adjust(chosen_desc, base_s, s * 
0.95);
+
+                          /* Break if we are not making any progress. */
+                          if (EQ(tmp_s, s))
+                            break;
+                          s = tmp_s;
+
+                          efl_gfx_entity_scale_set(ep->object, s);
+                          efl_canvas_text_size_native_get(ep->object, &fw, 
&fh);
+                          i--;
+                       }
+                  }
                }
 
              if ((ed->file->efl_version.major >= 1) && 
(ed->file->efl_version.minor >= 19))
@@ -569,24 +569,3 @@ _edje_part_recalc_single_textblock(FLOAT_T sc,
         evas_object_textblock_valign_set(ep->object, 
TO_DOUBLE(chosen_desc->text.align.y));
      }
 }
-
-void
-_edje_textblock_recalc_apply(Edje *ed, Edje_Real_Part *ep,
-                             Edje_Calc_Params *params,
-                             Edje_Part_Description_Text *chosen_desc)
-{
-   /* FIXME: this is just an hack. */
-   FLOAT_T sc;
-
-#if 0
-   _get_text(ep);
-#endif
-
-   sc = DIV(ed->scale, ed->file->base_scale);
-   if (EQ(sc, ZERO)) sc = DIV(_edje_scale, ed->file->base_scale);
-   if (chosen_desc->text.fit_x || chosen_desc->text.fit_y)
-     {
-        _edje_part_recalc_single_textblock(sc, ed, ep, chosen_desc, params,
-                                           NULL, NULL, NULL, NULL);
-     }
-}

-- 


Reply via email to