From 2e05bfc372243cb9d34eb593a8aa18d4202b1cab Mon Sep 17 00:00:00 2001 From: Cedric BAIL Date: Fri, 26 Dec 2014 16:12:05 +0100 Subject: [PATCH] ector: add linear and radial gradial renderer to Ector. Change-Id: Id36c3e748fc41b1306b6917701c04db043a8cd80 --- src/Makefile_Ector.am | 8 ++- src/lib/ector/ector_renderer.h | 3 ++ src/lib/ector/ector_renderer_gradient_linear.c | 54 +++++++++++++++++++ src/lib/ector/ector_renderer_gradient_linear.eo | 11 ++++ src/lib/ector/ector_renderer_gradient_radial.c | 71 +++++++++++++++++++++++++ src/lib/ector/ector_renderer_gradient_radial.eo | 13 +++++ 6 files changed, 158 insertions(+), 2 deletions(-) create mode 100644 src/lib/ector/ector_renderer_gradient_linear.c create mode 100644 src/lib/ector/ector_renderer_gradient_linear.eo create mode 100644 src/lib/ector/ector_renderer_gradient_radial.c create mode 100644 src/lib/ector/ector_renderer_gradient_radial.eo diff --git a/src/Makefile_Ector.am b/src/Makefile_Ector.am index 9eba5d7..1bbd35a 100644 --- a/src/Makefile_Ector.am +++ b/src/Makefile_Ector.am @@ -4,7 +4,9 @@ ector_eolian_files = \ lib/ector/ector_surface.eo \ lib/ector/ector_renderer_base.eo \ lib/ector/ector_renderer_shape.eo \ - lib/ector/ector_renderer_gradient.eo + lib/ector/ector_renderer_gradient.eo \ + lib/ector/ector_renderer_gradient_radial.eo \ + lib/ector/ector_renderer_gradient_linear.eo ector_eolian_c = $(ector_eolian_files:%.eo=%.eo.c) ector_eolian_h = $(ector_eolian_files:%.eo=%.eo.h) @@ -27,7 +29,9 @@ lib_ector_libector_la_SOURCES = \ lib/ector/ector_main.c \ lib/ector/ector_renderer_shape.c \ lib/ector/ector_renderer_base.c \ -lib/ector/ector_renderer_gradient.c +lib/ector/ector_renderer_gradient.c \ +lib/ector/ector_renderer_gradient_radial.c \ +lib/ector/ector_renderer_gradient_linear.c lib_ector_libector_la_CPPFLAGS = -I$(top_builddir)/src/lib/efl \ @ECTOR_CFLAGS@ \ diff --git a/src/lib/ector/ector_renderer.h b/src/lib/ector/ector_renderer.h index 5fc674a..4901eb1 100644 --- a/src/lib/ector/ector_renderer.h +++ b/src/lib/ector/ector_renderer.h @@ -3,5 +3,8 @@ #include "ector_renderer_base.eo.h" #include "ector_renderer_shape.eo.h" +#include "ector_renderer_gradient.eo.h" +#include "ector_renderer_gradient_linear.eo.h" +#include "ector_renderer_gradient_radial.eo.h" #endif diff --git a/src/lib/ector/ector_renderer_gradient_linear.c b/src/lib/ector/ector_renderer_gradient_linear.c new file mode 100644 index 0000000..5ab442d --- /dev/null +++ b/src/lib/ector/ector_renderer_gradient_linear.c @@ -0,0 +1,54 @@ +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include +#include + +#include "ector_private.h" + +typedef struct _Ector_Renderer_Gradient_Linear_Data Ector_Renderer_Gradient_Linear_Data; +struct _Ector_Renderer_Gradient_Linear_Data +{ + struct { + double x, y; + } start, end; +}; + +void +_ector_renderer_gradient_linear_efl_graphics_gradient_linear_start_set(Eo *obj EINA_UNUSED, + Ector_Renderer_Gradient_Linear_Data *pd, + double x, double y) +{ + pd->start.x = x; + pd->start.y = y; +} + +void +_ector_renderer_gradient_linear_efl_graphics_gradient_linear_start_get(Eo *obj EINA_UNUSED, + Ector_Renderer_Gradient_Linear_Data *pd, + double *x, double *y) +{ + if (x) *x = pd->start.x; + if (y) *y = pd->start.y; +} + +void +_ector_renderer_gradient_linear_efl_graphics_gradient_linear_end_set(Eo *obj EINA_UNUSED, + Ector_Renderer_Gradient_Linear_Data *pd, + double x, double y) +{ + pd->end.x = x; + pd->end.y = y; +} + +void +_ector_renderer_gradient_linear_efl_graphics_gradient_linear_end_get(Eo *obj EINA_UNUSED, + Ector_Renderer_Gradient_Linear_Data *pd, + double *x, double *y) +{ + if (x) *x = pd->end.x; + if (y) *y = pd->end.y; +} + +#include "ector_renderer_gradient_linear.eo.c" diff --git a/src/lib/ector/ector_renderer_gradient_linear.eo b/src/lib/ector/ector_renderer_gradient_linear.eo new file mode 100644 index 0000000..fbe3fef --- /dev/null +++ b/src/lib/ector/ector_renderer_gradient_linear.eo @@ -0,0 +1,11 @@ +abstract Ector.Renderer.Gradient_Linear (Ector.Renderer.Gradient, Efl.Graphics.Gradient_Linear) +{ + eo_prefix: ector_renderer_gradient_linear; + legacy_prefix: null; + implements { + Efl.Graphics.Gradient_Linear.start.set; + Efl.Graphics.Gradient_Linear.start.get; + Efl.Graphics.Gradient_Linear.end.set; + Efl.Graphics.Gradient_Linear.end.get; + } +} diff --git a/src/lib/ector/ector_renderer_gradient_radial.c b/src/lib/ector/ector_renderer_gradient_radial.c new file mode 100644 index 0000000..d813585 --- /dev/null +++ b/src/lib/ector/ector_renderer_gradient_radial.c @@ -0,0 +1,71 @@ +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include +#include + +#include "ector_private.h" + +typedef struct _Ector_Renderer_Gradient_Radial_Data Ector_Renderer_Gradient_Radial_Data; +struct _Ector_Renderer_Gradient_Radial_Data +{ + struct { + double x, y; + } radial, focal; + double radius; +}; + +void +_ector_renderer_gradient_radial_efl_graphics_gradient_radial_center_set(Eo *obj EINA_UNUSED, + Ector_Renderer_Gradient_Radial_Data *pd, + double x, double y) +{ + pd->radial.x = x; + pd->radial.y = y; +} + +void +_ector_renderer_gradient_radial_efl_graphics_gradient_radial_center_get(Eo *obj EINA_UNUSED, + Ector_Renderer_Gradient_Radial_Data *pd, + double *x, double *y) +{ + if (x) *x = pd->radial.x; + if (y) *y = pd->radial.y; +} + +void +_ector_renderer_gradient_radial_efl_graphics_gradient_radial_radius_set(Eo *obj EINA_UNUSED, + Ector_Renderer_Gradient_Radial_Data *pd, + double r) +{ + pd->radius = r; +} + +double +_ector_renderer_gradient_radial_efl_graphics_gradient_radial_radius_get(Eo *obj EINA_UNUSED, + Ector_Renderer_Gradient_Radial_Data *pd) +{ + return pd->radius; +} + + +void +_ector_renderer_gradient_radial_efl_graphics_gradient_radial_focal_set(Eo *obj EINA_UNUSED, + Ector_Renderer_Gradient_Radial_Data *pd, + double x, double y) +{ + pd->focal.x = x; + pd->focal.y = y; +} + +void +_ector_renderer_gradient_radial_efl_graphics_gradient_radial_focal_get(Eo *obj EINA_UNUSED, + Ector_Renderer_Gradient_Radial_Data *pd, + double *x, double *y) +{ + if (x) *x = pd->focal.x; + if (y) *y = pd->focal.y; +} + +#include "ector_renderer_gradient_radial.eo.c" diff --git a/src/lib/ector/ector_renderer_gradient_radial.eo b/src/lib/ector/ector_renderer_gradient_radial.eo new file mode 100644 index 0000000..0067de4 --- /dev/null +++ b/src/lib/ector/ector_renderer_gradient_radial.eo @@ -0,0 +1,13 @@ +abstract Ector.Renderer.Gradient_Radial (Ector.Renderer.Gradient, Efl.Graphics.Gradient_Radial) +{ + eo_prefix: ector_renderer_gradient_radial; + legacy_prefix: null; + implements { + Efl.Graphics.Gradient_Radial.center.set; + Efl.Graphics.Gradient_Radial.center.get; + Efl.Graphics.Gradient_Radial.radius.set; + Efl.Graphics.Gradient_Radial.radius.get; + Efl.Graphics.Gradient_Radial.focal.set; + Efl.Graphics.Gradient_Radial.focal.get; + } +} -- 2.7.4