70 lines
1.7 KiB
Python
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)
|