Remove code from mapping parser that implements csv read. Use LayerSettings class instead.
This commit is contained in:
		@@ -36,17 +36,6 @@
 | 
				
			|||||||
#include <gds-render/widgets/layer-element.h>
 | 
					#include <gds-render/widgets/layer-element.h>
 | 
				
			||||||
#include <gds-render/layer/layer-settings.h>
 | 
					#include <gds-render/layer/layer-settings.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * @brief Load a line from \p stream and parse try to parse it as layer information
 | 
					 | 
				
			||||||
 * @param stream Input data stream
 | 
					 | 
				
			||||||
 * @param export Layer shall be exported
 | 
					 | 
				
			||||||
 * @param name Layer name. Free returned pointer after using.
 | 
					 | 
				
			||||||
 * @param layer Layer number
 | 
					 | 
				
			||||||
 * @param color RGBA color.
 | 
					 | 
				
			||||||
 * @return 1 if malformatted line, 0 if parsing was successful and parameters are valid, -1 if file end
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
int mapping_parser_load_line(GDataInputStream *stream, gboolean *export, char **name, int *layer, GdkRGBA *color);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * @brief Create Line for LayerMapping file with supplied information
 | 
					 * @brief Create Line for LayerMapping file with supplied information
 | 
				
			||||||
 * @param layer_element information
 | 
					 * @param layer_element information
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -31,69 +31,6 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include <gds-render/layer/mapping-parser.h>
 | 
					#include <gds-render/layer/mapping-parser.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int mapping_parser_load_line(GDataInputStream *stream, gboolean *export, char **name, int *layer, GdkRGBA *color)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	int ret;
 | 
					 | 
				
			||||||
	gsize len;
 | 
					 | 
				
			||||||
	gchar *line;
 | 
					 | 
				
			||||||
	GRegex *regex;
 | 
					 | 
				
			||||||
	GMatchInfo *mi;
 | 
					 | 
				
			||||||
	char *match;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if ((!export) || (!name) || (!layer) || (!color)) {
 | 
					 | 
				
			||||||
		ret = 1;
 | 
					 | 
				
			||||||
		goto ret_direct;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	regex = g_regex_new("^(?<layer>[0-9]+),(?<r>[0-9\\.]+),(?<g>[0-9\\.]+),(?<b>[0-9\\.]+),(?<a>[0-9\\.]+),(?<export>[01]),(?<name>.*)$", 0, 0, NULL);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	line = g_data_input_stream_read_line(stream, &len, NULL, NULL);
 | 
					 | 
				
			||||||
	if (!line) {
 | 
					 | 
				
			||||||
		ret = -1;
 | 
					 | 
				
			||||||
		goto destroy_regex;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/* Match line in CSV */
 | 
					 | 
				
			||||||
	g_regex_match(regex, line, 0, &mi);
 | 
					 | 
				
			||||||
	if (g_match_info_matches(mi)) {
 | 
					 | 
				
			||||||
		/* Line is valid */
 | 
					 | 
				
			||||||
		match = g_match_info_fetch_named(mi, "layer");
 | 
					 | 
				
			||||||
		*layer = (int)g_ascii_strtoll(match, NULL, 10);
 | 
					 | 
				
			||||||
		g_free(match);
 | 
					 | 
				
			||||||
		match = g_match_info_fetch_named(mi, "r");
 | 
					 | 
				
			||||||
		color->red = g_ascii_strtod(match, NULL);
 | 
					 | 
				
			||||||
		g_free(match);
 | 
					 | 
				
			||||||
		match = g_match_info_fetch_named(mi, "g");
 | 
					 | 
				
			||||||
		color->green = g_ascii_strtod(match, NULL);
 | 
					 | 
				
			||||||
		g_free(match);
 | 
					 | 
				
			||||||
		match = g_match_info_fetch_named(mi, "b");
 | 
					 | 
				
			||||||
		color->blue = g_ascii_strtod(match, NULL);
 | 
					 | 
				
			||||||
		g_free(match);
 | 
					 | 
				
			||||||
		match = g_match_info_fetch_named(mi, "a");
 | 
					 | 
				
			||||||
		color->alpha = g_ascii_strtod(match, NULL);
 | 
					 | 
				
			||||||
		g_free(match);
 | 
					 | 
				
			||||||
		match = g_match_info_fetch_named(mi, "export");
 | 
					 | 
				
			||||||
		*export = ((!strcmp(match, "1")) ? TRUE : FALSE);
 | 
					 | 
				
			||||||
		g_free(match);
 | 
					 | 
				
			||||||
		match = g_match_info_fetch_named(mi, "name");
 | 
					 | 
				
			||||||
		*name = match;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		ret = 0;
 | 
					 | 
				
			||||||
	} else {
 | 
					 | 
				
			||||||
		/* Line is malformatted */
 | 
					 | 
				
			||||||
		printf("Could not recognize line in CSV as valid entry: %s\n", line);
 | 
					 | 
				
			||||||
		ret = 1;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	g_match_info_free(mi);
 | 
					 | 
				
			||||||
	g_free(line);
 | 
					 | 
				
			||||||
destroy_regex:
 | 
					 | 
				
			||||||
	g_regex_unref(regex);
 | 
					 | 
				
			||||||
ret_direct:
 | 
					 | 
				
			||||||
	return ret;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void mapping_parser_gen_csv_line(LayerElement *layer_element, char *line_buffer, size_t max_len)
 | 
					void mapping_parser_gen_csv_line(LayerElement *layer_element, char *line_buffer, size_t max_len)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	int i;
 | 
						int i;
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user