Coverage for /var/devmt/py/utils4_1.7.0/utils4/palette.py: 100%

21 statements  

« prev     ^ index     » next       coverage.py v7.6.9, created at 2024-12-21 17:18 +0000

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:Platform: Linux/Windows | Python 3.7+ 

8:Developer: J Berendt 

9:Email: development@s3dev.uk 

10 

11:Comments: n/a 

12 

13:Example: 

14 

15 Use the hex colour palette:: 

16 

17 >>> from utils4.palette import hexpalette 

18 

19 >>> hexpalette.aliceblue 

20 '#F0F8FF' 

21 

22 

23 Use the RGB colour palette:: 

24 

25 >>> from utils4.palette import rgbpalette 

26 

27 >>> rgbpalette.aliceblue 

28 [240, 248, 255] 

29 

30""" 

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

32 

33from utils4 import convert 

34from utils4.reporterror import reporterror 

35 

36 

37class HexPalette: 

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

39 

40 def __init__(self): 

41 """HexPalette class initialiser. 

42 

43 This initialiser dynamically creates all named colours as class 

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

45 

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) 

53 

54class RGBPalette: 

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

56 

57 def __init__(self): 

58 """RGBPalette class initialiser. 

59 

60 This initialiser dynamically creates all named colours as class 

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

62 

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) 

70 

71 

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

75 

76 @property 

77 def colours(self): 

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

79 

80 For example: 

81 

82 - aliceblue 

83 - antiquewhite 

84 - aqua 

85 - ... 

86 - whitesmoke 

87 - yellow 

88 - yellowgreen 

89 

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 

240 

241 

242hexpalette = HexPalette() 

243rgbpalette = RGBPalette()