1
0
Fork 0
mirror of https://github.com/Orama-Interactive/Pixelorama.git synced 2025-01-18 17:19:50 +00:00

Gimp palette import fixes. Support for newer format, and support for unnamed colours (#250)

This commit is contained in:
rob-a-bolton 2020-05-31 11:51:08 +01:00 committed by GitHub
parent 9a1f5bf5b8
commit 145e3de7c4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -265,6 +265,7 @@ func import_patterns(priority_ordered_search_path: Array) -> void:
func import_gpl(path : String) -> Palette:
# Refer to app/core/gimppalette-load.c of the GIMP for the "living spec"
var result : Palette = null
var file = File.new()
if file.file_exists(path):
@ -280,6 +281,8 @@ func import_gpl(path : String) -> Palette:
break
else:
result = Palette.new()
# Use filename as palette name in case reading old
# palette format (must read more to determine)
var name_start = path.find_last('/') + 1
var name_end = path.find_last('.')
if name_end > name_start:
@ -288,15 +291,27 @@ func import_gpl(path : String) -> Palette:
# Comments
if line.begins_with('#'):
comments += line.trim_prefix('#') + '\n'
# Some programs output palette name in a comment for old format
if line.begins_with("#Palette Name: "):
result.name = line.replace("#Palette Name: ", "")
pass
elif line_number > 0 && line.length() >= 12:
elif line.begins_with("Name: "):
result.name = line.replace("Name: ", "")
pass
elif line.begins_with("Columns: "):
# Number of colors in this palette. Unecessary and often wrong
pass
elif line_number > 0 && line.length() >= 9:
line = line.replace("\t", " ")
var color_data : PoolStringArray = line.split(" ", false, 4)
var red : float = color_data[0].to_float() / 255.0
var green : float = color_data[1].to_float() / 255.0
var blue : float = color_data[2].to_float() / 255.0
var color = Color(red, green, blue)
if color_data.size() >= 4:
result.add_color(color, color_data[3])
else:
result.add_color(color)
line_number += 1
if result: