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 41776c12ec055c5017eddcf5e9c33b59a70fe22e
Author: Vincent Torri <[email protected]>
AuthorDate: Tue May 5 19:38:25 2026 +0200

    add horizontal grid lines
---
 src/bin/echart_main.c                        |  17 +++-
 src/lib/Echart.h                             |   1 +
 src/lib/echart_grid.c                        |   1 -
 src/lib/{echart_grid.c => echart_grid_ord.c} | 117 +++++++++++++--------------
 src/lib/echart_grid_ord.h                    |  19 +++++
 src/lib/meson.build                          |   2 +
 6 files changed, 93 insertions(+), 64 deletions(-)

diff --git a/src/bin/echart_main.c b/src/bin/echart_main.c
index 855d9bd..f42b471 100644
--- a/src/bin/echart_main.c
+++ b/src/bin/echart_main.c
@@ -49,7 +49,7 @@ elm_main(int argc, char **argv)
    d[2] = 2.3;
    d[3] = 7.9;
    d[4] = -4.2;
-   d[5] = 8.6;
+   d[5] = 8.4;
 
    w = 200;
    h = 200;
@@ -78,21 +78,30 @@ elm_main(int argc, char **argv)
    /* line */
    o = line = echart_line_add(evas_object_evas_get(win));
    evas_object_move(o, 0, 0);
-   evas_object_resize(o, 200 * elm_config_scale_get(), 200 * elm_config_scale_get());
+   evas_object_resize(o, w * elm_config_scale_get(), h * elm_config_scale_get());
    echart_line_data_set(o, d, num);
    echart_line_color_set(o, 255, 0, 0, 255);
    echart_line_width_set(o, 3);
    evas_object_show(o);
 
-   /* grid */
+   /* grid abscissa */
    o = echart_grid_add(evas_object_evas_get(win));
    evas_object_move(o, 0, 0);
-   evas_object_resize(o, 200 * elm_config_scale_get(), 200 * elm_config_scale_get());
+   evas_object_resize(o, w * elm_config_scale_get(), h * elm_config_scale_get());
    echart_grid_set(o, 0, 1, 0.2);
    echart_grid_color_set(o, 0, 0, 255, 255);
    echart_grid_width_set(o, 3);
    evas_object_show(o);
 
+   /* grid ordinate */
+   o = echart_grid_ord_add(evas_object_evas_get(win));
+   evas_object_move(o, 0, 0);
+   evas_object_resize(o, w * elm_config_scale_get(), h * elm_config_scale_get());
+   echart_grid_set(o, -4.1, 8.4, (8.4 + 4.1) / 5);
+   echart_grid_color_set(o, 0, 0, 255, 255);
+   echart_grid_width_set(o, 3);
+   evas_object_show(o);
+
    evas_object_resize(win,
                       w * elm_config_scale_get(),
                       h * elm_config_scale_get());
diff --git a/src/lib/Echart.h b/src/lib/Echart.h
index 4680471..f54301b 100644
--- a/src/lib/Echart.h
+++ b/src/lib/Echart.h
@@ -44,6 +44,7 @@
 
 #include "echart_main.h"
 #include "echart_grid.h"
+#include "echart_grid_ord.h"
 #include "echart_line.h"
 #include "echart_chart.h"
 
diff --git a/src/lib/echart_grid.c b/src/lib/echart_grid.c
index d463a88..27b207a 100644
--- a/src/lib/echart_grid.c
+++ b/src/lib/echart_grid.c
@@ -13,7 +13,6 @@
  *============================================================================*/
 
 #define X_VG(x) (w) * ((x) - sd->xmin) / (sd->xmax - sd->xmin)
-#define Y_VG(y) (h) * (sd->ymax - (y)) / (sd->ymax - sd->ymin)
 
 typedef struct Chart_Grid Chart_Grid;
 
diff --git a/src/lib/echart_grid.c b/src/lib/echart_grid_ord.c
similarity index 64%
copy from src/lib/echart_grid.c
copy to src/lib/echart_grid_ord.c
index d463a88..0d63fdb 100644
--- a/src/lib/echart_grid.c
+++ b/src/lib/echart_grid_ord.c
@@ -12,12 +12,11 @@
  *                                  Local                                     *
  *============================================================================*/
 
-#define X_VG(x) (w) * ((x) - sd->xmin) / (sd->xmax - sd->xmin)
 #define Y_VG(y) (h) * (sd->ymax - (y)) / (sd->ymax - sd->ymin)
 
-typedef struct Chart_Grid Chart_Grid;
+typedef struct Chart_Grid_Ord Chart_Grid_Ord;
 
-struct Chart_Grid
+struct Chart_Grid_Ord
 {
    Evas_Object_Smart_Clipped_Data __clipped_data;
 
@@ -26,27 +25,27 @@ struct Chart_Grid
    /* Evas_Vg_Node *vg_dot; /\* the dot which appears when mouse is over *\/ */
 
    /* evas_vg */
-   Evas_Vg_Shape *grid;
+   Evas_Vg_Shape *grid_ord;
 
    /* data */
-   double xmin;
-   double xmax;
+   double ymin;
+   double ymax;
    double step;
 };
 
-static Evas_Smart *_grid_smart = NULL;
+static Evas_Smart *_grid_ord_smart = NULL;
 static Evas_Smart_Class _parent_sc = EVAS_SMART_CLASS_INIT_NULL;
 
 /* Evas_Object smart callbacks */
 
 static void
-_grid_smart_add(Evas_Object *obj)
+_grid_ord_smart_add(Evas_Object *obj)
 {
-   Chart_Grid *sd;
+   Chart_Grid_Ord *sd;
 
    INF(" * %s", __FUNCTION__);
 
-   sd = calloc(1, sizeof(Chart_Grid));
+   sd = calloc(1, sizeof(Chart_Grid_Ord));
    EINA_SAFETY_ON_NULL_RETURN(sd);
 
    sd->o_bg = evas_object_rectangle_add(evas_object_evas_get(obj));
@@ -55,15 +54,15 @@ _grid_smart_add(Evas_Object *obj)
    sd->o_vg = evas_object_vg_add(evas_object_evas_get(obj));
 
    /* evas_vg */
-   sd->grid = evas_vg_shape_add(sd->o_vg);
-   evas_vg_shape_stroke_width_set(sd->grid, 1);
-   evas_vg_shape_stroke_color_set(sd->grid, 0, 0, 0, 255);
+   sd->grid_ord = evas_vg_shape_add(sd->o_vg);
+   evas_vg_shape_stroke_width_set(sd->grid_ord, 1);
+   evas_vg_shape_stroke_color_set(sd->grid_ord, 0, 0, 0, 255);
 
-   evas_object_vg_root_node_set(sd->o_vg, sd->grid);
+   evas_object_vg_root_node_set(sd->o_vg, sd->grid_ord);
 
    /* data */
-   sd->xmin = 0;
-   sd->xmax = 0;
+   sd->ymin = 0;
+   sd->ymax = 0;
    sd->step = 0;
 
    evas_object_smart_data_set(obj, sd);
@@ -72,9 +71,9 @@ _grid_smart_add(Evas_Object *obj)
 }
 
 static void
-_grid_smart_del(Evas_Object *obj)
+_grid_ord_smart_del(Evas_Object *obj)
 {
-   Chart_Grid *sd;
+   Chart_Grid_Ord *sd;
 
    INF(" * %s", __FUNCTION__);
 
@@ -92,9 +91,9 @@ _grid_smart_del(Evas_Object *obj)
 }
 
 static void
-_grid_smart_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
+_grid_ord_smart_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
 {
-   Chart_Grid *sd;
+   Chart_Grid_Ord *sd;
    Evas_Coord ox;
    Evas_Coord oy;
 
@@ -114,9 +113,9 @@ _grid_smart_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
 }
 
 static void
-_grid_smart_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h)
+_grid_ord_smart_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h)
 {
-   Chart_Grid *sd;
+   Chart_Grid_Ord *sd;
    Evas_Coord ow;
    Evas_Coord oh;
 
@@ -136,9 +135,9 @@ _grid_smart_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h)
 }
 
 static void
-_grid_smart_show(Evas_Object *obj)
+_grid_ord_smart_show(Evas_Object *obj)
 {
-   Chart_Grid *sd;
+   Chart_Grid_Ord *sd;
 
    INF(" * %s", __FUNCTION__);
 
@@ -150,9 +149,9 @@ _grid_smart_show(Evas_Object *obj)
 }
 
 static void
-_grid_smart_hide(Evas_Object *obj)
+_grid_ord_smart_hide(Evas_Object *obj)
 {
-   Chart_Grid *sd;
+   Chart_Grid_Ord *sd;
 
    INF(" * %s", __FUNCTION__);
 
@@ -164,9 +163,9 @@ _grid_smart_hide(Evas_Object *obj)
 }
 
 static void
-_grid_smart_calculate(Evas_Object *obj)
+_grid_ord_smart_calculate(Evas_Object *obj)
 {
-   Chart_Grid *sd;
+   Chart_Grid_Ord *sd;
    int w, h;
 
    INF(" * %s", __FUNCTION__);
@@ -178,22 +177,22 @@ _grid_smart_calculate(Evas_Object *obj)
 
    if (sd->step > 0)
    {
-      double x;
+      double y;
 
-      x = sd->xmin;
-      while (x <= sd->xmax)
+      y = sd->ymin;
+      while (y <= sd->ymax)
       {
-         evas_vg_shape_append_move_to(sd->grid,
-                                      X_VG(x), 0);
-         evas_vg_shape_append_line_to(sd->grid,
-                                      X_VG(x), h-1);
-         x += sd->step;
+         evas_vg_shape_append_move_to(sd->grid_ord,
+                                      0, Y_VG(y));
+         evas_vg_shape_append_line_to(sd->grid_ord,
+                                      w - 1, Y_VG(y));
+         y += sd->step;
       }
    }
 }
 
 static void
-_grid_smart_init(void)
+_grid_ord_smart_init(void)
 {
    static Evas_Smart_Class sc;
 
@@ -201,16 +200,16 @@ _grid_smart_init(void)
 
    evas_object_smart_clipped_smart_set(&_parent_sc);
    sc           = _parent_sc;
-   sc.name      = "grid";
+   sc.name      = "grid_ord";
    sc.version   = EVAS_SMART_CLASS_VERSION;
-   sc.add       = _grid_smart_add;
-   sc.del       = _grid_smart_del;
-   sc.move      = _grid_smart_move;
-   sc.resize    = _grid_smart_resize;
-   sc.show      = _grid_smart_show;
-   sc.hide      = _grid_smart_hide;
-   sc.calculate = _grid_smart_calculate;
-   _grid_smart = evas_smart_class_new(&sc);
+   sc.add       = _grid_ord_smart_add;
+   sc.del       = _grid_ord_smart_del;
+   sc.move      = _grid_ord_smart_move;
+   sc.resize    = _grid_ord_smart_resize;
+   sc.show      = _grid_ord_smart_show;
+   sc.hide      = _grid_ord_smart_hide;
+   sc.calculate = _grid_ord_smart_calculate;
+   _grid_ord_smart = evas_smart_class_new(&sc);
 }
 
 /*============================================================================*
@@ -221,50 +220,50 @@ _grid_smart_init(void)
  *                                   API                                      *
  *============================================================================*/
 
-ECH_API Evas_Object *echart_grid_add(Evas *evas)
+ECH_API Evas_Object *echart_grid_ord_add(Evas *evas)
 {
    Evas_Object *obj;
 
    INF(" * %s", __FUNCTION__);
 
-   if (!_grid_smart) _grid_smart_init();
-   obj = evas_object_smart_add(evas, _grid_smart);
+   if (!_grid_ord_smart) _grid_ord_smart_init();
+   obj = evas_object_smart_add(evas, _grid_ord_smart);
 
    return obj;
 }
 
-ECH_API void echart_grid_set(Evas_Object *obj, double xmin, double xmax, double step)
+ECH_API void echart_grid_ord_set(Evas_Object *obj, double ymin, double ymax, double step)
 {
-   Chart_Grid *sd;
+   Chart_Grid_Ord *sd;
 
    sd = evas_object_smart_data_get(obj);
    EINA_SAFETY_ON_NULL_RETURN(sd);
 
-   sd->xmin = xmin;
-   sd->xmax = xmax;
+   sd->ymin = ymin;
+   sd->ymax = ymax;
    sd->step = step;
 
    evas_object_smart_changed(obj);
 }
 
 ECH_API void
-echart_grid_color_set(Evas_Object *obj, int r, int g, int b, int a)
+echart_grid_ord_color_set(Evas_Object *obj, int r, int g, int b, int a)
 {
-   Chart_Grid *sd;
+   Chart_Grid_Ord *sd;
 
    sd = evas_object_smart_data_get(obj);
    EINA_SAFETY_ON_NULL_RETURN(sd);
 
-   evas_vg_shape_stroke_color_set(sd->grid, r, g, b, a);
+   evas_vg_shape_stroke_color_set(sd->grid_ord, r, g, b, a);
 }
 
 ECH_API void
-echart_grid_width_set(Evas_Object *obj, double width)
+echart_grid_ord_width_set(Evas_Object *obj, double width)
 {
-   Chart_Grid *sd;
+   Chart_Grid_Ord *sd;
 
    sd = evas_object_smart_data_get(obj);
    EINA_SAFETY_ON_NULL_RETURN(sd);
 
-   evas_vg_shape_stroke_width_set(sd->grid, width);
+   evas_vg_shape_stroke_width_set(sd->grid_ord, width);
 }
diff --git a/src/lib/echart_grid_ord.h b/src/lib/echart_grid_ord.h
new file mode 100644
index 0000000..50bde90
--- /dev/null
+++ b/src/lib/echart_grid_ord.h
@@ -0,0 +1,19 @@
+/*
+ * SPDX-FileCopyrightText: Vincent Torri <[email protected]>
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#ifndef ECHART_GRID_ORD_H
+#define ECHART_GRID_ORD_H
+
+#include <Evas.h>
+
+ECH_API Evas_Object *echart_grid_ord_add(Evas *evas);
+
+ECH_API void echart_grid_ord_set(Evas_Object *obj, double ymin, double ymax, double step);
+
+ECH_API void echart_grid_ord_color_set(Evas_Object *obj, int r, int g, int b, int a);
+
+ECH_API void echart_grid_ord_width_set(Evas_Object *obj, double width);
+
+#endif /* ECHART_GRID_ORD_H */
diff --git a/src/lib/meson.build b/src/lib/meson.build
index b5a4d4b..f81cf5c 100644
--- a/src/lib/meson.build
+++ b/src/lib/meson.build
@@ -6,6 +6,7 @@ echart_header = files([
   'echart_chart.h',
   'echart_color.h',
   'echart_grid.h',
+  'echart_grid_ord.h',
   'echart_main.h',
   'echart_line.h',
 ])
@@ -14,6 +15,7 @@ echart_lib_src = files([
   'echart_chart.c',
   'echart_color.c',
   'echart_grid.c',
+  'echart_grid_ord.c',
   'echart_line.c',
   'echart_main.c',
 ])

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.

Reply via email to