efl_gfx_shape: Stroke color use a premultiplied color.

Summary: R, G, and B must not be higher than alpha.

Test Plan:
//test code
Ecore_Evas *ee = ecore_evas_new(NULL, 0, 0, 600, 600, NULL);
ecore_evas_show(ee);

Evas *evas = ecore_evas_get(ee);
Evas_Object *vg,*bg;

bg = evas_object_rectangle_add(evas);
evas_object_color_set(bg, 0, 0, 255, 255);
evas_object_focus_set(bg, 1);
evas_object_show(bg);
int w, h;
ecore_evas_geometry_get(ee, NULL, NULL, &w, &h);
evas_object_resize(bg, w, h);

vg = evas_object_vg_add(evas);
evas_object_focus_set(vg, 1);
evas_object_show(vg);
evas_object_resize(vg, w, h);

Efl_VG *shape, *container;
container = evas_vg_container_add(vg);
shape = evas_vg_shape_add(container);

evas_vg_shape_append_rect(shape, 0, 0, 200 , 200, 10, 10);
evas_vg_shape_stroke_color_set(shape, 255, 255, 255, 10);
evas_vg_shape_stroke_width_set(shape, 20);
evas_vg_node_origin_set(shape, 200, 200);

evas_object_vg_root_node_set(vg, container);
ecore_main_loop_begin();
ecore_evas_shutdown();

Reviewers: Hermet, smohanty, kimcinoo

Reviewed By: Hermet

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D9217
This commit is contained in:
junsu choi 2019-07-09 14:21:19 +09:00 committed by Hermet Park
parent c8827c0dcc
commit 228b91e36f
1 changed files with 13 additions and 0 deletions

View File

@ -8,6 +8,8 @@
#include <Efl.h>
#define ERR(...) EINA_LOG_DOM_ERR(EINA_LOG_DOMAIN_DEFAULT, __VA_ARGS__)
#define MY_CLASS EFL_GFX_SHAPE_MIXIN
typedef struct _Efl_Gfx_Shape_Data
@ -142,6 +144,17 @@ EOLIAN static void
_efl_gfx_shape_stroke_color_set(Eo *obj EINA_UNUSED, Efl_Gfx_Shape_Data *pd,
int r, int g, int b, int a)
{
Eina_Bool err = EINA_FALSE;
if (a > 255) { a = 255; err = EINA_TRUE; }
if (a < 0) { a = 0; err = EINA_TRUE; }
if (r > a) { r = a; err = EINA_TRUE; }
if (r < 0) { r = 0; err = EINA_TRUE; }
if (g > a) { g = a; err = EINA_TRUE; }
if (g < 0) { g = 0; err = EINA_TRUE; }
if (b > a) { b = a; err = EINA_TRUE; }
if (b < 0) { b = 0; err = EINA_TRUE; }
if (err)
ERR("Only handles premultiplied colors (0 <= R,G,B <= A <= 255)");
pd->public.stroke.color.r = r;
pd->public.stroke.color.g = g;
pd->public.stroke.color.b = b;