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.