From c13f1d5f752d4f58357561e3d0661ab1f6aa6fbb Mon Sep 17 00:00:00 2001 From: Jakub Steiner Date: Wed, 18 Jan 2023 11:57:40 +0100 Subject: fullcolor: retire unused script - we no longer render fullcolor into bitmaps Invalidates https://gitlab.gnome.org/GNOME/adwaita-icon-theme/-/issues/211 --- render-icon-theme.py | 165 --------------------------------------------------- 1 file changed, 165 deletions(-) delete mode 100755 render-icon-theme.py diff --git a/render-icon-theme.py b/render-icon-theme.py deleted file mode 100755 index 51a75ba4d..000000000 --- a/render-icon-theme.py +++ /dev/null @@ -1,165 +0,0 @@ -#!/usr/bin/python3 - -import os -import sys -import xml.sax -import subprocess - -OPTIPNG = '/usr/bin/optipng' -ZOPFLIPNG = '/usr/bin/zopflipng' -SRC = os.path.join('.', 'src', 'fullcolor') - -inkscape_process = None - -def optimize_png(png_file): - if os.path.exists(ZOPFLIPNG): - process = subprocess.Popen([ZOPFLIPNG, '-y', '-m', png_file, png_file], stdout=open(os.devnull, 'wb')) - process.wait() - elif os.path.exists(OPTIPNG): - process = subprocess.Popen([OPTIPNG, '-quiet', '-o7', png_file], stdout=open(os.devnull, 'wb')) - process.wait() - -def wait_for_prompt(process, command=None): - if command is not None: - process.stdin.write((command+'\n').encode('utf-8')) - - # This is kinda ugly ... - # Wait for just a '>', or '\n>' if some other char appearead first - output = process.stdout.read(1) - if output == b'>': - return - - output += process.stdout.read(1) - while output != b'\n>': - output += process.stdout.read(1) - output = output[1:] - -def inkscape_render_rect(icon_file, rect, output_file): - #print("flatpak run org.inkscape.Inkscape --batch-process -i %s --export-type=png -o %s %s" % (rect, output_file,icon_file)); - subprocess.run(['flatpak','run','org.inkscape.Inkscape', '--batch-process', '-i', rect, '--export-type=png', '-o', output_file, icon_file]) - optimize_png(output_file) - -class ContentHandler(xml.sax.ContentHandler): - ROOT = 0 - SVG = 1 - LAYER = 2 - OTHER = 3 - TEXT = 4 - def __init__(self, path, force=False, filter=None): - self.stack = [self.ROOT] - self.inside = [self.ROOT] - self.path = path - self.rects = [] - self.state = self.ROOT - self.chars = "" - self.force = force - self.filter = filter - - def endDocument(self): - pass - - def startElement(self, name, attrs): - if self.inside[-1] == self.ROOT: - if name == "svg": - self.stack.append(self.SVG) - self.inside.append(self.SVG) - return - elif self.inside[-1] == self.SVG: - if (name == "g" and ('inkscape:groupmode' in attrs) and ('inkscape:label' in attrs) - and attrs['inkscape:groupmode'] == 'layer' and attrs['inkscape:label'].startswith('baseplate')): - self.stack.append(self.LAYER) - self.inside.append(self.LAYER) - self.context = None - self.icon_name = None - self.rects = [] - return - elif self.inside[-1] == self.LAYER: - if name == "text" and ('inkscape:label' in attrs) and attrs['inkscape:label'] == 'context': - self.stack.append(self.TEXT) - self.inside.append(self.TEXT) - self.text='context' - self.chars = "" - return - elif name == "text" and ('inkscape:label' in attrs) and attrs['inkscape:label'] == 'icon-name': - self.stack.append(self.TEXT) - self.inside.append(self.TEXT) - self.text='icon-name' - self.chars = "" - return - elif name == "rect": - self.rects.append(attrs) - - self.stack.append(self.OTHER) - - - def endElement(self, name): - stacked = self.stack.pop() - if self.inside[-1] == stacked: - self.inside.pop() - - if stacked == self.TEXT and self.text is not None: - assert self.text in ['context', 'icon-name'] - if self.text == 'context': - self.context = self.chars - elif self.text == 'icon-name': - self.icon_name = self.chars - self.text = None - elif stacked == self.LAYER: - assert self.icon_name - assert self.context - - if self.filter is not None and not self.icon_name in self.filter: - return - - print (self.context, self.icon_name) - for rect in self.rects: - width = rect['width'] - height = rect['height'] - id = rect['id'] - - dir = os.path.join("Adwaita", "%sx%s" % (width, height), self.context) - outfile = os.path.join(dir, self.icon_name+'.png') - if not os.path.exists(dir): - os.makedirs(dir) - # Do a time based check! - if self.force or not os.path.exists(outfile): - inkscape_render_rect(self.path, id, outfile) - sys.stdout.write('.') - else: - stat_in = os.stat(self.path) - stat_out = os.stat(outfile) - if stat_in.st_mtime > stat_out.st_mtime: - inkscape_render_rect(self.path, id, outfile) - sys.stdout.write('.') - else: - sys.stdout.write('-') - sys.stdout.flush() - sys.stdout.write('\n') - sys.stdout.flush() - - def characters(self, chars): - self.chars += chars.strip() - -if len(sys.argv) == 1: - if not os.path.exists('Adwaita'): - os.mkdir('Adwaita') - print ('Rendering from SVGs in', SRC) - for file in os.listdir(SRC): - if file[-4:] == '.svg': - file = os.path.join(SRC, file) - handler = ContentHandler(file) - xml.sax.parse(open(file), handler) -else: - file = os.path.join(SRC, sys.argv[1] + '.svg') - if len(sys.argv) > 2: - icons = sys.argv[2:] - else: - icons = None - if os.path.exists(os.path.join(file)): - handler = ContentHandler(file, True, filter=icons) - xml.sax.parse(open(file), handler) - else: - print ("Error: No such file", file) - sys.exit(1) - - -- cgit v1.2.1