[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#65042: 30.0.50; alpha-background doesn't effect background of stippl
From: |
Po Lu |
Subject: |
bug#65042: 30.0.50; alpha-background doesn't effect background of stipple in emacs 30.0.50 pgtk |
Date: |
Fri, 04 Aug 2023 21:28:50 +0800 |
User-agent: |
Gnus/5.13 (Gnus v5.13) |
Felix <felix.dick@web.de> writes:
> Po Lu <luangruo@yahoo.com> writes:
>
>> Felix <felix.dick@web.de> writes:
>>
>>> Po Lu <luangruo@yahoo.com> writes:
>>>
>>>> Felix <felix.dick@web.de> writes:
>>>>
>>>>> The background of stipple stays opaque with alpha-background parameter
>>>>> set for transparency.
>>>>> This came up in the use of the new package 'indent-bars'.
>>>>> The github issue: https://github.com/jdtsmith/indent-bars/issues/8
>>>>> I tested this with 'emacs -Q' only enabling the needed packages (compat
>>>>> and indent-bars).
>>>>
>>>> Thanks. Do stipples start displaying adequately with this change?
>>>>
>>> No it doesn't.
>>> But it gives weird artifacts (doubling the character one
>>> line above or something like that)
>>
>> How about this?
>>
>> diff --git a/src/pgtkterm.c b/src/pgtkterm.c
>> index 9c1fc7bef4e..a7c687d811d 100644
>> --- a/src/pgtkterm.c
>> +++ b/src/pgtkterm.c
>> @@ -1328,14 +1328,17 @@ fill_background_by_face (struct frame *f, struct
>> face *face, int x, int y,
>> int width, int height)
>> {
>> cairo_t *cr = pgtk_begin_cr_clip (f);
>> + double r, g, b, a;
>>
>> + cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE);
>> cairo_rectangle (cr, x, y, width, height);
>> cairo_clip (cr);
>>
>> - double r = ((face->background >> 16) & 0xff) / 255.0;
>> - double g = ((face->background >> 8) & 0xff) / 255.0;
>> - double b = ((face->background >> 0) & 0xff) / 255.0;
>> - cairo_set_source_rgb (cr, r, g, b);
>> + r = ((face->background >> 16) & 0xff) / 255.0;
>> + g = ((face->background >> 8) & 0xff) / 255.0;
>> + b = ((face->background >> 0) & 0xff) / 255.0;
>> + a = f->alpha_background;
>> + cairo_set_source_rgba (cr, r, g, b, a);
>> cairo_paint (cr);
>>
>> if (face->stipple != 0)
>> @@ -1343,10 +1346,10 @@ fill_background_by_face (struct frame *f, struct
>> face *face, int x, int y,
>> cairo_pattern_t *mask
>> = FRAME_DISPLAY_INFO (f)->bitmaps[face->stipple - 1].pattern;
>>
>> - double r = ((face->foreground >> 16) & 0xff) / 255.0;
>> - double g = ((face->foreground >> 8) & 0xff) / 255.0;
>> - double b = ((face->foreground >> 0) & 0xff) / 255.0;
>> - cairo_set_source_rgb (cr, r, g, b);
>> + r = ((face->foreground >> 16) & 0xff) / 255.0;
>> + g = ((face->foreground >> 8) & 0xff) / 255.0;
>> + b = ((face->foreground >> 0) & 0xff) / 255.0;
>> + cairo_set_source_rgba (cr, r, g, b, a);
>> cairo_mask (cr, mask);
>> }
>>
>
> This time it works,
> Thanks for this, and thanks your work on Emacs in general!
OK, thanks. Eli, should this reach Emacs 29.2, or is it too involved
for the release branch?
- bug#65042: 30.0.50; alpha-background doesn't effect background of stipple in emacs 30.0.50 pgtk, Felix, 2023/08/03
- bug#65042: Simple example to reproduce., Felix, 2023/08/03
- bug#65042: 30.0.50; alpha-background doesn't effect background of stipple in emacs 30.0.50 pgtk, Po Lu, 2023/08/03
- bug#65042: 30.0.50; alpha-background doesn't effect background of stipple in emacs 30.0.50 pgtk, Felix, 2023/08/03
- bug#65042: 30.0.50; alpha-background doesn't effect background of stipple in emacs 30.0.50 pgtk, Po Lu, 2023/08/03
- bug#65042: 30.0.50; alpha-background doesn't effect background of stipple in emacs 30.0.50 pgtk, Felix, 2023/08/04
- bug#65042: 30.0.50; alpha-background doesn't effect background of stipple in emacs 30.0.50 pgtk,
Po Lu <=
- bug#65042: 30.0.50; alpha-background doesn't effect background of stipple in emacs 30.0.50 pgtk, Eli Zaretskii, 2023/08/04
- bug#65042: 30.0.50; alpha-background doesn't effect background of stipple in emacs 30.0.50 pgtk, Felix, 2023/08/07
- bug#65042: 30.0.50; alpha-background doesn't effect background of stipple in emacs 30.0.50 pgtk, Po Lu, 2023/08/07