From debbugs-submit-bounces@debbugs.gnu.org Tue Nov 02 09:35:52 2010 Received: (at submit) by debbugs.gnu.org; 2 Nov 2010 13:35:52 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1PDH1j-0007mL-5C for submit@debbugs.gnu.org; Tue, 02 Nov 2010 09:35:51 -0400 Received: from eggs.gnu.org ([140.186.70.92]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1PDH1c-0007m9-Hl for submit@debbugs.gnu.org; Tue, 02 Nov 2010 09:35:49 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PDH5m-0000Jd-7N for submit@debbugs.gnu.org; Tue, 02 Nov 2010 09:40:07 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=unavailable version=3.3.1 Received: from lists.gnu.org ([199.232.76.165]:38019) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PDH5m-0000JW-22 for submit@debbugs.gnu.org; Tue, 02 Nov 2010 09:40:02 -0400 Received: from [140.186.70.92] (port=36134 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PDH5g-0004PX-E1 for bug-gnu-emacs@gnu.org; Tue, 02 Nov 2010 09:40:01 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PDDLX-0003Z1-PX for bug-gnu-emacs@gnu.org; Tue, 02 Nov 2010 05:40:06 -0400 Received: from coquelicot-s.easter-eggs.com ([213.215.37.94]:34944) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PDDLW-0003Xf-3i for bug-gnu-emacs@gnu.org; Tue, 02 Nov 2010 05:40:03 -0400 Received: from cigue.easter-eggs.fr (cigue.easter-eggs.fr [10.0.0.33]) by rose.easter-eggs.fr (Postfix) with ESMTPS id CF49E14047 for ; Tue, 2 Nov 2010 10:39:57 +0100 (CET) Received: from jdanjou by cigue.easter-eggs.fr with local (Exim 4.72) (envelope-from ) id 1PDDLT-0001zt-3g for bug-gnu-emacs@gnu.org; Tue, 02 Nov 2010 10:39:59 +0100 From: Julien Danjou To: bug-gnu-emacs@gnu.org Subject: 24.0.50; [PATCH] Add support for GIF transparency X-Debbugs-Cc: rfrancoise@debian.org Date: Tue, 02 Nov 2010 10:39:59 +0100 Message-ID: User-Agent: Gnus/5.110011 (No Gnus v0.11) Emacs/24.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6, seldom 2.4 (older, 4) X-Spam-Score: -5.4 (-----) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -5.5 (-----) --=-=-= Content-Type: text/plain Attached are 2 patches adding correct transparency support for GIF images inside Emacs. --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=gif-1.diff >From nobody Tue Nov 2 10:39:02 2010 Return-Path: Delivered-To: jd@danjou.info Received: by mx1.naquadah.org (Postfix, from userid 8) id 759E15C156; Wed, 27 Oct 2010 18:21:47 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on prometheus.naquadah.org X-Spam-Level: X-Spam-Status: No, score=-4.2 required=4.5 tests=BAYES_00,RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from lists.gnu.org (lists.gnu.org [199.232.76.165]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.naquadah.org (Postfix) with ESMTPS id CFC485C0FB for ; Wed, 27 Oct 2010 18:21:37 +0200 (CEST) Received: from localhost ([127.0.0.1]:41338 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PB8jo-0007sh-T3 for julien@danjou.info; Wed, 27 Oct 2010 12:20:32 -0400 Received: from [140.186.70.92] (port=36740 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PB8DC-0002Ay-0N for emacs-devel@gnu.org; Wed, 27 Oct 2010 11:47:02 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PB7Uj-0008Td-Q7 for emacs-devel@gnu.org; Wed, 27 Oct 2010 11:01:05 -0400 Received: from coquelicot-s.easter-eggs.com ([213.215.37.94]:57239) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PB7Uj-0008TR-Kj for emacs-devel@gnu.org; Wed, 27 Oct 2010 11:00:53 -0400 Received: from cigue.easter-eggs.fr (cigue.easter-eggs.fr [10.0.0.33]) by rose.easter-eggs.fr (Postfix) with ESMTPS id 307B71409D; Wed, 27 Oct 2010 17:00:49 +0200 (CEST) Received: from jdanjou by cigue.easter-eggs.fr with local (Exim 4.72) (envelope-from ) id 1PB7Ui-00012M-Lo; Wed, 27 Oct 2010 17:00:52 +0200 From: Julien Danjou To: emacs-devel@gnu.org Date: Wed, 27 Oct 2010 17:00:50 +0200 Message-Id: <1288191651-3958-1-git-send-email-julien@danjou.info> X-Mailer: git-send-email 1.7.2.3 In-Reply-To: References: X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) Cc: Julien Danjou Subject: [PATCH 1/2] image: add support for GIF transparency X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Mailman-Copy: yes Sender: emacs-devel-bounces+julien=danjou.info@gnu.org Errors-To: emacs-devel-bounces+julien=danjou.info@gnu.org Signed-off-by: Julien Danjou --- src/ChangeLog | 4 ++++ src/image.c | 27 +++++++++++++++++++++++---- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 51645ac..3d9b6bf 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,7 @@ +2010-10-27 Julien Danjou + + * image.c (gif_load): Add support for transparency. + 2010-10-26 Juanma Barranquero * eval.c (init_eval_once): Set max_lisp_eval_depth to 600; diff --git a/src/image.c b/src/image.c index b7edf05..e9b85fa 100644 --- a/src/image.c +++ b/src/image.c @@ -7096,12 +7096,15 @@ gif_read_from_memory (GifFileType *file, GifByteType *buf, int len) static const int interlace_start[] = {0, 4, 2, 1}; static const int interlace_increment[] = {8, 8, 4, 2}; +#define GIF_LOCAL_DESCRIPTOR_EXTENSION 249 + static int gif_load (struct frame *f, struct image *img) { Lisp_Object file, specified_file; Lisp_Object specified_data; int rc, width, height, x, y, i; + boolean transparent_p; XImagePtr ximg; ColorMapObject *gif_color_map; unsigned long pixel_colors[256]; @@ -7110,6 +7113,7 @@ gif_load (struct frame *f, struct image *img) int ino, image_height, image_width; gif_memory_source memsrc; unsigned char *raster; + unsigned int transparency_color_index; specified_file = image_spec_value (img->spec, QCfile, NULL); specified_data = image_spec_value (img->spec, QCdata, NULL); @@ -7182,6 +7186,16 @@ gif_load (struct frame *f, struct image *img) return 0; } + for(i = 0; i < gif->SavedImages[ino].ExtensionBlockCount; i++) + if (gif->SavedImages[ino].ExtensionBlocks[i].Function == GIF_LOCAL_DESCRIPTOR_EXTENSION + && gif->SavedImages[ino].ExtensionBlocks[i].ByteCount == 4 + /* Transparency enabled? */ + && gif->SavedImages[ino].ExtensionBlocks[i].Bytes[0] & 1) + { + transparent_p = 1; + transparency_color_index = (unsigned char) gif->SavedImages[ino].ExtensionBlocks[i].Bytes[3]; + } + img->corners[TOP_CORNER] = gif->SavedImages[ino].ImageDesc.Top; img->corners[LEFT_CORNER] = gif->SavedImages[ino].ImageDesc.Left; image_height = gif->SavedImages[ino].ImageDesc.Height; @@ -7220,10 +7234,15 @@ gif_load (struct frame *f, struct image *img) if (gif_color_map) for (i = 0; i < gif_color_map->ColorCount; ++i) { - int r = gif_color_map->Colors[i].Red << 8; - int g = gif_color_map->Colors[i].Green << 8; - int b = gif_color_map->Colors[i].Blue << 8; - pixel_colors[i] = lookup_rgb_color (f, r, g, b); + if (transparent_p && transparency_color_index == i) + pixel_colors[i] = FRAME_BACKGROUND_PIXEL (f); + else + { + int r = gif_color_map->Colors[i].Red << 8; + int g = gif_color_map->Colors[i].Green << 8; + int b = gif_color_map->Colors[i].Blue << 8; + pixel_colors[i] = lookup_rgb_color (f, r, g, b); + } } #ifdef COLOR_TABLE_SUPPORT -- 1.7.2.3 --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=gif-2.diff >From nobody Tue Nov 2 10:39:05 2010 Return-Path: Delivered-To: jd@danjou.info Received: by mx1.naquadah.org (Postfix, from userid 8) id 5BFBD5C17C; Wed, 27 Oct 2010 18:09:48 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on prometheus.naquadah.org X-Spam-Level: X-Spam-Status: No, score=-4.2 required=4.5 tests=BAYES_00,RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from lists.gnu.org (lists.gnu.org [199.232.76.165]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.naquadah.org (Postfix) with ESMTPS id EB16A5C159 for ; Wed, 27 Oct 2010 18:09:45 +0200 (CEST) Received: from localhost ([127.0.0.1]:41062 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PB8ZL-0008PA-M2 for julien@danjou.info; Wed, 27 Oct 2010 12:09:43 -0400 Received: from [140.186.70.92] (port=42377 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PB8DB-0002x0-LR for emacs-devel@gnu.org; Wed, 27 Oct 2010 11:46:57 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PB7Uk-0008Tu-9U for emacs-devel@gnu.org; Wed, 27 Oct 2010 11:01:08 -0400 Received: from coquelicot-s.easter-eggs.com ([213.215.37.94]:57242) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PB7Uk-0008Ta-1x for emacs-devel@gnu.org; Wed, 27 Oct 2010 11:00:54 -0400 Received: from cigue.easter-eggs.fr (cigue.easter-eggs.fr [10.0.0.33]) by rose.easter-eggs.fr (Postfix) with ESMTPS id E88E01425C; Wed, 27 Oct 2010 17:00:49 +0200 (CEST) Received: from jdanjou by cigue.easter-eggs.fr with local (Exim 4.72) (envelope-from ) id 1PB7Uj-00012P-EL; Wed, 27 Oct 2010 17:00:53 +0200 From: Julien Danjou To: emacs-devel@gnu.org Date: Wed, 27 Oct 2010 17:00:51 +0200 Message-Id: <1288191651-3958-2-git-send-email-julien@danjou.info> X-Mailer: git-send-email 1.7.2.3 In-Reply-To: References: X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) Cc: Julien Danjou Subject: [PATCH 2/2] image: add support for specified :background on GIF X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Mailman-Copy: yes Sender: emacs-devel-bounces+julien=danjou.info@gnu.org Errors-To: emacs-devel-bounces+julien=danjou.info@gnu.org Signed-off-by: Julien Danjou --- src/ChangeLog | 1 + src/image.c | 9 ++++++++- 2 files changed, 9 insertions(+), 1 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 3d9b6bf..65d2730 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,6 +1,7 @@ 2010-10-27 Julien Danjou * image.c (gif_load): Add support for transparency. + (gif_load): Add support for specified :background. 2010-10-26 Juanma Barranquero diff --git a/src/image.c b/src/image.c index e9b85fa..ef6a6d0 100644 --- a/src/image.c +++ b/src/image.c @@ -7235,7 +7235,14 @@ gif_load (struct frame *f, struct image *img) for (i = 0; i < gif_color_map->ColorCount; ++i) { if (transparent_p && transparency_color_index == i) - pixel_colors[i] = FRAME_BACKGROUND_PIXEL (f); + { + Lisp_Object specified_bg + = image_spec_value (img->spec, QCbackground, NULL); + if (STRINGP (specified_bg)) + pixel_colors[i] = x_alloc_image_color (f, img, specified_bg, FRAME_BACKGROUND_PIXEL (f)); + else + pixel_colors[i] = FRAME_BACKGROUND_PIXEL (f); + } else { int r = gif_color_map->Colors[i].Red << 8; -- 1.7.2.3 --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Cheers, --=20 Julien Danjou // =E1=90=B0 http://julien.danjou.info --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Fri Nov 05 09:20:20 2010 Received: (at 7316-done) by debbugs.gnu.org; 5 Nov 2010 13:20:20 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1PEMDM-0005Nb-Bt for submit@debbugs.gnu.org; Fri, 05 Nov 2010 09:20:20 -0400 Received: from coquelicot-s.easter-eggs.com ([213.215.37.94]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1PEMDK-0005NW-2d for 7316-done@debbugs.gnu.org; Fri, 05 Nov 2010 09:20:19 -0400 Received: from cigue.easter-eggs.fr (cigue.easter-eggs.fr [10.0.0.33]) by rose.easter-eggs.fr (Postfix) with ESMTPS id 3D48114047 for <7316-done@debbugs.gnu.org>; Fri, 5 Nov 2010 14:24:44 +0100 (CET) Received: from jdanjou by cigue.easter-eggs.fr with local (Exim 4.72) (envelope-from ) id 1PEMHe-0002Kn-Nx for 7316-done@debbugs.gnu.org; Fri, 05 Nov 2010 14:24:46 +0100 From: Julien Danjou To: 7316-done@debbugs.gnu.org Subject: Re: bug#7316: Acknowledgement (24.0.50; [PATCH] Add support for GIF transparency) References: Date: Fri, 05 Nov 2010 14:24:46 +0100 In-Reply-To: (GNU bug Tracking System's message of "Tue, 02 Nov 2010 13:36:02 +0000") Message-ID: User-Agent: Gnus/5.110011 (No Gnus v0.11) Emacs/24.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -3.7 (---) X-Debbugs-Envelope-To: 7316-done X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -3.5 (---) Already merged into trunk. --=20 Julien Danjou // =E1=90=B0 http://julien.danjou.info From unknown Fri Aug 15 16:19:45 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Sat, 04 Dec 2010 12:24:04 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator