--- /dev/null
+/**
+ * gcc evas-gradient.c -o evas-gradient `pkg-config --libs --cflags ecore ecore-evas`
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#else
+#define PACKAGE_EXAMPLES_DIR "."
+#endif
+
+#define WIDTH 500
+#define HEIGHT 500
+
+#include <Ecore.h>
+#include <Ecore_Evas.h>
+
+struct content
+{
+ Ecore_Evas *ee;
+ Evas *ev;
+ Evas_Object *bg;
+ Evas_Object *vg;
+ Efl_VG *container;
+};
+static struct content cnt;
+
+static void
+_on_delete(Ecore_Evas *ee EINA_UNUSED)
+{
+ ecore_main_loop_quit();
+}
+
+static void
+_canvas_resize_cb(Ecore_Evas *ee)
+{
+ int w, h;
+
+ ecore_evas_geometry_get(ee, NULL, NULL, &w, &h);
+ evas_object_resize(cnt.bg, w, h);
+ evas_object_resize(cnt.vg, w, h);
+}
+
+static void
+_on_keydown(void *data EINA_UNUSED,
+ Evas *evas EINA_UNUSED,
+ Evas_Object *o EINA_UNUSED,
+ void *event_info)
+{
+ Evas_Event_Key_Down *ei = event_info;
+ static Efl_VG *gradient = NULL;
+ static Efl_VG *shape = NULL;
+
+ if (!strcmp(ei->key, "q"))
+ _on_delete(cnt.ee);
+ if (!strcmp(ei->key, "r"))
+ {
+ if (shape != NULL)
+ {
+ gradient = evas_vg_gradient_radial_add(cnt.container);
+ evas_vg_gradient_radial_center_set(gradient, 440, 440);
+ evas_vg_gradient_radial_radius_set(gradient, 40);
+
+ Evas_Vg_Gradient_Stop stops5[] =
+ {
+ {.offset = 0, .r = 255, .g = 255, .b = 0, .a = 255},
+ {.offset = 1, .r = 0, .g = 0, .b = 255, .a = 255}
+ };
+ evas_vg_gradient_stop_set(gradient, stops5, 2);
+ evas_vg_shape_fill_set(shape, gradient);
+ }
+ else
+ {
+ shape = evas_vg_shape_add(cnt.container);
+ evas_vg_shape_append_rect(shape, 400, 400, 80, 80, 10, 10);
+
+ gradient = evas_vg_gradient_linear_add(cnt.container);
+ evas_vg_gradient_linear_start_set(gradient, 400, 400);
+ evas_vg_gradient_linear_end_set(gradient, 480, 480);
+
+ Evas_Vg_Gradient_Stop stops4[] =
+ {
+ {.offset = 0, .r = 240, .g = 255, .b = 200, .a = 255},
+ {.offset = 0.75, .r = 255, .g = 42, .b = 0, .a = 255},
+ {.offset = 1, .r = 219, .g = 57, .b = 24, .a = 255}
+ };
+ evas_vg_gradient_spread_set(gradient, EVAS_VG_GRADIENT_SPREAD_REFLECT);
+ evas_vg_gradient_stop_set(gradient, stops4, 3);
+ evas_vg_shape_fill_set(shape, gradient);
+ }
+ }
+}
+
+int main(void)
+{
+ Efl_VG *shape;
+ Efl_VG *gradient;
+
+ if (!ecore_evas_init()) return EXIT_FAILURE;
+
+ cnt.ee = ecore_evas_new(NULL, 0, 0, WIDTH, HEIGHT, NULL);
+ if (!cnt.ee)
+ {
+ ecore_evas_shutdown();
+ return -1;
+ }
+
+ ecore_evas_callback_delete_request_set(cnt.ee, _on_delete);
+ ecore_evas_callback_resize_set(cnt.ee, _canvas_resize_cb);
+ ecore_evas_show(cnt.ee);
+
+ cnt.ev = ecore_evas_get(cnt.ee);
+ cnt.bg = evas_object_rectangle_add(cnt.ev);
+ evas_object_color_set(cnt.bg, 255, 255, 255, 255);
+ evas_object_focus_set(cnt.bg, EINA_TRUE);
+ evas_object_show(cnt.bg);
+ evas_object_event_callback_add(cnt.bg, EVAS_CALLBACK_KEY_DOWN, _on_keydown, NULL);
+ cnt.vg = evas_object_vg_add(cnt.ev);
+ evas_object_show(cnt.vg);
+ _canvas_resize_cb(cnt.ee);
+ cnt.container = evas_vg_container_add(cnt.vg);
+ shape = evas_vg_shape_add(cnt.container);
+ evas_vg_shape_append_rect(shape, 50, 50, 100, 100, 2, 2);
+
+ gradient = evas_vg_gradient_linear_add(cnt.container);
+ evas_vg_gradient_linear_start_set(gradient, 50, 50);
+ evas_vg_gradient_linear_end_set(gradient, 150, 150);
+
+ Evas_Vg_Gradient_Stop stops1[] =
+ {
+ {.offset = 0, .r = 2, .g = 27, .b = 92, .a = 255},
+ {.offset = 1, .r = 16, .g = 80, .b = 240, .a = 255}
+ };
+ evas_vg_gradient_stop_set(gradient, stops1, 2);
+ evas_vg_shape_fill_set(shape, gradient);
+
+ shape = evas_vg_shape_add(cnt.container);
+ evas_vg_shape_append_rect(shape, 200, 50, 100, 100, 2, 2);
+
+ gradient = evas_vg_gradient_linear_add(cnt.container);
+ evas_vg_gradient_linear_start_set(gradient, 200, 50);
+ evas_vg_gradient_linear_end_set(gradient, 300, 150);
+
+ Evas_Vg_Gradient_Stop stops2[] =
+ {
+ {.offset = 0, .r = 0, .g = 0, .b = 0, .a = 255},
+ {.offset = 1, .r = 255, .g = 255, .b = 255, .a = 255}
+ };
+ evas_vg_gradient_stop_set(gradient, stops2, 2);
+ evas_vg_shape_stroke_fill_set(shape, gradient);
+ evas_vg_shape_stroke_width_set(shape, 10);
+
+ shape = evas_vg_shape_add(cnt.container);
+ evas_vg_shape_append_rect(shape, 350, 50, 100, 100, 2, 2);
+
+ gradient = evas_vg_gradient_radial_add(cnt.container);
+ evas_vg_gradient_radial_center_set(gradient, 400, 100);
+ evas_vg_gradient_radial_radius_set(gradient, 100);
+
+ Evas_Vg_Gradient_Stop stops3[] =
+ {
+ {.offset = 0, .r = 240, .g = 255, .b = 200, .a = 255},
+ {.offset = 0.75, .r = 255, .g = 42, .b = 0, .a = 255},
+ {.offset = 1, .r = 219, .g = 57, .b = 24, .a = 255}
+ };
+ evas_vg_gradient_stop_set(gradient, stops3, 3);
+ evas_vg_shape_fill_set(shape, gradient);
+
+ shape = evas_vg_shape_add(cnt.container);
+ evas_vg_shape_append_rect(shape, 50, 200, 300, 300, 50, 50);
+
+ gradient = evas_vg_gradient_linear_add(cnt.container);
+ evas_vg_gradient_linear_start_set(gradient, 50, 200);
+ evas_vg_gradient_linear_end_set(gradient, 100, 250);
+
+ Evas_Vg_Gradient_Stop stops4[] =
+ {
+ {.offset = 0, .r = 240, .g = 255, .b = 200, .a = 255},
+ {.offset = 0.75, .r = 255, .g = 42, .b = 0, .a = 255},
+ {.offset = 1, .r = 219, .g = 57, .b = 24, .a = 255}
+ };
+ evas_vg_gradient_spread_set(gradient, EVAS_VG_GRADIENT_SPREAD_REFLECT);
+ evas_vg_gradient_stop_set(gradient, stops4, 3);
+ evas_vg_shape_fill_set(shape, gradient);
+
+ evas_object_vg_root_node_set(cnt.vg, cnt.container);
+ ecore_main_loop_begin();
+ ecore_evas_shutdown();
+ return 0;
+}
\ No newline at end of file