… | |
… | |
459 | |
459 | |
460 | if (root_effects.need_blur ()) |
460 | if (root_effects.need_blur ()) |
461 | img->blur (root_effects.h_blurRadius, root_effects.v_blurRadius)->replace (img); |
461 | img->blur (root_effects.h_blurRadius, root_effects.v_blurRadius)->replace (img); |
462 | |
462 | |
463 | if (root_effects.need_tint ()) |
463 | if (root_effects.need_tint ()) |
464 | tint_image (img, root_effects.tint, root_effects.tint_set, root_effects.shade); |
464 | { |
|
|
465 | rgba c (rgba::MAX_CC, rgba::MAX_CC, rgba::MAX_CC); |
|
|
466 | |
|
|
467 | if (root_effects.tint_set) |
|
|
468 | root_effects.tint.get (c); |
|
|
469 | rxvt_img::nv factor = root_effects.shade / 100. - 1.; |
|
|
470 | img->shade (factor, c)->replace (img); |
|
|
471 | } |
465 | |
472 | |
466 | XRenderPictFormat *format = XRenderFindVisualFormat (dpy, visual); |
473 | XRenderPictFormat *format = XRenderFindVisualFormat (dpy, visual); |
467 | img->convert_format (format, pix_colors [Color_bg])->replace (img); |
474 | img->convert_format (format, pix_colors [Color_bg])->replace (img); |
468 | |
475 | |
469 | delete bg_img; |
476 | delete bg_img; |
… | |
… | |
532 | update_background (); |
539 | update_background (); |
533 | } |
540 | } |
534 | #endif |
541 | #endif |
535 | } |
542 | } |
536 | |
543 | |
537 | void |
|
|
538 | rxvt_term::tint_image (rxvt_img *img, rxvt_color &tint, bool tint_set, int shade) |
|
|
539 | { |
|
|
540 | rgba c (rgba::MAX_CC, rgba::MAX_CC, rgba::MAX_CC); |
|
|
541 | |
|
|
542 | if (tint_set) |
|
|
543 | tint.get (c); |
|
|
544 | |
|
|
545 | if (shade > 100) |
|
|
546 | { |
|
|
547 | c.r = c.r * (200 - shade) / 100; |
|
|
548 | c.g = c.g * (200 - shade) / 100; |
|
|
549 | c.b = c.b * (200 - shade) / 100; |
|
|
550 | } |
|
|
551 | else |
|
|
552 | { |
|
|
553 | c.r = c.r * shade / 100; |
|
|
554 | c.g = c.g * shade / 100; |
|
|
555 | c.b = c.b * shade / 100; |
|
|
556 | } |
|
|
557 | |
|
|
558 | img->contrast (c.r, c.g, c.b, c.a); |
|
|
559 | |
|
|
560 | if (shade > 100) |
|
|
561 | { |
|
|
562 | c.a = 0xffff; |
|
|
563 | c.r = |
|
|
564 | c.g = |
|
|
565 | c.b = 0xffff * (shade - 100) / 100; |
|
|
566 | img->brightness (c.r, c.g, c.b, c.a); |
|
|
567 | } |
|
|
568 | } |
|
|
569 | |
|
|
570 | #endif /* HAVE_BG_PIXMAP */ |
544 | #endif /* HAVE_BG_PIXMAP */ |