Source code for bibliopixel.colors.palettes

import copy
from . make import colors_no_palette as _colors
from . import conversions

"""
Map names to palettes
==========================

First, the name is looked up in the mutable ``PROJECT_PALETTES`` dictionary.
The project set ``PROJECT_PALETTES`` from its "palettes" Section.

If that fails, the name is looked up in a fixed, immutable dictionary
``BUILT_IN_PALETTES``.
"""


[docs]def get(name=None): """ Return a named Palette, or None if no such name exists. If ``name`` is omitted, the default value is used. """ if name is None or name == 'default': return _DEFAULT_PALETTE if isinstance(name, str): return PROJECT_PALETTES.get(name) or BUILT_IN_PALETTES.get(name)
# This global variable is changed by the Project to allow color settings # in Animations and other classes to use palette names. TODO: fix this. # types would somehow need to know about the current Project, non-trivial. PROJECT_PALETTES = {} BUILT_IN_PALETTES = { # "Classic" palettes from old BP 'rainbow': _colors(conversions.HUE_RAINBOW), 'raw': _colors(conversions.HUE_RAW), 'spectrum': _colors(conversions.HUE_SPECTRUM), 'three_sixty': _colors(conversions.HUE_360), # Custom palettes 'flag': _colors('red, white, blue'), 'checker': _colors('white, black', serpentine=True), 'primary': _colors('red, green, blue'), 'secondary': _colors('yellow, magenta, cyan'), 'eight': _colors('black, red, yellow, green, cyan, blue, magenta, white'), 'van_gogh': _colors('gold, teal, spring green 3, ivory black'), 'trendy': _colors('medium aquamarine, orange red, chocolate 1, gainsboro'), 'muted': _colors('navajo white 3, ivory 3, white smoke, ivory black'), 'bold': _colors('black, dodger blue 4, hot pink 4, orange red 3'), 'clean': _colors('light cyan 2, dark gray, brown 1, snow 2'), 'warm': _colors('snow 3, dark grey, indian red 4, burly wood 3'), 'sharp': _colors('sea green 3, ivory black, burly wood 2, gray'), 'pastel': _colors('azure 3, eggshell, sienna 2, goldenrod'), 'tints': _colors('plum 4, dark grey, antique white 2, linen'), 'splash': _colors('steel blue 3, gainsboro, gold, tan 2'), 'energy': _colors('magenta, yellow, cyan, beige'), }
[docs]def set_default(palette): p = get(palette) if not p: raise ValueError('Don\'t understand default %s' % palette) global _DEFAULT_PALETTE _DEFAULT_PALETTE = p
set_default('rainbow')