Add color darkening

python-refactor
LostQuasar 2 years ago
parent 5f2c005969
commit 07eff9325a

@ -1,6 +1,6 @@
from svgutils.compose import *
from cairosvg import svg2png
import toml, os
import toml, os, re
asset_path = "../assets/"
CONFIG["svg.file_path"] = asset_path
@ -17,10 +17,18 @@ with open("../assets/colors/base.toml", "r") as color_file: #Load the user confi
os.makedirs("../output/vector/", exist_ok=True)
os.makedirs("../output/" + str(config["raster_size"]) + "/", exist_ok=True)
def DarkenColor(inputColor, percentage):
inputColor = inputColor.replace('0x', '').replace('#', '').upper()
valLen = int(len(inputColor) / 3)
outputColor = ""
for value in list(map(''.join, zip( * [iter(inputColor)] * valLen))):
outputColor += str(hex(int(int(value, 16) * ((100 - int(percentage)) / 100))))[2: ].zfill(valLen).upper()
return outputColor
for key in designs:
currentDesign = designs[key] #Select the current design which is a list of parts
partsList = []
colors_out = {}
colorsOut = {}
for part in currentDesign:
for url in definitions[part]:
partsList.append(url) #For each part add each element to the list
@ -30,7 +38,7 @@ for key in designs:
if "color" in part:
with open(asset_path + part) as transform_file:
swaps = toml.loads(transform_file.read())
colors_out.update(swaps)
colorsOut.update(swaps)
else:
with open(asset_path + part) as transform_file:
transforms = toml.loads(transform_file.read())
@ -39,15 +47,21 @@ for key in designs:
svg_parts.append(SVG(part)) #Add each element of the list of paths to a new list as a SVG element
Figure("128","128", *svg_parts, SVG("credits.svg")).save(f"../output/vector/{key}.svg") #Compile all parts into an SVG
with open(f"../output/vector/{key}.svg", "r") as in_file:
in_lines = in_file.read()
for color_key in colors_out:
if base_colors[color_key].lower() in in_lines.lower():
pattern = re.compile(base_colors[color_key], re.IGNORECASE)
in_lines = pattern.sub(colors_out[color_key].lower(), in_lines)
with open(f"../output/vector/{key}.svg", "r") as inFile:
inLines = inFile.read()
for colorKey in colorsOut:
if base_colors[colorKey].lower() in inLines.lower():
pattern = re.compile(base_colors[colorKey], re.IGNORECASE)
inLines = pattern.sub(colorsOut[colorKey].lower(), inLines)
if "DARKEN" in inLines:
darkenMatches = re.findall("(#DARKEN\( ?((?:(?:[a-f]|[A-F]|[0-9]){3}){1,2}) ?\, ?(\d{1,2}) ?\))", inLines)
if darkenMatches:
for match in darkenMatches:
newColor = DarkenColor(match[1], match[2])
inLines = inLines.replace(match[0], "#"+newColor.lower())
with open(f"../output/vector/{key}.svg", "w") as out_file:
out_file.write(in_lines)
out_file.write(inLines)
if config["raster_images"]: #Create png of designated size
svg2png(

Loading…
Cancel
Save