Skip to content
Snippets Groups Projects
Commit e992fb9d authored by henry's avatar henry Committed by richard
Browse files

Add purple tor version of the loading APNG.

parent 3cabcf78
Branches
No related tags found
1 merge request!988Refactor network status areas, including a "testing" state
......@@ -86,6 +86,10 @@
skin/classic/global/icons/link.svg (../../shared/icons/link.svg)
skin/classic/global/icons/loading.png (../../shared/icons/loading.png)
skin/classic/global/icons/loading@2x.png (../../shared/icons/loading@2x.png)
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/more.svg (../../shared/icons/more.svg)
skin/classic/global/icons/open-in-new.svg (../../shared/icons/open-in-new.svg)
skin/classic/global/icons/page-portrait.svg (../../shared/icons/page-portrait.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