Improve generate_theme.py script
This commit is contained in:
parent
2e864b0017
commit
2833055390
2 changed files with 50 additions and 17 deletions
120
themes/generate_theme.py
Executable file
120
themes/generate_theme.py
Executable file
|
@ -0,0 +1,120 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
# Generates a theme from `theme.svg`
|
||||
import re
|
||||
import os
|
||||
import subprocess
|
||||
|
||||
color_re = \
|
||||
re.compile('<g\s+id="export_(\w+)"\s+style=".*?fill:#([0-9a-f]+)[\S\s]*?')
|
||||
|
||||
template = '''{{
|
||||
"name": "{name}",
|
||||
"price": {price},
|
||||
"colors": {{
|
||||
"background": "{background}",
|
||||
"buttons": [
|
||||
"{button_0}",
|
||||
"{button_1}",
|
||||
"{button_2}",
|
||||
"{button_3}"
|
||||
],
|
||||
"empty_cell": "{empty_cell}",
|
||||
"cells": [
|
||||
"{cell_0}", "{cell_1}", "{cell_2}",
|
||||
"{cell_3}", "{cell_4}", "{cell_5}", "{cell_6}",
|
||||
"{cell_7}", "{cell_8}"
|
||||
],
|
||||
"current_score": "{current_score}",
|
||||
"high_score": "{high_score}",
|
||||
"bonus": "{bonus}",
|
||||
"band": "{band}"
|
||||
}},
|
||||
"cell_texture": "{cell_tex}"
|
||||
}}
|
||||
'''
|
||||
|
||||
out_dir = '../android/assets/themes/'
|
||||
theme_list = os.path.join(out_dir, 'theme.list')
|
||||
|
||||
|
||||
def price_ok(price):
|
||||
try:
|
||||
price = int(price)
|
||||
if price < 0:
|
||||
raise ValueError('Price must be ≥ 0.')
|
||||
except:
|
||||
print('Invalid price detected. Using 0.')
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
|
||||
def main():
|
||||
# Look for all the files which are not called 'template.svg'
|
||||
files = [f for f in os.listdir()
|
||||
if f.endswith('.svg') and f != 'template.svg']
|
||||
|
||||
if not files:
|
||||
print('No .svg files were found. '
|
||||
'Please see CREATING-THEMES.txt for more information')
|
||||
return
|
||||
|
||||
# Work on all the files to generate the corresponding themes
|
||||
for filename in files:
|
||||
work(filename)
|
||||
|
||||
print('Updating theme.list…')
|
||||
themes = []
|
||||
with open(theme_list, 'r', encoding='utf-8') as f:
|
||||
themes = [line.strip() for line in f]
|
||||
|
||||
added_names = [os.path.splitext(f)[0] for f in files]
|
||||
added_count = 0
|
||||
for name in added_names:
|
||||
if name not in themes:
|
||||
themes.append(name)
|
||||
added_count += 1
|
||||
|
||||
with open(theme_list, 'w', encoding='utf-8') as f:
|
||||
f.write('\n'.join(themes))
|
||||
f.write('\n')
|
||||
|
||||
print('Added {} new theme(s), updated {}.'.format(
|
||||
added_count, len(files) - added_count))
|
||||
|
||||
|
||||
def work(filename):
|
||||
name = os.path.splitext(filename)[0]
|
||||
with open(filename, 'r', encoding='utf-8') as f:
|
||||
xml = f.read().replace('\n', '')
|
||||
|
||||
replacements = {}
|
||||
for m in color_re.finditer(xml):
|
||||
# Append 'ff' because the themes require the alpha to be set
|
||||
replacements[m.group(1)] = m.group(2)+'ff'
|
||||
|
||||
replacements['name'] = input('Enter theme name for "{}": '.format(name))
|
||||
replacements['price'] = input('Enter theme price: ')
|
||||
replacements['cell_tex'] = \
|
||||
input('Enter cell texture (default "basic.png"): ')
|
||||
|
||||
if not replacements['price'] or not price_ok(replacements['price']):
|
||||
print('Invalid price detected. Using 0.')
|
||||
replacements['price'] = 0
|
||||
|
||||
if not replacements['cell_tex']:
|
||||
print('No texture specified. Using default "basic.png" texture.')
|
||||
replacements['cell_tex'] = 'basic.png'
|
||||
|
||||
output = os.path.join(out_dir, name+'.theme')
|
||||
|
||||
print('Saving theme to {}…'.format(output))
|
||||
with open(output, 'w', encoding='utf-8') as f:
|
||||
f.write(template.format_map(replacements))
|
||||
|
||||
print('Done!')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
294
themes/template.svg
Normal file
294
themes/template.svg
Normal file
|
@ -0,0 +1,294 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="800"
|
||||
height="700"
|
||||
viewBox="0 0 283.46457 0"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="0.91 r13725"
|
||||
sodipodi:docname="theme.svg">
|
||||
<defs
|
||||
id="defs4" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.35"
|
||||
inkscape:cx="238.62298"
|
||||
inkscape:cy="60.48849"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1366"
|
||||
inkscape:window-height="744"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
units="px"
|
||||
showguides="false" />
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-552.3622)">
|
||||
<rect
|
||||
style="opacity:1;fill:#292929;fill-opacity:1;stroke:none;stroke-width:8;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="rect4212"
|
||||
width="1066.7211"
|
||||
height="1224.2557"
|
||||
x="-133.34013"
|
||||
y="163.12041" />
|
||||
<g
|
||||
id="export_empty_cell"
|
||||
style="fill:#e3e3e3;fill-opacity:1">
|
||||
<rect
|
||||
style="opacity:1;fill:#e3e3e3;fill-opacity:1;stroke:none;stroke-width:8;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="rect4260"
|
||||
width="400"
|
||||
height="700"
|
||||
x="400"
|
||||
y="552.36218" />
|
||||
</g>
|
||||
<g
|
||||
id="export_cell_0"
|
||||
style="fill:#7988bf;fill-opacity:1">
|
||||
<rect
|
||||
style="opacity:1;fill:#7988bf;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="rect4262"
|
||||
width="68.965515"
|
||||
height="72.314049"
|
||||
x="431.72415"
|
||||
y="570.0614" />
|
||||
</g>
|
||||
<g
|
||||
id="export_cell_1"
|
||||
style="fill:#98dc53;fill-opacity:1">
|
||||
<rect
|
||||
y="682.87128"
|
||||
x="434.48279"
|
||||
height="130.16528"
|
||||
width="124.13792"
|
||||
id="rect4264"
|
||||
style="opacity:1;fill:#98dc53;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||
</g>
|
||||
<g
|
||||
id="export_cell_2"
|
||||
style="fill:#4cd4ae;fill-opacity:1">
|
||||
<rect
|
||||
style="opacity:1;fill:#4cd4ae;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="rect4266"
|
||||
width="168.27585"
|
||||
height="176.44627"
|
||||
x="597.24127"
|
||||
y="587.41681" />
|
||||
</g>
|
||||
<g
|
||||
id="export_cell_7"
|
||||
style="fill:#57cb84;fill-opacity:1">
|
||||
<path
|
||||
style="opacity:1;fill:#57cb84;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="m 625.53912,1114.5697 0,116.5837 118.01372,0 0,-58.292 -59.00594,0 0,-58.2917 -59.00778,0 z"
|
||||
id="path4268"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
<g
|
||||
id="export_cell_8"
|
||||
style="fill:#5abee2;fill-opacity:1">
|
||||
<path
|
||||
style="opacity:1;fill:#5abee2;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="m 435.54908,1048.0408 0,177.9444 169.70472,0 0,-59.3142 -113.13709,0 0,-118.6302 -56.56763,0 z"
|
||||
id="path4270"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
<g
|
||||
id="export_cell_3"
|
||||
style="fill:#fec63d;fill-opacity:1">
|
||||
<rect
|
||||
style="opacity:1;fill:#fec63d;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="rect4272"
|
||||
width="104.82758"
|
||||
height="54.958675"
|
||||
x="671.724"
|
||||
y="937.41663" />
|
||||
</g>
|
||||
<g
|
||||
id="export_cell_4"
|
||||
style="fill:#ec9548;fill-opacity:1">
|
||||
<rect
|
||||
style="opacity:1;fill:#ec9548;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="rect4274"
|
||||
width="162.75861"
|
||||
height="54.958675"
|
||||
x="531.03442"
|
||||
y="1027.0861" />
|
||||
</g>
|
||||
<g
|
||||
id="export_cell_5"
|
||||
style="fill:#e66a82;fill-opacity:1">
|
||||
<rect
|
||||
style="opacity:1;fill:#e66a82;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="rect4276"
|
||||
width="228.9655"
|
||||
height="66.528923"
|
||||
x="415.17236"
|
||||
y="917.16876" />
|
||||
</g>
|
||||
<g
|
||||
id="export_cell_6"
|
||||
style="fill:#da6554;fill-opacity:1">
|
||||
<rect
|
||||
style="opacity:1;fill:#da6554;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="rect4278"
|
||||
width="281.37927"
|
||||
height="69.421486"
|
||||
x="500.6897"
|
||||
y="833.28448" />
|
||||
</g>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#f9f9f9;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="-10.304577"
|
||||
y="289.07431"
|
||||
id="text4167"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
x="-10.304577"
|
||||
y="289.07431"
|
||||
id="tspan4175">To easily create a custom theme, copy</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="-10.304577"
|
||||
y="339.07431"
|
||||
id="tspan4183">this file and rename it as "in.svg". Place</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="-10.304577"
|
||||
y="389.07431"
|
||||
id="tspan4185">it under the same folder, and make your</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="-10.304577"
|
||||
y="439.07431"
|
||||
id="tspan4187">changes on the new file. Then simply run</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="-10.304577"
|
||||
y="489.07431"
|
||||
id="tspan4189">"generate_theme.py" to create "out.theme"</tspan></text>
|
||||
<g
|
||||
id="export_background"
|
||||
style="fill:#ffffff;fill-opacity:1"
|
||||
transform="translate(3.0304577,0)">
|
||||
<rect
|
||||
y="552.36218"
|
||||
x="0"
|
||||
height="700"
|
||||
width="400"
|
||||
id="rect4147"
|
||||
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:7.78836012;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||
</g>
|
||||
<g
|
||||
id="export_button_0"
|
||||
style="fill:#00f230;fill-opacity:1">
|
||||
<rect
|
||||
style="opacity:1;fill:#00f230;fill-opacity:1;stroke:none;stroke-width:8;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="rect4149"
|
||||
width="351.42859"
|
||||
height="108.57145"
|
||||
x="26.857031"
|
||||
y="798.76837" />
|
||||
</g>
|
||||
<g
|
||||
id="export_button_1"
|
||||
style="fill:#f2cc00;fill-opacity:1">
|
||||
<rect
|
||||
y="921.62555"
|
||||
x="29.714174"
|
||||
height="108.57145"
|
||||
width="105.7143"
|
||||
id="rect4151"
|
||||
style="opacity:1;fill:#f2cc00;fill-opacity:1;stroke:none;stroke-width:8;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||
</g>
|
||||
<g
|
||||
id="export_button_2"
|
||||
style="fill:#2182ef;fill-opacity:1">
|
||||
<rect
|
||||
style="opacity:1;fill:#2182ef;fill-opacity:1;stroke:none;stroke-width:8;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="rect4153"
|
||||
width="105.7143"
|
||||
height="108.57145"
|
||||
x="146.85712"
|
||||
y="921.62555" />
|
||||
</g>
|
||||
<g
|
||||
id="export_button_3"
|
||||
style="fill:#ce4444;fill-opacity:1">
|
||||
<rect
|
||||
y="921.62555"
|
||||
x="266.85712"
|
||||
height="108.57145"
|
||||
width="105.7143"
|
||||
id="rect4155"
|
||||
style="opacity:1;fill:#ce4444;fill-opacity:1;stroke:none;stroke-width:8;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||
</g>
|
||||
<g
|
||||
id="export_current_score"
|
||||
style="fill:#ffcc00;fill-opacity:1">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4181"
|
||||
d="m 106.16769,680.7189 a 20.572971,33.748715 52.281084 0 0 -0.3613,0.23047 l -3.5703,0 a 31.071428,74.892753 0 0 0 0.207,2.32227 20.572971,33.748715 52.281084 0 0 -17.67971,31.1875 20.572971,33.748715 52.281084 0 0 27.33211,9.97851 31.071428,74.892753 0 0 0 16.5234,18.62501 19.482912,22.977165 0 0 0 -14.6016,18.60157 l 38.4278,0 a 19.482912,22.977165 0 0 0 -15.1055,-18.75 31.071428,74.892753 0 0 0 16.3164,-18.47853 33.748715,20.572971 37.718916 0 0 27.3379,-9.97656 33.748715,20.572971 37.718916 0 0 -17.6738,-31.1836 31.071428,74.892753 0 0 0 0.2011,-2.32617 l -3.5703,0 a 33.748715,20.572971 37.718916 0 0 -0.3613,-0.23047 l -0.033,0.23047 -53.3555,0 -0.033,-0.23047 z m -3.2187,8.00977 a 31.071428,74.892753 0 0 0 7.5312,32.01562 16.78108,29.001088 59.891063 0 1 -22.259706,-8.39257 16.78108,29.001088 59.891063 0 1 14.728506,-23.62305 z m 59.8652,0.004 a 29.001088,16.78108 30.108937 0 1 14.7227,23.61915 29.001088,16.78108 30.108937 0 1 -22.2637,8.39062 31.071428,74.892753 0 0 0 7.541,-32.00977 z m -29.9355,4.67774 4.1054,8.31836 9.1797,1.33398 -6.6426,6.47461 1.5684,9.14453 -8.2109,-4.3164 -8.211,4.3164 1.5684,-9.14453 -6.6445,-6.47461 9.1816,-1.33398 4.1055,-8.31836 z"
|
||||
style="opacity:1;fill:#ffcc00;fill-opacity:1;stroke:none;stroke-width:8;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||
</g>
|
||||
<g
|
||||
id="export_high_score"
|
||||
style="fill:#65d681;fill-opacity:1">
|
||||
<path
|
||||
style="opacity:1;fill:#65d681;fill-opacity:1;stroke:none;stroke-width:8;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="m 229.54476,680.7189 a 20.572971,33.748715 52.281084 0 0 -0.3613,0.23047 l -3.5703,0 a 31.071428,74.892753 0 0 0 0.207,2.32227 20.572971,33.748715 52.281084 0 0 -17.6797,31.1875 20.572971,33.748715 52.281084 0 0 27.3321,9.97851 31.071428,74.892753 0 0 0 16.5234,18.62501 19.482912,22.977165 0 0 0 -14.6015,18.60157 l 38.4277,0 a 19.482912,22.977165 0 0 0 -15.1055,-18.75 31.071428,74.892753 0 0 0 16.3164,-18.47853 33.748715,20.572971 37.718916 0 0 27.3379,-9.97656 33.748715,20.572971 37.718916 0 0 -17.6738,-31.1836 31.071428,74.892753 0 0 0 0.2012,-2.32617 l -3.5704,0 a 33.748715,20.572971 37.718916 0 0 -0.3613,-0.23047 l -0.033,0.23047 -53.3555,0 -0.033,-0.23047 z m -3.2187,8.00977 a 31.071428,74.892753 0 0 0 7.5312,32.01562 16.78108,29.001088 59.891063 0 1 -22.2597,-8.39257 16.78108,29.001088 59.891063 0 1 14.7285,-23.62305 z m 59.8652,0.004 a 29.001088,16.78108 30.108937 0 1 14.7227,23.61915 29.001088,16.78108 30.108937 0 1 -22.2637,8.39062 31.071428,74.892753 0 0 0 7.541,-32.00977 z m -29.9355,4.67774 4.1054,8.31836 9.1797,1.33398 -6.6425,6.47461 1.5683,9.14453 -8.2109,-4.3164 -8.211,4.3164 1.5684,-9.14453 -6.6445,-6.47461 9.1816,-1.33398 4.1055,-8.31836 z"
|
||||
id="path4233"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
<g
|
||||
id="export_band"
|
||||
style="fill:#87ceeb;fill-opacity:1">
|
||||
<rect
|
||||
ry="4.1303067"
|
||||
y="572.36218"
|
||||
x="0"
|
||||
height="80"
|
||||
width="400"
|
||||
id="rect4174"
|
||||
style="opacity:1;fill:#87ceeb;fill-opacity:1;stroke:none;stroke-width:25;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||
</g>
|
||||
<g
|
||||
id="export_bonus"
|
||||
style="fill:#4d4d4d;fill-opacity:1">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="rect4180"
|
||||
d="m 198.50901,1079.2067 c -6.43568,0 -11.61524,5.1815 -11.61524,11.6172 l 0,11.6172 -11.61718,0 c -6.43569,0 -11.61719,5.1815 -11.61719,11.6172 l 0,10.1015 c 0,6.4357 5.1815,11.6172 11.61719,11.6172 l 11.61718,0 0,11.6152 c 0,6.4357 5.17956,11.6172 11.61524,11.6172 l 10.10156,0 c 6.43568,0 11.61719,-5.1815 11.61719,-11.6172 l 0,-11.6152 11.61719,0 c 6.43568,0 11.61718,-5.1815 11.61718,-11.6172 l 0,-10.1015 c 0,-6.4357 -5.1815,-11.6172 -11.61718,-11.6172 l -11.61719,0 0,-11.6172 c 0,-6.4357 -5.18151,-11.6172 -11.61719,-11.6172 l -10.10156,0 z"
|
||||
style="opacity:1;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:7.55499983;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 14 KiB |
Loading…
Add table
Add a link
Reference in a new issue