From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: =?UTF-8?Q?Cl=c3=a9ment_Pit-Claudel?= Newsgroups: gmane.emacs.devel Subject: Re: SVG/PNG images in toolbars? Date: Sat, 14 Oct 2017 04:15:15 +0200 Message-ID: <5b6aaac8-6e10-4458-7947-3ac4bd40b47c@gmail.com> References: NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Trace: blaine.gmane.org 1507947376 16692 195.159.176.226 (14 Oct 2017 02:16:16 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Sat, 14 Oct 2017 02:16:16 +0000 (UTC) User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0 To: Emacs developers Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sat Oct 14 04:16:12 2017 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1e3Bze-0002uD-Sn for ged-emacs-devel@m.gmane.org; Sat, 14 Oct 2017 04:16:03 +0200 Original-Received: from localhost ([::1]:52485 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e3Bzm-0006Jx-BZ for ged-emacs-devel@m.gmane.org; Fri, 13 Oct 2017 22:16:10 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:34039) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e3Bz0-0006Is-1P for emacs-devel@gnu.org; Fri, 13 Oct 2017 22:15:22 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1e3Byw-0003XU-Ob for emacs-devel@gnu.org; Fri, 13 Oct 2017 22:15:21 -0400 Original-Received: from mail-wr0-x22a.google.com ([2a00:1450:400c:c0c::22a]:54475) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1e3Byw-0003WK-Dx for emacs-devel@gnu.org; Fri, 13 Oct 2017 22:15:18 -0400 Original-Received: by mail-wr0-x22a.google.com with SMTP id o44so2127438wrf.11 for ; Fri, 13 Oct 2017 19:15:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:references:from:message-id:date:user-agent:mime-version :in-reply-to:content-language:content-transfer-encoding; bh=UbSOalriMILZ6m7XrywkA6BeKESaSJQXBp29Igax9OE=; b=O7juWDTSS6vjCgBEg3sMxbN9KH7/zmUkPvA7d/pPCukZiMR6IYqiacCWvluNMRt3ZO ++H+VAttNt1KSMdga9nPAQGJENEBcMp9sD/x4BAO9Y1YYfdIlLeViVUKMrG4LnvN3enq edBlyH69Q5L5LbvAx9QxRrT/VIsmDE0n1cyL/Hhy+JJHCS/7NU2+mmC27H2RlG2LKN7r ObyuLasVgxHCCM00/utvsu6nBF5NhX9MCbbs022iueLMWrnNSzukvsXL7S5lZVysZJdi GOVnx6jXHD4LdPoFdsmOELHm3Gu3F5i9/aSPNpZzLIcPaDmKEFp+3sBvSE54tEwKUV3x 3euw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=UbSOalriMILZ6m7XrywkA6BeKESaSJQXBp29Igax9OE=; b=g9BvYw4s4eNz5sRLgSALWgjN6vkpGw+eUx9unilqEYKP/Woy4mZjw45Cze3UVw7A/K wgXB49Ma94hjE3MTdNrpu0bvdqjuHlHcxpK4uWCmjKgBZajSEJ4mlufXjRWzexCn2J24 BbIcLaKWBV4EY8dzHNq8g10Jyn2CBchZ/lMbOP69XARVoeX1UkkBEfUqHezaAx/lozX5 Wkv4Shj2XhuAdOfI2jrZjE7VNJUg9lXYzmWwh8h79HYgpQ3smfqQxBLLOZoAIAr22nNE a3sa4O2DMcgLGWx8ga933EGGRUFt+IDKE3HVGMZ5nkP0xoE1Q07wKLoIpGGtQIYCnTpn wMiA== X-Gm-Message-State: AMCzsaVXMAu/HTdgN+ePRXfX4rpNrUemvDITyj6A7fimohOY8Tx9IUx+ lzVoOPLScNzoqKV7KxC8oTBWdhgH X-Google-Smtp-Source: AOwi7QBktuF7MAioKrRvP4fNpHKYYvDROpIwCw9v/wlrO2SbBGA7f3jj/283P9xGFwKQ7KhAdE3otQ== X-Received: by 10.223.134.157 with SMTP id 29mr2614614wrx.72.1507947316809; Fri, 13 Oct 2017 19:15:16 -0700 (PDT) Original-Received: from [192.168.1.82] (43.225.24.109.rev.sfr.net. [109.24.225.43]) by smtp.gmail.com with ESMTPSA id 200sm2918339wmu.44.2017.10.13.19.15.15 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 13 Oct 2017 19:15:16 -0700 (PDT) In-Reply-To: Content-Language: en-GB X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c0c::22a X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:219474 Archived-At: On 2017-10-13 17:07, Clément Pit-Claudel wrote: > Do we support any form of scalable graphics for toolbar icons, or at least any format that supports anti-aliasing? All I can seem to get working is XPM/XBM/PBM, but I can't find a statement that we don't support anything better. Answering my own question: although the convenience functions in tool-bar.el produce find-image specs refering only to XPM/XBM/PBM images, other images do seem to work. I used the code below to post-process my tool-bar keymap, replacing XMP images with PNGs and SVGs. Question: could we extend tool-bar--image-expression to return a form including references to SVGs and PNGs? I'd be happy to provide a patch. Clément. (defun cpc--tool-bar-add-item (command icon map) "Add an ICON running COMMAND to MAP." (tool-bar-local-item-from-menu command nil map cpc--mode-map :vert-only t :cpc--icon icon)) (defun cpc--tool-bar-cleanup-binding (binding) "Recompute :image spec in toolbar entry BINDING." (pcase binding (`(,key menu-item ,doc ,cmd . ,props) (-when-let* ((img (plist-get props :cpc--icon))) (let ((specs nil)) (dolist (type '(xpm png svg)) (push `(:type ,type :file ,(format "%s.%S" img type)) specs)) (setq props (plist-put props :image `(find-image '(,@specs)))))) `(,key menu-item ,doc ,cmd . ,props)) (_ binding))) (defun cpc--tool-bar-cleanup-map (map) "Replace image paths in MAP. This is a hacky way to work around the fact that `tool-bar-local-item-from-menu' doesn't include `png' files in its `find-image' forms." (pcase map (`(keymap . ,bindings) `(keymap . ,(mapcar #'cpc--tool-bar-cleanup-binding bindings))) (_ map)))