Mercurial > parpg-source
view bGrease/color.py @ 120:adbcdb900fa9
Modified InventoryGrid to set a name for each slot containing the index.
Added getSlot method to InventoryGrid.
Renamed InventoryGUI class to CharacterGUI.
Added InventoryGUI class which handles the inventory part of the CharacterGUI.
An InventoryGUI instance is now created in CharacterGUI.
author | KarstenBock@gmx.net |
---|---|
date | Wed, 05 Oct 2011 12:59:22 +0200 |
parents | ff3e395abf91 |
children | a6bbb732b27b |
line wrap: on
line source
class RGBA(object): """Four channel color representation. RGBA colors are floating point color representations with color channel values between (0..1). Colors may be initialized from 3 or 4 floating point numbers or a hex string:: RGBA(1.0, 1.0, 1.0) # Alpha defaults to 1.0 RGBA(1.0, 1.0, 0, 0.5) RGBA("#333") RGBA("#7F7F7F") Individual color channels can be accessed by attribute name, or the color object can be treated as a sequence of 4 floats. """ def __init__(self, r_or_colorstr, g=None, b=None, a=None): if isinstance(r_or_colorstr, str): assert g is b is a is None, "Ambiguous color arguments" self.r, self.g, self.b, self.a = self._parse_colorstr(r_or_colorstr) elif g is b is a is None: try: self.r, self.g, self.b, self.a = r_or_colorstr except ValueError: self.r, self.g, self.b = r_or_colorstr self.a = 1.0 else: self.r = r_or_colorstr self.g = g self.b = b self.a = a if self.a is None: self.a = 1.0 def _parse_colorstr(self, colorstr): length = len(colorstr) if not colorstr.startswith("#") or length not in (4, 5, 7, 9): raise ValueError("Invalid color string: " + colorstr) if length <= 5: parsed = [int(c*2, 16) / 255.0 for c in colorstr[1:]] else: parsed = [int(colorstr[i:i+2], 16) / 255.0 for i in range(1, length, 2)] if len(parsed) == 3: parsed.append(1.0) return parsed def __len__(self): return 4 def __getitem__(self, item): return (self.r, self.g, self.b, self.a)[item] def __iter__(self): return iter((self.r, self.g, self.b, self.a)) def __eq__(self, other): return tuple(self) == tuple(other) def __repr__(self): return "%s(%.2f, %.2f, %.2f, %.2f)" % (self.__class__.__name__, self.r, self.g, self.b, self.a)