ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/rxvt-unicode/src/rxvttoolkit.C
(Generate patch)

Comparing rxvt-unicode/src/rxvttoolkit.C (file contents):
Revision 1.28 by root, Sun Jan 29 20:51:28 2006 UTC vs.
Revision 1.29 by root, Sun Jan 29 21:45:47 2006 UTC

543 rxvt_rgba r; 543 rxvt_rgba r;
544 char eos; 544 char eos;
545 int mult; 545 int mult;
546 546
547 if ( l == 1+4*1 && 4 == sscanf (name, "#%1hx%1hx%1hx%1hx%c", &r.a, &r.r, &r.g, &r.b, &eos)) 547 if ( l == 1+4*1 && 4 == sscanf (name, "#%1hx%1hx%1hx%1hx%c", &r.a, &r.r, &r.g, &r.b, &eos))
548 mult = 0x1111; 548 mult = rxvt_rgba::MAX_CC / 0x000f;
549 else if (l == 1+4*2 && 4 == sscanf (name, "#%2hx%2hx%2hx%2hx%c", &r.a, &r.r, &r.g, &r.b, &eos)) 549 else if (l == 1+4*2 && 4 == sscanf (name, "#%2hx%2hx%2hx%2hx%c", &r.a, &r.r, &r.g, &r.b, &eos))
550 mult = 0x0101; 550 mult = rxvt_rgba::MAX_CC / 0x00ff;
551 else if (l == 1+4*4 && 4 == sscanf (name, "#%4hx%4hx%4hx%4hx%c", &r.a, &r.r, &r.g, &r.b, &eos)) 551 else if (l == 1+4*4 && 4 == sscanf (name, "#%4hx%4hx%4hx%4hx%c", &r.a, &r.r, &r.g, &r.b, &eos))
552 mult = 0x0001; 552 mult = rxvt_rgba::MAX_CC / 0xffff;
553 else if (l == 4+5*4 && 4 == sscanf (name, "rgba:%hx/%hx/%hx/%hx%c", &r.r, &r.g, &r.b, &r.a, &eos))
554 mult = rxvt_rgba::MAX_CC / 0xffff;
553 else 555 else
554 return XftColorAllocName (screen->xdisp, screen->visual, screen->cmap, name, &c); 556 return XftColorAllocName (screen->xdisp, screen->visual, screen->cmap, name, &c);
555 557
556 r.r *= mult; r.g *= mult; r.b *= mult; r.a *= mult; 558 r.r *= mult; r.g *= mult; r.b *= mult; r.a *= mult;
557 return set (screen, r); 559 return set (screen, r);
574 d.red = rgba.r; 576 d.red = rgba.r;
575 d.green = rgba.g; 577 d.green = rgba.g;
576 d.blue = rgba.b; 578 d.blue = rgba.b;
577 d.alpha = rgba.a; 579 d.alpha = rgba.a;
578 580
579 return XftColorAllocValue (screen->xdisp, screen->visual, screen->cmap, &d, &c); 581 if (XftColorAllocValue (screen->xdisp, screen->visual, screen->cmap, &d, &c))
582 {
583 // FUCKING Xft gets it wrong, of course, fix it for the common case
584 // transparency users should eat shit and die, and then
585 // XRenderQueryPictIndexValues themselves plenty.
586 if (screen->depth == 32
587 && screen->visual->c_class == TrueColor
588 && screen->visual->red_mask == 0x00ff0000
589 && screen->visual->green_mask == 0x0000ff00
590 && screen->visual->blue_mask == 0x000000ff)
591 c.pixel = c.pixel & 0x00ffffffUL | ((rgba.a >> 8) << 24);
592
593 return true;
594 }
595
596 return false;
580#else 597#else
581 XColor xc; 598 XColor xc;
582 599
583 xc.red = rgba.r; 600 xc.red = rgba.r;
584 xc.green = rgba.g; 601 xc.green = rgba.g;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines