mirror of
https://github.com/SickGear/SickGear.git
synced 2024-12-26 20:53:38 +00:00
55 lines
1.4 KiB
Python
55 lines
1.4 KiB
Python
|
from hachoir.field import FieldSet, UserVector, UInt8
|
||
|
|
||
|
|
||
|
class RGB(FieldSet):
|
||
|
color_name = {
|
||
|
(0, 0, 0): "Black",
|
||
|
(255, 0, 0): "Red",
|
||
|
(0, 255, 0): "Green",
|
||
|
(0, 0, 255): "Blue",
|
||
|
(255, 255, 255): "White",
|
||
|
}
|
||
|
static_size = 24
|
||
|
|
||
|
def createFields(self):
|
||
|
yield UInt8(self, "red", "Red")
|
||
|
yield UInt8(self, "green", "Green")
|
||
|
yield UInt8(self, "blue", "Blue")
|
||
|
|
||
|
def createDescription(self):
|
||
|
rgb = self["red"].value, self["green"].value, self["blue"].value
|
||
|
name = self.color_name.get(rgb)
|
||
|
if not name:
|
||
|
name = "#%02X%02X%02X" % rgb
|
||
|
return "RGB color: " + name
|
||
|
|
||
|
|
||
|
class RGBA(RGB):
|
||
|
static_size = 32
|
||
|
|
||
|
def createFields(self):
|
||
|
yield UInt8(self, "red", "Red")
|
||
|
yield UInt8(self, "green", "Green")
|
||
|
yield UInt8(self, "blue", "Blue")
|
||
|
yield UInt8(self, "alpha", "Alpha")
|
||
|
|
||
|
def createDescription(self):
|
||
|
description = RGB.createDescription(self)
|
||
|
opacity = self["alpha"].value * 100 // 255
|
||
|
return "%s (opacity: %s%%)" % (description, opacity)
|
||
|
|
||
|
|
||
|
class PaletteRGB(UserVector):
|
||
|
item_class = RGB
|
||
|
item_name = "color"
|
||
|
|
||
|
def createDescription(self):
|
||
|
return "Palette of %u RGB colors" % len(self)
|
||
|
|
||
|
|
||
|
class PaletteRGBA(PaletteRGB):
|
||
|
item_class = RGBA
|
||
|
|
||
|
def createDescription(self):
|
||
|
return "Palette of %u RGBA colors" % len(self)
|