From 4bfbf641dc2b8aca8de9f86a9908063f39bd6e31 Mon Sep 17 00:00:00 2001 From: jacopograndi Date: Fri, 14 Jan 2022 13:04:34 +0100 Subject: . --- assets/addons/voxel-core/classes/readers/gpl.gd | 48 +++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 assets/addons/voxel-core/classes/readers/gpl.gd (limited to 'assets/addons/voxel-core/classes/readers/gpl.gd') diff --git a/assets/addons/voxel-core/classes/readers/gpl.gd b/assets/addons/voxel-core/classes/readers/gpl.gd new file mode 100644 index 0000000..4a6b943 --- /dev/null +++ b/assets/addons/voxel-core/classes/readers/gpl.gd @@ -0,0 +1,48 @@ +class_name GPLReader +extends Reference +# GIMP palette file reader + + + +# Public Methods +# Reads GPL file, and returns voxel palette +static func read(gpl_file : File) -> Dictionary: + var result := { + "error": OK, + "voxels": {}, + "palette": [], + } + + if gpl_file.get_line() == "GIMP Palette": + while not gpl_file.eof_reached(): + var line = gpl_file.get_line() + if typeof(line) == TYPE_STRING and not line.empty() and (line[0].is_valid_integer() or line[0] == " "): + var tokens = line.split("\t") + var name = "" + var color = tokens[0].split_floats(" ") + color = Color(color[0] / 255, color[1] / 255, color[2] / 255) + if tokens.size() > 1: + name = tokens[1] + var end = name.find("(") + name = name.substr(0, end) + + if not result["palette"].has(color): + var voxel := Voxel.colored(color) + result["palette"].append(voxel) + if not name.empty(): + Voxel.set_name(voxel, name.strip_edges()) + else: + result["error"] = ERR_FILE_UNRECOGNIZED + + return result + + +static func read_file(gpl_path : String) -> Dictionary: + var result := { "error": OK } + var file := File.new() + var error = file.open(gpl_path, File.READ) + if error == OK: + result = read(file) + if file.is_open(): + file.close() + return result -- cgit v1.2.3-54-g00ecf