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#36304: 27.0.50; request: switch to the superior HTML #RGB convention for colors Date: Sat, 22 Jun 2019 11:23:35 +0000 Message-ID: References: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="0000000000007af117058be7d127" Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="51647"; mail-complaints-to="usenet@blaine.gmane.org" Cc: 36304@debbugs.gnu.org To: rms@gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sat Jun 22 13:25:14 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 1hee8v-000DIk-9J for geb-bug-gnu-emacs@m.gmane.org; Sat, 22 Jun 2019 13:25:13 +0200 Original-Received: from localhost ([::1]:39984 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hee8t-00071A-Vp for geb-bug-gnu-emacs@m.gmane.org; Sat, 22 Jun 2019 07:25:12 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:50552) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hee8l-00070f-7O for bug-gnu-emacs@gnu.org; Sat, 22 Jun 2019 07:25:04 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hee8j-0005D3-Ub for bug-gnu-emacs@gnu.org; Sat, 22 Jun 2019 07:25:03 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:37468) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hee8j-0005Cl-R1 for bug-gnu-emacs@gnu.org; Sat, 22 Jun 2019 07:25:01 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1hee8j-0007bz-IT for bug-gnu-emacs@gnu.org; Sat, 22 Jun 2019 07:25:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Pip Cet Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 22 Jun 2019 11:25:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 36304 X-GNU-PR-Package: emacs Original-Received: via spool by 36304-submit@debbugs.gnu.org id=B36304.156120265929204 (code B ref 36304); Sat, 22 Jun 2019 11:25:01 +0000 Original-Received: (at 36304) by debbugs.gnu.org; 22 Jun 2019 11:24:19 +0000 Original-Received: from localhost ([127.0.0.1]:51012 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hee83-0007ay-6j for submit@debbugs.gnu.org; Sat, 22 Jun 2019 07:24:19 -0400 Original-Received: from mail-ot1-f68.google.com ([209.85.210.68]:43824) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hee81-0007ai-Ff for 36304@debbugs.gnu.org; Sat, 22 Jun 2019 07:24:18 -0400 Original-Received: by mail-ot1-f68.google.com with SMTP id i8so1750069oth.10 for <36304@debbugs.gnu.org>; Sat, 22 Jun 2019 04:24:17 -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=kUlS6c4oJRsQqbBxMNyzzKVKDXLLU/YuK4W8+SlkKxc=; b=UGb6DIvKcjdyZ7or81ZfRzRHRw9SRMXSX7RtKc1fLflxIuwormn3rE+t0/43EwLhrs JHW4cHzMdY6w87hnveII8i/QleMKozux/ao/RlurR+MP4iMk7LQTGJf59HFQEBal3+qP hQQ0tczF11qzxdFQYb6owfcfoBXcgWHvQWfP9mXBfeC8IBNAIhCGCUpuljv3lbSu8yxB /jePLDSsNu/+CheHYAsDwC5BnfDIDYKrnEG6jww/hGg8u4WNz+EVFemsX34kmS/F+qcX o8daunuoSaZm4PELr9dLPyaDrgiSSQJPNoL7uuADag7ExCdhjwXLvTK8nCkbqQL2tQRq lLKg== 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=kUlS6c4oJRsQqbBxMNyzzKVKDXLLU/YuK4W8+SlkKxc=; b=WGaXFkkZKqPmiRW91oGaIlaIRVT7nzPyQNXV/a0b8d0IXVEjL084CQEjrksvQZdfTa cuz5CdwSGJ2wKm3Q7TLjvunqNvsnZMmNQ5LCN5qhChfQBXcVKHCme7y/BfliHmNMO+Px /UAxLTyUOPQvcsIXdrPfuGBmffBKN461e1D+SdZ4kQ94CozS2U9PCXoIB3PoZ/5DwdV5 3VTX4zMY8JTKbQzSEPfyphMgXz9uuaQipBiyip1pLjyv9WCmOhBgg/4zA7XrsbpQC3nS RPVuo1DVidkI5Mxkv9v1RIW1m3d1l1u4Sr15Mgfofhc3t9iY7DIdXx4dwk64P4GM9W8M g+qg== X-Gm-Message-State: APjAAAXNZCcHPV7ruVH/gEvoUYyDAXgDJC/ZksoemyXVXiUcPjzFHro0 uULnt8OpIsytucXEd/KfQlb+xWKF1pZtI1hy348= X-Google-Smtp-Source: APXvYqzZlywrua04npKd7CkVHSlYA0XI+XpnZ8h+POUeu+xBFq5LaX9RditwkaXrK8PFHyPFxFGUYunhbTP2U6ZzY5w= X-Received: by 2002:a9d:7284:: with SMTP id t4mr20793172otj.154.1561202651446; Sat, 22 Jun 2019 04:24:11 -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:160976 Archived-At: --0000000000007af117058be7d127 Content-Type: text/plain; charset="UTF-8" On Fri, Jun 21, 2019 at 1:54 AM Richard Stallman wrote: > > We're still using the X convention. It's time to switch. The HTML > > convention is what virtually everyone would expect these days, it > > allows specifying "white" concisely, and it's what we use in some > > contexts, such as when rendering SVGs. > > It seems plausible to me, speaking as a non-expert. Here's a patch. I've read the documentation and it appears already to have been updated by someone so it no longer links to the X documentation. * src/xterm.c (x_parse_color): Translate #RGB notation to rgb:R/G/B notation, which X handles slightly differently. --- src/xterm.c | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/src/xterm.c b/src/xterm.c index 1acff2af0d..614774f6bc 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -2381,6 +2381,8 @@ x_query_frame_background_color (struct frame *f, XColor *bgcolor) x_query_colors (f, bgcolor, 1); } +#define HEX_COLOR_NAME_LENGTH 32 + /* On frame F, translate the color name to RGB values. Use cached information, if possible. @@ -2398,9 +2400,35 @@ x_query_frame_background_color (struct frame *f, XColor *bgcolor) if (color_name[0] == '#') { - /* The hex form is parsed directly by XParseColor without + /* Don't pass #RGB strings directly to XParseColor, because that + follows the old convention of zero-extending each channel + value: #f00 means #f00000. We want the new convention of + scaling channel values, so #f00 means #ff0000. + + So we translate #f00 to rgb:f/0/0, which X handles + differently. */ + char rgb_color_name[HEX_COLOR_NAME_LENGTH]; + int len = strlen (color_name); + int digits_per_channel; + if (len == 4) + digits_per_channel = 1; + else if (len == 7) + digits_per_channel = 2; + else if (len == 10) + digits_per_channel = 3; + else if (len == 13) + digits_per_channel = 4; + else + return 0; + + snprintf (rgb_color_name, sizeof rgb_color_name, "rgb:%.*s/%.*s/%.*s", + digits_per_channel, color_name + 1, + digits_per_channel, color_name + digits_per_channel + 1, + digits_per_channel, color_name + 2 * digits_per_channel + 1); + + /* The rgb form is parsed directly by XParseColor without talking to the X server. No need for caching. */ - return XParseColor (dpy, cmap, color_name, color); + return XParseColor (dpy, cmap, rgb_color_name, color); } for (cache_entry = FRAME_DISPLAY_INFO (f)->color_names; cache_entry; -- 2.20.1 --0000000000007af117058be7d127 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Change-color-convention-so-f00-means-the-same-as-ff0.patch" Content-Disposition: attachment; filename="0001-Change-color-convention-so-f00-means-the-same-as-ff0.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jx7fp2lk0 RnJvbSBiNjAzZjQwOWYyZjVkMWVjN2MxYTZiY2ZkMGNiMjdlYTI1NjUwMjZlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQaXAgQ2V0IDxwaXBjZXRAZ21haWwuY29tPgpEYXRlOiBTYXQs IDIyIEp1biAyMDE5IDExOjA0OjIwICswMDAwClN1YmplY3Q6IFtQQVRDSF0gQ2hhbmdlIGNvbG9y IGNvbnZlbnRpb24gc28gI2YwMCBtZWFucyB0aGUgc2FtZSBhcyAjZmYwMDAwLgoKKiBzcmMveHRl cm0uYyAoeF9wYXJzZV9jb2xvcik6IFRyYW5zbGF0ZSAjUkdCIG5vdGF0aW9uIHRvIHJnYjpSL0cv QgogIG5vdGF0aW9uLCB3aGljaCBYIGhhbmRsZXMgc2xpZ2h0bHkgZGlmZmVyZW50bHkuCi0tLQog c3JjL3h0ZXJtLmMgfCAzMiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQogMSBmaWxl IGNoYW5nZWQsIDMwIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv c3JjL3h0ZXJtLmMgYi9zcmMveHRlcm0uYwppbmRleCAxYWNmZjJhZjBkLi42MTQ3NzRmNmJjIDEw MDY0NAotLS0gYS9zcmMveHRlcm0uYworKysgYi9zcmMveHRlcm0uYwpAQCAtMjM4MSw2ICsyMzgx LDggQEAgeF9xdWVyeV9mcmFtZV9iYWNrZ3JvdW5kX2NvbG9yIChzdHJ1Y3QgZnJhbWUgKmYsIFhD b2xvciAqYmdjb2xvcikKICAgeF9xdWVyeV9jb2xvcnMgKGYsIGJnY29sb3IsIDEpOwogfQogCisj ZGVmaW5lIEhFWF9DT0xPUl9OQU1FX0xFTkdUSCAzMgorCiAvKiBPbiBmcmFtZSBGLCB0cmFuc2xh dGUgdGhlIGNvbG9yIG5hbWUgdG8gUkdCIHZhbHVlcy4gIFVzZSBjYWNoZWQKICAgIGluZm9ybWF0 aW9uLCBpZiBwb3NzaWJsZS4KIApAQCAtMjM5OCw5ICsyNDAwLDM1IEBAIHhfcXVlcnlfZnJhbWVf YmFja2dyb3VuZF9jb2xvciAoc3RydWN0IGZyYW1lICpmLCBYQ29sb3IgKmJnY29sb3IpCiAKICAg aWYgKGNvbG9yX25hbWVbMF0gPT0gJyMnKQogICAgIHsKLSAgICAgIC8qIFRoZSBoZXggZm9ybSBp cyBwYXJzZWQgZGlyZWN0bHkgYnkgWFBhcnNlQ29sb3Igd2l0aG91dAorICAgICAgLyogRG9uJ3Qg cGFzcyAjUkdCIHN0cmluZ3MgZGlyZWN0bHkgdG8gWFBhcnNlQ29sb3IsIGJlY2F1c2UgdGhhdAor CSBmb2xsb3dzIHRoZSBvbGQgY29udmVudGlvbiBvZiB6ZXJvLWV4dGVuZGluZyBlYWNoIGNoYW5u ZWwKKwkgdmFsdWU6ICNmMDAgbWVhbnMgI2YwMDAwMC4gV2Ugd2FudCB0aGUgbmV3IGNvbnZlbnRp b24gb2YKKwkgc2NhbGluZyBjaGFubmVsIHZhbHVlcywgc28gI2YwMCBtZWFucyAjZmYwMDAwLgor CisJIFNvIHdlIHRyYW5zbGF0ZSAjZjAwIHRvIHJnYjpmLzAvMCwgd2hpY2ggWCBoYW5kbGVzCisJ IGRpZmZlcmVudGx5LiAqLworICAgICAgY2hhciByZ2JfY29sb3JfbmFtZVtIRVhfQ09MT1JfTkFN RV9MRU5HVEhdOworICAgICAgaW50IGxlbiA9IHN0cmxlbiAoY29sb3JfbmFtZSk7CisgICAgICBp bnQgZGlnaXRzX3Blcl9jaGFubmVsOworICAgICAgaWYgKGxlbiA9PSA0KQorCWRpZ2l0c19wZXJf Y2hhbm5lbCA9IDE7CisgICAgICBlbHNlIGlmIChsZW4gPT0gNykKKwlkaWdpdHNfcGVyX2NoYW5u ZWwgPSAyOworICAgICAgZWxzZSBpZiAobGVuID09IDEwKQorCWRpZ2l0c19wZXJfY2hhbm5lbCA9 IDM7CisgICAgICBlbHNlIGlmIChsZW4gPT0gMTMpCisJZGlnaXRzX3Blcl9jaGFubmVsID0gNDsK KyAgICAgIGVsc2UKKwlyZXR1cm4gMDsKKworICAgICAgc25wcmludGYgKHJnYl9jb2xvcl9uYW1l LCBzaXplb2YgcmdiX2NvbG9yX25hbWUsICJyZ2I6JS4qcy8lLipzLyUuKnMiLAorCQlkaWdpdHNf cGVyX2NoYW5uZWwsIGNvbG9yX25hbWUgKyAxLAorCQlkaWdpdHNfcGVyX2NoYW5uZWwsIGNvbG9y X25hbWUgKyBkaWdpdHNfcGVyX2NoYW5uZWwgKyAxLAorCQlkaWdpdHNfcGVyX2NoYW5uZWwsIGNv bG9yX25hbWUgKyAyICogZGlnaXRzX3Blcl9jaGFubmVsICsgMSk7CisKKyAgICAgIC8qIFRoZSBy Z2IgZm9ybSBpcyBwYXJzZWQgZGlyZWN0bHkgYnkgWFBhcnNlQ29sb3Igd2l0aG91dAogCSB0YWxr aW5nIHRvIHRoZSBYIHNlcnZlci4gIE5vIG5lZWQgZm9yIGNhY2hpbmcuICAqLwotICAgICAgcmV0 dXJuIFhQYXJzZUNvbG9yIChkcHksIGNtYXAsIGNvbG9yX25hbWUsIGNvbG9yKTsKKyAgICAgIHJl dHVybiBYUGFyc2VDb2xvciAoZHB5LCBjbWFwLCByZ2JfY29sb3JfbmFtZSwgY29sb3IpOwogICAg IH0KIAogICBmb3IgKGNhY2hlX2VudHJ5ID0gRlJBTUVfRElTUExBWV9JTkZPIChmKS0+Y29sb3Jf bmFtZXM7IGNhY2hlX2VudHJ5OwotLSAKMi4yMC4xCgo= --0000000000007af117058be7d127--