diff --git a/src/android/app/src/main/res/drawable/ic_launcher.png b/src/android/app/src/main/res/drawable/ic_launcher.png index 7ea5c71380..6b586fc757 100644 Binary files a/src/android/app/src/main/res/drawable/ic_launcher.png and b/src/android/app/src/main/res/drawable/ic_launcher.png differ diff --git a/tools/VectorDrawable2Svg.py b/tools/VectorDrawable2Svg.py new file mode 100644 index 0000000000..20f168e1aa --- /dev/null +++ b/tools/VectorDrawable2Svg.py @@ -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() diff --git a/tools/generate-legacy-icons.sh b/tools/generate-legacy-icons.sh new file mode 100755 index 0000000000..9bf14e8093 --- /dev/null +++ b/tools/generate-legacy-icons.sh @@ -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