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

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. 

6 

7:Developer: J Berendt 

8:Email: development@s3dev.uk 

9 

10:Comments: n/a 

11 

12:Example: 

13 

14 Use the hex colour palette:: 

15 

16 >>> from utils4.palette import hexpalette 

17 

18 >>> hexpalette.aliceblue 

19 '#F0F8FF' 

20 

21 

22 Use the RGB colour palette:: 

23 

24 >>> from utils4.palette import rgbpalette 

25 

26 >>> rgbpalette.aliceblue 

27 [240, 248, 255] 

28 

29""" 

30# pylint: disable=too-few-public-methods 

31 

32from utils4 import convert 

33from utils4.reporterror import reporterror 

34 

35 

36class HexPalette: 

37 """Complete CSS-4 colour palette (in hex format), as object attributes.""" 

38 

39 def __init__(self): 

40 """HexPalette class initialiser. 

41 

42 This initialiser dynamically creates all named colours as class 

43 attributes using the :class:`~CSS4Colours` class as its data source. 

44 

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) 

52 

53class RGBPalette: 

54 """Complete CSS-4 colour palette (in RGB format), as object attributes.""" 

55 

56 def __init__(self): 

57 """RGBPalette class initialiser. 

58 

59 This initialiser dynamically creates all named colours as class 

60 attributes using the :class:`~CSS4Colours` class as its data source. 

61 

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) 

69 

70 

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.""" 

74 

75 @property 

76 def colours(self): 

77 """The 148 colour names from the CSS level 4 colour specification. 

78 

79 For example: 

80 

81 - aliceblue 

82 - antiquewhite 

83 - aqua 

84 - ... 

85 - whitesmoke 

86 - yellow 

87 - yellowgreen 

88 

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 

239 

240 

241hexpalette = HexPalette() 

242rgbpalette = RGBPalette()