Create Palette extension

This commit is contained in:
Ricardo Matias
2019-11-18 10:11:26 +01:00
parent ca3d95087b
commit 9b691e04c4
8 changed files with 2366 additions and 1 deletions

View File

@@ -0,0 +1,34 @@
package org.openrndr.extra.palette
import org.openrndr.color.ColorRGBa
import org.openrndr.color.Linearity
// https://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef
internal fun getLuminance(color: ColorRGBa): Double = 0.2126 * color.r + 0.7152 * color.g + 0.0722 * color.b
// see http://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef
internal fun getContrast(colorA: ColorRGBa, colorB: ColorRGBa): Double {
val l1 = getLuminance(colorA)
val l2 = getLuminance(colorB)
return if (l1 > l2) (l1 + 0.05) / (l2 + 0.05) else (l2 + 0.05) / (l1 + 0.05);
}
// TODO(ricardomatias) Remove this when 0.3.36 is released
internal fun fromHex(hex: String): ColorRGBa {
val parsedHex = hex.replace("#", "")
val len = parsedHex.length
val mult = len / 3
val colors = (0..2).map { idx ->
var c = parsedHex.substring(idx * mult, (idx + 1) * mult)
c = if (len == 3) c + c else c
Integer.valueOf(c, 16)
}
val (r, g, b) = colors
return ColorRGBa(r / 255.0, g / 255.0, b / 255.0, 1.0, Linearity.SRGB)
}

View File

@@ -0,0 +1,220 @@
package org.openrndr.extra.palette
import mu.KotlinLogging
import com.google.gson.GsonBuilder
import org.openrndr.Extension
import org.openrndr.Keyboard
import org.openrndr.Program
import org.openrndr.extra.noise.Random
import org.openrndr.color.ColorRGBa
import org.openrndr.color.ColorRGBa.Companion.BLACK
import org.openrndr.color.ColorRGBa.Companion.GREEN
import org.openrndr.color.ColorRGBa.Companion.PINK
import org.openrndr.color.ColorRGBa.Companion.RED
import org.openrndr.color.ColorRGBa.Companion.WHITE
import org.openrndr.color.ColorRGBa.Companion.YELLOW
import org.openrndr.resourceUrl
import java.io.File
import java.net.URL
import kotlin.math.max
import kotlin.math.min
internal val logger = KotlinLogging.logger {}
internal typealias Colors = List<ColorRGBa>
data class Palette(
val background: ColorRGBa,
val foreground: ColorRGBa,
val colors: Colors,
val colors2: Colors
)
internal val defaultPalette: Palette = Palette(
BLACK,
PINK,
listOf(BLACK, PINK, YELLOW, RED, GREEN),
listOf(PINK, YELLOW, RED, GREEN)
)
internal fun getCollPath(n: String) = URL(resourceUrl("/org/openrndr/extra/palette/collections/collection-$n.json"))
class PaletteStudio(
loadDefault: Boolean = true,
val sortBy: SortBy = SortBy.NO_SORTING,
collection: Collections = Collections.ONE,
val colorCountConstraint: Int = 0
) : Extension {
var palettes: MutableList<MutableList<ColorRGBa>> = mutableListOf()
var palette: Palette = defaultPalette
private var paletteIndex: Int = 0
enum class SortBy {
NO_SORTING, DARKEST, BRIGHTEST
}
enum class Collections {
ONE, TWO, THREE
}
private val collectionsResource = mapOf(
Collections.ONE to getCollPath("1"),
Collections.TWO to getCollPath("2"),
Collections.THREE to getCollPath("3")
)
var background: ColorRGBa = defaultPalette.background
get() {
return palette.background
}
var foreground: ColorRGBa = defaultPalette.foreground
get() {
return palette.foreground
}
var colors: Colors = defaultPalette.colors
get() {
return palette.colors
}
var colors2: Colors = defaultPalette.colors2
get() {
return palette.colors2
}
init {
if (loadDefault) {
loadCollection(collection)
}
}
private fun loadCollection(newCollection: Collections) {
val collectionPath: URL = collectionsResource[newCollection]!!
palettes = mutableListOf()
loadFromURL(collectionPath)
val choice = Random.pick(palettes)
palette = createPalette(choice)
paletteIndex = palettes.indexOf(choice)
}
private fun load(contents: String) {
try {
val gson = GsonBuilder().create()
val clipData = gson.fromJson(
contents, Array<Array<String>>::class.java
).toList()
for (p in clipData) {
val palette = mutableListOf<ColorRGBa>()
for (colorStr in p.toList()) {
val colorInt = fromHex(colorStr)
palette.add(colorInt)
}
palettes.add(palette)
}
} catch (ex: Exception) {
logger.error(ex) { "Error: Could not load palettes" }
logger.info { "Only JSON files with Array<Array<String>> structure can be loaded using this method" }
}
}
private fun loadFromURL(url: URL): Unit = load(url.readText())
private fun createPalette(colors: MutableList<ColorRGBa>) : Palette {
when(sortBy) {
SortBy.DARKEST -> {
val darkest = Comparator<ColorRGBa> { c1: ColorRGBa, c2: ColorRGBa -> (getLuminance(c1) - getLuminance(c2)).toInt() }
colors.sortWith(darkest)
}
SortBy.BRIGHTEST -> {
val brightest = Comparator<ColorRGBa> { c1: ColorRGBa, c2: ColorRGBa -> (getLuminance(c2) - getLuminance(c1)).toInt() }
colors.sortWith(brightest)
}
SortBy.NO_SORTING -> {}
}
val background = colors.first()
val foreground = colors
.takeLast(colors.size - 1)
.map { getContrast(background, it) to it }
.maxBy { it.first }!!
.second
var constraint = colors.size
var constraint2 = colors.size
if (colorCountConstraint > 0 && colorCountConstraint < colors.size) {
constraint = colorCountConstraint
constraint2 = colorCountConstraint + 1
}
val colors1 = colors.slice(0 until constraint)
val colors2 = colors.slice(1 until constraint2)
return Palette(background, foreground, colors1, colors2)
}
fun loadExternal(filePath: String) {
palettes = mutableListOf()
load(File(filePath).readText())
val choice = Random.pick(palettes)
palette = createPalette(choice)
paletteIndex = palettes.indexOf(choice)
}
fun select(index: Int = 0) {
paletteIndex = max(min(index, palettes.size - 1), 0)
palette = createPalette(palettes[paletteIndex])
}
fun getIndex(): Int {
return paletteIndex
}
fun randomize() {
palette = createPalette(Random.pick(palette.colors, count = palette.colors.size))
}
fun randomPalette() {
val comparison = palette.colors.toMutableList()
val colors= Random.pick(palettes, comparison) as MutableList<ColorRGBa>
paletteIndex = palettes.indexOf(colors)
palette = createPalette(colors)
}
fun changeCollection(newCollection: Collections) {
loadCollection(newCollection)
}
private fun registerKeybindings(keyboard: Keyboard) {
keyboard.keyDown.listen {
if (it.name == "l") {
randomPalette()
}
if (it.name == "k") {
randomize()
}
}
}
/*
* EXTENSION
*/
override var enabled: Boolean = true
override fun setup(program: Program) {
registerKeybindings(program.keyboard)
}
}

View File

@@ -0,0 +1,602 @@
[
[
"#222831",
"#393e46",
"#00adb5",
"#eeeeee"
],
[
"#f9ed69",
"#f08a5d",
"#b83b5e",
"#6a2c70"
],
[
"#f38181",
"#fce38a",
"#eaffd0",
"#95e1d3"
],
[
"#08d9d6",
"#252a34",
"#ff2e63",
"#eaeaea"
],
[
"#364f6b",
"#3fc1c9",
"#f5f5f5",
"#fc5185"
],
[
"#a8d8ea",
"#aa96da",
"#fcbad3",
"#ffffd2"
],
[
"#e3fdfd",
"#cbf1f5",
"#a6e3e9",
"#71c9ce"
],
[
"#e4f9f5",
"#30e3ca",
"#11999e",
"#40514e"
],
[
"#ffc7c7",
"#ffe2e2",
"#f6f6f6",
"#8785a2"
],
[
"#48466d",
"#3d84a8",
"#46cdcf",
"#abedd8"
],
[
"#f9f7f7",
"#dbe2ef",
"#3f72af",
"#112d4e"
],
[
"#00b8a9",
"#f8f3d4",
"#f6416c",
"#ffde7d"
],
[
"#2b2e4a",
"#e84545",
"#903749",
"#53354a"
],
[
"#e23e57",
"#88304e",
"#522546",
"#311d3f"
],
[
"#212121",
"#323232",
"#0d7377",
"#14ffec"
],
[
"#ffcfdf",
"#fefdca",
"#e0f9b5",
"#a5dee5"
],
[
"#ffb6b9",
"#fae3d9",
"#bbded6",
"#61c0bf"
],
[
"#a8e6cf",
"#dcedc1",
"#ffd3b6",
"#ffaaa5"
],
[
"#defcf9",
"#cadefc",
"#c3bef0",
"#cca8e9"
],
[
"#ffc8c8",
"#ff9999",
"#444f5a",
"#3e4149"
],
[
"#3ec1d3",
"#f6f7d7",
"#ff9a00",
"#ff165d"
],
[
"#6fe7dd",
"#3490de",
"#6639a6",
"#521262"
],
[
"#f67280",
"#c06c84",
"#6c5b7b",
"#355c7d"
],
[
"#2d4059",
"#ea5455",
"#f07b3f",
"#ffd460"
],
[
"#8ef6e4",
"#9896f1",
"#d59bf6",
"#edb1f1"
],
[
"#bad7df",
"#ffe2e2",
"#f6f6f6",
"#99ddcc"
],
[
"#384259",
"#f73859",
"#7ac7c4",
"#c4edde"
],
[
"#a1eafb",
"#fdfdfd",
"#ffcef3",
"#cabbe9"
],
[
"#dcedc2",
"#ffd3b5",
"#ffaaa6",
"#ff8c94"
],
[
"#303841",
"#00adb5",
"#eeeeee",
"#ff5722"
],
[
"#2a363b",
"#e84a5f",
"#ff847c",
"#fecea8"
],
[
"#f85f73",
"#fbe8d3",
"#928a97",
"#283c63"
],
[
"#f0f5f9",
"#c9d6df",
"#52616b",
"#1e2022"
],
[
"#07689f",
"#a2d5f2",
"#fafafa",
"#ff7e67"
],
[
"#00e0ff",
"#74f9ff",
"#a6fff2",
"#e8ffe8"
],
[
"#cefff1",
"#ace7ef",
"#a6acec",
"#a56cc1"
],
[
"#7effdb",
"#b693fe",
"#8c82fc",
"#ff9de2"
],
[
"#a9eee6",
"#fefaec",
"#f9a1bc",
"#625772"
],
[
"#15b7b9",
"#10ddc2",
"#f5f5f5",
"#f57170"
],
[
"#dff4f3",
"#dde7f2",
"#b9bbdf",
"#878ecd"
],
[
"#ebfffa",
"#c6fce5",
"#6ef3d6",
"#0dceda"
],
[
"#0c056d",
"#590d82",
"#b61aae",
"#f25d9c"
],
[
"#f7fbfc",
"#d6e6f2",
"#b9d7ea",
"#769fcd"
],
[
"#a8e6cf",
"#fdffab",
"#ffd3b6",
"#ffaaa5"
],
[
"#1fab89",
"#62d2a2",
"#9df3c4",
"#d7fbe8"
],
[
"#303a52",
"#574b90",
"#9e579d",
"#fc85ae"
],
[
"#99e1e5",
"#f3e8cb",
"#f2c6b4",
"#fbafaf"
],
[
"#d4a5a5",
"#ffecda",
"#f9ffea",
"#a6d0e4"
],
[
"#303841",
"#3a4750",
"#d72323",
"#eeeeee"
],
[
"#fcefee",
"#fccde2",
"#fc5c9c",
"#c5e3f6"
],
[
"#fef0ff",
"#d6c8ff",
"#c79ecf",
"#7e6bc4"
],
[
"#393232",
"#4d4545",
"#8d6262",
"#ed8d8d"
],
[
"#fffcca",
"#55e9bc",
"#11d3bc",
"#537780"
],
[
"#283149",
"#404b69",
"#f73859",
"#dbedf3"
],
[
"#11cbd7",
"#c6f1e7",
"#f0fff3",
"#fa4659"
],
[
"#27296d",
"#5e63b6",
"#a393eb",
"#f5c7f7"
],
[
"#fafafa",
"#e8f1f5",
"#005691",
"#004a7c"
],
[
"#155263",
"#ff6f3c",
"#ff9a3c",
"#ffc93c"
],
[
"#ff6464",
"#ff8264",
"#ffaa64",
"#fff5a5"
],
[
"#e0fcff",
"#90f2ff",
"#6eb6ff",
"#7098da"
],
[
"#c7f5fe",
"#fcc8f8",
"#eab4f8",
"#f3f798"
],
[
"#233142",
"#455d7a",
"#f95959",
"#e3e3e3"
],
[
"#ffa5a5",
"#ffffc2",
"#c8e7ed",
"#bfcfff"
],
[
"#4d606e",
"#3fbac2",
"#d3d4d8",
"#f5f5f5"
],
[
"#a9eee6",
"#fefaec",
"#f38181",
"#625772"
],
[
"#3a0088",
"#930077",
"#e61c5d",
"#ffbd39"
],
[
"#adf7d1",
"#95e8d7",
"#7dace4",
"#8971d0"
],
[
"#9ddcdc",
"#fff4e1",
"#ffebb7",
"#e67a7a"
],
[
"#66bfbf",
"#eaf6f6",
"#fcfefe",
"#f76b8a"
],
[
"#c7f3ff",
"#fdc7ff",
"#ffdcf5",
"#f2f4c3"
],
[
"#00204a",
"#005792",
"#00bbf0",
"#d9faff"
],
[
"#c8f4de",
"#a4e5d9",
"#66c6ba",
"#649dad"
],
[
"#253b6e",
"#1f5f8b",
"#1891ac",
"#d2ecf9"
],
[
"#a7efe9",
"#7fdfd4",
"#fbe1b6",
"#fbac91"
],
[
"#2a363b",
"#e84a5f",
"#ff847b",
"#fecea8"
],
[
"#f5eee6",
"#f3d7ca",
"#e6a4b4",
"#c86b85"
],
[
"#f8b595",
"#f67280",
"#c06c84",
"#6c5b7c"
],
[
"#ffd9e8",
"#de95ba",
"#7f4a88",
"#4a266a"
],
[
"#700961",
"#b80d57",
"#e03e36",
"#ff7c38"
],
[
"#dff5f2",
"#87dfd6",
"#46b7b9",
"#2f9296"
],
[
"#f69d9d",
"#ffeab6",
"#fdffba",
"#c0ffc2"
],
[
"#35477d",
"#6c5b7b",
"#c06c84",
"#f67280"
],
[
"#fbf0f0",
"#dfd3d3",
"#b8b0b0",
"#7c7575"
],
[
"#f6f6f6",
"#d6e4f0",
"#1e56a0",
"#163172"
],
[
"#fb929e",
"#ffdfdf",
"#fff6f6",
"#aedefc"
],
[
"#e4fffe",
"#a4f6f9",
"#ff99fe",
"#ba52ed"
],
[
"#071a52",
"#086972",
"#17b978",
"#a7ff83"
],
[
"#a1d9ff",
"#ca82f8",
"#ed93cb",
"#f2bbbb"
],
[
"#7a08fa",
"#a82ffc",
"#c264fe",
"#f8ecfd"
],
[
"#e7e6e1",
"#f7f6e7",
"#c1c0b9",
"#537791"
],
[
"#222831",
"#393e46",
"#00adb5",
"#00fff5"
],
[
"#f06868",
"#fab57a",
"#edf798",
"#80d6ff"
],
[
"#f4f7f7",
"#aacfd0",
"#79a8a9",
"#1f4e5f"
],
[
"#a6e4e7",
"#f9f9f9",
"#ebcbae",
"#8f8787"
],
[
"#fa4659",
"#feffe4",
"#a3de83",
"#2eb872"
],
[
"#f47c7c",
"#f7f48b",
"#a1de93",
"#70a1d7"
],
[
"#ffffc1",
"#ffd2a5",
"#ffa8b8",
"#d988bc"
],
[
"#f8b195",
"#f67280",
"#c06c84",
"#355c7d"
],
[
"#f4f7f7",
"#aacfd0",
"#5da0a2",
"#34495e"
],
[
"#29c6cd",
"#f6e4c4",
"#fea386",
"#f19584"
]
]

View File

@@ -0,0 +1,695 @@
[
[
"#69d2e7",
"#a7dbd8",
"#e0e4cc",
"#f38630",
"#fa6900"
],
[
"#fe4365",
"#fc9d9a",
"#f9cdad",
"#c8c8a9",
"#83af9b"
],
[
"#ecd078",
"#d95b43",
"#c02942",
"#542437",
"#53777a"
],
[
"#556270",
"#4ecdc4",
"#c7f464",
"#ff6b6b",
"#c44d58"
],
[
"#774f38",
"#e08e79",
"#f1d4af",
"#ece5ce",
"#c5e0dc"
],
[
"#e8ddcb",
"#cdb380",
"#036564",
"#033649",
"#031634"
],
[
"#490a3d",
"#bd1550",
"#e97f02",
"#f8ca00",
"#8a9b0f"
],
[
"#594f4f",
"#547980",
"#45ada8",
"#9de0ad",
"#e5fcc2"
],
[
"#00a0b0",
"#6a4a3c",
"#cc333f",
"#eb6841",
"#edc951"
],
[
"#e94e77",
"#d68189",
"#c6a49a",
"#c6e5d9",
"#f4ead5"
],
[
"#3fb8af",
"#7fc7af",
"#dad8a7",
"#ff9e9d",
"#ff3d7f"
],
[
"#d9ceb2",
"#948c75",
"#d5ded9",
"#7a6a53",
"#99b2b7"
],
[
"#ffffff",
"#cbe86b",
"#f2e9e1",
"#1c140d",
"#cbe86b"
],
[
"#efffcd",
"#dce9be",
"#555152",
"#2e2633",
"#99173c"
],
[
"#343838",
"#005f6b",
"#008c9e",
"#00b4cc",
"#00dffc"
],
[
"#413e4a",
"#73626e",
"#b38184",
"#f0b49e",
"#f7e4be"
],
[
"#ff4e50",
"#fc913a",
"#f9d423",
"#ede574",
"#e1f5c4"
],
[
"#99b898",
"#fecea8",
"#ff847c",
"#e84a5f",
"#2a363b"
],
[
"#655643",
"#80bca3",
"#f6f7bd",
"#e6ac27",
"#bf4d28"
],
[
"#00a8c6",
"#40c0cb",
"#f9f2e7",
"#aee239",
"#8fbe00"
],
[
"#351330",
"#424254",
"#64908a",
"#e8caa4",
"#cc2a41"
],
[
"#554236",
"#f77825",
"#d3ce3d",
"#f1efa5",
"#60b99a"
],
[
"#5d4157",
"#838689",
"#a8caba",
"#cad7b2",
"#ebe3aa"
],
[
"#8c2318",
"#5e8c6a",
"#88a65e",
"#bfb35a",
"#f2c45a"
],
[
"#fad089",
"#ff9c5b",
"#f5634a",
"#ed303c",
"#3b8183"
],
[
"#ff4242",
"#f4fad2",
"#d4ee5e",
"#e1edb9",
"#f0f2eb"
],
[
"#f8b195",
"#f67280",
"#c06c84",
"#6c5b7b",
"#355c7d"
],
[
"#d1e751",
"#ffffff",
"#000000",
"#4dbce9",
"#26ade4"
],
[
"#1b676b",
"#519548",
"#88c425",
"#bef202",
"#eafde6"
],
[
"#5e412f",
"#fcebb6",
"#78c0a8",
"#f07818",
"#f0a830"
],
[
"#bcbdac",
"#cfbe27",
"#f27435",
"#f02475",
"#3b2d38"
],
[
"#452632",
"#91204d",
"#e4844a",
"#e8bf56",
"#e2f7ce"
],
[
"#eee6ab",
"#c5bc8e",
"#696758",
"#45484b",
"#36393b"
],
[
"#f0d8a8",
"#3d1c00",
"#86b8b1",
"#f2d694",
"#fa2a00"
],
[
"#2a044a",
"#0b2e59",
"#0d6759",
"#7ab317",
"#a0c55f"
],
[
"#f04155",
"#ff823a",
"#f2f26f",
"#fff7bd",
"#95cfb7"
],
[
"#b9d7d9",
"#668284",
"#2a2829",
"#493736",
"#7b3b3b"
],
[
"#b3cc57",
"#ecf081",
"#ffbe40",
"#ef746f",
"#ab3e5b"
],
[
"#bbbb88",
"#ccc68d",
"#eedd99",
"#eec290",
"#eeaa88"
],
[
"#a3a948",
"#edb92e",
"#f85931",
"#ce1836",
"#009989"
],
[
"#aab3ab",
"#c4cbb7",
"#ebefc9",
"#eee0b7",
"#e8caaf"
],
[
"#300030",
"#480048",
"#601848",
"#c04848",
"#f07241"
],
[
"#e8d5b7",
"#0e2430",
"#fc3a51",
"#f5b349",
"#e8d5b9"
],
[
"#67917a",
"#170409",
"#b8af03",
"#ccbf82",
"#e33258"
],
[
"#607848",
"#789048",
"#c0d860",
"#f0f0d8",
"#604848"
],
[
"#b6d8c0",
"#c8d9bf",
"#dadabd",
"#ecdbbc",
"#fedcba"
],
[
"#ab526b",
"#bca297",
"#c5ceae",
"#f0e2a4",
"#f4ebc3"
],
[
"#a8e6ce",
"#dcedc2",
"#ffd3b5",
"#ffaaa6",
"#ff8c94"
],
[
"#3e4147",
"#fffedf",
"#dfba69",
"#5a2e2e",
"#2a2c31"
],
[
"#fc354c",
"#29221f",
"#13747d",
"#0abfbc",
"#fcf7c5"
],
[
"#cc0c39",
"#e6781e",
"#c8cf02",
"#f8fcc1",
"#1693a7"
],
[
"#a7c5bd",
"#e5ddcb",
"#eb7b59",
"#cf4647",
"#524656"
],
[
"#1c2130",
"#028f76",
"#b3e099",
"#ffeaad",
"#d14334"
],
[
"#edebe6",
"#d6e1c7",
"#94c7b6",
"#403b33",
"#d3643b"
],
[
"#dad6ca",
"#1bb0ce",
"#4f8699",
"#6a5e72",
"#563444"
],
[
"#5c323e",
"#a82743",
"#e15e32",
"#c0d23e",
"#e5f04c"
],
[
"#fdf1cc",
"#c6d6b8",
"#987f69",
"#e3ad40",
"#fcd036"
],
[
"#230f2b",
"#f21d41",
"#ebebbc",
"#bce3c5",
"#82b3ae"
],
[
"#b9d3b0",
"#81bda4",
"#b28774",
"#f88f79",
"#f6aa93"
],
[
"#3a111c",
"#574951",
"#83988e",
"#bcdea5",
"#e6f9bc"
],
[
"#5e3929",
"#cd8c52",
"#b7d1a3",
"#dee8be",
"#fcf7d3"
],
[
"#1c0113",
"#6b0103",
"#a30006",
"#c21a01",
"#f03c02"
],
[
"#000000",
"#9f111b",
"#b11623",
"#292c37",
"#cccccc"
],
[
"#382f32",
"#ffeaf2",
"#fcd9e5",
"#fbc5d8",
"#f1396d"
],
[
"#e3dfba",
"#c8d6bf",
"#93ccc6",
"#6cbdb5",
"#1a1f1e"
],
[
"#f6f6f6",
"#e8e8e8",
"#333333",
"#990100",
"#b90504"
],
[
"#1b325f",
"#9cc4e4",
"#e9f2f9",
"#3a89c9",
"#f26c4f"
],
[
"#a1dbb2",
"#fee5ad",
"#faca66",
"#f7a541",
"#f45d4c"
],
[
"#951f2b",
"#f5f4d7",
"#e0dfb1",
"#a5a36c",
"#535233"
],
[
"#5e9fa3",
"#dcd1b4",
"#fab87f",
"#f87e7b",
"#b05574"
],
[
"#c1b398",
"#605951",
"#fbeec2",
"#61a6ab",
"#accec0"
],
[
"#8dccad",
"#988864",
"#fea6a2",
"#f9d6ac",
"#ffe9af"
],
[
"#2d2d29",
"#215a6d",
"#3ca2a2",
"#92c7a3",
"#dfece6"
],
[
"#413d3d",
"#040004",
"#c8ff00",
"#fa023c",
"#4b000f"
],
[
"#ffefd3",
"#fffee4",
"#d0ecea",
"#9fd6d2",
"#8b7a5e"
],
[
"#eff3cd",
"#b2d5ba",
"#61ada0",
"#248f8d",
"#605063"
],
[
"#f8edd1",
"#d88a8a",
"#474843",
"#9d9d93",
"#c5cfc6"
],
[
"#cfffdd",
"#b4dec1",
"#5c5863",
"#a85163",
"#ff1f4c"
],
[
"#ff003c",
"#ff8a00",
"#fabe28",
"#88c100",
"#00c176"
],
[
"#9dc9ac",
"#fffec7",
"#f56218",
"#ff9d2e",
"#919167"
],
[
"#046d8b",
"#309292",
"#2fb8ac",
"#93a42a",
"#ecbe13"
],
[
"#a8a7a7",
"#cc527a",
"#e8175d",
"#474747",
"#363636"
],
[
"#4e395d",
"#827085",
"#8ebe94",
"#ccfc8e",
"#dc5b3e"
],
[
"#f38a8a",
"#55443d",
"#a0cab5",
"#cde9ca",
"#f1edd0"
],
[
"#a70267",
"#f10c49",
"#fb6b41",
"#f6d86b",
"#339194"
],
[
"#4d3b3b",
"#de6262",
"#ffb88c",
"#ffd0b3",
"#f5e0d3"
],
[
"#4e4d4a",
"#353432",
"#94ba65",
"#2790b0",
"#2b4e72"
],
[
"#ffedbf",
"#f7803c",
"#f54828",
"#2e0d23",
"#f8e4c1"
],
[
"#0ca5b0",
"#4e3f30",
"#fefeeb",
"#f8f4e4",
"#a5b3aa"
],
[
"#fffbb7",
"#a6f6af",
"#66b6ab",
"#5b7c8d",
"#4f2958"
],
[
"#edf6ee",
"#d1c089",
"#b3204d",
"#412e28",
"#151101"
],
[
"#9d7e79",
"#ccac95",
"#9a947c",
"#748b83",
"#5b756c"
],
[
"#fcfef5",
"#e9ffe1",
"#cdcfb7",
"#d6e6c3",
"#fafbe3"
],
[
"#9cddc8",
"#bfd8ad",
"#ddd9ab",
"#f7af63",
"#633d2e"
],
[
"#aaff00",
"#ffaa00",
"#ff00aa",
"#aa00ff",
"#00aaff"
],
[
"#30261c",
"#403831",
"#36544f",
"#1f5f61",
"#0b8185"
],
[
"#d1313d",
"#e5625c",
"#f9bf76",
"#8eb2c5",
"#615375"
],
[
"#805841",
"#dcf7f3",
"#fffcdd",
"#ffd8d8",
"#f5a2a2"
],
[
"#73c8a9",
"#dee1b6",
"#e1b866",
"#bd5532",
"#373b44"
]
]

View File

@@ -0,0 +1,702 @@
[
[
"#247ba0",
"#70c1b3",
"#b2dbbf",
"#f3ffbd",
"#ff1654"
],
[
"#05668d",
"#028090",
"#00a896",
"#02c39a",
"#f0f3bd"
],
[
"#011627",
"#fdfffc",
"#2ec4b6",
"#e71d36",
"#ff9f1c"
],
[
"#e63946",
"#f1faee",
"#a8dadc",
"#457b9d",
"#1d3557"
],
[
"#ffcdb2",
"#ffb4a2",
"#e5989b",
"#b5838d",
"#6d6875"
],
[
"#50514f",
"#f25f5c",
"#ffe066",
"#247ba0",
"#70c1b3"
],
[
"#264653",
"#2a9d8f",
"#e9c46a",
"#f4a261",
"#e76f51"
],
[
"#1a535c",
"#4ecdc4",
"#f7fff7",
"#ff6b6b",
"#ffe66d"
],
[
"#2b2d42",
"#8d99ae",
"#edf2f4",
"#ef233c",
"#d90429"
],
[
"#ffffff",
"#84dcc6",
"#a5ffd6",
"#ffa69e",
"#ff686b"
],
[
"#ffffff",
"#00171f",
"#003459",
"#007ea7",
"#00a8e8"
],
[
"#d8e2dc",
"#ffe5d9",
"#ffcad4",
"#f4acb7",
"#9d8189"
],
[
"#fe938c",
"#e6b89c",
"#ead2ac",
"#9cafb7",
"#4281a4"
],
[
"#5bc0eb",
"#fde74c",
"#9bc53d",
"#e55934",
"#fa7921"
],
[
"#ed6a5a",
"#f4f1bb",
"#9bc1bc",
"#5ca4a9",
"#e6ebe0"
],
[
"#ef476f",
"#ffd166",
"#06d6a0",
"#118ab2",
"#073b4c"
],
[
"#0b132b",
"#1c2541",
"#3a506b",
"#5bc0be",
"#6fffe9"
],
[
"#bce784",
"#5dd39e",
"#348aa7",
"#525174",
"#513b56"
],
[
"#003049",
"#d62828",
"#f77f00",
"#fcbf49",
"#eae2b7"
],
[
"#000000",
"#14213d",
"#fca311",
"#e5e5e5",
"#ffffff"
],
[
"#9c89b8",
"#f0a6ca",
"#efc3e6",
"#f0e6ef",
"#b8bedd"
],
[
"#e8e9f3",
"#cecece",
"#a6a6a8",
"#272635",
"#b1e5f2"
],
[
"#defffc",
"#e2e4f6",
"#e7c8dd",
"#dbafc1",
"#86626e"
],
[
"#a31621",
"#fcf7f8",
"#ced3dc",
"#4e8098",
"#90c2e7"
],
[
"#04080f",
"#507dbc",
"#a1c6ea",
"#bbd1ea",
"#dae3e5"
],
[
"#b8b8d1",
"#5b5f97",
"#ffc145",
"#fffffb",
"#ff6b6c"
],
[
"#2a2b2a",
"#706c61",
"#f8f4e3",
"#e5446d",
"#ff8966"
],
[
"#eae0cc",
"#c9ada1",
"#a0a083",
"#798478",
"#4d6a6d"
],
[
"#092327",
"#0b5351",
"#00a9a5",
"#4e8098",
"#90c2e7"
],
[
"#fcd0a1",
"#b1b695",
"#53917e",
"#63535b",
"#6d1a36"
],
[
"#161925",
"#23395b",
"#406e8e",
"#8ea8c3",
"#cbf7ed"
],
[
"#124e78",
"#f0f0c9",
"#f2bb05",
"#d74e09",
"#6e0e0a"
],
[
"#bbdef0",
"#00a6a6",
"#efca08",
"#f49f0a",
"#f08700"
],
[
"#ef798a",
"#f7a9a8",
"#7d82b8",
"#613f75",
"#e5c3d1"
],
[
"#75dddd",
"#508991",
"#172a3a",
"#004346",
"#09bc8a"
],
[
"#363537",
"#ef2d56",
"#ed7d3a",
"#8cd867",
"#2fbf71"
],
[
"#8c1c13",
"#bf4342",
"#e7d7c1",
"#a78a7f",
"#735751"
],
[
"#fb3640",
"#605f5e",
"#1d3461",
"#1f487e",
"#247ba0"
],
[
"#eac435",
"#345995",
"#e40066",
"#03cea4",
"#fb4d3d"
],
[
"#f1e8b8",
"#f9e784",
"#e58f65",
"#d05353",
"#191919"
],
[
"#1a1423",
"#3d314a",
"#684756",
"#96705b",
"#ab8476"
],
[
"#4c5760",
"#93a8ac",
"#d7ceb2",
"#a59e8c",
"#66635b"
],
[
"#292f36",
"#4ecdc4",
"#f7fff7",
"#ff6b6b",
"#ffe66d"
],
[
"#540d6e",
"#ee4266",
"#ffd23f",
"#3bceac",
"#0ead69"
],
[
"#c9cba3",
"#ffe1a8",
"#e26d5c",
"#723d46",
"#472d30"
],
[
"#ffa69e",
"#faf3dd",
"#b8f2e6",
"#aed9e0",
"#5e6472"
],
[
"#1b998b",
"#2d3047",
"#fffd82",
"#ff9b71",
"#e84855"
],
[
"#1be7ff",
"#6eeb83",
"#e4ff1a",
"#e8aa14",
"#ff5714"
],
[
"#f0b67f",
"#fe5f55",
"#d6d1b1",
"#c7efcf",
"#eef5db"
],
[
"#d3f8e2",
"#e4c1f9",
"#f694c1",
"#ede7b1",
"#a9def9"
],
[
"#fbfbf2",
"#e5e6e4",
"#cfd2cd",
"#a6a2a2",
"#847577"
],
[
"#6699cc",
"#fff275",
"#ff8c42",
"#ff3c38",
"#a23e48"
],
[
"#f8ffe5",
"#06d6a0",
"#1b9aaa",
"#ef476f",
"#ffc43d"
],
[
"#220901",
"#621708",
"#941b0c",
"#bc3908",
"#f6aa1c"
],
[
"#e0fbfc",
"#c2dfe3",
"#9db4c0",
"#5c6b73",
"#253237"
],
[
"#353535",
"#3c6e71",
"#ffffff",
"#d9d9d9",
"#284b63"
],
[
"#2d3142",
"#bfc0c0",
"#ffffff",
"#ef8354",
"#4f5d75"
],
[
"#ff5e5b",
"#d8d8d8",
"#ffffea",
"#00cecb",
"#ffed66"
],
[
"#ffbe0b",
"#fb5607",
"#ff006e",
"#8338ec",
"#3a86ff"
],
[
"#b8d8ba",
"#d9dbbc",
"#fcddbc",
"#ef959d",
"#69585f"
],
[
"#0b132b",
"#1c2541",
"#3a506b",
"#5bc0be",
"#ffffff"
],
[
"#faf3dd",
"#c8d5b9",
"#8fc0a9",
"#68b0ab",
"#4a7c59"
],
[
"#f4f1de",
"#e07a5f",
"#3d405b",
"#81b29a",
"#f2cc8f"
],
[
"#edeec9",
"#dde7c7",
"#bfd8bd",
"#98c9a3",
"#77bfa3"
],
[
"#64a6bd",
"#90a8c3",
"#ada7c9",
"#d7b9d5",
"#f4cae0"
],
[
"#4c5454",
"#ff715b",
"#ffffff",
"#1ea896",
"#523f38"
],
[
"#495867",
"#577399",
"#bdd5ea",
"#f7f7ff",
"#fe5f55"
],
[
"#ff4e00",
"#8ea604",
"#f5bb00",
"#ec9f05",
"#bf3100"
],
[
"#36213e",
"#554971",
"#63768d",
"#8ac6d0",
"#b8f3ff"
],
[
"#a9e5bb",
"#fcf6b1",
"#f7b32b",
"#f72c25",
"#2d1e2f"
],
[
"#bfc3ba",
"#a9aca9",
"#60495a",
"#3f3244",
"#2f2235"
],
[
"#fe5f55",
"#f0b67f",
"#d6d1b1",
"#c7efcf",
"#eef5db"
],
[
"#033f63",
"#28666e",
"#7c9885",
"#b5b682",
"#fedc97"
],
[
"#0d1321",
"#1d2d44",
"#3e5c76",
"#748cab",
"#f0ebd8"
],
[
"#773344",
"#e3b5a4",
"#f5e9e2",
"#0b0014",
"#d44d5c"
],
[
"#52489c",
"#4062bb",
"#59c3c3",
"#ebebeb",
"#f45b69"
],
[
"#283d3b",
"#197278",
"#edddd4",
"#c44536",
"#772e25"
],
[
"#000000",
"#2f4550",
"#586f7c",
"#b8dbd9",
"#f4f4f9"
],
[
"#565264",
"#706677",
"#a6808c",
"#ccb7ae",
"#d6cfcb"
],
[
"#4f000b",
"#720026",
"#ce4257",
"#ff7f51",
"#ff9b54"
],
[
"#fcfcfc",
"#f7567c",
"#fffae3",
"#99e1d9",
"#5d576b"
],
[
"#d7263d",
"#f46036",
"#2e294e",
"#1b998b",
"#c5d86d"
],
[
"#fffcf2",
"#ccc5b9",
"#403d39",
"#252422",
"#eb5e28"
],
[
"#0fa3b1",
"#d9e5d6",
"#eddea4",
"#f7a072",
"#ff9b42"
],
[
"#ff6700",
"#ebebeb",
"#c0c0c0",
"#3a6ea5",
"#004e98"
],
[
"#dd6e42",
"#e8dab2",
"#4f6d7a",
"#c0d6df",
"#eaeaea"
],
[
"#102542",
"#f87060",
"#cdd7d6",
"#b3a394",
"#ffffff"
],
[
"#320a28",
"#511730",
"#8e443d",
"#cb9173",
"#e0d68a"
],
[
"#0a1128",
"#001f54",
"#034078",
"#1282a2",
"#fefcfb"
],
[
"#ffc09f",
"#ffee93",
"#fcf5c7",
"#a0ced9",
"#adf7b6"
],
[
"#086788",
"#07a0c3",
"#f0c808",
"#fff1d0",
"#dd1c1a"
],
[
"#97f9f9",
"#a4def9",
"#c1e0f7",
"#cfbae1",
"#c59fc9"
],
[
"#ffe74c",
"#ff5964",
"#ffffff",
"#38618c",
"#35a7ff"
],
[
"#eca400",
"#eaf8bf",
"#006992",
"#27476e",
"#001d4a"
],
[
"#0d0630",
"#18314f",
"#384e77",
"#8bbeb2",
"#e6f9af"
],
[
"#272727",
"#fed766",
"#009fb7",
"#696773",
"#eff1f3"
],
[
"#533a71",
"#6184d8",
"#50c5b7",
"#9cec5b",
"#f0f465"
],
[
"#3a2e39",
"#1e555c",
"#f4d8cd",
"#edb183",
"#f15152"
],
[
"#ddd8c4",
"#a3c9a8",
"#84b59f",
"#69a297",
"#50808e"
],
[
"#11151c",
"#212d40",
"#364156",
"#7d4e57",
"#d66853"
]
]