@@ -20,10 +20,244 @@
20 20 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
21 21 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
22 22 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#include "config.h"
23 23 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#include <string.h>
24 24 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#include "color.h"
25 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
26 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
27 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 140 standard CSS color names and their corresponding RGB values,
28 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** in alphabetical order by name so that we can do a binary search
29 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** for lookup.
30 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
31 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static const struct CssColors {
32 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zName; /* CSS Color name, lower case */
33 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ unsigned int iRGB; /* Corresponding RGB value */
34 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ } aCssColors[] = {
35 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "aliceblue", 0xf0f8ff },
36 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "antiquewhite", 0xfaebd7 },
37 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "aqua", 0x00ffff },
38 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "aquamarine", 0x7fffd4 },
39 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "azure", 0xf0ffff },
40 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "beige", 0xf5f5dc },
41 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "bisque", 0xffe4c4 },
42 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "black", 0x000000 },
43 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "blanchedalmond", 0xffebcd },
44 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "blue", 0x0000ff },
45 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "blueviolet", 0x8a2be2 },
46 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "brown", 0xa52a2a },
47 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "burlywood", 0xdeb887 },
48 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "cadetblue", 0x5f9ea0 },
49 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "chartreuse", 0x7fff00 },
50 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "chocolate", 0xd2691e },
51 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "coral", 0xff7f50 },
52 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "cornflowerblue", 0x6495ed },
53 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "cornsilk", 0xfff8dc },
54 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "crimson", 0xdc143c },
55 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "cyan", 0x00ffff },
56 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "darkblue", 0x00008b },
57 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "darkcyan", 0x008b8b },
58 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "darkgoldenrod", 0xb8860b },
59 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "darkgray", 0xa9a9a9 },
60 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "darkgreen", 0x006400 },
61 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "darkkhaki", 0xbdb76b },
62 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "darkmagenta", 0x8b008b },
63 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "darkolivegreen", 0x556b2f },
64 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "darkorange", 0xff8c00 },
65 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "darkorchid", 0x9932cc },
66 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "darkred", 0x8b0000 },
67 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "darksalmon", 0xe9967a },
68 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "darkseagreen", 0x8fbc8f },
69 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "darkslateblue", 0x483d8b },
70 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "darkslategray", 0x2f4f4f },
71 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "darkturquoise", 0x00ced1 },
72 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "darkviolet", 0x9400d3 },
73 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "deeppink", 0xff1493 },
74 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "deepskyblue", 0x00bfff },
75 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "dimgray", 0x696969 },
76 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "dodgerblue", 0x1e90ff },
77 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "firebrick", 0xb22222 },
78 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "floralwhite", 0xfffaf0 },
79 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "forestgreen", 0x228b22 },
80 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "fuchsia", 0xff00ff },
81 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "gainsboro", 0xdcdcdc },
82 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "ghostwhite", 0xf8f8ff },
83 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "gold", 0xffd700 },
84 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "goldenrod", 0xdaa520 },
85 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "gray", 0x808080 },
86 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "green", 0x008000 },
87 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "greenyellow", 0xadff2f },
88 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "honeydew", 0xf0fff0 },
89 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "hotpink", 0xff69b4 },
90 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "indianred", 0xcd5c5c },
91 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "indigo", 0x4b0082 },
92 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "ivory", 0xfffff0 },
93 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "khaki", 0xf0e68c },
94 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "lavender", 0xe6e6fa },
95 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "lavenderblush", 0xfff0f5 },
96 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "lawngreen", 0x7cfc00 },
97 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "lemonchiffon", 0xfffacd },
98 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "lightblue", 0xadd8e6 },
99 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "lightcoral", 0xf08080 },
100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "lightcyan", 0xe0ffff },
101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "lightgoldenrodyellow", 0xfafad2 },
102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "lightgrey", 0xd3d3d3 },
103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "lightgreen", 0x90ee90 },
104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "lightpink", 0xffb6c1 },
105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "lightsalmon", 0xffa07a },
106 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "lightseagreen", 0x20b2aa },
107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "lightskyblue", 0x87cefa },
108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "lightslategray", 0x778899 },
109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "lightsteelblue", 0xb0c4de },
110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "lightyellow", 0xffffe0 },
111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "lime", 0x00ff00 },
112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "limegreen", 0x32cd32 },
113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "linen", 0xfaf0e6 },
114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "magenta", 0xff00ff },
115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "maroon", 0x800000 },
116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "mediumaquamarine", 0x66cdaa },
117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "mediumblue", 0x0000cd },
118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "mediumorchid", 0xba55d3 },
119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "mediumpurple", 0x9370d8 },
120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "mediumseagreen", 0x3cb371 },
121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "mediumslateblue", 0x7b68ee },
122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "mediumspringgreen", 0x00fa9a },
123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "mediumturquoise", 0x48d1cc },
124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "mediumvioletred", 0xc71585 },
125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "midnightblue", 0x191970 },
126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "mintcream", 0xf5fffa },
127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "mistyrose", 0xffe4e1 },
128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "moccasin", 0xffe4b5 },
129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "navajowhite", 0xffdead },
130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "navy", 0x000080 },
131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "oldlace", 0xfdf5e6 },
132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "olive", 0x808000 },
133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "olivedrab", 0x6b8e23 },
134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "orange", 0xffa500 },
135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "orangered", 0xff4500 },
136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "orchid", 0xda70d6 },
137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "palegoldenrod", 0xeee8aa },
138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "palegreen", 0x98fb98 },
139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "paleturquoise", 0xafeeee },
140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "palevioletred", 0xd87093 },
141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "papayawhip", 0xffefd5 },
142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "peachpuff", 0xffdab9 },
143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "peru", 0xcd853f },
144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "pink", 0xffc0cb },
145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "plum", 0xdda0dd },
146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "powderblue", 0xb0e0e6 },
147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "purple", 0x800080 },
148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "red", 0xff0000 },
149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "rosybrown", 0xbc8f8f },
150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "royalblue", 0x4169e1 },
151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "saddlebrown", 0x8b4513 },
152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "salmon", 0xfa8072 },
153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "sandybrown", 0xf4a460 },
154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "seagreen", 0x2e8b57 },
155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "seashell", 0xfff5ee },
156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "sienna", 0xa0522d },
157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "silver", 0xc0c0c0 },
158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "skyblue", 0x87ceeb },
159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "slateblue", 0x6a5acd },
160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "slategray", 0x708090 },
161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "snow", 0xfffafa },
162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "springgreen", 0x00ff7f },
163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "steelblue", 0x4682b4 },
164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "tan", 0xd2b48c },
165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "teal", 0x008080 },
166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "thistle", 0xd8bfd8 },
167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "tomato", 0xff6347 },
168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "turquoise", 0x40e0d0 },
169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "violet", 0xee82ee },
170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "wheat", 0xf5deb3 },
171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "white", 0xffffff },
172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "whitesmoke", 0xf5f5f5 },
173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "yellow", 0xffff00 },
174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "yellowgreen", 0x9acd32 },
175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ };
176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Attempt to translate a CSS color name into an integer that
179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** represents the equivalent RGB value. Ignore alpha if provided.
180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If the name cannot be translated, return -1.
181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int color_name_to_rgb(const char *zName){
183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zName==0 || zName[0]==0 ) return -1;
184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zName[0]=='#' ){
185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int i, v = 0;
186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(i=1; i<=6 && fossil_isxdigit(zName[i]); i++){
187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ v = v*16 + fossil_hexvalue(zName[i]);
188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( i<7 ) return -1;
190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return v;
191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( sqlite3_strlike("rgb%)", zName,0)==0 ){
192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return -1;
193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( sqlite3_strlike("hsl%)",zName,0)==0 ){
194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return -1;
195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int iMin = 0;
197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int iMax = count(aCssColors)-1;
198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ while( iMin<=iMax ){
199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int iMid = (iMin+iMax)/2;
200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int c = sqlite3_stricmp(aCssColors[iMid].zName, zName);
201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( c==0 ) return aCssColors[iMid].iRGB;
202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( c<0 ){
203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ iMin = iMid+1;
204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ iMax = iMid-1;
206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return -1;
209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Shift a color provided by the user so that it is suitable
214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** for use as a background color in the current skin.
215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The return value is a #HHHHHH color name contained in
217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** static space that is overwritten on the next call.
218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If we cannot make sense of the background color recommendation
220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** that is the input, then return NULL.
221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *reasonable_bg_color(const char *zRequested){
223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int iRGB = color_name_to_rgb(zRequested);
224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int cc[3];
225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int lo, hi;
226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int r, g, b;
227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int fg = 0; /* 1==black-foreground 2==white-foreground */
228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static char zColor[10];
229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int K = 70; /* Tune for background color saturation */
230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( iRGB<0 ) return 0;
232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( fg==0 ) fg = skin_detail_boolean("white-foreground") ? 2 : 1;
233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cc[0] = (iRGB>>16) & 0xff;
234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cc[1] = (iRGB>>8) & 0xff;
235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cc[2] = iRGB & 0xff;
236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ lo = cc[0]<cc[1] ? 0 : 1;
237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( cc[2]<cc[lo] ) lo = 2;
238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ hi = cc[0]>cc[1] ? 0 : 1;
239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( cc[2]>cc[hi] ) hi = 2;
240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( cc[lo]==cc[hi] ){
241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Requested color is some shade of gray */
242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ r = (K*cc[0])/255;
243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( fg==1 ) r += (255-K);
244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ g = b = r;
245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int d = cc[hi] - cc[lo];
247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ r = (K*(cc[0] - cc[lo]))/d;
248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ g = (K*(cc[1] - cc[lo]))/d;
249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ b = (K*(cc[2] - cc[lo]))/d;
250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( fg==1 ){
251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ r += (255-K);
252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ g += (255-K);
253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ b += (255-K);
254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_snprintf(8, zColor, "#%02x%02x%02x", r,g,b);
257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return zColor;
258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
25 259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
26 260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
27 261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Compute a hash on a branch or user name
28 262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
29 263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static unsigned int hash_of_name(const char *z){
@@ -185,5 +419,53 @@
185 419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <input type="submit" value="Submit">
186 420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <input type="submit" name="rand" value="Random">
187 421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ </form>
188 422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
style_finish_page();
189 423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
426 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** WEBPAGE: test-bgcolor
427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Show how user-specified background colors will be rendered
429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** using the reasonable_bg_color() algorithm.
430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void test_bgcolor_page(void){
432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zReq; /* Requested color name */
433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zBG; /* Actual color provided */
434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char zNm[10];
435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int i, cnt;
436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ login_check_credentials();
437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ style_set_current_feature("test");
438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ style_header("Background Color Test");
439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(i=cnt=0; i<10; i++){
440 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_snprintf(sizeof(zNm),zNm,"b%d",i);
441 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zReq = P(zNm);
442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zReq==0 || zReq[0]==0 ) continue;
443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zBG = reasonable_bg_color(zReq);
444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zBG==0 ){
445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <p>"%h(zReq)" is not a recognized color name</p>
446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( zReq[0]!='#' ){
447 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char zReqRGB[12];
448 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_snprintf(sizeof(zReqRGB),zReqRGB,"#%06x",color_name_to_rgb(zReq));
449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <p style='border:1px solid;background-color:%s(zBG);'>
450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ Requested: %h(zReq) (%h(zReqRGB)) → Actual: %h(zBG)</p>
451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cnt++;
452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <p style='border:1px solid;background-color:%s(zBG);'>
454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ Requested: %h(zReq) → Actual: %h(zBG)</p>
455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cnt++;
456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( cnt ){
459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <hr>
460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <form method="POST">
462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <p>Enter CSS color names below and see them shifted into corresponding
463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ background colors above.</p>
464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(i=0; i<10; i++){
465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_snprintf(sizeof(zNm),zNm,"b%d",i);
466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <input type="text" size="30" name='%s(zNm)' value='%h(PD(zNm,""))'><br>
467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <input type="submit" value="Submit">
469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ </form>
470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ style_finish_page();
471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
190 472 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!