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 numpy as np
|
||||
import numpy.typing as npt
|
||||
|
||||
# Original values for the Solarized color scheme,
|
||||
# created by Ethan Schoonover (https://ethanschoonover.com/solarized/)
|
||||
|
@ -59,43 +60,50 @@ SOLARIZED_RGB = np.array(
|
|||
parser = argparse.ArgumentParser(
|
||||
description="Generate a base16-theme based derived from Solarized"
|
||||
)
|
||||
parser.add_argument("--source", choices=["lab", "rgb"], default="lab")
|
||||
parser.add_argument("--lightness_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("--polarity", choices=["dark", "light"], default="dark")
|
||||
parser.add_argument(
|
||||
_ = parser.add_argument("--source", choices=["lab", "rgb"], default="lab")
|
||||
_ = parser.add_argument("--lightness_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(
|
||||
"--polarity", choices=["dark", "light"], default="dark"
|
||||
)
|
||||
_ = parser.add_argument(
|
||||
"--output", choices=["json", "truecolor"], default="truecolor"
|
||||
)
|
||||
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
|
||||
if args.source == "lab":
|
||||
solarized_jch = colorspacious.cspace_convert(
|
||||
SOLARIZED_LAB, "CIELab", "JCh"
|
||||
)
|
||||
elif args.source == "rgb":
|
||||
solarized_jch = colorspacious.cspace_convert(
|
||||
SOLARIZED_RGB, "sRGB255", "JCh"
|
||||
)
|
||||
solarized_jch = cspace_convert(SOLARIZED_LAB, "CIELab", "JCh")
|
||||
else: # rgb
|
||||
solarized_jch = cspace_convert(SOLARIZED_RGB, "sRGB255", "JCh")
|
||||
|
||||
|
||||
# Build frogarized theme
|
||||
jch_factor = [args.lightness_factor, args.chroma_factor, 1]
|
||||
jch_shift = [0, 0, args.hue_shift]
|
||||
frogarzied_jch = np.vstack(
|
||||
jch_factor: list[float] = [args.lightness_factor, args.chroma_factor, 1]
|
||||
jch_shift: list[float] = [0, 0, args.hue_shift]
|
||||
frogarized_jch = np.vstack(
|
||||
[solarized_jch[:8] * jch_factor + jch_shift, solarized_jch[8:]]
|
||||
)
|
||||
|
||||
# Convert frogarized to RGB
|
||||
frogarized_srgb = colorspacious.cspace_convert(
|
||||
frogarzied_jch, "JCh", "sRGB255"
|
||||
frogarized_srgb = cspace_convert(frogarized_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":
|
||||
frogarized_rgb = np.vstack([frogarized_rgb[7::-1], frogarized_rgb[8:]])
|
||||
|
||||
# Output
|
||||
palette = {}
|
||||
palette: dict[str, str] = {}
|
||||
for i in range(16):
|
||||
rgb = frogarized_rgb[i]
|
||||
r, g, b = rgb
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue