@@ -184,12 +184,18 @@
184 184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zName[0]=='#' ){
185 185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i, v = 0;
186 186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=1; i<=6 && fossil_isxdigit(zName[i]); i++){
187 187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
v = v*16 + fossil_hexvalue(zName[i]);
188 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;
189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( i==4 ){
190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(v=0, i=1; i<4; i++) v = v*256 + fossil_hexvalue(zName[i]);
191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return v;
192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( i==7 ){
194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return v;
195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return -1;
191 197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( sqlite3_strlike("rgb%)", zName,0)==0 ){
192 198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return -1;
193 199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( sqlite3_strlike("hsl%)",zName,0)==0 ){
194 200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return -1;
195 201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
@@ -216,19 +222,31 @@
216 222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The return value is a #HHHHHH color name contained in
217 223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** static space that is overwritten on the next call.
218 224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
219 225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If we cannot make sense of the background color recommendation
220 226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** that is the input, then return NULL.
227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The iFgClr parameter is normally 0. But for testing purposes, set
229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** it to 1 for a black foregrounds and 2 for a white foreground.
221 230 { 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){
231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *reasonable_bg_color(const char *zRequested, int iFgClr){
223 232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iRGB = color_name_to_rgb(zRequested);
224 233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int cc[3];
225 234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int lo, hi;
226 235 { 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 */
236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int systemFg = 0; /* 1==black-foreground 2==white-foreground */
237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int fg;
228 238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static char zColor[10];
229 239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int K = 70; /* Tune for background color saturation */
240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( iFgClr ){
242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fg = iFgClr;
243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( systemFg==0 ){
244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fg = systemFg = skin_detail_boolean("white-foreground") ? 2 : 1;
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!
+ fg = systemFg;
247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
230 248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
231 249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iRGB<0 ) return 0;
232 250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( fg==0 ) fg = skin_detail_boolean("white-foreground") ? 2 : 1;
233 251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cc[0] = (iRGB>>16) & 0xff;
234 252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cc[1] = (iRGB>>8) & 0xff;
@@ -429,43 +447,76 @@
429 447 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** using the reasonable_bg_color() algorithm.
430 448 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
431 449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void test_bgcolor_page(void){
432 450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zReq; /* Requested color name */
433 451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zBG; /* Actual color provided */
452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zBg1;
434 453 { 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;
454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static const char *azDflt[] = {
455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "red", "orange", "yellow", "green", "blue", "indigo", "violet",
456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "tan", "brown", "gray"
457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ };
458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int i, cnt, iClr, r, g, b;
459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *zFg;
436 460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
login_check_credentials();
437 461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
style_set_current_feature("test");
438 462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
style_header("Background Color Test");
439 463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=cnt=0; i<10; i++){
440 464 { 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);
465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zReq = PD(zNm,azDflt[i]);
442 466 { 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);
467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( cnt==0 ){
468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <table border="1" cellspacing="0" cellpadding="10">
469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <tr>
470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <th>Requested Background
471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <th>Light mode
472 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <th>Dark mode
473 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ </tr>
474 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
475 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cnt++;
476 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zBG = reasonable_bg_color(zReq, 0);
444 477 { 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]!='#' ){
478 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <tr><td colspan="3" align="center">\
479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ "%h(zReq)" is not a recognized color name</td></tr>
480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ continue;
481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
482 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ iClr = color_name_to_rgb(zReq);
483 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ r = (iClr>>16) & 0xff;
484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ g = (iClr>>8) & 0xff;
485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ b = iClr & 0xff;
486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( 3*r + 6*g + b > 5*255 ){
487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zFg = "black";
488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zFg = "white";
490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zReq[0]!='#' ){
447 492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char zReqRGB[12];
448 493 { 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++;
494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <tr><td style='color:%h(zFg);background-color:%h(zReq);'>\
495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ Requested color "%h(zReq)" (%h(zReqRGB))</td>
452 496 { 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++;
497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <tr><td style='color:%h(zFg);background-color:%s(zReq);'>\
498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ Requested color "%h(zReq)"</td>
456 499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zBg1 = reasonable_bg_color(zReq,1);
501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <td style='color:black;background-color:%h(zBg1);'>\
502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ Background color for dark text: %h(zBg1)</td>
503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zBg1 = reasonable_bg_color(zReq,2);
504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <td style='color:white;background-color:%h(zBg1);'>\
505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ Background color for light text: %h(zBg1)</td></tr>
457 506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
458 507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( cnt ){
508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ </table>
459 509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <hr>
460 510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
461 511 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <form method="POST">
462 512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <p>Enter CSS color names below and see them shifted into corresponding
463 513 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ background colors above.</p>
464 514 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<10; i++){
465 515 { 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>
516 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <input type="text" size="30" name='%s(zNm)' \
517 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ value='%h(PD(zNm,azDflt[i]))'><br>
467 518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
468 519 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <input type="submit" value="Submit">
469 520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ </form>
470 521 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
style_finish_page();
471 522 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
472 523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!