frogarized: Improve typing
This commit is contained in:
parent
ea9a75d495
commit
d157e374e6
1 changed files with 28 additions and 20 deletions
|
@ -8,6 +8,7 @@ import json
|
||||||
|
|
||||||
import colorspacious
|
import colorspacious
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
import numpy.typing as npt
|
||||||
|
|
||||||
# Original values for the Solarized color scheme,
|
# Original values for the Solarized color scheme,
|
||||||
# created by Ethan Schoonover (https://ethanschoonover.com/solarized/)
|
# created by Ethan Schoonover (https://ethanschoonover.com/solarized/)
|
||||||
|
@ -59,43 +60,50 @@ SOLARIZED_RGB = np.array(
|
||||||
parser = argparse.ArgumentParser(
|
parser = argparse.ArgumentParser(
|
||||||
description="Generate a base16-theme based derived from Solarized"
|
description="Generate a base16-theme based derived from Solarized"
|
||||||
)
|
)
|
||||||
parser.add_argument("--source", choices=["lab", "rgb"], default="lab")
|
_ = parser.add_argument("--source", choices=["lab", "rgb"], default="lab")
|
||||||
parser.add_argument("--lightness_factor", type=float, default=1.0)
|
_ = parser.add_argument("--lightness_factor", type=float, default=1.0)
|
||||||
parser.add_argument("--chroma-factor", type=float, default=1.0)
|
_ = parser.add_argument("--chroma-factor", type=float, default=1.0)
|
||||||
parser.add_argument("--hue_shift", type=float, default=-75.0)
|
_ = parser.add_argument("--hue_shift", type=float, default=-75.0)
|
||||||
parser.add_argument("--polarity", choices=["dark", "light"], default="dark")
|
_ = parser.add_argument(
|
||||||
parser.add_argument(
|
"--polarity", choices=["dark", "light"], default="dark"
|
||||||
|
)
|
||||||
|
_ = parser.add_argument(
|
||||||
"--output", choices=["json", "truecolor"], default="truecolor"
|
"--output", choices=["json", "truecolor"], default="truecolor"
|
||||||
)
|
)
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
|
||||||
|
def cspace_convert(
|
||||||
|
array: npt.NDArray[np.float64], src: str, dst: str
|
||||||
|
) -> npt.NDArray[np.float64]:
|
||||||
|
return colorspacious.cspace_convert(array, src, dst)
|
||||||
|
|
||||||
|
|
||||||
# Convert source to JCh color space
|
# Convert source to JCh color space
|
||||||
if args.source == "lab":
|
if args.source == "lab":
|
||||||
solarized_jch = colorspacious.cspace_convert(
|
solarized_jch = cspace_convert(SOLARIZED_LAB, "CIELab", "JCh")
|
||||||
SOLARIZED_LAB, "CIELab", "JCh"
|
else: # rgb
|
||||||
)
|
solarized_jch = cspace_convert(SOLARIZED_RGB, "sRGB255", "JCh")
|
||||||
elif args.source == "rgb":
|
|
||||||
solarized_jch = colorspacious.cspace_convert(
|
|
||||||
SOLARIZED_RGB, "sRGB255", "JCh"
|
|
||||||
)
|
|
||||||
|
|
||||||
# Build frogarized theme
|
# Build frogarized theme
|
||||||
jch_factor = [args.lightness_factor, args.chroma_factor, 1]
|
jch_factor: list[float] = [args.lightness_factor, args.chroma_factor, 1]
|
||||||
jch_shift = [0, 0, args.hue_shift]
|
jch_shift: list[float] = [0, 0, args.hue_shift]
|
||||||
frogarzied_jch = np.vstack(
|
frogarized_jch = np.vstack(
|
||||||
[solarized_jch[:8] * jch_factor + jch_shift, solarized_jch[8:]]
|
[solarized_jch[:8] * jch_factor + jch_shift, solarized_jch[8:]]
|
||||||
)
|
)
|
||||||
|
|
||||||
# Convert frogarized to RGB
|
# Convert frogarized to RGB
|
||||||
frogarized_srgb = colorspacious.cspace_convert(
|
frogarized_srgb = cspace_convert(frogarized_jch, "JCh", "sRGB255")
|
||||||
frogarzied_jch, "JCh", "sRGB255"
|
frogarized_rgb = np.asarray(
|
||||||
|
np.rint(np.clip(frogarized_srgb, 0, 255)), dtype=np.uint8
|
||||||
)
|
)
|
||||||
frogarized_rgb = np.uint8(np.rint(np.clip(frogarized_srgb, 0, 255)))
|
|
||||||
if args.polarity == "light":
|
if args.polarity == "light":
|
||||||
frogarized_rgb = np.vstack([frogarized_rgb[7::-1], frogarized_rgb[8:]])
|
frogarized_rgb = np.vstack([frogarized_rgb[7::-1], frogarized_rgb[8:]])
|
||||||
|
|
||||||
# Output
|
# Output
|
||||||
palette = {}
|
palette: dict[str, str] = {}
|
||||||
for i in range(16):
|
for i in range(16):
|
||||||
rgb = frogarized_rgb[i]
|
rgb = frogarized_rgb[i]
|
||||||
r, g, b = rgb
|
r, g, b = rgb
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue