Source code for openalea.color.colormap
# -*- python -*-
#
# OpenAlea.StdLib
#
# Copyright 2006-2009 INRIA - CIRAD - INRA
#
# Distributed under the Cecill-C License.
# See accompanying file LICENSE.txt or copy at
# http://www.cecill.info/licences/Licence_CeCILL-C_V1-en.html
#
# OpenAlea WebSite : http://openalea.gforge.inria.fr
#
###############################################################################
"""Colormap class"""
__license__ = "Cecill-C"
__revision__ = " $Id$ "
[docs]
class ColorMap(object):
"""A RGB color map, between 2 colors defined in HSV code
:Examples:
>>> minh,maxh = minandmax([height(i) for i in s2])
>>> colormap = ColorMap(minh,maxh)
>>> s3 = [ Shape(i.geometry, Material
>>> (Color3(colormap(height(i))), 1), i.id)
>>> for i in s2]
"""
def __init__(self, minval=0., maxval=1.):
self.minval = float(minval)
self.maxval = float(maxval)
[docs]
def color(self, normedU):
"""
:param normedU: todo
"""
inter = 1/5.
winter = int(normedU/inter)
a = (normedU % inter)/inter
b = 1 - a
if winter < 0:
col = (self.coul2, self.coul2, self.coul1)
elif winter == 0:
col = (self.coul2, self.coul2*b+self.coul1*a, self.coul1)
elif winter == 1:
col = (self.coul2, self.coul1, self.coul1*b+self.coul2*a)
elif winter == 2:
col = (self.coul2*b+self.coul1*a, self.coul1, self.coul2)
elif winter == 3:
col = (self.coul1, self.coul1*b+self.coul2*a, self.coul2)
elif winter > 3:
col = (self.coul1, self.coul2, self.coul2)
return (int(col[0]), int(col[1]), int(col[2]))
[docs]
def greycolor(self, normedU):
"""
:param normedU: todo
:returns: todo
"""
return (int(255*normedU), int(255*normedU), int(255*normedU))
[docs]
def grey(self, u):
"""
:param u:
:returns: todo
"""
return self.greycolor(self.normU(u))
[docs]
def normU(self, u):
"""
:param u:
:returns: todo
"""
if self.minval == self.maxval:
return 0.5
return (u - self.minval) / (self.maxval - self.minval)
def __call__(self, u, minval=0, maxval=1, coul1=80, coul2=20):
self.coul1 = coul1
self.coul2 = coul2
self.minval = float(minval)
self.maxval = float(maxval)
return self.color(self.normU(u))