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.
Files changed (304) hide show
  1. lutopia/__init__.py +41 -0
  2. lutopia/core.py +67 -0
  3. lutopia/palettes/accent.json +70 -0
  4. lutopia/palettes/afmhot.json +46 -0
  5. lutopia/palettes/autumn.json +22 -0
  6. lutopia/palettes/berlin.json +2054 -0
  7. lutopia/palettes/bgy.json +254 -0
  8. lutopia/palettes/bgyw.json +286 -0
  9. lutopia/palettes/binary.json +22 -0
  10. lutopia/palettes/bjy.json +150 -0
  11. lutopia/palettes/bkr.json +134 -0
  12. lutopia/palettes/bky.json +134 -0
  13. lutopia/palettes/blues.json +70 -0
  14. lutopia/palettes/bmw.json +238 -0
  15. lutopia/palettes/bmy.json +230 -0
  16. lutopia/palettes/bone.json +38 -0
  17. lutopia/palettes/brbg.json +102 -0
  18. lutopia/palettes/brg.json +38 -0
  19. lutopia/palettes/bugn.json +78 -0
  20. lutopia/palettes/bupu.json +70 -0
  21. lutopia/palettes/bwr.json +38 -0
  22. lutopia/palettes/bwy.json +150 -0
  23. lutopia/palettes/c1.json +398 -0
  24. lutopia/palettes/c10.json +190 -0
  25. lutopia/palettes/c10s.json +198 -0
  26. lutopia/palettes/c11.json +358 -0
  27. lutopia/palettes/c11s.json +358 -0
  28. lutopia/palettes/c1s.json +342 -0
  29. lutopia/palettes/c2.json +382 -0
  30. lutopia/palettes/c2s.json +366 -0
  31. lutopia/palettes/c3.json +302 -0
  32. lutopia/palettes/c3s.json +310 -0
  33. lutopia/palettes/c4.json +334 -0
  34. lutopia/palettes/c4s.json +342 -0
  35. lutopia/palettes/c5.json +142 -0
  36. lutopia/palettes/c5s.json +134 -0
  37. lutopia/palettes/c6.json +486 -0
  38. lutopia/palettes/c6s.json +478 -0
  39. lutopia/palettes/c7.json +390 -0
  40. lutopia/palettes/c7s.json +390 -0
  41. lutopia/palettes/c8.json +270 -0
  42. lutopia/palettes/c8s.json +246 -0
  43. lutopia/palettes/c9.json +262 -0
  44. lutopia/palettes/c9s.json +254 -0
  45. lutopia/palettes/cbc1.json +310 -0
  46. lutopia/palettes/cbc2.json +310 -0
  47. lutopia/palettes/cbd1.json +150 -0
  48. lutopia/palettes/cbd2.json +126 -0
  49. lutopia/palettes/cbl1.json +206 -0
  50. lutopia/palettes/cbl2.json +302 -0
  51. lutopia/palettes/cbl3.json +190 -0
  52. lutopia/palettes/cbl4.json +174 -0
  53. lutopia/palettes/cbtc1.json +286 -0
  54. lutopia/palettes/cbtc2.json +286 -0
  55. lutopia/palettes/cbtd1.json +110 -0
  56. lutopia/palettes/cbtl1.json +318 -0
  57. lutopia/palettes/cbtl2.json +230 -0
  58. lutopia/palettes/cbtl3.json +150 -0
  59. lutopia/palettes/cbtl4.json +150 -0
  60. lutopia/palettes/circle_mgbm_67_c31.json +190 -0
  61. lutopia/palettes/circle_mgbm_67_c31_s25.json +198 -0
  62. lutopia/palettes/cividis.json +2054 -0
  63. lutopia/palettes/cmrmap.json +86 -0
  64. lutopia/palettes/colorwheel.json +366 -0
  65. lutopia/palettes/cool.json +22 -0
  66. lutopia/palettes/coolwarm.json +158 -0
  67. lutopia/palettes/copper.json +30 -0
  68. lutopia/palettes/cubehelix.json +262 -0
  69. lutopia/palettes/cwr.json +110 -0
  70. lutopia/palettes/cyclic_bgrmb_35_70_c75.json +358 -0
  71. lutopia/palettes/cyclic_bgrmb_35_70_c75_s25.json +358 -0
  72. lutopia/palettes/cyclic_grey_15_85_c0.json +142 -0
  73. lutopia/palettes/cyclic_grey_15_85_c0_s25.json +134 -0
  74. lutopia/palettes/cyclic_isoluminant.json +190 -0
  75. lutopia/palettes/cyclic_mrybm_35_75_c68.json +398 -0
  76. lutopia/palettes/cyclic_mrybm_35_75_c68_s25.json +342 -0
  77. lutopia/palettes/cyclic_mybm_20_100_c48.json +262 -0
  78. lutopia/palettes/cyclic_mybm_20_100_c48_s25.json +254 -0
  79. lutopia/palettes/cyclic_mygbm_30_95_c78.json +382 -0
  80. lutopia/palettes/cyclic_mygbm_30_95_c78_s25.json +366 -0
  81. lutopia/palettes/cyclic_mygbm_50_90_c46.json +270 -0
  82. lutopia/palettes/cyclic_mygbm_50_90_c46_s25.json +246 -0
  83. lutopia/palettes/cyclic_protanopic_deuteranopic_bwyk_16_96_c31.json +310 -0
  84. lutopia/palettes/cyclic_protanopic_deuteranopic_wywb_55_96_c33.json +310 -0
  85. lutopia/palettes/cyclic_rygcbmr_50_90_c64.json +486 -0
  86. lutopia/palettes/cyclic_rygcbmr_50_90_c64_s25.json +478 -0
  87. lutopia/palettes/cyclic_tritanopic_cwrk_40_100_c20.json +286 -0
  88. lutopia/palettes/cyclic_tritanopic_wrwc_70_100_c20.json +286 -0
  89. lutopia/palettes/cyclic_wrkbw_10_90_c43.json +302 -0
  90. lutopia/palettes/cyclic_wrkbw_10_90_c43_s25.json +310 -0
  91. lutopia/palettes/cyclic_wrwbw_40_90_c42.json +334 -0
  92. lutopia/palettes/cyclic_wrwbw_40_90_c42_s25.json +342 -0
  93. lutopia/palettes/cyclic_ymcgy_60_90_c67.json +390 -0
  94. lutopia/palettes/cyclic_ymcgy_60_90_c67_s25.json +390 -0
  95. lutopia/palettes/d1.json +198 -0
  96. lutopia/palettes/d10.json +150 -0
  97. lutopia/palettes/d11.json +150 -0
  98. lutopia/palettes/d12.json +142 -0
  99. lutopia/palettes/d13.json +278 -0
  100. lutopia/palettes/d1a.json +262 -0
  101. lutopia/palettes/d2.json +142 -0
  102. lutopia/palettes/d3.json +158 -0
  103. lutopia/palettes/d4.json +134 -0
  104. lutopia/palettes/d6.json +134 -0
  105. lutopia/palettes/d7.json +150 -0
  106. lutopia/palettes/d8.json +182 -0
  107. lutopia/palettes/d9.json +142 -0
  108. lutopia/palettes/dark2.json +70 -0
  109. lutopia/palettes/dimgray.json +54 -0
  110. lutopia/palettes/diverging_bkr_55_10_c35.json +134 -0
  111. lutopia/palettes/diverging_bky_60_10_c30.json +134 -0
  112. lutopia/palettes/diverging_bwg_20_95_c41.json +278 -0
  113. lutopia/palettes/diverging_bwr_20_95_c54.json +262 -0
  114. lutopia/palettes/diverging_bwr_40_95_c42.json +198 -0
  115. lutopia/palettes/diverging_bwr_55_98_c37.json +142 -0
  116. lutopia/palettes/diverging_cwm_80_100_c22.json +150 -0
  117. lutopia/palettes/diverging_gkr_60_10_c40.json +102 -0
  118. lutopia/palettes/diverging_gwr_55_95_c38.json +158 -0
  119. lutopia/palettes/diverging_gwv_55_95_c39.json +142 -0
  120. lutopia/palettes/diverging_isoluminant_cjm_75_c23.json +142 -0
  121. lutopia/palettes/diverging_isoluminant_cjm_75_c24.json +150 -0
  122. lutopia/palettes/diverging_isoluminant_cjo_70_c25.json +150 -0
  123. lutopia/palettes/diverging_linear_bjr_30_55_c53.json +182 -0
  124. lutopia/palettes/diverging_linear_bjy_30_90_c45.json +150 -0
  125. lutopia/palettes/diverging_linear_protanopic_deuteranopic_bjy_57_89_c34.json +126 -0
  126. lutopia/palettes/diverging_protanopic_deuteranopic_bwy_60_95_c32.json +150 -0
  127. lutopia/palettes/diverging_rainbow_bgymr_45_85_c67.json +350 -0
  128. lutopia/palettes/diverging_tritanopic_cwr_75_98_c20.json +110 -0
  129. lutopia/palettes/fire.json +11 -0
  130. lutopia/palettes/flag.json +1958 -0
  131. lutopia/palettes/gist_earth.json +174 -0
  132. lutopia/palettes/gist_gray.json +22 -0
  133. lutopia/palettes/gist_grey.json +22 -0
  134. lutopia/palettes/gist_heat.json +46 -0
  135. lutopia/palettes/gist_ncar.json +262 -0
  136. lutopia/palettes/gist_rainbow.json +102 -0
  137. lutopia/palettes/gist_stern.json +86 -0
  138. lutopia/palettes/gist_yarg.json +22 -0
  139. lutopia/palettes/gist_yerg.json +22 -0
  140. lutopia/palettes/glasbey.json +2054 -0
  141. lutopia/palettes/glasbey_bw.json +2054 -0
  142. lutopia/palettes/glasbey_bw_minc_20.json +2054 -0
  143. lutopia/palettes/glasbey_bw_minc_20_hue_150_280.json +2054 -0
  144. lutopia/palettes/glasbey_bw_minc_20_hue_330_100.json +2054 -0
  145. lutopia/palettes/glasbey_bw_minc_20_maxl_70.json +2054 -0
  146. lutopia/palettes/glasbey_bw_minc_20_minl_30.json +2054 -0
  147. lutopia/palettes/glasbey_category10.json +2054 -0
  148. lutopia/palettes/glasbey_cool.json +2054 -0
  149. lutopia/palettes/glasbey_dark.json +2054 -0
  150. lutopia/palettes/glasbey_hv.json +2054 -0
  151. lutopia/palettes/glasbey_light.json +2054 -0
  152. lutopia/palettes/glasbey_warm.json +2054 -0
  153. lutopia/palettes/gnbu.json +78 -0
  154. lutopia/palettes/gnuplot.json +246 -0
  155. lutopia/palettes/gnuplot2.json +70 -0
  156. lutopia/palettes/gouldian.json +254 -0
  157. lutopia/palettes/gray.json +22 -0
  158. lutopia/palettes/grays.json +70 -0
  159. lutopia/palettes/greens.json +78 -0
  160. lutopia/palettes/grey.json +22 -0
  161. lutopia/palettes/greys.json +70 -0
  162. lutopia/palettes/gwv.json +142 -0
  163. lutopia/palettes/hot.json +38 -0
  164. lutopia/palettes/hsv.json +118 -0
  165. lutopia/palettes/i1.json +110 -0
  166. lutopia/palettes/i2.json +150 -0
  167. lutopia/palettes/i3.json +126 -0
  168. lutopia/palettes/inferno.json +2054 -0
  169. lutopia/palettes/isolum.json +150 -0
  170. lutopia/palettes/isoluminant_cgo_70_c39.json +110 -0
  171. lutopia/palettes/isoluminant_cgo_80_c38.json +150 -0
  172. lutopia/palettes/isoluminant_cm_70_c39.json +126 -0
  173. lutopia/palettes/jet.json +126 -0
  174. lutopia/palettes/kb.json +70 -0
  175. lutopia/palettes/kbc.json +238 -0
  176. lutopia/palettes/kbgyw.json +358 -0
  177. lutopia/palettes/kg.json +54 -0
  178. lutopia/palettes/kgy.json +94 -0
  179. lutopia/palettes/kr.json +70 -0
  180. lutopia/palettes/l1.json +78 -0
  181. lutopia/palettes/l10.json +110 -0
  182. lutopia/palettes/l11.json +94 -0
  183. lutopia/palettes/l12.json +70 -0
  184. lutopia/palettes/l13.json +70 -0
  185. lutopia/palettes/l14.json +54 -0
  186. lutopia/palettes/l15.json +70 -0
  187. lutopia/palettes/l16.json +374 -0
  188. lutopia/palettes/l17.json +190 -0
  189. lutopia/palettes/l18.json +142 -0
  190. lutopia/palettes/l19.json +142 -0
  191. lutopia/palettes/l2.json +54 -0
  192. lutopia/palettes/l20.json +254 -0
  193. lutopia/palettes/l3.json +246 -0
  194. lutopia/palettes/l4.json +166 -0
  195. lutopia/palettes/l5.json +94 -0
  196. lutopia/palettes/l6.json +238 -0
  197. lutopia/palettes/l7.json +214 -0
  198. lutopia/palettes/l8.json +206 -0
  199. lutopia/palettes/l9.json +310 -0
  200. lutopia/palettes/linear_bgy_10_95_c74.json +254 -0
  201. lutopia/palettes/linear_bgyw_15_100_c67.json +294 -0
  202. lutopia/palettes/linear_bgyw_15_100_c68.json +286 -0
  203. lutopia/palettes/linear_bgyw_20_98_c66.json +310 -0
  204. lutopia/palettes/linear_blue_5_95_c73.json +238 -0
  205. lutopia/palettes/linear_blue_95_50_c20.json +70 -0
  206. lutopia/palettes/linear_bmw_5_95_c86.json +214 -0
  207. lutopia/palettes/linear_bmw_5_95_c89.json +238 -0
  208. lutopia/palettes/linear_bmy_10_95_c71.json +206 -0
  209. lutopia/palettes/linear_bmy_10_95_c78.json +230 -0
  210. lutopia/palettes/linear_gow_60_85_c27.json +110 -0
  211. lutopia/palettes/linear_gow_65_90_c35.json +94 -0
  212. lutopia/palettes/linear_green_5_95_c69.json +94 -0
  213. lutopia/palettes/linear_grey_0_100_c0.json +78 -0
  214. lutopia/palettes/linear_grey_10_95_c0.json +54 -0
  215. lutopia/palettes/linear_kbc_5_95_c73.json +238 -0
  216. lutopia/palettes/linear_kbgoy_20_95_c57.json +254 -0
  217. lutopia/palettes/linear_kbgyw_10_98_c63.json +358 -0
  218. lutopia/palettes/linear_kbgyw_5_98_c62.json +374 -0
  219. lutopia/palettes/linear_kgy_5_95_c69.json +94 -0
  220. lutopia/palettes/linear_kry_0_97_c73.json +166 -0
  221. lutopia/palettes/linear_kry_5_95_c72.json +222 -0
  222. lutopia/palettes/linear_kry_5_98_c75.json +150 -0
  223. lutopia/palettes/linear_kryw_0_100_c71.json +246 -0
  224. lutopia/palettes/linear_kryw_5_100_c64.json +214 -0
  225. lutopia/palettes/linear_kryw_5_100_c67.json +190 -0
  226. lutopia/palettes/linear_protanopic_deuteranopic_kbjyw_5_95_c25.json +206 -0
  227. lutopia/palettes/linear_protanopic_deuteranopic_kbw_5_95_c34.json +190 -0
  228. lutopia/palettes/linear_protanopic_deuteranopic_kbw_5_98_c40.json +302 -0
  229. lutopia/palettes/linear_protanopic_deuteranopic_kyw_5_95_c49.json +174 -0
  230. lutopia/palettes/linear_ternary_blue_0_44_c57.json +70 -0
  231. lutopia/palettes/linear_ternary_green_0_46_c42.json +54 -0
  232. lutopia/palettes/linear_ternary_red_0_50_c52.json +70 -0
  233. lutopia/palettes/linear_tritanopic_kcw_5_95_c22.json +150 -0
  234. lutopia/palettes/linear_tritanopic_krjcw_5_95_c24.json +230 -0
  235. lutopia/palettes/linear_tritanopic_krjcw_5_98_c46.json +318 -0
  236. lutopia/palettes/linear_tritanopic_krw_5_95_c46.json +150 -0
  237. lutopia/palettes/linear_wcmr_100_45_c42.json +142 -0
  238. lutopia/palettes/linear_worb_100_25_c53.json +190 -0
  239. lutopia/palettes/linear_wyor_100_45_c55.json +142 -0
  240. lutopia/palettes/magma.json +2054 -0
  241. lutopia/palettes/managua.json +2054 -0
  242. lutopia/palettes/nipy_spectral.json +238 -0
  243. lutopia/palettes/ocean.json +38 -0
  244. lutopia/palettes/okabe_ito.json +70 -0
  245. lutopia/palettes/oranges.json +78 -0
  246. lutopia/palettes/orrd.json +78 -0
  247. lutopia/palettes/paired.json +102 -0
  248. lutopia/palettes/pastel1.json +78 -0
  249. lutopia/palettes/pastel2.json +70 -0
  250. lutopia/palettes/pink.json +126 -0
  251. lutopia/palettes/piyg.json +102 -0
  252. lutopia/palettes/plasma.json +2054 -0
  253. lutopia/palettes/prgn.json +94 -0
  254. lutopia/palettes/prism.json +1838 -0
  255. lutopia/palettes/pubu.json +78 -0
  256. lutopia/palettes/pubugn.json +78 -0
  257. lutopia/palettes/puor.json +102 -0
  258. lutopia/palettes/purd.json +78 -0
  259. lutopia/palettes/purples.json +78 -0
  260. lutopia/palettes/r1.json +318 -0
  261. lutopia/palettes/r2.json +286 -0
  262. lutopia/palettes/r3.json +350 -0
  263. lutopia/palettes/r4.json +326 -0
  264. lutopia/palettes/rainbow.json +198 -0
  265. lutopia/palettes/rainbow4.json +326 -0
  266. lutopia/palettes/rainbow_bgyr_10_90_c83.json +326 -0
  267. lutopia/palettes/rainbow_bgyr_35_85_c72.json +286 -0
  268. lutopia/palettes/rainbow_bgyr_35_85_c73.json +286 -0
  269. lutopia/palettes/rainbow_bgyrm_35_85_c69.json +318 -0
  270. lutopia/palettes/rainbow_bgyrm_35_85_c71.json +270 -0
  271. lutopia/palettes/rdbu.json +102 -0
  272. lutopia/palettes/rdgy.json +102 -0
  273. lutopia/palettes/rdpu.json +78 -0
  274. lutopia/palettes/rdylbu.json +94 -0
  275. lutopia/palettes/rdylgn.json +102 -0
  276. lutopia/palettes/reds.json +78 -0
  277. lutopia/palettes/seismic.json +54 -0
  278. lutopia/palettes/set1.json +78 -0
  279. lutopia/palettes/set2.json +70 -0
  280. lutopia/palettes/set3.json +102 -0
  281. lutopia/palettes/spectral.json +110 -0
  282. lutopia/palettes/spring.json +22 -0
  283. lutopia/palettes/summer.json +22 -0
  284. lutopia/palettes/tab10.json +86 -0
  285. lutopia/palettes/tab20.json +166 -0
  286. lutopia/palettes/tab20b.json +166 -0
  287. lutopia/palettes/tab20c.json +166 -0
  288. lutopia/palettes/terrain.json +86 -0
  289. lutopia/palettes/turbo.json +2054 -0
  290. lutopia/palettes/twilight.json +502 -0
  291. lutopia/palettes/twilight_shifted.json +534 -0
  292. lutopia/palettes/vanimo.json +2054 -0
  293. lutopia/palettes/viridis.json +15 -0
  294. lutopia/palettes/winter.json +22 -0
  295. lutopia/palettes/wistia.json +46 -0
  296. lutopia/palettes/ylgn.json +78 -0
  297. lutopia/palettes/ylgnbu.json +78 -0
  298. lutopia/palettes/ylorbr.json +78 -0
  299. lutopia/palettes/ylorrd.json +78 -0
  300. lutopia/viewer.py +224 -0
  301. lutopia-0.2.0.dist-info/METADATA +223 -0
  302. lutopia-0.2.0.dist-info/RECORD +304 -0
  303. lutopia-0.2.0.dist-info/WHEEL +4 -0
  304. 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
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "name": "autumn",
3
+ "interpolation": "linear",
4
+ "anchors": [
5
+ [
6
+ 0.0,
7
+ [
8
+ 255,
9
+ 0,
10
+ 0
11
+ ]
12
+ ],
13
+ [
14
+ 1.0,
15
+ [
16
+ 255,
17
+ 255,
18
+ 0
19
+ ]
20
+ ]
21
+ ]
22
+ }