lutopia 0.2.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- lutopia/__init__.py +41 -0
- lutopia/core.py +67 -0
- lutopia/palettes/accent.json +70 -0
- lutopia/palettes/afmhot.json +46 -0
- lutopia/palettes/autumn.json +22 -0
- lutopia/palettes/berlin.json +2054 -0
- lutopia/palettes/bgy.json +254 -0
- lutopia/palettes/bgyw.json +286 -0
- lutopia/palettes/binary.json +22 -0
- lutopia/palettes/bjy.json +150 -0
- lutopia/palettes/bkr.json +134 -0
- lutopia/palettes/bky.json +134 -0
- lutopia/palettes/blues.json +70 -0
- lutopia/palettes/bmw.json +238 -0
- lutopia/palettes/bmy.json +230 -0
- lutopia/palettes/bone.json +38 -0
- lutopia/palettes/brbg.json +102 -0
- lutopia/palettes/brg.json +38 -0
- lutopia/palettes/bugn.json +78 -0
- lutopia/palettes/bupu.json +70 -0
- lutopia/palettes/bwr.json +38 -0
- lutopia/palettes/bwy.json +150 -0
- lutopia/palettes/c1.json +398 -0
- lutopia/palettes/c10.json +190 -0
- lutopia/palettes/c10s.json +198 -0
- lutopia/palettes/c11.json +358 -0
- lutopia/palettes/c11s.json +358 -0
- lutopia/palettes/c1s.json +342 -0
- lutopia/palettes/c2.json +382 -0
- lutopia/palettes/c2s.json +366 -0
- lutopia/palettes/c3.json +302 -0
- lutopia/palettes/c3s.json +310 -0
- lutopia/palettes/c4.json +334 -0
- lutopia/palettes/c4s.json +342 -0
- lutopia/palettes/c5.json +142 -0
- lutopia/palettes/c5s.json +134 -0
- lutopia/palettes/c6.json +486 -0
- lutopia/palettes/c6s.json +478 -0
- lutopia/palettes/c7.json +390 -0
- lutopia/palettes/c7s.json +390 -0
- lutopia/palettes/c8.json +270 -0
- lutopia/palettes/c8s.json +246 -0
- lutopia/palettes/c9.json +262 -0
- lutopia/palettes/c9s.json +254 -0
- lutopia/palettes/cbc1.json +310 -0
- lutopia/palettes/cbc2.json +310 -0
- lutopia/palettes/cbd1.json +150 -0
- lutopia/palettes/cbd2.json +126 -0
- lutopia/palettes/cbl1.json +206 -0
- lutopia/palettes/cbl2.json +302 -0
- lutopia/palettes/cbl3.json +190 -0
- lutopia/palettes/cbl4.json +174 -0
- lutopia/palettes/cbtc1.json +286 -0
- lutopia/palettes/cbtc2.json +286 -0
- lutopia/palettes/cbtd1.json +110 -0
- lutopia/palettes/cbtl1.json +318 -0
- lutopia/palettes/cbtl2.json +230 -0
- lutopia/palettes/cbtl3.json +150 -0
- lutopia/palettes/cbtl4.json +150 -0
- lutopia/palettes/circle_mgbm_67_c31.json +190 -0
- lutopia/palettes/circle_mgbm_67_c31_s25.json +198 -0
- lutopia/palettes/cividis.json +2054 -0
- lutopia/palettes/cmrmap.json +86 -0
- lutopia/palettes/colorwheel.json +366 -0
- lutopia/palettes/cool.json +22 -0
- lutopia/palettes/coolwarm.json +158 -0
- lutopia/palettes/copper.json +30 -0
- lutopia/palettes/cubehelix.json +262 -0
- lutopia/palettes/cwr.json +110 -0
- lutopia/palettes/cyclic_bgrmb_35_70_c75.json +358 -0
- lutopia/palettes/cyclic_bgrmb_35_70_c75_s25.json +358 -0
- lutopia/palettes/cyclic_grey_15_85_c0.json +142 -0
- lutopia/palettes/cyclic_grey_15_85_c0_s25.json +134 -0
- lutopia/palettes/cyclic_isoluminant.json +190 -0
- lutopia/palettes/cyclic_mrybm_35_75_c68.json +398 -0
- lutopia/palettes/cyclic_mrybm_35_75_c68_s25.json +342 -0
- lutopia/palettes/cyclic_mybm_20_100_c48.json +262 -0
- lutopia/palettes/cyclic_mybm_20_100_c48_s25.json +254 -0
- lutopia/palettes/cyclic_mygbm_30_95_c78.json +382 -0
- lutopia/palettes/cyclic_mygbm_30_95_c78_s25.json +366 -0
- lutopia/palettes/cyclic_mygbm_50_90_c46.json +270 -0
- lutopia/palettes/cyclic_mygbm_50_90_c46_s25.json +246 -0
- lutopia/palettes/cyclic_protanopic_deuteranopic_bwyk_16_96_c31.json +310 -0
- lutopia/palettes/cyclic_protanopic_deuteranopic_wywb_55_96_c33.json +310 -0
- lutopia/palettes/cyclic_rygcbmr_50_90_c64.json +486 -0
- lutopia/palettes/cyclic_rygcbmr_50_90_c64_s25.json +478 -0
- lutopia/palettes/cyclic_tritanopic_cwrk_40_100_c20.json +286 -0
- lutopia/palettes/cyclic_tritanopic_wrwc_70_100_c20.json +286 -0
- lutopia/palettes/cyclic_wrkbw_10_90_c43.json +302 -0
- lutopia/palettes/cyclic_wrkbw_10_90_c43_s25.json +310 -0
- lutopia/palettes/cyclic_wrwbw_40_90_c42.json +334 -0
- lutopia/palettes/cyclic_wrwbw_40_90_c42_s25.json +342 -0
- lutopia/palettes/cyclic_ymcgy_60_90_c67.json +390 -0
- lutopia/palettes/cyclic_ymcgy_60_90_c67_s25.json +390 -0
- lutopia/palettes/d1.json +198 -0
- lutopia/palettes/d10.json +150 -0
- lutopia/palettes/d11.json +150 -0
- lutopia/palettes/d12.json +142 -0
- lutopia/palettes/d13.json +278 -0
- lutopia/palettes/d1a.json +262 -0
- lutopia/palettes/d2.json +142 -0
- lutopia/palettes/d3.json +158 -0
- lutopia/palettes/d4.json +134 -0
- lutopia/palettes/d6.json +134 -0
- lutopia/palettes/d7.json +150 -0
- lutopia/palettes/d8.json +182 -0
- lutopia/palettes/d9.json +142 -0
- lutopia/palettes/dark2.json +70 -0
- lutopia/palettes/dimgray.json +54 -0
- lutopia/palettes/diverging_bkr_55_10_c35.json +134 -0
- lutopia/palettes/diverging_bky_60_10_c30.json +134 -0
- lutopia/palettes/diverging_bwg_20_95_c41.json +278 -0
- lutopia/palettes/diverging_bwr_20_95_c54.json +262 -0
- lutopia/palettes/diverging_bwr_40_95_c42.json +198 -0
- lutopia/palettes/diverging_bwr_55_98_c37.json +142 -0
- lutopia/palettes/diverging_cwm_80_100_c22.json +150 -0
- lutopia/palettes/diverging_gkr_60_10_c40.json +102 -0
- lutopia/palettes/diverging_gwr_55_95_c38.json +158 -0
- lutopia/palettes/diverging_gwv_55_95_c39.json +142 -0
- lutopia/palettes/diverging_isoluminant_cjm_75_c23.json +142 -0
- lutopia/palettes/diverging_isoluminant_cjm_75_c24.json +150 -0
- lutopia/palettes/diverging_isoluminant_cjo_70_c25.json +150 -0
- lutopia/palettes/diverging_linear_bjr_30_55_c53.json +182 -0
- lutopia/palettes/diverging_linear_bjy_30_90_c45.json +150 -0
- lutopia/palettes/diverging_linear_protanopic_deuteranopic_bjy_57_89_c34.json +126 -0
- lutopia/palettes/diverging_protanopic_deuteranopic_bwy_60_95_c32.json +150 -0
- lutopia/palettes/diverging_rainbow_bgymr_45_85_c67.json +350 -0
- lutopia/palettes/diverging_tritanopic_cwr_75_98_c20.json +110 -0
- lutopia/palettes/fire.json +11 -0
- lutopia/palettes/flag.json +1958 -0
- lutopia/palettes/gist_earth.json +174 -0
- lutopia/palettes/gist_gray.json +22 -0
- lutopia/palettes/gist_grey.json +22 -0
- lutopia/palettes/gist_heat.json +46 -0
- lutopia/palettes/gist_ncar.json +262 -0
- lutopia/palettes/gist_rainbow.json +102 -0
- lutopia/palettes/gist_stern.json +86 -0
- lutopia/palettes/gist_yarg.json +22 -0
- lutopia/palettes/gist_yerg.json +22 -0
- lutopia/palettes/glasbey.json +2054 -0
- lutopia/palettes/glasbey_bw.json +2054 -0
- lutopia/palettes/glasbey_bw_minc_20.json +2054 -0
- lutopia/palettes/glasbey_bw_minc_20_hue_150_280.json +2054 -0
- lutopia/palettes/glasbey_bw_minc_20_hue_330_100.json +2054 -0
- lutopia/palettes/glasbey_bw_minc_20_maxl_70.json +2054 -0
- lutopia/palettes/glasbey_bw_minc_20_minl_30.json +2054 -0
- lutopia/palettes/glasbey_category10.json +2054 -0
- lutopia/palettes/glasbey_cool.json +2054 -0
- lutopia/palettes/glasbey_dark.json +2054 -0
- lutopia/palettes/glasbey_hv.json +2054 -0
- lutopia/palettes/glasbey_light.json +2054 -0
- lutopia/palettes/glasbey_warm.json +2054 -0
- lutopia/palettes/gnbu.json +78 -0
- lutopia/palettes/gnuplot.json +246 -0
- lutopia/palettes/gnuplot2.json +70 -0
- lutopia/palettes/gouldian.json +254 -0
- lutopia/palettes/gray.json +22 -0
- lutopia/palettes/grays.json +70 -0
- lutopia/palettes/greens.json +78 -0
- lutopia/palettes/grey.json +22 -0
- lutopia/palettes/greys.json +70 -0
- lutopia/palettes/gwv.json +142 -0
- lutopia/palettes/hot.json +38 -0
- lutopia/palettes/hsv.json +118 -0
- lutopia/palettes/i1.json +110 -0
- lutopia/palettes/i2.json +150 -0
- lutopia/palettes/i3.json +126 -0
- lutopia/palettes/inferno.json +2054 -0
- lutopia/palettes/isolum.json +150 -0
- lutopia/palettes/isoluminant_cgo_70_c39.json +110 -0
- lutopia/palettes/isoluminant_cgo_80_c38.json +150 -0
- lutopia/palettes/isoluminant_cm_70_c39.json +126 -0
- lutopia/palettes/jet.json +126 -0
- lutopia/palettes/kb.json +70 -0
- lutopia/palettes/kbc.json +238 -0
- lutopia/palettes/kbgyw.json +358 -0
- lutopia/palettes/kg.json +54 -0
- lutopia/palettes/kgy.json +94 -0
- lutopia/palettes/kr.json +70 -0
- lutopia/palettes/l1.json +78 -0
- lutopia/palettes/l10.json +110 -0
- lutopia/palettes/l11.json +94 -0
- lutopia/palettes/l12.json +70 -0
- lutopia/palettes/l13.json +70 -0
- lutopia/palettes/l14.json +54 -0
- lutopia/palettes/l15.json +70 -0
- lutopia/palettes/l16.json +374 -0
- lutopia/palettes/l17.json +190 -0
- lutopia/palettes/l18.json +142 -0
- lutopia/palettes/l19.json +142 -0
- lutopia/palettes/l2.json +54 -0
- lutopia/palettes/l20.json +254 -0
- lutopia/palettes/l3.json +246 -0
- lutopia/palettes/l4.json +166 -0
- lutopia/palettes/l5.json +94 -0
- lutopia/palettes/l6.json +238 -0
- lutopia/palettes/l7.json +214 -0
- lutopia/palettes/l8.json +206 -0
- lutopia/palettes/l9.json +310 -0
- lutopia/palettes/linear_bgy_10_95_c74.json +254 -0
- lutopia/palettes/linear_bgyw_15_100_c67.json +294 -0
- lutopia/palettes/linear_bgyw_15_100_c68.json +286 -0
- lutopia/palettes/linear_bgyw_20_98_c66.json +310 -0
- lutopia/palettes/linear_blue_5_95_c73.json +238 -0
- lutopia/palettes/linear_blue_95_50_c20.json +70 -0
- lutopia/palettes/linear_bmw_5_95_c86.json +214 -0
- lutopia/palettes/linear_bmw_5_95_c89.json +238 -0
- lutopia/palettes/linear_bmy_10_95_c71.json +206 -0
- lutopia/palettes/linear_bmy_10_95_c78.json +230 -0
- lutopia/palettes/linear_gow_60_85_c27.json +110 -0
- lutopia/palettes/linear_gow_65_90_c35.json +94 -0
- lutopia/palettes/linear_green_5_95_c69.json +94 -0
- lutopia/palettes/linear_grey_0_100_c0.json +78 -0
- lutopia/palettes/linear_grey_10_95_c0.json +54 -0
- lutopia/palettes/linear_kbc_5_95_c73.json +238 -0
- lutopia/palettes/linear_kbgoy_20_95_c57.json +254 -0
- lutopia/palettes/linear_kbgyw_10_98_c63.json +358 -0
- lutopia/palettes/linear_kbgyw_5_98_c62.json +374 -0
- lutopia/palettes/linear_kgy_5_95_c69.json +94 -0
- lutopia/palettes/linear_kry_0_97_c73.json +166 -0
- lutopia/palettes/linear_kry_5_95_c72.json +222 -0
- lutopia/palettes/linear_kry_5_98_c75.json +150 -0
- lutopia/palettes/linear_kryw_0_100_c71.json +246 -0
- lutopia/palettes/linear_kryw_5_100_c64.json +214 -0
- lutopia/palettes/linear_kryw_5_100_c67.json +190 -0
- lutopia/palettes/linear_protanopic_deuteranopic_kbjyw_5_95_c25.json +206 -0
- lutopia/palettes/linear_protanopic_deuteranopic_kbw_5_95_c34.json +190 -0
- lutopia/palettes/linear_protanopic_deuteranopic_kbw_5_98_c40.json +302 -0
- lutopia/palettes/linear_protanopic_deuteranopic_kyw_5_95_c49.json +174 -0
- lutopia/palettes/linear_ternary_blue_0_44_c57.json +70 -0
- lutopia/palettes/linear_ternary_green_0_46_c42.json +54 -0
- lutopia/palettes/linear_ternary_red_0_50_c52.json +70 -0
- lutopia/palettes/linear_tritanopic_kcw_5_95_c22.json +150 -0
- lutopia/palettes/linear_tritanopic_krjcw_5_95_c24.json +230 -0
- lutopia/palettes/linear_tritanopic_krjcw_5_98_c46.json +318 -0
- lutopia/palettes/linear_tritanopic_krw_5_95_c46.json +150 -0
- lutopia/palettes/linear_wcmr_100_45_c42.json +142 -0
- lutopia/palettes/linear_worb_100_25_c53.json +190 -0
- lutopia/palettes/linear_wyor_100_45_c55.json +142 -0
- lutopia/palettes/magma.json +2054 -0
- lutopia/palettes/managua.json +2054 -0
- lutopia/palettes/nipy_spectral.json +238 -0
- lutopia/palettes/ocean.json +38 -0
- lutopia/palettes/okabe_ito.json +70 -0
- lutopia/palettes/oranges.json +78 -0
- lutopia/palettes/orrd.json +78 -0
- lutopia/palettes/paired.json +102 -0
- lutopia/palettes/pastel1.json +78 -0
- lutopia/palettes/pastel2.json +70 -0
- lutopia/palettes/pink.json +126 -0
- lutopia/palettes/piyg.json +102 -0
- lutopia/palettes/plasma.json +2054 -0
- lutopia/palettes/prgn.json +94 -0
- lutopia/palettes/prism.json +1838 -0
- lutopia/palettes/pubu.json +78 -0
- lutopia/palettes/pubugn.json +78 -0
- lutopia/palettes/puor.json +102 -0
- lutopia/palettes/purd.json +78 -0
- lutopia/palettes/purples.json +78 -0
- lutopia/palettes/r1.json +318 -0
- lutopia/palettes/r2.json +286 -0
- lutopia/palettes/r3.json +350 -0
- lutopia/palettes/r4.json +326 -0
- lutopia/palettes/rainbow.json +198 -0
- lutopia/palettes/rainbow4.json +326 -0
- lutopia/palettes/rainbow_bgyr_10_90_c83.json +326 -0
- lutopia/palettes/rainbow_bgyr_35_85_c72.json +286 -0
- lutopia/palettes/rainbow_bgyr_35_85_c73.json +286 -0
- lutopia/palettes/rainbow_bgyrm_35_85_c69.json +318 -0
- lutopia/palettes/rainbow_bgyrm_35_85_c71.json +270 -0
- lutopia/palettes/rdbu.json +102 -0
- lutopia/palettes/rdgy.json +102 -0
- lutopia/palettes/rdpu.json +78 -0
- lutopia/palettes/rdylbu.json +94 -0
- lutopia/palettes/rdylgn.json +102 -0
- lutopia/palettes/reds.json +78 -0
- lutopia/palettes/seismic.json +54 -0
- lutopia/palettes/set1.json +78 -0
- lutopia/palettes/set2.json +70 -0
- lutopia/palettes/set3.json +102 -0
- lutopia/palettes/spectral.json +110 -0
- lutopia/palettes/spring.json +22 -0
- lutopia/palettes/summer.json +22 -0
- lutopia/palettes/tab10.json +86 -0
- lutopia/palettes/tab20.json +166 -0
- lutopia/palettes/tab20b.json +166 -0
- lutopia/palettes/tab20c.json +166 -0
- lutopia/palettes/terrain.json +86 -0
- lutopia/palettes/turbo.json +2054 -0
- lutopia/palettes/twilight.json +502 -0
- lutopia/palettes/twilight_shifted.json +534 -0
- lutopia/palettes/vanimo.json +2054 -0
- lutopia/palettes/viridis.json +15 -0
- lutopia/palettes/winter.json +22 -0
- lutopia/palettes/wistia.json +46 -0
- lutopia/palettes/ylgn.json +78 -0
- lutopia/palettes/ylgnbu.json +78 -0
- lutopia/palettes/ylorbr.json +78 -0
- lutopia/palettes/ylorrd.json +78 -0
- lutopia/viewer.py +224 -0
- lutopia-0.2.0.dist-info/METADATA +223 -0
- lutopia-0.2.0.dist-info/RECORD +304 -0
- lutopia-0.2.0.dist-info/WHEEL +4 -0
- lutopia-0.2.0.dist-info/entry_points.txt +3 -0
lutopia/__init__.py
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import json
|
|
4
|
+
from pathlib import Path
|
|
5
|
+
from typing import TYPE_CHECKING
|
|
6
|
+
|
|
7
|
+
if TYPE_CHECKING:
|
|
8
|
+
from lutopia.core import UnifiedPalette
|
|
9
|
+
|
|
10
|
+
_PALETTES_DIR = Path(__file__).parent / "palettes"
|
|
11
|
+
_cache: dict[str, UnifiedPalette] = {}
|
|
12
|
+
_names: list[str] | None = None
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def _palette_names() -> list[str]:
|
|
16
|
+
global _names
|
|
17
|
+
if _names is None:
|
|
18
|
+
_names = sorted(p.stem for p in _PALETTES_DIR.glob("*.json"))
|
|
19
|
+
return _names
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def __getattr__(name: str) -> UnifiedPalette:
|
|
23
|
+
if name.startswith("_"):
|
|
24
|
+
raise AttributeError(name)
|
|
25
|
+
names = _palette_names()
|
|
26
|
+
if name not in names:
|
|
27
|
+
available = ", ".join(names[:8]) + ("..." if len(names) > 8 else "")
|
|
28
|
+
raise AttributeError(f"lutopia has no palette {name!r}. Available: {available}")
|
|
29
|
+
if name not in _cache:
|
|
30
|
+
from lutopia.core import UnifiedPalette
|
|
31
|
+
|
|
32
|
+
raw = (_PALETTES_DIR / f"{name}.json").read_bytes()
|
|
33
|
+
_cache[name] = UnifiedPalette(json.loads(raw))
|
|
34
|
+
return _cache[name]
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def __dir__() -> list[str]:
|
|
38
|
+
return _palette_names()
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
__all__ = _palette_names()
|
lutopia/core.py
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import Any
|
|
4
|
+
|
|
5
|
+
import numpy as np
|
|
6
|
+
from scipy.interpolate import interp1d
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class UnifiedPalette:
|
|
10
|
+
def __init__(self, json_data: dict[str, Any]) -> None:
|
|
11
|
+
self.name: str = json_data["name"]
|
|
12
|
+
self.mode: str = json_data["interpolation"] # "linear" or "step"
|
|
13
|
+
|
|
14
|
+
anchors: list[list] = json_data["anchors"]
|
|
15
|
+
self.domain: np.ndarray = np.array([a[0] for a in anchors], dtype=float)
|
|
16
|
+
self.colors: np.ndarray = np.array([a[1] for a in anchors], dtype=float) / 255.0
|
|
17
|
+
|
|
18
|
+
kind = "linear" if self.mode == "linear" else "nearest"
|
|
19
|
+
self._evaluator: interp1d = interp1d(
|
|
20
|
+
self.domain,
|
|
21
|
+
self.colors,
|
|
22
|
+
axis=0,
|
|
23
|
+
kind=kind,
|
|
24
|
+
bounds_error=False,
|
|
25
|
+
fill_value=(self.colors[0], self.colors[-1]),
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
def sample(self, steps: int = 256) -> np.ndarray:
|
|
29
|
+
"""Evaluate the continuous function at N evenly distributed steps."""
|
|
30
|
+
target_domain = np.linspace(self.domain[0], self.domain[-1], steps)
|
|
31
|
+
return np.clip(self._evaluator(target_domain), 0.0, 1.0)
|
|
32
|
+
|
|
33
|
+
def to_hex_list(self, steps: int = 256) -> list[str]:
|
|
34
|
+
"""Return hex color strings for N samples."""
|
|
35
|
+
rgb = np.round(self.sample(steps) * 255).astype(np.uint8)
|
|
36
|
+
return [f"#{r:02x}{g:02x}{b:02x}" for r, g, b in rgb]
|
|
37
|
+
|
|
38
|
+
# --- NATIVE CONSUMER SHAPING PROPERTIES (no third-party imports) ---
|
|
39
|
+
|
|
40
|
+
@property
|
|
41
|
+
def matplotlib(self) -> np.ndarray:
|
|
42
|
+
"""Normalized (256, 3) float array for ListedColormap."""
|
|
43
|
+
return self.sample(256)
|
|
44
|
+
|
|
45
|
+
@property
|
|
46
|
+
def plt(self) -> np.ndarray:
|
|
47
|
+
return self.matplotlib
|
|
48
|
+
|
|
49
|
+
@property
|
|
50
|
+
def mpl(self) -> np.ndarray:
|
|
51
|
+
return self.matplotlib
|
|
52
|
+
|
|
53
|
+
@property
|
|
54
|
+
def seaborn(self) -> list[str]:
|
|
55
|
+
"""List of 256 hex strings for Seaborn palette/cmap signatures."""
|
|
56
|
+
return self.to_hex_list(256)
|
|
57
|
+
|
|
58
|
+
@property
|
|
59
|
+
def sns(self) -> list[str]:
|
|
60
|
+
return self.seaborn
|
|
61
|
+
|
|
62
|
+
@property
|
|
63
|
+
def plotly(self) -> list[list]:
|
|
64
|
+
"""Plotly colorscale: [[fraction, hex], ...] over 256 steps."""
|
|
65
|
+
hex_list = self.to_hex_list(256)
|
|
66
|
+
n = len(hex_list)
|
|
67
|
+
return [[i / (n - 1), hex_list[i]] for i in range(n)]
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "accent",
|
|
3
|
+
"interpolation": "step",
|
|
4
|
+
"anchors": [
|
|
5
|
+
[
|
|
6
|
+
0,
|
|
7
|
+
[
|
|
8
|
+
127,
|
|
9
|
+
201,
|
|
10
|
+
127
|
|
11
|
+
]
|
|
12
|
+
],
|
|
13
|
+
[
|
|
14
|
+
1,
|
|
15
|
+
[
|
|
16
|
+
127,
|
|
17
|
+
201,
|
|
18
|
+
127
|
|
19
|
+
]
|
|
20
|
+
],
|
|
21
|
+
[
|
|
22
|
+
2,
|
|
23
|
+
[
|
|
24
|
+
127,
|
|
25
|
+
201,
|
|
26
|
+
127
|
|
27
|
+
]
|
|
28
|
+
],
|
|
29
|
+
[
|
|
30
|
+
3,
|
|
31
|
+
[
|
|
32
|
+
127,
|
|
33
|
+
201,
|
|
34
|
+
127
|
|
35
|
+
]
|
|
36
|
+
],
|
|
37
|
+
[
|
|
38
|
+
4,
|
|
39
|
+
[
|
|
40
|
+
127,
|
|
41
|
+
201,
|
|
42
|
+
127
|
|
43
|
+
]
|
|
44
|
+
],
|
|
45
|
+
[
|
|
46
|
+
5,
|
|
47
|
+
[
|
|
48
|
+
127,
|
|
49
|
+
201,
|
|
50
|
+
127
|
|
51
|
+
]
|
|
52
|
+
],
|
|
53
|
+
[
|
|
54
|
+
6,
|
|
55
|
+
[
|
|
56
|
+
127,
|
|
57
|
+
201,
|
|
58
|
+
127
|
|
59
|
+
]
|
|
60
|
+
],
|
|
61
|
+
[
|
|
62
|
+
7,
|
|
63
|
+
[
|
|
64
|
+
127,
|
|
65
|
+
201,
|
|
66
|
+
127
|
|
67
|
+
]
|
|
68
|
+
]
|
|
69
|
+
]
|
|
70
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "afmhot",
|
|
3
|
+
"interpolation": "linear",
|
|
4
|
+
"anchors": [
|
|
5
|
+
[
|
|
6
|
+
0.0,
|
|
7
|
+
[
|
|
8
|
+
0,
|
|
9
|
+
0,
|
|
10
|
+
0
|
|
11
|
+
]
|
|
12
|
+
],
|
|
13
|
+
[
|
|
14
|
+
0.25098,
|
|
15
|
+
[
|
|
16
|
+
128,
|
|
17
|
+
0,
|
|
18
|
+
0
|
|
19
|
+
]
|
|
20
|
+
],
|
|
21
|
+
[
|
|
22
|
+
0.498039,
|
|
23
|
+
[
|
|
24
|
+
254,
|
|
25
|
+
126,
|
|
26
|
+
0
|
|
27
|
+
]
|
|
28
|
+
],
|
|
29
|
+
[
|
|
30
|
+
0.74902,
|
|
31
|
+
[
|
|
32
|
+
255,
|
|
33
|
+
254,
|
|
34
|
+
127
|
|
35
|
+
]
|
|
36
|
+
],
|
|
37
|
+
[
|
|
38
|
+
1.0,
|
|
39
|
+
[
|
|
40
|
+
255,
|
|
41
|
+
255,
|
|
42
|
+
255
|
|
43
|
+
]
|
|
44
|
+
]
|
|
45
|
+
]
|
|
46
|
+
}
|