Coverage for /var/devmt/py/utils4_1.5.0rc1/utils4/palette.py: 100%
21 statements
« prev ^ index » next coverage.py v7.6.1, created at 2024-08-12 15:38 +0100
« prev ^ index » next coverage.py v7.6.1, created at 2024-08-12 15:38 +0100
1#!/usr/bin/env python
2# -*- coding: utf-8 -*-
3"""
4:Purpose: This class module provides quick-access to CSS-4 named colours in
5 both RGB and hexidecimal formats.
7:Platform: Linux/Windows | Python 3.6+
8:Developer: J Berendt
9:Email: development@s3dev.uk
11:Comments: n/a
13:Example:
15 Use the hex colour palette::
17 >>> from utils4.palette import hexpalette
19 >>> hexpalette.aliceblue
20 '#F0F8FF'
23 Use the RGB colour palette::
25 >>> from utils4.palette import rgbpalette
27 >>> rgbpalette.aliceblue
28 [240, 248, 255]
30"""
31# pylint: disable=too-few-public-methods
33from utils4 import convert
34from utils4.reporterror import reporterror
37class HexPalette:
38 """Complete CSS-4 colour palette (in hex format), as object attributes."""
40 def __init__(self):
41 """HexPalette class initialiser.
43 This initialiser dynamically creates all named colours as class
44 attributes using the :class:`~CSS4Colours` class as its data source.
46 """
47 css = CSS4Colours().colours
48 try:
49 for k, v in css.items():
50 setattr(self, k, v)
51 except Exception as err:
52 reporterror(err)
54class RGBPalette:
55 """Complete CSS-4 colour palette (in RGB format), as object attributes."""
57 def __init__(self):
58 """RGBPalette class initialiser.
60 This initialiser dynamically creates all named colours as class
61 attributes using the :class:`~CSS4Colours` class as its data source.
63 """
64 hex_ = HexPalette()
65 try:
66 for k, v in hex_.__dict__.items():
67 setattr(self, k, convert.hex2int(hexstring=v[1:], nbytes=1))
68 except Exception as err:
69 reporterror(err)
72# Placed at the bottom of the module for cleanness, as it's very long.
73class CSS4Colours:
74 """Lazy class container to hold the raw CSS level 4 colour name lookup."""
76 @property
77 def colours(self):
78 """The 148 colour names from the CSS level 4 colour specification.
80 For example:
82 - aliceblue
83 - antiquewhite
84 - aqua
85 - ...
86 - whitesmoke
87 - yellow
88 - yellowgreen
90 """
91 clrs = {'aliceblue': '#F0F8FF',
92 'antiquewhite': '#FAEBD7',
93 'aqua': '#00FFFF',
94 'aquamarine': '#7FFFD4',
95 'azure': '#F0FFFF',
96 'beige': '#F5F5DC',
97 'bisque': '#FFE4C4',
98 'black': '#000000',
99 'blanchedalmond': '#FFEBCD',
100 'blue': '#0000FF',
101 'blueviolet': '#8A2BE2',
102 'brown': '#A52A2A',
103 'burlywood': '#DEB887',
104 'cadetblue': '#5F9EA0',
105 'chartreuse': '#7FFF00',
106 'chocolate': '#D2691E',
107 'coral': '#FF7F50',
108 'cornflowerblue': '#6495ED',
109 'cornsilk': '#FFF8DC',
110 'crimson': '#DC143C',
111 'cyan': '#00FFFF',
112 'darkblue': '#00008B',
113 'darkcyan': '#008B8B',
114 'darkgoldenrod': '#B8860B',
115 'darkgray': '#A9A9A9',
116 'darkgreen': '#006400',
117 'darkgrey': '#A9A9A9',
118 'darkkhaki': '#BDB76B',
119 'darkmagenta': '#8B008B',
120 'darkolivegreen': '#556B2F',
121 'darkorange': '#FF8C00',
122 'darkorchid': '#9932CC',
123 'darkred': '#8B0000',
124 'darksalmon': '#E9967A',
125 'darkseagreen': '#8FBC8F',
126 'darkslateblue': '#483D8B',
127 'darkslategray': '#2F4F4F',
128 'darkslategrey': '#2F4F4F',
129 'darkturquoise': '#00CED1',
130 'darkviolet': '#9400D3',
131 'deeppink': '#FF1493',
132 'deepskyblue': '#00BFFF',
133 'dimgray': '#696969',
134 'dimgrey': '#696969',
135 'dodgerblue': '#1E90FF',
136 'firebrick': '#B22222',
137 'floralwhite': '#FFFAF0',
138 'forestgreen': '#228B22',
139 'fuchsia': '#FF00FF',
140 'gainsboro': '#DCDCDC',
141 'ghostwhite': '#F8F8FF',
142 'gold': '#FFD700',
143 'goldenrod': '#DAA520',
144 'gray': '#808080',
145 'green': '#008000',
146 'greenyellow': '#ADFF2F',
147 'grey': '#808080',
148 'honeydew': '#F0FFF0',
149 'hotpink': '#FF69B4',
150 'indianred': '#CD5C5C',
151 'indigo': '#4B0082',
152 'ivory': '#FFFFF0',
153 'khaki': '#F0E68C',
154 'lavender': '#E6E6FA',
155 'lavenderblush': '#FFF0F5',
156 'lawngreen': '#7CFC00',
157 'lemonchiffon': '#FFFACD',
158 'lightblue': '#ADD8E6',
159 'lightcoral': '#F08080',
160 'lightcyan': '#E0FFFF',
161 'lightgoldenrodyellow': '#FAFAD2',
162 'lightgray': '#D3D3D3',
163 'lightgreen': '#90EE90',
164 'lightgrey': '#D3D3D3',
165 'lightpink': '#FFB6C1',
166 'lightsalmon': '#FFA07A',
167 'lightseagreen': '#20B2AA',
168 'lightskyblue': '#87CEFA',
169 'lightslategray': '#778899',
170 'lightslategrey': '#778899',
171 'lightsteelblue': '#B0C4DE',
172 'lightyellow': '#FFFFE0',
173 'lime': '#00FF00',
174 'limegreen': '#32CD32',
175 'linen': '#FAF0E6',
176 'magenta': '#FF00FF',
177 'maroon': '#800000',
178 'mediumaquamarine': '#66CDAA',
179 'mediumblue': '#0000CD',
180 'mediumorchid': '#BA55D3',
181 'mediumpurple': '#9370DB',
182 'mediumseagreen': '#3CB371',
183 'mediumslateblue': '#7B68EE',
184 'mediumspringgreen': '#00FA9A',
185 'mediumturquoise': '#48D1CC',
186 'mediumvioletred': '#C71585',
187 'midnightblue': '#191970',
188 'mintcream': '#F5FFFA',
189 'mistyrose': '#FFE4E1',
190 'moccasin': '#FFE4B5',
191 'navajowhite': '#FFDEAD',
192 'navy': '#000080',
193 'oldlace': '#FDF5E6',
194 'olive': '#808000',
195 'olivedrab': '#6B8E23',
196 'orange': '#FFA500',
197 'orangered': '#FF4500',
198 'orchid': '#DA70D6',
199 'palegoldenrod': '#EEE8AA',
200 'palegreen': '#98FB98',
201 'paleturquoise': '#AFEEEE',
202 'palevioletred': '#DB7093',
203 'papayawhip': '#FFEFD5',
204 'peachpuff': '#FFDAB9',
205 'peru': '#CD853F',
206 'pink': '#FFC0CB',
207 'plum': '#DDA0DD',
208 'powderblue': '#B0E0E6',
209 'purple': '#800080',
210 'rebeccapurple': '#663399',
211 'red': '#FF0000',
212 'rosybrown': '#BC8F8F',
213 'royalblue': '#4169E1',
214 'saddlebrown': '#8B4513',
215 'salmon': '#FA8072',
216 'sandybrown': '#F4A460',
217 'seagreen': '#2E8B57',
218 'seashell': '#FFF5EE',
219 'sienna': '#A0522D',
220 'silver': '#C0C0C0',
221 'skyblue': '#87CEEB',
222 'slateblue': '#6A5ACD',
223 'slategray': '#708090',
224 'slategrey': '#708090',
225 'snow': '#FFFAFA',
226 'springgreen': '#00FF7F',
227 'steelblue': '#4682B4',
228 'tan': '#D2B48C',
229 'teal': '#008080',
230 'thistle': '#D8BFD8',
231 'tomato': '#FF6347',
232 'turquoise': '#40E0D0',
233 'violet': '#EE82EE',
234 'wheat': '#F5DEB3',
235 'white': '#FFFFFF',
236 'whitesmoke': '#F5F5F5',
237 'yellow': '#FFFF00',
238 'yellowgreen': '#9ACD32'}
239 return clrs
242hexpalette = HexPalette()
243rgbpalette = RGBPalette()