From 5654c95c52fbb26039e997d019397ffe6805b040 Mon Sep 17 00:00:00 2001 From: Nishant Bansal Date: Thu, 7 Nov 2024 10:11:09 +0530 Subject: [PATCH 1/7] rasterlib: Rast_print_json_colors() added (taken from r.colors.out) Signed-off-by: Nishant Bansal --- include/grass/defs/raster.h | 4 ++++ include/grass/raster.h | 9 ++++++++ lib/raster/Makefile | 1 + .../prt_json.c => lib/raster/json_color_out.c | 23 ++++++++++++++----- raster/r.colors.out/Makefile | 4 ++-- raster/r.colors.out/local_proto.h | 7 ------ raster/r.colors.out/raster3d_main.c | 8 +++---- raster/r.colors.out/raster_main.c | 8 +++---- 8 files changed, 39 insertions(+), 25 deletions(-) rename raster/r.colors.out/prt_json.c => lib/raster/json_color_out.c (93%) delete mode 100644 raster/r.colors.out/local_proto.h diff --git a/include/grass/defs/raster.h b/include/grass/defs/raster.h index bbdc8bfeaa1..f81445a374c 100644 --- a/include/grass/defs/raster.h +++ b/include/grass/defs/raster.h @@ -178,6 +178,10 @@ void Rast__organize_colors(struct Colors *); /* color_out.c */ void Rast_print_colors(struct Colors *, DCELL, DCELL, FILE *, int); +/* json_color_out.c */ +void Rast_print_json_colors(struct Colors *, DCELL, DCELL, FILE *, int, + ColorFormat); + /* color_rand.c */ void Rast_make_random_colors(struct Colors *, CELL, CELL); diff --git a/include/grass/raster.h b/include/grass/raster.h index 138fb21c3d1..7c04b64944d 100644 --- a/include/grass/raster.h +++ b/include/grass/raster.h @@ -168,6 +168,15 @@ enum History_field { HIST_NUM_FIELDS }; +/*! + \typedef ColorFormat + \brief Color format identifiers (enum) + + Identifies of all recognized color format. + + */ +typedef enum { RGB, HEX, HSV, TRIPLET } ColorFormat; + /*! \brief Raster history info (metadata) */ struct History { /*! \brief Array of fields (see \ref History_field for details) */ diff --git a/lib/raster/Makefile b/lib/raster/Makefile index 80c1e156cc8..f02367f2c14 100644 --- a/lib/raster/Makefile +++ b/lib/raster/Makefile @@ -1,6 +1,7 @@ MODULE_TOPDIR = ../.. LIB = RASTER +LIBES = $(PARSONLIB) EXTRA_INC = include $(MODULE_TOPDIR)/include/Make/Vars.make diff --git a/raster/r.colors.out/prt_json.c b/lib/raster/json_color_out.c similarity index 93% rename from raster/r.colors.out/prt_json.c rename to lib/raster/json_color_out.c index 816a63e1b0e..51a4fc9e36e 100644 --- a/raster/r.colors.out/prt_json.c +++ b/lib/raster/json_color_out.c @@ -1,3 +1,16 @@ +/*! + \file lib/raster/json_color_out.c + + \brief Raster Library - Print color table in json format + + (C) 2010-2024 by the GRASS Development Team + + This program is free software under the GNU General Public + License (>=v2). Read the file COPYING that comes with GRASS + for details. + + */ + #include #include #include @@ -8,8 +21,6 @@ #include #include -#include "local_proto.h" - #define COLOR_STRING_LENGTH 30 /*! @@ -77,7 +88,7 @@ static void rgb_to_hsv(int r, int g, int b, float *h, float *s, float *v) \param clr_frmt color format to be used (RGB, HEX, HSV, TRIPLET). \param color_object pointer to the JSON object */ -static void set_color(int r, int g, int b, enum ColorFormat clr_frmt, +static void set_color(int r, int g, int b, ColorFormat clr_frmt, JSON_Object *color_object) { char color_string[COLOR_STRING_LENGTH]; @@ -126,7 +137,7 @@ static void set_color(int r, int g, int b, enum ColorFormat clr_frmt, */ static void write_json_rule(DCELL *val, DCELL *min, DCELL *max, int r, int g, int b, JSON_Array *root_array, int perc, - enum ColorFormat clr_frmt, FILE *fp, + ColorFormat clr_frmt, FILE *fp, JSON_Value *root_value) { static DCELL v0; @@ -168,8 +179,8 @@ static void write_json_rule(DCELL *val, DCELL *min, DCELL *max, int r, int g, \param perc TRUE for percentage output \param clr_frmt color format to be used (RBG, HEX, HSV, TRIPLET). */ -void print_json_colors(struct Colors *colors, DCELL min, DCELL max, FILE *fp, - int perc, enum ColorFormat clr_frmt) +void Rast_print_json_colors(struct Colors *colors, DCELL min, DCELL max, + FILE *fp, int perc, ColorFormat clr_frmt) { JSON_Value *root_value = json_value_init_array(); if (root_value == NULL) { diff --git a/raster/r.colors.out/Makefile b/raster/r.colors.out/Makefile index e2acf03ca41..b2377e7cd15 100644 --- a/raster/r.colors.out/Makefile +++ b/raster/r.colors.out/Makefile @@ -6,8 +6,8 @@ DEPENDENCIES = $(RASTER3DDEP) $(GISDEP) $(RASTERDEP) PROGRAMS = r.colors.out r3.colors.out -r_colors_out_OBJS = raster_main.o prt_json.o -r3_colors_out_OBJS = raster3d_main.o prt_json.o +r_colors_out_OBJS = raster_main.o +r3_colors_out_OBJS = raster3d_main.o include $(MODULE_TOPDIR)/include/Make/Multi.make diff --git a/raster/r.colors.out/local_proto.h b/raster/r.colors.out/local_proto.h deleted file mode 100644 index 5ed09a06e69..00000000000 --- a/raster/r.colors.out/local_proto.h +++ /dev/null @@ -1,7 +0,0 @@ -#include -#include - -enum ColorFormat { RGB, HEX, HSV, TRIPLET }; - -void print_json_colors(struct Colors *colors, DCELL min, DCELL max, FILE *fp, - int perc, enum ColorFormat clr_frmt); diff --git a/raster/r.colors.out/raster3d_main.c b/raster/r.colors.out/raster3d_main.c index 904db24a91f..605e76ac5d6 100644 --- a/raster/r.colors.out/raster3d_main.c +++ b/raster/r.colors.out/raster3d_main.c @@ -23,8 +23,6 @@ #include #include -#include "local_proto.h" - /* Run in raster3d mode */ int main(int argc, char **argv) { @@ -41,7 +39,7 @@ int main(int argc, char **argv) struct Colors colors; struct FPRange range; - enum ColorFormat clr_frmt; + ColorFormat clr_frmt; G_gisinit(argv[0]); @@ -102,8 +100,8 @@ int main(int argc, char **argv) else { clr_frmt = HEX; } - print_json_colors(&colors, range.min, range.max, fp, - flag.p->answer ? 1 : 0, clr_frmt); + Rast_print_json_colors(&colors, range.min, range.max, fp, + flag.p->answer ? 1 : 0, clr_frmt); } else { Rast_print_colors(&colors, range.min, range.max, fp, diff --git a/raster/r.colors.out/raster_main.c b/raster/r.colors.out/raster_main.c index 6b4a8ed36ee..c3092458bc8 100644 --- a/raster/r.colors.out/raster_main.c +++ b/raster/r.colors.out/raster_main.c @@ -22,8 +22,6 @@ #include #include -#include "local_proto.h" - /* Run in raster mode */ int main(int argc, char **argv) { @@ -40,7 +38,7 @@ int main(int argc, char **argv) struct Colors colors; struct FPRange range; - enum ColorFormat clr_frmt; + ColorFormat clr_frmt; G_gisinit(argv[0]); @@ -101,8 +99,8 @@ int main(int argc, char **argv) else { clr_frmt = HEX; } - print_json_colors(&colors, range.min, range.max, fp, - flag.p->answer ? 1 : 0, clr_frmt); + Rast_print_json_colors(&colors, range.min, range.max, fp, + flag.p->answer ? 1 : 0, clr_frmt); } else { Rast_print_colors(&colors, range.min, range.max, fp, From f5ca3c4236777549a481cf3648c35b17156cfb76 Mon Sep 17 00:00:00 2001 From: Nishant Bansal Date: Fri, 8 Nov 2024 10:34:33 +0530 Subject: [PATCH 2/7] fixes CI build failure Signed-off-by: Nishant Bansal --- include/Make/Grass.make | 2 +- lib/raster/Makefile | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/include/Make/Grass.make b/include/Make/Grass.make index 17ce25fcb71..dfcbd974b6a 100644 --- a/include/Make/Grass.make +++ b/include/Make/Grass.make @@ -213,7 +213,7 @@ NVIZDEPS = $(OGSFLIB) $(GISLIB) $(OPENGLLIB) OGSFDEPS = $(BITMAPLIB) $(RASTER3DLIB) $(VECTORLIB) $(DBMILIB) $(RASTERLIB) $(GISLIB) $(TIFFLIBPATH) $(TIFFLIB) $(OPENGLLIB) $(OPENGLULIB) $(MATHLIB) PNGDRIVERDEPS = $(DRIVERLIB) $(GISLIB) $(PNGLIB) $(MATHLIB) PSDRIVERDEPS = $(DRIVERLIB) $(GISLIB) $(MATHLIB) -RASTERDEPS = $(GISLIB) $(GPROJLIB) $(MATHLIB) +RASTERDEPS = $(GISLIB) $(GPROJLIB) $(MATHLIB) $(PARSONLIB) RLIDEPS = $(RASTERLIB) $(GISLIB) $(MATHLIB) ROWIODEPS = $(GISLIB) RTREEDEPS = $(GISLIB) $(MATHLIB) diff --git a/lib/raster/Makefile b/lib/raster/Makefile index f02367f2c14..80c1e156cc8 100644 --- a/lib/raster/Makefile +++ b/lib/raster/Makefile @@ -1,7 +1,6 @@ MODULE_TOPDIR = ../.. LIB = RASTER -LIBES = $(PARSONLIB) EXTRA_INC = include $(MODULE_TOPDIR)/include/Make/Vars.make From d27998c92255ad89a8a9d949635c943a30f0bb0e Mon Sep 17 00:00:00 2001 From: Nishant Bansal Date: Sat, 9 Nov 2024 22:40:34 +0530 Subject: [PATCH 3/7] fixes failing pytest Signed-off-by: Nishant Bansal --- raster/r.colors.out/tests/r3_colors_out_test.py | 9 +++++++++ raster/r.colors.out/tests/r_colors_out_test.py | 9 +++++++++ 2 files changed, 18 insertions(+) diff --git a/raster/r.colors.out/tests/r3_colors_out_test.py b/raster/r.colors.out/tests/r3_colors_out_test.py index 670c1ef13a6..5aa37cd02a1 100644 --- a/raster/r.colors.out/tests/r3_colors_out_test.py +++ b/raster/r.colors.out/tests/r3_colors_out_test.py @@ -1,5 +1,6 @@ """Tests of r3.colors.out""" +import pytest import grass.script as gs @@ -22,6 +23,7 @@ def validate_plain_text_output(data): ), f"test failed: expected {expected} but got {data.keys()}" +@pytest.mark.needs_solo_run def test_r3_colors_out_plain_output(raster3_color_dataset): """Test r3.colors.out command for plain output format.""" session = raster3_color_dataset @@ -29,6 +31,7 @@ def test_r3_colors_out_plain_output(raster3_color_dataset): validate_plain_text_output(data) +@pytest.mark.needs_solo_run def test_r3_colors_out_without_format_option(raster3_color_dataset): """Test r3.colors.out command without any format option.""" session = raster3_color_dataset @@ -36,6 +39,7 @@ def test_r3_colors_out_without_format_option(raster3_color_dataset): validate_plain_text_output(data) +@pytest.mark.needs_solo_run def test_r3_colors_out_with_p_flag(raster3_color_dataset): """Test r3.colors.out command with percentage values.""" session = raster3_color_dataset @@ -65,6 +69,7 @@ def validate_common_json_structure(data): ), "The length of the output JSON does not match the expected value of 8." +@pytest.mark.needs_solo_run def test_r3_colors_out_json_with_default_option(raster3_color_dataset): """Test r3.colors.out command for JSON output format for default color option.""" session = raster3_color_dataset @@ -83,6 +88,7 @@ def test_r3_colors_out_json_with_default_option(raster3_color_dataset): assert expected == data, f"test failed: expected {expected} but got {data}" +@pytest.mark.needs_solo_run def test_r3_colors_out_json_with_triplet_option(raster3_color_dataset): """Test r3.colors.out command for JSON output format for triplet color option.""" session = raster3_color_dataset @@ -103,6 +109,7 @@ def test_r3_colors_out_json_with_triplet_option(raster3_color_dataset): assert expected == data, f"test failed: expected {expected} but got {data}" +@pytest.mark.needs_solo_run def test_r3_colors_out_json_with_rgb_option(raster3_color_dataset): """Test r3.colors.out command for JSON output format for rgb color option.""" session = raster3_color_dataset @@ -127,6 +134,7 @@ def test_r3_colors_out_json_with_rgb_option(raster3_color_dataset): assert expected == data, f"test failed: expected {expected} but got {data}" +@pytest.mark.needs_solo_run def test_r3_colors_out_json_with_hex_option(raster3_color_dataset): """Test r3.colors.out command for JSON output format for hex color option.""" session = raster3_color_dataset @@ -151,6 +159,7 @@ def test_r3_colors_out_json_with_hex_option(raster3_color_dataset): assert expected == data, f"test failed: expected {expected} but got {data}" +@pytest.mark.needs_solo_run def test_r3_colors_out_json_with_hsv_option(raster3_color_dataset): """Test r3.colors.out command for JSON output format for hsv color option.""" session = raster3_color_dataset diff --git a/raster/r.colors.out/tests/r_colors_out_test.py b/raster/r.colors.out/tests/r_colors_out_test.py index d1abec82592..29f6b5b2eb6 100644 --- a/raster/r.colors.out/tests/r_colors_out_test.py +++ b/raster/r.colors.out/tests/r_colors_out_test.py @@ -1,5 +1,6 @@ """Tests of r.colors.out""" +import pytest import grass.script as gs @@ -22,6 +23,7 @@ def validate_plain_text_output(data): ), f"test failed: expected {expected} but got {data.keys()}" +@pytest.mark.needs_solo_run def test_r_colors_out_plain_output(raster_color_dataset): """Test r.colors.out command for plain output format.""" session = raster_color_dataset @@ -29,6 +31,7 @@ def test_r_colors_out_plain_output(raster_color_dataset): validate_plain_text_output(data) +@pytest.mark.needs_solo_run def test_r_colors_out_without_format_option(raster_color_dataset): """Test r.colors.out command without any format option.""" session = raster_color_dataset @@ -36,6 +39,7 @@ def test_r_colors_out_without_format_option(raster_color_dataset): validate_plain_text_output(data) +@pytest.mark.needs_solo_run def test_r_colors_out_with_p_flag(raster_color_dataset): """Test r.colors.out command with percentage values.""" session = raster_color_dataset @@ -65,6 +69,7 @@ def validate_common_json_structure(data): ), "The length of the output JSON does not match the expected value of 8." +@pytest.mark.needs_solo_run def test_r_colors_out_json_with_default_option(raster_color_dataset): """Test r.colors.out command for JSON output format for default color option.""" session = raster_color_dataset @@ -83,6 +88,7 @@ def test_r_colors_out_json_with_default_option(raster_color_dataset): assert expected == data, f"test failed: expected {expected} but got {data}" +@pytest.mark.needs_solo_run def test_r_colors_out_json_with_triplet_option(raster_color_dataset): """Test r.colors.out command for JSON output format for triplet color option.""" session = raster_color_dataset @@ -103,6 +109,7 @@ def test_r_colors_out_json_with_triplet_option(raster_color_dataset): assert expected == data, f"test failed: expected {expected} but got {data}" +@pytest.mark.needs_solo_run def test_r_colors_out_json_with_rgb_option(raster_color_dataset): """Test r.colors.out command for JSON output format for rgb color option.""" session = raster_color_dataset @@ -127,6 +134,7 @@ def test_r_colors_out_json_with_rgb_option(raster_color_dataset): assert expected == data, f"test failed: expected {expected} but got {data}" +@pytest.mark.needs_solo_run def test_r_colors_out_json_with_hex_option(raster_color_dataset): """Test r.colors.out command for JSON output format for hex color option.""" session = raster_color_dataset @@ -151,6 +159,7 @@ def test_r_colors_out_json_with_hex_option(raster_color_dataset): assert expected == data, f"test failed: expected {expected} but got {data}" +@pytest.mark.needs_solo_run def test_r_colors_out_json_with_hsv_option(raster_color_dataset): """Test r.colors.out command for JSON output format for hsv color option.""" session = raster_color_dataset From e109bd119bcb3a4bf4e6506c5c4b5a8bb489b63d Mon Sep 17 00:00:00 2001 From: Nishant Bansal Date: Wed, 13 Nov 2024 14:20:32 +0530 Subject: [PATCH 4/7] fixes parson issue Signed-off-by: Nishant Bansal --- lib/external/parson/parson.c | 6 ++++++ lib/external/parson/parson.h | 2 ++ lib/raster/json_color_out.c | 12 ++++++------ 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/lib/external/parson/parson.c b/lib/external/parson/parson.c index 9b85ca78cdc..0eaa22d7e21 100644 --- a/lib/external/parson/parson.c +++ b/lib/external/parson/parson.c @@ -2455,6 +2455,12 @@ JSON_Status json_object_set_string(JSON_Object *object, const char *name, return status; } +JSON_Status json_object_set_string_parson(JSON_Object *object, const char *name, + const char *string) +{ + return json_object_set_string(object, name, string); +} + JSON_Status json_object_set_string_with_len(JSON_Object *object, const char *name, const char *string, size_t len) diff --git a/lib/external/parson/parson.h b/lib/external/parson/parson.h index 5799e0346ef..3a431f1407e 100644 --- a/lib/external/parson/parson.h +++ b/lib/external/parson/parson.h @@ -200,6 +200,8 @@ JSON_Status json_object_set_value(JSON_Object *object, const char *name, JSON_Value *value); JSON_Status json_object_set_string(JSON_Object *object, const char *name, const char *string); +JSON_Status json_object_set_string_parson(JSON_Object *object, const char *name, + const char *string); JSON_Status json_object_set_string_with_len( JSON_Object *object, const char *name, const char *string, size_t len); /* length shouldn't include last null character */ diff --git a/lib/raster/json_color_out.c b/lib/raster/json_color_out.c index 51a4fc9e36e..27d30223791 100644 --- a/lib/raster/json_color_out.c +++ b/lib/raster/json_color_out.c @@ -98,24 +98,24 @@ static void set_color(int r, int g, int b, ColorFormat clr_frmt, case RGB: snprintf(color_string, sizeof(color_string), "rgb(%d, %d, %d)", r, g, b); - json_object_set_string(color_object, "rgb", color_string); + json_object_set_string_parson(color_object, "rgb", color_string); break; case HEX: snprintf(color_string, sizeof(color_string), "#%02X%02X%02X", r, g, b); - json_object_set_string(color_object, "hex", color_string); + json_object_set_string_parson(color_object, "hex", color_string); break; case HSV: rgb_to_hsv(r, g, b, &h, &s, &v); snprintf(color_string, sizeof(color_string), "hsv(%d, %d, %d)", (int)h, (int)s, (int)v); - json_object_set_string(color_object, "hsv", color_string); + json_object_set_string_parson(color_object, "hsv", color_string); break; case TRIPLET: snprintf(color_string, sizeof(color_string), "%d:%d:%d", r, g, b); - json_object_set_string(color_object, "triplet", color_string); + json_object_set_string_parson(color_object, "triplet", color_string); break; } } @@ -240,7 +240,7 @@ void Rast_print_json_colors(struct Colors *colors, DCELL min, DCELL max, _("Failed to initialize JSON object. Out of memory?")); } JSON_Object *nv_object = json_object(nv_value); - json_object_set_string(nv_object, "value", "nv"); + json_object_set_string_parson(nv_object, "value", "nv"); set_color(r, g, b, clr_frmt, nv_object); json_array_append_value(root_array, nv_value); @@ -254,7 +254,7 @@ void Rast_print_json_colors(struct Colors *colors, DCELL min, DCELL max, _("Failed to initialize JSON object. Out of memory?")); } JSON_Object *default_object = json_object(default_value); - json_object_set_string(default_object, "value", "default"); + json_object_set_string_parson(default_object, "value", "default"); set_color(r, g, b, clr_frmt, default_object); json_array_append_value(root_array, default_value); } From 316e3d7ab3b10e9685075dc75be0a93c42112fef Mon Sep 17 00:00:00 2001 From: Nishant Bansal Date: Wed, 15 Jan 2025 12:15:33 +0530 Subject: [PATCH 5/7] fix json parsing issue using gjson api Signed-off-by: Nishant Bansal --- lib/external/parson/parson.c | 6 -- lib/external/parson/parson.h | 2 - lib/raster/json_color_out.c | 76 ++++++++++--------- .../r.colors.out/tests/r3_colors_out_test.py | 9 --- .../r.colors.out/tests/r_colors_out_test.py | 9 --- 5 files changed, 39 insertions(+), 63 deletions(-) diff --git a/lib/external/parson/parson.c b/lib/external/parson/parson.c index 0eaa22d7e21..9b85ca78cdc 100644 --- a/lib/external/parson/parson.c +++ b/lib/external/parson/parson.c @@ -2455,12 +2455,6 @@ JSON_Status json_object_set_string(JSON_Object *object, const char *name, return status; } -JSON_Status json_object_set_string_parson(JSON_Object *object, const char *name, - const char *string) -{ - return json_object_set_string(object, name, string); -} - JSON_Status json_object_set_string_with_len(JSON_Object *object, const char *name, const char *string, size_t len) diff --git a/lib/external/parson/parson.h b/lib/external/parson/parson.h index 3a431f1407e..5799e0346ef 100644 --- a/lib/external/parson/parson.h +++ b/lib/external/parson/parson.h @@ -200,8 +200,6 @@ JSON_Status json_object_set_value(JSON_Object *object, const char *name, JSON_Value *value); JSON_Status json_object_set_string(JSON_Object *object, const char *name, const char *string); -JSON_Status json_object_set_string_parson(JSON_Object *object, const char *name, - const char *string); JSON_Status json_object_set_string_with_len( JSON_Object *object, const char *name, const char *string, size_t len); /* length shouldn't include last null character */ diff --git a/lib/raster/json_color_out.c b/lib/raster/json_color_out.c index 27d30223791..47ac11c3cf4 100644 --- a/lib/raster/json_color_out.c +++ b/lib/raster/json_color_out.c @@ -1,14 +1,15 @@ /*! - \file lib/raster/json_color_out.c - - \brief Raster Library - Print color table in json format - - (C) 2010-2024 by the GRASS Development Team - - This program is free software under the GNU General Public - License (>=v2). Read the file COPYING that comes with GRASS - for details. - + * \file lib/raster/json_color_out.c + * + * \brief Raster Library - Print color table in json format + * + * (C) 2010-2024 by the GRASS Development Team + * + * This program is free software under the GNU General Public + * License (>=v2). Read the file COPYING that comes with GRASS + * for details. + * + * \author Nishant Bansal */ #include @@ -17,6 +18,7 @@ #include #include +#include #include #include #include @@ -98,24 +100,24 @@ static void set_color(int r, int g, int b, ColorFormat clr_frmt, case RGB: snprintf(color_string, sizeof(color_string), "rgb(%d, %d, %d)", r, g, b); - json_object_set_string_parson(color_object, "rgb", color_string); + G_json_object_set_string(color_object, "rgb", color_string); break; case HEX: snprintf(color_string, sizeof(color_string), "#%02X%02X%02X", r, g, b); - json_object_set_string_parson(color_object, "hex", color_string); + G_json_object_set_string(color_object, "hex", color_string); break; case HSV: rgb_to_hsv(r, g, b, &h, &s, &v); snprintf(color_string, sizeof(color_string), "hsv(%d, %d, %d)", (int)h, (int)s, (int)v); - json_object_set_string_parson(color_object, "hsv", color_string); + G_json_object_set_string(color_object, "hsv", color_string); break; case TRIPLET: snprintf(color_string, sizeof(color_string), "%d:%d:%d", r, g, b); - json_object_set_string_parson(color_object, "triplet", color_string); + G_json_object_set_string(color_object, "triplet", color_string); break; } } @@ -149,24 +151,24 @@ static void write_json_rule(DCELL *val, DCELL *min, DCELL *max, int r, int g, // Update last processed values v0 = *val, r0 = r, g0 = g, b0 = b; - JSON_Value *color_value = json_value_init_object(); + JSON_Value *color_value = G_json_value_init_object(); if (color_value == NULL) { - json_value_free(root_value); + G_json_value_free(root_value); close_file(fp); G_fatal_error(_("Failed to initialize JSON object. Out of memory?")); } - JSON_Object *color_object = json_object(color_value); + JSON_Object *color_object = G_json_object(color_value); // Set the value as a percentage if requested, otherwise set it as-is if (perc) - json_object_set_number(color_object, "value", - 100 * (*val - *min) / (*max - *min)); + G_json_object_set_number(color_object, "value", + 100 * (*val - *min) / (*max - *min)); else - json_object_set_number(color_object, "value", *val); + G_json_object_set_number(color_object, "value", *val); set_color(r, g, b, clr_frmt, color_object); - json_array_append_value(root_array, color_value); + G_json_array_append_value(root_array, color_value); } /*! @@ -182,12 +184,12 @@ static void write_json_rule(DCELL *val, DCELL *min, DCELL *max, int r, int g, void Rast_print_json_colors(struct Colors *colors, DCELL min, DCELL max, FILE *fp, int perc, ColorFormat clr_frmt) { - JSON_Value *root_value = json_value_init_array(); + JSON_Value *root_value = G_json_value_init_array(); if (root_value == NULL) { close_file(fp); G_fatal_error(_("Failed to initialize JSON array. Out of memory?")); } - JSON_Array *root_array = json_array(root_value); + JSON_Array *root_array = G_json_array(root_value); if (colors->version < 0) { /* 3.0 format */ @@ -232,45 +234,45 @@ void Rast_print_json_colors(struct Colors *colors, DCELL min, DCELL max, // Get RGB color for null values and create JSON entry Rast_get_null_value_color(&r, &g, &b, colors); - JSON_Value *nv_value = json_value_init_object(); + JSON_Value *nv_value = G_json_value_init_object(); if (nv_value == NULL) { - json_value_free(root_value); + G_json_value_free(root_value); close_file(fp); G_fatal_error( _("Failed to initialize JSON object. Out of memory?")); } - JSON_Object *nv_object = json_object(nv_value); - json_object_set_string_parson(nv_object, "value", "nv"); + JSON_Object *nv_object = G_json_object(nv_value); + G_json_object_set_string(nv_object, "value", "nv"); set_color(r, g, b, clr_frmt, nv_object); - json_array_append_value(root_array, nv_value); + G_json_array_append_value(root_array, nv_value); // Get RGB color for default values and create JSON entry Rast_get_default_color(&r, &g, &b, colors); - JSON_Value *default_value = json_value_init_object(); + JSON_Value *default_value = G_json_value_init_object(); if (default_value == NULL) { - json_value_free(root_value); + G_json_value_free(root_value); close_file(fp); G_fatal_error( _("Failed to initialize JSON object. Out of memory?")); } - JSON_Object *default_object = json_object(default_value); - json_object_set_string_parson(default_object, "value", "default"); + JSON_Object *default_object = G_json_object(default_value); + G_json_object_set_string(default_object, "value", "default"); set_color(r, g, b, clr_frmt, default_object); - json_array_append_value(root_array, default_value); + G_json_array_append_value(root_array, default_value); } // Serialize JSON array to a string and print to the file - char *json_string = json_serialize_to_string_pretty(root_value); + char *json_string = G_json_serialize_to_string_pretty(root_value); if (!json_string) { - json_value_free(root_value); + G_json_value_free(root_value); close_file(fp); G_fatal_error(_("Failed to serialize JSON to pretty format.")); } fputs(json_string, fp); - json_free_serialized_string(json_string); - json_value_free(root_value); + G_json_free_serialized_string(json_string); + G_json_value_free(root_value); close_file(fp); } diff --git a/raster/r.colors.out/tests/r3_colors_out_test.py b/raster/r.colors.out/tests/r3_colors_out_test.py index 5aa37cd02a1..670c1ef13a6 100644 --- a/raster/r.colors.out/tests/r3_colors_out_test.py +++ b/raster/r.colors.out/tests/r3_colors_out_test.py @@ -1,6 +1,5 @@ """Tests of r3.colors.out""" -import pytest import grass.script as gs @@ -23,7 +22,6 @@ def validate_plain_text_output(data): ), f"test failed: expected {expected} but got {data.keys()}" -@pytest.mark.needs_solo_run def test_r3_colors_out_plain_output(raster3_color_dataset): """Test r3.colors.out command for plain output format.""" session = raster3_color_dataset @@ -31,7 +29,6 @@ def test_r3_colors_out_plain_output(raster3_color_dataset): validate_plain_text_output(data) -@pytest.mark.needs_solo_run def test_r3_colors_out_without_format_option(raster3_color_dataset): """Test r3.colors.out command without any format option.""" session = raster3_color_dataset @@ -39,7 +36,6 @@ def test_r3_colors_out_without_format_option(raster3_color_dataset): validate_plain_text_output(data) -@pytest.mark.needs_solo_run def test_r3_colors_out_with_p_flag(raster3_color_dataset): """Test r3.colors.out command with percentage values.""" session = raster3_color_dataset @@ -69,7 +65,6 @@ def validate_common_json_structure(data): ), "The length of the output JSON does not match the expected value of 8." -@pytest.mark.needs_solo_run def test_r3_colors_out_json_with_default_option(raster3_color_dataset): """Test r3.colors.out command for JSON output format for default color option.""" session = raster3_color_dataset @@ -88,7 +83,6 @@ def test_r3_colors_out_json_with_default_option(raster3_color_dataset): assert expected == data, f"test failed: expected {expected} but got {data}" -@pytest.mark.needs_solo_run def test_r3_colors_out_json_with_triplet_option(raster3_color_dataset): """Test r3.colors.out command for JSON output format for triplet color option.""" session = raster3_color_dataset @@ -109,7 +103,6 @@ def test_r3_colors_out_json_with_triplet_option(raster3_color_dataset): assert expected == data, f"test failed: expected {expected} but got {data}" -@pytest.mark.needs_solo_run def test_r3_colors_out_json_with_rgb_option(raster3_color_dataset): """Test r3.colors.out command for JSON output format for rgb color option.""" session = raster3_color_dataset @@ -134,7 +127,6 @@ def test_r3_colors_out_json_with_rgb_option(raster3_color_dataset): assert expected == data, f"test failed: expected {expected} but got {data}" -@pytest.mark.needs_solo_run def test_r3_colors_out_json_with_hex_option(raster3_color_dataset): """Test r3.colors.out command for JSON output format for hex color option.""" session = raster3_color_dataset @@ -159,7 +151,6 @@ def test_r3_colors_out_json_with_hex_option(raster3_color_dataset): assert expected == data, f"test failed: expected {expected} but got {data}" -@pytest.mark.needs_solo_run def test_r3_colors_out_json_with_hsv_option(raster3_color_dataset): """Test r3.colors.out command for JSON output format for hsv color option.""" session = raster3_color_dataset diff --git a/raster/r.colors.out/tests/r_colors_out_test.py b/raster/r.colors.out/tests/r_colors_out_test.py index 29f6b5b2eb6..d1abec82592 100644 --- a/raster/r.colors.out/tests/r_colors_out_test.py +++ b/raster/r.colors.out/tests/r_colors_out_test.py @@ -1,6 +1,5 @@ """Tests of r.colors.out""" -import pytest import grass.script as gs @@ -23,7 +22,6 @@ def validate_plain_text_output(data): ), f"test failed: expected {expected} but got {data.keys()}" -@pytest.mark.needs_solo_run def test_r_colors_out_plain_output(raster_color_dataset): """Test r.colors.out command for plain output format.""" session = raster_color_dataset @@ -31,7 +29,6 @@ def test_r_colors_out_plain_output(raster_color_dataset): validate_plain_text_output(data) -@pytest.mark.needs_solo_run def test_r_colors_out_without_format_option(raster_color_dataset): """Test r.colors.out command without any format option.""" session = raster_color_dataset @@ -39,7 +36,6 @@ def test_r_colors_out_without_format_option(raster_color_dataset): validate_plain_text_output(data) -@pytest.mark.needs_solo_run def test_r_colors_out_with_p_flag(raster_color_dataset): """Test r.colors.out command with percentage values.""" session = raster_color_dataset @@ -69,7 +65,6 @@ def validate_common_json_structure(data): ), "The length of the output JSON does not match the expected value of 8." -@pytest.mark.needs_solo_run def test_r_colors_out_json_with_default_option(raster_color_dataset): """Test r.colors.out command for JSON output format for default color option.""" session = raster_color_dataset @@ -88,7 +83,6 @@ def test_r_colors_out_json_with_default_option(raster_color_dataset): assert expected == data, f"test failed: expected {expected} but got {data}" -@pytest.mark.needs_solo_run def test_r_colors_out_json_with_triplet_option(raster_color_dataset): """Test r.colors.out command for JSON output format for triplet color option.""" session = raster_color_dataset @@ -109,7 +103,6 @@ def test_r_colors_out_json_with_triplet_option(raster_color_dataset): assert expected == data, f"test failed: expected {expected} but got {data}" -@pytest.mark.needs_solo_run def test_r_colors_out_json_with_rgb_option(raster_color_dataset): """Test r.colors.out command for JSON output format for rgb color option.""" session = raster_color_dataset @@ -134,7 +127,6 @@ def test_r_colors_out_json_with_rgb_option(raster_color_dataset): assert expected == data, f"test failed: expected {expected} but got {data}" -@pytest.mark.needs_solo_run def test_r_colors_out_json_with_hex_option(raster_color_dataset): """Test r.colors.out command for JSON output format for hex color option.""" session = raster_color_dataset @@ -159,7 +151,6 @@ def test_r_colors_out_json_with_hex_option(raster_color_dataset): assert expected == data, f"test failed: expected {expected} but got {data}" -@pytest.mark.needs_solo_run def test_r_colors_out_json_with_hsv_option(raster_color_dataset): """Test r.colors.out command for JSON output format for hsv color option.""" session = raster_color_dataset From 98cbf8e1f082c723c61514ee8137e7c33185e1f2 Mon Sep 17 00:00:00 2001 From: Nishant Bansal Date: Thu, 16 Jan 2025 09:14:23 +0530 Subject: [PATCH 6/7] remove unused headers Signed-off-by: Nishant Bansal --- lib/raster/json_color_out.c | 1 - raster/r.colors.out/Makefile | 4 ++-- raster/r.colors.out/raster3d_main.c | 1 - raster/r.colors.out/raster_main.c | 1 - 4 files changed, 2 insertions(+), 5 deletions(-) diff --git a/lib/raster/json_color_out.c b/lib/raster/json_color_out.c index 47ac11c3cf4..f5073f9f13f 100644 --- a/lib/raster/json_color_out.c +++ b/lib/raster/json_color_out.c @@ -20,7 +20,6 @@ #include #include #include -#include #include #define COLOR_STRING_LENGTH 30 diff --git a/raster/r.colors.out/Makefile b/raster/r.colors.out/Makefile index b2377e7cd15..b6717d12937 100644 --- a/raster/r.colors.out/Makefile +++ b/raster/r.colors.out/Makefile @@ -1,7 +1,7 @@ MODULE_TOPDIR = ../.. -LIBES2 = $(RASTERLIB) $(GISLIB) $(PARSONLIB) -LIBES3 = $(RASTER3DLIB) $(RASTERLIB) $(GISLIB) $(PARSONLIB) +LIBES2 = $(RASTERLIB) $(GISLIB) +LIBES3 = $(RASTER3DLIB) $(RASTERLIB) $(GISLIB) DEPENDENCIES = $(RASTER3DDEP) $(GISDEP) $(RASTERDEP) PROGRAMS = r.colors.out r3.colors.out diff --git a/raster/r.colors.out/raster3d_main.c b/raster/r.colors.out/raster3d_main.c index 605e76ac5d6..e988663d665 100644 --- a/raster/r.colors.out/raster3d_main.c +++ b/raster/r.colors.out/raster3d_main.c @@ -21,7 +21,6 @@ #include #include #include -#include /* Run in raster3d mode */ int main(int argc, char **argv) diff --git a/raster/r.colors.out/raster_main.c b/raster/r.colors.out/raster_main.c index c3092458bc8..60807c06383 100644 --- a/raster/r.colors.out/raster_main.c +++ b/raster/r.colors.out/raster_main.c @@ -20,7 +20,6 @@ #include #include #include -#include /* Run in raster mode */ int main(int argc, char **argv) From fc83d069dbe9e6ed47d7fd4ff91c4d199629e4c3 Mon Sep 17 00:00:00 2001 From: Anna Petrasova Date: Thu, 16 Jan 2025 22:48:20 -0500 Subject: [PATCH 7/7] Update include/grass/raster.h --- include/grass/raster.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/grass/raster.h b/include/grass/raster.h index 7c04b64944d..2fed5d88157 100644 --- a/include/grass/raster.h +++ b/include/grass/raster.h @@ -172,7 +172,7 @@ enum History_field { \typedef ColorFormat \brief Color format identifiers (enum) - Identifies of all recognized color format. + Identifiers of all recognized color formats. */ typedef enum { RGB, HEX, HSV, TRIPLET } ColorFormat;