Merge pull request #64 from blastrock/defcmap

More fixes for cmake coloration
This commit is contained in:
Johann Dreo 2014-12-19 11:14:06 +01:00
commit 0976644a38

View file

@ -376,26 +376,33 @@ def color_scale( name, text ):
# if not, use python itself, # if not, use python itself,
# if thoses fails, try to `eval` the string # if thoses fails, try to `eval` the string
# (this allow strings like "1/2+0.9*2") # (this allow strings like "1/2+0.9*2")
f = None
try: try:
# babel is a specialized module # babel is a specialized module
import babel.numbers as bn import babel.numbers as bn
try: try:
f = float(bn.parse_decimal(nb)) f = float(bn.parse_decimal(nb))
except NumberFormatError: except bn.NumberFormatError:
f = eval(nb) # Note: in python2, `eval(2/3)` would produce `0`, in python3 `0.666` pass
except ImportError: except ImportError:
try: try:
f = float(nb) f = float(nb)
except ValueError: except ValueError:
f = eval(nb) pass
if f is not None:
# normalize with scale if it's a number
f = (f - context["scale"][0]) / (context["scale"][1]-context["scale"][0])
else:
# interpret as float between 0 and 1 otherwise
f = eval(nb)
# if out of scale, do not color # if out of scale, do not color
if f < context["scale"][0] or f > context["scale"][1]: if f < 0 or f > 1:
return None return None
# normalize and scale over the nb of colors in cmap # normalize and scale over the nb of colors in cmap
colormap = context["colormaps"][name] colormap = context["colormaps"][name]
i = int( math.ceil( (f - context["scale"][0]) / (context["scale"][1]-context["scale"][0]) * len(colormap) ) ) - 1 i = int( math.ceil( f * (len(colormap)-1) ) )
color = colormap[i] color = colormap[i]
# infer mode from the color in the colormap # infer mode from the color in the colormap