def _setColor(self, color, colorMode =None): if color is None: return False if isinstance(color, list): normalized = colorMode.endswith('one') if colorMode.startswith('rgb'): keys = ColorTag._RGB_KEYS elif colorMode.startswith('hsl'): keys = ColorTag._HSL_KEYS elif colorMode.startswith('hsv'): keys = ColorTag._HSV_KEYS else: keys = ColorTag._RGB_KEYS c = {} norms = True for i in range(len(color)): raw = color[i] value = float(raw.rstrip('+-')) c[keys[i]] = value if not normalized: norms = norms and (raw.find('.') != -1 and value <= 1.0) c = ColorValue(c, normalized or norms) if StringUtils.ends(color[-1], ['+', '-']): c.bend(color[-1]) else: c = color self.attrs.styles.add( 'color', c.web if isinstance(c, ColorValue) else unicode(c), self.attrs.styleGroup ) return True