Skip to content
Snippets Groups Projects
Commit 5b2142c5 authored by henry's avatar henry Committed by morgan
Browse files

Add purple tor version of the loading APNG.

parent f3440bb5
Branches
Tags
2 merge requests!1202Bug_43099: 2024 YEC Strings,!1136Bug 43085: Rebased alpha onto 128.2.0esr
......@@ -121,6 +121,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