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.

Reply via email to