├── .github └── workflows │ ├── build.yaml │ ├── meta_data.yaml │ └── shellcheck.yaml ├── .gitignore ├── README.md ├── communityicons ├── license.txt └── none.svg ├── console.svg ├── countryflags ├── default.svg └── license.txt ├── editor └── speed_arrow.svg ├── emoticons.svg ├── game.svg ├── gui_logo.svg ├── license.txt ├── mapres ├── basic_freeze.svg ├── bg_cloud1.svg ├── bg_cloud2.svg ├── bg_cloud3.svg ├── ddmax_freeze.svg ├── ddnet_walls.svg ├── desert_background.svg ├── desert_main.svg ├── desert_mountains.svg ├── desert_mountains2.svg ├── desert_mountains_new_background.svg ├── desert_mountains_new_foreground.svg ├── generic_deathtiles.svg ├── generic_lamps.svg ├── generic_unhookable_0.7.svg ├── grass_doodads.svg ├── grass_doodads_0.7.svg ├── grass_main.svg ├── jungle_deathtiles.svg ├── jungle_doodads.svg ├── license.txt ├── moon.svg ├── round_tiles.svg ├── sun.svg ├── winter_mountains.svg ├── winter_mountains2.svg └── winter_mountains3.svg ├── scripts ├── build.sh ├── build_single.sh └── check_svg_meta.sh └── skins ├── PaladiN.svg ├── beast.svg ├── blacktee.svg ├── bluekitty.svg ├── bluestripe.svg ├── brownbear.svg ├── cammo.svg ├── cammostripes.svg ├── coala.svg ├── default.svg ├── dino.svg ├── ghost.svg ├── giraffe.svg ├── greensward.svg ├── greyfox.svg ├── jeet.svg ├── kintaro_2.svg ├── license.txt ├── limekitty.svg ├── mermydon-coala.svg ├── mermydon.svg ├── nanami.svg ├── oldschool.svg ├── penguin.svg ├── pinky.svg ├── random.svg ├── redbopp.svg ├── redstripe.svg ├── saddo.svg ├── toptri.svg ├── twinbop.svg ├── twintri.svg ├── voodoo_tee.svg ├── warpaint.svg ├── whis.svg ├── x_ninja.svg └── x_spec.svg /.github/workflows/build.yaml: -------------------------------------------------------------------------------- 1 | name: Build 2 | 3 | on: [push, pull_request] 4 | 5 | jobs: 6 | ubuntu: 7 | name: Build SVGs to PNGs 8 | runs-on: ubuntu-latest 9 | strategy: 10 | fail-fast: false 11 | 12 | steps: 13 | - uses: actions/checkout@v2 14 | with: 15 | submodules: true 16 | 17 | - name: Prepare 18 | run: | 19 | sudo apt-get update -y 20 | sudo apt-get install inkscape zip -y 21 | 22 | - name: Build UHD 23 | run: | 24 | mkdir -p build/UHD 25 | cd build/UHD 26 | ../../scripts/build.sh 3840 2160 ../.. 27 | 28 | - name: Package 29 | run: | 30 | cd build 31 | mkdir artifacts 32 | mv UHD artifacts 33 | 34 | - name: Upload Artifacts 35 | uses: actions/upload-artifact@v4 36 | with: 37 | name: ddnet-uhd 38 | path: build/artifacts 39 | -------------------------------------------------------------------------------- /.github/workflows/meta_data.yaml: -------------------------------------------------------------------------------- 1 | name: Check metadata 2 | 3 | on: [push, pull_request] 4 | 5 | jobs: 6 | ubuntu: 7 | name: Check meta data 8 | runs-on: ubuntu-latest 9 | steps: 10 | - name: Checkout 11 | uses: actions/checkout@v2 12 | - name: Setup 13 | run: | 14 | sudo wget https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 -O /usr/bin/yq 15 | sudo chmod +x /usr/bin/yq 16 | - name: Check svg 17 | run: ./scripts/check_svg_meta.sh 18 | -------------------------------------------------------------------------------- /.github/workflows/shellcheck.yaml: -------------------------------------------------------------------------------- 1 | name: Shellcheck 2 | 3 | on: [push, pull_request] 4 | 5 | jobs: 6 | ubuntu: 7 | name: Lint all shell scripts 8 | runs-on: ubuntu-latest 9 | strategy: 10 | fail-fast: false 11 | 12 | steps: 13 | - uses: actions/checkout@v2 14 | with: 15 | submodules: true 16 | 17 | - name: Prepare 18 | run: | 19 | sudo apt-get update -y 20 | sudo apt-get install shellcheck -y 21 | 22 | - name: Shellcheck 23 | run: find . -type f -name '*.sh' -print0 | xargs -0 shellcheck 24 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | build/ 2 | 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | DDNet data directory as SVG collection 2 | ====================================== 3 | 4 | DDNet data SVG repository is a collection of SVGs, that can replace and/or extend 5 | the official data directory of [ddnet](https://github.com/ddnet/ddnet/tree/master/data) with user specified resolution generated 6 | textures, meant for higher resolution support. 7 | 8 | Contributing 9 | ------------ 10 | 11 | When adding or changing a SVG file, make sure the file path fits the original PNG file path 12 | in the data directory. 13 | The SVG should contain a width and height(in inkscape the page width/height) in pixels matching the current size of the original PNG. 14 | This is required to properly scale up the generated images. 15 | Also the SVG should not contain the export path(e.g. in inkscape the export path for exporting PNGs). 16 | 17 | 18 | To avoid multiple contributors working on the same graphics please create an issue with the graphic name in the title 19 | as soon as you start working on something. 20 | 21 | How to build? 22 | ------------- 23 | 24 | Install inkscape and execute: 25 | 26 | ``` 27 | mkdir build 28 | cd build 29 | ../scripts/build.sh .. 30 | ``` 31 | 32 | where `target_resolution_width` and `target_resolution_height` are the resolution you are targeting. 33 | Note that the minimum for these values is full HD, so 1920 and 1080 34 | -------------------------------------------------------------------------------- /communityicons/license.txt: -------------------------------------------------------------------------------- 1 | none 2 | Recreation by +KZ 3 | -------------------------------------------------------------------------------- /communityicons/none.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 86 | -------------------------------------------------------------------------------- /console.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 78 | -------------------------------------------------------------------------------- /countryflags/default.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 88 | -------------------------------------------------------------------------------- /countryflags/license.txt: -------------------------------------------------------------------------------- 1 | default 2 | Recreation by +KZ 3 | -------------------------------------------------------------------------------- /editor/speed_arrow.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 50 | -------------------------------------------------------------------------------- /license.txt: -------------------------------------------------------------------------------- 1 | All content in this repository, except the assets & skin files(which have their own licenses), are licensed under the original license CC-BY-SA 3.0, if not specified otherwise, thus see https://github.com/ddnet/ddnet/blob/master/license.txt or https://github.com/teeworlds/teeworlds/blob/master/license.txt for the original license. 2 | 3 | Information about the authors of the recreated content can be found in the individual license files in each directory. 4 | 5 | --- 6 | 7 | emoticons: 8 | Recreation by Voxel 9 | 10 | console: 11 | Recreation by +KZ 12 | 13 | game: 14 | Recreation by mind, Voxel, Cellegen & +KZ 15 | -------------------------------------------------------------------------------- /mapres/bg_cloud1.svg: -------------------------------------------------------------------------------- 1 | 2 | 62 | -------------------------------------------------------------------------------- /mapres/bg_cloud2.svg: -------------------------------------------------------------------------------- 1 | 2 | 63 | -------------------------------------------------------------------------------- /mapres/bg_cloud3.svg: -------------------------------------------------------------------------------- 1 | 2 | 63 | -------------------------------------------------------------------------------- /mapres/ddmax_freeze.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 16 | 18 | 37 | 46 | 47 | 52 | 56 | 60 | 64 | 69 | 74 | 78 | 82 | 86 | 90 | 91 | 92 | -------------------------------------------------------------------------------- /mapres/ddnet_walls.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 16 | 18 | 37 | 46 | 47 | 52 | 56 | 60 | 64 | 68 | 72 | 76 | 80 | 84 | 88 | 92 | 96 | 100 | 104 | 108 | 112 | 116 | 120 | 124 | 128 | 132 | 136 | 140 | 144 | 148 | 152 | 156 | 160 | 164 | 168 | 172 | 176 | 180 | 184 | 188 | 192 | 196 | 200 | 204 | 208 | 212 | 213 | 214 | -------------------------------------------------------------------------------- /mapres/desert_background.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 16 | 18 | 37 | 42 | 47 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /mapres/desert_mountains.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 16 | 18 | 37 | 42 | 47 | 52 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /mapres/desert_mountains2.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 16 | 18 | 37 | 42 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /mapres/desert_mountains_new_background.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 16 | 18 | 37 | 42 | 47 | 51 | 55 | 59 | 63 | 67 | 68 | 69 | -------------------------------------------------------------------------------- /mapres/desert_mountains_new_foreground.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 16 | 18 | 37 | 42 | 47 | 52 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /mapres/license.txt: -------------------------------------------------------------------------------- 1 | bg_cloud1, bg_cloud2, bg_cloud3, jungle_doodads: 2 | Recreation by ChillerDragon 3 | 4 | basic_freeze, ddmax_freeze, ddnet_walls, desert_background, desert_mountains, 5 | desert_mountains2, desert_mountains_new_background, desert_mountains_new_foreground, 6 | moon, round_tiles, sun, winter_mountains, winter_mountains2, winter_mountains3: 7 | Recreation by Voxel 8 | 9 | generic_unhookable_0.7, 10 | Recreation by ChillerDragon and Voxel 11 | 12 | jungle_deathtiles, desert_main 13 | Recreation by New Hero 14 | 15 | generic_deathtiles, generic_lamps 16 | Recreation by mind 17 | 18 | grass_main, grass_doodads_0.7: 19 | Made by Zatline (Edited by +KZ) 20 | 21 | grass_doodads: 22 | Made by Zatline, some tiles remade by +KZ 23 | -------------------------------------------------------------------------------- /mapres/moon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 16 | 18 | 26 | 30 | 31 | 32 | 50 | 55 | 59 | 60 | 65 | 69 | 73 | 77 | 78 | 79 | -------------------------------------------------------------------------------- /mapres/round_tiles.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 16 | 18 | 35 | 52 | 53 | 72 | 81 | 82 | 87 | 91 | 95 | 99 | 103 | 107 | 111 | 115 | 119 | 123 | 127 | 131 | 135 | 139 | 140 | 141 | -------------------------------------------------------------------------------- /mapres/sun.svg: -------------------------------------------------------------------------------- 1 | 2 | 14 | 16 | 34 | 40 | 46 | 52 | 59 | 66 | 67 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /mapres/winter_mountains3.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 16 | 18 | 37 | 42 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /scripts/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash --posix 2 | 3 | error_code=0 4 | 5 | if ! command -v inkscape &> /dev/null 6 | then 7 | echo "inkscape could not be found, please install it to continue" 8 | exit 1 9 | fi 10 | 11 | if [[ -z ${1+x} || $1 -lt 1920 ]]; then 12 | error_code=$((1 | error_code)) 13 | fi 14 | 15 | if [[ -z ${2+x} || $2 -lt 1080 ]]; then 16 | error_code=$((2 | error_code)) 17 | fi 18 | 19 | if [[ -z ${3+x} ]]; then 20 | error_code=$((4 | error_code)) 21 | fi 22 | 23 | if [[ $error_code != 0 ]]; then 24 | if [[ $((error_code&1)) -ne 0 ]]; then 25 | echo "target resolution width not found or less than 1920" 26 | fi 27 | if [[ $((error_code&2)) -ne 0 ]]; then 28 | echo "target resolution height not found or less than 1080" 29 | fi 30 | echo "usage: build.sh " 31 | exit 1 32 | fi 33 | 34 | res_width=$1 35 | res_height=$2 36 | source_dir=$3 37 | 38 | bash_script_dir=$(dirname "$0") 39 | cur_dir=$PWD 40 | 41 | num_cores() { 42 | if [ -x "$(command -v nproc)" ] 43 | then 44 | nproc 45 | elif [ -x "$(command -v sysctl)" ] 46 | then 47 | sysctl -n hw.logicalcpu 48 | else 49 | echo 1 50 | fi 51 | } 52 | 53 | cd "$source_dir" || { echo "Error: invalid directory '$source_dir'"; exit 1; } 54 | 55 | while IFS= read -r -d '' svg; do 56 | mkdir -p "$cur_dir/$(dirname "$svg")" 57 | done < <(find . -name '*.svg' -type f -print0) 58 | 59 | find . -name "*.svg" -type f -print0 | \ 60 | sed -z "p;s#\(.*\)\.svg#$cur_dir/\1\.png#" | \ 61 | xargs -0 -n 2 -P "$(num_cores)" "$cur_dir/$bash_script_dir/build_single.sh" "$res_width" "$res_height" 62 | echo "done" 63 | -------------------------------------------------------------------------------- /scripts/build_single.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash --posix 2 | 3 | error_code=0 4 | 5 | if ! command -v inkscape &> /dev/null 6 | then 7 | echo "inkscape could not be found, please install it to continue" 8 | exit 1 9 | fi 10 | 11 | if [[ -z ${1+x} || $1 -lt 1920 ]]; then 12 | error_code=$((1 | error_code)) 13 | fi 14 | 15 | if [[ -z ${2+x} || $2 -lt 1080 ]]; then 16 | error_code=$((2 | error_code)) 17 | fi 18 | 19 | if [[ -z ${3+x} ]]; then 20 | error_code=$((3 | error_code)) 21 | fi 22 | 23 | if [[ -z ${4+x} ]]; then 24 | error_code=$((4 | error_code)) 25 | fi 26 | 27 | if [[ $error_code != 0 ]]; then 28 | if [[ $((error_code&1)) -ne 0 ]]; then 29 | echo "target resolution width not found or less than 1920" 30 | fi 31 | if [[ $((error_code&2)) -ne 0 ]]; then 32 | echo "target resolution height not found or less than 1080" 33 | fi 34 | echo "usage: build_single.sh " 35 | exit 1 36 | fi 37 | 38 | res_width=$1 39 | res_height=$2 40 | source_file=$3 41 | target_file=$4 42 | 43 | source_w_text=$(grep -Eiwzo "]*>" "$source_file" | tr '\0' '\n' | grep -Eo "width=\"([0-9.]|px)*\"" | grep -Eo "[0-9.]*") 44 | source_h_text=$(grep -Eiwzo "]*>" "$source_file" | tr '\0' '\n' | grep -Eo "height=\"([0-9.]|px)*\"" | grep -Eo "[0-9.]*") 45 | source_w=$(LC_ALL=C printf "%.0f\n" "$source_w_text") 46 | source_h=$(LC_ALL=C printf "%.0f\n" "$source_h_text") 47 | 48 | # expected size if the game runs at full HD 49 | exp_w=$source_w 50 | exp_h=$source_h 51 | 52 | target_ratio=$(( (((res_width + 1919) / 1920) > ((res_height + 1079) / 1080)) ? ((res_width + 1919) / 1920) : ((res_height + 1079) / 1080) )) 53 | target_w=$((exp_w * target_ratio)) 54 | target_h=$((exp_h * target_ratio)) 55 | 56 | echo "exporting '${source_file}' to '${target_file}' at ${target_w}x${target_h}" 57 | 58 | ink_version=$(inkscape --version | grep -Eo "[0-9.]*" | head -1 | grep -Eo "[0-9]*" | head -1) 59 | ink_export_flag=-o 60 | if [[ $ink_version -lt 1 ]]; then 61 | ink_export_flag=-e 62 | fi 63 | 64 | inkscape "$source_file" -C -w "$target_w" -h "$target_h" "$ink_export_flag" "$target_file" > /dev/null 2>&1 65 | -------------------------------------------------------------------------------- /scripts/check_svg_meta.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash --posix 2 | 3 | num_errors=0 4 | num_warnings=0 5 | arg_fix=0 6 | 7 | error() { 8 | printf '[-] ERROR: %s\n' "$1" 1>&2 9 | num_errors="$((num_errors+1))" 10 | } 11 | 12 | warning() { 13 | printf '[-] WARNING: %s\n' "$1" 1>&2 14 | num_warnings="$((num_warnings+1))" 15 | } 16 | 17 | for arg in "$@" 18 | do 19 | if [ "$arg" == "--help" ] || [ "$arg" == "-h" ] || [ "$arg" == "help" ] 20 | then 21 | echo "usage: $(tput bold)$(basename "$0") [OPTION]$(tput sgr0)" 22 | echo "options:" 23 | echo " --help|-h show this help" 24 | echo " --fix|-f automatically fix files" 25 | exit 0 26 | elif [ "$arg" == "--fix" ] || [ "$arg" == "-f" ] 27 | then 28 | arg_fix=1 29 | else 30 | echo "unkown option $arg try --help" 31 | exit 1 32 | fi 33 | done 34 | 35 | # prefix your keys with dot 36 | # this is a wrapper around jq 37 | xml_get_key() { 38 | local key="$1" 39 | local file="$2" 40 | if yq --version | grep -qF 'https://github.com/mikefarah/yq' 41 | then 42 | yq -r -p xml -o json "$key" "$file" 43 | else 44 | local potential_keys 45 | [[ "$key" =~ ^\.svg\[[\"\']\+@(.*)[\"\']\]$ ]] && key="${BASH_REMATCH[1]}" 46 | potential_keys="$(grep -F "$key=" "$file")" 47 | local num_matches 48 | num_matches="$(printf '%s' "$potential_keys" | wc -l)" 49 | if [ "$num_matches" -lt 2 ] && [ "$potential_keys" != "" ] 50 | then 51 | printf '%s' "$potential_keys" | cut -d'"' -f2 52 | return 53 | fi 54 | 55 | local grep_safe_key 56 | grep_safe_key="$(printf '%s' "$key" | grep -o '[a-ZA-Z0-9]')" 57 | potential_keys="$(printf '%s' "$potential_keys" | grep "^[[:space:]]*$grep_safe_key")" 58 | num_matches="$(printf '%s' "$potential_keys" | wc -l)" 59 | if [ "$num_matches" = 0 ] 60 | then 61 | printf null 62 | return 63 | fi 64 | printf '%s' "$potential_keys" | head -n1 | cut -d'"' -f2 65 | fi 66 | } 67 | 68 | check_meta_filename_match() { 69 | local file="$1" 70 | local expected_filename 71 | expected_filename="$(basename "$file")" 72 | local actual_filename 73 | if ! actual_filename="$(xml_get_key '.svg["+@sodipodi:docname"]' "$file")" 74 | then 75 | error "failed to get meta filename of $file" 76 | exit 1 77 | fi 78 | [ "$actual_filename" = null ] && return 79 | 80 | if [ "$actual_filename" != "$expected_filename" ] 81 | then 82 | warning "svg docname does not match filename in $file" 83 | printf '\n expected: "%s"' "$expected_filename" 1>&2 84 | printf '\n got: "%s"\n\n' "$actual_filename" 1>&2 85 | fi 86 | } 87 | 88 | check_absolute_path() { 89 | local file="$1" 90 | if [ "$arg_fix" == "1" ] 91 | then 92 | sed -i -r '/export-filename="([A-Z]:|\/)/d' "$file" 93 | return 94 | fi 95 | while IFS= read -r line 96 | do 97 | error "absolute export path found in $file:$(echo "$line" | cut -d':' -f1)" 98 | done < <(grep -nE 'export-filename="([A-Z]:\\|/)' "$file") 99 | } 100 | 101 | check_width_height() { 102 | local file="$1" 103 | width_found=$(grep -Eiwzo "]*>" "$file" | tr '\0' '\n' | grep -Eo "width=\"([0-9.]|px)*\"") 104 | height_found=$(grep -Eiwzo "]*>" "$file" | tr '\0' '\n' | grep -Eo "height=\"([0-9.]|px)*\"") 105 | 106 | if [[ "$width_found" == "" || "$height_found" == "" ]] 107 | then 108 | error "no width or height parameter found in $file" 109 | fi 110 | if grep -qF 'xlink:href="data:image/png;base64,' "$file" 111 | then 112 | error "embedded image found $file" 113 | fi 114 | } 115 | 116 | while IFS= read -r file 117 | do 118 | check_absolute_path "$file" 119 | check_meta_filename_match "$file" 120 | check_width_height "$file" 121 | done < <(find . -type f -name "*.svg") 122 | 123 | if [ "$num_errors" -ne "0" ] 124 | then 125 | echo "[-] failed ($num_errors errors)" 126 | exit 1 127 | fi 128 | if [ "$num_warnings" -ne "0" ] 129 | then 130 | echo "[!] finished ($num_warnings warnings)" 131 | exit 0 132 | fi 133 | 134 | echo "[+] done" 135 | 136 | -------------------------------------------------------------------------------- /skins/blacktee.svg: -------------------------------------------------------------------------------- 1 | 2 | image/svg+xmlRemade by +KZ 189 | -------------------------------------------------------------------------------- /skins/bluestripe.svg: -------------------------------------------------------------------------------- 1 | 2 | 19 | 21 | 62 | 74 | 75 | 77 | 78 | 80 | image/svg+xml 81 | 83 | 84 | 85 | 86 | 87 | 93 | 97 | 104 | 111 | 117 | 122 | 129 | 134 | 139 | 146 | 153 | 159 | 166 | 179 | 185 | 191 | 195 | 201 | 207 | 213 | 219 | 223 | 229 | 230 | 231 | 232 | -------------------------------------------------------------------------------- /skins/default.svg: -------------------------------------------------------------------------------- 1 | 2 | 19 | 21 | 62 | 72 | 73 | 75 | 76 | 78 | image/svg+xml 79 | 81 | 82 | 83 | 84 | 85 | 90 | 97 | 104 | 111 | 117 | 122 | 135 | 142 | 147 | 154 | 161 | 167 | 174 | 180 | 186 | 190 | 196 | 202 | 208 | 214 | 218 | 224 | 225 | 226 | 227 | -------------------------------------------------------------------------------- /skins/license.txt: -------------------------------------------------------------------------------- 1 | SVGs in this directory inherit the license of the original creator, if not specified otherwise, thus see https://github.com/ddnet/ddnet/blob/master/data/skins/license.txt for the original license 2 | 3 | dino, ghost, giraffe, greensward, greyfox, jeet, kintaro_2, mermydon, mermydon-coala, 4 | nanami, random, voodoo_tee, whis: 5 | Copyright Whis 6 | Recreation by mind 7 | CC-BY license 8 | 9 | bluekitty, bluestripe, brownbear, cammo, cammostripes, 10 | coala, default, limekitty, pinky, redbopp, redstripe, 11 | saddo, toptri, twinbop, twintri, warpaint, x_ninja: 12 | Recreation by Ravie 13 | 14 | beast, blacktee, oldschool, PaladiN, penguin: 15 | Recreation by +KZ 16 | 17 | x_spec: 18 | By Ravie 19 | 20 | all other skin files are licensed under CC-BY-SA 3.0 21 | -------------------------------------------------------------------------------- /skins/redstripe.svg: -------------------------------------------------------------------------------- 1 | 2 | 19 | 21 | 62 | 74 | 75 | 77 | 78 | 80 | image/svg+xml 81 | 83 | 84 | 85 | 86 | 87 | 93 | 96 | 103 | 110 | 116 | 121 | 128 | 133 | 138 | 145 | 152 | 158 | 165 | 178 | 184 | 190 | 194 | 200 | 206 | 212 | 218 | 222 | 228 | 229 | 230 | 231 | -------------------------------------------------------------------------------- /skins/saddo.svg: -------------------------------------------------------------------------------- 1 | 2 | 19 | 21 | 62 | 74 | 75 | 77 | 78 | 80 | image/svg+xml 81 | 83 | 84 | 85 | 86 | 87 | 93 | 97 | 104 | 111 | 116 | 122 | 127 | 134 | 141 | 147 | 154 | 159 | 166 | 179 | 185 | 191 | 195 | 201 | 207 | 213 | 219 | 223 | 229 | 230 | 231 | 232 | -------------------------------------------------------------------------------- /skins/toptri.svg: -------------------------------------------------------------------------------- 1 | 2 | 19 | 21 | 62 | 74 | 75 | 77 | 78 | 80 | image/svg+xml 81 | 83 | 84 | 85 | 86 | 87 | 93 | 97 | 104 | 111 | 117 | 122 | 129 | 134 | 141 | 147 | 154 | 159 | 166 | 179 | 185 | 191 | 195 | 201 | 207 | 213 | 219 | 223 | 229 | 230 | 231 | 232 | -------------------------------------------------------------------------------- /skins/twintri.svg: -------------------------------------------------------------------------------- 1 | 2 | 19 | 21 | 62 | 74 | 75 | 77 | 78 | 80 | image/svg+xml 81 | 83 | 84 | 85 | 86 | 87 | 93 | 97 | 104 | 111 | 117 | 122 | 129 | 136 | 142 | 149 | 154 | 159 | 164 | 171 | 184 | 190 | 196 | 200 | 206 | 212 | 218 | 224 | 228 | 234 | 235 | 236 | 237 | -------------------------------------------------------------------------------- /skins/x_spec.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | --------------------------------------------------------------------------------