From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Pip Cet Newsgroups: gmane.emacs.bugs Subject: bug#36315: 27.0.50; SVG transparency handling is inaccurate Date: Mon, 24 Jun 2019 16:24:17 +0000 Message-ID: References: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="000000000000a622dc058c144048" Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="70987"; mail-complaints-to="usenet@blaine.gmane.org" Cc: 36315@debbugs.gnu.org To: YAMAMOTO Mitsuharu Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Mon Jun 24 18:26:32 2019 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1hfRnZ-000IJG-Hd for geb-bug-gnu-emacs@m.gmane.org; Mon, 24 Jun 2019 18:26:29 +0200 Original-Received: from localhost ([::1]:53004 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hfRnY-0005pL-Iv for geb-bug-gnu-emacs@m.gmane.org; Mon, 24 Jun 2019 12:26:28 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:59787) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hfRnE-0005m6-Bo for bug-gnu-emacs@gnu.org; Mon, 24 Jun 2019 12:26:09 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hfRnB-0005Vs-HY for bug-gnu-emacs@gnu.org; Mon, 24 Jun 2019 12:26:08 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:44234) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hfRn8-0005Sz-G4 for bug-gnu-emacs@gnu.org; Mon, 24 Jun 2019 12:26:03 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1hfRn8-0006eO-CQ for bug-gnu-emacs@gnu.org; Mon, 24 Jun 2019 12:26:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Pip Cet Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 24 Jun 2019 16:26:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 36315 X-GNU-PR-Package: emacs Original-Received: via spool by 36315-submit@debbugs.gnu.org id=B36315.156139350425440 (code B ref 36315); Mon, 24 Jun 2019 16:26:02 +0000 Original-Received: (at 36315) by debbugs.gnu.org; 24 Jun 2019 16:25:04 +0000 Original-Received: from localhost ([127.0.0.1]:57771 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hfRmB-0006cE-Fe for submit@debbugs.gnu.org; Mon, 24 Jun 2019 12:25:03 -0400 Original-Received: from mail-ot1-f52.google.com ([209.85.210.52]:45801) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hfRm9-0006bd-8S for 36315@debbugs.gnu.org; Mon, 24 Jun 2019 12:25:02 -0400 Original-Received: by mail-ot1-f52.google.com with SMTP id x21so14069788otq.12 for <36315@debbugs.gnu.org>; Mon, 24 Jun 2019 09:25:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=zX63Anu2jzGfHrRB1VNuE4Y8aJb3he9SXFBJFmS/YyQ=; b=SgE4vQxl5vR7o46gWOLA0wkz1X5pyqT17eAVJm8rykvlRQZyPE/wNCDHxrp9qCOq7g ZhjqN9hmZtrrl7Fs9SMTUYcNORuqb/fboWBGMlwjWxEve0+uDKIy3k6H/N/Bl1zzDpPM EUE7ImzcmRK1mGIgbQhum3drW2y1oyuvGMLGYyJkK3uJN60dEnT7Lu8/dlGJ8fuHvvNc ccsD3IV3/66AKHd1hYrdLFeqPQWEQh6iW6Yt1tlcIhdcvs6fNksksiWY9nWokgKS9Tc5 SJI2hqaGPJtIq+vE1Obg00HjgXpcRRRfhV4hvEQJrd1QFViHIG49lEg5WMIRawbXPEFO 609Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=zX63Anu2jzGfHrRB1VNuE4Y8aJb3he9SXFBJFmS/YyQ=; b=D6G4gPGMlALbd/FshzVFiNhdZOPRnNsf6zlopAhX7GDxDJRTor8EGjWo68ug5aN5tY KqvAf+DIzOE3KhWFSkSSV4rChJWAVi9fPXoaRvCpt+FVaHGHFixhsSkwsmcyKirTRcMK rnNRxjY+OuPBxaQ3N/SBdR57Dog2D6rqnhGquXkMqDpal9+zzvtVkkFlAubYbif8bsGv zObSB/FNNOaWz4vL2fCYBJVCZ8Zmce5PnAFaRG43PxJpGU4DOj4jT571JQhlyyyrObtK JFMHHcpebAW5r6V6+81FJXeJ7NK/UV7zve47UfTEL9ICTnSlRuFz1WIpWvMmTh8gpJ14 9Xmw== X-Gm-Message-State: APjAAAWscHESZiuRjaID7T4a8RXTW70M55E15RdXtWxDKkrj+ezL+DP4 4ppLD2b40VMt8oNIZR1dOMdX/AiE0rIqZstHTE8= X-Google-Smtp-Source: APXvYqzkyGYh2Z6W6DugbFfsil9BnoWx2OzTTrtXsaXS3LlRi7BVDWja5PMqHjedcdpmIqaK6od7cNjyLX6t7SYbz5k= X-Received: by 2002:a9d:7284:: with SMTP id t4mr29528928otj.154.1561393495401; Mon, 24 Jun 2019 09:24:55 -0700 (PDT) In-Reply-To: X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.51.188.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:161241 Archived-At: --000000000000a622dc058c144048 Content-Type: text/plain; charset="UTF-8" On Mon, Jun 24, 2019 at 8:17 AM YAMAMOTO Mitsuharu wrote: > On Mon, 24 Jun 2019 16:56:45 +0900, > YAMAMOTO Mitsuharu wrote: > > > > An alternative way would be to use rsvg_handle_render_cairo, which is > > recommended by librsvg, and let it blend with the background color. > > > > Patch attached. Note that this does not require --with-cairo. > > Raising the required version of librsvg to 2.14 is not a problem, as > > we are already using rsvg_handle_get_dimensions that requires that > > version. Is Windows librsvg DLL compiled with libcairo? > > Sorry, wrong patch. Please try this instead. Thank you very much, that fixes the problem. Unfortunately, I do not know about the situation on Windows. I'm not sure about the additional changes in the attached relative patch, so feel free to take or leave them as you see fit. The second call to cairo_set_source_rgb is currently unnecessary, because rsvg forces the foreground color to black anyway, but that might change one day (ideally, we'd use the frame foreground color, or even the current face's foreground color; I have patches here that do this, though they don't fix rsvg). @@ -9619,15 +9619,19 @@ svg_load_image (struct frame *f, struct image *img, char *contents, cairo_surface_t *surface = cairo_image_surface_create (CAIRO_FORMAT_RGB24, width, height); + if (cairo_surface_status (surface) != CAIRO_STATUS_SUCCESS) + goto rsvg_error; cairo_t *cr = cairo_create (surface); cairo_set_source_rgb (cr, background.red / 65535.0, background.green / 65535.0, background.blue / 65535.0); cairo_paint (cr); + cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); rsvg_handle_render_cairo (rsvg_handle, cr); cairo_destroy (cr); g_object_unref (rsvg_handle); + cairo_surface_flush (surface); unsigned char *data = cairo_image_surface_get_data (surface); int stride = cairo_image_surface_get_stride (surface); for (int y = 0; y < height; ++y) @@ -9636,9 +9640,9 @@ svg_load_image (struct frame *f, struct image *img, char *contents, for (int x = 0; x < width; ++x) { guint32 rgb = *pixels++; - int red = ((rgb >> 16) & 0xff) << 8; - int green = ((rgb >> 8) & 0xff) << 8; - int blue = (rgb & 0xff) << 8; + int red = ((rgb >> 16) & 0xff) * 0x101; + int green = ((rgb >> 8) & 0xff) * 0x101; + int blue = (rgb & 0xff) * 0x101; PUT_PIXEL (ximg, x, y, lookup_rgb_color (f, red, green, blue)); } data += stride; --000000000000a622dc058c144048 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-minor-things.patch" Content-Disposition: attachment; filename="0001-minor-things.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jxal90kz0 RnJvbSA0MDJkYmQxZTFmZjVjMzNmZTkwNjFkZDM2MmQzYjQ3YTEwYWM1NjU4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQaXAgQ2V0IDxwaXBjZXRAZ21haWwuY29tPgpEYXRlOiBNb24s IDI0IEp1biAyMDE5IDE2OjIwOjE5ICswMDAwClN1YmplY3Q6IFtQQVRDSF0gbWlub3IgdGhpbmdz CgotLS0KIHNyYy9pbWFnZS5jIHwgMTAgKysrKysrKy0tLQogMSBmaWxlIGNoYW5nZWQsIDcgaW5z ZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvaW1hZ2UuYyBiL3Ny Yy9pbWFnZS5jCmluZGV4IDkyNGExODhiNGEuLmNlNTUzNGIwN2EgMTAwNjQ0Ci0tLSBhL3NyYy9p bWFnZS5jCisrKyBiL3NyYy9pbWFnZS5jCkBAIC05NjE5LDE1ICs5NjE5LDE5IEBAIHN2Z19sb2Fk X2ltYWdlIChzdHJ1Y3QgZnJhbWUgKmYsIHN0cnVjdCBpbWFnZSAqaW1nLCBjaGFyICpjb250ZW50 cywKIAogICBjYWlyb19zdXJmYWNlX3QgKnN1cmZhY2UgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2Ny ZWF0ZSAoQ0FJUk9fRk9STUFUX1JHQjI0LAogCQkJCQkJCSB3aWR0aCwgaGVpZ2h0KTsKKyAgaWYg KGNhaXJvX3N1cmZhY2Vfc3RhdHVzIChzdXJmYWNlKSAhPSBDQUlST19TVEFUVVNfU1VDQ0VTUykK KyAgICBnb3RvIHJzdmdfZXJyb3I7CiAgIGNhaXJvX3QgKmNyID0gY2Fpcm9fY3JlYXRlIChzdXJm YWNlKTsKICAgY2Fpcm9fc2V0X3NvdXJjZV9yZ2IgKGNyLCBiYWNrZ3JvdW5kLnJlZCAvIDY1NTM1 LjAsCiAJCQliYWNrZ3JvdW5kLmdyZWVuIC8gNjU1MzUuMCwKIAkJCWJhY2tncm91bmQuYmx1ZSAv IDY1NTM1LjApOwogICBjYWlyb19wYWludCAoY3IpOworICBjYWlyb19zZXRfc291cmNlX3JnYiAo Y3IsIDAuMCwgMC4wLCAwLjApOwogICByc3ZnX2hhbmRsZV9yZW5kZXJfY2Fpcm8gKHJzdmdfaGFu ZGxlLCBjcik7CiAgIGNhaXJvX2Rlc3Ryb3kgKGNyKTsKICAgZ19vYmplY3RfdW5yZWYgKHJzdmdf aGFuZGxlKTsKIAorICBjYWlyb19zdXJmYWNlX2ZsdXNoIChzdXJmYWNlKTsKICAgdW5zaWduZWQg Y2hhciAqZGF0YSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEgKHN1cmZhY2UpOwogICBp bnQgc3RyaWRlID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlIChzdXJmYWNlKTsKICAg Zm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7ICsreSkKQEAgLTk2MzYsOSArOTY0MCw5IEBAIHN2 Z19sb2FkX2ltYWdlIChzdHJ1Y3QgZnJhbWUgKmYsIHN0cnVjdCBpbWFnZSAqaW1nLCBjaGFyICpj b250ZW50cywKICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7ICsreCkKIAl7CiAJICBn dWludDMyIHJnYiA9ICpwaXhlbHMrKzsKLQkgIGludCByZWQgICA9ICgocmdiID4+IDE2KSAmIDB4 ZmYpIDw8IDg7Ci0JICBpbnQgZ3JlZW4gPSAoKHJnYiA+PiA4KSAmIDB4ZmYpIDw8IDg7Ci0JICBp bnQgYmx1ZSAgPSAocmdiICYgMHhmZikgPDwgODsKKwkgIGludCByZWQgICA9ICgocmdiID4+IDE2 KSAmIDB4ZmYpICogMHgxMDE7CisJICBpbnQgZ3JlZW4gPSAoKHJnYiA+PiA4KSAmIDB4ZmYpICog MHgxMDE7CisJICBpbnQgYmx1ZSAgPSAocmdiICYgMHhmZikgKiAweDEwMTsKIAkgIFBVVF9QSVhF TCAoeGltZywgeCwgeSwgbG9va3VwX3JnYl9jb2xvciAoZiwgcmVkLCBncmVlbiwgYmx1ZSkpOwog CX0KICAgICAgIGRhdGEgKz0gc3RyaWRlOwotLSAKMi4yMC4xCgo= --000000000000a622dc058c144048--