#!/bin/sh
# Hello. This script splits topbar-icons.svg into a bunch of smaller SVGs under
# C/figures. (None of these images should need to be translated, except possibly
# to make RTL variants). These are primarily used on status-icons.page, but may
# be used elsewhere. The source symbolic icons aren't really appropriate for use
# inline on pages. They assume they will be recolored by Gtk's symbolic icon
# machinery, and they are often a gray that is washed out and hard to see on
# both white and black backgrounds.
#
# We provide the icons for both regular GNOME and GNOME Classic. We select these
# using Mallard Conditionals in the page files. Most of the source icons come
# from adwaita-icon-theme, but a few ship with gnome-shell.
#
# To add an icon:
# * Open topbar-icons.svg in Inkscape or another vector editor.
# * Place the icon in rounded rectangles, both black for normal and gray for
# Classic. There should be some blank rectangles waiting for you. The gray
# rectangles for Classic are #f6f5f4 (HIG Light 2).
# * The icons might have gray, green, orange, or red bits. Otherwise, they
# are the foreground color. Color the normal parts of the icon white for
# the black background, and black for the gray background.
# * The gray parts of the icon are done with transparency. Leave that alone.
# * Color the green parts (class="success") #33d17a (HIG Green 3).
# * Color the orange parts (class="warning") #ff7800 (HIG Orange 3).
# * Color the red parts (class="error") #e01b24 (HIG Red 3).
# * EXCEPTION: Both media-record and screen-shared get colored oranage, even
# tho the source icons are uncolored. gnome-shell special-cases these two
# and recolors them differently, so we do too.
# * Group the icon with its rectangle. To do this in Inkscape, select all
# the shapes you want (either with rubberbanding or Shift+click), then
# click Object->Group (Ctrl+G).
# * Give that group an ID. The ID will be used as the output filename.
# To set an ID in Inkscape, use the Object Properties dialog, which you
# can find under the Object menu.
# * Run this script.
# * Add any new files to Makefile.am and to git. Note that topbar-icons.svg
# has some images that we don't currently use. Feel free to just delete
# those from your working tree.
ids=$(grep -o 'id="\(classic-\)\?topbar-[^"]*' topbar-icons.svg | sed -e 's/id="//')
for id in $ids; do
echo $id
## Faster, but seems to drop paths and do weird offsets:
# rsvg-convert -i ${id} -f svg topbar-icons.svg > C/figures/${id}.svg
## If you have Inkscape installed in a traditional way:
# inkscape -j -l -i ${id} -o C/figures/${id}.svg topbar-icons.svg
## If you use an Inkscape flatpak:
flatpak run org.inkscape.Inkscape -j -l -i ${id} -o C/figures/${id}.svg topbar-icons.svg
done