Example #1
0
    def fromDict(self, value):
        if 'alpha' in value:
            self._opacity = value.get('alpha', 1.0)
        elif 'opacity' in value:
            self._opacity = value.get('opacity', 1.0)
        else:
            self._opacity = 1.0

        v = value.get('color')
        if IntUtils.isInt(v):
            self._rawColor = int(v)
        else:
            self.load(v)
Example #2
0
    def _setColor(self, sourceColor, normalized =False):
        bendCount = None
        cls       = self.__class__

        # COLOR VALUE DICT
        if isinstance(sourceColor, dict) and 'color' in sourceColor:
            self.fromDict(sourceColor)

        # INTEGER COLOR
        elif IntUtils.isInt(sourceColor):
            self._rawColor = int(sourceColor)

        # FLOAT LUMA COLOR
        elif isinstance(sourceColor, float):
            self._rawColor = cls.lumaToInt(sourceColor)

        # RGB, HSV, OR HSL DICT COLOR
        elif isinstance(sourceColor, dict):
            for key in ['a', 'alpha', 'o', 'opacity']:
                if key in sourceColor:
                    self._opacity = float(sourceColor[key])
                    break

            if 'l' in sourceColor:
                self._rawColor = cls.hslToInt(sourceColor, normalized)
            if 'h' in sourceColor or 's' in sourceColor or 'v' in sourceColor:
                self._rawColor = cls.hsvToInt(sourceColor, normalized)
            else:
                self._rawColor = cls.rgbToInt(sourceColor, normalized)

        # RGB TUPLE OR LIST COLOR
        elif isinstance(sourceColor, tuple) or isinstance(sourceColor, list):
            r      = sourceColor[0]
            g      = sourceColor[1]
            b      = sourceColor[2]
            factor = 255.0 if normalized else 1.0
            c      = {'r':round(factor*r), 'g':round(factor*g), 'b':round(factor*b)}
            self._rawColor = cls.rgbToInt(c)

            if len(sourceColor) > 3:
                self._opacity = float(sourceColor[3])

        # STRING-BASED COLORS
        elif StringUtils.isStringType(sourceColor):
            bendCount   = cls.getBendCount(sourceColor)
            sourceColor = sourceColor.rstrip('+-')

            if cls.isHexColor(sourceColor):
                self._rawColor = cls.hexToInt(sourceColor)
            else:
                self._rawColor = self._parseUnknownColorString(sourceColor)
                if self._rawColor is None:
                    self._rawColor = 0

        # IF ALL ELSE FAILS: BLACK!
        else:
            self._rawColor = 0

        # CLEAR THE COLOR CACHE
        self._unCache()

        # IF STRING COLOR BEND
        if bendCount:
            self.bend(bendCount)