script to make <26 sdk icon
All checks were successful
eden-license / license-header (pull_request) Successful in 20s

Signed-off-by: crueter <crueter@eden-emu.dev>
This commit is contained in:
crueter 2025-10-03 00:19:05 -04:00
parent 35b6911f39
commit c399e89002
3 changed files with 112 additions and 0 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 48 KiB

Before After
Before After

View file

@ -0,0 +1,86 @@
#!/usr/bin/env python2
"""
VectorDrawable2Svg
This script convert your VectorDrawable to a Svg
Author: Alessandro Lucchet
Usage: drop one or more vector drawable onto this script to convert them to svg format
"""
from xml.dom.minidom import *
import sys
# extracts all paths inside vdContainer and add them into svgContainer
def convertPaths(vdContainer,svgContainer,svgXml):
vdPaths = vdContainer.getElementsByTagName('path')
for vdPath in vdPaths:
# only iterate in the first level
if vdPath.parentNode == vdContainer:
svgPath = svgXml.createElement('path')
svgPath.attributes['d'] = vdPath.attributes['android:pathData'].value
if vdPath.hasAttribute('android:fillColor'):
svgPath.attributes['fill'] = vdPath.attributes['android:fillColor'].value
else:
svgPath.attributes['fill'] = 'none'
if vdPath.hasAttribute('android:strokeLineJoin'):
svgPath.attributes['stroke-linejoin'] = vdPath.attributes['android:strokeLineJoin'].value
if vdPath.hasAttribute('android:strokeLineCap'):
svgPath.attributes['stroke-linecap'] = vdPath.attributes['android:strokeLineCap'].value
if vdPath.hasAttribute('android:strokeMiterLimit'):
svgPath.attributes['stroke-miterlimit'] = vdPath.attributes['android:strokeMiterLimit'].value
if vdPath.hasAttribute('android:strokeWidth'):
svgPath.attributes['stroke-width'] = vdPath.attributes['android:strokeWidth'].value
if vdPath.hasAttribute('android:strokeColor'):
svgPath.attributes['stroke'] = vdPath.attributes['android:strokeColor'].value
svgContainer.appendChild(svgPath);
# define the function which converts a vector drawable to a svg
def convertVd(vdFilePath):
# create svg xml
svgXml = Document()
svgNode = svgXml.createElement('svg')
svgXml.appendChild(svgNode);
# open vector drawable
vdXml = parse(vdFilePath)
vdNode = vdXml.getElementsByTagName('vector')[0]
# setup basic svg info
svgNode.attributes['xmlns'] = 'http://www.w3.org/2000/svg'
svgNode.attributes['width'] = vdNode.attributes['android:viewportWidth'].value
svgNode.attributes['height'] = vdNode.attributes['android:viewportHeight'].value
svgNode.attributes['viewBox'] = '0 0 {} {}'.format(vdNode.attributes['android:viewportWidth'].value, vdNode.attributes['android:viewportHeight'].value)
# iterate through all groups
vdGroups = vdXml.getElementsByTagName('group')
for vdGroup in vdGroups:
# create the group
svgGroup = svgXml.createElement('g')
# setup attributes of the group
if vdGroup.hasAttribute('android:translateX'):
svgGroup.attributes['transform'] = 'translate({},{})'.format(vdGroup.attributes['android:translateX'].value,vdGroup.attributes['android:translateY'].value)
# iterate through all paths inside the group
convertPaths(vdGroup,svgGroup,svgXml)
# append the group to the svg node
svgNode.appendChild(svgGroup);
# iterate through all svg-level paths
convertPaths(vdNode,svgNode,svgXml)
# write xml to file
svgXml.writexml(open(vdFilePath + '.svg', 'w'),indent="",addindent=" ",newl='\n')
# script begin
if len(sys.argv)>1:
iterArgs = iter(sys.argv)
next(iterArgs) #skip the first entry (it's the name of the script)
for arg in iterArgs:
convertVd(arg)
else:
print("You have to pass me something")
sys.exit()

26
tools/generate-legacy-icons.sh Executable file
View file

@ -0,0 +1,26 @@
#!/bin/sh -e
# Generate SDK <26 icons for android
# requires imagemagick, inkscape
ROOTDIR=$PWD
cd src/android/app/src/main
pushd res/drawable
# convert vector to svg--needed to generate launcher png
cp ic_yuzu_icon.xml tmp
python3 $ROOTDIR/tools/VectorDrawable2Svg.py tmp
inkscape -w 768 -h 768 tmp.svg -o ic_tmp.png
magick ic_icon_bg_orig.png -resize 512x512 bg_tmp.png
magick bg_tmp.png -strip -type TrueColor -depth 8 -colorspace sRGB -color-matrix "1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0" bg_tmp_rgb.png
magick -verbose bg_tmp_rgb.png ic_tmp.png -gravity center -composite -colorspace sRGB ic_launcher.png
echo
rm *tmp*
popd
# Add legacy here when legacy gets merged