orx-palette
Collections of color palettes and tools for interacting with them.
Find demos in the demo folder.
ColorBrewer2
A collection of color palettes based on the research of Dr. Cynthia Brewer. Explore them live at colorbrewer2.org.
Each Palette has between 3 and 11 colors.
Use colorBrewer2Palettes() to query and obtain a list of ColorBrewer2Palette instances.
// all palettes
val palettes = colorBrewer2Palettes()
// palettes with 5 colors
val palettes = colorBrewer2Palettes(numberOfColors = 5)
// palettes of type Sequential
val palettes = colorBrewer2Palettes(palettetype = ColorBrewer2Type.Sequential)
Once we have some palettes, we can pick one and use its colors:
palettes.first().colors.forEachIndexed { i, color ->
drawer.fill = color
drawer.circle(drawer.bounds.center, 300.0 - i * 40.0)
}
Palette Studio
A class to load palette collections from JSON files, load random palettes and sort colors. JVM only.
Usage
val paletteStudio = PaletteStudio(
loadDefault = true, // Loads the first collection of palettes. [default -> true]
sortBy = PaletteStudio.SortBy.DARKEST, // Sorts the colors by luminance. [default -> PaletteStudio.SortBy.NO_SORTING]
collection = PaletteStudio.Collections.TWO, // Chooses which collection to load [default -> Collections.ONE]
colorCountConstraint = 3 // Constraints the number of colors in the palette [default -> 0]
)
// The choice of the background and foreground colors is based on contrast ratios
drawer.background(paletteStudio.background)
drawer.stroke = paletteStudio.foreground
val randomPaletteColor = Random.pick(paletteStudio.colors!!)
val randomColorExcludingBackground = Random.pick(paletteStudio.colors2!!)
// grabs a random palette from the collection
paletteStudio.randomPalette()
// randomizes the order of the colors in the palette
paletteStudio.randomize()
// changes the collection of palettes
paletteStudio.loadCollection(PaletteStudio.Collections.TWO)
// load your own from a JSON file with a structure of Array<Array<String>>
paletteStudio.loadExternal("data/palette-autumn.json")
Keybindings
Keybindings for getting a random palette (l) and randomizing (k) one can be set easily by declaring inside the program:
val paletteStudio = PaletteStudio()
extend(paletteStudio)
Demos
DemoColorBrewer2_01
Demonstrates how to use a ColorBrewer2 palette. Finds the first available palette with 5 colors, then draws concentric circles filled with those colors.
DemoColorBrewer2_02
Visualizes the ColorBrewer2 color palettes with 8 colors as circles made of colored arcs.
DemoColorBrewer2_03
Visualizes 49 ColorBrewer2 color palettes of type "Diverging" as circles made of colored arcs. Since there are more palettes than grid cells, not all palettes are visualized.
DemoPaletteStudio01
Demonstrates how to access palette colors using PaletteStudio. A new random palette is loaded every 60 animation frames.
DemoPaletteStudio02
Demonstrates how to create a design using PaletteStudio.
Press the c key to load a random palette.




