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