platform/upstream/efl.git
4 years agoecore_wl2: ++safety code 16/239516/1
Shinwoo Kim [Mon, 27 Jul 2020 09:22:33 +0000 (18:22 +0900)]
ecore_wl2: ++safety code

add return value checking, and deallocate resource if it fails.

Change-Id: Ieebab8dead4465fd1c454d7022d570ecfd8679d0

4 years agocanvas engine: ++safety code 83/239483/1
Hermet Park [Mon, 27 Jul 2020 05:27:52 +0000 (14:27 +0900)]
canvas engine: ++safety code

added null checking, no logical changes.

Change-Id: Ia5b4dde77567a8854ad852aa0dee90dbf9d8e418

4 years agoecore_wl2: exclude video buffer from composition 71/239071/2
Shinwoo Kim [Tue, 21 Jul 2020 11:15:10 +0000 (20:15 +0900)]
ecore_wl2: exclude video buffer from composition

The buffer used for UI and Video sync does not have to be composed.
E20 does not compose if the buffer size is 1x1.

*tizen-fix

Change-Id: Ic5dd1ea97720eabe2b51d90b952f53bf28087141

4 years agoedje_cc: fix crash on image data initialization 93/239293/1 submit/tizen/20200723.215228
Yeongjong Lee [Thu, 23 Jul 2020 10:35:12 +0000 (19:35 +0900)]
edje_cc: fix crash on image data initialization

Summary:
Since commit a8538bacce1457a91e28b39a6417eaadb4744b50 a crash occurs when
Images.Set.Image is unused.

To avoid a crash, this patch skips setting image data for unused image sets.

Test Plan:

$edje_cc basic.edc

basic.edc
```
collections {
   set {
      name: "bubble";
      image {
         image: "bubble.png" COMP;
      }
   }
}
```

Reviewers: raster

Subscribers: cedric, #reviewers, #committers, eagleeye

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D12063

Change-Id: Ibcb14df831f0a6eb51d69267b379f6480256969f

4 years agoelementary: fix to calculate its min size after setting a style 92/239192/2
Yeongjong Lee [Wed, 22 Jul 2020 10:27:28 +0000 (19:27 +0900)]
elementary: fix to calculate its min size after setting a style

after replacing style of a widget, min size calculation should be needed.
this patch fixes them to calculate its min size after setting a style.

@tizen_fix

Co-authored-by: Wonki Kim <wonki_.kim@samsung.com>
Change-Id: Id974a9bfdda6b5c4230da4e44d3d6410da1b85e8

4 years agoelementary: modify to call group_calculate after creating 91/239191/2
Yeongjong Lee [Wed, 22 Jul 2020 10:20:09 +0000 (19:20 +0900)]
elementary: modify to call group_calculate after creating

user can't get min size for check/radios that have a min size definition of edc
just right after creating the objects.
user can get it after once it executes group_calculate.

to keep behavior backward compatability, this patch calls group_calculate
after creating the objects

@tizen_fix

Co-authored-by: Wonki Kim <wonki_.kim@samsung.com>
Change-Id: Icd08b60a516cc3ba4b5472bc013fddc5089d0a9a

4 years agoedje_textblock: remove duplicated textblock style properties 93/239193/1
Bowon Ryu [Wed, 22 Jul 2020 10:16:32 +0000 (19:16 +0900)]
edje_textblock: remove duplicated textblock style properties

Summary:
When there is "font" and "font_size" in  textblock style (already defined),
If "font" and "font_size" are set using edje_text_class_set(),
then "font" and "font_size" are defined duplicated in texblock style through eina_strbuf_append.

Duplicate properties use memory unnecessarily,
and also it is possible to cause confusion at debbuging.

This patch replaces duplicate properties "font", "font_size" using eina_strbuf_replace.

Test Plan:
* textblock style in edc
"font=Sans font_size=20 wrap=mixed text_class=TEXT_CLASS";

* edje_text_class_set in c
edje_text_class_set("TEXT_CLASS", "font=DejavuSans", 40);

* textblock style at runtime (BEFORE)
DEFAULT='font=Sans font_size=20 wrap=mixed font_size=40.0 font=DejavuSans'

* textblock style at runtime (AFTER)
DEFAULT='font=DejavuSans font_size=40 wrap=mixed'

Reviewers: subodh6129, woohyun, ali.alzyod

Reviewed By: ali.alzyod

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D11962

Change-Id: I5ca923695f49dd77b9f8de487a8a294af126a29d

4 years agoelm - genlist/grid - call realized/unrealized item func cb after eo cb
Carsten Haitzler (Rasterman) [Tue, 21 Jul 2020 07:56:16 +0000 (08:56 +0100)]
elm - genlist/grid - call realized/unrealized item func cb after eo cb

4 years agoevas_vg_cache: Add sector_list_get 63/238763/4
JunsuChoi [Fri, 17 Jul 2020 03:54:41 +0000 (12:54 +0900)]
evas_vg_cache: Add sector_list_get

Add an API that if there is sector data in animation, returns a list of it.

@TIZEN_ONLY

Change-Id: Ib375e99ccaac924b3dff156f452597ae6a6f4128

4 years agoEfl.Gfx.Frame_Contoller: Add sector_list property 64/238764/4
JunsuChoi [Fri, 17 Jul 2020 03:54:50 +0000 (12:54 +0900)]
Efl.Gfx.Frame_Contoller: Add sector_list property

sector_list pass information of sectors in animation data.

@TIZEN_ONLY

Change-Id: I55325042d2ae0e5af7f3960fb853349d2fbb4fda

4 years agoelementary: remove since_tizen 6.0 tag from elm_relative_container 70/238970/2
Yeongjong Lee [Tue, 21 Jul 2020 01:38:04 +0000 (10:38 +0900)]
elementary: remove since_tizen 6.0 tag from elm_relative_container

since_tizen tag will be generated by API Versioning script.

@tizen_fix

Change-Id: Ie6d9ac4dd99fc4dccc1a694221138e1498e8dea5

4 years agogenlist : remove focusable conditions for wearable feature accepted/tizen/unified/20200721.142254 submit/tizen/20200720.225554
SangHyeon Jade Lee [Tue, 30 Jun 2020 00:48:38 +0000 (09:48 +0900)]
genlist : remove focusable conditions for wearable feature

disable/display mode is not a restriction of focus in wearable.

Change-Id: Ic26ff5e4f610f0fb9d73e63b9cfe11cc173d2c90

4 years agoelm - genlist+gird - use item specific realize/unrealize not eo callback
Carsten Haitzler (Rasterman) [Mon, 20 Jul 2020 21:24:31 +0000 (22:24 +0100)]
elm - genlist+gird - use item specific realize/unrealize not eo callback

this saves a lot of cpu overhead to specialize this with func ptrs in
the widget item struct instead of everyone listening on the parent
gengrid/genlist widget and eo having to walk lots of callbacks and
call them all...

major optimization

@opt

4 years agowin - x io errors really just have to exit, so call the iorr cb + exit
Carsten Haitzler (Rasterman) [Mon, 20 Jul 2020 13:32:12 +0000 (14:32 +0100)]
win - x io errors really just have to exit, so call the iorr cb + exit

from xlib man page:

The XSetIOErrorHandler sets the fatal I/O error  handler. Xlib  calls
the  program's  supplied error handler if any sort of system call error
occurs (for example, the connection to the server was lost). This  is
assumed  to be a fatal condition, and the called routine should not re‐
turn.  If the I/O error handler does return, the client process exits.

@fix

4 years agoefl: make all _class_get() functions const
Marcel Hollerbach [Thu, 16 Jul 2020 10:39:23 +0000 (12:39 +0200)]
efl: make all _class_get() functions const

please note, not the return type, but the function.
When appending __attribute__((const)) to a function, the compiler is
told that its enough to call this function once in a function.

This is quite often happening when we are efl_data_scope_get and
efl_super in a function that is different from a implemented function.

The compiler now starts to remove the calls that aggressivly that we
need to ensure that these calls are not removed, which means, the static
function calls, and the eo init are now checking the return value of
these functions, to ensure that they are called.

Please note that you now have to be carefull when your app calls
eo_shutdown, if it does so, you *must* call it at the end of a function,
or never call class_get after that anymore.

Overall this improves elm test runs 0.1s which is fair i guess, the main
thing that is faster is textrendering, where is also the point where
this is the most beneficial.

Please note, this replaces 42 occurences of double _class_get() ... THAT
is a sign!

Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org>
Reviewed-by: Daniel Kolesa <daniel@octaforge.org>
Differential Revision: https://phab.enlightenment.org/D12057

4 years agoEina log: flush stderr on mintty-based terminals submit/tizen/20200719.223823
Vincent Torri [Sun, 19 Jul 2020 17:27:49 +0000 (18:27 +0100)]
Eina log: flush stderr on mintty-based terminals

Summary: on those terminal, stderr is never flushed, so errors messages are not displayed when, for example, the app crashes

Test Plan:
test program :

```#include <Eina.h>

#define ERR(...)  EINA_LOG_DOM_ERR(log_dom, __VA_ARGS__)

int main()
{
  int log_dom = -1;

  eina_init();

  log_dom = eina_log_domain_register("eet", EINA_COLOR_CYAN);
  if (log_dom < 0)
    {
      printf("error register\n");
      return 0;
    }

  ERR("an error.");

  while (1)
    {
    }

  return 0;
}
```

without the patch, nothing is displayed, even after a Ctrl-C to finish the program

with the patch, the error message is displayed

Reviewers: raster

Reviewed By: raster

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D12058

4 years agoRevert "edje: Avoid string duplication when possible."
Carsten Haitzler (Rasterman) [Fri, 17 Jul 2020 09:35:52 +0000 (10:35 +0100)]
Revert "edje: Avoid string duplication when possible."

This reverts commit 8941514b467ce3e5d02c9b936d35a9d393989260.

found that this breaks e's systray icon layout... :(

4 years agoelementary: introduce elm_relative_container 22/238722/5
Yeongjong Lee [Thu, 16 Jul 2020 04:10:02 +0000 (13:10 +0900)]
elementary: introduce elm_relative_container

A relative container calculates the size and position of all the children based
on their relationship to each other.
For more information, please see documentation and examples.

@tizen_fix

Change-Id: I72b3af63a39e2944966392878ae0b0569cf149ec

4 years agoefl_ui_image: remove the unnecessary code in efl_file_unload 46/238746/1
Taehyub Kim [Fri, 17 Jul 2020 01:08:41 +0000 (10:08 +0900)]
efl_ui_image: remove the unnecessary code in efl_file_unload

Summary:
we don't need the image preload api call in efl_file_unload,
this make the unexpected SIG_LOAD_ERROR emit, when elm_image_memfile_set() is called.

@fix

Reviewers: Hermet, jsuya, kimcinoo

Reviewed By: Hermet

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D12056

Change-Id: I29415b8e95ed7be0bb5e3bc8a3f185ed0e69077a

4 years agoedje example - dont leak text
Carsten Haitzler (Rasterman) [Thu, 16 Jul 2020 20:00:36 +0000 (21:00 +0100)]
edje example - dont leak text

4 years agoedje: Avoid string duplication when possible.
Woochanlee [Thu, 16 Jul 2020 10:37:10 +0000 (11:37 +0100)]
edje: Avoid string duplication when possible.

Summary:
Most use case the part name dosen't contain the recursive name
so we don't have to go through expensive eina_string_split operation.

Test Plan:
edje-suite (34/37 edje-suite                              OK       0.67 s)
elementary-test
app launching on enlightenment

Reviewers: raster, smohanty, Hermet

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D12055

4 years agoedje_cc : resolve build warning
Ali Alzyod [Thu, 16 Jul 2020 08:58:45 +0000 (09:58 +0100)]
edje_cc : resolve build warning

Reviewers: raster

Reviewed By: raster

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D12054

4 years agoelm: tests: fix typo in test name
Stefan Schmidt [Thu, 16 Jul 2020 08:59:22 +0000 (10:59 +0200)]
elm: tests: fix typo in test name

Found while working on exactness scenarios. Better get this fixed here
before we use it in tools like exactness and make it harder to change.

4 years agoci: travis: force meson version 0.54.3 as install for codecov
Stefan Schmidt [Thu, 16 Jul 2020 08:04:49 +0000 (10:04 +0200)]
ci: travis: force meson version 0.54.3 as install for codecov

The newest meson 0.55 release is broken for a coverage build. (Version
0.55.1 should get the needed fix from this pull rewuest: https://github.com/mesonbuild/meson/pull/7411)

For now we force 0.54.3 as known working version.

4 years agoecore_wl2: support tizen_renderer protocol 15/238015/4
Changyeon Lee [Tue, 7 Jul 2020 09:36:18 +0000 (18:36 +0900)]
ecore_wl2: support tizen_renderer protocol

Some target can display only specific buffer at hardware layer.
enlightenment sends buffer to render engine (egl or software engine)
of client when enlightenment wants to display at hardware layer and
enlightenment wait that client attach buffer by render engine.
but if client doesn't have change of rendering after buffer is sent,
render engine doesn't render at buffer.
tizen_renderer protocol and redraw_request event were added.
enlightenment sends redraw_request event after buffer is sent and
wants client redraws at wl_surface.

1. add event ECORE_WL2_EVENT_WINDOW_REDRAW_REQUEST and
   Ecore_Wl2_Event_Window_Redraw_Request
2. add damage to ecore_evas in callback of redraw request

Change-Id: I951b458c10d8163cc37583ededcabd4cd807531e

4 years agospec: disable avif evas image loader
Jongmin Lee [Wed, 15 Jul 2020 22:29:45 +0000 (07:29 +0900)]
spec: disable avif evas image loader

Change-Id: I8d0450b3cd3a9c3a4dd1539ec03202c9f8ede4c2

4 years agomeson: allow empty values in disabler/bindings array
Daniel Kolesa [Wed, 15 Jul 2020 18:07:46 +0000 (20:07 +0200)]
meson: allow empty values in disabler/bindings array

This is supposed to simplify things for distro packagers and is
inspired by other projects doing this, e.g. Mesa.

The idea here is that the provided lists can now begin with a comma,
unlike before. This allows for things such as:

evas_disablers=""
if [ -z "$build_option_lottie" ]; then
    evas_disablers+=",json"
fi
if [ -z "$build_option_avif" ]; then
    evas_disablers+=",avif"
fi
...
configure_args+=" -Devas-loaders-disabler=$evas_disablers"

Previously this would fail because meson would interpret the
comma at the beginning as having an empty-string value in the
array, and checking whether the string is already empty is too
clunky.

4 years agoRevert "Revert "ci: travis: make sure we disable avif loader by default in our jobs""
Carsten Haitzler (Rasterman) [Wed, 15 Jul 2020 18:16:57 +0000 (19:16 +0100)]
Revert "Revert "ci: travis: make sure we disable avif loader by default in our jobs""

This reverts commit 42e3411ed7dacc652bd1c64d94941d7ac6aa67c4.

4 years agoEvas: add avif evas loader and saver
Vincent Torri [Wed, 15 Jul 2020 17:51:27 +0000 (18:51 +0100)]
Evas: add avif evas loader and saver

Summary:
Add AV1 image file loader and saver to Evas

The loader can be tested with this code :

```
#include <stdlib.h>
#include <stdio.h>

#include <Eina.h>
#include <Ecore.h>
#include <Evas.h>
#include <Ecore_Evas.h>

static int i = 0;

static unsigned char _timer(void *data)
{
  Evas_Object *o = (Evas_Object *)data;

  if (i < evas_object_image_animated_frame_count_get(o))
    {
      evas_object_image_animated_frame_set(o, i);
      i++;
      return ECORE_CALLBACK_RENEW;
    }

  return ECORE_CALLBACK_DONE;
}

static void _quit(Ecore_Evas *ee)
{
  ecore_main_loop_quit();
  (void)ee;
}

int main(int argc, char *argv[])
{
  Ecore_Evas *ee;
  Evas *evas;
  Evas_Object *o;
  int w,h;
  Evas_Load_Error err;

  if (argc < 2)
    {
      printf("usage : %s file\n", argv[0]);
      return 1;
    }

  ecore_evas_init();

  ee = ecore_evas_new(NULL, 0, 0, 1, 1, NULL);
  if (!ee)
    {
      printf("no ee\n");
      return 0;
    }

  evas = ecore_evas_get(ee);
  ecore_evas_title_set(ee, "avif test");
  ecore_evas_callback_delete_request_set(ee, _quit);

  o = evas_object_image_add(evas);
  evas_object_image_file_set(o, argv[1], NULL);
  err = evas_object_image_load_error_get(o);
  if (err != EVAS_LOAD_ERROR_NONE)
    {
      fprintf(stderr, "could not load image '%s'. error string is \"%s\"\n",
              argv[1], evas_load_error_str(err));
      return 1;
    }

  evas_object_image_size_get(o, &w, &h);
  evas_object_image_fill_set(o, 0, 0, w, h);
  evas_object_move(o, 0, 0);
  evas_object_resize(o, w, h);
      evas_object_show(o);

  printf("animated : %s\n", evas_object_image_animated_get(o) ? "yes" : "no");
  fflush(stdout);

  if (evas_object_image_animated_get(o))
    {
      Ecore_Timer *timer;
      printf("frame count : %d\n", evas_object_image_animated_frame_count_get(o));
      printf("duration    : %f\n", evas_object_image_animated_frame_duration_get(o,1,0));
      printf("loop count  : %d\n", evas_object_image_animated_loop_count_get(o));
      fflush(stdout);

      timer = ecore_timer_add(evas_object_image_animated_frame_duration_get(o,1,0), _timer, o);
    }

  ecore_evas_resize(ee, w,  h);
  ecore_evas_show(ee);

  ecore_main_loop_begin();

  ecore_evas_shutdown();

  return 0;
}
```

non animated files : https://github.com/AOMediaCodec/libavif/tree/master/tests/data/originals
animated files : https://github.com/AOMediaCodec/av1-avif/tree/master/testFiles/Netflix/avifs

to test the saver :

```
#include <stdlib.h>
#include <stdio.h>
#include <math.h>

#include <Eina.h>
#include <Ecore.h>
#include <Evas.h>
#include <Ecore_Evas.h>

void _quit(Ecore_Evas *ee)
{
  ecore_main_loop_quit();
  (void)ee;
}

static Evas_Object *
display_data(int w, int h, const char *title, unsigned int *data)
{
  Ecore_Evas *ee;
  Evas *evas;
  Evas_Object *o;
  unsigned int *d;

  ee = ecore_evas_new(NULL, 0, 0, w, h, NULL);
  if (!ee)
    return NULL;

  evas = ecore_evas_get(ee);
  ecore_evas_title_set(ee, title);
  ecore_evas_callback_delete_request_set(ee, _quit);

  o = evas_object_image_add(evas);
  evas_object_image_fill_set(o, 0, 0, w, h);
  evas_object_image_size_set(o, w, h);

  d = evas_object_image_data_get(o, 1);
  for (int i = 0; i < w*h; i++)
    d[i] = data[i];
  evas_object_image_data_set(o, d);
  evas_object_image_data_update_add(o, 0, 0, w, h);
  evas_object_move(o, 0, 0);
  evas_object_resize(o, w, h);
  evas_object_show(o);

  ecore_evas_show(ee);

  return o;
}

static unsigned int *
display_file(const char *title, const char *filename, int *w, int *h)
{
  Ecore_Evas *ee;
  Evas *evas;
  Evas_Object *o;
  Evas_Load_Error err;
  unsigned int *data;

  ee = ecore_evas_new(NULL, 0, 0, 1, 1, NULL);
  if (!ee)
    return NULL;

  evas = ecore_evas_get(ee);
  ecore_evas_title_set(ee, title);
  ecore_evas_callback_delete_request_set(ee, _quit);

  o = evas_object_image_add(evas);
  evas_object_image_file_set(o, filename, NULL);
  err = evas_object_image_load_error_get(o);
  if (err != EVAS_LOAD_ERROR_NONE)
    {
      fprintf(stderr, "could not load image '%s'. error string is \"%s\"\n",
              filename, evas_load_error_str(err));
      fflush(stderr);
      return NULL;
    }

  evas_object_image_size_get(o, w, h);
  evas_object_image_fill_set(o, 0, 0, *w, *h);
  evas_object_image_size_set(o, *w, *h);
  evas_object_move(o, 0, 0);
  evas_object_resize(o, *w, *h);
  evas_object_show(o);

  ecore_evas_resize(ee, *w, *h);
  ecore_evas_show(ee);

  data = evas_object_image_data_get(o, 1);

  return data;
}

double psnr(int w, int h, unsigned int *data_orig, unsigned int *data)
{
  unsigned char *iter_orig;
  unsigned char *iter;
  double psnr;

  psnr = 0.0;
  iter_orig = (unsigned char *)data_orig;
  iter = (unsigned char *)data;
  for (int i = 0; i < 4 * w * h; i++, iter_orig++, iter++)
    psnr += (*iter_orig - *iter) * (*iter_orig - *iter);
  psnr /= 4 * w * h;
  psnr = 10 * log10(255.0 * 255.0 / psnr);
  return psnr;
}

void compare(int quality, int w, int h, unsigned int *data_orig)
{
  char title[1024];
  char filename[1024];
  unsigned char *data;
  unsigned int *data_jpeg;
  unsigned int *data_avif;
  unsigned char *iter_orig;
  unsigned char *iter_jpeg;
  unsigned char *iter_avif;
  double psnr_jpeg;
  double psnr_avif;
  Eina_File *f_jpeg;
  Eina_File *f_avif;
  size_t size_jpeg;
  size_t size_avif;

  /* jpeg */

  snprintf(title, sizeof(title), "jpeg test quality %d", quality);
  snprintf(filename, sizeof(filename), "test_%d.jpg", quality);
  data_jpeg = display_file(title, filename, &w, &h);
  if (!data_jpeg)
    return;

  f_jpeg = eina_file_open(filename, EINA_FALSE);
  size_jpeg = eina_file_size_get(f_jpeg);
  eina_file_close(f_jpeg);
  fprintf(stderr, "size : %u\n", (unsigned int)size_jpeg);
  fflush(stderr);

  /* avif */

  snprintf(title, sizeof(title), "avif test quality %d", quality);
  snprintf(filename, sizeof(filename), "test_%d.avif", quality);
  data_avif = display_file(title, filename, &w, &h);
  if (!data_avif)
    return;

  f_avif = eina_file_open(filename, EINA_FALSE);
  size_avif = eina_file_size_get(f_avif);
  eina_file_close(f_avif);
  fprintf(stderr, "size : %u\n", (unsigned int)size_avif);
  fflush(stderr);

  psnr_jpeg = psnr(w, h, data_orig, data_jpeg);
  fprintf(stderr, "psnr jpeg : %f\n", psnr_jpeg);
  fflush(stderr);

  snprintf(title, sizeof(title), "jpeg vs orig (psnr: %.2f, size: %u b)", psnr_jpeg, (unsigned int)size_jpeg);
  iter_orig = (unsigned char *)data_orig;
  iter_jpeg = (unsigned char *)data_jpeg;
  data = malloc(4*w*h);
  for (int i = 0; i < 4*w*h; i++, iter_orig++, iter_jpeg++)
    data[i] = abs(*iter_jpeg - *iter_orig);
  display_data(w, h, title, (unsigned int *)data);

  psnr_avif = psnr(w, h, data_orig, data_avif);
  fprintf(stderr, "psnr avif : %f\n", psnr_avif);
  fflush(stderr);

  snprintf(title, sizeof(title), "avif vs orig (psnr: %.2f, size: %u b)", psnr_avif, (unsigned int)size_avif);
  iter_orig = (unsigned char *)data_orig;
  iter_avif = (unsigned char *)data_avif;
  data = malloc(4*w*h);
  for (int i = 0; i < 4*w*h; i++, iter_orig++, iter_avif++)
    data[i] = abs(*iter_avif - *iter_orig);
  display_data(w, h, title, (unsigned int *)data);
}

int main()
{
  Ecore_Evas *ee;
  Evas *evas;
  Evas_Object *o;
  Evas_Load_Error err;
  unsigned int *data;
  int w,h;

  ecore_evas_init();

  ee = ecore_evas_new(NULL, 0, 0, 1, 1, NULL);
  if (!ee)
    return 1;

  evas = ecore_evas_get(ee);
  ecore_evas_title_set(ee, "original");
  ecore_evas_callback_delete_request_set(ee, _quit);

  o = evas_object_image_add(evas);
  evas_object_image_file_set(o, "x1d-II-sample-02.fff", NULL);
  err = evas_object_image_load_error_get(o);
  if (err != EVAS_LOAD_ERROR_NONE)
    {
      fprintf(stderr, "could not load image '%s'. error string is \"%s\"\n",
              "x1d-II-sample-02.fff", evas_load_error_str(err));
      fflush(stderr);
      return 1;
    }

  evas_object_image_size_get(o, &w, &h);
  evas_object_image_fill_set(o, 0, 0, w, h);
  evas_object_image_size_set(o, w, h);
  evas_object_move(o, 0, 0);
  evas_object_resize(o, w, h);
  evas_object_show(o);

  data = evas_object_image_data_get(o, 1);

  ecore_evas_resize(ee, w, h);
  ecore_evas_show(ee);

  /* evas_object_image_save(o, "test_100.jpg", NULL, "quality=100"); */

  evas_object_image_save(o, "test_90.jpg", NULL, "quality=90");
  /* evas_object_image_save(o, "test_70.jpg", NULL, "quality=70"); */
  /* evas_object_image_save(o, "test_50.jpg", NULL, "quality=50"); */

  /* evas_object_image_save(o, "test_100.avif", NULL, "quality=100"); */

  evas_object_image_save(o, "test_90.avif", NULL, "quality=90");
  /* evas_object_image_save(o, "test_70.avif", NULL, "quality=70"); */
  /* evas_object_image_save(o, "test_50.avif", NULL, "quality=50"); */

  compare(90, w, h, data);

  ecore_main_loop_begin();

  ecore_evas_shutdown();

  return 0;
}
```

the raw file canbe found here : https://www.hasselblad.com/learn/sample-images/

Test Plan: test executable with avif files found in libavif project

Reviewers: raster, q66

Reviewed By: q66

Subscribers: q66, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D12051

4 years agoedje - fix edje_cc mis-re-iding images in image sets
Carsten Haitzler (Rasterman) [Wed, 15 Jul 2020 11:22:22 +0000 (12:22 +0100)]
edje - fix edje_cc mis-re-iding images in image sets

wanr of unused images so it's properly fixed too... always warn to
stdout so devs know to cleanup their theme. by not removing image sets
this fixes the mis-id'ing too.

@fix

4 years agofilter: make grayscale, inverse_color faster (GL) 74/236674/8
Shinwoo Kim [Fri, 19 Jun 2020 07:30:41 +0000 (16:30 +0900)]
filter: make grayscale, inverse_color faster (GL)

This commit for grayscale, inverse_color filter used by enlightenment.
The fps is decreased with those filters because filter is using off-
screen buffer and copying data between buffers. This commit makes
filter do not use off-screen buffer. Finally the fps is almost same
between ON and OFF filter.

*tizen_only

Change-Id: Ia7ba742d4d8a893fe4908e17895c388cfa3fc286

4 years agoRevert "ci: travis: make sure we disable avif loader by default in our jobs"
Stefan Schmidt [Tue, 14 Jul 2020 13:56:54 +0000 (15:56 +0200)]
Revert "ci: travis: make sure we disable avif loader by default in our jobs"

This reverts commit 44a018d37ffdf03627fc5d45aa249c2237bf5dac.

With the libavif module patch reverted this also needs to go, until its
back.

4 years agoelm_code: cursor visbility fix.
Alastair Poole [Tue, 14 Jul 2020 11:11:48 +0000 (12:11 +0100)]
elm_code: cursor visbility fix.

If the widget is scrollable on the x axis, the cursor was being
displayed in some rare cases when scrolling and the code widget
did not cover the whole window region. e.g. a filepanel to the
left of the widget could potentially have the cursor erroneously
shown. This fixes as per the y axis hide.

@fix

4 years agoelm_code: on newline ensure line number visible.
Alastair Poole [Tue, 14 Jul 2020 10:11:16 +0000 (11:11 +0100)]
elm_code: on newline ensure line number visible.

@fix T2798

4 years agoRevert "Evas: add avif evas loader"
Carsten Haitzler (Rasterman) [Tue, 14 Jul 2020 09:54:57 +0000 (10:54 +0100)]
Revert "Evas: add avif evas loader"

This reverts commit dd23a6c84aee249aa5316b48af6956072233bb97.

i didn't mean to push this yet...

4 years agoci: travis: make sure we disable avif loader by default in our jobs
Stefan Schmidt [Tue, 14 Jul 2020 09:38:55 +0000 (11:38 +0200)]
ci: travis: make sure we disable avif loader by default in our jobs

This has been newly added (disabled by default) but we need to take care
of it in our manually disabled loaders in specific builds.

4 years agodocs: Correct the wrong API group name and typo in Evas, Eet, Eina, Eio and Elementary
Myoungwoon Roy, Kim [Tue, 14 Jul 2020 08:48:04 +0000 (09:48 +0100)]
docs: Correct the wrong API group name and typo in Evas, Eet, Eina, Eio and Elementary

Summary: I found wrong API reference group name in mapbuf, Evas, Eet, Eina, Eio and fixed them.

Test Plan: API reference documentation modification only

Reviewers: segfaultxavi, stefan_schmidt

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D12052

4 years agoEvas: add avif evas loader
Vincent Torri [Sat, 11 Jul 2020 10:34:01 +0000 (11:34 +0100)]
Evas: add avif evas loader

Summary: Add AV1 image file loader to Evas

Test Plan: test executable with avif files found in libavif project

Reviewers: raster

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D12051

4 years agotests: remove popup test.
Alastair Poole [Mon, 13 Jul 2020 12:21:35 +0000 (13:21 +0100)]
tests: remove popup test.

This was put here due to a miscommunication. It was for resolving
an issue with one of our applications. It wasn't meant to be in
this part of testing anyway. Remove as the popup in the application
itself was broken.

4 years agodocs: Correct the wrong group name in access, mapbuf, object, popup and win 39/238239/1 accepted/tizen/unified/20200714.065706 submit/tizen/20200713.050659
Myoungwoon Roy, Kim [Fri, 10 Jul 2020 00:27:35 +0000 (09:27 +0900)]
docs: Correct the wrong group name in access, mapbuf, object, popup and win

Change-Id: I70e6baa59453f97c439a1f80f5743c441cfb5f61

4 years agoefl_ui_image: fix hit_rect geometry only if scale type is expand submit/tizen/20200709.223535
Jaehyun Cho [Mon, 6 Jul 2020 04:42:11 +0000 (13:42 +0900)]
efl_ui_image: fix hit_rect geometry only if scale type is expand

In the past version, "clicked" event happens although image file is not
set and resizable is false and scale type is expand.

To keep the backward compatibility of supporting "clicked" event,
hit_rect geometry is set to be the same with object geometry if image
file is not set and scale type is expand.

The above logic is not applied to upstream.
Because size calculation logic between upstream and tizen is different
so _image_sizing_eval() is not called in upstream if image file is not
set.

@tizen_fix

Change-Id: I39e094702d631e2c3150ae7a9b4d8e314468fa5d

4 years agodocs: Correct the wrong API group name in Elementary and Change an invalid URL in...
Myoungwoon Roy, Kim [Thu, 9 Jul 2020 09:24:09 +0000 (10:24 +0100)]
docs: Correct the wrong API group name in Elementary and Change an invalid URL in Evas

Summary:
I had found broken URL address for SGI free software license B v2.0 and changed valid URL address
In addition, I found wrong group name in glview, grid, index, label, list, map, mapbuf, naviframe, notify, panel, photocam, plug, popup, radio, scroller, spinner, table, win, atspi, frame, access, textpath, elm_object, color_class and fixed them.

Test Plan: API reference documentation modification only

Reviewers: segfaultxavi, stefan_schmidt, raster

Reviewed By: raster

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D12049

4 years agoibox: Preview Theme Code
Alastair Poole [Tue, 7 Jul 2020 14:53:50 +0000 (15:53 +0100)]
ibox: Preview Theme Code

Summary: Dependency for https://phab.enlightenment.org/D12046

Reviewers: raster

Reviewed By: raster

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D12047

4 years agoRevert "edje: Avoid string duplication when possible."
Carsten Haitzler (Rasterman) [Tue, 7 Jul 2020 11:43:39 +0000 (12:43 +0100)]
Revert "edje: Avoid string duplication when possible."

This reverts commit 704d58d658ed4424a886c127f3bbe83afde1f2a1.

gee. it looked innocent enough... it broke tests and everything in e

4 years agoedje: Avoid string duplication when possible.
Woochanlee [Tue, 7 Jul 2020 10:20:53 +0000 (11:20 +0100)]
edje: Avoid string duplication when possible.

Summary:
Most use case the part name dosen't contain the recursive name
so we don't have to go through expensive eina_string_split operation.

Reviewers: smohanty, cedric, Hermet, raster

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D12045

4 years agoevas_text: lazy loading color glyph images in RAM 70/238070/1
Ali Alzyod [Mon, 6 Jul 2020 11:43:40 +0000 (12:43 +0100)]
evas_text: lazy loading color glyph images in RAM

Summary:
Lazy loading for glyph images into RAM, instead of caching at layout level we will cache only when rendering.

This may affect speed a bit since color glyphs will be loaded twice before caching (with FT_Load_Glyph)

Try to run test application, and hit `scale font`

** RAM consumption (Accelerated Rendering) **

| Before | After |
|-------:|-------|
|  111.9 | 21.8  |
|  204.8 | 24.4  |
|  298.0 | 26.3  |
|  391.5 | 28.4  |
|  484.8 | 29.9  |
|  578.1 | 31.4  |
|  671.4 | 32.5  |

** RAM consumption (SW Rendering) **

| Before | After |
|-------:|-------|
|  104   | 14.6  |
|  197   | 17    |
|  290   | 19.1  |
|  384   | 21.2  |
|  477   | 22.8  |
|  571   | 24.3  |
|  664   | 25.6  |

Test Plan:
```

typedef struct _APP
{
  Evas_Object *tb1;
  Evas_Object *btnLoad;
} APP;

char *text = "<align=center><color=#4DE0FFFF underline=on underline_color=#4DE0FFFF><a href='tel:1234567890'>1234567890</a></color>😀😁😂🤣😃😄😅😆😉😊😋😎😍😘😗😙😚☺🙂🤗🤔😐😑😶🙄😏😣😥😮🤐😯😪😫😴😌🤓😛😜😝🤤😒😓😔😕🙃🤑😲☹🙁😖😞😟😤😢😭😦😧😨😩😬😰😱😳😵😡😠😇🤠🤡🤥😷🤒🤕🤢🤧☻😈👿👹👺💀☠👻👽👾🤖💩😺😸😹😻😼😽🙀😿😾🙈🙉🙊👦👧👨👩👵👶👼👨‍⚕️👩‍⚕️👨‍🎓👩‍🎓👨‍🏫👩‍🏫👨‍⚖👩‍⚖👨‍🌾👩‍🌾👨‍🍳👩‍🍳👨‍🔧👩‍🔧👨‍🏭👩‍🏭👨‍💼👩‍💼👨‍🔬👩‍🔬👨‍💻👩‍💻👨‍🎤👩‍🎤👨‍🎨👩‍🎨👨‍✈️👩‍✈️👨‍🚀👩‍🚀👨‍🚒👩‍🚒👮‍♂️👮‍♀️🕵️‍♂️🕵️‍♀️💂‍♂️💂‍♀️👷‍♂️👷‍♀️👳‍♂️👳‍♀️👱‍♂️👱‍♀️🎅🤶👸🤴👰🤵🤰👲🙍‍♂️🙍‍♀️🙎‍♂️🙎‍♀️🙅‍♂️🙅‍♀️🙆‍♂️🙆‍♀️💁‍♂️💁‍♀️🙋‍♂️🙋‍♀️🙇‍♂️🙇‍♀️🤦‍♂️🤦‍♀️🤷‍♂️🤷‍♀️💆‍♂️💆‍♀️💇‍♂️💇‍♀️🚶‍♂️🚶‍♀️🏃‍♂️🏃‍♀️💃🕺👯‍♂️👯‍♀️🕴🗣👤👥👫👬👭💏💑👪👨‍👩‍👧👨‍👩‍👧‍👦👨‍👩‍👦‍👦👨‍👩‍👧‍👧👨‍👦👨‍👦‍👦👨‍👧👨‍👧‍👦👨‍👧‍👧👩‍👦👩‍👦‍👦👩‍👧👩‍👧‍👦👩‍👧‍👧💪🤳👈👉☝️👆🖕👇✌🤞🖖🤘👊🖐✋👌👍👎✊👊🤛🤜🤚👋👏✍👐🙌🙏🤝💅👂👃👣👀👁👅👄💋💘❤💓💔💕💖💗💙💚💛💜🖤💝💞💟❣💌💤💢💣💥💦💨💫💬🗨🗯💭🕳👓🕶👔👕👖👗👘👙👚👛👜👝🛍🎒👞👟👠👡👢👑👒🎩🎓⛑📿💄💍💎🐵🐒🦍🐶🐕🐩🐺🦊🐱🐈🦁🐯🐅🐆🐴🐎🦌🦄🐮🐂🐃🐄🐷🐖🐗🐽🐏🐑🐐🐪🐫🐘🦏🐭🐁🐀🐹🐰🐇🐿🦇🐻🐨🐼🐾🦃🐔🐓🐣🐤🐥🐦🐧🕊🦅🦆🦉🐸🐊🐢🦎🐍🐲🐉🐳🐋🐬🐟🐠🐡🦈🐙🐚🦀🦐🦑🦋🐌🐛🐜🐝🐞🕷🕸🦂💐🌸💮🏵🌹🥀🌺🌻🌼🌷⚘🌱🌲🌳🌴🌵🌾🌿☘🍀🍁🍂🍃🍇🍈🍉🍊🍋🍌🍍🍎🍏🍐🍑🍒🍓🍅🥝🥑🍆🥔🥕🌽🌶🥒🍄🥜🌰🍞🥐🥖🥞🧀🍖🍗🥓🍔🍟🍕🌭🌮🌯🥙🥚🍳🥘🍲🥗🍿🍱🍘🍙🍚🍛🍜🍝🍠🍢🍣🍤🍥🍡🍦🍧🍨🍩🍪🎂🍰🍫🍬🍭🍮🍯🍼🥛☕🍵🍶🍾🍷🍸🍹🍺🍻🥂🍽🍴🥄🔪🏺🎃🎄🎆🎇✨🎈🎉🎊🎋🎍🎎🎏🎐🎑🎀🎁🎗🎟🎫🎖🏆🏅🥇🥈🥉⚽️⚾️🏀🏐🏈🏉🎾🎱🎳🏏🏑🏒🏓🏸🥊🥋🥅🎯⛳🏌️‍♂️🏌️‍♀️⛸🎣🎽🎿⛷🏂🏄‍♂️🏄‍♀️🏇🏊‍♂️🏊‍♀️⛹️‍♂️⛹️‍♀️🏋️‍♂️🏋️‍♀️🚴‍♂️🚴‍♀️🚵‍♂️🚵‍♀️🏎🏍🤸‍♂️🤸‍♀️🤼‍♂️🤼‍♀️🤽‍♂️🤽‍♀️🤾‍♂️🤾‍♀️🤺🤹‍♂️🤹‍♀️🎮🕹🎲♠️♥️♦️♣️🃏🀄🎴🌍🌎🌏🌐🗺🏔⛰🌋🗻🏕🏖🏜🏝🏞🏟🏛🏗🏘🏙🏚🏠🏡🏢🏣🏤🏥🏦🏨🏩🏪🏫🏬🏭🏯🏰💒🗼🗽⛪🕌🕍⛩🕋⛲⛺🌁🌃🌄🌅🌆🌇🌉⛼♨️🌌🎠🎡🎢💈🎪🎭🖼🎨🎰🚂🚃🚄🚅🚆🚇🚈🚉🚊🚝🚞🚋🚌🚍🚎🚐🚑🚒🚓🚔🚕🚖🚗🚘🚙🚚🚛⛟🚜🚲🛴🛵🚏🛣🛤⛽🚨🚥🚦🚧🛑⚓⛵🚣‍♂️🚣‍♀️🛶🚤🛳⛴🛥🚢✈🛩🛫🛬💺🚁🚟🚠🚡🚀🛰🛎🚪🛌🛏🛋🚽🚿🛀🛁⌛⏳⌚⏰⏱⏲🕰🕛🕧🕐🕜🕑🕝🕒🕞🕓🕟🕔🕠🕕🕡🕖🕢🕗🕣🕘🕤🕙🕥🕚🕦🌑🌒🌓🌔🌕🌖🌗🌘🌙🌚🌛🌜🌡☀️🌝🌞⭐🌟🌠☁️⛅⛈🌤🌥🌦🌧🌨🌩🌪🌫🌬🌀🌈🌂☂️☔⛱⚡❄☃️⛄☄🔥💧🌊🔇🔈🔉🔊📢📣📯🔔🔕🎼🎵🎶🎙🎚🎛🎤🎧📻🎷🎸🎹🎺🎻🥁📱📲☎️📞📟📠🔋🔌💻🖥🖨⌨🖱🖲💽💾💿📀🎥🎞📽🎬📺📷📸📹📼🔍🔎🔬🔭📡🕯💡🔦🏮📔📕📖📗📘📙📚📓📒📃📜📄📰🗞📑🔖🏷💰💴💵💶💷💸💳💱💲✉📧📨📩📤📥📦📫📪📬📭📮🗳✏✒🖋🖊🖌🖍📝💼📁📂🗂📅📆🗒🗓📇📈📉📊📋📌📍📎🖇📏📐✂️🗃🗄🗑🔒🔓🔏🔐🔑🗝🔨⛏⚒🛠🗡⚔🔫🏹🛡🔧🔩⚙🗜⚗⚖🔗⛓💉💊🚬⚰⚱🗿🛢🔮🔮🏧🚮🚰♿🚹🚺🚻🚼🚾🛂🛃🛄🛅⚠️🚸⛔🚫🚳🚭🚯🚱🚷📵🔞☢☣⬆️↗️➡️↘️⬇️↙️⬅️↖️↕️↔️↩↪⤴️⤵️🔃🔄🔙🔚🔛🔜🔝🛐⚛🕉✡☸☯️☦☮🕎🔯♈♉♊♋♌♍♎♏♐♑♒♓⛎🔀🔁🔂▶️⏩⏭⏯◀️⏪⏮🔼⏫🔽⏬⏸⏹⏺⏏🎦🔅🔆📶📳📴♻️📛⚜🔰🔱⭕✅☑✔✖❌❎➕♀️♂️⚕➖➗➰➿〽✳✴❇⁉️❓❔❕❗〰🔟💯🔠🔡🔢🔣🔤🅰️🆎️🅱️🆑️🆒️🆓️ℹ🆔️Ⓜ️🆕️🆖️🅾️🆗️🅿️🆘️🆙️🆚️🈁🈂🈷🈶🈯🉐🈹🈚🈲🉑🈸🈴🈳㊗㊙🈺🈵▫️◻◼◽◾⬛⬜🔶️🔷️🔸️🔹️🔺️🔻💠🔘🔲🔳⚪⚫🔴🔵🏁🚩🏴🏳🏳️‍🌈⚀⚁⚂⚃⚄⚅⛾♾🇦🇨🇦🇩🇦🇪🇦🇫🇦🇬🇦🇮🇦🇱🇦🇲🇦🇴🇦🇶🇦🇷🇦🇸🇦🇹🇦🇺🇦🇼🇦🇽🇦🇿🇧🇦🇧🇧🇧🇩🇧🇪🇧🇫🇧🇬🇧🇭🇧🇮🇧🇯🇧🇱🇧🇲🇧🇳🇧🇴🇧🇶🇧🇷🇧🇸🇧🇹🇧🇼🇧🇾🇧🇿🇨🇦🇨🇨🇨🇩🇨🇫🇨🇬🇨🇭🇨🇮🇨🇰🇨🇱🇨🇲🇨🇳🇨🇴🇨🇷🇨🇺🇨🇻🇨🇼🇨🇽🇨🇾🇨🇿🇩🇪🇩🇯🇩🇰🇩🇲🇩🇴🇩🇿🇪🇨🇪🇪🇪🇬🇪🇭🇪🇷🇪🇸🇪🇹🇪🇺🇫🇮🇫🇯🇫🇰🇫🇲🇫🇴🇫🇷🇬🇦🇬🇧🇬🇩🇬🇪🇬🇫🇬🇬🇬🇭🇬🇮🇬🇱🇬🇲🇬🇳🇬🇵🇬🇶🇬🇷🇬🇸🇬🇹🇬🇺🇬🇼🇬🇾🇭🇰🇭🇲🇭🇳🇭🇷🇭🇹🇭🇺🇮🇨🇮🇩🇮🇪🇮🇱🇮🇲🇮🇳🇮🇴🇮🇶🇮🇷🇮🇸🇮🇹🇯🇪🇯🇲🇯🇴🇯🇵🇰🇪🇰🇬🇰🇭🇰🇮🇰🇲🇰🇳🇰🇵🇰🇷🇰🇼🇰🇾🇰🇿🇱🇦🇱🇧🇱🇨🇱🇮🇱🇰🇱🇷🇱🇸🇱🇹🇱🇺🇱🇻🇱🇾🇲🇦🇲🇨🇲🇩🇲🇪🇲🇬🇲🇭🇲🇰🇲🇱🇲🇲🇲🇳🇲🇴🇲🇵🇲🇶🇲🇷🇲🇸🇲🇹🇲🇺🇲🇻🇲🇼🇲🇽🇲🇾🇲🇿🇳🇦🇳🇨🇳🇪🇳🇫🇳🇬🇳🇮🇳🇱🇳🇴🇳🇵🇳🇷🇳🇺🇳🇿🇴🇲🇵🇦🇵🇪🇵🇫🇵🇬🇵🇭🇵🇰🇵🇱🇵🇲🇵🇳🇵🇷🇵🇸🇵🇹🇵🇼🇵🇾🇶🇦🇷🇪🇷🇴🇷🇸🇷🇺🇷🇼🇸🇦🇸🇧🇸🇨🇸🇩🇸🇪🇸🇬🇸🇭🇸🇮🇸🇰🇸🇱🇸🇲🇸🇳🇸🇴🇸🇷🇸🇸🇸🇹🇸🇻🇸🇽🇸🇾🇸🇿🇹🇦🇹🇨🇹🇩🇹🇫🇹🇬🇹🇭🇹🇯🇹🇰🇹🇱🇹🇲🇹🇳🇹🇴🇹🇷🇹🇹🇹🇻🇹🇼🇹🇿🇺🇦🇺🇬🇺🇳🇺🇸🇺🇾🇺🇿🇻🇦🇻🇨🇻🇪🇻🇬🇻🇮🇻🇳🇻🇺🇼🇫🇼🇸🇽🇰🇾🇪🇾🇹🇿🇦🇿🇲🇿🇼8<br/><br/><br/><br/>Sent from my Samsung Galaxy smartphone.</align>";
int font_size = 50;

int counter = 0;
void _button_clicked(void *data, Evas_Object *obj, void *event_info)
{
   APP *app = data;

  font_size += 10;
  Evas_Textblock_Style *style = evas_textblock_style_new();
  char buffer[100] = {0};
  sprintf(buffer, "DEFAULT='font=NotoColorEmoji font_size=%i color=red ellipsis=-1.0 wrap=mixed'", font_size);
  evas_textblock_style_set(style, buffer);
  evas_object_textblock_style_set(app->tb1, style);
  evas_textblock_style_free(style);
  style = NULL;
}

EAPI_MAIN int
elm_main(int argc EINA_UNUSED, char **argv EINA_UNUSED)
{
  APP *app = calloc(1, sizeof(APP));
  Evas_Object *win, *scroller1, *scroller2, *box;

  elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);

  win = elm_win_util_standard_add("", "");
  elm_win_autodel_set(win, EINA_TRUE);

  box = elm_box_add(win);
  evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
  evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
  scroller1 = elm_scroller_add(win);
  evas_object_size_hint_weight_set(scroller1, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
  evas_object_size_hint_align_set(scroller1, EVAS_HINT_FILL, EVAS_HINT_FILL);

  app->tb1 = evas_object_textblock_add(win);
  Evas_Textblock_Style *style = evas_textblock_style_new();
  char buffer[100] = {0};
  sprintf(buffer, "DEFAULT='font=NotoColorEmoji font_size=%i color=red ellipsis=-1.0 wrap=mixed'", font_size);
  evas_textblock_style_set(style, buffer);
  evas_object_textblock_style_set(app->tb1, style);
  evas_textblock_style_free(style);
  style = NULL;

  evas_font_cache_set(evas_object_evas_get(app->tb1), 0);

  int w,h;
  evas_object_textblock_text_markup_set(app->tb1, "");
  evas_object_size_hint_min_set(app->tb1, 400, 400);
  elm_object_content_set(scroller1, app->tb1);
  elm_box_pack_end(box, scroller1);
  elm_object_content_set(win, box);

  app->btnLoad = elm_button_add(win);
  elm_object_text_set(app->btnLoad, "Scale Font");
  evas_object_smart_callback_add(app->btnLoad, "clicked", _button_clicked, app);
  evas_object_show(app->btnLoad);
  evas_object_move(app->btnLoad, 0, 20);
  evas_object_resize(app->btnLoad, 150, 20);

  evas_object_textblock_text_markup_set(app->tb1, text);
  evas_object_textblock_size_formatted_get(app->tb1, &w, &h);
  evas_object_size_hint_min_set(app->tb1, 400, w/400 + h + 150);

  evas_object_resize(win, 400, 400);
  evas_object_show(box);
  evas_object_show(scroller1);
  evas_object_show(scroller2);
  evas_object_show(win);
  elm_run();

  return 0;
}
ELM_MAIN()

```

Reviewers: raster, woohyun, bowonryu, bu5hm4n, zmike, segfaultxavi

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Maniphest Tasks: T8727

Differential Revision: https://phab.enlightenment.org/D11861

Change-Id: I602e18fc2918af94dd92636fdc718e473fe72ec6

4 years agobenchmark: eina: remove outdated ecore_hash
Stefan Schmidt [Wed, 17 Jun 2020 11:21:24 +0000 (13:21 +0200)]
benchmark: eina: remove outdated ecore_hash

Ecore_hash is an ancestor of eina_hash and not used anywhere anymore.
We simply forgot to remove it from our benchmark utility.

Together with ecore_hash we are removing ecore_strings, which uses it,
and the corresponding benchmark files.

Signed-off-by: Stefan Schmidt <s.schmidt@samsung.com>
Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D12042

4 years agowindows: Fix path for file sanitization
Wander Lairson Costa [Tue, 23 Jun 2020 15:21:10 +0000 (15:21 +0000)]
windows: Fix path for file sanitization

```
> c:\
> cd /windows
```

Are valid paths. Paths starting with '\' or '/' should be considered
absolute paths.

Reviewed-by: Vincent Torri <vincent.torri@gmail.com>
Reviewed-by: João Paulo Taylor Ienczak Zanette <joao.tiz@expertisesolutions.com.br>
Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org>
Differential Revision: https://phab.enlightenment.org/D12022

4 years agoFix typos - (Part #3)
Elyes HAOUAS [Mon, 22 Jun 2020 18:21:01 +0000 (18:21 +0000)]
Fix typos - (Part #3)

Fix some typos

Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org>
Differential Revision: https://phab.enlightenment.org/D12017

4 years agoFix typos - (Part #2)
Elyes HAOUAS [Fri, 26 Jun 2020 09:01:32 +0000 (09:01 +0000)]
Fix typos - (Part #2)

Fix some typos

Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org>
Differential Revision: https://phab.enlightenment.org/D12016

4 years agoefl_ui_image: fix hit_rect geometry 84/237884/1
Jaehyun Cho [Mon, 6 Jul 2020 04:42:11 +0000 (13:42 +0900)]
efl_ui_image: fix hit_rect geometry

In the past version, "clicked" event happens although image file is not
set and resizable is false and scale type is expand.

To keep the backward compatibility of supporting "clicked" event,
hit_rect geometry is set to be the same with object geometry if image
file is not set.

In the past version, hit_rect geometry is not the same with object if
image file is not set and resizable is false and scale type is not
expand.
e.g. In the past version, if object size is (360, 80), then hit_rect
     size is set to be (360, 360).

To fix the bug in the past version related to hit_rect, hit_rect
geometry is set to be the same with object geometry if image file is not
set regardless of resizable and scale type.

The above logic is not applied to upstream.
Because size calculation logic between upstream and tizen is different
so _image_sizing_eval() is not called in upstream if image file is not
set.

@tizen_fix

Change-Id: I5bfb1c973b9710b01594d2c1cfaa538dab02a2c2

4 years agoefl_ui_image: fix hit_rect geometry only if scale type is expand 43/237843/5
Jaehyun Cho [Mon, 6 Jul 2020 04:42:11 +0000 (13:42 +0900)]
efl_ui_image: fix hit_rect geometry only if scale type is expand

In the past version, "clicked" event happens although image file is not
set and resizable is false and scale type is expand.

To keep the backward compatibility of supporting "clicked" event,
hit_rect geometry is set to be the same with object geometry if image
file is not set and scale type is expand.

The above logic is not applied to upstream.
Because size calculation logic between upstream and tizen is different
so _image_sizing_eval() is not called in upstream if image file is not
set.

@tizen_fix

Change-Id: I39e094702d631e2c3150ae7a9b4d8e314468fa5d

4 years agoProtect EINA_(UN)LIKELY with parenthesis around the expr accepted/tizen/unified/20200707.141004 submit/tizen/20200705.221213
Wander Lairson Costa [Fri, 3 Jul 2020 14:06:03 +0000 (14:06 +0000)]
Protect EINA_(UN)LIKELY with parenthesis around the expr

Without it an expression like !EINA_LIKELY(a && b) expands
!a && b

Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Reviewed-by: Vincent Torri <vincent.torri@gmail.com>
Differential Revision: https://phab.enlightenment.org/D12041

4 years agoefl_ui_widget: Add exception handling for calloc
Myoungwoon Roy, Kim [Wed, 1 Jul 2020 00:07:41 +0000 (09:07 +0900)]
efl_ui_widget: Add exception handling for calloc

Change-Id: I5c897e3a98fe73289e6eb4adc08462c8c6eeab66

4 years agoefl_ui_widget: add color class update when the style is updated 74/237374/2
Jeonghyun Yun [Tue, 23 Jun 2020 05:59:12 +0000 (14:59 +0900)]
efl_ui_widget: add color class update when the style is updated

Change-Id: Iad6fe717a927f78238538b6c554edc4cf356c253
Signed-off-by: Jeonghyun Yun <jh0506.yun@samsung.com>
4 years agogl_tbm: unregister log domain correctly 94/237594/3
Shinwoo Kim [Wed, 1 Jul 2020 11:38:10 +0000 (20:38 +0900)]
gl_tbm: unregister log domain correctly

This patch will solve a SIGABRT issue caused by following step.

1. module_open
2. module_close /* does not set log domain to -1 */
3. module_open  /* does not register log domain
                   because it is not negative value */
4. module_close /* try to free not allocated memory */

Change-Id: Ifcb6b77481d433912b2527080bbb668f7ba7b1c8

4 years agoevas_common_privat: improve tiler merge flag
Marcel Hollerbach [Wed, 10 Jun 2020 18:48:45 +0000 (20:48 +0200)]
evas_common_privat: improve tiler merge flag

when this is a int and you assign 0, the whole "0" for the entire int is
moved. When this is a bit flag like this, it is a simple | operation,
which makes the whole thing somehow faster.

Reviewed-by: Christopher Michael <devilhorns@comcast.net>
Differential Revision: https://phab.enlightenment.org/D11998

4 years agoMeson.build cleanup.
João Paulo Taylor Ienczak Zanette [Wed, 1 Jul 2020 07:23:53 +0000 (09:23 +0200)]
Meson.build cleanup.

Summary:
This is a 8 commit patch, but only for a while - after agreeing with
each of the changes, it shall be squashed into a single commit.

I want to make further changes on meson.build (maybe I can end up simplifying
the build system, or just let things more organized in the end) and thought
that starting with a cleanup would be a good first step.

The changes are:
1. build: set arguments scope to project instead of globally

   If we set arguments globally, it may conflict with other builds - specially
   considering [meson's subprojects
   feature](https://mesonbuild.com/Subprojects.html). Setting to project
   arguments ensures we are only considering EFL and not leaking unwanted flags.

2. build: Fix spacing and indent

   Mostly because it is not well standardized during the file - sometimes
   there's spaces between tokens, sometimes there is not, etc. The same applies
   to indent.

3. build: move test environment closer to test commands

   Just as a matter of organization. If we're doing things for tests that don't
   impact other stuff, then leave it when tests are handled.

4. build: Remove unnecessary parenthesis and == true comparisons

   Less noisy redundancy: `true` is already true, and `false` is already false,
   no need to re-check. Besides, reading `if sys_windows` and `if sys_windows
   == true` shouldn't have different effects, as the first you can read as "if
   the system is windows". It gets better when you have `not` instead of `==
   false`, so for an example you could read `if not sys_windows` as "if it is
   not a windows system" more naturally.

5. build: Switch pc_files to dict

   Just thought it could stay a little better (since it works as a dict),
   specially in the `foreach` right after.

6. **[removed to a future patch]** build: Use meson's warning_level instead of hardcoded -Wall

   This way we ensure this is compiler-independant (and use the correct feature
   for that, since meson even warns when configuring the build dir).

7. build: Use language args from add_project_arguments properly instead of a loop

   The `language:` kwarg from `add_{project,global}_arguments` receives a list
   of languages, so no need for that loop.

8. **[removed to a future patch]** build: Use '/' instead of join_paths

   As it [is recommended by meson since
   v0.49](https://mesonbuild.com/Release-notes-for-0-49-0.html#joining-paths-with-)
   (and stays clearer IMO, specially since that's how some languages are
   adopting path separation, e.g. C++'s filesystem stdlib).

Reviewers: bu5hm4n

Subscribers: vtorri, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D11994

4 years agodocs: Correct the wrong API group name in Elementary 83/237483/2
Myoungwoon Roy, Kim [Wed, 1 Jul 2020 01:31:20 +0000 (10:31 +0900)]
docs: Correct the wrong API group name in Elementary

Change-Id: If71e4f3318a725c22f5a48ce2c8d5a928117ff48

4 years agoelc_naviframe: fix to show pushed item if top item is deleted 44/237544/1
Jaehyun Cho [Wed, 1 Jul 2020 06:49:40 +0000 (15:49 +0900)]
elc_naviframe: fix to show pushed item if top item is deleted

If top item is deleted in "transition,finished" smart callback by user
before _on_item_push_finished is not finished, then pushed item is
hidden in _on_item_push_finished and no item is visible.

To resolve the above issue, _on_item_push_finished does not hide
pushed item if pushed item becomes top item.

Change-Id: I8d7d31e681f52c66accb7ce2029232a35ee86025

4 years agodocs: Correct the wrong API group name in Edje and Elm_Box 48/237348/3 submit/tizen/20200630.100857
Myoungwoon Roy, Kim [Mon, 29 Jun 2020 09:52:33 +0000 (18:52 +0900)]
docs: Correct the wrong API group name in Edje and Elm_Box

Change-Id: Iaa5c77f33425a172bf03d3553d81d29b2609892a

4 years agoecore-evas-wayland: Fix minor typo in error message submit/tizen/20200629.234316
Christopher Michael [Mon, 29 Jun 2020 13:01:54 +0000 (09:01 -0400)]
ecore-evas-wayland: Fix minor typo in error message

4 years agoecore_wl2_input: initializes code variable. 25/237325/1
Hosang Kim [Mon, 29 Jun 2020 06:01:15 +0000 (15:01 +0900)]
ecore_wl2_input: initializes code variable.

Change-Id: I99440ba38835c42829e8d50b736d0904c7d30adb

4 years agoecore evas wl - cnp - dont segv is data is null submit/tizen/20200629.001406
Carsten Haitzler (Rasterman) [Sun, 28 Jun 2020 21:52:17 +0000 (22:52 +0100)]
ecore evas wl - cnp - dont segv is data is null

this is probably wrong but crashing is not nice... bettr to NOP than
crash right now.

4 years agoNative Windows: Eina: Resolve bad comparison while using windows strerror_s
Lucas Cavalcante de Sousa [Fri, 26 Jun 2020 12:51:01 +0000 (12:51 +0000)]
Native Windows: Eina: Resolve bad comparison while using windows strerror_s

`strerror_s` is the windows alternative of `strerror_r` used by EFL.

`strerror_s` never return the error code with the message as
`strerror_r` does, because of that, while comparing the first 14
characters of `Unknown error ` to the message from unknown code 4096
(`Unknown error`) they were accusing being different - in UNIX this
works because the message returned is `Unknown error 4096`.
This error was noticeable at `eina_error_test_failures` test case.

This Diff adds the error code to the message in case of an `Unknown
error`, making the windows implementation compliant with UNIX.

Reviewed-by: Vincent Torri <vincent.torri@gmail.com>
Reviewed-by: Wander Lairson Costa <wander.lairson@gmail.com>
Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org>
Differential Revision: https://phab.enlightenment.org/D12033

4 years agoWindows: fix eina_file_map_new()
Vincent Torri [Thu, 25 Jun 2020 14:44:15 +0000 (14:44 +0000)]
Windows: fix eina_file_map_new()

the offset passed to MapViewOfFile() must be a multiple of the granularity.

https://docs.microsoft.com/en-us/windows/win32/memory/creating-a-view-within-a-file is taken as basis for this patch

Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org>
Reviewed-by: Wander Lairson Costa <wander.lairson@gmail.com>
Differential Revision: https://phab.enlightenment.org/D12031

4 years agoFix eina file thread test on Windows
Wander Lairson Costa [Wed, 24 Jun 2020 13:32:12 +0000 (13:32 +0000)]
Fix eina file thread test on Windows

On windows, we try to open the "cmd.exe" file, but without the full path
the test fails unless it runs from the system directory.

We now use the full path to test the eina_file_open function.

Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org>
Reviewed-by: Vincent Torri <vincent.torri@gmail.com>
Reviewed-by: João Paulo Taylor Ienczak Zanette <joao.tiz@expertisesolutions.com.br>
Differential Revision: https://phab.enlightenment.org/D12021

4 years agoeina_array: micro optimize eina_array_push
Marcel Hollerbach [Wed, 10 Jun 2020 18:48:37 +0000 (20:48 +0200)]
eina_array: micro optimize eina_array_push

This commit does two things:
- Tell the compiler that it is unlikely that we need to grow, and that
  it is unlikely that data is NULL. Sometimes the if check for data
  would get dropped out by the compiler when it can be ensured that it is
  != NULL. However, if we for example efl_add something and eina_push
  the result, the condition would not be removed, as there is no assertion
  efl_add would be != NULL.

- Do not hide the array assignment in a branch, but make it the default
  branch, this way instruction cache caches the correct instruction, as
  branch prediction will now hopefully, due to the hinting, take the
  correct branch.

While benchmarking this here (simply in elementary_perf), this reduced
pipeline faults in eina_array_push quite a bit. (Btw. it is hard to track
*which* exact calls to eina_array_push do cause that, as mostly this API
gets inlined, so it was easier optimizing that, instead of the method
arround)

Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org>
Differential Revision: https://phab.enlightenment.org/D11997

4 years agoFix typos - (Part #5)
Elyes HAOUAS [Sat, 20 Jun 2020 13:00:10 +0000 (13:00 +0000)]
Fix typos - (Part #5)

Fix some typos

Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org>
Differential Revision: https://phab.enlightenment.org/D12019

4 years agoFix typos
Elyes HAOUAS [Mon, 22 Jun 2020 18:24:38 +0000 (18:24 +0000)]
Fix typos

Fix some typos

Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org>
Differential Revision: https://phab.enlightenment.org/D12015

4 years agodocs: Changes non public Tizen elementary APIs in API reference to internal 19/237019/4
Myoungwoon Roy, Kim [Wed, 24 Jun 2020 05:40:20 +0000 (14:40 +0900)]
docs: Changes non public Tizen elementary APIs in API reference to internal

Change-Id: Ie6134546631a49acda3e52ee6ca7e2ceafaba17f

4 years agoRevert "Efl.Gfx.Path: Change draw of a rounded rect from arc to quadratic" 13/237113/1
JunsuChoi [Thu, 25 Jun 2020 04:13:31 +0000 (13:13 +0900)]
Revert "Efl.Gfx.Path: Change draw of a rounded rect from arc to quadratic"

Summary:
This reverts commit 4f15bde706ec8cd78fa57845c8eee7bdb5515282.
It is the correct way to draw with arc_to.
And breaking compatibility for current_get.

Test Plan: N/A

Reviewers: Hermet, kimcinoo, herb

Reviewed By: Hermet

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D12030

Change-Id: Ia0f38eedeba95646e52d360eadc690997fe33e7d

4 years agodoxygen: remove broken example images 12/236912/2
Hosang Kim [Tue, 23 Jun 2020 06:26:15 +0000 (15:26 +0900)]
doxygen: remove broken example images

Change-Id: I8d9c2ecf11c2e46c3cc21259164fddacc52e6610
(cherry picked from commit 8ca44052f8c2957a1a1ffef7c933972df33f82f7)

4 years agoefl_check.h: Replace stack allocated array by heap allocated submit/tizen/20200623.220408
Joao Antonio Cardoso [Mon, 15 Jun 2020 12:27:46 +0000 (12:27 +0000)]
efl_check.h: Replace stack allocated array by heap allocated

clang-cl doesn't support the syntax of dynamic stack allocated arrays.

ref: windows-native-port

Co-authored-by: Lucas <Coquinho@users.noreply.github.com>
Reviewed-by: Felipe Magno de Almeida <felipe@expertisesolutions.com.br>
Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org>
Differential Revision: https://phab.enlightenment.org/D11970

4 years agoecore-x vysnc - env var - fix typo
Carsten Haitzler (Rasterman) [Tue, 23 Jun 2020 13:00:48 +0000 (14:00 +0100)]
ecore-x vysnc - env var - fix typo

4 years agoecore wl - make comment note about allocating buffers
Carsten Haitzler (Rasterman) [Mon, 22 Jun 2020 12:12:23 +0000 (13:12 +0100)]
ecore wl - make comment note about allocating buffers

4 years agoeina_test_file.c: Do not test errno if the function doesn't fail
Wander Lairson Costa [Fri, 12 Jun 2020 20:27:51 +0000 (20:27 +0000)]
eina_test_file.c: Do not test errno if the function doesn't fail

errno only holds a valid value if the function returns an error.

ref: windows-native-port

Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org>
Differential Revision: https://phab.enlightenment.org/D11971

4 years agoGet rid of trailing whitespaces (14 / 14)
Elyes HAOUAS [Sat, 20 Jun 2020 09:47:56 +0000 (09:47 +0000)]
Get rid of trailing whitespaces (14 / 14)

Remove  trailing whitespaces
Differential Revision: https://phab.enlightenment.org/D12006

4 years agoGet rid of trailing whitespaces (13 / 14)
Elyes HAOUAS [Sat, 20 Jun 2020 09:54:26 +0000 (09:54 +0000)]
Get rid of trailing whitespaces (13 / 14)

Remove trailing whitespaces
Differential Revision: https://phab.enlightenment.org/D12012

4 years agoGet rid of trailing whitespaces (12 / 14)
Elyes HAOUAS [Sat, 20 Jun 2020 09:52:54 +0000 (09:52 +0000)]
Get rid of trailing whitespaces (12 / 14)

Remove trailing whitespaces
Differential Revision: https://phab.enlightenment.org/D12011

4 years agoGet rid of trailing whitespaces (11 / 14)
Elyes HAOUAS [Sat, 20 Jun 2020 09:51:50 +0000 (09:51 +0000)]
Get rid of trailing whitespaces (11 / 14)

Remove trailing whitespaces
Differential Revision: https://phab.enlightenment.org/D12010

4 years agoGet rid of trailing whitespaces (10 / 14)
Elyes HAOUAS [Sat, 20 Jun 2020 09:50:53 +0000 (09:50 +0000)]
Get rid of trailing whitespaces (10 / 14)

Remove trailing whitespaces
Differential Revision: https://phab.enlightenment.org/D12009

4 years agoGet rid of trailing whitespaces (9 / 14)
Elyes HAOUAS [Sat, 20 Jun 2020 09:50:00 +0000 (09:50 +0000)]
Get rid of trailing whitespaces (9 / 14)

Remove trailing whitespaces
Differential Revision: https://phab.enlightenment.org/D12008

4 years agoGet rid of trailing whitespaces (8 / 14)
Elyes HAOUAS [Sat, 20 Jun 2020 09:48:52 +0000 (09:48 +0000)]
Get rid of trailing whitespaces (8 / 14)

Remove trailing whitespaces
Differential Revision: https://phab.enlightenment.org/D12007

4 years agoGet rid of trailing whitespaces (7 / 14)
Elyes HAOUAS [Sat, 20 Jun 2020 09:47:04 +0000 (09:47 +0000)]
Get rid of trailing whitespaces (7 / 14)

Remove trailing whitespaces
Differential Revision: https://phab.enlightenment.org/D12005

4 years agoGet rid of trailing whitespaces (6 / 14)
Elyes HAOUAS [Sat, 20 Jun 2020 09:45:50 +0000 (09:45 +0000)]
Get rid of trailing whitespaces (6 / 14)

Remove whitespaces
Differential Revision: https://phab.enlightenment.org/D12004

4 years agoGet rid of trailing whitespaces (5 / 14)
Elyes HAOUAS [Sat, 20 Jun 2020 09:44:55 +0000 (09:44 +0000)]
Get rid of trailing whitespaces (5 / 14)

Remove trailing whitespaces
Differential Revision: https://phab.enlightenment.org/D12003

4 years agoGet rid of trailing whitespaces (4 / 14)
Elyes HAOUAS [Sat, 20 Jun 2020 09:43:56 +0000 (09:43 +0000)]
Get rid of trailing whitespaces (4 / 14)

Remove trailing whitespaces
Differential Revision: https://phab.enlightenment.org/D12002

4 years agoGet rid of trailing whitespaces (3 / 14)
Elyes HAOUAS [Sat, 20 Jun 2020 09:42:50 +0000 (09:42 +0000)]
Get rid of trailing whitespaces (3 / 14)

Remove trailing whitespaces
Differential Revision: https://phab.enlightenment.org/D12001

4 years agoGet rid of trailing whitespaces (2 / 14)
Elyes HAOUAS [Sat, 20 Jun 2020 09:41:45 +0000 (09:41 +0000)]
Get rid of trailing whitespaces (2 / 14)

Remove trailing whitespaces
Differential Revision: https://phab.enlightenment.org/D12000

4 years agoGet rid of trailing whitespace (1 / 14)
Elyes HAOUAS [Sat, 20 Jun 2020 09:40:20 +0000 (09:40 +0000)]
Get rid of trailing whitespace (1 / 14)

Remove trailing whitespace
Differential Revision: https://phab.enlightenment.org/D11999

4 years agoEfl.Gfx.Path: Change draw of a rounded rect from arc to quadratic
JunsuChoi [Tue, 23 Jun 2020 04:46:43 +0000 (13:46 +0900)]
Efl.Gfx.Path: Change draw of a rounded rect from arc to quadratic

Summary:
The rounded rect is a very slightly different shape compared
to chrome's svg output. To solve this, modify to use a quadratic bezier
instead of arc when drawing a round.

Test Plan:
{F3904500}
(Drawing rect with arc or quadratic)

Compare Image
{F3904501}

{F3904502}

Reviewers: Hermet, kimcinoo, herb

Reviewed By: Hermet

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D12020

4 years agoeina_strbuf: introduce change last occurrence function
Ali Alzyod [Mon, 22 Jun 2020 08:31:54 +0000 (17:31 +0900)]
eina_strbuf: introduce change last occurrence function

Reviewers: cedric, woohyun, bowonryu

Reviewed By: cedric

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Maniphest Tasks: T8757

Differential Revision: https://phab.enlightenment.org/D11990

4 years agoelementary_test: remove leaked style
Ali Alzyod [Mon, 22 Jun 2020 08:27:42 +0000 (17:27 +0900)]
elementary_test: remove leaked style

Summary: remove created style after being set in textblock

Reviewers: woohyun, smohanty

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Maniphest Tasks: T8742

Differential Revision: https://phab.enlightenment.org/D11944

4 years agoeina_strbuf: if readonly strbuf is malloc, then it will stop being readonly
Ali Alzyod [Mon, 22 Jun 2020 08:16:34 +0000 (17:16 +0900)]
eina_strbuf: if readonly strbuf is malloc, then it will stop being readonly

Reviewers: cedric

Reviewed By: cedric

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Maniphest Tasks: T8757

Differential Revision: https://phab.enlightenment.org/D11992

4 years agoeina_strbuf_manage_new: update documentation
Ali Alzyod [Mon, 22 Jun 2020 08:16:02 +0000 (17:16 +0900)]
eina_strbuf_manage_new: update documentation

Reviewers: cedric

Reviewed By: cedric

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Maniphest Tasks: T8757

Differential Revision: https://phab.enlightenment.org/D11991

4 years agoevas textblock : update font source when it set using font_source_set
AbdullehGhujeh [Mon, 22 Jun 2020 08:02:05 +0000 (17:02 +0900)]
evas textblock : update font source when it set using font_source_set

Summary:
when we set font source, for example with efl_text_font_source_set, the font source will not be updated in the textblock.

this is have same results that has been done in D9548

Test Plan:
   #define EFL_EO_API_SUPPORT 1
   #define EFL_BETA_API_SUPPORT 1

   #include <Efl_Ui.h>

   static void
   _gui_quit_cb(void *data EINA_UNUSED, const Efl_Event *event EINA_UNUSED)
   {
      efl_exit(0);
   }

   static Eo *
   _create_label(Eo *win, Eo *bx)
   {
      Eo *en;
      en = efl_add(EFL_UI_TEXTBOX_CLASS, win);
      printf("Added Efl.Ui.Text object\n");
      efl_text_interactive_editable_set(en, EINA_FALSE);
      efl_pack(bx, en);
      return en;
   }

   static void
   _gui_setup()
   {
      char buf[512], f_buf[512];
      Eo *win, *bx;

      win = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(),
                  efl_ui_win_type_set(efl_added, EFL_UI_WIN_TYPE_BASIC),
                  efl_text_set(efl_added, "Hello World"),
                  efl_ui_win_autodel_set(efl_added, EINA_TRUE));

      // when the user clicks "close" on a window there is a request to delete
      efl_event_callback_add(win, EFL_UI_WIN_EVENT_DELETE_REQUEST, _gui_quit_cb, NULL);

      bx = efl_add(EFL_UI_BOX_CLASS, win,
                  efl_content_set(win, efl_added),
                  efl_gfx_hint_size_min_set(efl_added, EINA_SIZE2D(360, 240)));

      snprintf(buf, sizeof(buf), "./TestFontSource.eet");

      Eo *en = _create_label(win, bx);
      efl_text_set(en, "Hello, This Text Use The Font : Does_Not_Exists_Font_1 : Source + Font Name");
      efl_text_font_source_set(en, buf);
      efl_text_font_family_set(en, "Does_Not_Exists_Font_1");
      efl_text_font_size_set(en, 35);

      en = _create_label(win, bx);
      efl_text_set(en, "Hello, This Text Use The Font : Does_Not_Exists_Font_1 : Font Name");
      efl_text_font_family_set(en, "Does_Not_Exists_Font_1");
      efl_text_font_size_set(en, 35);

      en = _create_label(win, bx);
      efl_text_set(en, "Hello, This Text Use The Font : Does_Not_Exists_Font_2 : Source + Font Name");
      efl_text_font_source_set(en, buf);
      efl_text_font_family_set(en, "Does_Not_Exists_Font_2");
      efl_text_font_size_set(en, 35);

      en = _create_label(win, bx);
      efl_text_set(en, "Hello, This Text Use The Font : Does_Not_Exists_Font_2 : Font Name");
      efl_text_font_family_set(en, "Does_Not_Exists_Font_2");
      efl_text_font_size_set(en, 35);
   }

   EAPI_MAIN void
   efl_main(void *data EINA_UNUSED, const Efl_Event *ev EINA_UNUSED)
   {
      _gui_setup();
   }
   EFL_MAIN()

Reviewers: ali.alzyod, woohyun, bowonryu, cedric

Reviewed By: ali.alzyod

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D11757

4 years agoeina_strbuf: resolve segfault when replace used with read_only buffer
Ali Alzyod [Mon, 22 Jun 2020 07:54:51 +0000 (16:54 +0900)]
eina_strbuf: resolve segfault when replace used with read_only buffer

Summary: when eina_strbuf_replace is used by read_only buffer, this will cause segfault (access invalid memory)

Reviewers: cedric

Reviewed By: cedric

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Maniphest Tasks: T8757

Differential Revision: https://phab.enlightenment.org/D11989

4 years agoTextblock : Fix cursor cluster movement when emoji at the line start
AbdullehGhujeh [Mon, 22 Jun 2020 07:31:53 +0000 (16:31 +0900)]
Textblock : Fix cursor cluster movement when emoji at the line start

Summary:
if we have emoji only or emoji at line start we can move cursor using mouse click to be inside the emoji.

{F3868502}

this should fix T8664

Test Plan:
  #include <Elementary.h>

  EAPI_MAIN int
  elm_main(int argc EINA_UNUSED, char **argv EINA_UNUSED)
  {
     Evas_Object *win;

     elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
     win = elm_win_util_standard_add("emoji-test", "emoji-test");
     elm_win_autodel_set(win, EINA_TRUE);

     /* and now just resize the window to a size you want. normally widgets
      * will determine the initial size though */
     evas_object_resize(win, 320, 320);

     Evas_Object *box;
     box = elm_box_add(win);
     evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
     evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
     elm_win_resize_object_add(win, box);

     Evas_Object *entry;
     entry = elm_entry_add(box);

     elm_entry_entry_set(entry, "&#x262a;&#xfe0f;");

     evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
     evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, EVAS_HINT_FILL);

     elm_box_pack_end(box, entry);

     evas_object_show(entry);
     evas_object_show(box);

     /* and show the window */
     evas_object_show(win);

     elm_run(); /* and run the program now, starting to handle all
                 * events, etc. */

     /* exit code */
     return 0;
  }
  ELM_MAIN()

Reviewers: ali.alzyod, woohyun, bowonryu, zmike, bu5hm4n

Reviewed By: ali.alzyod

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Maniphest Tasks: T8664

Differential Revision: https://phab.enlightenment.org/D11732

4 years agodocs: Changes non public Tizen APIs in API reference to internal 15/236915/2
Myoungwoon Roy, Kim [Tue, 23 Jun 2020 08:29:35 +0000 (17:29 +0900)]
docs: Changes non public Tizen APIs in API reference to internal

Change-Id: I579e1af8a8006391bdb51fc63873ddb794cd7792