1
0
Fork 0
mirror of https://github.com/Orama-Interactive/Pixelorama.git synced 2025-01-18 17:19:50 +00:00
Pixelorama/Scripts/Import.gd
OverloadedOrama 3a20b3e073 Added a new brush type - Random Brushes
They're like File brushes, but each time you draw, expect to see something different!

To make a random brush, just put the images you want in the same folder (under the main Brushes folder of course), and make sure their filename starts with "%".

I also changed _process() to _input() in Canvas.gd, so there may be some unexpected behavior.
2019-12-26 21:36:56 +02:00

87 lines
2.8 KiB
GDScript

extends Node
func import_brushes(path : String) -> void:
var brushes_dir := Directory.new()
if !brushes_dir.dir_exists(path):
brushes_dir.make_dir(path)
var subdirectories := find_brushes(brushes_dir, path)
for subdir_str in subdirectories:
var subdir := Directory.new()
find_brushes(subdir, "%s/%s" % [path, subdir_str])
Global.brushes_from_files = Global.custom_brushes.size()
func find_brushes(brushes_dir : Directory, path : String) -> Array:
var subdirectories := []
var found_random_brush := 0
brushes_dir.open(path)
brushes_dir.list_dir_begin(true)
var file := brushes_dir.get_next()
while file != "":
if file.get_extension().to_upper() == "PNG":
var image := Image.new()
var err := image.load(path.plus_file(file))
if err == OK:
if "%" in file:
if found_random_brush == 0:
found_random_brush = Global.file_brush_container.get_child_count()
image.convert(Image.FORMAT_RGBA8)
Global.custom_brushes.append(image)
Global.create_brush_button(image, Global.BRUSH_TYPES.RANDOM_FILE, file.trim_suffix(".png"))
else:
var brush_button = Global.file_brush_container.get_child(found_random_brush)
brush_button.random_brushes.append(image)
else:
image.convert(Image.FORMAT_RGBA8)
Global.custom_brushes.append(image)
Global.create_brush_button(image, Global.BRUSH_TYPES.FILE, file.trim_suffix(".png"))
elif file.get_extension() == "": # Probably a directory
var subdir := "./%s" % [file]
if brushes_dir.dir_exists(subdir): # If it's an actual directory
subdirectories.append(subdir)
file = brushes_dir.get_next()
brushes_dir.list_dir_end()
return subdirectories
func import_gpl(path : String) -> Palette:
var result : Palette = null
var file = File.new()
if file.file_exists(path):
file.open(path, File.READ)
var text = file.get_as_text()
var lines = text.split('\n')
var line_number := 0
var comments := ""
for line in lines:
# Check if valid Gimp Palette Library file
if line_number == 0:
if line != "GIMP Palette":
break
else:
result = Palette.new()
var name_start = path.find_last('/') + 1
var name_end = path.find_last('.')
if name_end > name_start:
result.name = path.substr(name_start, name_end - name_start)
# Comments
if line.begins_with('#'):
comments += line.trim_prefix('#') + '\n'
pass
elif line_number > 0 && line.length() >= 12:
var red : float = line.substr(0, 4).to_float() / 255.0
var green : float = line.substr(4, 4).to_float() / 255.0
var blue : float = line.substr(8, 4).to_float() / 255.0
var name : String = line.substr(12, line.length() - 12)
var color = Color(red, green, blue)
result.add_color(color, name)
line_number += 1
if result:
result.comments = comments
file.close()
return result