Skip to content
Snippets Groups Projects
Verified Commit 69d13c47 authored by henry's avatar henry Committed by Pier Angelo Vendrame
Browse files

Add purple tor version of the loading APNG.

parent 06c6be38
Branches
No related tags found
1 merge request!1453TB 43587: Rebased legacy onto 115.22.0esr
......@@ -110,6 +110,10 @@
skin/classic/global/icons/settings.svg (../../shared/icons/settings.svg)
skin/classic/global/icons/shortcut.svg (../../shared/icons/shortcut.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/trackers.svg (../../shared/icons/trackers.svg)
skin/classic/global/icons/trending.svg (../../shared/icons/trending.svg)
skin/classic/global/icons/update-icon.svg (../../shared/icons/update-icon.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 register or to comment