Skip to content

Instantly share code, notes, and snippets.

View facelessuser's full-sized avatar
💭
Screaming into the void 😱

Isaac Muse facelessuser

💭
Screaming into the void 😱
View GitHub Profile
@facelessuser
facelessuser / spectraljs.py
Created September 19, 2025 20:41
Spectral.js with/without white spd
## MIT License
##
## Copyright (c) 2023 Ronald van Wijnen
##
## Permission is hereby granted, free of charge, to any person obtaining a
## copy of this software and associated documentation files (the "Software"),
## to deal in the Software without restriction, including without limitation
## the rights to use, copy, modify, merge, publish, distribute, sublicense,
## and/or sell copies of the Software, and to permit persons to whom the
## Software is furnished to do so, subject to the following conditions:
@facelessuser
facelessuser / spectraljs.py
Last active September 18, 2025 14:32
Spectral.js concentration fix
## MIT License
##
## Copyright (c) 2023 Ronald van Wijnen
##
## Permission is hereby granted, free of charge, to any person obtaining a
## copy of this software and associated documentation files (the "Software"),
## to deal in the Software without restriction, including without limitation
## the rights to use, copy, modify, merge, publish, distribute, sublicense,
## and/or sell copies of the Software, and to permit persons to whom the
## Software is furnished to do so, subject to the following conditions:
@facelessuser
facelessuser / km.md
Created February 14, 2025 22:20
Kubelka-Munk Interpolation

Interpolation with Kubelka-Munk Theory

Approach

This is an experiment showcasing interpolation via Kubelka-Munk theory. Approach generally employs the method as outlined in Spectral.js. Most of foundational topics are covered in Mixbox's paper, though Spectral.js uses an approach less focused on specific paints and instead opts to generalize and simplify the approach by simply generating reflectance curves directly from the spectral data. Results don't necessarily mimic specific paints, but give a pigment like feel.

@facelessuser
facelessuser / fancylist.py
Last active September 17, 2024 16:45
Prototype: Fancy Lists for Python Mardkwon
"""
Fancy lists in the style of Pandoc.
---
# A Python implementation of John Gruber's Markdown.
# Started by Manfred Stienstra (http://www.dwerg.net/).
# Maintained for a few years by Yuri Takhteyev (http://www.freewisdom.org).
# Currently maintained by Waylan Limberg (https://github.com/waylan),
@facelessuser
facelessuser / okwide.py
Created March 21, 2024 23:18
Okhsl and Okhsv for wide gamuts
# pragma: init
from __future__ import annotations
from coloraide.spaces.okhsl import Okhsl, okhsl_to_oklab, oklab_to_okhsl
from coloraide.spaces.okhsv import Okhsv, okhsv_to_oklab, oklab_to_okhsv
P3L_TO_LMS = [
[0.4813798527499543, 0.4621183710113182, 0.05650177623872754],
[0.2288319418112447, 0.6532168193835677, 0.11795123880518772],
[0.08394575232299314, 0.22416527097756647, 0.6918889766994405]
]
@facelessuser
facelessuser / compare.py
Created February 26, 2024 18:13
Compare GMA
from coloraide.gamut import Fit
from coloraide.spaces import RGBish
from coloraide import algebra as alg
class OkLChScale(Fit):
"""
Gamut mapping by scaling.
Expected gamut mapping spaces are RGB type spaces.
For best results, linear light RGB spaces are preferred.
"""
@facelessuser
facelessuser / scalelh.py
Last active February 18, 2024 22:34
Scale LH and tones
# pragma: init
from coloraide.gamut import Fit
from coloraide.spaces import RGBish
class OkLChScale(Fit):
"""
Gamut mapping by scaling.
Expected gamut mapping spaces are RGB type spaces.
For best results, linear light RGB spaces are preferred.
@facelessuser
facelessuser / oklch-scale2.py
Created February 15, 2024 13:21
Evaluating Scaled LH
# pragma: init
from coloraide.gamut import Fit
from coloraide.spaces import RGBish
from coloraide import algebra as alg
class OkLChScale(Fit):
"""
Gamut mapping by scaling.
Expected gamut mapping spaces are RGB type spaces.
@facelessuser
facelessuser / exploring-tonal-palettes.md
Last active August 12, 2025 19:28
Exploring Tonal Palettes

Exploring Tonal Palettes

HCT

HCT is a color model developed by [Google][material-hct]. It aims to solve a problem related to generating color palettes with good contrast. While HCT may seem like a revolutionary color model, the idea behind it is quite simple, take the perceptually uniform color model CAM16 and combine it with the CIE Lab's lightness.

Upside of HCT

@facelessuser
facelessuser / css.py
Created August 23, 2023 16:24
CSS undefined handling
from coloraide import Color as Base
class Color(Base):
FIT = 'oklch-chroma'
POWERLESS = True
CARRYFORWARD = True
print('==== Case 1 ====')
color = Color.interpolate(['oklch(100% 50% 60deg)', 'oklch(50% 50% 0deg)'], space='oklch', out_space='oklch')(0.5)
Row([color.to_string(percent=True), color.convert('srgb').to_string()])