Skip to content
Snippets Groups Projects
Commit 1b6c858b authored by henry's avatar henry Committed by Pier Angelo Vendrame
Browse files

Add purple tor version of the loading APNG.

parent 5f8cb22e
No related branches found
No related tags found
1 merge request!1043Bug 42616: Rebased alpha onto Firefox 128.0b1
......@@ -120,6 +120,10 @@
skin/classic/global/icons/security-warning.svg (../../shared/icons/security-warning.svg)
skin/classic/global/icons/settings.svg (../../shared/icons/settings.svg)
skin/classic/global/icons/sort-arrow.svg (../../shared/icons/sort-arrow.svg)
skin/classic/global/icons/tor-light-loading.png (../../shared/icons/tor-light-loading.png)
skin/classic/global/icons/tor-light-loading@2x.png (../../shared/icons/tor-light-loading@2x.png)
skin/classic/global/icons/tor-dark-loading.png (../../shared/icons/tor-dark-loading.png)
skin/classic/global/icons/tor-dark-loading@2x.png (../../shared/icons/tor-dark-loading@2x.png)
skin/classic/global/icons/trending.svg (../../shared/icons/trending.svg)
skin/classic/global/icons/update-icon.svg (../../shared/icons/update-icon.svg)
skin/classic/global/icons/arrow-down-12.svg (../../shared/icons/arrow-down-12.svg)
......
toolkit/themes/shared/icons/tor-dark-loading.png

12.9 KiB

toolkit/themes/shared/icons/tor-dark-loading@2x.png

37.9 KiB

toolkit/themes/shared/icons/tor-light-loading.png

12.4 KiB

toolkit/themes/shared/icons/tor-light-loading@2x.png

36.2 KiB

"""
Script to convert the loading.png and loading@2x.png blue spinners to purple
spinners for Tor Browser, for both the light and dark themes.
"""
import argparse
import colorsys
import os
from PIL import ExifTags, Image, ImageFilter
parser = argparse.ArgumentParser(description="Convert the loading APNG to be purple.")
parser.add_argument("loading_png", help="The loading png to convert")
parser.add_argument(
"--light", required=True, help="The name of the light-theme purple output image"
)
parser.add_argument(
"--dark", required=True, help="The name of the dark-theme purple output image"
)
parsed_args = parser.parse_args()
orig_im = Image.open(parsed_args.loading_png)
def filter_to_light_theme(r, g, b):
h, s, v = colorsys.rgb_to_hsv(r, g, b)
# Convert from HSV 0.58, 1.0, 255 (start of the circle)
# to --purple-60 #8000d7 HSV 0.766, 1.0, 215
h = 0.766
v = v * 215 / 255
return colorsys.hsv_to_rgb(h, s, v)
def filter_to_dark_theme(r, g, b):
h, s, v = colorsys.rgb_to_hsv(r, g, b)
# Convert from HSV 0.58, 1.0, 255 (start of the circle)
# to --purple-30 #c069ff HSV 0.766, 0.59, 255
h = 0.766
s = s * 0.59 / 1.0
return colorsys.hsv_to_rgb(h, s, v)
filt_light = ImageFilter.Color3DLUT.generate(65, filter_to_light_theme)
filt_dark = ImageFilter.Color3DLUT.generate(65, filter_to_dark_theme)
transformed_light = []
transformed_dark = []
duration = orig_im.info["duration"]
# Transform each APNG frame individually.
for frame in range(orig_im.n_frames):
orig_im.seek(frame)
transformed_light.append(orig_im.filter(filt_light))
transformed_dark.append(orig_im.filter(filt_dark))
exif = Image.Exif()
exif[ExifTags.Base.ImageDescription] = f"Generated by {os.path.basename(__file__)}"
transformed_light[0].save(
parsed_args.light,
save_all=True,
append_images=transformed_light[1:],
duration=duration,
exif=exif,
)
transformed_dark[0].save(
parsed_args.dark,
save_all=True,
append_images=transformed_dark[1:],
duration=duration,
exif=exif,
)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment