Lightningbeam/GUI/Win32/Color.py

70 lines
1.7 KiB
Python

#--------------------------------------------------------------------
#
# PyGUI - Color - Win32
#
#--------------------------------------------------------------------
from __future__ import division
import win32con as wc, win32ui as ui
from GUI import export
from GUI.GColors import Color as GColor
#--------------------------------------------------------------------
class Color(GColor):
# _win_color 00BBGGRR
# _win_argb AARRGGBB
_win_brush_cache = None
def get_red(self):
return self._red
def get_green(self):
return self._green
def get_blue(self):
return self._blue
def get_alpha(self):
return self._alpha
def _get_win_brush(self):
b = self._win_brush_cache
if not b:
b = ui.CreateBrush(wc.BS_SOLID, self._win_color, 0)
self._win_brush_cache = b
return b
_win_brush = property(_get_win_brush)
def _from_win_color(cls, c):
self = cls.__new__(cls)
self._win_color = c
r = c & 0xff
g = (c >> 8) & 0xff
b = (c >> 16) & 0xff
self._red = r / 255
self._green = g / 255
self._blue = b / 255
self._alpha = 1.0
self._win_argb = 0xff000000 | (r << 16) | (g << 8) | b
return self
_from_win_color = classmethod(_from_win_color)
def _from_win_argb(cls, c):
self = cls.__new__()
self._win_argb = c
a = (c >> 24) & 0xff
r = (c >> 16) & 0xff
g = (c >> 8) & 0xff
b = c & 0xff
self._red = r / 255
self._green = g / 255
self._blue = b / 255
self._alpha = a / 255
self._win_color = (b << 16) | (g << 8) | r
export(Color)