This is an automated email from the git hooks/post-receive script.
git pushed a commit to branch master
in repository echart.
View the commit online.
commit 2aa57821425ec949abd69c151718b188940e9f1a
Author: Vincent Torri <[email protected]>
AuthorDate: Tue Jun 9 06:23:33 2026 +0200
use gengrid for the gallery
---
src/bin/echart_grid.c | 273 ++++++++++++++++++++++++++++++++++++++++++++++++++
src/bin/echart_main.c | 261 -----------------------------------------------
src/bin/echart_win.c | 94 -----------------
src/bin/echart_win.h | 11 --
src/bin/meson.build | 3 +-
5 files changed, 274 insertions(+), 368 deletions(-)
diff --git a/src/bin/echart_grid.c b/src/bin/echart_grid.c
new file mode 100644
index 0000000..07ab6cb
--- /dev/null
+++ b/src/bin/echart_grid.c
@@ -0,0 +1,273 @@
+/*
+ * SPDX-FileCopyrightText: Vincent Torri <[email protected]>
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#include <config.h>
+
+#include <Elementary.h>
+
+#include "Echart.h"
+#include "echart_private.h"
+
+typedef enum Chart_Type
+{
+ CHART_TYPE_LINE,
+ CHART_TYPE_LINE_CURVED,
+ CHART_TYPE_VBAR,
+ CHART_TYPE_HBAR,
+ CHART_TYPE_PIE,
+ CHART_TYPE_LAST,
+} Chart_Type;
+
+/* lookup table for labels */
+
+const char *labels[CHART_TYPE_LAST] =
+{
+ "line",
+ "curved line",
+ "vertical bar",
+ "horizontal bar",
+ "pie"
+};
+
+typedef struct Chart_Item
+{
+ Chart_Type type;
+} Chart_Item;
+
+static Elm_Gengrid_Item_Class *gic = NULL;
+
+/* new item */
+static Chart_Item *
+_item_new(Chart_Type type)
+{
+ Chart_Item *it;
+
+ it = malloc(sizeof(Chart_Item));
+ it->type = type;
+
+ return it;
+}
+
+/* label fetching callback */
+static char *
+_grid_label_get(void *data,
+ Evas_Object *obj EINA_UNUSED,
+ const char *part EINA_UNUSED)
+{
+ const Chart_Item *it = data;
+
+ return strdup(labels[it->type]);
+}
+
+/* icon fetching callback */
+static Evas_Object *
+_grid_content_get(void *data,
+ Evas_Object *obj,
+ const char *part)
+{
+ const Chart_Item *it = data;
+
+ if (!strcmp(part, "elm.swallow.icon"))
+ {
+ Evas_Object *o;
+
+ switch (it->type)
+ {
+ case CHART_TYPE_LINE:
+ {
+ double d1[6] = { 3.5, 2.5, 4.3, 7.9, 1.2, 8.4 };
+ double d2[6] = { 9.5, 6.7, 2.3, 7.9, 10.2, 1.4 };
+
+ o = echart_line_add(evas_object_evas_get(obj));
+ echart_line_data_append(o, d1, 6);
+ echart_line_data_append(o, d2, 6);
+ echart_line_width_set(o, 3);
+ evas_object_show(o);
+
+ return o;
+ }
+ case CHART_TYPE_LINE_CURVED:
+ {
+ double d1[6] = { 3.5, 2.5, 4.3, 7.9, 1.2, 8.4 };
+ double d2[6] = { 9.5, 6.7, 2.3, 7.9, 10.2, 1.4 };
+
+ o = echart_line_add(evas_object_evas_get(obj));
+ echart_line_data_append(o, d1, 6);
+ echart_line_data_append(o, d2, 6);
+ echart_line_width_set(o, 3);
+ echart_line_curved_set(o, EINA_TRUE);
+ evas_object_show(o);
+
+ return o;
+ }
+ case CHART_TYPE_VBAR:
+ {
+ double d1[3] = { 3, 6, 4 };
+ double d2[3] = { 6, 4, 3 };
+
+ o = echart_bar_add(evas_object_evas_get(obj));
+ echart_bar_data_append(o, d1, 3);
+ echart_bar_data_append(o, d2, 3);
+ evas_object_show(o);
+
+ return o;
+ }
+ case CHART_TYPE_HBAR:
+ {
+ double d1[3] = { 3, 6, 4 };
+ double d2[3] = { 6, 4, 3 };
+
+ o = echart_bar_add(evas_object_evas_get(obj));
+ echart_bar_data_append(o, d1, 3);
+ echart_bar_data_append(o, d2, 3);
+ echart_bar_horizontal_set(o, 1);
+ evas_object_show(o);
+
+ return o;
+ }
+ case CHART_TYPE_PIE:
+ {
+ double d[5] = { 11, 4, 2, 9, 7 };
+
+ o = echart_pie_add(evas_object_evas_get(obj));
+ echart_pie_data_set(o, d, 5);
+ evas_object_show(o);
+
+ return o;
+ }
+ default:
+ return NULL;
+ }
+ }
+
+ return NULL;
+}
+
+/* deletion callback */
+static void
+_grid_del(void *data, Evas_Object *obj EINA_UNUSED)
+{
+ Chart_Item *it = data;
+
+ free(it);
+}
+
+/* state fetching callback */
+static Eina_Bool
+_grid_state_get(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, const char *part EINA_UNUSED)
+{
+ return EINA_FALSE;
+}
+
+/* item selection callback */
+static void
+_grid_sel(void *data,
+ Evas_Object *obj EINA_UNUSED,
+ void *event_info)
+{
+ unsigned int x, y;
+ Chart_Item *it = elm_object_item_data_get(event_info);
+
+ elm_gengrid_item_pos_get(event_info, &x, &y);
+
+ printf("Item [%p], with data [%p], type %d, at position (%u, %u),"
+ " has been selected\n", event_info, data, it->type, x, y);
+ fflush(stdout);
+}
+
+EAPI_MAIN int
+elm_main(int argc EINA_UNUSED, char **argv EINA_UNUSED)
+{
+ Evas_Object *win;
+ Evas_Object *box;
+ Evas_Object *grid;
+ Evas_Object *o;
+ Chart_Item *it;
+
+ for (int i = 1; i < argc; i++)
+ {
+ if ((strcmp(argv[i], "-v") == 0) ||
+ (strcmp(argv[i], "--version") == 0))
+ {
+ printf(PACKAGE_NAME " " PACKAGE_VERSION "\n"
+ "copyright (C) 2026 Vincent Torri\n"
+ "License BSD-2\n");
+ return 0;
+ }
+ }
+
+ elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
+
+ echart_init();
+
+ win = elm_win_add(NULL, "Echart gallery", ELM_WIN_BASIC);
+ if (!win)
+ {
+ elm_exit();
+ }
+
+ elm_win_autodel_set(win, EINA_TRUE);
+
+ /* background */
+ o = elm_bg_add(win);
+ evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(win, o);
+ evas_object_show(o);
+
+
+ o = elm_box_add(win);
+ evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(win, o);
+ evas_object_show(o);
+ box = o;
+
+ o = elm_gengrid_add(win);
+ elm_gengrid_item_size_set(o, 320, 200);
+ evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_box_pack_end(box, o);
+ //evas_object_smart_callback_add(o, "clicked,double", _double_click, NULL);
+ //evas_object_smart_callback_add(o, "longpressed", _long_pressed, NULL);
+ evas_object_show(o);
+ grid = o;
+
+ if (!gic)
+ {
+ gic = elm_gengrid_item_class_new();
+ gic->item_style = "default";
+ gic->func.text_get = _grid_label_get;
+ gic->func.content_get = _grid_content_get;
+ gic->func.state_get = _grid_state_get;
+ gic->func.del = _grid_del;
+ }
+
+ it = _item_new(CHART_TYPE_LINE);
+ elm_gengrid_item_append(grid, gic, it, _grid_sel, NULL);
+
+ it = _item_new(CHART_TYPE_LINE_CURVED);
+ elm_gengrid_item_append(grid, gic, it, _grid_sel, NULL);
+
+ it = _item_new(CHART_TYPE_VBAR);
+ elm_gengrid_item_append(grid, gic, it, _grid_sel, NULL);
+
+ it = _item_new(CHART_TYPE_HBAR);
+ elm_gengrid_item_append(grid, gic, it, _grid_sel, NULL);
+
+ it = _item_new(CHART_TYPE_PIE);
+ elm_gengrid_item_append(grid, gic, it, _grid_sel, NULL);
+
+ evas_object_resize(win,
+ 600 * elm_config_scale_get(),
+ 600 * elm_config_scale_get());
+ evas_object_show(win);
+
+ elm_run();
+
+ echart_shutdown();
+
+ return 0;
+}
+ELM_MAIN()
+
diff --git a/src/bin/echart_main.c b/src/bin/echart_main.c
deleted file mode 100644
index d663f0a..0000000
--- a/src/bin/echart_main.c
+++ /dev/null
@@ -1,261 +0,0 @@
-/*
- * SPDX-FileCopyrightText: Vincent Torri <[email protected]>
- * SPDX-License-Identifier: BSD-2-Clause
- */
-
-#include <config.h>
-
-#include <Elementary.h>
-
-#include "Echart.h"
-
-#include "echart_win.h"
-
-EAPI_MAIN int
-elm_main(int argc, char **argv)
-{
- Evas_Object *win;
- Evas_Object *o;
- int w;
- int h;
- int wo;
- int ho;
- int xo;
- int yo;
-
- for (int i = 1; i < argc; i++)
- {
- if ((strcmp(argv[i], "-v") == 0) ||
- (strcmp(argv[i], "--version") == 0))
- {
- printf(PACKAGE_NAME " " PACKAGE_VERSION "\n"
- "copyright (C) 2026 Vincent Torri\n"
- "License BSD-2\n");
- return 0;
- }
- }
-
- echart_init();
-
- wo = 200 * elm_config_scale_get();
- ho = 200 * elm_config_scale_get();
- w = wo * 4;
- h = ho * 2;
-
- elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
-
- win = elm_win_util_standard_add("Chart", "Chart example");
- elm_win_autodel_set(win, EINA_TRUE);
-
- /* background */
- o = elm_bg_add(win);
- evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- /* elm_object_style_set(o, "grad_vert_focus_title_match"); */
- elm_bg_color_set(o, 255, 255, 255);
- elm_win_resize_object_add(win, o);
- evas_object_show(o);
-
- /* chart */
- /* o = echart_add(evas_object_evas_get(win)); */
- /* evas_object_move(o, 200, 0); */
- /* evas_object_resize(o, 200 * elm_config_scale_get(), 200 * elm_config_scale_get()); */
- /* //echart_bg_color_set(o, 255, 0, 0, 255); */
- /* echart_title_set(o, "Plot"); */
- /* echart_title_color_set(o, 255, 0, 0, 255); */
- /* evas_object_show(o);*/
-
- /* line */
-
- {
- int num = 6;
- /* double absciss[num]; */
- double d[num];
-
- xo = 0;
- yo = 0;
-
- /* absciss[0] = 1; */
- /* absciss[1] = 2; */
- /* absciss[2] = 4; */
- /* absciss[3] = 5; */
- /* absciss[4] = 7; */
- /* absciss[5] = 8; */
-
- o = echart_line_add(evas_object_evas_get(win));
- evas_object_move(o, xo, yo);
- evas_object_resize(o, wo, ho);
-
- d[0] = 3.5;
- d[1] = 2.5;
- d[2] = 4.3;
- d[3] = 7.9;
- d[4] = 1.2;
- d[5] = 8.4;
- echart_line_data_append(o, d, num);
-
- d[0] = 9.5;
- d[1] = 6.7;
- d[2] = 2.3;
- d[3] = 7.9;
- d[4] = 10.2;
- d[5] = 1.4;
- echart_line_data_append(o, d, num);
-
- echart_line_width_set(o, 3);
- evas_object_show(o);
- }
-
- /* curved line */
- {
- int num = 6;
- double d[num];
-
- xo = wo;
- yo = 0;
-
- /* grid abscissa */
- o = echart_grid_add(evas_object_evas_get(win));
- evas_object_move(o, xo, yo);
- evas_object_resize(o, wo, ho);
- echart_grid_set(o, 0, 1, 0.2);
- echart_grid_color_set(o, 0, 0, 0, 255);
- echart_grid_width_set(o, 1);
- evas_object_show(o);
-
- /* grid ordinate */
- o = echart_grid_ord_add(evas_object_evas_get(win));
- evas_object_move(o, xo, yo);
- evas_object_resize(o, wo, ho);
- echart_grid_set(o, -4.1, 8.4, (8.4 + 4.1) / 5);
- echart_grid_color_set(o, 0, 0, 0, 255);
- echart_grid_width_set(o, 1);
- evas_object_show(o);
-
- o = echart_line_add(evas_object_evas_get(win));
- echart_line_curved_set(o, EINA_TRUE);
- evas_object_move(o, xo, yo);
- evas_object_resize(o, wo, ho);
-
- d[0] = 3.5;
- d[1] = 2.5;
- d[2] = 4.3;
- d[3] = 7.9;
- d[4] = 1.2;
- d[5] = 8.4;
- echart_line_data_append(o, d, num);
-
- d[0] = 9.5;
- d[1] = 6.7;
- d[2] = 2.3;
- d[3] = 7.9;
- d[4] = 10.2;
- d[5] = 1.4;
- echart_line_data_append(o, d, num);
-
- echart_line_width_set(o, 3);
- evas_object_show(o);
- }
-
- /* vbar */
- {
- int num = 3;
- double d[num];
-
- xo = 2 * wo;
- yo = 0;
-
- o = echart_bar_add(evas_object_evas_get(win));
- evas_object_move(o, xo, yo);
- evas_object_resize(o, wo, ho);
-
- d[0] = 3;
- d[1] = 6;
- d[2] = 4;
- echart_bar_data_append(o, d, num);
-
- d[0] = 6;
- d[1] = 4;
- d[2] = 3;
- echart_bar_data_append(o, d, num);
-
- evas_object_show(o);
- }
-
- /* hbar */{
- int num = 3;
- double d[num];
-
- xo = 3 * wo;
- yo = 0;
-
- o = echart_bar_add(evas_object_evas_get(win));
- echart_bar_horizontal_set(o, 1);
- evas_object_move(o, xo, yo);
- evas_object_resize(o, wo, ho);
-
- d[0] = 3;
- d[1] = 6;
- d[2] = 4;
- echart_bar_data_append(o, d, num);
-
- d[0] = 6;
- d[1] = 4;
- d[2] = 3;
- echart_bar_data_append(o, d, num);
-
- evas_object_show(o);
- }
-
- /* pie */
- {
- int num = 5;
- double d[num];
-
- xo = 0;
- yo = ho;
-
- o = echart_pie_add(evas_object_evas_get(win));
- evas_object_move(o, xo, yo);
- evas_object_resize(o, wo, ho);
-
- d[0] = 11;
- d[1] = 4;
- d[2] = 2;
- d[3] = 9;
- d[4] = 7;
- echart_pie_data_set(o, d, num);
-
- evas_object_show(o);
-
- xo = wo;
- yo = ho;
-
- o = echart_pie_add(evas_object_evas_get(win));
- evas_object_move(o, xo, yo);
- evas_object_resize(o, wo, ho);
-
- d[0] = 45;
- d[1] = 4;
- d[2] = 2;
- d[3] = 5;
- d[4] = 10;
- echart_pie_data_set(o, d, num);
-
- evas_object_show(o);
- }
-
- evas_object_resize(win, w, h);
- evas_object_show(win);
-
- win = win_new();
- evas_object_show(win);
-
- elm_run();
-
- evas_object_del(o);
-
- echart_shutdown();
-
- return 0;
-}
-ELM_MAIN()
diff --git a/src/bin/echart_win.c b/src/bin/echart_win.c
deleted file mode 100644
index 5493aa2..0000000
--- a/src/bin/echart_win.c
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * SPDX-FileCopyrightText: Vincent Torri <[email protected]>
- * SPDX-License-Identifier: BSD-2-Clause
- */
-
-#include <config.h>
-
-#include <Elementary.h>
-
-#include "Echart.h"
-#include "echart_private.h"
-
-static Evas_Object *lines = NULL;
-
-static void
-_cb_win_del(void *data EINA_UNUSED,
- Evas *_e EINA_UNUSED,
- Evas_Object *win,
- void *_event EINA_UNUSED)
-{
-}
-
-/* static void */
-/* _cb_win_resize(void *data EINA_UNUSED, */
-/* Evas *_e EINA_UNUSED, */
-/* Evas_Object *win, */
-/* void *_event EINA_UNUSED) */
-/* { */
-/* Entice *entice; */
-
-/* INF("win resize"); */
-
-/* entice = evas_object_data_get(win, "entice"); */
-/* if (!entice || !entice->image) */
-/* return; */
-
-/* entice_image_update(entice->image); */
-
-/* INF("win fin resize"); */
-/* } */
-
-Evas_Object *win_new(void)
-{
- Evas_Object *win;
- Evas_Object *o;
- int w;
- int h;
- int num = 6;
- double d[num];
-
- w = 640 * elm_config_scale_get();
- h = 400 * elm_config_scale_get();
-
- win = elm_win_util_standard_add("Chart", "Chart example");
- elm_win_autodel_set(win, EINA_TRUE);
-
- evas_object_event_callback_add(win, EVAS_CALLBACK_DEL, _cb_win_del, NULL);
- //evas_object_event_callback_add(win, EVAS_CALLBACK_RESIZE, _cb_win_resize, entice);
-
- /* white background */
- o = elm_bg_add(win);
- evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- elm_bg_color_set(o, 255, 255, 255);
- elm_win_resize_object_add(win, o);
- evas_object_show(o);
-
- o = lines = echart_line_add(evas_object_evas_get(win));
- evas_object_move(o, 0, 0);
-
- d[0] = 3.5;
- d[1] = 2.5;
- d[2] = 4.3;
- d[3] = 7.9;
- d[4] = 1.2;
- d[5] = 8.4;
- echart_line_data_append(o, d, num);
-
- d[0] = 9.5;
- d[1] = 6.7;
- d[2] = 2.3;
- d[3] = 7.9;
- d[4] = 10.2;
- d[5] = 1.4;
- echart_line_data_append(o, d, num);
-
- echart_line_width_set(o, 3);
- evas_object_show(o);
-
- elm_win_resize_object_add(win, o);
-
- evas_object_resize(win, w, h);
-
- return win;
-}
diff --git a/src/bin/echart_win.h b/src/bin/echart_win.h
deleted file mode 100644
index 07f3ca1..0000000
--- a/src/bin/echart_win.h
+++ /dev/null
@@ -1,11 +0,0 @@
-/*
- * SPDX-FileCopyrightText: Vincent Torri <[email protected]>
- * SPDX-License-Identifier: BSD-2-Clause
- */
-
-#ifndef ECHART_WIN_H
-#define ECHART_WIN_H
-
-Evas_Object *win_new(void);
-
-#endif /* ECHART_WIN_H */
diff --git a/src/bin/meson.build b/src/bin/meson.build
index 8ebefa4..75d05db 100644
--- a/src/bin/meson.build
+++ b/src/bin/meson.build
@@ -2,8 +2,7 @@
# SPDX-License-Identifier: BSD-2-Clause
echart_bin_src = files([
- 'echart_main.c',
- 'echart_win.c',
+ 'echart_grid.c',
])
executable('echart', echart_bin_src,
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.