Mercurial > emacs
annotate src/image.c @ 110405:db80a924ac12
Edit out libxml2 variables from src/Makefile.in.
sed1v2.inp (LIBXML2_LIBS, LIBXML2_CFLAGS): Edit to empty.
author | Eli Zaretskii <eliz@gnu.org> |
---|---|
date | Fri, 17 Sep 2010 14:44:56 +0200 |
parents | 44aeafd02c21 |
children | 93141d34a175 |
rev | line source |
---|---|
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1 /* Functions for image support on window system. |
64770
a0d1312ede66
Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
64084
diff
changeset
|
2 Copyright (C) 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
3 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
4 Free Software Foundation, Inc. |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5 |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6 This file is part of GNU Emacs. |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
7 |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8 GNU Emacs is free software: you can redistribute it and/or modify |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
9 it under the terms of the GNU General Public License as published by |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
10 the Free Software Foundation, either version 3 of the License, or |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
11 (at your option) any later version. |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
12 |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
13 GNU Emacs is distributed in the hope that it will be useful, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
14 but WITHOUT ANY WARRANTY; without even the implied warranty of |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
16 GNU General Public License for more details. |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
17 |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
18 You should have received a copy of the GNU General Public License |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
19 along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
20 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
21 #include <config.h> |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
22 #include <stdio.h> |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
23 #include <math.h> |
56065 | 24 #include <ctype.h> |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
25 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
26 #ifdef HAVE_UNISTD_H |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
27 #include <unistd.h> |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
28 #endif |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
29 |
105669
68dd71358159
* alloc.c: Do not define struct catchtag.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
104573
diff
changeset
|
30 #ifdef HAVE_PNG |
68dd71358159
* alloc.c: Do not define struct catchtag.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
104573
diff
changeset
|
31 #if defined HAVE_LIBPNG_PNG_H |
68dd71358159
* alloc.c: Do not define struct catchtag.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
104573
diff
changeset
|
32 # include <libpng/png.h> |
68dd71358159
* alloc.c: Do not define struct catchtag.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
104573
diff
changeset
|
33 #else |
68dd71358159
* alloc.c: Do not define struct catchtag.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
104573
diff
changeset
|
34 # include <png.h> |
68dd71358159
* alloc.c: Do not define struct catchtag.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
104573
diff
changeset
|
35 #endif |
106975
62f86ca36527
Use png_sig_cmp to allow linking with libpng 1.4.0.
Chong Yidong <cyd@stupidchicken.com>
parents:
106815
diff
changeset
|
36 #endif |
105669
68dd71358159
* alloc.c: Do not define struct catchtag.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
104573
diff
changeset
|
37 |
105678
d46b7a138955
* fns.c: Remove code for unsupported system: MAC_OS.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
105669
diff
changeset
|
38 #include <setjmp.h> |
d46b7a138955
* fns.c: Remove code for unsupported system: MAC_OS.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
105669
diff
changeset
|
39 |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
40 /* This makes the fields of a Display accessible, in Xlib header files. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
41 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
42 #define XLIB_ILLEGAL_ACCESS |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
43 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
44 #include "lisp.h" |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
45 #include "frame.h" |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
46 #include "window.h" |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
47 #include "dispextern.h" |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
48 #include "blockinput.h" |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
49 #include "systime.h" |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
50 #include <epaths.h> |
94934
669d4161a058
(image_ascent): Don't include "charset.h". Include
Kenichi Handa <handa@m17n.org>
parents:
94780
diff
changeset
|
51 #include "character.h" |
69771
fd6d18b61fa7
Include "charset.h" and "coding.h".
Kenichi Handa <handa@m17n.org>
parents:
69511
diff
changeset
|
52 #include "coding.h" |
92110
458c8171667a
Include termhooks.h to find the image_cache slot in terminal objects.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
92109
diff
changeset
|
53 #include "termhooks.h" |
94934
669d4161a058
(image_ascent): Don't include "charset.h". Include
Kenichi Handa <handa@m17n.org>
parents:
94780
diff
changeset
|
54 #include "font.h" |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
55 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
56 #ifdef HAVE_X_WINDOWS |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
57 #include "xterm.h" |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
58 #include <sys/types.h> |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
59 #include <sys/stat.h> |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
60 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
61 #define COLOR_TABLE_SUPPORT 1 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
62 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
63 typedef struct x_bitmap_record Bitmap_Record; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
64 #define GET_PIXEL(ximg, x, y) XGetPixel(ximg, x, y) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
65 #define NO_PIXMAP None |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
66 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
67 #define RGB_PIXEL_COLOR unsigned long |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
68 |
65250
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
69 #define PIX_MASK_RETAIN 0 |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
70 #define PIX_MASK_DRAW 1 |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
71 #endif /* HAVE_X_WINDOWS */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
72 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
73 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
74 #ifdef HAVE_NTGUI |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
75 #include "w32term.h" |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
76 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
77 /* W32_TODO : Color tables on W32. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
78 #undef COLOR_TABLE_SUPPORT |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
79 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
80 typedef struct w32_bitmap_record Bitmap_Record; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
81 #define GET_PIXEL(ximg, x, y) GetPixel(ximg, x, y) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
82 #define NO_PIXMAP 0 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
83 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
84 #define RGB_PIXEL_COLOR COLORREF |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
85 |
65250
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
86 #define PIX_MASK_RETAIN 0 |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
87 #define PIX_MASK_DRAW 1 |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
88 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
89 #define FRAME_X_VISUAL(f) FRAME_X_DISPLAY_INFO (f)->visual |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
90 #define x_defined_color w32_defined_color |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
91 #define DefaultDepthOfScreen(screen) (one_w32_display_info.n_cbits) |
100845
58017ff34d94
* w32term.c (x_query_colors, x_query_color): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
100826
diff
changeset
|
92 |
58017ff34d94
* w32term.c (x_query_colors, x_query_color): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
100826
diff
changeset
|
93 /* Functions from w32term.c that depend on XColor (so can't go in w32term.h |
58017ff34d94
* w32term.c (x_query_colors, x_query_color): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
100826
diff
changeset
|
94 without modifying lots of files). */ |
58017ff34d94
* w32term.c (x_query_colors, x_query_color): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
100826
diff
changeset
|
95 extern void x_query_colors (struct frame *f, XColor *colors, int ncolors); |
58017ff34d94
* w32term.c (x_query_colors, x_query_color): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
100826
diff
changeset
|
96 extern void x_query_color (struct frame *f, XColor *color); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
97 #endif /* HAVE_NTGUI */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
98 |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
99 #ifdef HAVE_NS |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
100 #include "nsterm.h" |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
101 #include <sys/types.h> |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
102 #include <sys/stat.h> |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
103 |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
104 #undef COLOR_TABLE_SUPPORT |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
105 |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
106 typedef struct ns_bitmap_record Bitmap_Record; |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
107 |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
108 #define GET_PIXEL(ximg, x, y) XGetPixel(ximg, x, y) |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
109 #define NO_PIXMAP 0 |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
110 |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
111 #define RGB_PIXEL_COLOR unsigned long |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
112 #define ZPixmap 0 |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
113 |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
114 #define PIX_MASK_RETAIN 0 |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
115 #define PIX_MASK_DRAW 1 |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
116 |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
117 #define FRAME_X_VISUAL FRAME_NS_DISPLAY_INFO(f)->visual |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
118 #define x_defined_color(f, name, color_def, alloc) \ |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
119 ns_defined_color (f, name, color_def, alloc, 0) |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
120 #define FRAME_X_SCREEN(f) 0 |
96870
30f1368d9cf6
* term/ns-win.el: Rename ns- functions/variables to the
Dan Nicolaescu <dann@ics.uci.edu>
parents:
96763
diff
changeset
|
121 #define DefaultDepthOfScreen(screen) x_display_list->n_planes |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
122 #endif /* HAVE_NS */ |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
123 |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
124 |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
125 /* Search path for bitmap files. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
126 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
127 Lisp_Object Vx_bitmap_file_path; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
128 |
109668
d9a022ec322c
Remove extern declarations in .c files, .h files have them.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109653
diff
changeset
|
129 /* The symbol `postscript' identifying images of this type. */ |
d9a022ec322c
Remove extern declarations in .c files, .h files have them.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109653
diff
changeset
|
130 |
d9a022ec322c
Remove extern declarations in .c files, .h files have them.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109653
diff
changeset
|
131 Lisp_Object Qpostscript; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
132 |
109100
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
133 static void x_disable_image (struct frame *, struct image *); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
134 static void x_edge_detection (struct frame *, struct image *, Lisp_Object, |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
135 Lisp_Object); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
136 |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
137 static void init_color_table (void); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
138 static unsigned long lookup_rgb_color (struct frame *f, int r, int g, int b); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
139 #ifdef COLOR_TABLE_SUPPORT |
109100
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
140 static void free_color_table (void); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
141 static unsigned long *colors_in_color_table (int *n); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
142 static unsigned long lookup_pixel_color (struct frame *f, unsigned long p); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
143 #endif |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
144 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
145 /* Code to deal with bitmaps. Bitmaps are referenced by their bitmap |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
146 id, which is just an int that this section returns. Bitmaps are |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
147 reference counted so they can be shared among frames. |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
148 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
149 Bitmap indices are guaranteed to be > 0, so a negative number can |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
150 be used to indicate no bitmap. |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
151 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
152 If you use x_create_bitmap_from_data, then you must keep track of |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
153 the bitmaps yourself. That is, creating a bitmap from the same |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
154 data more than once will not be caught. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
155 |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
156 #ifdef HAVE_NS |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
157 XImagePtr |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
158 XGetImage (Display *display, Pixmap pixmap, int x, int y, |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
159 unsigned int width, unsigned int height, |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
160 unsigned long plane_mask, int format) |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
161 { |
96763
a27390a84360
change most cases of PENDING to TODO, some to FIXME or XXX
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
96675
diff
changeset
|
162 /* TODO: not sure what this function is supposed to do.. */ |
109160
f8660b83cdbf
Fix whitespace to follow coding guidelines.
Juanma Barranquero <lekktu@gmail.com>
parents:
109144
diff
changeset
|
163 ns_retain_object (pixmap); |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
164 return pixmap; |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
165 } |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
166 |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
167 /* use with imgs created by ns_image_for_XPM */ |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
168 unsigned long |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
169 XGetPixel (XImagePtr ximage, int x, int y) |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
170 { |
109160
f8660b83cdbf
Fix whitespace to follow coding guidelines.
Juanma Barranquero <lekktu@gmail.com>
parents:
109144
diff
changeset
|
171 return ns_get_pixel (ximage, x, y); |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
172 } |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
173 |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
174 /* use with imgs created by ns_image_for_XPM; alpha set to 1; |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
175 pixel is assumed to be in form RGB */ |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
176 void |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
177 XPutPixel (XImagePtr ximage, int x, int y, unsigned long pixel) |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
178 { |
109160
f8660b83cdbf
Fix whitespace to follow coding guidelines.
Juanma Barranquero <lekktu@gmail.com>
parents:
109144
diff
changeset
|
179 ns_put_pixel (ximage, x, y, pixel); |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
180 } |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
181 #endif /* HAVE_NS */ |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
182 |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
183 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
184 /* Functions to access the contents of a bitmap, given an id. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
185 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
186 int |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
187 x_bitmap_height (FRAME_PTR f, int id) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
188 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
189 return FRAME_X_DISPLAY_INFO (f)->bitmaps[id - 1].height; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
190 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
191 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
192 int |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
193 x_bitmap_width (FRAME_PTR f, int id) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
194 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
195 return FRAME_X_DISPLAY_INFO (f)->bitmaps[id - 1].width; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
196 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
197 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
198 #if defined (HAVE_X_WINDOWS) || defined (HAVE_NTGUI) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
199 int |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
200 x_bitmap_pixmap (FRAME_PTR f, int id) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
201 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
202 return (int) FRAME_X_DISPLAY_INFO (f)->bitmaps[id - 1].pixmap; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
203 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
204 #endif |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
205 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
206 #ifdef HAVE_X_WINDOWS |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
207 int |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
208 x_bitmap_mask (FRAME_PTR f, int id) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
209 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
210 return FRAME_X_DISPLAY_INFO (f)->bitmaps[id - 1].mask; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
211 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
212 #endif |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
213 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
214 /* Allocate a new bitmap record. Returns index of new record. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
215 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
216 static int |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
217 x_allocate_bitmap_record (FRAME_PTR f) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
218 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
219 Display_Info *dpyinfo = FRAME_X_DISPLAY_INFO (f); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
220 int i; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
221 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
222 if (dpyinfo->bitmaps == NULL) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
223 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
224 dpyinfo->bitmaps_size = 10; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
225 dpyinfo->bitmaps |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
226 = (Bitmap_Record *) xmalloc (dpyinfo->bitmaps_size * sizeof (Bitmap_Record)); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
227 dpyinfo->bitmaps_last = 1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
228 return 1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
229 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
230 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
231 if (dpyinfo->bitmaps_last < dpyinfo->bitmaps_size) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
232 return ++dpyinfo->bitmaps_last; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
233 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
234 for (i = 0; i < dpyinfo->bitmaps_size; ++i) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
235 if (dpyinfo->bitmaps[i].refcount == 0) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
236 return i + 1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
237 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
238 dpyinfo->bitmaps_size *= 2; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
239 dpyinfo->bitmaps |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
240 = (Bitmap_Record *) xrealloc (dpyinfo->bitmaps, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
241 dpyinfo->bitmaps_size * sizeof (Bitmap_Record)); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
242 return ++dpyinfo->bitmaps_last; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
243 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
244 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
245 /* Add one reference to the reference count of the bitmap with id ID. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
246 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
247 void |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
248 x_reference_bitmap (FRAME_PTR f, int id) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
249 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
250 ++FRAME_X_DISPLAY_INFO (f)->bitmaps[id - 1].refcount; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
251 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
252 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
253 /* Create a bitmap for frame F from a HEIGHT x WIDTH array of bits at BITS. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
254 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
255 int |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
256 x_create_bitmap_from_data (struct frame *f, char *bits, unsigned int width, unsigned int height) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
257 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
258 Display_Info *dpyinfo = FRAME_X_DISPLAY_INFO (f); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
259 int id; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
260 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
261 #ifdef HAVE_X_WINDOWS |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
262 Pixmap bitmap; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
263 bitmap = XCreateBitmapFromData (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
264 bits, width, height); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
265 if (! bitmap) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
266 return -1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
267 #endif /* HAVE_X_WINDOWS */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
268 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
269 #ifdef HAVE_NTGUI |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
270 Pixmap bitmap; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
271 bitmap = CreateBitmap (width, height, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
272 FRAME_X_DISPLAY_INFO (XFRAME (frame))->n_planes, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
273 FRAME_X_DISPLAY_INFO (XFRAME (frame))->n_cbits, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
274 bits); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
275 if (! bitmap) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
276 return -1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
277 #endif /* HAVE_NTGUI */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
278 |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
279 #ifdef HAVE_NS |
109160
f8660b83cdbf
Fix whitespace to follow coding guidelines.
Juanma Barranquero <lekktu@gmail.com>
parents:
109144
diff
changeset
|
280 void *bitmap = ns_image_from_XBM (bits, width, height); |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
281 if (!bitmap) |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
282 return -1; |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
283 #endif |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
284 |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
285 id = x_allocate_bitmap_record (f); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
286 |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
287 #ifdef HAVE_NS |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
288 dpyinfo->bitmaps[id - 1].img = bitmap; |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
289 dpyinfo->bitmaps[id - 1].depth = 1; |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
290 #endif |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
291 |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
292 dpyinfo->bitmaps[id - 1].file = NULL; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
293 dpyinfo->bitmaps[id - 1].height = height; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
294 dpyinfo->bitmaps[id - 1].width = width; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
295 dpyinfo->bitmaps[id - 1].refcount = 1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
296 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
297 #ifdef HAVE_X_WINDOWS |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
298 dpyinfo->bitmaps[id - 1].pixmap = bitmap; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
299 dpyinfo->bitmaps[id - 1].have_mask = 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
300 dpyinfo->bitmaps[id - 1].depth = 1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
301 #endif /* HAVE_X_WINDOWS */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
302 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
303 #ifdef HAVE_NTGUI |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
304 dpyinfo->bitmaps[id - 1].pixmap = bitmap; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
305 dpyinfo->bitmaps[id - 1].hinst = NULL; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
306 dpyinfo->bitmaps[id - 1].depth = 1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
307 #endif /* HAVE_NTGUI */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
308 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
309 return id; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
310 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
311 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
312 /* Create bitmap from file FILE for frame F. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
313 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
314 int |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
315 x_create_bitmap_from_file (struct frame *f, Lisp_Object file) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
316 { |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
317 Display_Info *dpyinfo = FRAME_X_DISPLAY_INFO (f); |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
318 |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
319 #ifdef HAVE_NTGUI |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
320 return -1; /* W32_TODO : bitmap support */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
321 #endif /* HAVE_NTGUI */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
322 |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
323 #ifdef HAVE_NS |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
324 int id; |
109160
f8660b83cdbf
Fix whitespace to follow coding guidelines.
Juanma Barranquero <lekktu@gmail.com>
parents:
109144
diff
changeset
|
325 void *bitmap = ns_image_from_file (file); |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
326 |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
327 if (!bitmap) |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
328 return -1; |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
329 |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
330 |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
331 id = x_allocate_bitmap_record (f); |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
332 dpyinfo->bitmaps[id - 1].img = bitmap; |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
333 dpyinfo->bitmaps[id - 1].refcount = 1; |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
334 dpyinfo->bitmaps[id - 1].file = (char *) xmalloc (SBYTES (file) + 1); |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
335 dpyinfo->bitmaps[id - 1].depth = 1; |
109160
f8660b83cdbf
Fix whitespace to follow coding guidelines.
Juanma Barranquero <lekktu@gmail.com>
parents:
109144
diff
changeset
|
336 dpyinfo->bitmaps[id - 1].height = ns_image_width (bitmap); |
f8660b83cdbf
Fix whitespace to follow coding guidelines.
Juanma Barranquero <lekktu@gmail.com>
parents:
109144
diff
changeset
|
337 dpyinfo->bitmaps[id - 1].width = ns_image_height (bitmap); |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
338 strcpy (dpyinfo->bitmaps[id - 1].file, SDATA (file)); |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
339 return id; |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
340 #endif |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
341 |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
342 #ifdef HAVE_X_WINDOWS |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
343 unsigned int width, height; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
344 Pixmap bitmap; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
345 int xhot, yhot, result, id; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
346 Lisp_Object found; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
347 int fd; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
348 char *filename; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
349 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
350 /* Look for an existing bitmap with the same name. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
351 for (id = 0; id < dpyinfo->bitmaps_last; ++id) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
352 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
353 if (dpyinfo->bitmaps[id].refcount |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
354 && dpyinfo->bitmaps[id].file |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
355 && !strcmp (dpyinfo->bitmaps[id].file, (char *) SDATA (file))) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
356 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
357 ++dpyinfo->bitmaps[id].refcount; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
358 return id + 1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
359 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
360 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
361 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
362 /* Search bitmap-file-path for the file, if appropriate. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
363 fd = openp (Vx_bitmap_file_path, file, Qnil, &found, Qnil); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
364 if (fd < 0) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
365 return -1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
366 emacs_close (fd); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
367 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
368 filename = (char *) SDATA (found); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
369 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
370 result = XReadBitmapFile (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
371 filename, &width, &height, &bitmap, &xhot, &yhot); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
372 if (result != BitmapSuccess) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
373 return -1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
374 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
375 id = x_allocate_bitmap_record (f); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
376 dpyinfo->bitmaps[id - 1].pixmap = bitmap; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
377 dpyinfo->bitmaps[id - 1].have_mask = 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
378 dpyinfo->bitmaps[id - 1].refcount = 1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
379 dpyinfo->bitmaps[id - 1].file = (char *) xmalloc (SBYTES (file) + 1); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
380 dpyinfo->bitmaps[id - 1].depth = 1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
381 dpyinfo->bitmaps[id - 1].height = height; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
382 dpyinfo->bitmaps[id - 1].width = width; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
383 strcpy (dpyinfo->bitmaps[id - 1].file, SDATA (file)); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
384 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
385 return id; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
386 #endif /* HAVE_X_WINDOWS */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
387 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
388 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
389 /* Free bitmap B. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
390 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
391 static void |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
392 free_bitmap_record (Display_Info *dpyinfo, Bitmap_Record *bm) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
393 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
394 #ifdef HAVE_X_WINDOWS |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
395 XFreePixmap (dpyinfo->display, bm->pixmap); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
396 if (bm->have_mask) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
397 XFreePixmap (dpyinfo->display, bm->mask); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
398 #endif /* HAVE_X_WINDOWS */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
399 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
400 #ifdef HAVE_NTGUI |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
401 DeleteObject (bm->pixmap); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
402 #endif /* HAVE_NTGUI */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
403 |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
404 #ifdef HAVE_NS |
109160
f8660b83cdbf
Fix whitespace to follow coding guidelines.
Juanma Barranquero <lekktu@gmail.com>
parents:
109144
diff
changeset
|
405 ns_release_object (bm->img); |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
406 #endif |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
407 |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
408 if (bm->file) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
409 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
410 xfree (bm->file); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
411 bm->file = NULL; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
412 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
413 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
414 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
415 /* Remove reference to bitmap with id number ID. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
416 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
417 void |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
418 x_destroy_bitmap (FRAME_PTR f, int id) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
419 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
420 Display_Info *dpyinfo = FRAME_X_DISPLAY_INFO (f); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
421 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
422 if (id > 0) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
423 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
424 Bitmap_Record *bm = &dpyinfo->bitmaps[id - 1]; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
425 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
426 if (--bm->refcount == 0) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
427 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
428 BLOCK_INPUT; |
85095
4f61ded4a62e
(free_bitmap_record): Renamed from Free_Bitmap_Record.
Richard M. Stallman <rms@gnu.org>
parents:
85039
diff
changeset
|
429 free_bitmap_record (dpyinfo, bm); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
430 UNBLOCK_INPUT; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
431 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
432 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
433 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
434 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
435 /* Free all the bitmaps for the display specified by DPYINFO. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
436 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
437 void |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
438 x_destroy_all_bitmaps (Display_Info *dpyinfo) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
439 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
440 int i; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
441 Bitmap_Record *bm = dpyinfo->bitmaps; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
442 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
443 for (i = 0; i < dpyinfo->bitmaps_last; i++, bm++) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
444 if (bm->refcount > 0) |
85095
4f61ded4a62e
(free_bitmap_record): Renamed from Free_Bitmap_Record.
Richard M. Stallman <rms@gnu.org>
parents:
85039
diff
changeset
|
445 free_bitmap_record (dpyinfo, bm); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
446 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
447 dpyinfo->bitmaps_last = 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
448 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
449 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
450 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
451 #ifdef HAVE_X_WINDOWS |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
452 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
453 /* Useful functions defined in the section |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
454 `Image type independent image structures' below. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
455 |
109100
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
456 static unsigned long four_corners_best (XImagePtr ximg, |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
457 int *corners, |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
458 unsigned long width, |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
459 unsigned long height); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
460 |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
461 static int x_create_x_image_and_pixmap (struct frame *f, int width, int height, |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
462 int depth, XImagePtr *ximg, |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
463 Pixmap *pixmap); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
464 |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
465 static void x_destroy_x_image (XImagePtr ximg); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
466 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
467 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
468 /* Create a mask of a bitmap. Note is this not a perfect mask. |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
469 It's nicer with some borders in this context */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
470 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
471 int |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
472 x_create_bitmap_mask (struct frame *f, int id) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
473 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
474 Pixmap pixmap, mask; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
475 XImagePtr ximg, mask_img; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
476 unsigned long width, height; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
477 int result; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
478 unsigned long bg; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
479 unsigned long x, y, xp, xm, yp, ym; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
480 GC gc; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
481 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
482 Display_Info *dpyinfo = FRAME_X_DISPLAY_INFO (f); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
483 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
484 if (!(id > 0)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
485 return -1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
486 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
487 pixmap = x_bitmap_pixmap (f, id); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
488 width = x_bitmap_width (f, id); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
489 height = x_bitmap_height (f, id); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
490 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
491 BLOCK_INPUT; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
492 ximg = XGetImage (FRAME_X_DISPLAY (f), pixmap, 0, 0, width, height, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
493 ~0, ZPixmap); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
494 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
495 if (!ximg) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
496 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
497 UNBLOCK_INPUT; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
498 return -1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
499 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
500 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
501 result = x_create_x_image_and_pixmap (f, width, height, 1, &mask_img, &mask); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
502 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
503 UNBLOCK_INPUT; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
504 if (!result) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
505 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
506 XDestroyImage (ximg); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
507 return -1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
508 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
509 |
70168
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
510 bg = four_corners_best (ximg, NULL, width, height); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
511 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
512 for (y = 0; y < ximg->height; ++y) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
513 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
514 for (x = 0; x < ximg->width; ++x) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
515 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
516 xp = x != ximg->width - 1 ? x + 1 : 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
517 xm = x != 0 ? x - 1 : ximg->width - 1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
518 yp = y != ximg->height - 1 ? y + 1 : 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
519 ym = y != 0 ? y - 1 : ximg->height - 1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
520 if (XGetPixel (ximg, x, y) == bg |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
521 && XGetPixel (ximg, x, yp) == bg |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
522 && XGetPixel (ximg, x, ym) == bg |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
523 && XGetPixel (ximg, xp, y) == bg |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
524 && XGetPixel (ximg, xp, yp) == bg |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
525 && XGetPixel (ximg, xp, ym) == bg |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
526 && XGetPixel (ximg, xm, y) == bg |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
527 && XGetPixel (ximg, xm, yp) == bg |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
528 && XGetPixel (ximg, xm, ym) == bg) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
529 XPutPixel (mask_img, x, y, 0); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
530 else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
531 XPutPixel (mask_img, x, y, 1); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
532 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
533 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
534 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
535 xassert (interrupt_input_blocked); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
536 gc = XCreateGC (FRAME_X_DISPLAY (f), mask, 0, NULL); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
537 XPutImage (FRAME_X_DISPLAY (f), mask, gc, mask_img, 0, 0, 0, 0, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
538 width, height); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
539 XFreeGC (FRAME_X_DISPLAY (f), gc); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
540 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
541 dpyinfo->bitmaps[id - 1].have_mask = 1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
542 dpyinfo->bitmaps[id - 1].mask = mask; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
543 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
544 XDestroyImage (ximg); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
545 x_destroy_x_image (mask_img); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
546 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
547 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
548 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
549 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
550 #endif /* HAVE_X_WINDOWS */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
551 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
552 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
553 /*********************************************************************** |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
554 Image types |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
555 ***********************************************************************/ |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
556 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
557 /* Value is the number of elements of vector VECTOR. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
558 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
559 #define DIM(VECTOR) (sizeof (VECTOR) / sizeof *(VECTOR)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
560 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
561 /* List of supported image types. Use define_image_type to add new |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
562 types. Use lookup_image_type to find a type for a given symbol. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
563 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
564 static struct image_type *image_types; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
565 |
56104
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
566 /* A list of symbols, one for each supported image type. */ |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
567 |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
568 Lisp_Object Vimage_types; |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
569 |
62815
94db1d097527
(Vimage_library_alist): Moved from image.el.
Juanma Barranquero <lekktu@gmail.com>
parents:
62561
diff
changeset
|
570 /* An alist of image types and libraries that implement the type. */ |
94db1d097527
(Vimage_library_alist): Moved from image.el.
Juanma Barranquero <lekktu@gmail.com>
parents:
62561
diff
changeset
|
571 |
94db1d097527
(Vimage_library_alist): Moved from image.el.
Juanma Barranquero <lekktu@gmail.com>
parents:
62561
diff
changeset
|
572 Lisp_Object Vimage_library_alist; |
94db1d097527
(Vimage_library_alist): Moved from image.el.
Juanma Barranquero <lekktu@gmail.com>
parents:
62561
diff
changeset
|
573 |
56104
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
574 /* Cache for delayed-loading image types. */ |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
575 |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
576 static Lisp_Object Vimage_type_cache; |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
577 |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
578 /* The symbol `xbm' which is used as the type symbol for XBM images. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
579 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
580 Lisp_Object Qxbm; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
581 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
582 /* Keywords. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
583 |
107719
9c0ed2d6731a
Rename `image-extension-data' to `image-metadata'.
Juri Linkov <juri@jurta.org>
parents:
106975
diff
changeset
|
584 Lisp_Object QCascent, QCmargin, QCrelief, Qcount, Qextension_data; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
585 Lisp_Object QCconversion, QCcolor_symbols, QCheuristic_mask; |
109849 | 586 Lisp_Object QCindex, QCmatrix, QCcolor_adjustment, QCmask, QCgeometry, QCcrop, QCrotation; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
587 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
588 /* Other symbols. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
589 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
590 Lisp_Object Qlaplace, Qemboss, Qedge_detection, Qheuristic; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
591 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
592 /* Time in seconds after which images should be removed from the cache |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
593 if not displayed. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
594 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
595 Lisp_Object Vimage_cache_eviction_delay; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
596 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
597 /* Function prototypes. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
598 |
109100
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
599 static Lisp_Object define_image_type (struct image_type *type, int loaded); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
600 static struct image_type *lookup_image_type (Lisp_Object symbol); |
109717
8949aad5e992
Use const char* instead of char*.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109668
diff
changeset
|
601 static void image_error (const char *format, Lisp_Object, Lisp_Object); |
109100
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
602 static void x_laplace (struct frame *, struct image *); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
603 static void x_emboss (struct frame *, struct image *); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
604 static int x_build_heuristic_mask (struct frame *, struct image *, |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
605 Lisp_Object); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
606 |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
607 #define CACHE_IMAGE_TYPE(type, status) \ |
56104
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
608 do { Vimage_type_cache = Fcons (Fcons (type, status), Vimage_type_cache); } while (0) |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
609 |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
610 #define ADD_IMAGE_TYPE(type) \ |
56104
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
611 do { Vimage_types = Fcons (type, Vimage_types); } while (0) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
612 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
613 /* Define a new image type from TYPE. This adds a copy of TYPE to |
56104
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
614 image_types and caches the loading status of TYPE. */ |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
615 |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
616 static Lisp_Object |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
617 define_image_type (struct image_type *type, int loaded) |
56104
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
618 { |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
619 Lisp_Object success; |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
620 |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
621 if (!loaded) |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
622 success = Qnil; |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
623 else |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
624 { |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
625 /* Make a copy of TYPE to avoid a bus error in a dumped Emacs. |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
626 The initialized data segment is read-only. */ |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
627 struct image_type *p = (struct image_type *) xmalloc (sizeof *p); |
109165
750db9f3e6d8
Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents:
109160
diff
changeset
|
628 memcpy (p, type, sizeof *p); |
56104
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
629 p->next = image_types; |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
630 image_types = p; |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
631 success = Qt; |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
632 } |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
633 |
56288
7acb38a05354
(CHECK_LIB_AVAILABLE): Add third parameter LIBRARIES.
Andreas Schwab <schwab@suse.de>
parents:
56132
diff
changeset
|
634 CACHE_IMAGE_TYPE (*type->type, success); |
56104
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
635 return success; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
636 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
637 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
638 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
639 /* Look up image type SYMBOL, and return a pointer to its image_type |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
640 structure. Value is null if SYMBOL is not a known image type. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
641 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
642 static INLINE struct image_type * |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
643 lookup_image_type (Lisp_Object symbol) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
644 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
645 struct image_type *type; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
646 |
56132
56c3ef9caeed
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-410
Miles Bader <miles@gnu.org>
parents:
56104
diff
changeset
|
647 /* We must initialize the image-type if it hasn't been already. */ |
62815
94db1d097527
(Vimage_library_alist): Moved from image.el.
Juanma Barranquero <lekktu@gmail.com>
parents:
62561
diff
changeset
|
648 if (NILP (Finit_image_library (symbol, Vimage_library_alist))) |
56132
56c3ef9caeed
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-410
Miles Bader <miles@gnu.org>
parents:
56104
diff
changeset
|
649 return 0; /* unimplemented */ |
56c3ef9caeed
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-410
Miles Bader <miles@gnu.org>
parents:
56104
diff
changeset
|
650 |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
651 for (type = image_types; type; type = type->next) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
652 if (EQ (symbol, *type->type)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
653 break; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
654 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
655 return type; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
656 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
657 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
658 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
659 /* Value is non-zero if OBJECT is a valid Lisp image specification. A |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
660 valid image specification is a list whose car is the symbol |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
661 `image', and whose rest is a property list. The property list must |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
662 contain a value for key `:type'. That value must be the name of a |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
663 supported image type. The rest of the property list depends on the |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
664 image type. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
665 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
666 int |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
667 valid_image_p (Lisp_Object object) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
668 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
669 int valid_p = 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
670 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
671 if (IMAGEP (object)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
672 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
673 Lisp_Object tem; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
674 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
675 for (tem = XCDR (object); CONSP (tem); tem = XCDR (tem)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
676 if (EQ (XCAR (tem), QCtype)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
677 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
678 tem = XCDR (tem); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
679 if (CONSP (tem) && SYMBOLP (XCAR (tem))) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
680 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
681 struct image_type *type; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
682 type = lookup_image_type (XCAR (tem)); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
683 if (type) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
684 valid_p = type->valid_p (object); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
685 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
686 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
687 break; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
688 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
689 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
690 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
691 return valid_p; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
692 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
693 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
694 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
695 /* Log error message with format string FORMAT and argument ARG. |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
696 Signaling an error, e.g. when an image cannot be loaded, is not a |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
697 good idea because this would interrupt redisplay, and the error |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
698 message display would lead to another redisplay. This function |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
699 therefore simply displays a message. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
700 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
701 static void |
109717
8949aad5e992
Use const char* instead of char*.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109668
diff
changeset
|
702 image_error (const char *format, Lisp_Object arg1, Lisp_Object arg2) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
703 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
704 add_to_log (format, arg1, arg2); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
705 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
706 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
707 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
708 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
709 /*********************************************************************** |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
710 Image specifications |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
711 ***********************************************************************/ |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
712 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
713 enum image_value_type |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
714 { |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
715 IMAGE_DONT_CHECK_VALUE_TYPE, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
716 IMAGE_STRING_VALUE, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
717 IMAGE_STRING_OR_NIL_VALUE, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
718 IMAGE_SYMBOL_VALUE, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
719 IMAGE_POSITIVE_INTEGER_VALUE, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
720 IMAGE_POSITIVE_INTEGER_VALUE_OR_PAIR, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
721 IMAGE_NON_NEGATIVE_INTEGER_VALUE, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
722 IMAGE_ASCENT_VALUE, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
723 IMAGE_INTEGER_VALUE, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
724 IMAGE_FUNCTION_VALUE, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
725 IMAGE_NUMBER_VALUE, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
726 IMAGE_BOOL_VALUE |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
727 }; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
728 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
729 /* Structure used when parsing image specifications. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
730 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
731 struct image_keyword |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
732 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
733 /* Name of keyword. */ |
109717
8949aad5e992
Use const char* instead of char*.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109668
diff
changeset
|
734 const char *name; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
735 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
736 /* The type of value allowed. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
737 enum image_value_type type; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
738 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
739 /* Non-zero means key must be present. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
740 int mandatory_p; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
741 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
742 /* Used to recognize duplicate keywords in a property list. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
743 int count; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
744 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
745 /* The value that was found. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
746 Lisp_Object value; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
747 }; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
748 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
749 |
109100
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
750 static int parse_image_spec (Lisp_Object, struct image_keyword *, |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
751 int, Lisp_Object); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
752 static Lisp_Object image_spec_value (Lisp_Object, Lisp_Object, int *); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
753 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
754 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
755 /* Parse image spec SPEC according to KEYWORDS. A valid image spec |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
756 has the format (image KEYWORD VALUE ...). One of the keyword/ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
757 value pairs must be `:type TYPE'. KEYWORDS is a vector of |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
758 image_keywords structures of size NKEYWORDS describing other |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
759 allowed keyword/value pairs. Value is non-zero if SPEC is valid. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
760 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
761 static int |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
762 parse_image_spec (Lisp_Object spec, struct image_keyword *keywords, |
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
763 int nkeywords, Lisp_Object type) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
764 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
765 int i; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
766 Lisp_Object plist; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
767 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
768 if (!IMAGEP (spec)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
769 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
770 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
771 plist = XCDR (spec); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
772 while (CONSP (plist)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
773 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
774 Lisp_Object key, value; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
775 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
776 /* First element of a pair must be a symbol. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
777 key = XCAR (plist); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
778 plist = XCDR (plist); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
779 if (!SYMBOLP (key)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
780 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
781 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
782 /* There must follow a value. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
783 if (!CONSP (plist)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
784 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
785 value = XCAR (plist); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
786 plist = XCDR (plist); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
787 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
788 /* Find key in KEYWORDS. Error if not found. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
789 for (i = 0; i < nkeywords; ++i) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
790 if (strcmp (keywords[i].name, SDATA (SYMBOL_NAME (key))) == 0) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
791 break; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
792 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
793 if (i == nkeywords) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
794 continue; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
795 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
796 /* Record that we recognized the keyword. If a keywords |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
797 was found more than once, it's an error. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
798 keywords[i].value = value; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
799 ++keywords[i].count; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
800 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
801 if (keywords[i].count > 1) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
802 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
803 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
804 /* Check type of value against allowed type. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
805 switch (keywords[i].type) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
806 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
807 case IMAGE_STRING_VALUE: |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
808 if (!STRINGP (value)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
809 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
810 break; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
811 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
812 case IMAGE_STRING_OR_NIL_VALUE: |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
813 if (!STRINGP (value) && !NILP (value)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
814 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
815 break; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
816 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
817 case IMAGE_SYMBOL_VALUE: |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
818 if (!SYMBOLP (value)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
819 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
820 break; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
821 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
822 case IMAGE_POSITIVE_INTEGER_VALUE: |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
823 if (!INTEGERP (value) || XINT (value) <= 0) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
824 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
825 break; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
826 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
827 case IMAGE_POSITIVE_INTEGER_VALUE_OR_PAIR: |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
828 if (INTEGERP (value) && XINT (value) >= 0) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
829 break; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
830 if (CONSP (value) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
831 && INTEGERP (XCAR (value)) && INTEGERP (XCDR (value)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
832 && XINT (XCAR (value)) >= 0 && XINT (XCDR (value)) >= 0) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
833 break; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
834 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
835 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
836 case IMAGE_ASCENT_VALUE: |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
837 if (SYMBOLP (value) && EQ (value, Qcenter)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
838 break; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
839 else if (INTEGERP (value) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
840 && XINT (value) >= 0 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
841 && XINT (value) <= 100) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
842 break; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
843 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
844 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
845 case IMAGE_NON_NEGATIVE_INTEGER_VALUE: |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
846 if (!INTEGERP (value) || XINT (value) < 0) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
847 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
848 break; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
849 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
850 case IMAGE_DONT_CHECK_VALUE_TYPE: |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
851 break; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
852 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
853 case IMAGE_FUNCTION_VALUE: |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
854 value = indirect_function (value); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
855 if (SUBRP (value) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
856 || COMPILEDP (value) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
857 || (CONSP (value) && EQ (XCAR (value), Qlambda))) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
858 break; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
859 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
860 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
861 case IMAGE_NUMBER_VALUE: |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
862 if (!INTEGERP (value) && !FLOATP (value)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
863 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
864 break; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
865 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
866 case IMAGE_INTEGER_VALUE: |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
867 if (!INTEGERP (value)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
868 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
869 break; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
870 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
871 case IMAGE_BOOL_VALUE: |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
872 if (!NILP (value) && !EQ (value, Qt)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
873 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
874 break; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
875 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
876 default: |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
877 abort (); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
878 break; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
879 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
880 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
881 if (EQ (key, QCtype) && !EQ (type, value)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
882 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
883 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
884 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
885 /* Check that all mandatory fields are present. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
886 for (i = 0; i < nkeywords; ++i) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
887 if (keywords[i].mandatory_p && keywords[i].count == 0) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
888 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
889 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
890 return NILP (plist); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
891 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
892 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
893 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
894 /* Return the value of KEY in image specification SPEC. Value is nil |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
895 if KEY is not present in SPEC. if FOUND is not null, set *FOUND |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
896 to 1 if KEY was found in SPEC, set it to 0 otherwise. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
897 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
898 static Lisp_Object |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
899 image_spec_value (Lisp_Object spec, Lisp_Object key, int *found) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
900 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
901 Lisp_Object tail; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
902 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
903 xassert (valid_image_p (spec)); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
904 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
905 for (tail = XCDR (spec); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
906 CONSP (tail) && CONSP (XCDR (tail)); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
907 tail = XCDR (XCDR (tail))) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
908 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
909 if (EQ (XCAR (tail), key)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
910 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
911 if (found) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
912 *found = 1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
913 return XCAR (XCDR (tail)); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
914 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
915 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
916 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
917 if (found) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
918 *found = 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
919 return Qnil; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
920 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
921 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
922 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
923 DEFUN ("image-size", Fimage_size, Simage_size, 1, 3, 0, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
924 doc: /* Return the size of image SPEC as pair (WIDTH . HEIGHT). |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
925 PIXELS non-nil means return the size in pixels, otherwise return the |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
926 size in canonical character units. |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
927 FRAME is the frame on which the image will be displayed. FRAME nil |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
928 or omitted means use the selected frame. */) |
109179
8cfee7d2955f
Convert DEFUNs to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109165
diff
changeset
|
929 (Lisp_Object spec, Lisp_Object pixels, Lisp_Object frame) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
930 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
931 Lisp_Object size; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
932 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
933 size = Qnil; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
934 if (valid_image_p (spec)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
935 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
936 struct frame *f = check_x_frame (frame); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
937 int id = lookup_image (f, spec); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
938 struct image *img = IMAGE_FROM_ID (f, id); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
939 int width = img->width + 2 * img->hmargin; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
940 int height = img->height + 2 * img->vmargin; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
941 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
942 if (NILP (pixels)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
943 size = Fcons (make_float ((double) width / FRAME_COLUMN_WIDTH (f)), |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
944 make_float ((double) height / FRAME_LINE_HEIGHT (f))); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
945 else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
946 size = Fcons (make_number (width), make_number (height)); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
947 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
948 else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
949 error ("Invalid image specification"); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
950 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
951 return size; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
952 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
953 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
954 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
955 DEFUN ("image-mask-p", Fimage_mask_p, Simage_mask_p, 1, 2, 0, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
956 doc: /* Return t if image SPEC has a mask bitmap. |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
957 FRAME is the frame on which the image will be displayed. FRAME nil |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
958 or omitted means use the selected frame. */) |
109179
8cfee7d2955f
Convert DEFUNs to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109165
diff
changeset
|
959 (Lisp_Object spec, Lisp_Object frame) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
960 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
961 Lisp_Object mask; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
962 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
963 mask = Qnil; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
964 if (valid_image_p (spec)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
965 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
966 struct frame *f = check_x_frame (frame); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
967 int id = lookup_image (f, spec); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
968 struct image *img = IMAGE_FROM_ID (f, id); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
969 if (img->mask) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
970 mask = Qt; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
971 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
972 else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
973 error ("Invalid image specification"); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
974 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
975 return mask; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
976 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
977 |
107719
9c0ed2d6731a
Rename `image-extension-data' to `image-metadata'.
Juri Linkov <juri@jurta.org>
parents:
106975
diff
changeset
|
978 DEFUN ("image-metadata", Fimage_metadata, Simage_metadata, 1, 2, 0, |
9c0ed2d6731a
Rename `image-extension-data' to `image-metadata'.
Juri Linkov <juri@jurta.org>
parents:
106975
diff
changeset
|
979 doc: /* Return metadata for image SPEC. |
70168
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
980 FRAME is the frame on which the image will be displayed. FRAME nil |
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
981 or omitted means use the selected frame. */) |
109179
8cfee7d2955f
Convert DEFUNs to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109165
diff
changeset
|
982 (Lisp_Object spec, Lisp_Object frame) |
70168
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
983 { |
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
984 Lisp_Object ext; |
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
985 |
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
986 ext = Qnil; |
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
987 if (valid_image_p (spec)) |
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
988 { |
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
989 struct frame *f = check_x_frame (frame); |
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
990 int id = lookup_image (f, spec); |
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
991 struct image *img = IMAGE_FROM_ID (f, id); |
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
992 ext = img->data.lisp_val; |
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
993 } |
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
994 |
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
995 return ext; |
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
996 } |
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
997 |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
998 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
999 /*********************************************************************** |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1000 Image type independent image structures |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
1001 ***********************************************************************/ |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1002 |
109100
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
1003 static struct image *make_image (Lisp_Object spec, unsigned hash); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
1004 static void free_image (struct frame *f, struct image *img); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
1005 static int check_image_size (struct frame *f, int width, int height); |
66195
ad1acaef1abb
* image.c (Vmax_image_size): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
66013
diff
changeset
|
1006 |
ad1acaef1abb
* image.c (Vmax_image_size): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
66013
diff
changeset
|
1007 #define MAX_IMAGE_SIZE 6.0 |
ad1acaef1abb
* image.c (Vmax_image_size): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
66013
diff
changeset
|
1008 Lisp_Object Vmax_image_size; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1009 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1010 /* Allocate and return a new image structure for image specification |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1011 SPEC. SPEC has a hash value of HASH. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1012 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1013 static struct image * |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
1014 make_image (Lisp_Object spec, unsigned int hash) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1015 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1016 struct image *img = (struct image *) xmalloc (sizeof *img); |
92150
1c088baa9d2d
Allow fine-grained image-cache flushing.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
92110
diff
changeset
|
1017 Lisp_Object file = image_spec_value (spec, QCfile, NULL); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1018 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1019 xassert (valid_image_p (spec)); |
109165
750db9f3e6d8
Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents:
109160
diff
changeset
|
1020 memset (img, 0, sizeof *img); |
92150
1c088baa9d2d
Allow fine-grained image-cache flushing.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
92110
diff
changeset
|
1021 img->dependencies = NILP (file) ? Qnil : list1 (file); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1022 img->type = lookup_image_type (image_spec_value (spec, QCtype, NULL)); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1023 xassert (img->type != NULL); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1024 img->spec = spec; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1025 img->data.lisp_val = Qnil; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1026 img->ascent = DEFAULT_IMAGE_ASCENT; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1027 img->hash = hash; |
70168
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
1028 img->corners[BOT_CORNER] = -1; /* Full image */ |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1029 return img; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1030 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1031 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1032 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1033 /* Free image IMG which was used on frame F, including its resources. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1034 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1035 static void |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
1036 free_image (struct frame *f, struct image *img) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1037 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1038 if (img) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1039 { |
92109
4d9fc08769fa
Consolidate the image_cache to the terminal struct.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
87649
diff
changeset
|
1040 struct image_cache *c = FRAME_IMAGE_CACHE (f); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1041 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1042 /* Remove IMG from the hash table of its cache. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1043 if (img->prev) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1044 img->prev->next = img->next; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1045 else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1046 c->buckets[img->hash % IMAGE_CACHE_BUCKETS_SIZE] = img->next; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1047 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1048 if (img->next) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1049 img->next->prev = img->prev; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1050 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1051 c->images[img->id] = NULL; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1052 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1053 /* Free resources, then free IMG. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1054 img->type->free (f, img); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1055 xfree (img); |
109248
f969130f2bb4
* image.c (free_image): Mark frame as garbaged (Bug#6426).
Chong Yidong <cyd@stupidchicken.com>
parents:
106975
diff
changeset
|
1056 |
f969130f2bb4
* image.c (free_image): Mark frame as garbaged (Bug#6426).
Chong Yidong <cyd@stupidchicken.com>
parents:
106975
diff
changeset
|
1057 /* As display glyphs may still be referring to the image ID, we |
f969130f2bb4
* image.c (free_image): Mark frame as garbaged (Bug#6426).
Chong Yidong <cyd@stupidchicken.com>
parents:
106975
diff
changeset
|
1058 must garbage the frame (Bug#6426). */ |
f969130f2bb4
* image.c (free_image): Mark frame as garbaged (Bug#6426).
Chong Yidong <cyd@stupidchicken.com>
parents:
106975
diff
changeset
|
1059 SET_FRAME_GARBAGED (f); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1060 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1061 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1062 |
66195
ad1acaef1abb
* image.c (Vmax_image_size): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
66013
diff
changeset
|
1063 /* Return 1 if the given widths and heights are valid for display; |
ad1acaef1abb
* image.c (Vmax_image_size): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
66013
diff
changeset
|
1064 otherwise, return 0. */ |
ad1acaef1abb
* image.c (Vmax_image_size): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
66013
diff
changeset
|
1065 |
ad1acaef1abb
* image.c (Vmax_image_size): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
66013
diff
changeset
|
1066 int |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
1067 check_image_size (struct frame *f, int width, int height) |
66195
ad1acaef1abb
* image.c (Vmax_image_size): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
66013
diff
changeset
|
1068 { |
66208
5414bd89ffde
(check_image_size): Handle integer Vmax_image_size value
Kim F. Storm <storm@cua.dk>
parents:
66195
diff
changeset
|
1069 int w, h; |
5414bd89ffde
(check_image_size): Handle integer Vmax_image_size value
Kim F. Storm <storm@cua.dk>
parents:
66195
diff
changeset
|
1070 |
5414bd89ffde
(check_image_size): Handle integer Vmax_image_size value
Kim F. Storm <storm@cua.dk>
parents:
66195
diff
changeset
|
1071 if (width <= 0 || height <= 0) |
66195
ad1acaef1abb
* image.c (Vmax_image_size): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
66013
diff
changeset
|
1072 return 0; |
ad1acaef1abb
* image.c (Vmax_image_size): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
66013
diff
changeset
|
1073 |
66208
5414bd89ffde
(check_image_size): Handle integer Vmax_image_size value
Kim F. Storm <storm@cua.dk>
parents:
66195
diff
changeset
|
1074 if (INTEGERP (Vmax_image_size)) |
5414bd89ffde
(check_image_size): Handle integer Vmax_image_size value
Kim F. Storm <storm@cua.dk>
parents:
66195
diff
changeset
|
1075 w = h = XINT (Vmax_image_size); |
5414bd89ffde
(check_image_size): Handle integer Vmax_image_size value
Kim F. Storm <storm@cua.dk>
parents:
66195
diff
changeset
|
1076 else if (FLOATP (Vmax_image_size)) |
5414bd89ffde
(check_image_size): Handle integer Vmax_image_size value
Kim F. Storm <storm@cua.dk>
parents:
66195
diff
changeset
|
1077 { |
5414bd89ffde
(check_image_size): Handle integer Vmax_image_size value
Kim F. Storm <storm@cua.dk>
parents:
66195
diff
changeset
|
1078 if (f != NULL) |
5414bd89ffde
(check_image_size): Handle integer Vmax_image_size value
Kim F. Storm <storm@cua.dk>
parents:
66195
diff
changeset
|
1079 { |
5414bd89ffde
(check_image_size): Handle integer Vmax_image_size value
Kim F. Storm <storm@cua.dk>
parents:
66195
diff
changeset
|
1080 w = FRAME_PIXEL_WIDTH (f); |
5414bd89ffde
(check_image_size): Handle integer Vmax_image_size value
Kim F. Storm <storm@cua.dk>
parents:
66195
diff
changeset
|
1081 h = FRAME_PIXEL_HEIGHT (f); |
5414bd89ffde
(check_image_size): Handle integer Vmax_image_size value
Kim F. Storm <storm@cua.dk>
parents:
66195
diff
changeset
|
1082 } |
5414bd89ffde
(check_image_size): Handle integer Vmax_image_size value
Kim F. Storm <storm@cua.dk>
parents:
66195
diff
changeset
|
1083 else |
5414bd89ffde
(check_image_size): Handle integer Vmax_image_size value
Kim F. Storm <storm@cua.dk>
parents:
66195
diff
changeset
|
1084 w = h = 1024; /* Arbitrary size for unknown frame. */ |
5414bd89ffde
(check_image_size): Handle integer Vmax_image_size value
Kim F. Storm <storm@cua.dk>
parents:
66195
diff
changeset
|
1085 w = (int) (XFLOAT_DATA (Vmax_image_size) * w); |
5414bd89ffde
(check_image_size): Handle integer Vmax_image_size value
Kim F. Storm <storm@cua.dk>
parents:
66195
diff
changeset
|
1086 h = (int) (XFLOAT_DATA (Vmax_image_size) * h); |
5414bd89ffde
(check_image_size): Handle integer Vmax_image_size value
Kim F. Storm <storm@cua.dk>
parents:
66195
diff
changeset
|
1087 } |
5414bd89ffde
(check_image_size): Handle integer Vmax_image_size value
Kim F. Storm <storm@cua.dk>
parents:
66195
diff
changeset
|
1088 else |
5414bd89ffde
(check_image_size): Handle integer Vmax_image_size value
Kim F. Storm <storm@cua.dk>
parents:
66195
diff
changeset
|
1089 return 1; |
5414bd89ffde
(check_image_size): Handle integer Vmax_image_size value
Kim F. Storm <storm@cua.dk>
parents:
66195
diff
changeset
|
1090 |
5414bd89ffde
(check_image_size): Handle integer Vmax_image_size value
Kim F. Storm <storm@cua.dk>
parents:
66195
diff
changeset
|
1091 return (width <= w && height <= h); |
66195
ad1acaef1abb
* image.c (Vmax_image_size): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
66013
diff
changeset
|
1092 } |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1093 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1094 /* Prepare image IMG for display on frame F. Must be called before |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1095 drawing an image. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1096 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1097 void |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
1098 prepare_image_for_display (struct frame *f, struct image *img) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1099 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1100 EMACS_TIME t; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1101 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1102 /* We're about to display IMG, so set its timestamp to `now'. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1103 EMACS_GET_TIME (t); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1104 img->timestamp = EMACS_SECS (t); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1105 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1106 /* If IMG doesn't have a pixmap yet, load it now, using the image |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1107 type dependent loader function. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1108 if (img->pixmap == NO_PIXMAP && !img->load_failed_p) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1109 img->load_failed_p = img->type->load (f, img) == 0; |
69511
65b669e90ff5
[MAC_OS] (XPutPixel, XGetPixel)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69333
diff
changeset
|
1110 |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1111 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1112 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1113 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1114 /* Value is the number of pixels for the ascent of image IMG when |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1115 drawn in face FACE. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1116 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1117 int |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
1118 image_ascent (struct image *img, struct face *face, struct glyph_slice *slice) |
55022
dda0bae93c73
(image_ascent): Add slice arg; calculate ascent for
Kim F. Storm <storm@cua.dk>
parents:
54920
diff
changeset
|
1119 { |
dda0bae93c73
(image_ascent): Add slice arg; calculate ascent for
Kim F. Storm <storm@cua.dk>
parents:
54920
diff
changeset
|
1120 int height; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1121 int ascent; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1122 |
55022
dda0bae93c73
(image_ascent): Add slice arg; calculate ascent for
Kim F. Storm <storm@cua.dk>
parents:
54920
diff
changeset
|
1123 if (slice->height == img->height) |
dda0bae93c73
(image_ascent): Add slice arg; calculate ascent for
Kim F. Storm <storm@cua.dk>
parents:
54920
diff
changeset
|
1124 height = img->height + img->vmargin; |
dda0bae93c73
(image_ascent): Add slice arg; calculate ascent for
Kim F. Storm <storm@cua.dk>
parents:
54920
diff
changeset
|
1125 else if (slice->y == 0) |
dda0bae93c73
(image_ascent): Add slice arg; calculate ascent for
Kim F. Storm <storm@cua.dk>
parents:
54920
diff
changeset
|
1126 height = slice->height + img->vmargin; |
dda0bae93c73
(image_ascent): Add slice arg; calculate ascent for
Kim F. Storm <storm@cua.dk>
parents:
54920
diff
changeset
|
1127 else |
dda0bae93c73
(image_ascent): Add slice arg; calculate ascent for
Kim F. Storm <storm@cua.dk>
parents:
54920
diff
changeset
|
1128 height = slice->height; |
dda0bae93c73
(image_ascent): Add slice arg; calculate ascent for
Kim F. Storm <storm@cua.dk>
parents:
54920
diff
changeset
|
1129 |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1130 if (img->ascent == CENTERED_IMAGE_ASCENT) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1131 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1132 if (face->font) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1133 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1134 #ifdef HAVE_NTGUI |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1135 /* W32 specific version. Why?. ++kfs */ |
82795
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
1136 ascent = height / 2 - (FONT_DESCENT (face->font) |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
1137 - FONT_BASE (face->font)) / 2; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1138 #else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1139 /* This expression is arranged so that if the image can't be |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1140 exactly centered, it will be moved slightly up. This is |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1141 because a typical font is `top-heavy' (due to the presence |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1142 uppercase letters), so the image placement should err towards |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1143 being top-heavy too. It also just generally looks better. */ |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
1144 ascent = (height + FONT_BASE(face->font) |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
1145 - FONT_DESCENT(face->font) + 1) / 2; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1146 #endif /* HAVE_NTGUI */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1147 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1148 else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1149 ascent = height / 2; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1150 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1151 else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1152 ascent = (int) (height * img->ascent / 100.0); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1153 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1154 return ascent; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1155 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1156 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1157 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1158 /* Image background colors. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1159 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1160 /* Find the "best" corner color of a bitmap. |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1161 On W32, XIMG is assumed to a device context with the bitmap selected. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1162 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1163 static RGB_PIXEL_COLOR |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
1164 four_corners_best (XImagePtr_or_DC ximg, int *corners, |
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
1165 unsigned long width, unsigned long height) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1166 { |
70168
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
1167 RGB_PIXEL_COLOR corner_pixels[4], best; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1168 int i, best_count; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1169 |
70168
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
1170 if (corners && corners[BOT_CORNER] >= 0) |
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
1171 { |
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
1172 /* Get the colors at the corner_pixels of ximg. */ |
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
1173 corner_pixels[0] = GET_PIXEL (ximg, corners[LEFT_CORNER], corners[TOP_CORNER]); |
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
1174 corner_pixels[1] = GET_PIXEL (ximg, corners[RIGHT_CORNER] - 1, corners[TOP_CORNER]); |
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
1175 corner_pixels[2] = GET_PIXEL (ximg, corners[RIGHT_CORNER] - 1, corners[BOT_CORNER] - 1); |
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
1176 corner_pixels[3] = GET_PIXEL (ximg, corners[LEFT_CORNER], corners[BOT_CORNER] - 1); |
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
1177 } |
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
1178 else |
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
1179 { |
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
1180 /* Get the colors at the corner_pixels of ximg. */ |
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
1181 corner_pixels[0] = GET_PIXEL (ximg, 0, 0); |
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
1182 corner_pixels[1] = GET_PIXEL (ximg, width - 1, 0); |
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
1183 corner_pixels[2] = GET_PIXEL (ximg, width - 1, height - 1); |
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
1184 corner_pixels[3] = GET_PIXEL (ximg, 0, height - 1); |
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
1185 } |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1186 /* Choose the most frequently found color as background. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1187 for (i = best_count = 0; i < 4; ++i) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1188 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1189 int j, n; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1190 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1191 for (j = n = 0; j < 4; ++j) |
70168
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
1192 if (corner_pixels[i] == corner_pixels[j]) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1193 ++n; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1194 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1195 if (n > best_count) |
70168
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
1196 best = corner_pixels[i], best_count = n; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1197 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1198 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1199 return best; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1200 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1201 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1202 /* Portability macros */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1203 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1204 #ifdef HAVE_NTGUI |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1205 |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
1206 #define Destroy_Image(img_dc, prev) \ |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1207 do { SelectObject (img_dc, prev); DeleteDC (img_dc); } while (0) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1208 |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
1209 #define Free_Pixmap(display, pixmap) \ |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1210 DeleteObject (pixmap) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1211 |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
1212 #elif defined (HAVE_NS) |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
1213 |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
1214 #define Destroy_Image(ximg, dummy) \ |
109160
f8660b83cdbf
Fix whitespace to follow coding guidelines.
Juanma Barranquero <lekktu@gmail.com>
parents:
109144
diff
changeset
|
1215 ns_release_object (ximg) |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
1216 |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
1217 #define Free_Pixmap(display, pixmap) \ |
109160
f8660b83cdbf
Fix whitespace to follow coding guidelines.
Juanma Barranquero <lekktu@gmail.com>
parents:
109144
diff
changeset
|
1218 ns_release_object (pixmap) |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
1219 |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1220 #else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1221 |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
1222 #define Destroy_Image(ximg, dummy) \ |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1223 XDestroyImage (ximg) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1224 |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
1225 #define Free_Pixmap(display, pixmap) \ |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1226 XFreePixmap (display, pixmap) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1227 |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
1228 #endif /* !HAVE_NTGUI && !HAVE_NS */ |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1229 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1230 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1231 /* Return the `background' field of IMG. If IMG doesn't have one yet, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1232 it is guessed heuristically. If non-zero, XIMG is an existing |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1233 XImage object (or device context with the image selected on W32) to |
54920
38cb79e68369
(PNG_BG_COLOR_SHIFT): Remove.
Kim F. Storm <storm@cua.dk>
parents:
54427
diff
changeset
|
1234 use for the heuristic. */ |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1235 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1236 RGB_PIXEL_COLOR |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
1237 image_background (struct image *img, struct frame *f, XImagePtr_or_DC ximg) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1238 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1239 if (! img->background_valid) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1240 /* IMG doesn't have a background yet, try to guess a reasonable value. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1241 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1242 int free_ximg = !ximg; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1243 #ifdef HAVE_NTGUI |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1244 HGDIOBJ prev; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1245 #endif /* HAVE_NTGUI */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1246 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1247 if (free_ximg) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1248 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1249 #ifndef HAVE_NTGUI |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1250 ximg = XGetImage (FRAME_X_DISPLAY (f), img->pixmap, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1251 0, 0, img->width, img->height, ~0, ZPixmap); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1252 #else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1253 HDC frame_dc = get_frame_dc (f); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1254 ximg = CreateCompatibleDC (frame_dc); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1255 release_frame_dc (f, frame_dc); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1256 prev = SelectObject (ximg, img->pixmap); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1257 #endif /* !HAVE_NTGUI */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1258 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1259 |
70168
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
1260 img->background = four_corners_best (ximg, img->corners, img->width, img->height); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1261 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1262 if (free_ximg) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1263 Destroy_Image (ximg, prev); |
54920
38cb79e68369
(PNG_BG_COLOR_SHIFT): Remove.
Kim F. Storm <storm@cua.dk>
parents:
54427
diff
changeset
|
1264 |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1265 img->background_valid = 1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1266 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1267 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1268 return img->background; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1269 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1270 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1271 /* Return the `background_transparent' field of IMG. If IMG doesn't |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1272 have one yet, it is guessed heuristically. If non-zero, MASK is an |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1273 existing XImage object to use for the heuristic. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1274 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1275 int |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
1276 image_background_transparent (struct image *img, struct frame *f, XImagePtr_or_DC mask) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1277 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1278 if (! img->background_transparent_valid) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1279 /* IMG doesn't have a background yet, try to guess a reasonable value. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1280 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1281 if (img->mask) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1282 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1283 int free_mask = !mask; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1284 #ifdef HAVE_NTGUI |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1285 HGDIOBJ prev; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1286 #endif /* HAVE_NTGUI */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1287 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1288 if (free_mask) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1289 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1290 #ifndef HAVE_NTGUI |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1291 mask = XGetImage (FRAME_X_DISPLAY (f), img->mask, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1292 0, 0, img->width, img->height, ~0, ZPixmap); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1293 #else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1294 HDC frame_dc = get_frame_dc (f); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1295 mask = CreateCompatibleDC (frame_dc); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1296 release_frame_dc (f, frame_dc); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1297 prev = SelectObject (mask, img->mask); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1298 #endif /* HAVE_NTGUI */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1299 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1300 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1301 img->background_transparent |
70168
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
1302 = (four_corners_best (mask, img->corners, img->width, img->height) == PIX_MASK_RETAIN); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1303 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1304 if (free_mask) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1305 Destroy_Image (mask, prev); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1306 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1307 else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1308 img->background_transparent = 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1309 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1310 img->background_transparent_valid = 1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1311 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1312 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1313 return img->background_transparent; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1314 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1315 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1316 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1317 /*********************************************************************** |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1318 Helper functions for X image types |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
1319 ***********************************************************************/ |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1320 |
109100
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
1321 static void x_clear_image_1 (struct frame *, struct image *, int, |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
1322 int, int); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
1323 static void x_clear_image (struct frame *f, struct image *img); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
1324 static unsigned long x_alloc_image_color (struct frame *f, |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
1325 struct image *img, |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
1326 Lisp_Object color_name, |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
1327 unsigned long dflt); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1328 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1329 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1330 /* Clear X resources of image IMG on frame F. PIXMAP_P non-zero means |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1331 free the pixmap if any. MASK_P non-zero means clear the mask |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1332 pixmap if any. COLORS_P non-zero means free colors allocated for |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1333 the image, if any. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1334 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1335 static void |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
1336 x_clear_image_1 (struct frame *f, struct image *img, int pixmap_p, int mask_p, |
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
1337 int colors_p) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1338 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1339 if (pixmap_p && img->pixmap) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1340 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1341 Free_Pixmap (FRAME_X_DISPLAY (f), img->pixmap); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1342 img->pixmap = NO_PIXMAP; |
99904
ba4876d944bc
Fix bug #1362. * image.c (x_clear_image_1): Do not free background under HAVE_NS, it is not an indexed color. * nsterm.m (free_indexed_color): Add argument checking. * nsfns.m: Move config.h to before system includes (advised by Dan N.).
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
98490
diff
changeset
|
1343 /* NOTE (HAVE_NS): background color is NOT an indexed color! */ |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1344 img->background_valid = 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1345 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1346 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1347 if (mask_p && img->mask) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1348 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1349 Free_Pixmap (FRAME_X_DISPLAY (f), img->mask); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1350 img->mask = NO_PIXMAP; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1351 img->background_transparent_valid = 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1352 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1353 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1354 if (colors_p && img->ncolors) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1355 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1356 /* W32_TODO: color table support. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1357 #ifdef HAVE_X_WINDOWS |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1358 x_free_colors (f, img->colors, img->ncolors); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1359 #endif /* HAVE_X_WINDOWS */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1360 xfree (img->colors); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1361 img->colors = NULL; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1362 img->ncolors = 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1363 } |
69511
65b669e90ff5
[MAC_OS] (XPutPixel, XGetPixel)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69333
diff
changeset
|
1364 |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1365 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1366 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1367 /* Free X resources of image IMG which is used on frame F. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1368 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1369 static void |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
1370 x_clear_image (struct frame *f, struct image *img) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1371 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1372 BLOCK_INPUT; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1373 x_clear_image_1 (f, img, 1, 1, 1); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1374 UNBLOCK_INPUT; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1375 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1376 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1377 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1378 /* Allocate color COLOR_NAME for image IMG on frame F. If color |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1379 cannot be allocated, use DFLT. Add a newly allocated color to |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1380 IMG->colors, so that it can be freed again. Value is the pixel |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1381 color. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1382 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1383 static unsigned long |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
1384 x_alloc_image_color (struct frame *f, struct image *img, Lisp_Object color_name, |
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
1385 unsigned long dflt) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1386 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1387 XColor color; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1388 unsigned long result; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1389 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1390 xassert (STRINGP (color_name)); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1391 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1392 if (x_defined_color (f, SDATA (color_name), &color, 1)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1393 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1394 /* This isn't called frequently so we get away with simply |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1395 reallocating the color vector to the needed size, here. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1396 ++img->ncolors; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1397 img->colors = |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1398 (unsigned long *) xrealloc (img->colors, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1399 img->ncolors * sizeof *img->colors); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1400 img->colors[img->ncolors - 1] = color.pixel; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1401 result = color.pixel; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1402 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1403 else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1404 result = dflt; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1405 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1406 return result; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1407 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1408 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1409 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1410 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1411 /*********************************************************************** |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1412 Image Cache |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
1413 ***********************************************************************/ |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1414 |
109100
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
1415 static struct image *search_image_cache (struct frame *, Lisp_Object, unsigned); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
1416 static void cache_image (struct frame *f, struct image *img); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
1417 static void postprocess_image (struct frame *, struct image *); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1418 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1419 /* Return a new, initialized image cache that is allocated from the |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1420 heap. Call free_image_cache to free an image cache. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1421 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1422 struct image_cache * |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
1423 make_image_cache (void) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1424 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1425 struct image_cache *c = (struct image_cache *) xmalloc (sizeof *c); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1426 int size; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1427 |
109165
750db9f3e6d8
Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents:
109160
diff
changeset
|
1428 memset (c, 0, sizeof *c); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1429 c->size = 50; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1430 c->images = (struct image **) xmalloc (c->size * sizeof *c->images); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1431 size = IMAGE_CACHE_BUCKETS_SIZE * sizeof *c->buckets; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1432 c->buckets = (struct image **) xmalloc (size); |
109165
750db9f3e6d8
Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents:
109160
diff
changeset
|
1433 memset (c->buckets, 0, size); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1434 return c; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1435 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1436 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1437 |
78450
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1438 /* Find an image matching SPEC in the cache, and return it. If no |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1439 image is found, return NULL. */ |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1440 static struct image * |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
1441 search_image_cache (struct frame *f, Lisp_Object spec, unsigned int hash) |
78450
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1442 { |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1443 struct image *img; |
92109
4d9fc08769fa
Consolidate the image_cache to the terminal struct.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
87649
diff
changeset
|
1444 struct image_cache *c = FRAME_IMAGE_CACHE (f); |
78450
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1445 int i = hash % IMAGE_CACHE_BUCKETS_SIZE; |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1446 |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1447 if (!c) return NULL; |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1448 |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1449 /* If the image spec does not specify a background color, the cached |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1450 image must have the same background color as the current frame. |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1451 The foreground color must also match, for the sake of monochrome |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1452 images. |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1453 |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1454 In fact, we could ignore the foreground color matching condition |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1455 for color images, or if the image spec specifies :foreground; |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1456 similarly we could ignore the background color matching condition |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1457 for formats that don't use transparency (such as jpeg), or if the |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1458 image spec specifies :background. However, the extra memory |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1459 usage is probably negligible in practice, so we don't bother. */ |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1460 |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1461 for (img = c->buckets[i]; img; img = img->next) |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1462 if (img->hash == hash |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1463 && !NILP (Fequal (img->spec, spec)) |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1464 && img->frame_foreground == FRAME_FOREGROUND_PIXEL (f) |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1465 && img->frame_background == FRAME_BACKGROUND_PIXEL (f)) |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1466 break; |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1467 return img; |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1468 } |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1469 |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1470 |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1471 /* Search frame F for an image with spec SPEC, and free it. */ |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1472 |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1473 static void |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
1474 uncache_image (struct frame *f, Lisp_Object spec) |
78450
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1475 { |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1476 struct image *img = search_image_cache (f, spec, sxhash (spec, 0)); |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1477 if (img) |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1478 free_image (f, img); |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1479 } |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1480 |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1481 |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1482 /* Free image cache of frame F. Be aware that X frames share images |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1483 caches. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1484 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1485 void |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
1486 free_image_cache (struct frame *f) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1487 { |
92109
4d9fc08769fa
Consolidate the image_cache to the terminal struct.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
87649
diff
changeset
|
1488 struct image_cache *c = FRAME_IMAGE_CACHE (f); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1489 if (c) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1490 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1491 int i; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1492 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1493 /* Cache should not be referenced by any frame when freed. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1494 xassert (c->refcount == 0); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1495 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1496 for (i = 0; i < c->used; ++i) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1497 free_image (f, c->images[i]); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1498 xfree (c->images); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1499 xfree (c->buckets); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1500 xfree (c); |
92109
4d9fc08769fa
Consolidate the image_cache to the terminal struct.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
87649
diff
changeset
|
1501 FRAME_IMAGE_CACHE (f) = NULL; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1502 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1503 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1504 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1505 |
92150
1c088baa9d2d
Allow fine-grained image-cache flushing.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
92110
diff
changeset
|
1506 /* Clear image cache of frame F. FILTER=t means free all images. |
1c088baa9d2d
Allow fine-grained image-cache flushing.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
92110
diff
changeset
|
1507 FILTER=nil means clear only images that haven't been |
1c088baa9d2d
Allow fine-grained image-cache flushing.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
92110
diff
changeset
|
1508 displayed for some time. |
1c088baa9d2d
Allow fine-grained image-cache flushing.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
92110
diff
changeset
|
1509 Else, only free the images which have FILTER in their `dependencies'. |
1c088baa9d2d
Allow fine-grained image-cache flushing.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
92110
diff
changeset
|
1510 Should be called from time to time to reduce the number of loaded images. |
1c088baa9d2d
Allow fine-grained image-cache flushing.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
92110
diff
changeset
|
1511 If image-cache-eviction-delay is non-nil, this frees images in the cache |
1c088baa9d2d
Allow fine-grained image-cache flushing.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
92110
diff
changeset
|
1512 which weren't displayed for at least that many seconds. */ |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1513 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1514 void |
92150
1c088baa9d2d
Allow fine-grained image-cache flushing.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
92110
diff
changeset
|
1515 clear_image_cache (struct frame *f, Lisp_Object filter) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1516 { |
92109
4d9fc08769fa
Consolidate the image_cache to the terminal struct.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
87649
diff
changeset
|
1517 struct image_cache *c = FRAME_IMAGE_CACHE (f); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1518 |
108741
9480d787845f
Improve image cache clearing logic (Bug#6230).
Chong Yidong <cyd@stupidchicken.com>
parents:
107719
diff
changeset
|
1519 if (c) |
9480d787845f
Improve image cache clearing logic (Bug#6230).
Chong Yidong <cyd@stupidchicken.com>
parents:
107719
diff
changeset
|
1520 { |
9480d787845f
Improve image cache clearing logic (Bug#6230).
Chong Yidong <cyd@stupidchicken.com>
parents:
107719
diff
changeset
|
1521 int i, nfreed = 0; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1522 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1523 /* Block input so that we won't be interrupted by a SIGIO |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1524 while being in an inconsistent state. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1525 BLOCK_INPUT; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1526 |
108741
9480d787845f
Improve image cache clearing logic (Bug#6230).
Chong Yidong <cyd@stupidchicken.com>
parents:
107719
diff
changeset
|
1527 if (!NILP (filter)) |
9480d787845f
Improve image cache clearing logic (Bug#6230).
Chong Yidong <cyd@stupidchicken.com>
parents:
107719
diff
changeset
|
1528 { |
9480d787845f
Improve image cache clearing logic (Bug#6230).
Chong Yidong <cyd@stupidchicken.com>
parents:
107719
diff
changeset
|
1529 /* Filter image cache. */ |
9480d787845f
Improve image cache clearing logic (Bug#6230).
Chong Yidong <cyd@stupidchicken.com>
parents:
107719
diff
changeset
|
1530 for (i = 0; i < c->used; ++i) |
9480d787845f
Improve image cache clearing logic (Bug#6230).
Chong Yidong <cyd@stupidchicken.com>
parents:
107719
diff
changeset
|
1531 { |
9480d787845f
Improve image cache clearing logic (Bug#6230).
Chong Yidong <cyd@stupidchicken.com>
parents:
107719
diff
changeset
|
1532 struct image *img = c->images[i]; |
9480d787845f
Improve image cache clearing logic (Bug#6230).
Chong Yidong <cyd@stupidchicken.com>
parents:
107719
diff
changeset
|
1533 if (img && (EQ (Qt, filter) |
9480d787845f
Improve image cache clearing logic (Bug#6230).
Chong Yidong <cyd@stupidchicken.com>
parents:
107719
diff
changeset
|
1534 || !NILP (Fmember (filter, img->dependencies)))) |
9480d787845f
Improve image cache clearing logic (Bug#6230).
Chong Yidong <cyd@stupidchicken.com>
parents:
107719
diff
changeset
|
1535 { |
9480d787845f
Improve image cache clearing logic (Bug#6230).
Chong Yidong <cyd@stupidchicken.com>
parents:
107719
diff
changeset
|
1536 free_image (f, img); |
9480d787845f
Improve image cache clearing logic (Bug#6230).
Chong Yidong <cyd@stupidchicken.com>
parents:
107719
diff
changeset
|
1537 ++nfreed; |
9480d787845f
Improve image cache clearing logic (Bug#6230).
Chong Yidong <cyd@stupidchicken.com>
parents:
107719
diff
changeset
|
1538 } |
9480d787845f
Improve image cache clearing logic (Bug#6230).
Chong Yidong <cyd@stupidchicken.com>
parents:
107719
diff
changeset
|
1539 } |
9480d787845f
Improve image cache clearing logic (Bug#6230).
Chong Yidong <cyd@stupidchicken.com>
parents:
107719
diff
changeset
|
1540 } |
9480d787845f
Improve image cache clearing logic (Bug#6230).
Chong Yidong <cyd@stupidchicken.com>
parents:
107719
diff
changeset
|
1541 else if (INTEGERP (Vimage_cache_eviction_delay)) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1542 { |
108741
9480d787845f
Improve image cache clearing logic (Bug#6230).
Chong Yidong <cyd@stupidchicken.com>
parents:
107719
diff
changeset
|
1543 /* Free cache based on timestamp. */ |
9480d787845f
Improve image cache clearing logic (Bug#6230).
Chong Yidong <cyd@stupidchicken.com>
parents:
107719
diff
changeset
|
1544 EMACS_TIME t; |
9480d787845f
Improve image cache clearing logic (Bug#6230).
Chong Yidong <cyd@stupidchicken.com>
parents:
107719
diff
changeset
|
1545 unsigned long old; |
9480d787845f
Improve image cache clearing logic (Bug#6230).
Chong Yidong <cyd@stupidchicken.com>
parents:
107719
diff
changeset
|
1546 int delay, nimages = 0; |
9480d787845f
Improve image cache clearing logic (Bug#6230).
Chong Yidong <cyd@stupidchicken.com>
parents:
107719
diff
changeset
|
1547 |
9480d787845f
Improve image cache clearing logic (Bug#6230).
Chong Yidong <cyd@stupidchicken.com>
parents:
107719
diff
changeset
|
1548 for (i = 0; i < c->used; ++i) |
9480d787845f
Improve image cache clearing logic (Bug#6230).
Chong Yidong <cyd@stupidchicken.com>
parents:
107719
diff
changeset
|
1549 if (c->images[i]) |
9480d787845f
Improve image cache clearing logic (Bug#6230).
Chong Yidong <cyd@stupidchicken.com>
parents:
107719
diff
changeset
|
1550 nimages++; |
9480d787845f
Improve image cache clearing logic (Bug#6230).
Chong Yidong <cyd@stupidchicken.com>
parents:
107719
diff
changeset
|
1551 |
9480d787845f
Improve image cache clearing logic (Bug#6230).
Chong Yidong <cyd@stupidchicken.com>
parents:
107719
diff
changeset
|
1552 /* If the number of cached images has grown unusually large, |
9480d787845f
Improve image cache clearing logic (Bug#6230).
Chong Yidong <cyd@stupidchicken.com>
parents:
107719
diff
changeset
|
1553 decrease the cache eviction delay (Bug#6230). */ |
9480d787845f
Improve image cache clearing logic (Bug#6230).
Chong Yidong <cyd@stupidchicken.com>
parents:
107719
diff
changeset
|
1554 delay = XFASTINT (Vimage_cache_eviction_delay); |
9480d787845f
Improve image cache clearing logic (Bug#6230).
Chong Yidong <cyd@stupidchicken.com>
parents:
107719
diff
changeset
|
1555 if (nimages > 40) |
9480d787845f
Improve image cache clearing logic (Bug#6230).
Chong Yidong <cyd@stupidchicken.com>
parents:
107719
diff
changeset
|
1556 delay = max (1, 1600 * delay / (nimages*nimages)); |
9480d787845f
Improve image cache clearing logic (Bug#6230).
Chong Yidong <cyd@stupidchicken.com>
parents:
107719
diff
changeset
|
1557 |
9480d787845f
Improve image cache clearing logic (Bug#6230).
Chong Yidong <cyd@stupidchicken.com>
parents:
107719
diff
changeset
|
1558 EMACS_GET_TIME (t); |
9480d787845f
Improve image cache clearing logic (Bug#6230).
Chong Yidong <cyd@stupidchicken.com>
parents:
107719
diff
changeset
|
1559 old = EMACS_SECS (t) - delay; |
9480d787845f
Improve image cache clearing logic (Bug#6230).
Chong Yidong <cyd@stupidchicken.com>
parents:
107719
diff
changeset
|
1560 |
9480d787845f
Improve image cache clearing logic (Bug#6230).
Chong Yidong <cyd@stupidchicken.com>
parents:
107719
diff
changeset
|
1561 for (i = 0; i < c->used; ++i) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1562 { |
108741
9480d787845f
Improve image cache clearing logic (Bug#6230).
Chong Yidong <cyd@stupidchicken.com>
parents:
107719
diff
changeset
|
1563 struct image *img = c->images[i]; |
9480d787845f
Improve image cache clearing logic (Bug#6230).
Chong Yidong <cyd@stupidchicken.com>
parents:
107719
diff
changeset
|
1564 if (img && img->timestamp < old) |
9480d787845f
Improve image cache clearing logic (Bug#6230).
Chong Yidong <cyd@stupidchicken.com>
parents:
107719
diff
changeset
|
1565 { |
9480d787845f
Improve image cache clearing logic (Bug#6230).
Chong Yidong <cyd@stupidchicken.com>
parents:
107719
diff
changeset
|
1566 free_image (f, img); |
9480d787845f
Improve image cache clearing logic (Bug#6230).
Chong Yidong <cyd@stupidchicken.com>
parents:
107719
diff
changeset
|
1567 ++nfreed; |
9480d787845f
Improve image cache clearing logic (Bug#6230).
Chong Yidong <cyd@stupidchicken.com>
parents:
107719
diff
changeset
|
1568 } |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1569 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1570 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1571 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1572 /* We may be clearing the image cache because, for example, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1573 Emacs was iconified for a longer period of time. In that |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1574 case, current matrices may still contain references to |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1575 images freed above. So, clear these matrices. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1576 if (nfreed) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1577 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1578 Lisp_Object tail, frame; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1579 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1580 FOR_EACH_FRAME (tail, frame) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1581 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1582 struct frame *f = XFRAME (frame); |
92109
4d9fc08769fa
Consolidate the image_cache to the terminal struct.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
87649
diff
changeset
|
1583 if (FRAME_IMAGE_CACHE (f) == c) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1584 clear_current_matrices (f); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1585 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1586 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1587 ++windows_or_buffers_changed; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1588 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1589 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1590 UNBLOCK_INPUT; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1591 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1592 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1593 |
92109
4d9fc08769fa
Consolidate the image_cache to the terminal struct.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
87649
diff
changeset
|
1594 void |
92150
1c088baa9d2d
Allow fine-grained image-cache flushing.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
92110
diff
changeset
|
1595 clear_image_caches (Lisp_Object filter) |
92109
4d9fc08769fa
Consolidate the image_cache to the terminal struct.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
87649
diff
changeset
|
1596 { |
4d9fc08769fa
Consolidate the image_cache to the terminal struct.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
87649
diff
changeset
|
1597 /* FIXME: We want to do |
4d9fc08769fa
Consolidate the image_cache to the terminal struct.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
87649
diff
changeset
|
1598 * struct terminal *t; |
4d9fc08769fa
Consolidate the image_cache to the terminal struct.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
87649
diff
changeset
|
1599 * for (t = terminal_list; t; t = t->next_terminal) |
4d9fc08769fa
Consolidate the image_cache to the terminal struct.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
87649
diff
changeset
|
1600 * clear_image_cache (t, filter); */ |
4d9fc08769fa
Consolidate the image_cache to the terminal struct.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
87649
diff
changeset
|
1601 Lisp_Object tail, frame; |
4d9fc08769fa
Consolidate the image_cache to the terminal struct.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
87649
diff
changeset
|
1602 FOR_EACH_FRAME (tail, frame) |
4d9fc08769fa
Consolidate the image_cache to the terminal struct.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
87649
diff
changeset
|
1603 if (FRAME_WINDOW_P (XFRAME (frame))) |
92150
1c088baa9d2d
Allow fine-grained image-cache flushing.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
92110
diff
changeset
|
1604 clear_image_cache (XFRAME (frame), filter); |
92109
4d9fc08769fa
Consolidate the image_cache to the terminal struct.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
87649
diff
changeset
|
1605 } |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1606 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1607 DEFUN ("clear-image-cache", Fclear_image_cache, Sclear_image_cache, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1608 0, 1, 0, |
92150
1c088baa9d2d
Allow fine-grained image-cache flushing.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
92110
diff
changeset
|
1609 doc: /* Clear the image cache. |
1c088baa9d2d
Allow fine-grained image-cache flushing.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
92110
diff
changeset
|
1610 FILTER nil or a frame means clear all images in the selected frame. |
1c088baa9d2d
Allow fine-grained image-cache flushing.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
92110
diff
changeset
|
1611 FILTER t means clear the image caches of all frames. |
1c088baa9d2d
Allow fine-grained image-cache flushing.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
92110
diff
changeset
|
1612 Anything else, means only clear those images which refer to FILTER, |
1c088baa9d2d
Allow fine-grained image-cache flushing.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
92110
diff
changeset
|
1613 which is then usually a filename. */) |
109179
8cfee7d2955f
Convert DEFUNs to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109165
diff
changeset
|
1614 (Lisp_Object filter) |
92150
1c088baa9d2d
Allow fine-grained image-cache flushing.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
92110
diff
changeset
|
1615 { |
1c088baa9d2d
Allow fine-grained image-cache flushing.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
92110
diff
changeset
|
1616 if (!(EQ (filter, Qnil) || FRAMEP (filter))) |
1c088baa9d2d
Allow fine-grained image-cache flushing.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
92110
diff
changeset
|
1617 clear_image_caches (filter); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1618 else |
92150
1c088baa9d2d
Allow fine-grained image-cache flushing.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
92110
diff
changeset
|
1619 clear_image_cache (check_x_frame (filter), Qt); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1620 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1621 return Qnil; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1622 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1623 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1624 |
108746
24d486687f54
Rename image-refresh to image-flush.
Chong Yidong <cyd@stupidchicken.com>
parents:
108741
diff
changeset
|
1625 DEFUN ("image-flush", Fimage_flush, Simage_flush, |
78450
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1626 1, 2, 0, |
108746
24d486687f54
Rename image-refresh to image-flush.
Chong Yidong <cyd@stupidchicken.com>
parents:
108741
diff
changeset
|
1627 doc: /* Fush the image with specification SPEC on frame FRAME. |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
1628 This removes the image from the Emacs image cache. If SPEC specifies |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
1629 an image file, the next redisplay of this image will read from the |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
1630 current contents of that file. |
108746
24d486687f54
Rename image-refresh to image-flush.
Chong Yidong <cyd@stupidchicken.com>
parents:
108741
diff
changeset
|
1631 |
78450
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1632 FRAME nil or omitted means use the selected frame. |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1633 FRAME t means refresh the image on all frames. */) |
109179
8cfee7d2955f
Convert DEFUNs to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109165
diff
changeset
|
1634 (Lisp_Object spec, Lisp_Object frame) |
78450
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1635 { |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1636 if (!valid_image_p (spec)) |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1637 error ("Invalid image specification"); |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1638 |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1639 if (EQ (frame, Qt)) |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1640 { |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1641 Lisp_Object tail; |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1642 FOR_EACH_FRAME (tail, frame) |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1643 { |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1644 struct frame *f = XFRAME (frame); |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1645 if (FRAME_WINDOW_P (f)) |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1646 uncache_image (f, spec); |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1647 } |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1648 } |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1649 else |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1650 uncache_image (check_x_frame (frame), spec); |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1651 |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1652 return Qnil; |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1653 } |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1654 |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1655 |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1656 /* Compute masks and transform image IMG on frame F, as specified |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1657 by the image's specification, */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1658 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1659 static void |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
1660 postprocess_image (struct frame *f, struct image *img) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1661 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1662 /* Manipulation of the image's mask. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1663 if (img->pixmap) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1664 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1665 Lisp_Object conversion, spec; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1666 Lisp_Object mask; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1667 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1668 spec = img->spec; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1669 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1670 /* `:heuristic-mask t' |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1671 `:mask heuristic' |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1672 means build a mask heuristically. |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1673 `:heuristic-mask (R G B)' |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1674 `:mask (heuristic (R G B))' |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1675 means build a mask from color (R G B) in the |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1676 image. |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1677 `:mask nil' |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1678 means remove a mask, if any. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1679 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1680 mask = image_spec_value (spec, QCheuristic_mask, NULL); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1681 if (!NILP (mask)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1682 x_build_heuristic_mask (f, img, mask); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1683 else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1684 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1685 int found_p; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1686 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1687 mask = image_spec_value (spec, QCmask, &found_p); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1688 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1689 if (EQ (mask, Qheuristic)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1690 x_build_heuristic_mask (f, img, Qt); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1691 else if (CONSP (mask) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1692 && EQ (XCAR (mask), Qheuristic)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1693 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1694 if (CONSP (XCDR (mask))) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1695 x_build_heuristic_mask (f, img, XCAR (XCDR (mask))); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1696 else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1697 x_build_heuristic_mask (f, img, XCDR (mask)); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1698 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1699 else if (NILP (mask) && found_p && img->mask) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1700 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1701 Free_Pixmap (FRAME_X_DISPLAY (f), img->mask); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1702 img->mask = NO_PIXMAP; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1703 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1704 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1705 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1706 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1707 /* Should we apply an image transformation algorithm? */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1708 conversion = image_spec_value (spec, QCconversion, NULL); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1709 if (EQ (conversion, Qdisabled)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1710 x_disable_image (f, img); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1711 else if (EQ (conversion, Qlaplace)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1712 x_laplace (f, img); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1713 else if (EQ (conversion, Qemboss)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1714 x_emboss (f, img); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1715 else if (CONSP (conversion) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1716 && EQ (XCAR (conversion), Qedge_detection)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1717 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1718 Lisp_Object tem; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1719 tem = XCDR (conversion); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1720 if (CONSP (tem)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1721 x_edge_detection (f, img, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1722 Fplist_get (tem, QCmatrix), |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1723 Fplist_get (tem, QCcolor_adjustment)); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1724 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1725 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1726 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1727 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1728 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1729 /* Return the id of image with Lisp specification SPEC on frame F. |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1730 SPEC must be a valid Lisp image specification (see valid_image_p). */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1731 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1732 int |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
1733 lookup_image (struct frame *f, Lisp_Object spec) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1734 { |
83436
f67e432d150c
Fix crash in lookup_image on termcap frames.
Karoly Lorentey <lorentey@elte.hu>
parents:
67785
diff
changeset
|
1735 struct image_cache *c; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1736 struct image *img; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1737 unsigned hash; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1738 EMACS_TIME now; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1739 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1740 /* F must be a window-system frame, and SPEC must be a valid image |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1741 specification. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1742 xassert (FRAME_WINDOW_P (f)); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1743 xassert (valid_image_p (spec)); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1744 |
92109
4d9fc08769fa
Consolidate the image_cache to the terminal struct.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
87649
diff
changeset
|
1745 c = FRAME_IMAGE_CACHE (f); |
83436
f67e432d150c
Fix crash in lookup_image on termcap frames.
Karoly Lorentey <lorentey@elte.hu>
parents:
67785
diff
changeset
|
1746 |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1747 /* Look up SPEC in the hash table of the image cache. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1748 hash = sxhash (spec, 0); |
78450
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1749 img = search_image_cache (f, spec, hash); |
66195
ad1acaef1abb
* image.c (Vmax_image_size): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
66013
diff
changeset
|
1750 if (img && img->load_failed_p) |
ad1acaef1abb
* image.c (Vmax_image_size): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
66013
diff
changeset
|
1751 { |
ad1acaef1abb
* image.c (Vmax_image_size): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
66013
diff
changeset
|
1752 free_image (f, img); |
ad1acaef1abb
* image.c (Vmax_image_size): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
66013
diff
changeset
|
1753 img = NULL; |
ad1acaef1abb
* image.c (Vmax_image_size): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
66013
diff
changeset
|
1754 } |
ad1acaef1abb
* image.c (Vmax_image_size): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
66013
diff
changeset
|
1755 |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1756 /* If not found, create a new image and cache it. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1757 if (img == NULL) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1758 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1759 BLOCK_INPUT; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1760 img = make_image (spec, hash); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1761 cache_image (f, img); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1762 img->load_failed_p = img->type->load (f, img) == 0; |
78450
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1763 img->frame_foreground = FRAME_FOREGROUND_PIXEL (f); |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
1764 img->frame_background = FRAME_BACKGROUND_PIXEL (f); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1765 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1766 /* If we can't load the image, and we don't have a width and |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1767 height, use some arbitrary width and height so that we can |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1768 draw a rectangle for it. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1769 if (img->load_failed_p) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1770 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1771 Lisp_Object value; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1772 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1773 value = image_spec_value (spec, QCwidth, NULL); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1774 img->width = (INTEGERP (value) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1775 ? XFASTINT (value) : DEFAULT_IMAGE_WIDTH); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1776 value = image_spec_value (spec, QCheight, NULL); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1777 img->height = (INTEGERP (value) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1778 ? XFASTINT (value) : DEFAULT_IMAGE_HEIGHT); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1779 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1780 else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1781 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1782 /* Handle image type independent image attributes |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1783 `:ascent ASCENT', `:margin MARGIN', `:relief RELIEF', |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1784 `:background COLOR'. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1785 Lisp_Object ascent, margin, relief, bg; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1786 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1787 ascent = image_spec_value (spec, QCascent, NULL); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1788 if (INTEGERP (ascent)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1789 img->ascent = XFASTINT (ascent); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1790 else if (EQ (ascent, Qcenter)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1791 img->ascent = CENTERED_IMAGE_ASCENT; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1792 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1793 margin = image_spec_value (spec, QCmargin, NULL); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1794 if (INTEGERP (margin) && XINT (margin) >= 0) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1795 img->vmargin = img->hmargin = XFASTINT (margin); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1796 else if (CONSP (margin) && INTEGERP (XCAR (margin)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1797 && INTEGERP (XCDR (margin))) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1798 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1799 if (XINT (XCAR (margin)) > 0) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1800 img->hmargin = XFASTINT (XCAR (margin)); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1801 if (XINT (XCDR (margin)) > 0) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1802 img->vmargin = XFASTINT (XCDR (margin)); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1803 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1804 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1805 relief = image_spec_value (spec, QCrelief, NULL); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1806 if (INTEGERP (relief)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1807 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1808 img->relief = XINT (relief); |
85254 | 1809 img->hmargin += eabs (img->relief); |
1810 img->vmargin += eabs (img->relief); | |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1811 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1812 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1813 if (! img->background_valid) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1814 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1815 bg = image_spec_value (img->spec, QCbackground, NULL); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1816 if (!NILP (bg)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1817 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1818 img->background |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1819 = x_alloc_image_color (f, img, bg, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1820 FRAME_BACKGROUND_PIXEL (f)); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1821 img->background_valid = 1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1822 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1823 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1824 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1825 /* Do image transformations and compute masks, unless we |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1826 don't have the image yet. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1827 if (!EQ (*img->type->type, Qpostscript)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1828 postprocess_image (f, img); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1829 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1830 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1831 UNBLOCK_INPUT; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1832 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1833 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1834 /* We're using IMG, so set its timestamp to `now'. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1835 EMACS_GET_TIME (now); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1836 img->timestamp = EMACS_SECS (now); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1837 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1838 /* Value is the image id. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1839 return img->id; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1840 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1841 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1842 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1843 /* Cache image IMG in the image cache of frame F. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1844 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1845 static void |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
1846 cache_image (struct frame *f, struct image *img) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1847 { |
92109
4d9fc08769fa
Consolidate the image_cache to the terminal struct.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
87649
diff
changeset
|
1848 struct image_cache *c = FRAME_IMAGE_CACHE (f); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1849 int i; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1850 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1851 /* Find a free slot in c->images. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1852 for (i = 0; i < c->used; ++i) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1853 if (c->images[i] == NULL) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1854 break; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1855 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1856 /* If no free slot found, maybe enlarge c->images. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1857 if (i == c->used && c->used == c->size) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1858 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1859 c->size *= 2; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1860 c->images = (struct image **) xrealloc (c->images, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1861 c->size * sizeof *c->images); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1862 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1863 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1864 /* Add IMG to c->images, and assign IMG an id. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1865 c->images[i] = img; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1866 img->id = i; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1867 if (i == c->used) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1868 ++c->used; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1869 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1870 /* Add IMG to the cache's hash table. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1871 i = img->hash % IMAGE_CACHE_BUCKETS_SIZE; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1872 img->next = c->buckets[i]; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1873 if (img->next) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1874 img->next->prev = img; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1875 img->prev = NULL; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1876 c->buckets[i] = img; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1877 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1878 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1879 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1880 /* Call FN on every image in the image cache of frame F. Used to mark |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1881 Lisp Objects in the image cache. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1882 |
92109
4d9fc08769fa
Consolidate the image_cache to the terminal struct.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
87649
diff
changeset
|
1883 /* Mark Lisp objects in image IMG. */ |
4d9fc08769fa
Consolidate the image_cache to the terminal struct.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
87649
diff
changeset
|
1884 |
4d9fc08769fa
Consolidate the image_cache to the terminal struct.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
87649
diff
changeset
|
1885 static void |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
1886 mark_image (struct image *img) |
92109
4d9fc08769fa
Consolidate the image_cache to the terminal struct.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
87649
diff
changeset
|
1887 { |
4d9fc08769fa
Consolidate the image_cache to the terminal struct.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
87649
diff
changeset
|
1888 mark_object (img->spec); |
92150
1c088baa9d2d
Allow fine-grained image-cache flushing.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
92110
diff
changeset
|
1889 mark_object (img->dependencies); |
92109
4d9fc08769fa
Consolidate the image_cache to the terminal struct.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
87649
diff
changeset
|
1890 |
4d9fc08769fa
Consolidate the image_cache to the terminal struct.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
87649
diff
changeset
|
1891 if (!NILP (img->data.lisp_val)) |
4d9fc08769fa
Consolidate the image_cache to the terminal struct.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
87649
diff
changeset
|
1892 mark_object (img->data.lisp_val); |
4d9fc08769fa
Consolidate the image_cache to the terminal struct.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
87649
diff
changeset
|
1893 } |
4d9fc08769fa
Consolidate the image_cache to the terminal struct.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
87649
diff
changeset
|
1894 |
4d9fc08769fa
Consolidate the image_cache to the terminal struct.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
87649
diff
changeset
|
1895 |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1896 void |
92109
4d9fc08769fa
Consolidate the image_cache to the terminal struct.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
87649
diff
changeset
|
1897 mark_image_cache (struct image_cache *c) |
4d9fc08769fa
Consolidate the image_cache to the terminal struct.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
87649
diff
changeset
|
1898 { |
4d9fc08769fa
Consolidate the image_cache to the terminal struct.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
87649
diff
changeset
|
1899 if (c) |
4d9fc08769fa
Consolidate the image_cache to the terminal struct.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
87649
diff
changeset
|
1900 { |
4d9fc08769fa
Consolidate the image_cache to the terminal struct.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
87649
diff
changeset
|
1901 int i; |
4d9fc08769fa
Consolidate the image_cache to the terminal struct.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
87649
diff
changeset
|
1902 for (i = 0; i < c->used; ++i) |
4d9fc08769fa
Consolidate the image_cache to the terminal struct.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
87649
diff
changeset
|
1903 if (c->images[i]) |
4d9fc08769fa
Consolidate the image_cache to the terminal struct.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
87649
diff
changeset
|
1904 mark_image (c->images[i]); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1905 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1906 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1907 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1908 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1909 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1910 /*********************************************************************** |
97043
9592c50233ab
Remove support for Mac Carbon.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
97034
diff
changeset
|
1911 X / NS / W32 support code |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
1912 ***********************************************************************/ |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1913 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1914 #ifdef HAVE_NTGUI |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1915 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1916 /* Macro for defining functions that will be loaded from image DLLs. */ |
62561
a8d780395b8f
(lookup_image, png_read_from_memory): Remove hacks (and misleading comments).
Juanma Barranquero <lekktu@gmail.com>
parents:
62216
diff
changeset
|
1917 #define DEF_IMGLIB_FN(func) int (FAR CDECL *fn_##func)() |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1918 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1919 /* Macro for loading those image functions from the library. */ |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
1920 #define LOAD_IMGLIB_FN(lib,func) { \ |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
1921 fn_##func = (void *) GetProcAddress (lib, #func); \ |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
1922 if (!fn_##func) return 0; \ |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1923 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1924 |
56104
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
1925 /* Load a DLL implementing an image type. |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
1926 The `image-library-alist' variable associates a symbol, |
82820
2f1e57a528f0
(syms_of_image) <image-library-alist, cross-disabled-images>: Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents:
82795
diff
changeset
|
1927 identifying an image type, to a list of possible filenames. |
56104
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
1928 The function returns NULL if no library could be loaded for |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
1929 the given image type, or if the library was previously loaded; |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
1930 else the handle of the DLL. */ |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
1931 static HMODULE |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
1932 w32_delayed_load (Lisp_Object libraries, Lisp_Object type) |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
1933 { |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
1934 HMODULE library = NULL; |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
1935 |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
1936 if (CONSP (libraries) && NILP (Fassq (type, Vimage_type_cache))) |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
1937 { |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
1938 Lisp_Object dlls = Fassq (type, libraries); |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
1939 |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
1940 if (CONSP (dlls)) |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
1941 for (dlls = XCDR (dlls); CONSP (dlls); dlls = XCDR (dlls)) |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
1942 { |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
1943 CHECK_STRING_CAR (dlls); |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
1944 if (library = LoadLibrary (SDATA (XCAR (dlls)))) |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
1945 break; |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
1946 } |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
1947 } |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
1948 |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
1949 return library; |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
1950 } |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
1951 |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1952 #endif /* HAVE_NTGUI */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1953 |
109100
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
1954 static int x_create_x_image_and_pixmap (struct frame *, int, int, int, |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
1955 XImagePtr *, Pixmap *); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
1956 static void x_destroy_x_image (XImagePtr); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
1957 static void x_put_x_image (struct frame *, XImagePtr, Pixmap, int, int); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1958 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1959 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1960 /* Create an XImage and a pixmap of size WIDTH x HEIGHT for use on |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1961 frame F. Set *XIMG and *PIXMAP to the XImage and Pixmap created. |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1962 Set (*XIMG)->data to a raster of WIDTH x HEIGHT pixels allocated |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1963 via xmalloc. Print error messages via image_error if an error |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1964 occurs. Value is non-zero if successful. |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1965 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1966 On W32, a DEPTH of zero signifies a 24 bit image, otherwise DEPTH |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1967 should indicate the bit depth of the image. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1968 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1969 static int |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
1970 x_create_x_image_and_pixmap (struct frame *f, int width, int height, int depth, |
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
1971 XImagePtr *ximg, Pixmap *pixmap) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1972 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1973 #ifdef HAVE_X_WINDOWS |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1974 Display *display = FRAME_X_DISPLAY (f); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1975 Window window = FRAME_X_WINDOW (f); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1976 Screen *screen = FRAME_X_SCREEN (f); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1977 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1978 xassert (interrupt_input_blocked); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1979 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1980 if (depth <= 0) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1981 depth = DefaultDepthOfScreen (screen); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1982 *ximg = XCreateImage (display, DefaultVisualOfScreen (screen), |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1983 depth, ZPixmap, 0, NULL, width, height, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1984 depth > 16 ? 32 : depth > 8 ? 16 : 8, 0); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1985 if (*ximg == NULL) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1986 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1987 image_error ("Unable to allocate X image", Qnil, Qnil); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1988 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1989 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1990 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1991 /* Allocate image raster. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1992 (*ximg)->data = (char *) xmalloc ((*ximg)->bytes_per_line * height); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1993 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1994 /* Allocate a pixmap of the same size. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1995 *pixmap = XCreatePixmap (display, window, width, height, depth); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1996 if (*pixmap == NO_PIXMAP) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1997 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1998 x_destroy_x_image (*ximg); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
1999 *ximg = NULL; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2000 image_error ("Unable to create X pixmap", Qnil, Qnil); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2001 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2002 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2003 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2004 return 1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2005 #endif /* HAVE_X_WINDOWS */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2006 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2007 #ifdef HAVE_NTGUI |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2008 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2009 BITMAPINFOHEADER *header; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2010 HDC hdc; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2011 int scanline_width_bits; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2012 int remainder; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2013 int palette_colors = 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2014 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2015 if (depth == 0) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2016 depth = 24; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2017 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2018 if (depth != 1 && depth != 4 && depth != 8 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2019 && depth != 16 && depth != 24 && depth != 32) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2020 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2021 image_error ("Invalid image bit depth specified", Qnil, Qnil); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2022 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2023 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2024 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2025 scanline_width_bits = width * depth; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2026 remainder = scanline_width_bits % 32; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2027 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2028 if (remainder) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2029 scanline_width_bits += 32 - remainder; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2030 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2031 /* Bitmaps with a depth less than 16 need a palette. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2032 /* BITMAPINFO structure already contains the first RGBQUAD. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2033 if (depth < 16) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2034 palette_colors = 1 << depth - 1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2035 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2036 *ximg = xmalloc (sizeof (XImage) + palette_colors * sizeof (RGBQUAD)); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2037 if (*ximg == NULL) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2038 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2039 image_error ("Unable to allocate memory for XImage", Qnil, Qnil); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2040 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2041 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2042 |
109165
750db9f3e6d8
Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents:
109160
diff
changeset
|
2043 header = &(*ximg)->info.bmiHeader; |
750db9f3e6d8
Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents:
109160
diff
changeset
|
2044 memset (&(*ximg)->info, 0, sizeof (BITMAPINFO)); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2045 header->biSize = sizeof (*header); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2046 header->biWidth = width; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2047 header->biHeight = -height; /* negative indicates a top-down bitmap. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2048 header->biPlanes = 1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2049 header->biBitCount = depth; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2050 header->biCompression = BI_RGB; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2051 header->biClrUsed = palette_colors; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2052 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2053 /* TODO: fill in palette. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2054 if (depth == 1) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2055 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2056 (*ximg)->info.bmiColors[0].rgbBlue = 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2057 (*ximg)->info.bmiColors[0].rgbGreen = 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2058 (*ximg)->info.bmiColors[0].rgbRed = 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2059 (*ximg)->info.bmiColors[0].rgbReserved = 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2060 (*ximg)->info.bmiColors[1].rgbBlue = 255; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2061 (*ximg)->info.bmiColors[1].rgbGreen = 255; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2062 (*ximg)->info.bmiColors[1].rgbRed = 255; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2063 (*ximg)->info.bmiColors[1].rgbReserved = 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2064 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2065 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2066 hdc = get_frame_dc (f); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2067 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2068 /* Create a DIBSection and raster array for the bitmap, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2069 and store its handle in *pixmap. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2070 *pixmap = CreateDIBSection (hdc, &((*ximg)->info), |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2071 (depth < 16) ? DIB_PAL_COLORS : DIB_RGB_COLORS, |
63323
ccf928f0383c
(x_create_x_image_and_pixmap) [HAVE_NTGUI]: Cast 4th arg
Eli Zaretskii <eliz@gnu.org>
parents:
63112
diff
changeset
|
2072 /* casting avoids a GCC warning */ |
ccf928f0383c
(x_create_x_image_and_pixmap) [HAVE_NTGUI]: Cast 4th arg
Eli Zaretskii <eliz@gnu.org>
parents:
63112
diff
changeset
|
2073 (void **)&((*ximg)->data), NULL, 0); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2074 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2075 /* Realize display palette and garbage all frames. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2076 release_frame_dc (f, hdc); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2077 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2078 if (*pixmap == NULL) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2079 { |
82795
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
2080 DWORD err = GetLastError (); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2081 Lisp_Object errcode; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2082 /* All system errors are < 10000, so the following is safe. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2083 XSETINT (errcode, (int) err); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2084 image_error ("Unable to create bitmap, error code %d", errcode, Qnil); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2085 x_destroy_x_image (*ximg); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2086 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2087 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2088 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2089 return 1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2090 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2091 #endif /* HAVE_NTGUI */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2092 |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
2093 #ifdef HAVE_NS |
109160
f8660b83cdbf
Fix whitespace to follow coding guidelines.
Juanma Barranquero <lekktu@gmail.com>
parents:
109144
diff
changeset
|
2094 *pixmap = ns_image_for_XPM (width, height, depth); |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
2095 if (*pixmap == 0) |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
2096 { |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
2097 *ximg = NULL; |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
2098 image_error ("Unable to allocate NSImage for XPM pixmap", Qnil, Qnil); |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
2099 return 0; |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
2100 } |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
2101 *ximg = *pixmap; |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
2102 return 1; |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
2103 #endif |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2104 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2105 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2106 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2107 /* Destroy XImage XIMG. Free XIMG->data. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2108 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2109 static void |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
2110 x_destroy_x_image (XImagePtr ximg) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2111 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2112 xassert (interrupt_input_blocked); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2113 if (ximg) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2114 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2115 #ifdef HAVE_X_WINDOWS |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2116 xfree (ximg->data); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2117 ximg->data = NULL; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2118 XDestroyImage (ximg); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2119 #endif /* HAVE_X_WINDOWS */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2120 #ifdef HAVE_NTGUI |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2121 /* Data will be freed by DestroyObject. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2122 ximg->data = NULL; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2123 xfree (ximg); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2124 #endif /* HAVE_NTGUI */ |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
2125 #ifdef HAVE_NS |
109160
f8660b83cdbf
Fix whitespace to follow coding guidelines.
Juanma Barranquero <lekktu@gmail.com>
parents:
109144
diff
changeset
|
2126 ns_release_object (ximg); |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
2127 #endif /* HAVE_NS */ |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2128 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2129 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2130 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2131 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2132 /* Put XImage XIMG into pixmap PIXMAP on frame F. WIDTH and HEIGHT |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2133 are width and height of both the image and pixmap. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2134 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2135 static void |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
2136 x_put_x_image (struct frame *f, XImagePtr ximg, Pixmap pixmap, int width, int height) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2137 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2138 #ifdef HAVE_X_WINDOWS |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2139 GC gc; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2140 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2141 xassert (interrupt_input_blocked); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2142 gc = XCreateGC (FRAME_X_DISPLAY (f), pixmap, 0, NULL); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2143 XPutImage (FRAME_X_DISPLAY (f), pixmap, gc, ximg, 0, 0, 0, 0, width, height); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2144 XFreeGC (FRAME_X_DISPLAY (f), gc); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2145 #endif /* HAVE_X_WINDOWS */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2146 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2147 #ifdef HAVE_NTGUI |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2148 #if 0 /* I don't think this is necessary looking at where it is used. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2149 HDC hdc = get_frame_dc (f); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2150 SetDIBits (hdc, pixmap, 0, height, ximg->data, &(ximg->info), DIB_RGB_COLORS); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2151 release_frame_dc (f, hdc); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2152 #endif |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2153 #endif /* HAVE_NTGUI */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2154 |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
2155 #ifdef HAVE_NS |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
2156 xassert (ximg == pixmap); |
109160
f8660b83cdbf
Fix whitespace to follow coding guidelines.
Juanma Barranquero <lekktu@gmail.com>
parents:
109144
diff
changeset
|
2157 ns_retain_object (ximg); |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
2158 #endif |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2159 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2160 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2161 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2162 /*********************************************************************** |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2163 File Handling |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
2164 ***********************************************************************/ |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2165 |
109100
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
2166 static unsigned char *slurp_file (char *, int *); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2167 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2168 |
82736
ece5e5e6398e
(x_find_image_file): Search in etc/images/ rather than etc/.
Glenn Morris <rgm@gnu.org>
parents:
82518
diff
changeset
|
2169 /* Find image file FILE. Look in data-directory/images, then |
69771
fd6d18b61fa7
Include "charset.h" and "coding.h".
Kenichi Handa <handa@m17n.org>
parents:
69511
diff
changeset
|
2170 x-bitmap-file-path. Value is the encoded full name of the file |
fd6d18b61fa7
Include "charset.h" and "coding.h".
Kenichi Handa <handa@m17n.org>
parents:
69511
diff
changeset
|
2171 found, or nil if not found. */ |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2172 |
54391
138155b7215e
(x_find_image_file): Make extern.
Kim F. Storm <storm@cua.dk>
parents:
54363
diff
changeset
|
2173 Lisp_Object |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
2174 x_find_image_file (Lisp_Object file) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2175 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2176 Lisp_Object file_found, search_path; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2177 int fd; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2178 |
82736
ece5e5e6398e
(x_find_image_file): Search in etc/images/ rather than etc/.
Glenn Morris <rgm@gnu.org>
parents:
82518
diff
changeset
|
2179 /* TODO I think this should use something like image-load-path |
ece5e5e6398e
(x_find_image_file): Search in etc/images/ rather than etc/.
Glenn Morris <rgm@gnu.org>
parents:
82518
diff
changeset
|
2180 instead. Unfortunately, that can contain non-string elements. */ |
ece5e5e6398e
(x_find_image_file): Search in etc/images/ rather than etc/.
Glenn Morris <rgm@gnu.org>
parents:
82518
diff
changeset
|
2181 search_path = Fcons (Fexpand_file_name (build_string ("images"), |
ece5e5e6398e
(x_find_image_file): Search in etc/images/ rather than etc/.
Glenn Morris <rgm@gnu.org>
parents:
82518
diff
changeset
|
2182 Vdata_directory), |
ece5e5e6398e
(x_find_image_file): Search in etc/images/ rather than etc/.
Glenn Morris <rgm@gnu.org>
parents:
82518
diff
changeset
|
2183 Vx_bitmap_file_path); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2184 |
83770 | 2185 /* Try to find FILE in data-directory/images, then x-bitmap-file-path. */ |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2186 fd = openp (search_path, file, Qnil, &file_found, Qnil); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2187 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2188 if (fd == -1) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2189 file_found = Qnil; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2190 else |
69771
fd6d18b61fa7
Include "charset.h" and "coding.h".
Kenichi Handa <handa@m17n.org>
parents:
69511
diff
changeset
|
2191 { |
fd6d18b61fa7
Include "charset.h" and "coding.h".
Kenichi Handa <handa@m17n.org>
parents:
69511
diff
changeset
|
2192 file_found = ENCODE_FILE (file_found); |
fd6d18b61fa7
Include "charset.h" and "coding.h".
Kenichi Handa <handa@m17n.org>
parents:
69511
diff
changeset
|
2193 close (fd); |
fd6d18b61fa7
Include "charset.h" and "coding.h".
Kenichi Handa <handa@m17n.org>
parents:
69511
diff
changeset
|
2194 } |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2195 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2196 return file_found; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2197 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2198 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2199 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2200 /* Read FILE into memory. Value is a pointer to a buffer allocated |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2201 with xmalloc holding FILE's contents. Value is null if an error |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2202 occurred. *SIZE is set to the size of the file. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2203 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2204 static unsigned char * |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
2205 slurp_file (char *file, int *size) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2206 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2207 FILE *fp = NULL; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2208 unsigned char *buf = NULL; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2209 struct stat st; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2210 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2211 if (stat (file, &st) == 0 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2212 && (fp = fopen (file, "rb")) != NULL |
65764
375ab086d366
* image.c (slurp_file, xbm_read_bitmap_data): Cast to the correct
Dan Nicolaescu <dann@ics.uci.edu>
parents:
65723
diff
changeset
|
2213 && (buf = (unsigned char *) xmalloc (st.st_size), |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2214 fread (buf, 1, st.st_size, fp) == st.st_size)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2215 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2216 *size = st.st_size; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2217 fclose (fp); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2218 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2219 else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2220 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2221 if (fp) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2222 fclose (fp); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2223 if (buf) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2224 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2225 xfree (buf); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2226 buf = NULL; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2227 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2228 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2229 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2230 return buf; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2231 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2232 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2233 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2234 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2235 /*********************************************************************** |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2236 XBM images |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
2237 ***********************************************************************/ |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2238 |
109100
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
2239 static int xbm_scan (unsigned char **, unsigned char *, char *, int *); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
2240 static int xbm_load (struct frame *f, struct image *img); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
2241 static int xbm_load_image (struct frame *f, struct image *img, |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
2242 unsigned char *, unsigned char *); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
2243 static int xbm_image_p (Lisp_Object object); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
2244 static int xbm_read_bitmap_data (struct frame *f, |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
2245 unsigned char *, unsigned char *, |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
2246 int *, int *, unsigned char **, int); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
2247 static int xbm_file_p (Lisp_Object); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2248 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2249 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2250 /* Indices of image specification fields in xbm_format, below. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2251 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2252 enum xbm_keyword_index |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
2253 { |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
2254 XBM_TYPE, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
2255 XBM_FILE, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
2256 XBM_WIDTH, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
2257 XBM_HEIGHT, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
2258 XBM_DATA, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
2259 XBM_FOREGROUND, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
2260 XBM_BACKGROUND, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
2261 XBM_ASCENT, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
2262 XBM_MARGIN, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
2263 XBM_RELIEF, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
2264 XBM_ALGORITHM, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
2265 XBM_HEURISTIC_MASK, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
2266 XBM_MASK, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
2267 XBM_LAST |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
2268 }; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2269 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2270 /* Vector of image_keyword structures describing the format |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2271 of valid XBM image specifications. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2272 |
105959
ba3ffbd9c422
* process.c (ifflag_def): Make flag_sym constant.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
105877
diff
changeset
|
2273 static const struct image_keyword xbm_format[XBM_LAST] = |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
2274 { |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
2275 {":type", IMAGE_SYMBOL_VALUE, 1}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
2276 {":file", IMAGE_STRING_VALUE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
2277 {":width", IMAGE_POSITIVE_INTEGER_VALUE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
2278 {":height", IMAGE_POSITIVE_INTEGER_VALUE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
2279 {":data", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
2280 {":foreground", IMAGE_STRING_OR_NIL_VALUE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
2281 {":background", IMAGE_STRING_OR_NIL_VALUE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
2282 {":ascent", IMAGE_ASCENT_VALUE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
2283 {":margin", IMAGE_POSITIVE_INTEGER_VALUE_OR_PAIR, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
2284 {":relief", IMAGE_INTEGER_VALUE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
2285 {":conversion", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
2286 {":heuristic-mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
2287 {":mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0} |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
2288 }; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2289 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2290 /* Structure describing the image type XBM. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2291 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2292 static struct image_type xbm_type = |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
2293 { |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
2294 &Qxbm, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
2295 xbm_image_p, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
2296 xbm_load, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
2297 x_clear_image, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
2298 NULL |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
2299 }; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2300 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2301 /* Tokens returned from xbm_scan. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2302 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2303 enum xbm_token |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
2304 { |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
2305 XBM_TK_IDENT = 256, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
2306 XBM_TK_NUMBER |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
2307 }; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2308 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2309 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2310 /* Return non-zero if OBJECT is a valid XBM-type image specification. |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2311 A valid specification is a list starting with the symbol `image' |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2312 The rest of the list is a property list which must contain an |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2313 entry `:type xbm.. |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2314 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2315 If the specification specifies a file to load, it must contain |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2316 an entry `:file FILENAME' where FILENAME is a string. |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2317 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2318 If the specification is for a bitmap loaded from memory it must |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2319 contain `:width WIDTH', `:height HEIGHT', and `:data DATA', where |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2320 WIDTH and HEIGHT are integers > 0. DATA may be: |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2321 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2322 1. a string large enough to hold the bitmap data, i.e. it must |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2323 have a size >= (WIDTH + 7) / 8 * HEIGHT |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2324 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2325 2. a bool-vector of size >= WIDTH * HEIGHT |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2326 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2327 3. a vector of strings or bool-vectors, one for each line of the |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2328 bitmap. |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2329 |
78970
35f78a0b1e30
(syms_of_image) <image-types>: Fix typo in docstring.
Juanma Barranquero <lekktu@gmail.com>
parents:
78863
diff
changeset
|
2330 4. a string containing an in-memory XBM file. WIDTH and HEIGHT |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2331 may not be specified in this case because they are defined in the |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2332 XBM file. |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2333 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2334 Both the file and data forms may contain the additional entries |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2335 `:background COLOR' and `:foreground COLOR'. If not present, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2336 foreground and background of the frame on which the image is |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2337 displayed is used. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2338 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2339 static int |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
2340 xbm_image_p (Lisp_Object object) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2341 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2342 struct image_keyword kw[XBM_LAST]; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2343 |
109165
750db9f3e6d8
Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents:
109160
diff
changeset
|
2344 memcpy (kw, xbm_format, sizeof kw); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2345 if (!parse_image_spec (object, kw, XBM_LAST, Qxbm)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2346 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2347 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2348 xassert (EQ (kw[XBM_TYPE].value, Qxbm)); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2349 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2350 if (kw[XBM_FILE].count) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2351 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2352 if (kw[XBM_WIDTH].count || kw[XBM_HEIGHT].count || kw[XBM_DATA].count) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2353 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2354 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2355 else if (kw[XBM_DATA].count && xbm_file_p (kw[XBM_DATA].value)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2356 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2357 /* In-memory XBM file. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2358 if (kw[XBM_WIDTH].count || kw[XBM_HEIGHT].count || kw[XBM_FILE].count) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2359 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2360 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2361 else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2362 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2363 Lisp_Object data; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2364 int width, height; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2365 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2366 /* Entries for `:width', `:height' and `:data' must be present. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2367 if (!kw[XBM_WIDTH].count |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2368 || !kw[XBM_HEIGHT].count |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2369 || !kw[XBM_DATA].count) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2370 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2371 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2372 data = kw[XBM_DATA].value; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2373 width = XFASTINT (kw[XBM_WIDTH].value); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2374 height = XFASTINT (kw[XBM_HEIGHT].value); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2375 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2376 /* Check type of data, and width and height against contents of |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2377 data. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2378 if (VECTORP (data)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2379 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2380 int i; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2381 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2382 /* Number of elements of the vector must be >= height. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2383 if (XVECTOR (data)->size < height) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2384 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2385 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2386 /* Each string or bool-vector in data must be large enough |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2387 for one line of the image. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2388 for (i = 0; i < height; ++i) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2389 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2390 Lisp_Object elt = XVECTOR (data)->contents[i]; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2391 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2392 if (STRINGP (elt)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2393 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2394 if (SCHARS (elt) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2395 < (width + BITS_PER_CHAR - 1) / BITS_PER_CHAR) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2396 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2397 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2398 else if (BOOL_VECTOR_P (elt)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2399 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2400 if (XBOOL_VECTOR (elt)->size < width) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2401 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2402 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2403 else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2404 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2405 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2406 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2407 else if (STRINGP (data)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2408 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2409 if (SCHARS (data) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2410 < (width + BITS_PER_CHAR - 1) / BITS_PER_CHAR * height) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2411 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2412 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2413 else if (BOOL_VECTOR_P (data)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2414 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2415 if (XBOOL_VECTOR (data)->size < width * height) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2416 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2417 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2418 else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2419 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2420 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2421 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2422 return 1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2423 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2424 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2425 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2426 /* Scan a bitmap file. FP is the stream to read from. Value is |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2427 either an enumerator from enum xbm_token, or a character for a |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2428 single-character token, or 0 at end of file. If scanning an |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2429 identifier, store the lexeme of the identifier in SVAL. If |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2430 scanning a number, store its value in *IVAL. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2431 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2432 static int |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
2433 xbm_scan (unsigned char **s, unsigned char *end, char *sval, int *ival) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2434 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2435 unsigned int c; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2436 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2437 loop: |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2438 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2439 /* Skip white space. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2440 while (*s < end && (c = *(*s)++, isspace (c))) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2441 ; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2442 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2443 if (*s >= end) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2444 c = 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2445 else if (isdigit (c)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2446 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2447 int value = 0, digit; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2448 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2449 if (c == '0' && *s < end) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2450 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2451 c = *(*s)++; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2452 if (c == 'x' || c == 'X') |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2453 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2454 while (*s < end) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2455 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2456 c = *(*s)++; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2457 if (isdigit (c)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2458 digit = c - '0'; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2459 else if (c >= 'a' && c <= 'f') |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2460 digit = c - 'a' + 10; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2461 else if (c >= 'A' && c <= 'F') |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2462 digit = c - 'A' + 10; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2463 else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2464 break; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2465 value = 16 * value + digit; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2466 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2467 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2468 else if (isdigit (c)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2469 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2470 value = c - '0'; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2471 while (*s < end |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2472 && (c = *(*s)++, isdigit (c))) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2473 value = 8 * value + c - '0'; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2474 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2475 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2476 else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2477 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2478 value = c - '0'; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2479 while (*s < end |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2480 && (c = *(*s)++, isdigit (c))) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2481 value = 10 * value + c - '0'; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2482 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2483 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2484 if (*s < end) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2485 *s = *s - 1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2486 *ival = value; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2487 c = XBM_TK_NUMBER; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2488 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2489 else if (isalpha (c) || c == '_') |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2490 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2491 *sval++ = c; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2492 while (*s < end |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2493 && (c = *(*s)++, (isalnum (c) || c == '_'))) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2494 *sval++ = c; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2495 *sval = 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2496 if (*s < end) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2497 *s = *s - 1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2498 c = XBM_TK_IDENT; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2499 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2500 else if (c == '/' && **s == '*') |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2501 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2502 /* C-style comment. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2503 ++*s; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2504 while (**s && (**s != '*' || *(*s + 1) != '/')) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2505 ++*s; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2506 if (**s) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2507 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2508 *s += 2; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2509 goto loop; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2510 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2511 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2512 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2513 return c; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2514 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2515 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2516 #ifdef HAVE_NTGUI |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2517 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2518 /* Create a Windows bitmap from X bitmap data. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2519 static HBITMAP |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2520 w32_create_pixmap_from_bitmap_data (int width, int height, char *data) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2521 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2522 static unsigned char swap_nibble[16] |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2523 = { 0x0, 0x8, 0x4, 0xc, /* 0000 1000 0100 1100 */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2524 0x2, 0xa, 0x6, 0xe, /* 0010 1010 0110 1110 */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2525 0x1, 0x9, 0x5, 0xd, /* 0001 1001 0101 1101 */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2526 0x3, 0xb, 0x7, 0xf }; /* 0011 1011 0111 1111 */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2527 int i, j, w1, w2; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2528 unsigned char *bits, *p; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2529 HBITMAP bmp; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2530 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2531 w1 = (width + 7) / 8; /* nb of 8bits elt in X bitmap */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2532 w2 = ((width + 15) / 16) * 2; /* nb of 16bits elt in W32 bitmap */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2533 bits = (unsigned char *) alloca (height * w2); |
109165
750db9f3e6d8
Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents:
109160
diff
changeset
|
2534 memset (bits, 0, height * w2); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2535 for (i = 0; i < height; i++) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2536 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2537 p = bits + i*w2; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2538 for (j = 0; j < w1; j++) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2539 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2540 /* Bitswap XBM bytes to match how Windows does things. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2541 unsigned char c = *data++; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2542 *p++ = (unsigned char)((swap_nibble[c & 0xf] << 4) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2543 | (swap_nibble[(c>>4) & 0xf])); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2544 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2545 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2546 bmp = CreateBitmap (width, height, 1, 1, (char *) bits); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2547 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2548 return bmp; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2549 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2550 |
78692
6e1f6f80e430
(syms_of_image) <image-library-alist, cross-disabled-images>: Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents:
78450
diff
changeset
|
2551 static void |
109480
d12162869c07
Convert some more functions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109302
diff
changeset
|
2552 convert_mono_to_color_image (struct frame *f, struct image *img, |
d12162869c07
Convert some more functions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109302
diff
changeset
|
2553 COLORREF foreground, COLORREF background) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2554 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2555 HDC hdc, old_img_dc, new_img_dc; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2556 HGDIOBJ old_prev, new_prev; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2557 HBITMAP new_pixmap; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2558 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2559 hdc = get_frame_dc (f); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2560 old_img_dc = CreateCompatibleDC (hdc); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2561 new_img_dc = CreateCompatibleDC (hdc); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2562 new_pixmap = CreateCompatibleBitmap (hdc, img->width, img->height); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2563 release_frame_dc (f, hdc); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2564 old_prev = SelectObject (old_img_dc, img->pixmap); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2565 new_prev = SelectObject (new_img_dc, new_pixmap); |
79528
558b3650d5dc
(xbm_load) [WINDOWSNT]: Shuffle the bits of directly specified XBMs.
Jason Rumney <jasonr@gnu.org>
parents:
78970
diff
changeset
|
2566 /* Windows convention for mono bitmaps is black = background, |
558b3650d5dc
(xbm_load) [WINDOWSNT]: Shuffle the bits of directly specified XBMs.
Jason Rumney <jasonr@gnu.org>
parents:
78970
diff
changeset
|
2567 white = foreground. */ |
78036
3766144496c2
(convert_mono_to_color_image): Swap fore and background.
Jason Rumney <jasonr@gnu.org>
parents:
77929
diff
changeset
|
2568 SetTextColor (new_img_dc, background); |
3766144496c2
(convert_mono_to_color_image): Swap fore and background.
Jason Rumney <jasonr@gnu.org>
parents:
77929
diff
changeset
|
2569 SetBkColor (new_img_dc, foreground); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2570 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2571 BitBlt (new_img_dc, 0, 0, img->width, img->height, old_img_dc, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2572 0, 0, SRCCOPY); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2573 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2574 SelectObject (old_img_dc, old_prev); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2575 SelectObject (new_img_dc, new_prev); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2576 DeleteDC (old_img_dc); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2577 DeleteDC (new_img_dc); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2578 DeleteObject (img->pixmap); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2579 if (new_pixmap == 0) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2580 fprintf (stderr, "Failed to convert image to color.\n"); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2581 else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2582 img->pixmap = new_pixmap; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2583 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2584 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2585 #define XBM_BIT_SHUFFLE(b) (~(b)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2586 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2587 #else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2588 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2589 #define XBM_BIT_SHUFFLE(b) (b) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2590 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2591 #endif /* HAVE_NTGUI */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2592 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2593 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2594 static void |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
2595 Create_Pixmap_From_Bitmap_Data (struct frame *f, struct image *img, char *data, |
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
2596 RGB_PIXEL_COLOR fg, RGB_PIXEL_COLOR bg, |
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
2597 int non_default_colors) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2598 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2599 #ifdef HAVE_NTGUI |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2600 img->pixmap |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2601 = w32_create_pixmap_from_bitmap_data (img->width, img->height, data); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2602 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2603 /* If colors were specified, transfer the bitmap to a color one. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2604 if (non_default_colors) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2605 convert_mono_to_color_image (f, img, fg, bg); |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
2606 |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
2607 #elif defined (HAVE_NS) |
109160
f8660b83cdbf
Fix whitespace to follow coding guidelines.
Juanma Barranquero <lekktu@gmail.com>
parents:
109144
diff
changeset
|
2608 img->pixmap = ns_image_from_XBM (data, img->width, img->height); |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
2609 |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2610 #else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2611 img->pixmap |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2612 = XCreatePixmapFromBitmapData (FRAME_X_DISPLAY (f), |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2613 FRAME_X_WINDOW (f), |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2614 data, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2615 img->width, img->height, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2616 fg, bg, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2617 DefaultDepthOfScreen (FRAME_X_SCREEN (f))); |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
2618 #endif /* !HAVE_NTGUI && !HAVE_NS */ |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2619 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2620 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2621 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2622 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2623 /* Replacement for XReadBitmapFileData which isn't available under old |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2624 X versions. CONTENTS is a pointer to a buffer to parse; END is the |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2625 buffer's end. Set *WIDTH and *HEIGHT to the width and height of |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2626 the image. Return in *DATA the bitmap data allocated with xmalloc. |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2627 Value is non-zero if successful. DATA null means just test if |
104259
a52366907b7a
* image.c (xbm_read_bitmap_data): New arg inhibit_image_error.
Chong Yidong <cyd@stupidchicken.com>
parents:
102392
diff
changeset
|
2628 CONTENTS looks like an in-memory XBM file. If INHIBIT_IMAGE_ERROR |
a52366907b7a
* image.c (xbm_read_bitmap_data): New arg inhibit_image_error.
Chong Yidong <cyd@stupidchicken.com>
parents:
102392
diff
changeset
|
2629 is non-zero, inhibit the call to image_error when the image size is |
a52366907b7a
* image.c (xbm_read_bitmap_data): New arg inhibit_image_error.
Chong Yidong <cyd@stupidchicken.com>
parents:
102392
diff
changeset
|
2630 invalid (the bitmap remains unread). */ |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2631 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2632 static int |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
2633 xbm_read_bitmap_data (struct frame *f, unsigned char *contents, unsigned char *end, |
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
2634 int *width, int *height, unsigned char **data, |
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
2635 int inhibit_image_error) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2636 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2637 unsigned char *s = contents; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2638 char buffer[BUFSIZ]; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2639 int padding_p = 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2640 int v10 = 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2641 int bytes_per_line, i, nbytes; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2642 unsigned char *p; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2643 int value; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2644 int LA1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2645 |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
2646 #define match() \ |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
2647 LA1 = xbm_scan (&s, end, buffer, &value) |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
2648 |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
2649 #define expect(TOKEN) \ |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
2650 if (LA1 != (TOKEN)) \ |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
2651 goto failure; \ |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
2652 else \ |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
2653 match () |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2654 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2655 #define expect_ident(IDENT) \ |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
2656 if (LA1 == XBM_TK_IDENT && strcmp (buffer, (IDENT)) == 0) \ |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
2657 match (); \ |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
2658 else \ |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
2659 goto failure |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2660 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2661 *width = *height = -1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2662 if (data) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2663 *data = NULL; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2664 LA1 = xbm_scan (&s, end, buffer, &value); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2665 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2666 /* Parse defines for width, height and hot-spots. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2667 while (LA1 == '#') |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2668 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2669 match (); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2670 expect_ident ("define"); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2671 expect (XBM_TK_IDENT); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2672 |
73346
ba22be0026c7
(xbm_read_bitmap_data): Delete extra semicolon.
Romain Francoise <romain@orebokech.com>
parents:
72539
diff
changeset
|
2673 if (LA1 == XBM_TK_NUMBER) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2674 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2675 char *p = strrchr (buffer, '_'); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2676 p = p ? p + 1 : buffer; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2677 if (strcmp (p, "width") == 0) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2678 *width = value; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2679 else if (strcmp (p, "height") == 0) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2680 *height = value; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2681 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2682 expect (XBM_TK_NUMBER); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2683 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2684 |
66195
ad1acaef1abb
* image.c (Vmax_image_size): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
66013
diff
changeset
|
2685 if (!check_image_size (f, *width, *height)) |
102392
689fbe81edc4
(xbm_read_bitmap_data, png_load, svg_load_image):
Jason Rumney <jasonr@gnu.org>
parents:
101838
diff
changeset
|
2686 { |
104259
a52366907b7a
* image.c (xbm_read_bitmap_data): New arg inhibit_image_error.
Chong Yidong <cyd@stupidchicken.com>
parents:
102392
diff
changeset
|
2687 if (!inhibit_image_error) |
a52366907b7a
* image.c (xbm_read_bitmap_data): New arg inhibit_image_error.
Chong Yidong <cyd@stupidchicken.com>
parents:
102392
diff
changeset
|
2688 image_error ("Invalid image size (see `max-image-size')", Qnil, Qnil); |
102392
689fbe81edc4
(xbm_read_bitmap_data, png_load, svg_load_image):
Jason Rumney <jasonr@gnu.org>
parents:
101838
diff
changeset
|
2689 goto failure; |
689fbe81edc4
(xbm_read_bitmap_data, png_load, svg_load_image):
Jason Rumney <jasonr@gnu.org>
parents:
101838
diff
changeset
|
2690 } |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2691 else if (data == NULL) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2692 goto success; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2693 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2694 /* Parse bits. Must start with `static'. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2695 expect_ident ("static"); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2696 if (LA1 == XBM_TK_IDENT) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2697 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2698 if (strcmp (buffer, "unsigned") == 0) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2699 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2700 match (); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2701 expect_ident ("char"); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2702 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2703 else if (strcmp (buffer, "short") == 0) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2704 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2705 match (); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2706 v10 = 1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2707 if (*width % 16 && *width % 16 < 9) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2708 padding_p = 1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2709 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2710 else if (strcmp (buffer, "char") == 0) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2711 match (); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2712 else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2713 goto failure; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2714 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2715 else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2716 goto failure; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2717 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2718 expect (XBM_TK_IDENT); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2719 expect ('['); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2720 expect (']'); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2721 expect ('='); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2722 expect ('{'); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2723 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2724 bytes_per_line = (*width + 7) / 8 + padding_p; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2725 nbytes = bytes_per_line * *height; |
65764
375ab086d366
* image.c (slurp_file, xbm_read_bitmap_data): Cast to the correct
Dan Nicolaescu <dann@ics.uci.edu>
parents:
65723
diff
changeset
|
2726 p = *data = (unsigned char *) xmalloc (nbytes); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2727 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2728 if (v10) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2729 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2730 for (i = 0; i < nbytes; i += 2) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2731 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2732 int val = value; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2733 expect (XBM_TK_NUMBER); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2734 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2735 *p++ = XBM_BIT_SHUFFLE (val); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2736 if (!padding_p || ((i + 2) % bytes_per_line)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2737 *p++ = XBM_BIT_SHUFFLE (value >> 8); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2738 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2739 if (LA1 == ',' || LA1 == '}') |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2740 match (); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2741 else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2742 goto failure; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2743 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2744 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2745 else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2746 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2747 for (i = 0; i < nbytes; ++i) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2748 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2749 int val = value; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2750 expect (XBM_TK_NUMBER); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2751 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2752 *p++ = XBM_BIT_SHUFFLE (val); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2753 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2754 if (LA1 == ',' || LA1 == '}') |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2755 match (); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2756 else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2757 goto failure; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2758 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2759 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2760 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2761 success: |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2762 return 1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2763 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2764 failure: |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2765 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2766 if (data && *data) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2767 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2768 xfree (*data); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2769 *data = NULL; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2770 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2771 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2772 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2773 #undef match |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2774 #undef expect |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2775 #undef expect_ident |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2776 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2777 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2778 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2779 /* Load XBM image IMG which will be displayed on frame F from buffer |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2780 CONTENTS. END is the end of the buffer. Value is non-zero if |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2781 successful. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2782 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2783 static int |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
2784 xbm_load_image (struct frame *f, struct image *img, unsigned char *contents, |
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
2785 unsigned char *end) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2786 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2787 int rc; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2788 unsigned char *data; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2789 int success_p = 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2790 |
104259
a52366907b7a
* image.c (xbm_read_bitmap_data): New arg inhibit_image_error.
Chong Yidong <cyd@stupidchicken.com>
parents:
102392
diff
changeset
|
2791 rc = xbm_read_bitmap_data (f, contents, end, &img->width, &img->height, |
a52366907b7a
* image.c (xbm_read_bitmap_data): New arg inhibit_image_error.
Chong Yidong <cyd@stupidchicken.com>
parents:
102392
diff
changeset
|
2792 &data, 0); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2793 if (rc) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2794 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2795 unsigned long foreground = FRAME_FOREGROUND_PIXEL (f); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2796 unsigned long background = FRAME_BACKGROUND_PIXEL (f); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2797 int non_default_colors = 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2798 Lisp_Object value; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2799 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2800 xassert (img->width > 0 && img->height > 0); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2801 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2802 /* Get foreground and background colors, maybe allocate colors. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2803 value = image_spec_value (img->spec, QCforeground, NULL); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2804 if (!NILP (value)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2805 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2806 foreground = x_alloc_image_color (f, img, value, foreground); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2807 non_default_colors = 1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2808 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2809 value = image_spec_value (img->spec, QCbackground, NULL); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2810 if (!NILP (value)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2811 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2812 background = x_alloc_image_color (f, img, value, background); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2813 img->background = background; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2814 img->background_valid = 1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2815 non_default_colors = 1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2816 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2817 |
54920
38cb79e68369
(PNG_BG_COLOR_SHIFT): Remove.
Kim F. Storm <storm@cua.dk>
parents:
54427
diff
changeset
|
2818 Create_Pixmap_From_Bitmap_Data (f, img, data, |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2819 foreground, background, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2820 non_default_colors); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2821 xfree (data); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2822 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2823 if (img->pixmap == NO_PIXMAP) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2824 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2825 x_clear_image (f, img); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2826 image_error ("Unable to create X pixmap for `%s'", img->spec, Qnil); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2827 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2828 else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2829 success_p = 1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2830 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2831 else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2832 image_error ("Error loading XBM image `%s'", img->spec, Qnil); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2833 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2834 return success_p; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2835 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2836 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2837 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2838 /* Value is non-zero if DATA looks like an in-memory XBM file. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2839 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2840 static int |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
2841 xbm_file_p (Lisp_Object data) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2842 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2843 int w, h; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2844 return (STRINGP (data) |
66195
ad1acaef1abb
* image.c (Vmax_image_size): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
66013
diff
changeset
|
2845 && xbm_read_bitmap_data (NULL, SDATA (data), |
104259
a52366907b7a
* image.c (xbm_read_bitmap_data): New arg inhibit_image_error.
Chong Yidong <cyd@stupidchicken.com>
parents:
102392
diff
changeset
|
2846 (SDATA (data) + SBYTES (data)), |
a52366907b7a
* image.c (xbm_read_bitmap_data): New arg inhibit_image_error.
Chong Yidong <cyd@stupidchicken.com>
parents:
102392
diff
changeset
|
2847 &w, &h, NULL, 1)); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2848 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2849 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2850 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2851 /* Fill image IMG which is used on frame F with pixmap data. Value is |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2852 non-zero if successful. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2853 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2854 static int |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
2855 xbm_load (struct frame *f, struct image *img) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2856 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2857 int success_p = 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2858 Lisp_Object file_name; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2859 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2860 xassert (xbm_image_p (img->spec)); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2861 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2862 /* If IMG->spec specifies a file name, create a non-file spec from it. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2863 file_name = image_spec_value (img->spec, QCfile, NULL); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2864 if (STRINGP (file_name)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2865 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2866 Lisp_Object file; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2867 unsigned char *contents; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2868 int size; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2869 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2870 file = x_find_image_file (file_name); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2871 if (!STRINGP (file)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2872 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2873 image_error ("Cannot find image file `%s'", file_name, Qnil); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2874 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2875 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2876 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2877 contents = slurp_file (SDATA (file), &size); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2878 if (contents == NULL) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2879 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2880 image_error ("Error loading XBM image `%s'", img->spec, Qnil); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2881 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2882 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2883 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2884 success_p = xbm_load_image (f, img, contents, contents + size); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2885 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2886 else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2887 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2888 struct image_keyword fmt[XBM_LAST]; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2889 Lisp_Object data; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2890 unsigned long foreground = FRAME_FOREGROUND_PIXEL (f); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2891 unsigned long background = FRAME_BACKGROUND_PIXEL (f); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2892 int non_default_colors = 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2893 char *bits; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2894 int parsed_p; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2895 int in_memory_file_p = 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2896 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2897 /* See if data looks like an in-memory XBM file. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2898 data = image_spec_value (img->spec, QCdata, NULL); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2899 in_memory_file_p = xbm_file_p (data); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2900 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2901 /* Parse the image specification. */ |
109165
750db9f3e6d8
Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents:
109160
diff
changeset
|
2902 memcpy (fmt, xbm_format, sizeof fmt); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2903 parsed_p = parse_image_spec (img->spec, fmt, XBM_LAST, Qxbm); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2904 xassert (parsed_p); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2905 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2906 /* Get specified width, and height. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2907 if (!in_memory_file_p) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2908 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2909 img->width = XFASTINT (fmt[XBM_WIDTH].value); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2910 img->height = XFASTINT (fmt[XBM_HEIGHT].value); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2911 xassert (img->width > 0 && img->height > 0); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2912 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2913 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2914 /* Get foreground and background colors, maybe allocate colors. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2915 if (fmt[XBM_FOREGROUND].count |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2916 && STRINGP (fmt[XBM_FOREGROUND].value)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2917 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2918 foreground = x_alloc_image_color (f, img, fmt[XBM_FOREGROUND].value, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2919 foreground); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2920 non_default_colors = 1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2921 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2922 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2923 if (fmt[XBM_BACKGROUND].count |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2924 && STRINGP (fmt[XBM_BACKGROUND].value)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2925 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2926 background = x_alloc_image_color (f, img, fmt[XBM_BACKGROUND].value, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2927 background); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2928 non_default_colors = 1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2929 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2930 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2931 if (in_memory_file_p) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2932 success_p = xbm_load_image (f, img, SDATA (data), |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2933 (SDATA (data) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2934 + SBYTES (data))); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2935 else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2936 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2937 if (VECTORP (data)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2938 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2939 int i; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2940 char *p; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2941 int nbytes = (img->width + BITS_PER_CHAR - 1) / BITS_PER_CHAR; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2942 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2943 p = bits = (char *) alloca (nbytes * img->height); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2944 for (i = 0; i < img->height; ++i, p += nbytes) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2945 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2946 Lisp_Object line = XVECTOR (data)->contents[i]; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2947 if (STRINGP (line)) |
109165
750db9f3e6d8
Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents:
109160
diff
changeset
|
2948 memcpy (p, SDATA (line), nbytes); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2949 else |
109165
750db9f3e6d8
Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents:
109160
diff
changeset
|
2950 memcpy (p, XBOOL_VECTOR (line)->data, nbytes); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2951 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2952 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2953 else if (STRINGP (data)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2954 bits = SDATA (data); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2955 else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2956 bits = XBOOL_VECTOR (data)->data; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2957 |
79528
558b3650d5dc
(xbm_load) [WINDOWSNT]: Shuffle the bits of directly specified XBMs.
Jason Rumney <jasonr@gnu.org>
parents:
78970
diff
changeset
|
2958 #ifdef WINDOWSNT |
558b3650d5dc
(xbm_load) [WINDOWSNT]: Shuffle the bits of directly specified XBMs.
Jason Rumney <jasonr@gnu.org>
parents:
78970
diff
changeset
|
2959 { |
558b3650d5dc
(xbm_load) [WINDOWSNT]: Shuffle the bits of directly specified XBMs.
Jason Rumney <jasonr@gnu.org>
parents:
78970
diff
changeset
|
2960 char *invertedBits; |
558b3650d5dc
(xbm_load) [WINDOWSNT]: Shuffle the bits of directly specified XBMs.
Jason Rumney <jasonr@gnu.org>
parents:
78970
diff
changeset
|
2961 int nbytes, i; |
558b3650d5dc
(xbm_load) [WINDOWSNT]: Shuffle the bits of directly specified XBMs.
Jason Rumney <jasonr@gnu.org>
parents:
78970
diff
changeset
|
2962 /* Windows mono bitmaps are reversed compared with X. */ |
558b3650d5dc
(xbm_load) [WINDOWSNT]: Shuffle the bits of directly specified XBMs.
Jason Rumney <jasonr@gnu.org>
parents:
78970
diff
changeset
|
2963 invertedBits = bits; |
106975
62f86ca36527
Use png_sig_cmp to allow linking with libpng 1.4.0.
Chong Yidong <cyd@stupidchicken.com>
parents:
106815
diff
changeset
|
2964 nbytes = (img->width + BITS_PER_CHAR - 1) / BITS_PER_CHAR |
79528
558b3650d5dc
(xbm_load) [WINDOWSNT]: Shuffle the bits of directly specified XBMs.
Jason Rumney <jasonr@gnu.org>
parents:
78970
diff
changeset
|
2965 * img->height; |
109160
f8660b83cdbf
Fix whitespace to follow coding guidelines.
Juanma Barranquero <lekktu@gmail.com>
parents:
109144
diff
changeset
|
2966 bits = (char *) alloca (nbytes); |
79528
558b3650d5dc
(xbm_load) [WINDOWSNT]: Shuffle the bits of directly specified XBMs.
Jason Rumney <jasonr@gnu.org>
parents:
78970
diff
changeset
|
2967 for (i = 0; i < nbytes; i++) |
558b3650d5dc
(xbm_load) [WINDOWSNT]: Shuffle the bits of directly specified XBMs.
Jason Rumney <jasonr@gnu.org>
parents:
78970
diff
changeset
|
2968 bits[i] = XBM_BIT_SHUFFLE (invertedBits[i]); |
558b3650d5dc
(xbm_load) [WINDOWSNT]: Shuffle the bits of directly specified XBMs.
Jason Rumney <jasonr@gnu.org>
parents:
78970
diff
changeset
|
2969 } |
558b3650d5dc
(xbm_load) [WINDOWSNT]: Shuffle the bits of directly specified XBMs.
Jason Rumney <jasonr@gnu.org>
parents:
78970
diff
changeset
|
2970 #endif |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2971 /* Create the pixmap. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2972 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2973 Create_Pixmap_From_Bitmap_Data (f, img, bits, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2974 foreground, background, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2975 non_default_colors); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2976 if (img->pixmap) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2977 success_p = 1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2978 else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2979 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2980 image_error ("Unable to create pixmap for XBM image `%s'", |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2981 img->spec, Qnil); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2982 x_clear_image (f, img); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2983 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2984 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2985 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2986 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2987 return success_p; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2988 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2989 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2990 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2991 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2992 /*********************************************************************** |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2993 XPM images |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
2994 ***********************************************************************/ |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2995 |
97043
9592c50233ab
Remove support for Mac Carbon.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
97034
diff
changeset
|
2996 #if defined (HAVE_XPM) || defined (HAVE_NS) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
2997 |
109100
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
2998 static int xpm_image_p (Lisp_Object object); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
2999 static int xpm_load (struct frame *f, struct image *img); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
3000 static int xpm_valid_color_symbols_p (Lisp_Object); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3001 |
97043
9592c50233ab
Remove support for Mac Carbon.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
97034
diff
changeset
|
3002 #endif /* HAVE_XPM || HAVE_NS */ |
55540
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3003 |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3004 #ifdef HAVE_XPM |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3005 #ifdef HAVE_NTGUI |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3006 /* Indicate to xpm.h that we don't have Xlib. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3007 #define FOR_MSW |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3008 /* simx.h in xpm defines XColor and XImage differently than Emacs. */ |
55375
b9215c2d57ad
(Display) [HAVE_NTGUI]: Redefine while loading xpm.h to avoid name clash.
Jason Rumney <jasonr@gnu.org>
parents:
55022
diff
changeset
|
3009 /* It also defines Display the same way as Emacs, but gcc 3.3 still barfs. */ |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3010 #define XColor xpm_XColor |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3011 #define XImage xpm_XImage |
55375
b9215c2d57ad
(Display) [HAVE_NTGUI]: Redefine while loading xpm.h to avoid name clash.
Jason Rumney <jasonr@gnu.org>
parents:
55022
diff
changeset
|
3012 #define Display xpm_Display |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3013 #define PIXEL_ALREADY_TYPEDEFED |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3014 #include "X11/xpm.h" |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3015 #undef FOR_MSW |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3016 #undef XColor |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3017 #undef XImage |
55375
b9215c2d57ad
(Display) [HAVE_NTGUI]: Redefine while loading xpm.h to avoid name clash.
Jason Rumney <jasonr@gnu.org>
parents:
55022
diff
changeset
|
3018 #undef Display |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3019 #undef PIXEL_ALREADY_TYPEDEFED |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3020 #else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3021 #include "X11/xpm.h" |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3022 #endif /* HAVE_NTGUI */ |
55540
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3023 #endif /* HAVE_XPM */ |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3024 |
97043
9592c50233ab
Remove support for Mac Carbon.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
97034
diff
changeset
|
3025 #if defined (HAVE_XPM) || defined (HAVE_NS) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3026 /* The symbol `xpm' identifying XPM-format images. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3027 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3028 Lisp_Object Qxpm; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3029 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3030 /* Indices of image specification fields in xpm_format, below. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3031 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3032 enum xpm_keyword_index |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
3033 { |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
3034 XPM_TYPE, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
3035 XPM_FILE, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
3036 XPM_DATA, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
3037 XPM_ASCENT, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
3038 XPM_MARGIN, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
3039 XPM_RELIEF, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
3040 XPM_ALGORITHM, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
3041 XPM_HEURISTIC_MASK, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
3042 XPM_MASK, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
3043 XPM_COLOR_SYMBOLS, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
3044 XPM_BACKGROUND, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
3045 XPM_LAST |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
3046 }; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3047 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3048 /* Vector of image_keyword structures describing the format |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3049 of valid XPM image specifications. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3050 |
105959
ba3ffbd9c422
* process.c (ifflag_def): Make flag_sym constant.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
105877
diff
changeset
|
3051 static const struct image_keyword xpm_format[XPM_LAST] = |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
3052 { |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
3053 {":type", IMAGE_SYMBOL_VALUE, 1}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
3054 {":file", IMAGE_STRING_VALUE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
3055 {":data", IMAGE_STRING_VALUE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
3056 {":ascent", IMAGE_ASCENT_VALUE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
3057 {":margin", IMAGE_POSITIVE_INTEGER_VALUE_OR_PAIR, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
3058 {":relief", IMAGE_INTEGER_VALUE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
3059 {":conversion", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
3060 {":heuristic-mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
3061 {":mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
3062 {":color-symbols", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
3063 {":background", IMAGE_STRING_OR_NIL_VALUE, 0} |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
3064 }; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3065 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3066 /* Structure describing the image type XPM. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3067 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3068 static struct image_type xpm_type = |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
3069 { |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
3070 &Qxpm, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
3071 xpm_image_p, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
3072 xpm_load, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
3073 x_clear_image, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
3074 NULL |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
3075 }; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3076 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3077 #ifdef HAVE_X_WINDOWS |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3078 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3079 /* Define ALLOC_XPM_COLORS if we can use Emacs' own color allocation |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3080 functions for allocating image colors. Our own functions handle |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3081 color allocation failures more gracefully than the ones on the XPM |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3082 lib. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3083 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3084 #if defined XpmAllocColor && defined XpmFreeColors && defined XpmColorClosure |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3085 #define ALLOC_XPM_COLORS |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3086 #endif |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3087 #endif /* HAVE_X_WINDOWS */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3088 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3089 #ifdef ALLOC_XPM_COLORS |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3090 |
109100
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
3091 static void xpm_init_color_cache (struct frame *, XpmAttributes *); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
3092 static void xpm_free_color_cache (void); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
3093 static int xpm_lookup_color (struct frame *, char *, XColor *); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
3094 static int xpm_color_bucket (char *); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
3095 static struct xpm_cached_color *xpm_cache_color (struct frame *, char *, |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
3096 XColor *, int); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3097 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3098 /* An entry in a hash table used to cache color definitions of named |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3099 colors. This cache is necessary to speed up XPM image loading in |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3100 case we do color allocations ourselves. Without it, we would need |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3101 a call to XParseColor per pixel in the image. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3102 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3103 struct xpm_cached_color |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3104 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3105 /* Next in collision chain. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3106 struct xpm_cached_color *next; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3107 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3108 /* Color definition (RGB and pixel color). */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3109 XColor color; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3110 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3111 /* Color name. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3112 char name[1]; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3113 }; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3114 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3115 /* The hash table used for the color cache, and its bucket vector |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3116 size. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3117 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3118 #define XPM_COLOR_CACHE_BUCKETS 1001 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3119 struct xpm_cached_color **xpm_color_cache; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3120 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3121 /* Initialize the color cache. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3122 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3123 static void |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
3124 xpm_init_color_cache (struct frame *f, XpmAttributes *attrs) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3125 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3126 size_t nbytes = XPM_COLOR_CACHE_BUCKETS * sizeof *xpm_color_cache; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3127 xpm_color_cache = (struct xpm_cached_color **) xmalloc (nbytes); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3128 memset (xpm_color_cache, 0, nbytes); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3129 init_color_table (); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3130 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3131 if (attrs->valuemask & XpmColorSymbols) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3132 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3133 int i; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3134 XColor color; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3135 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3136 for (i = 0; i < attrs->numsymbols; ++i) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3137 if (XParseColor (FRAME_X_DISPLAY (f), FRAME_X_COLORMAP (f), |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3138 attrs->colorsymbols[i].value, &color)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3139 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3140 color.pixel = lookup_rgb_color (f, color.red, color.green, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3141 color.blue); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3142 xpm_cache_color (f, attrs->colorsymbols[i].name, &color, -1); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3143 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3144 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3145 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3146 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3147 /* Free the color cache. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3148 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3149 static void |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
3150 xpm_free_color_cache (void) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3151 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3152 struct xpm_cached_color *p, *next; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3153 int i; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3154 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3155 for (i = 0; i < XPM_COLOR_CACHE_BUCKETS; ++i) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3156 for (p = xpm_color_cache[i]; p; p = next) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3157 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3158 next = p->next; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3159 xfree (p); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3160 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3161 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3162 xfree (xpm_color_cache); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3163 xpm_color_cache = NULL; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3164 free_color_table (); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3165 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3166 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3167 /* Return the bucket index for color named COLOR_NAME in the color |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3168 cache. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3169 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3170 static int |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
3171 xpm_color_bucket (char *color_name) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3172 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3173 unsigned h = 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3174 char *s; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3175 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3176 for (s = color_name; *s; ++s) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3177 h = (h << 2) ^ *s; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3178 return h %= XPM_COLOR_CACHE_BUCKETS; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3179 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3180 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3181 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3182 /* On frame F, cache values COLOR for color with name COLOR_NAME. |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3183 BUCKET, if >= 0, is a precomputed bucket index. Value is the cache |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3184 entry added. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3185 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3186 static struct xpm_cached_color * |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
3187 xpm_cache_color (struct frame *f, char *color_name, XColor *color, int bucket) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3188 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3189 size_t nbytes; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3190 struct xpm_cached_color *p; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3191 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3192 if (bucket < 0) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3193 bucket = xpm_color_bucket (color_name); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3194 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3195 nbytes = sizeof *p + strlen (color_name); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3196 p = (struct xpm_cached_color *) xmalloc (nbytes); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3197 strcpy (p->name, color_name); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3198 p->color = *color; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3199 p->next = xpm_color_cache[bucket]; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3200 xpm_color_cache[bucket] = p; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3201 return p; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3202 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3203 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3204 /* Look up color COLOR_NAME for frame F in the color cache. If found, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3205 return the cached definition in *COLOR. Otherwise, make a new |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3206 entry in the cache and allocate the color. Value is zero if color |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3207 allocation failed. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3208 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3209 static int |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
3210 xpm_lookup_color (struct frame *f, char *color_name, XColor *color) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3211 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3212 struct xpm_cached_color *p; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3213 int h = xpm_color_bucket (color_name); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3214 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3215 for (p = xpm_color_cache[h]; p; p = p->next) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3216 if (strcmp (p->name, color_name) == 0) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3217 break; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3218 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3219 if (p != NULL) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3220 *color = p->color; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3221 else if (XParseColor (FRAME_X_DISPLAY (f), FRAME_X_COLORMAP (f), |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3222 color_name, color)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3223 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3224 color->pixel = lookup_rgb_color (f, color->red, color->green, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3225 color->blue); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3226 p = xpm_cache_color (f, color_name, color, h); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3227 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3228 /* You get `opaque' at least from ImageMagick converting pbm to xpm |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3229 with transparency, and it's useful. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3230 else if (strcmp ("opaque", color_name) == 0) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3231 { |
109165
750db9f3e6d8
Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents:
109160
diff
changeset
|
3232 memset (color, 0, sizeof (XColor)); /* Is this necessary/correct? */ |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3233 color->pixel = FRAME_FOREGROUND_PIXEL (f); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3234 p = xpm_cache_color (f, color_name, color, h); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3235 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3236 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3237 return p != NULL; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3238 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3239 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3240 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3241 /* Callback for allocating color COLOR_NAME. Called from the XPM lib. |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3242 CLOSURE is a pointer to the frame on which we allocate the |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3243 color. Return in *COLOR the allocated color. Value is non-zero |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3244 if successful. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3245 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3246 static int |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
3247 xpm_alloc_color (Display *dpy, Colormap cmap, char *color_name, XColor *color, |
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
3248 void *closure) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3249 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3250 return xpm_lookup_color ((struct frame *) closure, color_name, color); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3251 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3252 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3253 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3254 /* Callback for freeing NPIXELS colors contained in PIXELS. CLOSURE |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3255 is a pointer to the frame on which we allocate the color. Value is |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3256 non-zero if successful. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3257 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3258 static int |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
3259 xpm_free_colors (Display *dpy, Colormap cmap, Pixel *pixels, int npixels, void *closure) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3260 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3261 return 1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3262 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3263 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3264 #endif /* ALLOC_XPM_COLORS */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3265 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3266 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3267 #ifdef HAVE_NTGUI |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3268 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3269 /* XPM library details. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3270 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3271 DEF_IMGLIB_FN (XpmFreeAttributes); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3272 DEF_IMGLIB_FN (XpmCreateImageFromBuffer); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3273 DEF_IMGLIB_FN (XpmReadFileToImage); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3274 DEF_IMGLIB_FN (XImageFree); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3275 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3276 static int |
56104
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
3277 init_xpm_functions (Lisp_Object libraries) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3278 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3279 HMODULE library; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3280 |
56104
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
3281 if (!(library = w32_delayed_load (libraries, Qxpm))) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3282 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3283 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3284 LOAD_IMGLIB_FN (library, XpmFreeAttributes); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3285 LOAD_IMGLIB_FN (library, XpmCreateImageFromBuffer); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3286 LOAD_IMGLIB_FN (library, XpmReadFileToImage); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3287 LOAD_IMGLIB_FN (library, XImageFree); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3288 return 1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3289 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3290 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3291 #endif /* HAVE_NTGUI */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3292 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3293 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3294 /* Value is non-zero if COLOR_SYMBOLS is a valid color symbols list |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3295 for XPM images. Such a list must consist of conses whose car and |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3296 cdr are strings. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3297 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3298 static int |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
3299 xpm_valid_color_symbols_p (Lisp_Object color_symbols) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3300 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3301 while (CONSP (color_symbols)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3302 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3303 Lisp_Object sym = XCAR (color_symbols); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3304 if (!CONSP (sym) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3305 || !STRINGP (XCAR (sym)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3306 || !STRINGP (XCDR (sym))) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3307 break; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3308 color_symbols = XCDR (color_symbols); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3309 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3310 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3311 return NILP (color_symbols); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3312 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3313 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3314 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3315 /* Value is non-zero if OBJECT is a valid XPM image specification. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3316 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3317 static int |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
3318 xpm_image_p (Lisp_Object object) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3319 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3320 struct image_keyword fmt[XPM_LAST]; |
109165
750db9f3e6d8
Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents:
109160
diff
changeset
|
3321 memcpy (fmt, xpm_format, sizeof fmt); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3322 return (parse_image_spec (object, fmt, XPM_LAST, Qxpm) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3323 /* Either `:file' or `:data' must be present. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3324 && fmt[XPM_FILE].count + fmt[XPM_DATA].count == 1 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3325 /* Either no `:color-symbols' or it's a list of conses |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3326 whose car and cdr are strings. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3327 && (fmt[XPM_COLOR_SYMBOLS].count == 0 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3328 || xpm_valid_color_symbols_p (fmt[XPM_COLOR_SYMBOLS].value))); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3329 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3330 |
97043
9592c50233ab
Remove support for Mac Carbon.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
97034
diff
changeset
|
3331 #endif /* HAVE_XPM || HAVE_NS */ |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3332 |
66919
a9d1837b115c
* gnu.h (gnu_bits): Xpm version of the new Emacs icon.
Chong Yidong <cyd@stupidchicken.com>
parents:
66877
diff
changeset
|
3333 #if defined (HAVE_XPM) && defined (HAVE_X_WINDOWS) |
a9d1837b115c
* gnu.h (gnu_bits): Xpm version of the new Emacs icon.
Chong Yidong <cyd@stupidchicken.com>
parents:
66877
diff
changeset
|
3334 int |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
3335 x_create_bitmap_from_xpm_data (struct frame *f, char **bits) |
66919
a9d1837b115c
* gnu.h (gnu_bits): Xpm version of the new Emacs icon.
Chong Yidong <cyd@stupidchicken.com>
parents:
66877
diff
changeset
|
3336 { |
a9d1837b115c
* gnu.h (gnu_bits): Xpm version of the new Emacs icon.
Chong Yidong <cyd@stupidchicken.com>
parents:
66877
diff
changeset
|
3337 Display_Info *dpyinfo = FRAME_X_DISPLAY_INFO (f); |
a9d1837b115c
* gnu.h (gnu_bits): Xpm version of the new Emacs icon.
Chong Yidong <cyd@stupidchicken.com>
parents:
66877
diff
changeset
|
3338 int id, rc; |
a9d1837b115c
* gnu.h (gnu_bits): Xpm version of the new Emacs icon.
Chong Yidong <cyd@stupidchicken.com>
parents:
66877
diff
changeset
|
3339 XpmAttributes attrs; |
a9d1837b115c
* gnu.h (gnu_bits): Xpm version of the new Emacs icon.
Chong Yidong <cyd@stupidchicken.com>
parents:
66877
diff
changeset
|
3340 Pixmap bitmap, mask; |
a9d1837b115c
* gnu.h (gnu_bits): Xpm version of the new Emacs icon.
Chong Yidong <cyd@stupidchicken.com>
parents:
66877
diff
changeset
|
3341 |
109165
750db9f3e6d8
Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents:
109160
diff
changeset
|
3342 memset (&attrs, 0, sizeof attrs); |
66919
a9d1837b115c
* gnu.h (gnu_bits): Xpm version of the new Emacs icon.
Chong Yidong <cyd@stupidchicken.com>
parents:
66877
diff
changeset
|
3343 |
66924
53960d1c1f2f
initialize XpmAttributes
Chong Yidong <cyd@stupidchicken.com>
parents:
66919
diff
changeset
|
3344 attrs.visual = FRAME_X_VISUAL (f); |
53960d1c1f2f
initialize XpmAttributes
Chong Yidong <cyd@stupidchicken.com>
parents:
66919
diff
changeset
|
3345 attrs.colormap = FRAME_X_COLORMAP (f); |
53960d1c1f2f
initialize XpmAttributes
Chong Yidong <cyd@stupidchicken.com>
parents:
66919
diff
changeset
|
3346 attrs.valuemask |= XpmVisual; |
53960d1c1f2f
initialize XpmAttributes
Chong Yidong <cyd@stupidchicken.com>
parents:
66919
diff
changeset
|
3347 attrs.valuemask |= XpmColormap; |
53960d1c1f2f
initialize XpmAttributes
Chong Yidong <cyd@stupidchicken.com>
parents:
66919
diff
changeset
|
3348 |
66919
a9d1837b115c
* gnu.h (gnu_bits): Xpm version of the new Emacs icon.
Chong Yidong <cyd@stupidchicken.com>
parents:
66877
diff
changeset
|
3349 rc = XpmCreatePixmapFromData (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), |
a9d1837b115c
* gnu.h (gnu_bits): Xpm version of the new Emacs icon.
Chong Yidong <cyd@stupidchicken.com>
parents:
66877
diff
changeset
|
3350 bits, &bitmap, &mask, &attrs); |
a9d1837b115c
* gnu.h (gnu_bits): Xpm version of the new Emacs icon.
Chong Yidong <cyd@stupidchicken.com>
parents:
66877
diff
changeset
|
3351 if (rc != XpmSuccess) |
66984
9d0a2cc054be
* image.c (x_create_bitmap_from_xpm_data): Free attributes on
Chong Yidong <cyd@stupidchicken.com>
parents:
66924
diff
changeset
|
3352 { |
9d0a2cc054be
* image.c (x_create_bitmap_from_xpm_data): Free attributes on
Chong Yidong <cyd@stupidchicken.com>
parents:
66924
diff
changeset
|
3353 XpmFreeAttributes (&attrs); |
9d0a2cc054be
* image.c (x_create_bitmap_from_xpm_data): Free attributes on
Chong Yidong <cyd@stupidchicken.com>
parents:
66924
diff
changeset
|
3354 return -1; |
9d0a2cc054be
* image.c (x_create_bitmap_from_xpm_data): Free attributes on
Chong Yidong <cyd@stupidchicken.com>
parents:
66924
diff
changeset
|
3355 } |
66919
a9d1837b115c
* gnu.h (gnu_bits): Xpm version of the new Emacs icon.
Chong Yidong <cyd@stupidchicken.com>
parents:
66877
diff
changeset
|
3356 |
a9d1837b115c
* gnu.h (gnu_bits): Xpm version of the new Emacs icon.
Chong Yidong <cyd@stupidchicken.com>
parents:
66877
diff
changeset
|
3357 id = x_allocate_bitmap_record (f); |
a9d1837b115c
* gnu.h (gnu_bits): Xpm version of the new Emacs icon.
Chong Yidong <cyd@stupidchicken.com>
parents:
66877
diff
changeset
|
3358 dpyinfo->bitmaps[id - 1].pixmap = bitmap; |
a9d1837b115c
* gnu.h (gnu_bits): Xpm version of the new Emacs icon.
Chong Yidong <cyd@stupidchicken.com>
parents:
66877
diff
changeset
|
3359 dpyinfo->bitmaps[id - 1].have_mask = 1; |
a9d1837b115c
* gnu.h (gnu_bits): Xpm version of the new Emacs icon.
Chong Yidong <cyd@stupidchicken.com>
parents:
66877
diff
changeset
|
3360 dpyinfo->bitmaps[id - 1].mask = mask; |
a9d1837b115c
* gnu.h (gnu_bits): Xpm version of the new Emacs icon.
Chong Yidong <cyd@stupidchicken.com>
parents:
66877
diff
changeset
|
3361 dpyinfo->bitmaps[id - 1].file = NULL; |
a9d1837b115c
* gnu.h (gnu_bits): Xpm version of the new Emacs icon.
Chong Yidong <cyd@stupidchicken.com>
parents:
66877
diff
changeset
|
3362 dpyinfo->bitmaps[id - 1].height = attrs.height; |
a9d1837b115c
* gnu.h (gnu_bits): Xpm version of the new Emacs icon.
Chong Yidong <cyd@stupidchicken.com>
parents:
66877
diff
changeset
|
3363 dpyinfo->bitmaps[id - 1].width = attrs.width; |
a9d1837b115c
* gnu.h (gnu_bits): Xpm version of the new Emacs icon.
Chong Yidong <cyd@stupidchicken.com>
parents:
66877
diff
changeset
|
3364 dpyinfo->bitmaps[id - 1].depth = attrs.depth; |
a9d1837b115c
* gnu.h (gnu_bits): Xpm version of the new Emacs icon.
Chong Yidong <cyd@stupidchicken.com>
parents:
66877
diff
changeset
|
3365 dpyinfo->bitmaps[id - 1].refcount = 1; |
a9d1837b115c
* gnu.h (gnu_bits): Xpm version of the new Emacs icon.
Chong Yidong <cyd@stupidchicken.com>
parents:
66877
diff
changeset
|
3366 |
a9d1837b115c
* gnu.h (gnu_bits): Xpm version of the new Emacs icon.
Chong Yidong <cyd@stupidchicken.com>
parents:
66877
diff
changeset
|
3367 XpmFreeAttributes (&attrs); |
a9d1837b115c
* gnu.h (gnu_bits): Xpm version of the new Emacs icon.
Chong Yidong <cyd@stupidchicken.com>
parents:
66877
diff
changeset
|
3368 return id; |
a9d1837b115c
* gnu.h (gnu_bits): Xpm version of the new Emacs icon.
Chong Yidong <cyd@stupidchicken.com>
parents:
66877
diff
changeset
|
3369 } |
66994 | 3370 #endif /* defined (HAVE_XPM) && defined (HAVE_X_WINDOWS) */ |
66919
a9d1837b115c
* gnu.h (gnu_bits): Xpm version of the new Emacs icon.
Chong Yidong <cyd@stupidchicken.com>
parents:
66877
diff
changeset
|
3371 |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3372 /* Load image IMG which will be displayed on frame F. Value is |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3373 non-zero if successful. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3374 |
55540
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3375 #ifdef HAVE_XPM |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3376 |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3377 static int |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
3378 xpm_load (struct frame *f, struct image *img) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3379 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3380 int rc; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3381 XpmAttributes attrs; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3382 Lisp_Object specified_file, color_symbols; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3383 #ifdef HAVE_NTGUI |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3384 HDC hdc; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3385 xpm_XImage * xpm_image = NULL, * xpm_mask = NULL; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3386 #endif /* HAVE_NTGUI */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3387 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3388 /* Configure the XPM lib. Use the visual of frame F. Allocate |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3389 close colors. Return colors allocated. */ |
109165
750db9f3e6d8
Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents:
109160
diff
changeset
|
3390 memset (&attrs, 0, sizeof attrs); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3391 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3392 #ifndef HAVE_NTGUI |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3393 attrs.visual = FRAME_X_VISUAL (f); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3394 attrs.colormap = FRAME_X_COLORMAP (f); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3395 attrs.valuemask |= XpmVisual; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3396 attrs.valuemask |= XpmColormap; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3397 #endif /* HAVE_NTGUI */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3398 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3399 #ifdef ALLOC_XPM_COLORS |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3400 /* Allocate colors with our own functions which handle |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3401 failing color allocation more gracefully. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3402 attrs.color_closure = f; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3403 attrs.alloc_color = xpm_alloc_color; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3404 attrs.free_colors = xpm_free_colors; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3405 attrs.valuemask |= XpmAllocColor | XpmFreeColors | XpmColorClosure; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3406 #else /* not ALLOC_XPM_COLORS */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3407 /* Let the XPM lib allocate colors. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3408 attrs.valuemask |= XpmReturnAllocPixels; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3409 #ifdef XpmAllocCloseColors |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3410 attrs.alloc_close_colors = 1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3411 attrs.valuemask |= XpmAllocCloseColors; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3412 #else /* not XpmAllocCloseColors */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3413 attrs.closeness = 600; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3414 attrs.valuemask |= XpmCloseness; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3415 #endif /* not XpmAllocCloseColors */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3416 #endif /* ALLOC_XPM_COLORS */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3417 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3418 /* If image specification contains symbolic color definitions, add |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3419 these to `attrs'. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3420 color_symbols = image_spec_value (img->spec, QCcolor_symbols, NULL); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3421 if (CONSP (color_symbols)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3422 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3423 Lisp_Object tail; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3424 XpmColorSymbol *xpm_syms; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3425 int i, size; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3426 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3427 attrs.valuemask |= XpmColorSymbols; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3428 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3429 /* Count number of symbols. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3430 attrs.numsymbols = 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3431 for (tail = color_symbols; CONSP (tail); tail = XCDR (tail)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3432 ++attrs.numsymbols; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3433 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3434 /* Allocate an XpmColorSymbol array. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3435 size = attrs.numsymbols * sizeof *xpm_syms; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3436 xpm_syms = (XpmColorSymbol *) alloca (size); |
109165
750db9f3e6d8
Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents:
109160
diff
changeset
|
3437 memset (xpm_syms, 0, size); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3438 attrs.colorsymbols = xpm_syms; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3439 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3440 /* Fill the color symbol array. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3441 for (tail = color_symbols, i = 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3442 CONSP (tail); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3443 ++i, tail = XCDR (tail)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3444 { |
110184
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
3445 Lisp_Object name; |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
3446 Lisp_Object color; |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
3447 |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
3448 if (!CONSP (XCAR (tail))) |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
3449 { |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
3450 xpm_syms[i].name = ""; |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
3451 xpm_syms[i].value = ""; |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
3452 continue; |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
3453 } |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
3454 name = XCAR (XCAR (tail)); |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
3455 color = XCDR (XCAR (tail)); |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
3456 if (STRINGP (name)) |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
3457 { |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
3458 xpm_syms[i].name = (char *) alloca (SCHARS (name) + 1); |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
3459 strcpy (xpm_syms[i].name, SDATA (name)); |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
3460 } |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
3461 else |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
3462 xpm_syms[i].name = ""; |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
3463 if (STRINGP (color)) |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
3464 { |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
3465 xpm_syms[i].value = (char *) alloca (SCHARS (color) + 1); |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
3466 strcpy (xpm_syms[i].value, SDATA (color)); |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
3467 } |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
3468 else |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
3469 xpm_syms[i].value = ""; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3470 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3471 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3472 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3473 /* Create a pixmap for the image, either from a file, or from a |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3474 string buffer containing data in the same format as an XPM file. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3475 #ifdef ALLOC_XPM_COLORS |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3476 xpm_init_color_cache (f, &attrs); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3477 #endif |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3478 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3479 specified_file = image_spec_value (img->spec, QCfile, NULL); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3480 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3481 #ifdef HAVE_NTGUI |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3482 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3483 HDC frame_dc = get_frame_dc (f); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3484 hdc = CreateCompatibleDC (frame_dc); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3485 release_frame_dc (f, frame_dc); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3486 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3487 #endif /* HAVE_NTGUI */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3488 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3489 if (STRINGP (specified_file)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3490 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3491 Lisp_Object file = x_find_image_file (specified_file); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3492 if (!STRINGP (file)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3493 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3494 image_error ("Cannot find image file `%s'", specified_file, Qnil); |
110184
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
3495 #ifdef ALLOC_XPM_COLORS |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
3496 xpm_free_color_cache (); |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
3497 #endif |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3498 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3499 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3500 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3501 #ifdef HAVE_NTGUI |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3502 /* XpmReadFileToPixmap is not available in the Windows port of |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3503 libxpm. But XpmReadFileToImage almost does what we want. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3504 rc = fn_XpmReadFileToImage (&hdc, SDATA (file), |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3505 &xpm_image, &xpm_mask, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3506 &attrs); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3507 #else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3508 rc = XpmReadFileToPixmap (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3509 SDATA (file), &img->pixmap, &img->mask, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3510 &attrs); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3511 #endif /* HAVE_NTGUI */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3512 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3513 else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3514 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3515 Lisp_Object buffer = image_spec_value (img->spec, QCdata, NULL); |
110184
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
3516 if (!STRINGP (buffer)) |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
3517 { |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
3518 image_error ("Invalid image data `%s'", buffer, Qnil); |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
3519 #ifdef ALLOC_XPM_COLORS |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
3520 xpm_free_color_cache (); |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
3521 #endif |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
3522 return 0; |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
3523 } |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3524 #ifdef HAVE_NTGUI |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3525 /* XpmCreatePixmapFromBuffer is not available in the Windows port |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3526 of libxpm. But XpmCreateImageFromBuffer almost does what we want. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3527 rc = fn_XpmCreateImageFromBuffer (&hdc, SDATA (buffer), |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3528 &xpm_image, &xpm_mask, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3529 &attrs); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3530 #else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3531 rc = XpmCreatePixmapFromBuffer (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3532 SDATA (buffer), |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3533 &img->pixmap, &img->mask, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3534 &attrs); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3535 #endif /* HAVE_NTGUI */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3536 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3537 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3538 if (rc == XpmSuccess) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3539 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3540 #if defined (COLOR_TABLE_SUPPORT) && defined (ALLOC_XPM_COLORS) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3541 img->colors = colors_in_color_table (&img->ncolors); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3542 #else /* not ALLOC_XPM_COLORS */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3543 int i; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3544 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3545 #ifdef HAVE_NTGUI |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3546 /* W32 XPM uses XImage to wrap what W32 Emacs calls a Pixmap, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3547 plus some duplicate attributes. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3548 if (xpm_image && xpm_image->bitmap) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3549 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3550 img->pixmap = xpm_image->bitmap; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3551 /* XImageFree in libXpm frees XImage struct without destroying |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3552 the bitmap, which is what we want. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3553 fn_XImageFree (xpm_image); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3554 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3555 if (xpm_mask && xpm_mask->bitmap) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3556 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3557 /* The mask appears to be inverted compared with what we expect. |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3558 TODO: invert our expectations. See other places where we |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3559 have to invert bits because our idea of masks is backwards. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3560 HGDIOBJ old_obj; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3561 old_obj = SelectObject (hdc, xpm_mask->bitmap); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3562 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3563 PatBlt (hdc, 0, 0, xpm_mask->width, xpm_mask->height, DSTINVERT); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3564 SelectObject (hdc, old_obj); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3565 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3566 img->mask = xpm_mask->bitmap; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3567 fn_XImageFree (xpm_mask); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3568 DeleteDC (hdc); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3569 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3570 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3571 DeleteDC (hdc); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3572 #endif /* HAVE_NTGUI */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3573 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3574 /* Remember allocated colors. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3575 img->ncolors = attrs.nalloc_pixels; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3576 img->colors = (unsigned long *) xmalloc (img->ncolors |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3577 * sizeof *img->colors); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3578 for (i = 0; i < attrs.nalloc_pixels; ++i) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3579 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3580 img->colors[i] = attrs.alloc_pixels[i]; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3581 #ifdef DEBUG_X_COLORS |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3582 register_color (img->colors[i]); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3583 #endif |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3584 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3585 #endif /* not ALLOC_XPM_COLORS */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3586 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3587 img->width = attrs.width; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3588 img->height = attrs.height; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3589 xassert (img->width > 0 && img->height > 0); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3590 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3591 /* The call to XpmFreeAttributes below frees attrs.alloc_pixels. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3592 #ifdef HAVE_NTGUI |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3593 fn_XpmFreeAttributes (&attrs); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3594 #else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3595 XpmFreeAttributes (&attrs); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3596 #endif /* HAVE_NTGUI */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3597 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3598 else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3599 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3600 #ifdef HAVE_NTGUI |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3601 DeleteDC (hdc); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3602 #endif /* HAVE_NTGUI */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3603 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3604 switch (rc) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3605 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3606 case XpmOpenFailed: |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3607 image_error ("Error opening XPM file (%s)", img->spec, Qnil); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3608 break; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3609 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3610 case XpmFileInvalid: |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3611 image_error ("Invalid XPM file (%s)", img->spec, Qnil); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3612 break; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3613 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3614 case XpmNoMemory: |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3615 image_error ("Out of memory (%s)", img->spec, Qnil); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3616 break; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3617 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3618 case XpmColorFailed: |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3619 image_error ("Color allocation error (%s)", img->spec, Qnil); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3620 break; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3621 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3622 default: |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3623 image_error ("Unknown error (%s)", img->spec, Qnil); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3624 break; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3625 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3626 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3627 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3628 #ifdef ALLOC_XPM_COLORS |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3629 xpm_free_color_cache (); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3630 #endif |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3631 return rc == XpmSuccess; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3632 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3633 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3634 #endif /* HAVE_XPM */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
3635 |
97043
9592c50233ab
Remove support for Mac Carbon.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
97034
diff
changeset
|
3636 #if defined (HAVE_NS) && !defined (HAVE_XPM) |
9592c50233ab
Remove support for Mac Carbon.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
97034
diff
changeset
|
3637 |
9592c50233ab
Remove support for Mac Carbon.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
97034
diff
changeset
|
3638 /* XPM support functions for NS where libxpm is not available. |
55540
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3639 Only XPM version 3 (without any extensions) is supported. */ |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3640 |
109100
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
3641 static int xpm_scan (const unsigned char **, const unsigned char *, |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
3642 const unsigned char **, int *); |
55540
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3643 static Lisp_Object xpm_make_color_table_v |
109100
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
3644 (void (**) (Lisp_Object, const unsigned char *, int, Lisp_Object), |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
3645 Lisp_Object (**) (Lisp_Object, const unsigned char *, int)); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
3646 static void xpm_put_color_table_v (Lisp_Object, const unsigned char *, |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
3647 int, Lisp_Object); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
3648 static Lisp_Object xpm_get_color_table_v (Lisp_Object, |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
3649 const unsigned char *, int); |
55540
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3650 static Lisp_Object xpm_make_color_table_h |
109100
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
3651 (void (**) (Lisp_Object, const unsigned char *, int, Lisp_Object), |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
3652 Lisp_Object (**) (Lisp_Object, const unsigned char *, int)); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
3653 static void xpm_put_color_table_h (Lisp_Object, const unsigned char *, |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
3654 int, Lisp_Object); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
3655 static Lisp_Object xpm_get_color_table_h (Lisp_Object, |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
3656 const unsigned char *, int); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
3657 static int xpm_str_to_color_key (const char *); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
3658 static int xpm_load_image (struct frame *, struct image *, |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
3659 const unsigned char *, const unsigned char *); |
55540
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3660 |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3661 /* Tokens returned from xpm_scan. */ |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3662 |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3663 enum xpm_token |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
3664 { |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
3665 XPM_TK_IDENT = 256, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
3666 XPM_TK_STRING, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
3667 XPM_TK_EOF |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
3668 }; |
55540
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3669 |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3670 /* Scan an XPM data and return a character (< 256) or a token defined |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3671 by enum xpm_token above. *S and END are the start (inclusive) and |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3672 the end (exclusive) addresses of the data, respectively. Advance |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3673 *S while scanning. If token is either XPM_TK_IDENT or |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3674 XPM_TK_STRING, *BEG and *LEN are set to the start address and the |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3675 length of the corresponding token, respectively. */ |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3676 |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3677 static int |
109653
9cfca8c9fb07
Fix missing prototypes for HAVE_NS (caused crash) and vrious warnings.
Jan D <jan.h.d@swipnet.se>
parents:
109573
diff
changeset
|
3678 xpm_scan (const unsigned char **s, |
9cfca8c9fb07
Fix missing prototypes for HAVE_NS (caused crash) and vrious warnings.
Jan D <jan.h.d@swipnet.se>
parents:
109573
diff
changeset
|
3679 const unsigned char *end, |
9cfca8c9fb07
Fix missing prototypes for HAVE_NS (caused crash) and vrious warnings.
Jan D <jan.h.d@swipnet.se>
parents:
109573
diff
changeset
|
3680 const unsigned char **beg, |
9cfca8c9fb07
Fix missing prototypes for HAVE_NS (caused crash) and vrious warnings.
Jan D <jan.h.d@swipnet.se>
parents:
109573
diff
changeset
|
3681 int *len) |
55540
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3682 { |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3683 int c; |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3684 |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3685 while (*s < end) |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3686 { |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3687 /* Skip white-space. */ |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3688 while (*s < end && (c = *(*s)++, isspace (c))) |
65250
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3689 ; |
55540
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3690 |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3691 /* gnus-pointer.xpm uses '-' in its identifier. |
65250
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3692 sb-dir-plus.xpm uses '+' in its identifier. */ |
55540
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3693 if (isalpha (c) || c == '_' || c == '-' || c == '+') |
65250
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3694 { |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3695 *beg = *s - 1; |
80545
d4410031dce7
(PIX_MASK_DRAW, PIX_MASK_RETAIN) [USE_MAC_IMAGE_IO]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80382
diff
changeset
|
3696 while (*s < end |
d4410031dce7
(PIX_MASK_DRAW, PIX_MASK_RETAIN) [USE_MAC_IMAGE_IO]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80382
diff
changeset
|
3697 && (c = **s, isalnum (c) || c == '_' || c == '-' || c == '+')) |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
3698 ++*s; |
65250
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3699 *len = *s - *beg; |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3700 return XPM_TK_IDENT; |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3701 } |
55540
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3702 else if (c == '"') |
65250
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3703 { |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3704 *beg = *s; |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3705 while (*s < end && **s != '"') |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3706 ++*s; |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3707 *len = *s - *beg; |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3708 if (*s < end) |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3709 ++*s; |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3710 return XPM_TK_STRING; |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3711 } |
55540
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3712 else if (c == '/') |
65250
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3713 { |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3714 if (*s < end && **s == '*') |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3715 { |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3716 /* C-style comment. */ |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3717 ++*s; |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3718 do |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3719 { |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3720 while (*s < end && *(*s)++ != '*') |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3721 ; |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3722 } |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3723 while (*s < end && **s != '/'); |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3724 if (*s < end) |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3725 ++*s; |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3726 } |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3727 else |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3728 return c; |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3729 } |
55540
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3730 else |
65250
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3731 return c; |
55540
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3732 } |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3733 |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3734 return XPM_TK_EOF; |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3735 } |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3736 |
78970
35f78a0b1e30
(syms_of_image) <image-types>: Fix typo in docstring.
Juanma Barranquero <lekktu@gmail.com>
parents:
78863
diff
changeset
|
3737 /* Functions for color table lookup in XPM data. A key is a string |
55540
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3738 specifying the color of each pixel in XPM data. A value is either |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3739 an integer that specifies a pixel color, Qt that specifies |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3740 transparency, or Qnil for the unspecified color. If the length of |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3741 the key string is one, a vector is used as a table. Otherwise, a |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3742 hash table is used. */ |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3743 |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3744 static Lisp_Object |
109653
9cfca8c9fb07
Fix missing prototypes for HAVE_NS (caused crash) and vrious warnings.
Jan D <jan.h.d@swipnet.se>
parents:
109573
diff
changeset
|
3745 xpm_make_color_table_v (void (**put_func) (Lisp_Object, |
9cfca8c9fb07
Fix missing prototypes for HAVE_NS (caused crash) and vrious warnings.
Jan D <jan.h.d@swipnet.se>
parents:
109573
diff
changeset
|
3746 const unsigned char *, |
9cfca8c9fb07
Fix missing prototypes for HAVE_NS (caused crash) and vrious warnings.
Jan D <jan.h.d@swipnet.se>
parents:
109573
diff
changeset
|
3747 int, |
9cfca8c9fb07
Fix missing prototypes for HAVE_NS (caused crash) and vrious warnings.
Jan D <jan.h.d@swipnet.se>
parents:
109573
diff
changeset
|
3748 Lisp_Object), |
9cfca8c9fb07
Fix missing prototypes for HAVE_NS (caused crash) and vrious warnings.
Jan D <jan.h.d@swipnet.se>
parents:
109573
diff
changeset
|
3749 Lisp_Object (**get_func) (Lisp_Object, |
9cfca8c9fb07
Fix missing prototypes for HAVE_NS (caused crash) and vrious warnings.
Jan D <jan.h.d@swipnet.se>
parents:
109573
diff
changeset
|
3750 const unsigned char *, |
9cfca8c9fb07
Fix missing prototypes for HAVE_NS (caused crash) and vrious warnings.
Jan D <jan.h.d@swipnet.se>
parents:
109573
diff
changeset
|
3751 int)) |
55540
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3752 { |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3753 *put_func = xpm_put_color_table_v; |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3754 *get_func = xpm_get_color_table_v; |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3755 return Fmake_vector (make_number (256), Qnil); |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3756 } |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3757 |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3758 static void |
109653
9cfca8c9fb07
Fix missing prototypes for HAVE_NS (caused crash) and vrious warnings.
Jan D <jan.h.d@swipnet.se>
parents:
109573
diff
changeset
|
3759 xpm_put_color_table_v (Lisp_Object color_table, |
9cfca8c9fb07
Fix missing prototypes for HAVE_NS (caused crash) and vrious warnings.
Jan D <jan.h.d@swipnet.se>
parents:
109573
diff
changeset
|
3760 const unsigned char *chars_start, |
9cfca8c9fb07
Fix missing prototypes for HAVE_NS (caused crash) and vrious warnings.
Jan D <jan.h.d@swipnet.se>
parents:
109573
diff
changeset
|
3761 int chars_len, |
9cfca8c9fb07
Fix missing prototypes for HAVE_NS (caused crash) and vrious warnings.
Jan D <jan.h.d@swipnet.se>
parents:
109573
diff
changeset
|
3762 Lisp_Object color) |
55540
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3763 { |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3764 XVECTOR (color_table)->contents[*chars_start] = color; |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3765 } |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3766 |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3767 static Lisp_Object |
109653
9cfca8c9fb07
Fix missing prototypes for HAVE_NS (caused crash) and vrious warnings.
Jan D <jan.h.d@swipnet.se>
parents:
109573
diff
changeset
|
3768 xpm_get_color_table_v (Lisp_Object color_table, |
9cfca8c9fb07
Fix missing prototypes for HAVE_NS (caused crash) and vrious warnings.
Jan D <jan.h.d@swipnet.se>
parents:
109573
diff
changeset
|
3769 const unsigned char *chars_start, |
9cfca8c9fb07
Fix missing prototypes for HAVE_NS (caused crash) and vrious warnings.
Jan D <jan.h.d@swipnet.se>
parents:
109573
diff
changeset
|
3770 int chars_len) |
55540
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3771 { |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3772 return XVECTOR (color_table)->contents[*chars_start]; |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3773 } |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3774 |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3775 static Lisp_Object |
109653
9cfca8c9fb07
Fix missing prototypes for HAVE_NS (caused crash) and vrious warnings.
Jan D <jan.h.d@swipnet.se>
parents:
109573
diff
changeset
|
3776 xpm_make_color_table_h (void (**put_func) (Lisp_Object, |
9cfca8c9fb07
Fix missing prototypes for HAVE_NS (caused crash) and vrious warnings.
Jan D <jan.h.d@swipnet.se>
parents:
109573
diff
changeset
|
3777 const unsigned char *, |
9cfca8c9fb07
Fix missing prototypes for HAVE_NS (caused crash) and vrious warnings.
Jan D <jan.h.d@swipnet.se>
parents:
109573
diff
changeset
|
3778 int, |
9cfca8c9fb07
Fix missing prototypes for HAVE_NS (caused crash) and vrious warnings.
Jan D <jan.h.d@swipnet.se>
parents:
109573
diff
changeset
|
3779 Lisp_Object), |
9cfca8c9fb07
Fix missing prototypes for HAVE_NS (caused crash) and vrious warnings.
Jan D <jan.h.d@swipnet.se>
parents:
109573
diff
changeset
|
3780 Lisp_Object (**get_func) (Lisp_Object, |
9cfca8c9fb07
Fix missing prototypes for HAVE_NS (caused crash) and vrious warnings.
Jan D <jan.h.d@swipnet.se>
parents:
109573
diff
changeset
|
3781 const unsigned char *, |
9cfca8c9fb07
Fix missing prototypes for HAVE_NS (caused crash) and vrious warnings.
Jan D <jan.h.d@swipnet.se>
parents:
109573
diff
changeset
|
3782 int)) |
55540
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3783 { |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3784 *put_func = xpm_put_color_table_h; |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3785 *get_func = xpm_get_color_table_h; |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3786 return make_hash_table (Qequal, make_number (DEFAULT_HASH_SIZE), |
65250
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3787 make_float (DEFAULT_REHASH_SIZE), |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3788 make_float (DEFAULT_REHASH_THRESHOLD), |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3789 Qnil, Qnil, Qnil); |
55540
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3790 } |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3791 |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3792 static void |
109653
9cfca8c9fb07
Fix missing prototypes for HAVE_NS (caused crash) and vrious warnings.
Jan D <jan.h.d@swipnet.se>
parents:
109573
diff
changeset
|
3793 xpm_put_color_table_h (Lisp_Object color_table, |
9cfca8c9fb07
Fix missing prototypes for HAVE_NS (caused crash) and vrious warnings.
Jan D <jan.h.d@swipnet.se>
parents:
109573
diff
changeset
|
3794 const unsigned char *chars_start, |
9cfca8c9fb07
Fix missing prototypes for HAVE_NS (caused crash) and vrious warnings.
Jan D <jan.h.d@swipnet.se>
parents:
109573
diff
changeset
|
3795 int chars_len, |
9cfca8c9fb07
Fix missing prototypes for HAVE_NS (caused crash) and vrious warnings.
Jan D <jan.h.d@swipnet.se>
parents:
109573
diff
changeset
|
3796 Lisp_Object color) |
55540
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3797 { |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3798 struct Lisp_Hash_Table *table = XHASH_TABLE (color_table); |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3799 unsigned hash_code; |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3800 Lisp_Object chars = make_unibyte_string (chars_start, chars_len); |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3801 |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3802 hash_lookup (table, chars, &hash_code); |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3803 hash_put (table, chars, color, hash_code); |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3804 } |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3805 |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3806 static Lisp_Object |
109653
9cfca8c9fb07
Fix missing prototypes for HAVE_NS (caused crash) and vrious warnings.
Jan D <jan.h.d@swipnet.se>
parents:
109573
diff
changeset
|
3807 xpm_get_color_table_h (Lisp_Object color_table, |
9cfca8c9fb07
Fix missing prototypes for HAVE_NS (caused crash) and vrious warnings.
Jan D <jan.h.d@swipnet.se>
parents:
109573
diff
changeset
|
3808 const unsigned char *chars_start, |
9cfca8c9fb07
Fix missing prototypes for HAVE_NS (caused crash) and vrious warnings.
Jan D <jan.h.d@swipnet.se>
parents:
109573
diff
changeset
|
3809 int chars_len) |
55540
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3810 { |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3811 struct Lisp_Hash_Table *table = XHASH_TABLE (color_table); |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3812 int i = hash_lookup (table, make_unibyte_string (chars_start, chars_len), |
65250
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3813 NULL); |
55540
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3814 |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3815 return i >= 0 ? HASH_VALUE (table, i) : Qnil; |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3816 } |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3817 |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3818 enum xpm_color_key { |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3819 XPM_COLOR_KEY_S, |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3820 XPM_COLOR_KEY_M, |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3821 XPM_COLOR_KEY_G4, |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3822 XPM_COLOR_KEY_G, |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3823 XPM_COLOR_KEY_C |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3824 }; |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3825 |
73570
a87d92458ce0
[MAC_OS] (image_load_qt_1, xpm_scan, xpm_make_color_table_v)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
73346
diff
changeset
|
3826 static const char xpm_color_key_strings[][4] = {"s", "m", "g4", "g", "c"}; |
55540
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3827 |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3828 static int |
109653
9cfca8c9fb07
Fix missing prototypes for HAVE_NS (caused crash) and vrious warnings.
Jan D <jan.h.d@swipnet.se>
parents:
109573
diff
changeset
|
3829 xpm_str_to_color_key (const char *s) |
55540
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3830 { |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3831 int i; |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3832 |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3833 for (i = 0; |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3834 i < sizeof xpm_color_key_strings / sizeof xpm_color_key_strings[0]; |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3835 i++) |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3836 if (strcmp (xpm_color_key_strings[i], s) == 0) |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3837 return i; |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3838 return -1; |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3839 } |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3840 |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3841 static int |
109653
9cfca8c9fb07
Fix missing prototypes for HAVE_NS (caused crash) and vrious warnings.
Jan D <jan.h.d@swipnet.se>
parents:
109573
diff
changeset
|
3842 xpm_load_image (struct frame *f, |
9cfca8c9fb07
Fix missing prototypes for HAVE_NS (caused crash) and vrious warnings.
Jan D <jan.h.d@swipnet.se>
parents:
109573
diff
changeset
|
3843 struct image *img, |
9cfca8c9fb07
Fix missing prototypes for HAVE_NS (caused crash) and vrious warnings.
Jan D <jan.h.d@swipnet.se>
parents:
109573
diff
changeset
|
3844 const unsigned char *contents, |
9cfca8c9fb07
Fix missing prototypes for HAVE_NS (caused crash) and vrious warnings.
Jan D <jan.h.d@swipnet.se>
parents:
109573
diff
changeset
|
3845 const unsigned char *end) |
73570
a87d92458ce0
[MAC_OS] (image_load_qt_1, xpm_scan, xpm_make_color_table_v)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
73346
diff
changeset
|
3846 { |
a87d92458ce0
[MAC_OS] (image_load_qt_1, xpm_scan, xpm_make_color_table_v)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
73346
diff
changeset
|
3847 const unsigned char *s = contents, *beg, *str; |
55540
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3848 unsigned char buffer[BUFSIZ]; |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3849 int width, height, x, y; |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3850 int num_colors, chars_per_pixel; |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3851 int len, LA1; |
73570
a87d92458ce0
[MAC_OS] (image_load_qt_1, xpm_scan, xpm_make_color_table_v)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
73346
diff
changeset
|
3852 void (*put_color_table) (Lisp_Object, const unsigned char *, int, Lisp_Object); |
a87d92458ce0
[MAC_OS] (image_load_qt_1, xpm_scan, xpm_make_color_table_v)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
73346
diff
changeset
|
3853 Lisp_Object (*get_color_table) (Lisp_Object, const unsigned char *, int); |
55540
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3854 Lisp_Object frame, color_symbols, color_table; |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3855 int best_key, have_mask = 0; |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3856 XImagePtr ximg = NULL, mask_img = NULL; |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3857 |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
3858 #define match() \ |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
3859 LA1 = xpm_scan (&s, end, &beg, &len) |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
3860 |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
3861 #define expect(TOKEN) \ |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
3862 if (LA1 != (TOKEN)) \ |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
3863 goto failure; \ |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
3864 else \ |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
3865 match () |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
3866 |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
3867 #define expect_ident(IDENT) \ |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
3868 if (LA1 == XPM_TK_IDENT \ |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
3869 && strlen ((IDENT)) == len && memcmp ((IDENT), beg, len) == 0) \ |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
3870 match (); \ |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
3871 else \ |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
3872 goto failure |
55540
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3873 |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3874 if (!(end - s >= 9 && memcmp (s, "/* XPM */", 9) == 0)) |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3875 goto failure; |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3876 s += 9; |
109160
f8660b83cdbf
Fix whitespace to follow coding guidelines.
Juanma Barranquero <lekktu@gmail.com>
parents:
109144
diff
changeset
|
3877 match (); |
55540
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3878 expect_ident ("static"); |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3879 expect_ident ("char"); |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3880 expect ('*'); |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3881 expect (XPM_TK_IDENT); |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3882 expect ('['); |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3883 expect (']'); |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3884 expect ('='); |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3885 expect ('{'); |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3886 expect (XPM_TK_STRING); |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3887 if (len >= BUFSIZ) |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3888 goto failure; |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3889 memcpy (buffer, beg, len); |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3890 buffer[len] = '\0'; |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3891 if (sscanf (buffer, "%d %d %d %d", &width, &height, |
65250
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3892 &num_colors, &chars_per_pixel) != 4 |
55540
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3893 || width <= 0 || height <= 0 |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3894 || num_colors <= 0 || chars_per_pixel <= 0) |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3895 goto failure; |
66430
2f521eba6f82
[MAC_OS] (image_load_qt_1): Check image size.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66208
diff
changeset
|
3896 |
2f521eba6f82
[MAC_OS] (image_load_qt_1): Check image size.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66208
diff
changeset
|
3897 if (!check_image_size (f, width, height)) |
2f521eba6f82
[MAC_OS] (image_load_qt_1): Check image size.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66208
diff
changeset
|
3898 { |
102392
689fbe81edc4
(xbm_read_bitmap_data, png_load, svg_load_image):
Jason Rumney <jasonr@gnu.org>
parents:
101838
diff
changeset
|
3899 image_error ("Invalid image size (see `max-image-size')", Qnil, Qnil); |
66430
2f521eba6f82
[MAC_OS] (image_load_qt_1): Check image size.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66208
diff
changeset
|
3900 goto failure; |
2f521eba6f82
[MAC_OS] (image_load_qt_1): Check image size.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66208
diff
changeset
|
3901 } |
2f521eba6f82
[MAC_OS] (image_load_qt_1): Check image size.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66208
diff
changeset
|
3902 |
55540
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3903 expect (','); |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3904 |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3905 XSETFRAME (frame, f); |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3906 if (!NILP (Fxw_display_color_p (frame))) |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3907 best_key = XPM_COLOR_KEY_C; |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3908 else if (!NILP (Fx_display_grayscale_p (frame))) |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3909 best_key = (XFASTINT (Fx_display_planes (frame)) > 2 |
65250
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3910 ? XPM_COLOR_KEY_G : XPM_COLOR_KEY_G4); |
55540
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3911 else |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3912 best_key = XPM_COLOR_KEY_M; |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3913 |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3914 color_symbols = image_spec_value (img->spec, QCcolor_symbols, NULL); |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3915 if (chars_per_pixel == 1) |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3916 color_table = xpm_make_color_table_v (&put_color_table, |
65250
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3917 &get_color_table); |
55540
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3918 else |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3919 color_table = xpm_make_color_table_h (&put_color_table, |
65250
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3920 &get_color_table); |
55540
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3921 |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3922 while (num_colors-- > 0) |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3923 { |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3924 unsigned char *color, *max_color; |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3925 int key, next_key, max_key = 0; |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3926 Lisp_Object symbol_color = Qnil, color_val; |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3927 XColor cdef; |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3928 |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3929 expect (XPM_TK_STRING); |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3930 if (len <= chars_per_pixel || len >= BUFSIZ + chars_per_pixel) |
65250
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3931 goto failure; |
55540
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3932 memcpy (buffer, beg + chars_per_pixel, len - chars_per_pixel); |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3933 buffer[len - chars_per_pixel] = '\0'; |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3934 |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3935 str = strtok (buffer, " \t"); |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3936 if (str == NULL) |
65250
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3937 goto failure; |
55540
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3938 key = xpm_str_to_color_key (str); |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3939 if (key < 0) |
65250
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3940 goto failure; |
55540
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3941 do |
65250
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3942 { |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3943 color = strtok (NULL, " \t"); |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3944 if (color == NULL) |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3945 goto failure; |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3946 |
69958
609c61a0071d
[MAC_OS] (xpm_load_image): Add parentheses around
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69771
diff
changeset
|
3947 while ((str = strtok (NULL, " \t")) != NULL) |
65250
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3948 { |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3949 next_key = xpm_str_to_color_key (str); |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3950 if (next_key >= 0) |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3951 break; |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3952 color[strlen (color)] = ' '; |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3953 } |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3954 |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3955 if (key == XPM_COLOR_KEY_S) |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3956 { |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3957 if (NILP (symbol_color)) |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3958 symbol_color = build_string (color); |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3959 } |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3960 else if (max_key < key && key <= best_key) |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3961 { |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3962 max_key = key; |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3963 max_color = color; |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3964 } |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3965 key = next_key; |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3966 } |
55540
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3967 while (str); |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3968 |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3969 color_val = Qnil; |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3970 if (!NILP (color_symbols) && !NILP (symbol_color)) |
65250
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3971 { |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3972 Lisp_Object specified_color = Fassoc (symbol_color, color_symbols); |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3973 |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3974 if (CONSP (specified_color) && STRINGP (XCDR (specified_color))) |
69958
609c61a0071d
[MAC_OS] (xpm_load_image): Add parentheses around
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69771
diff
changeset
|
3975 { |
95213
93de3f6c1a6c
* dispextern.h, xfaces.c (xstrcasecmp): Renamed from xstricmp.
Jason Rumney <jasonr@gnu.org>
parents:
94963
diff
changeset
|
3976 if (xstrcasecmp (SDATA (XCDR (specified_color)), "None") == 0) |
69958
609c61a0071d
[MAC_OS] (xpm_load_image): Add parentheses around
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69771
diff
changeset
|
3977 color_val = Qt; |
609c61a0071d
[MAC_OS] (xpm_load_image): Add parentheses around
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69771
diff
changeset
|
3978 else if (x_defined_color (f, SDATA (XCDR (specified_color)), |
609c61a0071d
[MAC_OS] (xpm_load_image): Add parentheses around
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69771
diff
changeset
|
3979 &cdef, 0)) |
609c61a0071d
[MAC_OS] (xpm_load_image): Add parentheses around
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69771
diff
changeset
|
3980 color_val = make_number (cdef.pixel); |
609c61a0071d
[MAC_OS] (xpm_load_image): Add parentheses around
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69771
diff
changeset
|
3981 } |
65250
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3982 } |
55540
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3983 if (NILP (color_val) && max_key > 0) |
69958
609c61a0071d
[MAC_OS] (xpm_load_image): Add parentheses around
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69771
diff
changeset
|
3984 { |
95213
93de3f6c1a6c
* dispextern.h, xfaces.c (xstrcasecmp): Renamed from xstricmp.
Jason Rumney <jasonr@gnu.org>
parents:
94963
diff
changeset
|
3985 if (xstrcasecmp (max_color, "None") == 0) |
69958
609c61a0071d
[MAC_OS] (xpm_load_image): Add parentheses around
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69771
diff
changeset
|
3986 color_val = Qt; |
609c61a0071d
[MAC_OS] (xpm_load_image): Add parentheses around
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69771
diff
changeset
|
3987 else if (x_defined_color (f, max_color, &cdef, 0)) |
609c61a0071d
[MAC_OS] (xpm_load_image): Add parentheses around
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69771
diff
changeset
|
3988 color_val = make_number (cdef.pixel); |
609c61a0071d
[MAC_OS] (xpm_load_image): Add parentheses around
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69771
diff
changeset
|
3989 } |
55540
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3990 if (!NILP (color_val)) |
65250
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3991 (*put_color_table) (color_table, beg, chars_per_pixel, color_val); |
55540
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3992 |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3993 expect (','); |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3994 } |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3995 |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3996 if (!x_create_x_image_and_pixmap (f, width, height, 0, |
65250
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
3997 &ximg, &img->pixmap) |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
3998 #ifndef HAVE_NS |
55540
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
3999 || !x_create_x_image_and_pixmap (f, width, height, 1, |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
4000 &mask_img, &img->mask) |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
4001 #endif |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
4002 ) |
55540
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4003 { |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4004 image_error ("Out of memory (%s)", img->spec, Qnil); |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4005 goto error; |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4006 } |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4007 |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4008 for (y = 0; y < height; y++) |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4009 { |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4010 expect (XPM_TK_STRING); |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4011 str = beg; |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4012 if (len < width * chars_per_pixel) |
65250
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
4013 goto failure; |
55540
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4014 for (x = 0; x < width; x++, str += chars_per_pixel) |
65250
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
4015 { |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
4016 Lisp_Object color_val = |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
4017 (*get_color_table) (color_table, str, chars_per_pixel); |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
4018 |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
4019 XPutPixel (ximg, x, y, |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
4020 (INTEGERP (color_val) ? XINT (color_val) |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
4021 : FRAME_FOREGROUND_PIXEL (f))); |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
4022 #ifndef HAVE_NS |
65250
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
4023 XPutPixel (mask_img, x, y, |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
4024 (!EQ (color_val, Qt) ? PIX_MASK_DRAW |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
4025 : (have_mask = 1, PIX_MASK_RETAIN))); |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
4026 #else |
109160
f8660b83cdbf
Fix whitespace to follow coding guidelines.
Juanma Barranquero <lekktu@gmail.com>
parents:
109144
diff
changeset
|
4027 if (EQ (color_val, Qt)) |
f8660b83cdbf
Fix whitespace to follow coding guidelines.
Juanma Barranquero <lekktu@gmail.com>
parents:
109144
diff
changeset
|
4028 ns_set_alpha (ximg, x, y, 0); |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
4029 #endif |
65250
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
4030 } |
55540
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4031 if (y + 1 < height) |
65250
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
4032 expect (','); |
55540
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4033 } |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4034 |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4035 img->width = width; |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4036 img->height = height; |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4037 |
70147
37f988f09f67
[MAC_OS] (xpm_load_image): Fill in background field
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70068
diff
changeset
|
4038 /* Maybe fill in the background field while we have ximg handy. */ |
37f988f09f67
[MAC_OS] (xpm_load_image): Fill in background field
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70068
diff
changeset
|
4039 if (NILP (image_spec_value (img->spec, QCbackground, NULL))) |
37f988f09f67
[MAC_OS] (xpm_load_image): Fill in background field
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70068
diff
changeset
|
4040 IMAGE_BACKGROUND (img, f, ximg); |
37f988f09f67
[MAC_OS] (xpm_load_image): Fill in background field
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70068
diff
changeset
|
4041 |
55540
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4042 x_put_x_image (f, ximg, img->pixmap, width, height); |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4043 x_destroy_x_image (ximg); |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
4044 #ifndef HAVE_NS |
55540
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4045 if (have_mask) |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4046 { |
65250
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
4047 /* Fill in the background_transparent field while we have the |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
4048 mask handy. */ |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
4049 image_background_transparent (img, f, mask_img); |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
4050 |
55540
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4051 x_put_x_image (f, mask_img, img->mask, width, height); |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4052 x_destroy_x_image (mask_img); |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4053 } |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4054 else |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4055 { |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4056 x_destroy_x_image (mask_img); |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4057 Free_Pixmap (FRAME_X_DISPLAY (f), img->mask); |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4058 img->mask = NO_PIXMAP; |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4059 } |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
4060 #endif |
55540
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4061 return 1; |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4062 |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4063 failure: |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4064 image_error ("Invalid XPM file (%s)", img->spec, Qnil); |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4065 error: |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4066 x_destroy_x_image (ximg); |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4067 x_destroy_x_image (mask_img); |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4068 x_clear_image (f, img); |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4069 return 0; |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4070 |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4071 #undef match |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4072 #undef expect |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4073 #undef expect_ident |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4074 } |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4075 |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4076 static int |
109653
9cfca8c9fb07
Fix missing prototypes for HAVE_NS (caused crash) and vrious warnings.
Jan D <jan.h.d@swipnet.se>
parents:
109573
diff
changeset
|
4077 xpm_load (struct frame *f, |
9cfca8c9fb07
Fix missing prototypes for HAVE_NS (caused crash) and vrious warnings.
Jan D <jan.h.d@swipnet.se>
parents:
109573
diff
changeset
|
4078 struct image *img) |
55540
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4079 { |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4080 int success_p = 0; |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4081 Lisp_Object file_name; |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4082 |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4083 /* If IMG->spec specifies a file name, create a non-file spec from it. */ |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4084 file_name = image_spec_value (img->spec, QCfile, NULL); |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4085 if (STRINGP (file_name)) |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4086 { |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4087 Lisp_Object file; |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4088 unsigned char *contents; |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4089 int size; |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4090 |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4091 file = x_find_image_file (file_name); |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4092 if (!STRINGP (file)) |
65250
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
4093 { |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
4094 image_error ("Cannot find image file `%s'", file_name, Qnil); |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
4095 return 0; |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
4096 } |
55540
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4097 |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4098 contents = slurp_file (SDATA (file), &size); |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4099 if (contents == NULL) |
65250
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
4100 { |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
4101 image_error ("Error loading XPM image `%s'", img->spec, Qnil); |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
4102 return 0; |
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
4103 } |
55540
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4104 |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4105 success_p = xpm_load_image (f, img, contents, contents + size); |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4106 xfree (contents); |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4107 } |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4108 else |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4109 { |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4110 Lisp_Object data; |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4111 |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4112 data = image_spec_value (img->spec, QCdata, NULL); |
110184
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
4113 if (!STRINGP (data)) |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
4114 { |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
4115 image_error ("Invalid image data `%s'", data, Qnil); |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
4116 return 0; |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
4117 } |
55540
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4118 success_p = xpm_load_image (f, img, SDATA (data), |
65250
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
4119 SDATA (data) + SBYTES (data)); |
55540
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4120 } |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4121 |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4122 return success_p; |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4123 } |
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4124 |
97043
9592c50233ab
Remove support for Mac Carbon.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
97034
diff
changeset
|
4125 #endif /* HAVE_NS && !HAVE_XPM */ |
55886
ae9227eb8392
Work around bugs/problems with MinGW builds of graphics libraries
Juanma Barranquero <lekktu@gmail.com>
parents:
55540
diff
changeset
|
4126 |
55540
30c03f9042b8
Support XPM on Carbon Emacs. Does not
Steven Tamm <steventamm@mac.com>
parents:
55412
diff
changeset
|
4127 |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4128 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4129 /*********************************************************************** |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4130 Color table |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
4131 ***********************************************************************/ |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4132 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4133 #ifdef COLOR_TABLE_SUPPORT |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4134 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4135 /* An entry in the color table mapping an RGB color to a pixel color. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4136 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4137 struct ct_color |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4138 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4139 int r, g, b; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4140 unsigned long pixel; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4141 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4142 /* Next in color table collision list. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4143 struct ct_color *next; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4144 }; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4145 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4146 /* The bucket vector size to use. Must be prime. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4147 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4148 #define CT_SIZE 101 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4149 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4150 /* Value is a hash of the RGB color given by R, G, and B. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4151 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4152 #define CT_HASH_RGB(R, G, B) (((R) << 16) ^ ((G) << 8) ^ (B)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4153 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4154 /* The color hash table. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4155 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4156 struct ct_color **ct_table; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4157 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4158 /* Number of entries in the color table. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4159 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4160 int ct_colors_allocated; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4161 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4162 /* Initialize the color table. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4163 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4164 static void |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
4165 init_color_table (void) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4166 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4167 int size = CT_SIZE * sizeof (*ct_table); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4168 ct_table = (struct ct_color **) xmalloc (size); |
109165
750db9f3e6d8
Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents:
109160
diff
changeset
|
4169 memset (ct_table, 0, size); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4170 ct_colors_allocated = 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4171 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4172 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4173 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4174 /* Free memory associated with the color table. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4175 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4176 static void |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
4177 free_color_table (void) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4178 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4179 int i; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4180 struct ct_color *p, *next; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4181 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4182 for (i = 0; i < CT_SIZE; ++i) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4183 for (p = ct_table[i]; p; p = next) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4184 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4185 next = p->next; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4186 xfree (p); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4187 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4188 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4189 xfree (ct_table); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4190 ct_table = NULL; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4191 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4192 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4193 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4194 /* Value is a pixel color for RGB color R, G, B on frame F. If an |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4195 entry for that color already is in the color table, return the |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4196 pixel color of that entry. Otherwise, allocate a new color for R, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4197 G, B, and make an entry in the color table. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4198 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4199 static unsigned long |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
4200 lookup_rgb_color (struct frame *f, int r, int g, int b) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4201 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4202 unsigned hash = CT_HASH_RGB (r, g, b); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4203 int i = hash % CT_SIZE; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4204 struct ct_color *p; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4205 Display_Info *dpyinfo; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4206 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4207 /* Handle TrueColor visuals specially, which improves performance by |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4208 two orders of magnitude. Freeing colors on TrueColor visuals is |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4209 a nop, and pixel colors specify RGB values directly. See also |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4210 the Xlib spec, chapter 3.1. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4211 dpyinfo = FRAME_X_DISPLAY_INFO (f); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4212 if (dpyinfo->red_bits > 0) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4213 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4214 unsigned long pr, pg, pb; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4215 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4216 /* Apply gamma-correction like normal color allocation does. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4217 if (f->gamma) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4218 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4219 XColor color; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4220 color.red = r, color.green = g, color.blue = b; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4221 gamma_correct (f, &color); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4222 r = color.red, g = color.green, b = color.blue; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4223 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4224 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4225 /* Scale down RGB values to the visual's bits per RGB, and shift |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4226 them to the right position in the pixel color. Note that the |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4227 original RGB values are 16-bit values, as usual in X. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4228 pr = (r >> (16 - dpyinfo->red_bits)) << dpyinfo->red_offset; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4229 pg = (g >> (16 - dpyinfo->green_bits)) << dpyinfo->green_offset; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4230 pb = (b >> (16 - dpyinfo->blue_bits)) << dpyinfo->blue_offset; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4231 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4232 /* Assemble the pixel color. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4233 return pr | pg | pb; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4234 } |
54920
38cb79e68369
(PNG_BG_COLOR_SHIFT): Remove.
Kim F. Storm <storm@cua.dk>
parents:
54427
diff
changeset
|
4235 |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4236 for (p = ct_table[i]; p; p = p->next) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4237 if (p->r == r && p->g == g && p->b == b) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4238 break; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4239 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4240 if (p == NULL) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4241 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4242 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4243 #ifdef HAVE_X_WINDOWS |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4244 XColor color; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4245 Colormap cmap; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4246 int rc; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4247 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4248 color.red = r; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4249 color.green = g; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4250 color.blue = b; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4251 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4252 cmap = FRAME_X_COLORMAP (f); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4253 rc = x_alloc_nearest_color (f, cmap, &color); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4254 if (rc) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4255 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4256 ++ct_colors_allocated; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4257 p = (struct ct_color *) xmalloc (sizeof *p); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4258 p->r = r; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4259 p->g = g; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4260 p->b = b; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4261 p->pixel = color.pixel; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4262 p->next = ct_table[i]; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4263 ct_table[i] = p; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4264 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4265 else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4266 return FRAME_FOREGROUND_PIXEL (f); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4267 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4268 #else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4269 COLORREF color; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4270 #ifdef HAVE_NTGUI |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4271 color = PALETTERGB (r, g, b); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4272 #else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4273 color = RGB_TO_ULONG (r, g, b); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4274 #endif /* HAVE_NTGUI */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4275 ++ct_colors_allocated; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4276 p = (struct ct_color *) xmalloc (sizeof *p); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4277 p->r = r; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4278 p->g = g; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4279 p->b = b; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4280 p->pixel = color; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4281 p->next = ct_table[i]; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4282 ct_table[i] = p; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4283 #endif /* HAVE_X_WINDOWS */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4284 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4285 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4286 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4287 return p->pixel; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4288 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4289 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4290 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4291 /* Look up pixel color PIXEL which is used on frame F in the color |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4292 table. If not already present, allocate it. Value is PIXEL. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4293 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4294 static unsigned long |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
4295 lookup_pixel_color (struct frame *f, unsigned long pixel) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4296 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4297 int i = pixel % CT_SIZE; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4298 struct ct_color *p; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4299 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4300 for (p = ct_table[i]; p; p = p->next) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4301 if (p->pixel == pixel) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4302 break; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4303 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4304 if (p == NULL) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4305 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4306 XColor color; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4307 Colormap cmap; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4308 int rc; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4309 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4310 #ifdef HAVE_X_WINDOWS |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4311 cmap = FRAME_X_COLORMAP (f); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4312 color.pixel = pixel; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4313 x_query_color (f, &color); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4314 rc = x_alloc_nearest_color (f, cmap, &color); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4315 #else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4316 BLOCK_INPUT; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4317 cmap = DefaultColormapOfScreen (FRAME_X_SCREEN (f)); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4318 color.pixel = pixel; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4319 XQueryColor (NULL, cmap, &color); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4320 rc = x_alloc_nearest_color (f, cmap, &color); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4321 UNBLOCK_INPUT; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4322 #endif /* HAVE_X_WINDOWS */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4323 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4324 if (rc) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4325 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4326 ++ct_colors_allocated; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4327 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4328 p = (struct ct_color *) xmalloc (sizeof *p); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4329 p->r = color.red; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4330 p->g = color.green; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4331 p->b = color.blue; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4332 p->pixel = pixel; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4333 p->next = ct_table[i]; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4334 ct_table[i] = p; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4335 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4336 else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4337 return FRAME_FOREGROUND_PIXEL (f); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4338 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4339 return p->pixel; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4340 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4341 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4342 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4343 /* Value is a vector of all pixel colors contained in the color table, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4344 allocated via xmalloc. Set *N to the number of colors. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4345 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4346 static unsigned long * |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
4347 colors_in_color_table (int *n) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4348 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4349 int i, j; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4350 struct ct_color *p; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4351 unsigned long *colors; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4352 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4353 if (ct_colors_allocated == 0) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4354 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4355 *n = 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4356 colors = NULL; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4357 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4358 else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4359 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4360 colors = (unsigned long *) xmalloc (ct_colors_allocated |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4361 * sizeof *colors); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4362 *n = ct_colors_allocated; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4363 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4364 for (i = j = 0; i < CT_SIZE; ++i) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4365 for (p = ct_table[i]; p; p = p->next) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4366 colors[j++] = p->pixel; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4367 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4368 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4369 return colors; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4370 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4371 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4372 #else /* COLOR_TABLE_SUPPORT */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4373 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4374 static unsigned long |
109480
d12162869c07
Convert some more functions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109302
diff
changeset
|
4375 lookup_rgb_color (struct frame *f, int r, int g, int b) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4376 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4377 unsigned long pixel; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4378 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4379 #ifdef HAVE_NTGUI |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4380 pixel = PALETTERGB (r >> 8, g >> 8, b >> 8); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4381 #endif /* HAVE_NTGUI */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4382 |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
4383 #ifdef HAVE_NS |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
4384 pixel = RGB_TO_ULONG (r >> 8, g >> 8, b >> 8); |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
4385 #endif /* HAVE_NS */ |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4386 return pixel; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4387 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4388 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4389 static void |
109480
d12162869c07
Convert some more functions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109302
diff
changeset
|
4390 init_color_table (void) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4391 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4392 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4393 #endif /* COLOR_TABLE_SUPPORT */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4394 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4395 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4396 /*********************************************************************** |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4397 Algorithms |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
4398 ***********************************************************************/ |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4399 |
109100
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
4400 static XColor *x_to_xcolors (struct frame *, struct image *, int); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
4401 static void x_from_xcolors (struct frame *, struct image *, XColor *); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
4402 static void x_detect_edges (struct frame *, struct image *, int[9], int); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4403 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4404 #ifdef HAVE_NTGUI |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4405 static void XPutPixel (XImagePtr , int, int, COLORREF); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4406 #endif /* HAVE_NTGUI */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4407 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4408 /* Non-zero means draw a cross on images having `:conversion |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4409 disabled'. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4410 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4411 int cross_disabled_images; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4412 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4413 /* Edge detection matrices for different edge-detection |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4414 strategies. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4415 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4416 static int emboss_matrix[9] = { |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
4417 /* x - 1 x x + 1 */ |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
4418 2, -1, 0, /* y - 1 */ |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
4419 -1, 0, 1, /* y */ |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
4420 0, 1, -2 /* y + 1 */ |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4421 }; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4422 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4423 static int laplace_matrix[9] = { |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
4424 /* x - 1 x x + 1 */ |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
4425 1, 0, 0, /* y - 1 */ |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
4426 0, 0, 0, /* y */ |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
4427 0, 0, -1 /* y + 1 */ |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4428 }; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4429 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4430 /* Value is the intensity of the color whose red/green/blue values |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4431 are R, G, and B. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4432 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4433 #define COLOR_INTENSITY(R, G, B) ((2 * (R) + 3 * (G) + (B)) / 6) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4434 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4435 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4436 /* On frame F, return an array of XColor structures describing image |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4437 IMG->pixmap. Each XColor structure has its pixel color set. RGB_P |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4438 non-zero means also fill the red/green/blue members of the XColor |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4439 structures. Value is a pointer to the array of XColors structures, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4440 allocated with xmalloc; it must be freed by the caller. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4441 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4442 static XColor * |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
4443 x_to_xcolors (struct frame *f, struct image *img, int rgb_p) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4444 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4445 int x, y; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4446 XColor *colors, *p; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4447 XImagePtr_or_DC ximg; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4448 #ifdef HAVE_NTGUI |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4449 HDC hdc; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4450 HGDIOBJ prev; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4451 #endif /* HAVE_NTGUI */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4452 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4453 colors = (XColor *) xmalloc (img->width * img->height * sizeof *colors); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4454 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4455 #ifndef HAVE_NTGUI |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4456 /* Get the X image IMG->pixmap. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4457 ximg = XGetImage (FRAME_X_DISPLAY (f), img->pixmap, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4458 0, 0, img->width, img->height, ~0, ZPixmap); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4459 #else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4460 /* Load the image into a memory device context. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4461 hdc = get_frame_dc (f); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4462 ximg = CreateCompatibleDC (hdc); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4463 release_frame_dc (f, hdc); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4464 prev = SelectObject (ximg, img->pixmap); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4465 #endif /* HAVE_NTGUI */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4466 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4467 /* Fill the `pixel' members of the XColor array. I wished there |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4468 were an easy and portable way to circumvent XGetPixel. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4469 p = colors; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4470 for (y = 0; y < img->height; ++y) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4471 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4472 XColor *row = p; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4473 |
100845
58017ff34d94
* w32term.c (x_query_colors, x_query_color): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
100826
diff
changeset
|
4474 #if defined (HAVE_X_WINDOWS) || defined (HAVE_NTGUI) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4475 for (x = 0; x < img->width; ++x, ++p) |
100845
58017ff34d94
* w32term.c (x_query_colors, x_query_color): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
100826
diff
changeset
|
4476 p->pixel = GET_PIXEL (ximg, x, y); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4477 if (rgb_p) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4478 x_query_colors (f, row, img->width); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4479 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4480 #else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4481 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4482 for (x = 0; x < img->width; ++x, ++p) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4483 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4484 /* W32_TODO: palette support needed here? */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4485 p->pixel = GET_PIXEL (ximg, x, y); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4486 if (rgb_p) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4487 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4488 p->red = RED16_FROM_ULONG (p->pixel); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4489 p->green = GREEN16_FROM_ULONG (p->pixel); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4490 p->blue = BLUE16_FROM_ULONG (p->pixel); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4491 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4492 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4493 #endif /* HAVE_X_WINDOWS */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4494 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4495 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4496 Destroy_Image (ximg, prev); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4497 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4498 return colors; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4499 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4500 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4501 #ifdef HAVE_NTGUI |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4502 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4503 /* Put a pixel of COLOR at position X, Y in XIMG. XIMG must have been |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4504 created with CreateDIBSection, with the pointer to the bit values |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4505 stored in ximg->data. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4506 |
78692
6e1f6f80e430
(syms_of_image) <image-library-alist, cross-disabled-images>: Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents:
78450
diff
changeset
|
4507 static void |
109480
d12162869c07
Convert some more functions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109302
diff
changeset
|
4508 XPutPixel (XImagePtr ximg, int x, int y, COLORREF color) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4509 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4510 int width = ximg->info.bmiHeader.biWidth; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4511 int height = ximg->info.bmiHeader.biHeight; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4512 unsigned char * pixel; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4513 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4514 /* True color images. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4515 if (ximg->info.bmiHeader.biBitCount == 24) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4516 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4517 int rowbytes = width * 3; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4518 /* Ensure scanlines are aligned on 4 byte boundaries. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4519 if (rowbytes % 4) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4520 rowbytes += 4 - (rowbytes % 4); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4521 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4522 pixel = ximg->data + y * rowbytes + x * 3; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4523 /* Windows bitmaps are in BGR order. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4524 *pixel = GetBValue (color); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4525 *(pixel + 1) = GetGValue (color); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4526 *(pixel + 2) = GetRValue (color); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4527 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4528 /* Monochrome images. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4529 else if (ximg->info.bmiHeader.biBitCount == 1) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4530 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4531 int rowbytes = width / 8; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4532 /* Ensure scanlines are aligned on 4 byte boundaries. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4533 if (rowbytes % 4) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4534 rowbytes += 4 - (rowbytes % 4); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4535 pixel = ximg->data + y * rowbytes + x / 8; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4536 /* Filter out palette info. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4537 if (color & 0x00ffffff) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4538 *pixel = *pixel | (1 << x % 8); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4539 else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4540 *pixel = *pixel & ~(1 << x % 8); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4541 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4542 else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4543 image_error ("XPutPixel: palette image not supported", Qnil, Qnil); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4544 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4545 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4546 #endif /* HAVE_NTGUI */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4547 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4548 /* Create IMG->pixmap from an array COLORS of XColor structures, whose |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4549 RGB members are set. F is the frame on which this all happens. |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4550 COLORS will be freed; an existing IMG->pixmap will be freed, too. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4551 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4552 static void |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
4553 x_from_xcolors (struct frame *f, struct image *img, XColor *colors) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4554 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4555 int x, y; |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
4556 XImagePtr oimg = NULL; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4557 Pixmap pixmap; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4558 XColor *p; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4559 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4560 init_color_table (); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4561 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4562 x_create_x_image_and_pixmap (f, img->width, img->height, 0, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4563 &oimg, &pixmap); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4564 p = colors; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4565 for (y = 0; y < img->height; ++y) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4566 for (x = 0; x < img->width; ++x, ++p) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4567 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4568 unsigned long pixel; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4569 pixel = lookup_rgb_color (f, p->red, p->green, p->blue); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4570 XPutPixel (oimg, x, y, pixel); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4571 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4572 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4573 xfree (colors); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4574 x_clear_image_1 (f, img, 1, 0, 1); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4575 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4576 x_put_x_image (f, oimg, pixmap, img->width, img->height); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4577 x_destroy_x_image (oimg); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4578 img->pixmap = pixmap; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4579 #ifdef COLOR_TABLE_SUPPORT |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4580 img->colors = colors_in_color_table (&img->ncolors); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4581 free_color_table (); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4582 #endif /* COLOR_TABLE_SUPPORT */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4583 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4584 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4585 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4586 /* On frame F, perform edge-detection on image IMG. |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4587 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4588 MATRIX is a nine-element array specifying the transformation |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4589 matrix. See emboss_matrix for an example. |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4590 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4591 COLOR_ADJUST is a color adjustment added to each pixel of the |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4592 outgoing image. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4593 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4594 static void |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
4595 x_detect_edges (struct frame *f, struct image *img, int *matrix, int color_adjust) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4596 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4597 XColor *colors = x_to_xcolors (f, img, 1); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4598 XColor *new, *p; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4599 int x, y, i, sum; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4600 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4601 for (i = sum = 0; i < 9; ++i) |
85254 | 4602 sum += eabs (matrix[i]); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4603 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4604 #define COLOR(A, X, Y) ((A) + (Y) * img->width + (X)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4605 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4606 new = (XColor *) xmalloc (img->width * img->height * sizeof *new); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4607 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4608 for (y = 0; y < img->height; ++y) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4609 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4610 p = COLOR (new, 0, y); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4611 p->red = p->green = p->blue = 0xffff/2; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4612 p = COLOR (new, img->width - 1, y); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4613 p->red = p->green = p->blue = 0xffff/2; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4614 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4615 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4616 for (x = 1; x < img->width - 1; ++x) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4617 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4618 p = COLOR (new, x, 0); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4619 p->red = p->green = p->blue = 0xffff/2; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4620 p = COLOR (new, x, img->height - 1); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4621 p->red = p->green = p->blue = 0xffff/2; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4622 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4623 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4624 for (y = 1; y < img->height - 1; ++y) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4625 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4626 p = COLOR (new, 1, y); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4627 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4628 for (x = 1; x < img->width - 1; ++x, ++p) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4629 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4630 int r, g, b, y1, x1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4631 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4632 r = g = b = i = 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4633 for (y1 = y - 1; y1 < y + 2; ++y1) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4634 for (x1 = x - 1; x1 < x + 2; ++x1, ++i) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4635 if (matrix[i]) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4636 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4637 XColor *t = COLOR (colors, x1, y1); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4638 r += matrix[i] * t->red; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4639 g += matrix[i] * t->green; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4640 b += matrix[i] * t->blue; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4641 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4642 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4643 r = (r / sum + color_adjust) & 0xffff; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4644 g = (g / sum + color_adjust) & 0xffff; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4645 b = (b / sum + color_adjust) & 0xffff; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4646 p->red = p->green = p->blue = COLOR_INTENSITY (r, g, b); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4647 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4648 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4649 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4650 xfree (colors); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4651 x_from_xcolors (f, img, new); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4652 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4653 #undef COLOR |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4654 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4655 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4656 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4657 /* Perform the pre-defined `emboss' edge-detection on image IMG |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4658 on frame F. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4659 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4660 static void |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
4661 x_emboss (struct frame *f, struct image *img) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4662 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4663 x_detect_edges (f, img, emboss_matrix, 0xffff / 2); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4664 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4665 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4666 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4667 /* Transform image IMG which is used on frame F with a Laplace |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4668 edge-detection algorithm. The result is an image that can be used |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4669 to draw disabled buttons, for example. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4670 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4671 static void |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
4672 x_laplace (struct frame *f, struct image *img) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4673 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4674 x_detect_edges (f, img, laplace_matrix, 45000); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4675 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4676 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4677 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4678 /* Perform edge-detection on image IMG on frame F, with specified |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4679 transformation matrix MATRIX and color-adjustment COLOR_ADJUST. |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4680 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4681 MATRIX must be either |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4682 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4683 - a list of at least 9 numbers in row-major form |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4684 - a vector of at least 9 numbers |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4685 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4686 COLOR_ADJUST nil means use a default; otherwise it must be a |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4687 number. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4688 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4689 static void |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
4690 x_edge_detection (struct frame *f, struct image *img, Lisp_Object matrix, |
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
4691 Lisp_Object color_adjust) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4692 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4693 int i = 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4694 int trans[9]; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4695 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4696 if (CONSP (matrix)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4697 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4698 for (i = 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4699 i < 9 && CONSP (matrix) && NUMBERP (XCAR (matrix)); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4700 ++i, matrix = XCDR (matrix)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4701 trans[i] = XFLOATINT (XCAR (matrix)); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4702 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4703 else if (VECTORP (matrix) && ASIZE (matrix) >= 9) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4704 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4705 for (i = 0; i < 9 && NUMBERP (AREF (matrix, i)); ++i) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4706 trans[i] = XFLOATINT (AREF (matrix, i)); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4707 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4708 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4709 if (NILP (color_adjust)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4710 color_adjust = make_number (0xffff / 2); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4711 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4712 if (i == 9 && NUMBERP (color_adjust)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4713 x_detect_edges (f, img, trans, (int) XFLOATINT (color_adjust)); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4714 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4715 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4716 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4717 /* Transform image IMG on frame F so that it looks disabled. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4718 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4719 static void |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
4720 x_disable_image (struct frame *f, struct image *img) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4721 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4722 Display_Info *dpyinfo = FRAME_X_DISPLAY_INFO (f); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4723 #ifdef HAVE_NTGUI |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4724 int n_planes = dpyinfo->n_planes * dpyinfo->n_cbits; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4725 #else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4726 int n_planes = dpyinfo->n_planes; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4727 #endif /* HAVE_NTGUI */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4728 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4729 if (n_planes >= 2) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4730 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4731 /* Color (or grayscale). Convert to gray, and equalize. Just |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4732 drawing such images with a stipple can look very odd, so |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4733 we're using this method instead. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4734 XColor *colors = x_to_xcolors (f, img, 1); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4735 XColor *p, *end; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4736 const int h = 15000; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4737 const int l = 30000; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4738 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4739 for (p = colors, end = colors + img->width * img->height; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4740 p < end; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4741 ++p) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4742 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4743 int i = COLOR_INTENSITY (p->red, p->green, p->blue); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4744 int i2 = (0xffff - h - l) * i / 0xffff + l; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4745 p->red = p->green = p->blue = i2; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4746 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4747 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4748 x_from_xcolors (f, img, colors); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4749 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4750 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4751 /* Draw a cross over the disabled image, if we must or if we |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4752 should. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4753 if (n_planes < 2 || cross_disabled_images) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4754 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4755 #ifndef HAVE_NTGUI |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4756 Display *dpy = FRAME_X_DISPLAY (f); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4757 GC gc; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4758 |
104573 | 4759 #ifndef HAVE_NS /* TODO: NS support, however this not needed for toolbars */ |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
4760 |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4761 #define MaskForeground(f) WHITE_PIX_DEFAULT (f) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4762 |
75153
fd0c738b5d49
(XDrawLine) [MAC_OS]: Remove macro.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
73570
diff
changeset
|
4763 gc = XCreateGC (dpy, img->pixmap, 0, NULL); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4764 XSetForeground (dpy, gc, BLACK_PIX_DEFAULT (f)); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4765 XDrawLine (dpy, img->pixmap, gc, 0, 0, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4766 img->width - 1, img->height - 1); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4767 XDrawLine (dpy, img->pixmap, gc, 0, img->height - 1, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4768 img->width - 1, 0); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4769 XFreeGC (dpy, gc); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4770 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4771 if (img->mask) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4772 { |
75153
fd0c738b5d49
(XDrawLine) [MAC_OS]: Remove macro.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
73570
diff
changeset
|
4773 gc = XCreateGC (dpy, img->mask, 0, NULL); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4774 XSetForeground (dpy, gc, MaskForeground (f)); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4775 XDrawLine (dpy, img->mask, gc, 0, 0, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4776 img->width - 1, img->height - 1); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4777 XDrawLine (dpy, img->mask, gc, 0, img->height - 1, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4778 img->width - 1, 0); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4779 XFreeGC (dpy, gc); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4780 } |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
4781 #endif /* !HAVE_NS */ |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4782 #else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4783 HDC hdc, bmpdc; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4784 HGDIOBJ prev; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4785 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4786 hdc = get_frame_dc (f); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4787 bmpdc = CreateCompatibleDC (hdc); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4788 release_frame_dc (f, hdc); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4789 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4790 prev = SelectObject (bmpdc, img->pixmap); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4791 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4792 SetTextColor (bmpdc, BLACK_PIX_DEFAULT (f)); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4793 MoveToEx (bmpdc, 0, 0, NULL); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4794 LineTo (bmpdc, img->width - 1, img->height - 1); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4795 MoveToEx (bmpdc, 0, img->height - 1, NULL); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4796 LineTo (bmpdc, img->width - 1, 0); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4797 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4798 if (img->mask) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4799 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4800 SelectObject (bmpdc, img->mask); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4801 SetTextColor (bmpdc, WHITE_PIX_DEFAULT (f)); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4802 MoveToEx (bmpdc, 0, 0, NULL); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4803 LineTo (bmpdc, img->width - 1, img->height - 1); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4804 MoveToEx (bmpdc, 0, img->height - 1, NULL); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4805 LineTo (bmpdc, img->width - 1, 0); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4806 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4807 SelectObject (bmpdc, prev); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4808 DeleteDC (bmpdc); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4809 #endif /* HAVE_NTGUI */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4810 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4811 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4812 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4813 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4814 /* Build a mask for image IMG which is used on frame F. FILE is the |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4815 name of an image file, for error messages. HOW determines how to |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4816 determine the background color of IMG. If it is a list '(R G B)', |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4817 with R, G, and B being integers >= 0, take that as the color of the |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4818 background. Otherwise, determine the background color of IMG |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4819 heuristically. Value is non-zero if successful. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4820 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4821 static int |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
4822 x_build_heuristic_mask (struct frame *f, struct image *img, Lisp_Object how) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4823 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4824 XImagePtr_or_DC ximg; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4825 #ifndef HAVE_NTGUI |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4826 XImagePtr mask_img; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4827 #else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4828 HDC frame_dc; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4829 HGDIOBJ prev; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4830 char *mask_img; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4831 int row_width; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4832 #endif /* HAVE_NTGUI */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4833 int x, y, rc, use_img_background; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4834 unsigned long bg = 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4835 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4836 if (img->mask) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4837 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4838 Free_Pixmap (FRAME_X_DISPLAY (f), img->mask); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4839 img->mask = NO_PIXMAP; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4840 img->background_transparent_valid = 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4841 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4842 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4843 #ifndef HAVE_NTGUI |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
4844 #ifndef HAVE_NS |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4845 /* Create an image and pixmap serving as mask. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4846 rc = x_create_x_image_and_pixmap (f, img->width, img->height, 1, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4847 &mask_img, &img->mask); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4848 if (!rc) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4849 return 0; |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
4850 #endif /* !HAVE_NS */ |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4851 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4852 /* Get the X image of IMG->pixmap. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4853 ximg = XGetImage (FRAME_X_DISPLAY (f), img->pixmap, 0, 0, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4854 img->width, img->height, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4855 ~0, ZPixmap); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4856 #else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4857 /* Create the bit array serving as mask. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4858 row_width = (img->width + 7) / 8; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4859 mask_img = xmalloc (row_width * img->height); |
109165
750db9f3e6d8
Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents:
109160
diff
changeset
|
4860 memset (mask_img, 0, row_width * img->height); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4861 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4862 /* Create a memory device context for IMG->pixmap. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4863 frame_dc = get_frame_dc (f); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4864 ximg = CreateCompatibleDC (frame_dc); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4865 release_frame_dc (f, frame_dc); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4866 prev = SelectObject (ximg, img->pixmap); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4867 #endif /* HAVE_NTGUI */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4868 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4869 /* Determine the background color of ximg. If HOW is `(R G B)' |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4870 take that as color. Otherwise, use the image's background color. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4871 use_img_background = 1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4872 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4873 if (CONSP (how)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4874 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4875 int rgb[3], i; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4876 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4877 for (i = 0; i < 3 && CONSP (how) && NATNUMP (XCAR (how)); ++i) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4878 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4879 rgb[i] = XFASTINT (XCAR (how)) & 0xffff; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4880 how = XCDR (how); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4881 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4882 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4883 if (i == 3 && NILP (how)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4884 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4885 char color_name[30]; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4886 sprintf (color_name, "#%04x%04x%04x", rgb[0], rgb[1], rgb[2]); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4887 bg = ( |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4888 #ifdef HAVE_NTGUI |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4889 0x00ffffff & /* Filter out palette info. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4890 #endif /* HAVE_NTGUI */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4891 x_alloc_image_color (f, img, build_string (color_name), 0)); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4892 use_img_background = 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4893 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4894 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4895 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4896 if (use_img_background) |
70168
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
4897 bg = four_corners_best (ximg, img->corners, img->width, img->height); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4898 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4899 /* Set all bits in mask_img to 1 whose color in ximg is different |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4900 from the background color bg. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4901 #ifndef HAVE_NTGUI |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4902 for (y = 0; y < img->height; ++y) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4903 for (x = 0; x < img->width; ++x) |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
4904 #ifndef HAVE_NS |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4905 XPutPixel (mask_img, x, y, (XGetPixel (ximg, x, y) != bg |
65250
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
4906 ? PIX_MASK_DRAW : PIX_MASK_RETAIN)); |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
4907 #else |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
4908 if (XGetPixel (ximg, x, y) == bg) |
109160
f8660b83cdbf
Fix whitespace to follow coding guidelines.
Juanma Barranquero <lekktu@gmail.com>
parents:
109144
diff
changeset
|
4909 ns_set_alpha (ximg, x, y, 0); |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
4910 #endif /* HAVE_NS */ |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
4911 #ifndef HAVE_NS |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4912 /* Fill in the background_transparent field while we have the mask handy. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4913 image_background_transparent (img, f, mask_img); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4914 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4915 /* Put mask_img into img->mask. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4916 x_put_x_image (f, mask_img, img->mask, img->width, img->height); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4917 x_destroy_x_image (mask_img); |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
4918 #endif /* !HAVE_NS */ |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4919 #else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4920 for (y = 0; y < img->height; ++y) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4921 for (x = 0; x < img->width; ++x) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4922 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4923 COLORREF p = GetPixel (ximg, x, y); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4924 if (p != bg) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4925 mask_img[y * row_width + x / 8] |= 1 << (x % 8); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4926 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4927 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4928 /* Create the mask image. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4929 img->mask = w32_create_pixmap_from_bitmap_data (img->width, img->height, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4930 mask_img); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4931 /* Fill in the background_transparent field while we have the mask handy. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4932 SelectObject (ximg, img->mask); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4933 image_background_transparent (img, f, ximg); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4934 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4935 /* Was: x_destroy_x_image ((XImagePtr )mask_img); which seems bogus ++kfs */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4936 xfree (mask_img); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4937 #endif /* HAVE_NTGUI */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4938 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4939 Destroy_Image (ximg, prev); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4940 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4941 return 1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4942 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4943 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4944 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4945 /*********************************************************************** |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4946 PBM (mono, gray, color) |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
4947 ***********************************************************************/ |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4948 |
109100
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
4949 static int pbm_image_p (Lisp_Object object); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
4950 static int pbm_load (struct frame *f, struct image *img); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
4951 static int pbm_scan_number (unsigned char **, unsigned char *); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4952 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4953 /* The symbol `pbm' identifying images of this type. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4954 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4955 Lisp_Object Qpbm; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4956 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4957 /* Indices of image specification fields in gs_format, below. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4958 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4959 enum pbm_keyword_index |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
4960 { |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
4961 PBM_TYPE, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
4962 PBM_FILE, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
4963 PBM_DATA, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
4964 PBM_ASCENT, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
4965 PBM_MARGIN, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
4966 PBM_RELIEF, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
4967 PBM_ALGORITHM, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
4968 PBM_HEURISTIC_MASK, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
4969 PBM_MASK, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
4970 PBM_FOREGROUND, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
4971 PBM_BACKGROUND, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
4972 PBM_LAST |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
4973 }; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4974 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4975 /* Vector of image_keyword structures describing the format |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4976 of valid user-defined image specifications. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4977 |
105959
ba3ffbd9c422
* process.c (ifflag_def): Make flag_sym constant.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
105877
diff
changeset
|
4978 static const struct image_keyword pbm_format[PBM_LAST] = |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
4979 { |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
4980 {":type", IMAGE_SYMBOL_VALUE, 1}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
4981 {":file", IMAGE_STRING_VALUE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
4982 {":data", IMAGE_STRING_VALUE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
4983 {":ascent", IMAGE_ASCENT_VALUE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
4984 {":margin", IMAGE_POSITIVE_INTEGER_VALUE_OR_PAIR, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
4985 {":relief", IMAGE_INTEGER_VALUE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
4986 {":conversion", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
4987 {":heuristic-mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
4988 {":mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
4989 {":foreground", IMAGE_STRING_OR_NIL_VALUE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
4990 {":background", IMAGE_STRING_OR_NIL_VALUE, 0} |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
4991 }; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4992 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4993 /* Structure describing the image type `pbm'. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4994 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
4995 static struct image_type pbm_type = |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
4996 { |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
4997 &Qpbm, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
4998 pbm_image_p, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
4999 pbm_load, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5000 x_clear_image, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5001 NULL |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5002 }; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5003 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5004 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5005 /* Return non-zero if OBJECT is a valid PBM image specification. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5006 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5007 static int |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
5008 pbm_image_p (Lisp_Object object) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5009 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5010 struct image_keyword fmt[PBM_LAST]; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5011 |
109165
750db9f3e6d8
Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents:
109160
diff
changeset
|
5012 memcpy (fmt, pbm_format, sizeof fmt); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5013 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5014 if (!parse_image_spec (object, fmt, PBM_LAST, Qpbm)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5015 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5016 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5017 /* Must specify either :data or :file. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5018 return fmt[PBM_DATA].count + fmt[PBM_FILE].count == 1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5019 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5020 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5021 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5022 /* Scan a decimal number from *S and return it. Advance *S while |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5023 reading the number. END is the end of the string. Value is -1 at |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5024 end of input. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5025 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5026 static int |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
5027 pbm_scan_number (unsigned char **s, unsigned char *end) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5028 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5029 int c = 0, val = -1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5030 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5031 while (*s < end) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5032 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5033 /* Skip white-space. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5034 while (*s < end && (c = *(*s)++, isspace (c))) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5035 ; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5036 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5037 if (c == '#') |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5038 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5039 /* Skip comment to end of line. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5040 while (*s < end && (c = *(*s)++, c != '\n')) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5041 ; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5042 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5043 else if (isdigit (c)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5044 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5045 /* Read decimal number. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5046 val = c - '0'; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5047 while (*s < end && (c = *(*s)++, isdigit (c))) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5048 val = 10 * val + c - '0'; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5049 break; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5050 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5051 else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5052 break; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5053 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5054 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5055 return val; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5056 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5057 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5058 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5059 #ifdef HAVE_NTGUI |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5060 #if 0 /* Unused. ++kfs */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5061 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5062 /* Read FILE into memory. Value is a pointer to a buffer allocated |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5063 with xmalloc holding FILE's contents. Value is null if an error |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5064 occurred. *SIZE is set to the size of the file. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5065 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5066 static char * |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5067 pbm_read_file (file, size) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5068 Lisp_Object file; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5069 int *size; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5070 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5071 FILE *fp = NULL; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5072 char *buf = NULL; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5073 struct stat st; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5074 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5075 if (stat (SDATA (file), &st) == 0 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5076 && (fp = fopen (SDATA (file), "rb")) != NULL |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5077 && (buf = (char *) xmalloc (st.st_size), |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5078 fread (buf, 1, st.st_size, fp) == st.st_size)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5079 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5080 *size = st.st_size; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5081 fclose (fp); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5082 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5083 else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5084 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5085 if (fp) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5086 fclose (fp); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5087 if (buf) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5088 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5089 xfree (buf); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5090 buf = NULL; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5091 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5092 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5093 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5094 return buf; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5095 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5096 #endif |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5097 #endif /* HAVE_NTGUI */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5098 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5099 /* Load PBM image IMG for use on frame F. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5100 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5101 static int |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
5102 pbm_load (struct frame *f, struct image *img) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5103 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5104 int raw_p, x, y; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5105 int width, height, max_color_idx = 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5106 XImagePtr ximg; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5107 Lisp_Object file, specified_file; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5108 enum {PBM_MONO, PBM_GRAY, PBM_COLOR} type; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5109 unsigned char *contents = NULL; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5110 unsigned char *end, *p; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5111 int size; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5112 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5113 specified_file = image_spec_value (img->spec, QCfile, NULL); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5114 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5115 if (STRINGP (specified_file)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5116 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5117 file = x_find_image_file (specified_file); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5118 if (!STRINGP (file)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5119 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5120 image_error ("Cannot find image file `%s'", specified_file, Qnil); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5121 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5122 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5123 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5124 contents = slurp_file (SDATA (file), &size); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5125 if (contents == NULL) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5126 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5127 image_error ("Error reading `%s'", file, Qnil); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5128 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5129 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5130 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5131 p = contents; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5132 end = contents + size; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5133 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5134 else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5135 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5136 Lisp_Object data; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5137 data = image_spec_value (img->spec, QCdata, NULL); |
110184
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
5138 if (!STRINGP (data)) |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
5139 { |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
5140 image_error ("Invalid image data `%s'", data, Qnil); |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
5141 return 0; |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
5142 } |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5143 p = SDATA (data); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5144 end = p + SBYTES (data); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5145 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5146 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5147 /* Check magic number. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5148 if (end - p < 2 || *p++ != 'P') |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5149 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5150 image_error ("Not a PBM image: `%s'", img->spec, Qnil); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5151 error: |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5152 xfree (contents); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5153 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5154 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5155 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5156 switch (*p++) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5157 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5158 case '1': |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5159 raw_p = 0, type = PBM_MONO; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5160 break; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5161 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5162 case '2': |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5163 raw_p = 0, type = PBM_GRAY; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5164 break; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5165 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5166 case '3': |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5167 raw_p = 0, type = PBM_COLOR; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5168 break; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5169 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5170 case '4': |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5171 raw_p = 1, type = PBM_MONO; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5172 break; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5173 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5174 case '5': |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5175 raw_p = 1, type = PBM_GRAY; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5176 break; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5177 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5178 case '6': |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5179 raw_p = 1, type = PBM_COLOR; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5180 break; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5181 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5182 default: |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5183 image_error ("Not a PBM image: `%s'", img->spec, Qnil); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5184 goto error; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5185 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5186 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5187 /* Read width, height, maximum color-component. Characters |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5188 starting with `#' up to the end of a line are ignored. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5189 width = pbm_scan_number (&p, end); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5190 height = pbm_scan_number (&p, end); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5191 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5192 if (type != PBM_MONO) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5193 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5194 max_color_idx = pbm_scan_number (&p, end); |
80382
296f5c781a2b
(pbm_load): Allow color values up to 65535.
Jason Rumney <jasonr@gnu.org>
parents:
79759
diff
changeset
|
5195 if (max_color_idx > 65535 || max_color_idx < 0) |
296f5c781a2b
(pbm_load): Allow color values up to 65535.
Jason Rumney <jasonr@gnu.org>
parents:
79759
diff
changeset
|
5196 { |
296f5c781a2b
(pbm_load): Allow color values up to 65535.
Jason Rumney <jasonr@gnu.org>
parents:
79759
diff
changeset
|
5197 image_error ("Unsupported maximum PBM color value", Qnil, Qnil); |
296f5c781a2b
(pbm_load): Allow color values up to 65535.
Jason Rumney <jasonr@gnu.org>
parents:
79759
diff
changeset
|
5198 goto error; |
296f5c781a2b
(pbm_load): Allow color values up to 65535.
Jason Rumney <jasonr@gnu.org>
parents:
79759
diff
changeset
|
5199 } |
296f5c781a2b
(pbm_load): Allow color values up to 65535.
Jason Rumney <jasonr@gnu.org>
parents:
79759
diff
changeset
|
5200 } |
296f5c781a2b
(pbm_load): Allow color values up to 65535.
Jason Rumney <jasonr@gnu.org>
parents:
79759
diff
changeset
|
5201 |
296f5c781a2b
(pbm_load): Allow color values up to 65535.
Jason Rumney <jasonr@gnu.org>
parents:
79759
diff
changeset
|
5202 if (!check_image_size (f, width, height)) |
296f5c781a2b
(pbm_load): Allow color values up to 65535.
Jason Rumney <jasonr@gnu.org>
parents:
79759
diff
changeset
|
5203 { |
102392
689fbe81edc4
(xbm_read_bitmap_data, png_load, svg_load_image):
Jason Rumney <jasonr@gnu.org>
parents:
101838
diff
changeset
|
5204 image_error ("Invalid image size (see `max-image-size')", Qnil, Qnil); |
80382
296f5c781a2b
(pbm_load): Allow color values up to 65535.
Jason Rumney <jasonr@gnu.org>
parents:
79759
diff
changeset
|
5205 goto error; |
296f5c781a2b
(pbm_load): Allow color values up to 65535.
Jason Rumney <jasonr@gnu.org>
parents:
79759
diff
changeset
|
5206 } |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5207 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5208 if (!x_create_x_image_and_pixmap (f, width, height, 0, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5209 &ximg, &img->pixmap)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5210 goto error; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5211 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5212 /* Initialize the color hash table. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5213 init_color_table (); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5214 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5215 if (type == PBM_MONO) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5216 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5217 int c = 0, g; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5218 struct image_keyword fmt[PBM_LAST]; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5219 unsigned long fg = FRAME_FOREGROUND_PIXEL (f); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5220 unsigned long bg = FRAME_BACKGROUND_PIXEL (f); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5221 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5222 /* Parse the image specification. */ |
109165
750db9f3e6d8
Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents:
109160
diff
changeset
|
5223 memcpy (fmt, pbm_format, sizeof fmt); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5224 parse_image_spec (img->spec, fmt, PBM_LAST, Qpbm); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5225 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5226 /* Get foreground and background colors, maybe allocate colors. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5227 if (fmt[PBM_FOREGROUND].count |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5228 && STRINGP (fmt[PBM_FOREGROUND].value)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5229 fg = x_alloc_image_color (f, img, fmt[PBM_FOREGROUND].value, fg); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5230 if (fmt[PBM_BACKGROUND].count |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5231 && STRINGP (fmt[PBM_BACKGROUND].value)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5232 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5233 bg = x_alloc_image_color (f, img, fmt[PBM_BACKGROUND].value, bg); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5234 img->background = bg; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5235 img->background_valid = 1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5236 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5237 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5238 for (y = 0; y < height; ++y) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5239 for (x = 0; x < width; ++x) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5240 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5241 if (raw_p) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5242 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5243 if ((x & 7) == 0) |
78450
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
5244 { |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
5245 if (p >= end) |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
5246 { |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
5247 x_destroy_x_image (ximg); |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
5248 x_clear_image (f, img); |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
5249 image_error ("Invalid image size in image `%s'", |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
5250 img->spec, Qnil); |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
5251 goto error; |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
5252 } |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
5253 c = *p++; |
69b18f59a998
Sync to trunk version.
Chong Yidong <cyd@stupidchicken.com>
parents:
78260
diff
changeset
|
5254 } |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5255 g = c & 0x80; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5256 c <<= 1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5257 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5258 else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5259 g = pbm_scan_number (&p, end); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5260 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5261 XPutPixel (ximg, x, y, g ? fg : bg); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5262 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5263 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5264 else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5265 { |
80382
296f5c781a2b
(pbm_load): Allow color values up to 65535.
Jason Rumney <jasonr@gnu.org>
parents:
79759
diff
changeset
|
5266 int expected_size = height * width; |
296f5c781a2b
(pbm_load): Allow color values up to 65535.
Jason Rumney <jasonr@gnu.org>
parents:
79759
diff
changeset
|
5267 if (max_color_idx > 255) |
296f5c781a2b
(pbm_load): Allow color values up to 65535.
Jason Rumney <jasonr@gnu.org>
parents:
79759
diff
changeset
|
5268 expected_size *= 2; |
296f5c781a2b
(pbm_load): Allow color values up to 65535.
Jason Rumney <jasonr@gnu.org>
parents:
79759
diff
changeset
|
5269 if (type == PBM_COLOR) |
296f5c781a2b
(pbm_load): Allow color values up to 65535.
Jason Rumney <jasonr@gnu.org>
parents:
79759
diff
changeset
|
5270 expected_size *= 3; |
296f5c781a2b
(pbm_load): Allow color values up to 65535.
Jason Rumney <jasonr@gnu.org>
parents:
79759
diff
changeset
|
5271 |
296f5c781a2b
(pbm_load): Allow color values up to 65535.
Jason Rumney <jasonr@gnu.org>
parents:
79759
diff
changeset
|
5272 if (raw_p && p + expected_size > end) |
76550
05fce28aea26
(pbm_load): Signal error for invalid image size.
Chong Yidong <cyd@stupidchicken.com>
parents:
75348
diff
changeset
|
5273 { |
05fce28aea26
(pbm_load): Signal error for invalid image size.
Chong Yidong <cyd@stupidchicken.com>
parents:
75348
diff
changeset
|
5274 x_destroy_x_image (ximg); |
77692
f6cc3f58ce04
(pbm_load): Correctly check image size for greyscale pbm.
Chong Yidong <cyd@stupidchicken.com>
parents:
76550
diff
changeset
|
5275 x_clear_image (f, img); |
76550
05fce28aea26
(pbm_load): Signal error for invalid image size.
Chong Yidong <cyd@stupidchicken.com>
parents:
75348
diff
changeset
|
5276 image_error ("Invalid image size in image `%s'", |
05fce28aea26
(pbm_load): Signal error for invalid image size.
Chong Yidong <cyd@stupidchicken.com>
parents:
75348
diff
changeset
|
5277 img->spec, Qnil); |
05fce28aea26
(pbm_load): Signal error for invalid image size.
Chong Yidong <cyd@stupidchicken.com>
parents:
75348
diff
changeset
|
5278 goto error; |
05fce28aea26
(pbm_load): Signal error for invalid image size.
Chong Yidong <cyd@stupidchicken.com>
parents:
75348
diff
changeset
|
5279 } |
05fce28aea26
(pbm_load): Signal error for invalid image size.
Chong Yidong <cyd@stupidchicken.com>
parents:
75348
diff
changeset
|
5280 |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5281 for (y = 0; y < height; ++y) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5282 for (x = 0; x < width; ++x) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5283 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5284 int r, g, b; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5285 |
80382
296f5c781a2b
(pbm_load): Allow color values up to 65535.
Jason Rumney <jasonr@gnu.org>
parents:
79759
diff
changeset
|
5286 if (type == PBM_GRAY && raw_p) |
296f5c781a2b
(pbm_load): Allow color values up to 65535.
Jason Rumney <jasonr@gnu.org>
parents:
79759
diff
changeset
|
5287 { |
296f5c781a2b
(pbm_load): Allow color values up to 65535.
Jason Rumney <jasonr@gnu.org>
parents:
79759
diff
changeset
|
5288 r = g = b = *p++; |
296f5c781a2b
(pbm_load): Allow color values up to 65535.
Jason Rumney <jasonr@gnu.org>
parents:
79759
diff
changeset
|
5289 if (max_color_idx > 255) |
296f5c781a2b
(pbm_load): Allow color values up to 65535.
Jason Rumney <jasonr@gnu.org>
parents:
79759
diff
changeset
|
5290 r = g = b = r * 256 + *p++; |
296f5c781a2b
(pbm_load): Allow color values up to 65535.
Jason Rumney <jasonr@gnu.org>
parents:
79759
diff
changeset
|
5291 } |
296f5c781a2b
(pbm_load): Allow color values up to 65535.
Jason Rumney <jasonr@gnu.org>
parents:
79759
diff
changeset
|
5292 else if (type == PBM_GRAY) |
296f5c781a2b
(pbm_load): Allow color values up to 65535.
Jason Rumney <jasonr@gnu.org>
parents:
79759
diff
changeset
|
5293 r = g = b = pbm_scan_number (&p, end); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5294 else if (raw_p) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5295 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5296 r = *p++; |
80382
296f5c781a2b
(pbm_load): Allow color values up to 65535.
Jason Rumney <jasonr@gnu.org>
parents:
79759
diff
changeset
|
5297 if (max_color_idx > 255) |
296f5c781a2b
(pbm_load): Allow color values up to 65535.
Jason Rumney <jasonr@gnu.org>
parents:
79759
diff
changeset
|
5298 r = r * 256 + *p++; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5299 g = *p++; |
80382
296f5c781a2b
(pbm_load): Allow color values up to 65535.
Jason Rumney <jasonr@gnu.org>
parents:
79759
diff
changeset
|
5300 if (max_color_idx > 255) |
296f5c781a2b
(pbm_load): Allow color values up to 65535.
Jason Rumney <jasonr@gnu.org>
parents:
79759
diff
changeset
|
5301 g = g * 256 + *p++; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5302 b = *p++; |
80382
296f5c781a2b
(pbm_load): Allow color values up to 65535.
Jason Rumney <jasonr@gnu.org>
parents:
79759
diff
changeset
|
5303 if (max_color_idx > 255) |
296f5c781a2b
(pbm_load): Allow color values up to 65535.
Jason Rumney <jasonr@gnu.org>
parents:
79759
diff
changeset
|
5304 b = b * 256 + *p++; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5305 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5306 else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5307 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5308 r = pbm_scan_number (&p, end); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5309 g = pbm_scan_number (&p, end); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5310 b = pbm_scan_number (&p, end); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5311 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5312 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5313 if (r < 0 || g < 0 || b < 0) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5314 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5315 x_destroy_x_image (ximg); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5316 image_error ("Invalid pixel value in image `%s'", |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5317 img->spec, Qnil); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5318 goto error; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5319 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5320 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5321 /* RGB values are now in the range 0..max_color_idx. |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5322 Scale this to the range 0..0xffff supported by X. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5323 r = (double) r * 65535 / max_color_idx; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5324 g = (double) g * 65535 / max_color_idx; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5325 b = (double) b * 65535 / max_color_idx; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5326 XPutPixel (ximg, x, y, lookup_rgb_color (f, r, g, b)); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5327 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5328 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5329 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5330 #ifdef COLOR_TABLE_SUPPORT |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5331 /* Store in IMG->colors the colors allocated for the image, and |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5332 free the color table. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5333 img->colors = colors_in_color_table (&img->ncolors); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5334 free_color_table (); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5335 #endif /* COLOR_TABLE_SUPPORT */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5336 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5337 img->width = width; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5338 img->height = height; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5339 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5340 /* Maybe fill in the background field while we have ximg handy. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5341 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5342 if (NILP (image_spec_value (img->spec, QCbackground, NULL))) |
63323
ccf928f0383c
(x_create_x_image_and_pixmap) [HAVE_NTGUI]: Cast 4th arg
Eli Zaretskii <eliz@gnu.org>
parents:
63112
diff
changeset
|
5343 /* Casting avoids a GCC warning. */ |
ccf928f0383c
(x_create_x_image_and_pixmap) [HAVE_NTGUI]: Cast 4th arg
Eli Zaretskii <eliz@gnu.org>
parents:
63112
diff
changeset
|
5344 IMAGE_BACKGROUND (img, f, (XImagePtr_or_DC)ximg); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5345 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5346 /* Put the image into a pixmap. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5347 x_put_x_image (f, ximg, img->pixmap, width, height); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5348 x_destroy_x_image (ximg); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5349 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5350 /* X and W32 versions did it here, MAC version above. ++kfs |
54920
38cb79e68369
(PNG_BG_COLOR_SHIFT): Remove.
Kim F. Storm <storm@cua.dk>
parents:
54427
diff
changeset
|
5351 img->width = width; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5352 img->height = height; */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5353 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5354 xfree (contents); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5355 return 1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5356 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5357 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5358 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5359 /*********************************************************************** |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5360 PNG |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5361 ***********************************************************************/ |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5362 |
97043
9592c50233ab
Remove support for Mac Carbon.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
97034
diff
changeset
|
5363 #if defined (HAVE_PNG) || defined (HAVE_NS) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5364 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5365 /* Function prototypes. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5366 |
109100
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
5367 static int png_image_p (Lisp_Object object); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
5368 static int png_load (struct frame *f, struct image *img); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5369 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5370 /* The symbol `png' identifying images of this type. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5371 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5372 Lisp_Object Qpng; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5373 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5374 /* Indices of image specification fields in png_format, below. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5375 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5376 enum png_keyword_index |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5377 { |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5378 PNG_TYPE, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5379 PNG_DATA, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5380 PNG_FILE, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5381 PNG_ASCENT, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5382 PNG_MARGIN, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5383 PNG_RELIEF, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5384 PNG_ALGORITHM, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5385 PNG_HEURISTIC_MASK, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5386 PNG_MASK, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5387 PNG_BACKGROUND, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5388 PNG_LAST |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5389 }; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5390 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5391 /* Vector of image_keyword structures describing the format |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5392 of valid user-defined image specifications. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5393 |
105959
ba3ffbd9c422
* process.c (ifflag_def): Make flag_sym constant.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
105877
diff
changeset
|
5394 static const struct image_keyword png_format[PNG_LAST] = |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5395 { |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5396 {":type", IMAGE_SYMBOL_VALUE, 1}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5397 {":data", IMAGE_STRING_VALUE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5398 {":file", IMAGE_STRING_VALUE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5399 {":ascent", IMAGE_ASCENT_VALUE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5400 {":margin", IMAGE_POSITIVE_INTEGER_VALUE_OR_PAIR, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5401 {":relief", IMAGE_INTEGER_VALUE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5402 {":conversion", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5403 {":heuristic-mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5404 {":mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5405 {":background", IMAGE_STRING_OR_NIL_VALUE, 0} |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5406 }; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5407 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5408 /* Structure describing the image type `png'. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5409 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5410 static struct image_type png_type = |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5411 { |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5412 &Qpng, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5413 png_image_p, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5414 png_load, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5415 x_clear_image, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5416 NULL |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5417 }; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5418 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5419 /* Return non-zero if OBJECT is a valid PNG image specification. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5420 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5421 static int |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
5422 png_image_p (Lisp_Object object) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5423 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5424 struct image_keyword fmt[PNG_LAST]; |
109165
750db9f3e6d8
Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents:
109160
diff
changeset
|
5425 memcpy (fmt, png_format, sizeof fmt); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5426 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5427 if (!parse_image_spec (object, fmt, PNG_LAST, Qpng)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5428 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5429 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5430 /* Must specify either the :data or :file keyword. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5431 return fmt[PNG_FILE].count + fmt[PNG_DATA].count == 1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5432 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5433 |
97043
9592c50233ab
Remove support for Mac Carbon.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
97034
diff
changeset
|
5434 #endif /* HAVE_PNG || HAVE_NS */ |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5435 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5436 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5437 #ifdef HAVE_PNG |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5438 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5439 #ifdef HAVE_NTGUI |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5440 /* PNG library details. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5441 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5442 DEF_IMGLIB_FN (png_get_io_ptr); |
106975
62f86ca36527
Use png_sig_cmp to allow linking with libpng 1.4.0.
Chong Yidong <cyd@stupidchicken.com>
parents:
106815
diff
changeset
|
5443 DEF_IMGLIB_FN (png_sig_cmp); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5444 DEF_IMGLIB_FN (png_create_read_struct); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5445 DEF_IMGLIB_FN (png_create_info_struct); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5446 DEF_IMGLIB_FN (png_destroy_read_struct); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5447 DEF_IMGLIB_FN (png_set_read_fn); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5448 DEF_IMGLIB_FN (png_set_sig_bytes); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5449 DEF_IMGLIB_FN (png_read_info); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5450 DEF_IMGLIB_FN (png_get_IHDR); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5451 DEF_IMGLIB_FN (png_get_valid); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5452 DEF_IMGLIB_FN (png_set_strip_16); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5453 DEF_IMGLIB_FN (png_set_expand); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5454 DEF_IMGLIB_FN (png_set_gray_to_rgb); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5455 DEF_IMGLIB_FN (png_set_background); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5456 DEF_IMGLIB_FN (png_get_bKGD); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5457 DEF_IMGLIB_FN (png_read_update_info); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5458 DEF_IMGLIB_FN (png_get_channels); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5459 DEF_IMGLIB_FN (png_get_rowbytes); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5460 DEF_IMGLIB_FN (png_read_image); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5461 DEF_IMGLIB_FN (png_read_end); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5462 DEF_IMGLIB_FN (png_error); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5463 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5464 static int |
56104
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
5465 init_png_functions (Lisp_Object libraries) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5466 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5467 HMODULE library; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5468 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5469 /* Try loading libpng under probable names. */ |
56104
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
5470 if (!(library = w32_delayed_load (libraries, Qpng))) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5471 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5472 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5473 LOAD_IMGLIB_FN (library, png_get_io_ptr); |
106975
62f86ca36527
Use png_sig_cmp to allow linking with libpng 1.4.0.
Chong Yidong <cyd@stupidchicken.com>
parents:
106815
diff
changeset
|
5474 LOAD_IMGLIB_FN (library, png_sig_cmp); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5475 LOAD_IMGLIB_FN (library, png_create_read_struct); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5476 LOAD_IMGLIB_FN (library, png_create_info_struct); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5477 LOAD_IMGLIB_FN (library, png_destroy_read_struct); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5478 LOAD_IMGLIB_FN (library, png_set_read_fn); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5479 LOAD_IMGLIB_FN (library, png_set_sig_bytes); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5480 LOAD_IMGLIB_FN (library, png_read_info); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5481 LOAD_IMGLIB_FN (library, png_get_IHDR); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5482 LOAD_IMGLIB_FN (library, png_get_valid); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5483 LOAD_IMGLIB_FN (library, png_set_strip_16); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5484 LOAD_IMGLIB_FN (library, png_set_expand); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5485 LOAD_IMGLIB_FN (library, png_set_gray_to_rgb); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5486 LOAD_IMGLIB_FN (library, png_set_background); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5487 LOAD_IMGLIB_FN (library, png_get_bKGD); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5488 LOAD_IMGLIB_FN (library, png_read_update_info); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5489 LOAD_IMGLIB_FN (library, png_get_channels); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5490 LOAD_IMGLIB_FN (library, png_get_rowbytes); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5491 LOAD_IMGLIB_FN (library, png_read_image); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5492 LOAD_IMGLIB_FN (library, png_read_end); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5493 LOAD_IMGLIB_FN (library, png_error); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5494 return 1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5495 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5496 #else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5497 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5498 #define fn_png_get_io_ptr png_get_io_ptr |
106975
62f86ca36527
Use png_sig_cmp to allow linking with libpng 1.4.0.
Chong Yidong <cyd@stupidchicken.com>
parents:
106815
diff
changeset
|
5499 #define fn_png_sig_cmp png_sig_cmp |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5500 #define fn_png_create_read_struct png_create_read_struct |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5501 #define fn_png_create_info_struct png_create_info_struct |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5502 #define fn_png_destroy_read_struct png_destroy_read_struct |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5503 #define fn_png_set_read_fn png_set_read_fn |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5504 #define fn_png_set_sig_bytes png_set_sig_bytes |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5505 #define fn_png_read_info png_read_info |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5506 #define fn_png_get_IHDR png_get_IHDR |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5507 #define fn_png_get_valid png_get_valid |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5508 #define fn_png_set_strip_16 png_set_strip_16 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5509 #define fn_png_set_expand png_set_expand |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5510 #define fn_png_set_gray_to_rgb png_set_gray_to_rgb |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5511 #define fn_png_set_background png_set_background |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5512 #define fn_png_get_bKGD png_get_bKGD |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5513 #define fn_png_read_update_info png_read_update_info |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5514 #define fn_png_get_channels png_get_channels |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5515 #define fn_png_get_rowbytes png_get_rowbytes |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5516 #define fn_png_read_image png_read_image |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5517 #define fn_png_read_end png_read_end |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5518 #define fn_png_error png_error |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5519 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5520 #endif /* HAVE_NTGUI */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5521 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5522 /* Error and warning handlers installed when the PNG library |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5523 is initialized. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5524 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5525 static void |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
5526 my_png_error (png_struct *png_ptr, const char *msg) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5527 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5528 xassert (png_ptr != NULL); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5529 image_error ("PNG error: %s", build_string (msg), Qnil); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5530 longjmp (png_ptr->jmpbuf, 1); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5531 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5532 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5533 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5534 static void |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
5535 my_png_warning (png_struct *png_ptr, const char *msg) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5536 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5537 xassert (png_ptr != NULL); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5538 image_error ("PNG warning: %s", build_string (msg), Qnil); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5539 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5540 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5541 /* Memory source for PNG decoding. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5542 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5543 struct png_memory_storage |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5544 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5545 unsigned char *bytes; /* The data */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5546 size_t len; /* How big is it? */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5547 int index; /* Where are we? */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5548 }; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5549 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5550 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5551 /* Function set as reader function when reading PNG image from memory. |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5552 PNG_PTR is a pointer to the PNG control structure. Copy LENGTH |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5553 bytes from the input to DATA. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5554 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5555 static void |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
5556 png_read_from_memory (png_structp png_ptr, png_bytep data, png_size_t length) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5557 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5558 struct png_memory_storage *tbr |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5559 = (struct png_memory_storage *) fn_png_get_io_ptr (png_ptr); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5560 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5561 if (length > tbr->len - tbr->index) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5562 fn_png_error (png_ptr, "Read error"); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5563 |
109165
750db9f3e6d8
Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents:
109160
diff
changeset
|
5564 memcpy (data, tbr->bytes + tbr->index, length); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5565 tbr->index = tbr->index + length; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5566 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5567 |
55886
ae9227eb8392
Work around bugs/problems with MinGW builds of graphics libraries
Juanma Barranquero <lekktu@gmail.com>
parents:
55540
diff
changeset
|
5568 |
63684
c95dbbf82d19
(fn_png_init_io): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
63323
diff
changeset
|
5569 /* Function set as reader function when reading PNG image from a file. |
c95dbbf82d19
(fn_png_init_io): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
63323
diff
changeset
|
5570 PNG_PTR is a pointer to the PNG control structure. Copy LENGTH |
c95dbbf82d19
(fn_png_init_io): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
63323
diff
changeset
|
5571 bytes from the input to DATA. */ |
c95dbbf82d19
(fn_png_init_io): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
63323
diff
changeset
|
5572 |
c95dbbf82d19
(fn_png_init_io): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
63323
diff
changeset
|
5573 static void |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
5574 png_read_from_file (png_structp png_ptr, png_bytep data, png_size_t length) |
63684
c95dbbf82d19
(fn_png_init_io): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
63323
diff
changeset
|
5575 { |
c95dbbf82d19
(fn_png_init_io): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
63323
diff
changeset
|
5576 FILE *fp = (FILE *) fn_png_get_io_ptr (png_ptr); |
c95dbbf82d19
(fn_png_init_io): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
63323
diff
changeset
|
5577 |
c95dbbf82d19
(fn_png_init_io): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
63323
diff
changeset
|
5578 if (fread (data, 1, length, fp) < length) |
c95dbbf82d19
(fn_png_init_io): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
63323
diff
changeset
|
5579 fn_png_error (png_ptr, "Read error"); |
c95dbbf82d19
(fn_png_init_io): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
63323
diff
changeset
|
5580 } |
c95dbbf82d19
(fn_png_init_io): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
63323
diff
changeset
|
5581 |
c95dbbf82d19
(fn_png_init_io): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
63323
diff
changeset
|
5582 |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5583 /* Load PNG image IMG for use on frame F. Value is non-zero if |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5584 successful. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5585 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5586 static int |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
5587 png_load (struct frame *f, struct image *img) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5588 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5589 Lisp_Object file, specified_file; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5590 Lisp_Object specified_data; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5591 int x, y, i; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5592 XImagePtr ximg, mask_img = NULL; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5593 png_struct *png_ptr = NULL; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5594 png_info *info_ptr = NULL, *end_info = NULL; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5595 FILE *volatile fp = NULL; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5596 png_byte sig[8]; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5597 png_byte * volatile pixels = NULL; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5598 png_byte ** volatile rows = NULL; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5599 png_uint_32 width, height; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5600 int bit_depth, color_type, interlace_type; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5601 png_byte channels; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5602 png_uint_32 row_bytes; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5603 int transparent_p; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5604 struct png_memory_storage tbr; /* Data to be read */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5605 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5606 /* Find out what file to load. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5607 specified_file = image_spec_value (img->spec, QCfile, NULL); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5608 specified_data = image_spec_value (img->spec, QCdata, NULL); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5609 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5610 if (NILP (specified_data)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5611 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5612 file = x_find_image_file (specified_file); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5613 if (!STRINGP (file)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5614 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5615 image_error ("Cannot find image file `%s'", specified_file, Qnil); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5616 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5617 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5618 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5619 /* Open the image file. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5620 fp = fopen (SDATA (file), "rb"); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5621 if (!fp) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5622 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5623 image_error ("Cannot open image file `%s'", file, Qnil); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5624 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5625 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5626 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5627 /* Check PNG signature. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5628 if (fread (sig, 1, sizeof sig, fp) != sizeof sig |
106975
62f86ca36527
Use png_sig_cmp to allow linking with libpng 1.4.0.
Chong Yidong <cyd@stupidchicken.com>
parents:
106815
diff
changeset
|
5629 || fn_png_sig_cmp (sig, 0, sizeof sig)) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5630 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5631 image_error ("Not a PNG file: `%s'", file, Qnil); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5632 fclose (fp); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5633 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5634 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5635 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5636 else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5637 { |
110184
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
5638 if (!STRINGP (specified_data)) |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
5639 { |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
5640 image_error ("Invalid image data `%s'", specified_data, Qnil); |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
5641 return 0; |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
5642 } |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
5643 |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5644 /* Read from memory. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5645 tbr.bytes = SDATA (specified_data); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5646 tbr.len = SBYTES (specified_data); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5647 tbr.index = 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5648 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5649 /* Check PNG signature. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5650 if (tbr.len < sizeof sig |
106975
62f86ca36527
Use png_sig_cmp to allow linking with libpng 1.4.0.
Chong Yidong <cyd@stupidchicken.com>
parents:
106815
diff
changeset
|
5651 || fn_png_sig_cmp (tbr.bytes, 0, sizeof sig)) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5652 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5653 image_error ("Not a PNG image: `%s'", img->spec, Qnil); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5654 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5655 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5656 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5657 /* Need to skip past the signature. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5658 tbr.bytes += sizeof (sig); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5659 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5660 |
63323
ccf928f0383c
(x_create_x_image_and_pixmap) [HAVE_NTGUI]: Cast 4th arg
Eli Zaretskii <eliz@gnu.org>
parents:
63112
diff
changeset
|
5661 /* Initialize read and info structs for PNG lib. Casting return |
ccf928f0383c
(x_create_x_image_and_pixmap) [HAVE_NTGUI]: Cast 4th arg
Eli Zaretskii <eliz@gnu.org>
parents:
63112
diff
changeset
|
5662 value avoids a GCC warning on W32. */ |
ccf928f0383c
(x_create_x_image_and_pixmap) [HAVE_NTGUI]: Cast 4th arg
Eli Zaretskii <eliz@gnu.org>
parents:
63112
diff
changeset
|
5663 png_ptr = (png_structp)fn_png_create_read_struct (PNG_LIBPNG_VER_STRING, |
ccf928f0383c
(x_create_x_image_and_pixmap) [HAVE_NTGUI]: Cast 4th arg
Eli Zaretskii <eliz@gnu.org>
parents:
63112
diff
changeset
|
5664 NULL, my_png_error, |
ccf928f0383c
(x_create_x_image_and_pixmap) [HAVE_NTGUI]: Cast 4th arg
Eli Zaretskii <eliz@gnu.org>
parents:
63112
diff
changeset
|
5665 my_png_warning); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5666 if (!png_ptr) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5667 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5668 if (fp) fclose (fp); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5669 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5670 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5671 |
63323
ccf928f0383c
(x_create_x_image_and_pixmap) [HAVE_NTGUI]: Cast 4th arg
Eli Zaretskii <eliz@gnu.org>
parents:
63112
diff
changeset
|
5672 /* Casting return value avoids a GCC warning on W32. */ |
ccf928f0383c
(x_create_x_image_and_pixmap) [HAVE_NTGUI]: Cast 4th arg
Eli Zaretskii <eliz@gnu.org>
parents:
63112
diff
changeset
|
5673 info_ptr = (png_infop)fn_png_create_info_struct (png_ptr); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5674 if (!info_ptr) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5675 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5676 fn_png_destroy_read_struct (&png_ptr, NULL, NULL); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5677 if (fp) fclose (fp); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5678 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5679 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5680 |
63323
ccf928f0383c
(x_create_x_image_and_pixmap) [HAVE_NTGUI]: Cast 4th arg
Eli Zaretskii <eliz@gnu.org>
parents:
63112
diff
changeset
|
5681 /* Casting return value avoids a GCC warning on W32. */ |
ccf928f0383c
(x_create_x_image_and_pixmap) [HAVE_NTGUI]: Cast 4th arg
Eli Zaretskii <eliz@gnu.org>
parents:
63112
diff
changeset
|
5682 end_info = (png_infop)fn_png_create_info_struct (png_ptr); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5683 if (!end_info) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5684 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5685 fn_png_destroy_read_struct (&png_ptr, &info_ptr, NULL); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5686 if (fp) fclose (fp); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5687 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5688 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5689 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5690 /* Set error jump-back. We come back here when the PNG library |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5691 detects an error. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5692 if (setjmp (png_ptr->jmpbuf)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5693 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5694 error: |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5695 if (png_ptr) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5696 fn_png_destroy_read_struct (&png_ptr, &info_ptr, &end_info); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5697 xfree (pixels); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5698 xfree (rows); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5699 if (fp) fclose (fp); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5700 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5701 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5702 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5703 /* Read image info. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5704 if (!NILP (specified_data)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5705 fn_png_set_read_fn (png_ptr, (void *) &tbr, png_read_from_memory); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5706 else |
63684
c95dbbf82d19
(fn_png_init_io): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
63323
diff
changeset
|
5707 fn_png_set_read_fn (png_ptr, (void *) fp, png_read_from_file); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5708 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5709 fn_png_set_sig_bytes (png_ptr, sizeof sig); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5710 fn_png_read_info (png_ptr, info_ptr); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5711 fn_png_get_IHDR (png_ptr, info_ptr, &width, &height, &bit_depth, &color_type, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5712 &interlace_type, NULL, NULL); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5713 |
66195
ad1acaef1abb
* image.c (Vmax_image_size): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
66013
diff
changeset
|
5714 if (!check_image_size (f, width, height)) |
102392
689fbe81edc4
(xbm_read_bitmap_data, png_load, svg_load_image):
Jason Rumney <jasonr@gnu.org>
parents:
101838
diff
changeset
|
5715 { |
689fbe81edc4
(xbm_read_bitmap_data, png_load, svg_load_image):
Jason Rumney <jasonr@gnu.org>
parents:
101838
diff
changeset
|
5716 image_error ("Invalid image size (see `max-image-size')", Qnil, Qnil); |
689fbe81edc4
(xbm_read_bitmap_data, png_load, svg_load_image):
Jason Rumney <jasonr@gnu.org>
parents:
101838
diff
changeset
|
5717 goto error; |
689fbe81edc4
(xbm_read_bitmap_data, png_load, svg_load_image):
Jason Rumney <jasonr@gnu.org>
parents:
101838
diff
changeset
|
5718 } |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5719 /* If image contains simply transparency data, we prefer to |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5720 construct a clipping mask. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5721 if (fn_png_get_valid (png_ptr, info_ptr, PNG_INFO_tRNS)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5722 transparent_p = 1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5723 else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5724 transparent_p = 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5725 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5726 /* This function is easier to write if we only have to handle |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5727 one data format: RGB or RGBA with 8 bits per channel. Let's |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5728 transform other formats into that format. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5729 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5730 /* Strip more than 8 bits per channel. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5731 if (bit_depth == 16) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5732 fn_png_set_strip_16 (png_ptr); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5733 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5734 /* Expand data to 24 bit RGB, or 8 bit grayscale, with alpha channel |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5735 if available. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5736 fn_png_set_expand (png_ptr); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5737 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5738 /* Convert grayscale images to RGB. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5739 if (color_type == PNG_COLOR_TYPE_GRAY |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5740 || color_type == PNG_COLOR_TYPE_GRAY_ALPHA) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5741 fn_png_set_gray_to_rgb (png_ptr); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5742 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5743 /* Handle alpha channel by combining the image with a background |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5744 color. Do this only if a real alpha channel is supplied. For |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5745 simple transparency, we prefer a clipping mask. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5746 if (!transparent_p) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5747 { |
83763
14a686983252
(png_load): Comment-out var only used in commented-out code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
83676
diff
changeset
|
5748 /* png_color_16 *image_bg; */ |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5749 Lisp_Object specified_bg |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5750 = image_spec_value (img->spec, QCbackground, NULL); |
80600
43e764077e68
(png_load): Use correct bit-depth for setting background color.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80554
diff
changeset
|
5751 int shift = (bit_depth == 16) ? 0 : 8; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5752 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5753 if (STRINGP (specified_bg)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5754 /* The user specified `:background', use that. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5755 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5756 XColor color; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5757 if (x_defined_color (f, SDATA (specified_bg), &color, 0)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5758 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5759 png_color_16 user_bg; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5760 |
109165
750db9f3e6d8
Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents:
109160
diff
changeset
|
5761 memset (&user_bg, 0, sizeof user_bg); |
80600
43e764077e68
(png_load): Use correct bit-depth for setting background color.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80554
diff
changeset
|
5762 user_bg.red = color.red >> shift; |
43e764077e68
(png_load): Use correct bit-depth for setting background color.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80554
diff
changeset
|
5763 user_bg.green = color.green >> shift; |
43e764077e68
(png_load): Use correct bit-depth for setting background color.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80554
diff
changeset
|
5764 user_bg.blue = color.blue >> shift; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5765 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5766 fn_png_set_background (png_ptr, &user_bg, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5767 PNG_BACKGROUND_GAMMA_SCREEN, 0, 1.0); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5768 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5769 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5770 else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5771 { |
80600
43e764077e68
(png_load): Use correct bit-depth for setting background color.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80554
diff
changeset
|
5772 /* We use the current frame background, ignoring any default |
43e764077e68
(png_load): Use correct bit-depth for setting background color.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80554
diff
changeset
|
5773 background color set by the image. */ |
100845
58017ff34d94
* w32term.c (x_query_colors, x_query_color): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
100826
diff
changeset
|
5774 #if defined (HAVE_X_WINDOWS) || defined (HAVE_NTGUI) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5775 XColor color; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5776 png_color_16 frame_background; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5777 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5778 color.pixel = FRAME_BACKGROUND_PIXEL (f); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5779 x_query_color (f, &color); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5780 |
109165
750db9f3e6d8
Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents:
109160
diff
changeset
|
5781 memset (&frame_background, 0, sizeof frame_background); |
80600
43e764077e68
(png_load): Use correct bit-depth for setting background color.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80554
diff
changeset
|
5782 frame_background.red = color.red >> shift; |
43e764077e68
(png_load): Use correct bit-depth for setting background color.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80554
diff
changeset
|
5783 frame_background.green = color.green >> shift; |
43e764077e68
(png_load): Use correct bit-depth for setting background color.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80554
diff
changeset
|
5784 frame_background.blue = color.blue >> shift; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5785 #endif /* HAVE_X_WINDOWS */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5786 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5787 fn_png_set_background (png_ptr, &frame_background, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5788 PNG_BACKGROUND_GAMMA_SCREEN, 0, 1.0); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5789 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5790 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5791 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5792 /* Update info structure. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5793 fn_png_read_update_info (png_ptr, info_ptr); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5794 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5795 /* Get number of channels. Valid values are 1 for grayscale images |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5796 and images with a palette, 2 for grayscale images with transparency |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5797 information (alpha channel), 3 for RGB images, and 4 for RGB |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5798 images with alpha channel, i.e. RGBA. If conversions above were |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5799 sufficient we should only have 3 or 4 channels here. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5800 channels = fn_png_get_channels (png_ptr, info_ptr); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5801 xassert (channels == 3 || channels == 4); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5802 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5803 /* Number of bytes needed for one row of the image. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5804 row_bytes = fn_png_get_rowbytes (png_ptr, info_ptr); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5805 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5806 /* Allocate memory for the image. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5807 pixels = (png_byte *) xmalloc (row_bytes * height * sizeof *pixels); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5808 rows = (png_byte **) xmalloc (height * sizeof *rows); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5809 for (i = 0; i < height; ++i) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5810 rows[i] = pixels + i * row_bytes; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5811 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5812 /* Read the entire image. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5813 fn_png_read_image (png_ptr, rows); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5814 fn_png_read_end (png_ptr, info_ptr); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5815 if (fp) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5816 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5817 fclose (fp); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5818 fp = NULL; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5819 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5820 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5821 /* Create the X image and pixmap. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5822 if (!x_create_x_image_and_pixmap (f, width, height, 0, &ximg, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5823 &img->pixmap)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5824 goto error; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5825 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5826 /* Create an image and pixmap serving as mask if the PNG image |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5827 contains an alpha channel. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5828 if (channels == 4 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5829 && !transparent_p |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5830 && !x_create_x_image_and_pixmap (f, width, height, 1, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5831 &mask_img, &img->mask)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5832 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5833 x_destroy_x_image (ximg); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5834 Free_Pixmap (FRAME_X_DISPLAY (f), img->pixmap); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5835 img->pixmap = NO_PIXMAP; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5836 goto error; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5837 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5838 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5839 /* Fill the X image and mask from PNG data. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5840 init_color_table (); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5841 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5842 for (y = 0; y < height; ++y) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5843 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5844 png_byte *p = rows[y]; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5845 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5846 for (x = 0; x < width; ++x) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5847 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5848 unsigned r, g, b; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5849 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5850 r = *p++ << 8; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5851 g = *p++ << 8; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5852 b = *p++ << 8; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5853 XPutPixel (ximg, x, y, lookup_rgb_color (f, r, g, b)); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5854 /* An alpha channel, aka mask channel, associates variable |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5855 transparency with an image. Where other image formats |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5856 support binary transparency---fully transparent or fully |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5857 opaque---PNG allows up to 254 levels of partial transparency. |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5858 The PNG library implements partial transparency by combining |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5859 the image with a specified background color. |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5860 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5861 I'm not sure how to handle this here nicely: because the |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5862 background on which the image is displayed may change, for |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5863 real alpha channel support, it would be necessary to create |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5864 a new image for each possible background. |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5865 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5866 What I'm doing now is that a mask is created if we have |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5867 boolean transparency information. Otherwise I'm using |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5868 the frame's background color to combine the image with. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5869 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5870 if (channels == 4) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5871 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5872 if (mask_img) |
65250
8105f38368d5
(PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. All uses changed.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64967
diff
changeset
|
5873 XPutPixel (mask_img, x, y, *p > 0 ? PIX_MASK_DRAW : PIX_MASK_RETAIN); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5874 ++p; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5875 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5876 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5877 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5878 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5879 if (NILP (image_spec_value (img->spec, QCbackground, NULL))) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5880 /* Set IMG's background color from the PNG image, unless the user |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5881 overrode it. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5882 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5883 png_color_16 *bg; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5884 if (fn_png_get_bKGD (png_ptr, info_ptr, &bg)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5885 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5886 img->background = lookup_rgb_color (f, bg->red, bg->green, bg->blue); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5887 img->background_valid = 1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5888 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5889 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5890 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5891 #ifdef COLOR_TABLE_SUPPORT |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5892 /* Remember colors allocated for this image. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5893 img->colors = colors_in_color_table (&img->ncolors); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5894 free_color_table (); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5895 #endif /* COLOR_TABLE_SUPPORT */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5896 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5897 /* Clean up. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5898 fn_png_destroy_read_struct (&png_ptr, &info_ptr, &end_info); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5899 xfree (rows); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5900 xfree (pixels); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5901 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5902 img->width = width; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5903 img->height = height; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5904 |
63323
ccf928f0383c
(x_create_x_image_and_pixmap) [HAVE_NTGUI]: Cast 4th arg
Eli Zaretskii <eliz@gnu.org>
parents:
63112
diff
changeset
|
5905 /* Maybe fill in the background field while we have ximg handy. |
ccf928f0383c
(x_create_x_image_and_pixmap) [HAVE_NTGUI]: Cast 4th arg
Eli Zaretskii <eliz@gnu.org>
parents:
63112
diff
changeset
|
5906 Casting avoids a GCC warning. */ |
ccf928f0383c
(x_create_x_image_and_pixmap) [HAVE_NTGUI]: Cast 4th arg
Eli Zaretskii <eliz@gnu.org>
parents:
63112
diff
changeset
|
5907 IMAGE_BACKGROUND (img, f, (XImagePtr_or_DC)ximg); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5908 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5909 /* Put the image into the pixmap, then free the X image and its buffer. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5910 x_put_x_image (f, ximg, img->pixmap, width, height); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5911 x_destroy_x_image (ximg); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5912 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5913 /* Same for the mask. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5914 if (mask_img) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5915 { |
63323
ccf928f0383c
(x_create_x_image_and_pixmap) [HAVE_NTGUI]: Cast 4th arg
Eli Zaretskii <eliz@gnu.org>
parents:
63112
diff
changeset
|
5916 /* Fill in the background_transparent field while we have the |
ccf928f0383c
(x_create_x_image_and_pixmap) [HAVE_NTGUI]: Cast 4th arg
Eli Zaretskii <eliz@gnu.org>
parents:
63112
diff
changeset
|
5917 mask handy. Casting avoids a GCC warning. */ |
ccf928f0383c
(x_create_x_image_and_pixmap) [HAVE_NTGUI]: Cast 4th arg
Eli Zaretskii <eliz@gnu.org>
parents:
63112
diff
changeset
|
5918 image_background_transparent (img, f, (XImagePtr_or_DC)mask_img); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5919 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5920 x_put_x_image (f, mask_img, img->mask, img->width, img->height); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5921 x_destroy_x_image (mask_img); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5922 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5923 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5924 return 1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5925 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5926 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5927 #else /* HAVE_PNG */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5928 |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
5929 #ifdef HAVE_NS |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
5930 static int |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
5931 png_load (struct frame *f, struct image *img) |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
5932 { |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
5933 return ns_load_image(f, img, |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
5934 image_spec_value (img->spec, QCfile, NULL), |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
5935 image_spec_value (img->spec, QCdata, NULL)); |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
5936 } |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
5937 #endif /* HAVE_NS */ |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
5938 |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
5939 |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5940 #endif /* !HAVE_PNG */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5941 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5942 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5943 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5944 /*********************************************************************** |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5945 JPEG |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5946 ***********************************************************************/ |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5947 |
97043
9592c50233ab
Remove support for Mac Carbon.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
97034
diff
changeset
|
5948 #if defined (HAVE_JPEG) || defined (HAVE_NS) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5949 |
109100
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
5950 static int jpeg_image_p (Lisp_Object object); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
5951 static int jpeg_load (struct frame *f, struct image *img); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5952 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5953 /* The symbol `jpeg' identifying images of this type. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5954 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5955 Lisp_Object Qjpeg; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5956 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5957 /* Indices of image specification fields in gs_format, below. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5958 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5959 enum jpeg_keyword_index |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5960 { |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5961 JPEG_TYPE, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5962 JPEG_DATA, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5963 JPEG_FILE, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5964 JPEG_ASCENT, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5965 JPEG_MARGIN, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5966 JPEG_RELIEF, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5967 JPEG_ALGORITHM, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5968 JPEG_HEURISTIC_MASK, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5969 JPEG_MASK, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5970 JPEG_BACKGROUND, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5971 JPEG_LAST |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5972 }; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5973 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5974 /* Vector of image_keyword structures describing the format |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5975 of valid user-defined image specifications. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5976 |
105959
ba3ffbd9c422
* process.c (ifflag_def): Make flag_sym constant.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
105877
diff
changeset
|
5977 static const struct image_keyword jpeg_format[JPEG_LAST] = |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5978 { |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5979 {":type", IMAGE_SYMBOL_VALUE, 1}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5980 {":data", IMAGE_STRING_VALUE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5981 {":file", IMAGE_STRING_VALUE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5982 {":ascent", IMAGE_ASCENT_VALUE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5983 {":margin", IMAGE_POSITIVE_INTEGER_VALUE_OR_PAIR, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5984 {":relief", IMAGE_INTEGER_VALUE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5985 {":conversions", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5986 {":heuristic-mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5987 {":mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5988 {":background", IMAGE_STRING_OR_NIL_VALUE, 0} |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5989 }; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5990 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5991 /* Structure describing the image type `jpeg'. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5992 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
5993 static struct image_type jpeg_type = |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5994 { |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5995 &Qjpeg, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5996 jpeg_image_p, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5997 jpeg_load, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5998 x_clear_image, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
5999 NULL |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6000 }; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6001 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6002 /* Return non-zero if OBJECT is a valid JPEG image specification. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6003 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6004 static int |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
6005 jpeg_image_p (Lisp_Object object) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6006 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6007 struct image_keyword fmt[JPEG_LAST]; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6008 |
109165
750db9f3e6d8
Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents:
109160
diff
changeset
|
6009 memcpy (fmt, jpeg_format, sizeof fmt); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6010 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6011 if (!parse_image_spec (object, fmt, JPEG_LAST, Qjpeg)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6012 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6013 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6014 /* Must specify either the :data or :file keyword. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6015 return fmt[JPEG_FILE].count + fmt[JPEG_DATA].count == 1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6016 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6017 |
97043
9592c50233ab
Remove support for Mac Carbon.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
97034
diff
changeset
|
6018 #endif /* HAVE_JPEG || HAVE_NS */ |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6019 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6020 #ifdef HAVE_JPEG |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6021 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6022 /* Work around a warning about HAVE_STDLIB_H being redefined in |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6023 jconfig.h. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6024 #ifdef HAVE_STDLIB_H |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6025 #define HAVE_STDLIB_H_1 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6026 #undef HAVE_STDLIB_H |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6027 #endif /* HAVE_STLIB_H */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6028 |
59073
3501c078df60
(__WIN32__) [HAVE_NTGUI]: Define for correct behaviour of JPEG library.
Jason Rumney <jasonr@gnu.org>
parents:
58846
diff
changeset
|
6029 #if defined (HAVE_NTGUI) && !defined (__WIN32__) |
63112 | 6030 /* In older releases of the jpeg library, jpeglib.h will define boolean |
6031 differently depending on __WIN32__, so make sure it is defined. */ | |
59073
3501c078df60
(__WIN32__) [HAVE_NTGUI]: Define for correct behaviour of JPEG library.
Jason Rumney <jasonr@gnu.org>
parents:
58846
diff
changeset
|
6032 #define __WIN32__ 1 |
3501c078df60
(__WIN32__) [HAVE_NTGUI]: Define for correct behaviour of JPEG library.
Jason Rumney <jasonr@gnu.org>
parents:
58846
diff
changeset
|
6033 #endif |
3501c078df60
(__WIN32__) [HAVE_NTGUI]: Define for correct behaviour of JPEG library.
Jason Rumney <jasonr@gnu.org>
parents:
58846
diff
changeset
|
6034 |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6035 #include <jpeglib.h> |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6036 #include <jerror.h> |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6037 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6038 #ifdef HAVE_STLIB_H_1 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6039 #define HAVE_STDLIB_H 1 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6040 #endif |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6041 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6042 #ifdef HAVE_NTGUI |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6043 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6044 /* JPEG library details. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6045 DEF_IMGLIB_FN (jpeg_CreateDecompress); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6046 DEF_IMGLIB_FN (jpeg_start_decompress); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6047 DEF_IMGLIB_FN (jpeg_finish_decompress); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6048 DEF_IMGLIB_FN (jpeg_destroy_decompress); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6049 DEF_IMGLIB_FN (jpeg_read_header); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6050 DEF_IMGLIB_FN (jpeg_read_scanlines); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6051 DEF_IMGLIB_FN (jpeg_std_error); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6052 DEF_IMGLIB_FN (jpeg_resync_to_restart); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6053 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6054 static int |
56104
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
6055 init_jpeg_functions (Lisp_Object libraries) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6056 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6057 HMODULE library; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6058 |
56104
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
6059 if (!(library = w32_delayed_load (libraries, Qjpeg))) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6060 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6061 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6062 LOAD_IMGLIB_FN (library, jpeg_finish_decompress); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6063 LOAD_IMGLIB_FN (library, jpeg_read_scanlines); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6064 LOAD_IMGLIB_FN (library, jpeg_start_decompress); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6065 LOAD_IMGLIB_FN (library, jpeg_read_header); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6066 LOAD_IMGLIB_FN (library, jpeg_CreateDecompress); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6067 LOAD_IMGLIB_FN (library, jpeg_destroy_decompress); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6068 LOAD_IMGLIB_FN (library, jpeg_std_error); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6069 LOAD_IMGLIB_FN (library, jpeg_resync_to_restart); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6070 return 1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6071 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6072 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6073 /* Wrapper since we can't directly assign the function pointer |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6074 to another function pointer that was declared more completely easily. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6075 static boolean |
109480
d12162869c07
Convert some more functions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109302
diff
changeset
|
6076 jpeg_resync_to_restart_wrapper (j_decompress_ptr cinfo, int desired) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6077 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6078 return fn_jpeg_resync_to_restart (cinfo, desired); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6079 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6080 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6081 #else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6082 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6083 #define fn_jpeg_CreateDecompress(a,b,c) jpeg_create_decompress(a) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6084 #define fn_jpeg_start_decompress jpeg_start_decompress |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6085 #define fn_jpeg_finish_decompress jpeg_finish_decompress |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6086 #define fn_jpeg_destroy_decompress jpeg_destroy_decompress |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6087 #define fn_jpeg_read_header jpeg_read_header |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6088 #define fn_jpeg_read_scanlines jpeg_read_scanlines |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6089 #define fn_jpeg_std_error jpeg_std_error |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6090 #define jpeg_resync_to_restart_wrapper jpeg_resync_to_restart |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6091 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6092 #endif /* HAVE_NTGUI */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6093 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6094 struct my_jpeg_error_mgr |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6095 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6096 struct jpeg_error_mgr pub; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6097 jmp_buf setjmp_buffer; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6098 }; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6099 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6100 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6101 static void |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
6102 my_error_exit (j_common_ptr cinfo) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6103 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6104 struct my_jpeg_error_mgr *mgr = (struct my_jpeg_error_mgr *) cinfo->err; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6105 longjmp (mgr->setjmp_buffer, 1); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6106 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6107 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6108 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6109 /* Init source method for JPEG data source manager. Called by |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6110 jpeg_read_header() before any data is actually read. See |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6111 libjpeg.doc from the JPEG lib distribution. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6112 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6113 static void |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
6114 our_common_init_source (j_decompress_ptr cinfo) |
66013
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6115 { |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6116 } |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6117 |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6118 |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6119 /* Method to terminate data source. Called by |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6120 jpeg_finish_decompress() after all data has been processed. */ |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6121 |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6122 static void |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
6123 our_common_term_source (j_decompress_ptr cinfo) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6124 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6125 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6126 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6127 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6128 /* Fill input buffer method for JPEG data source manager. Called |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6129 whenever more data is needed. We read the whole image in one step, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6130 so this only adds a fake end of input marker at the end. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6131 |
78863
abdfd1f5b491
(our_memory_buffer): Renamed from omfib_buffer.
Richard M. Stallman <rms@gnu.org>
parents:
78788
diff
changeset
|
6132 static JOCTET our_memory_buffer[2]; |
78788
c077ece08ff6
(our_memory_fill_input_buffer) <buffer>: Move to file scope and rename
Glenn Morris <rgm@gnu.org>
parents:
78746
diff
changeset
|
6133 |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6134 static boolean |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
6135 our_memory_fill_input_buffer (j_decompress_ptr cinfo) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6136 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6137 /* Insert a fake EOI marker. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6138 struct jpeg_source_mgr *src = cinfo->src; |
78788
c077ece08ff6
(our_memory_fill_input_buffer) <buffer>: Move to file scope and rename
Glenn Morris <rgm@gnu.org>
parents:
78746
diff
changeset
|
6139 |
78863
abdfd1f5b491
(our_memory_buffer): Renamed from omfib_buffer.
Richard M. Stallman <rms@gnu.org>
parents:
78788
diff
changeset
|
6140 our_memory_buffer[0] = (JOCTET) 0xFF; |
abdfd1f5b491
(our_memory_buffer): Renamed from omfib_buffer.
Richard M. Stallman <rms@gnu.org>
parents:
78788
diff
changeset
|
6141 our_memory_buffer[1] = (JOCTET) JPEG_EOI; |
abdfd1f5b491
(our_memory_buffer): Renamed from omfib_buffer.
Richard M. Stallman <rms@gnu.org>
parents:
78788
diff
changeset
|
6142 |
abdfd1f5b491
(our_memory_buffer): Renamed from omfib_buffer.
Richard M. Stallman <rms@gnu.org>
parents:
78788
diff
changeset
|
6143 src->next_input_byte = our_memory_buffer; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6144 src->bytes_in_buffer = 2; |
58846
4d7444f1a64c
(our_fill_input_buffer, jpeg_load, CHECK_LIB_AVAILABLE, init_image):
Richard M. Stallman <rms@gnu.org>
parents:
58752
diff
changeset
|
6145 return 1; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6146 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6147 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6148 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6149 /* Method to skip over NUM_BYTES bytes in the image data. CINFO->src |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6150 is the JPEG data source manager. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6151 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6152 static void |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
6153 our_memory_skip_input_data (j_decompress_ptr cinfo, long int num_bytes) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6154 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6155 struct jpeg_source_mgr *src = (struct jpeg_source_mgr *) cinfo->src; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6156 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6157 if (src) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6158 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6159 if (num_bytes > src->bytes_in_buffer) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6160 ERREXIT (cinfo, JERR_INPUT_EOF); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6161 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6162 src->bytes_in_buffer -= num_bytes; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6163 src->next_input_byte += num_bytes; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6164 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6165 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6166 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6167 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6168 /* Set up the JPEG lib for reading an image from DATA which contains |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6169 LEN bytes. CINFO is the decompression info structure created for |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6170 reading the image. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6171 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6172 static void |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
6173 jpeg_memory_src (j_decompress_ptr cinfo, JOCTET *data, unsigned int len) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6174 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6175 struct jpeg_source_mgr *src; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6176 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6177 if (cinfo->src == NULL) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6178 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6179 /* First time for this JPEG object? */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6180 cinfo->src = (struct jpeg_source_mgr *) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6181 (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_PERMANENT, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6182 sizeof (struct jpeg_source_mgr)); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6183 src = (struct jpeg_source_mgr *) cinfo->src; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6184 src->next_input_byte = data; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6185 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6186 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6187 src = (struct jpeg_source_mgr *) cinfo->src; |
66013
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6188 src->init_source = our_common_init_source; |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6189 src->fill_input_buffer = our_memory_fill_input_buffer; |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6190 src->skip_input_data = our_memory_skip_input_data; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6191 src->resync_to_restart = jpeg_resync_to_restart_wrapper; /* Use default method. */ |
66013
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6192 src->term_source = our_common_term_source; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6193 src->bytes_in_buffer = len; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6194 src->next_input_byte = data; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6195 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6196 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6197 |
66013
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6198 struct jpeg_stdio_mgr |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6199 { |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6200 struct jpeg_source_mgr mgr; |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6201 boolean finished; |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6202 FILE *file; |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6203 JOCTET *buffer; |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6204 }; |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6205 |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6206 |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6207 /* Size of buffer to read JPEG from file. |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6208 Not too big, as we want to use alloc_small. */ |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6209 #define JPEG_STDIO_BUFFER_SIZE 8192 |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6210 |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6211 |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6212 /* Fill input buffer method for JPEG data source manager. Called |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6213 whenever more data is needed. The data is read from a FILE *. */ |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6214 |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6215 static boolean |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
6216 our_stdio_fill_input_buffer (j_decompress_ptr cinfo) |
66013
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6217 { |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6218 struct jpeg_stdio_mgr *src; |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6219 |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6220 src = (struct jpeg_stdio_mgr *) cinfo->src; |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6221 if (!src->finished) |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6222 { |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6223 size_t bytes; |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6224 |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6225 bytes = fread (src->buffer, 1, JPEG_STDIO_BUFFER_SIZE, src->file); |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6226 if (bytes > 0) |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6227 src->mgr.bytes_in_buffer = bytes; |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6228 else |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6229 { |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6230 WARNMS (cinfo, JWRN_JPEG_EOF); |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6231 src->finished = 1; |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6232 src->buffer[0] = (JOCTET) 0xFF; |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6233 src->buffer[1] = (JOCTET) JPEG_EOI; |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6234 src->mgr.bytes_in_buffer = 2; |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6235 } |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6236 src->mgr.next_input_byte = src->buffer; |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6237 } |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6238 |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6239 return 1; |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6240 } |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6241 |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6242 |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6243 /* Method to skip over NUM_BYTES bytes in the image data. CINFO->src |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6244 is the JPEG data source manager. */ |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6245 |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6246 static void |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
6247 our_stdio_skip_input_data (j_decompress_ptr cinfo, long int num_bytes) |
66013
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6248 { |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6249 struct jpeg_stdio_mgr *src; |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6250 src = (struct jpeg_stdio_mgr *) cinfo->src; |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6251 |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6252 while (num_bytes > 0 && !src->finished) |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6253 { |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6254 if (num_bytes <= src->mgr.bytes_in_buffer) |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6255 { |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6256 src->mgr.bytes_in_buffer -= num_bytes; |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6257 src->mgr.next_input_byte += num_bytes; |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6258 break; |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6259 } |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6260 else |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6261 { |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6262 num_bytes -= src->mgr.bytes_in_buffer; |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6263 src->mgr.bytes_in_buffer = 0; |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6264 src->mgr.next_input_byte = NULL; |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6265 |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6266 our_stdio_fill_input_buffer (cinfo); |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6267 } |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6268 } |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6269 } |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6270 |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6271 |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6272 /* Set up the JPEG lib for reading an image from a FILE *. |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6273 CINFO is the decompression info structure created for |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6274 reading the image. */ |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6275 |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6276 static void |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
6277 jpeg_file_src (j_decompress_ptr cinfo, FILE *fp) |
66013
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6278 { |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6279 struct jpeg_stdio_mgr *src; |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6280 |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6281 if (cinfo->src != NULL) |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6282 src = (struct jpeg_stdio_mgr *) cinfo->src; |
66013
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6283 else |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6284 { |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6285 /* First time for this JPEG object? */ |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6286 cinfo->src = (struct jpeg_source_mgr *) |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6287 (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_PERMANENT, |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6288 sizeof (struct jpeg_stdio_mgr)); |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6289 src = (struct jpeg_stdio_mgr *) cinfo->src; |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6290 src->buffer = (JOCTET *) |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6291 (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_PERMANENT, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6292 JPEG_STDIO_BUFFER_SIZE); |
66013
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6293 } |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6294 |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6295 src->file = fp; |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6296 src->finished = 0; |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6297 src->mgr.init_source = our_common_init_source; |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6298 src->mgr.fill_input_buffer = our_stdio_fill_input_buffer; |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6299 src->mgr.skip_input_data = our_stdio_skip_input_data; |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6300 src->mgr.resync_to_restart = jpeg_resync_to_restart_wrapper; /* Use default method. */ |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6301 src->mgr.term_source = our_common_term_source; |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6302 src->mgr.bytes_in_buffer = 0; |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6303 src->mgr.next_input_byte = NULL; |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6304 } |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6305 |
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6306 |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6307 /* Load image IMG for use on frame F. Patterned after example.c |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6308 from the JPEG lib. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6309 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6310 static int |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
6311 jpeg_load (struct frame *f, struct image *img) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6312 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6313 struct jpeg_decompress_struct cinfo; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6314 struct my_jpeg_error_mgr mgr; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6315 Lisp_Object file, specified_file; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6316 Lisp_Object specified_data; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6317 FILE * volatile fp = NULL; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6318 JSAMPARRAY buffer; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6319 int row_stride, x, y; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6320 XImagePtr ximg = NULL; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6321 int rc; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6322 unsigned long *colors; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6323 int width, height; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6324 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6325 /* Open the JPEG file. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6326 specified_file = image_spec_value (img->spec, QCfile, NULL); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6327 specified_data = image_spec_value (img->spec, QCdata, NULL); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6328 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6329 if (NILP (specified_data)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6330 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6331 file = x_find_image_file (specified_file); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6332 if (!STRINGP (file)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6333 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6334 image_error ("Cannot find image file `%s'", specified_file, Qnil); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6335 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6336 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6337 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6338 fp = fopen (SDATA (file), "rb"); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6339 if (fp == NULL) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6340 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6341 image_error ("Cannot open `%s'", file, Qnil); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6342 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6343 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6344 } |
110184
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
6345 else if (!STRINGP (specified_data)) |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
6346 { |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
6347 image_error ("Invalid image data `%s'", specified_data, Qnil); |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
6348 return 0; |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
6349 } |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6350 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6351 /* Customize libjpeg's error handling to call my_error_exit when an |
63323
ccf928f0383c
(x_create_x_image_and_pixmap) [HAVE_NTGUI]: Cast 4th arg
Eli Zaretskii <eliz@gnu.org>
parents:
63112
diff
changeset
|
6352 error is detected. This function will perform a longjmp. |
ccf928f0383c
(x_create_x_image_and_pixmap) [HAVE_NTGUI]: Cast 4th arg
Eli Zaretskii <eliz@gnu.org>
parents:
63112
diff
changeset
|
6353 Casting return value avoids a GCC warning on W32. */ |
ccf928f0383c
(x_create_x_image_and_pixmap) [HAVE_NTGUI]: Cast 4th arg
Eli Zaretskii <eliz@gnu.org>
parents:
63112
diff
changeset
|
6354 cinfo.err = (struct jpeg_error_mgr *)fn_jpeg_std_error (&mgr.pub); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6355 mgr.pub.error_exit = my_error_exit; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6356 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6357 if ((rc = setjmp (mgr.setjmp_buffer)) != 0) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6358 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6359 if (rc == 1) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6360 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6361 /* Called from my_error_exit. Display a JPEG error. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6362 char buffer[JMSG_LENGTH_MAX]; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6363 cinfo.err->format_message ((j_common_ptr) &cinfo, buffer); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6364 image_error ("Error reading JPEG image `%s': %s", img->spec, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6365 build_string (buffer)); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6366 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6367 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6368 /* Close the input file and destroy the JPEG object. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6369 if (fp) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6370 fclose ((FILE *) fp); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6371 fn_jpeg_destroy_decompress (&cinfo); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6372 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6373 /* If we already have an XImage, free that. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6374 x_destroy_x_image (ximg); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6375 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6376 /* Free pixmap and colors. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6377 x_clear_image (f, img); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6378 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6379 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6380 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6381 /* Create the JPEG decompression object. Let it read from fp. |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6382 Read the JPEG image header. */ |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6383 fn_jpeg_CreateDecompress (&cinfo, JPEG_LIB_VERSION, sizeof (cinfo)); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6384 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6385 if (NILP (specified_data)) |
66013
1de4729d29d6
(fn_jpeg_stdio_src): Don't define it.
Juanma Barranquero <lekktu@gmail.com>
parents:
65764
diff
changeset
|
6386 jpeg_file_src (&cinfo, (FILE *) fp); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6387 else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6388 jpeg_memory_src (&cinfo, SDATA (specified_data), |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6389 SBYTES (specified_data)); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6390 |
58846
4d7444f1a64c
(our_fill_input_buffer, jpeg_load, CHECK_LIB_AVAILABLE, init_image):
Richard M. Stallman <rms@gnu.org>
parents:
58752
diff
changeset
|
6391 fn_jpeg_read_header (&cinfo, 1); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6392 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6393 /* Customize decompression so that color quantization will be used. |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6394 Start decompression. */ |
58846
4d7444f1a64c
(our_fill_input_buffer, jpeg_load, CHECK_LIB_AVAILABLE, init_image):
Richard M. Stallman <rms@gnu.org>
parents:
58752
diff
changeset
|
6395 cinfo.quantize_colors = 1; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6396 fn_jpeg_start_decompress (&cinfo); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6397 width = img->width = cinfo.output_width; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6398 height = img->height = cinfo.output_height; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6399 |
66195
ad1acaef1abb
* image.c (Vmax_image_size): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
66013
diff
changeset
|
6400 if (!check_image_size (f, width, height)) |
ad1acaef1abb
* image.c (Vmax_image_size): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
66013
diff
changeset
|
6401 { |
102392
689fbe81edc4
(xbm_read_bitmap_data, png_load, svg_load_image):
Jason Rumney <jasonr@gnu.org>
parents:
101838
diff
changeset
|
6402 image_error ("Invalid image size (see `max-image-size')", Qnil, Qnil); |
66195
ad1acaef1abb
* image.c (Vmax_image_size): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
66013
diff
changeset
|
6403 longjmp (mgr.setjmp_buffer, 2); |
ad1acaef1abb
* image.c (Vmax_image_size): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
66013
diff
changeset
|
6404 } |
ad1acaef1abb
* image.c (Vmax_image_size): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
66013
diff
changeset
|
6405 |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6406 /* Create X image and pixmap. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6407 if (!x_create_x_image_and_pixmap (f, width, height, 0, &ximg, &img->pixmap)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6408 longjmp (mgr.setjmp_buffer, 2); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6409 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6410 /* Allocate colors. When color quantization is used, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6411 cinfo.actual_number_of_colors has been set with the number of |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6412 colors generated, and cinfo.colormap is a two-dimensional array |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6413 of color indices in the range 0..cinfo.actual_number_of_colors. |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6414 No more than 255 colors will be generated. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6415 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6416 int i, ir, ig, ib; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6417 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6418 if (cinfo.out_color_components > 2) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6419 ir = 0, ig = 1, ib = 2; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6420 else if (cinfo.out_color_components > 1) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6421 ir = 0, ig = 1, ib = 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6422 else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6423 ir = 0, ig = 0, ib = 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6424 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6425 /* Use the color table mechanism because it handles colors that |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6426 cannot be allocated nicely. Such colors will be replaced with |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6427 a default color, and we don't have to care about which colors |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6428 can be freed safely, and which can't. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6429 init_color_table (); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6430 colors = (unsigned long *) alloca (cinfo.actual_number_of_colors |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6431 * sizeof *colors); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6432 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6433 for (i = 0; i < cinfo.actual_number_of_colors; ++i) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6434 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6435 /* Multiply RGB values with 255 because X expects RGB values |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6436 in the range 0..0xffff. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6437 int r = cinfo.colormap[ir][i] << 8; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6438 int g = cinfo.colormap[ig][i] << 8; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6439 int b = cinfo.colormap[ib][i] << 8; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6440 colors[i] = lookup_rgb_color (f, r, g, b); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6441 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6442 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6443 #ifdef COLOR_TABLE_SUPPORT |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6444 /* Remember those colors actually allocated. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6445 img->colors = colors_in_color_table (&img->ncolors); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6446 free_color_table (); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6447 #endif /* COLOR_TABLE_SUPPORT */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6448 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6449 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6450 /* Read pixels. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6451 row_stride = width * cinfo.output_components; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6452 buffer = cinfo.mem->alloc_sarray ((j_common_ptr) &cinfo, JPOOL_IMAGE, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6453 row_stride, 1); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6454 for (y = 0; y < height; ++y) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6455 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6456 fn_jpeg_read_scanlines (&cinfo, buffer, 1); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6457 for (x = 0; x < cinfo.output_width; ++x) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6458 XPutPixel (ximg, x, y, colors[buffer[0][x]]); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6459 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6460 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6461 /* Clean up. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6462 fn_jpeg_finish_decompress (&cinfo); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6463 fn_jpeg_destroy_decompress (&cinfo); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6464 if (fp) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6465 fclose ((FILE *) fp); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6466 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6467 /* Maybe fill in the background field while we have ximg handy. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6468 if (NILP (image_spec_value (img->spec, QCbackground, NULL))) |
63323
ccf928f0383c
(x_create_x_image_and_pixmap) [HAVE_NTGUI]: Cast 4th arg
Eli Zaretskii <eliz@gnu.org>
parents:
63112
diff
changeset
|
6469 /* Casting avoids a GCC warning. */ |
ccf928f0383c
(x_create_x_image_and_pixmap) [HAVE_NTGUI]: Cast 4th arg
Eli Zaretskii <eliz@gnu.org>
parents:
63112
diff
changeset
|
6470 IMAGE_BACKGROUND (img, f, (XImagePtr_or_DC)ximg); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6471 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6472 /* Put the image into the pixmap. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6473 x_put_x_image (f, ximg, img->pixmap, width, height); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6474 x_destroy_x_image (ximg); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6475 return 1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6476 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6477 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6478 #else /* HAVE_JPEG */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6479 |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
6480 #ifdef HAVE_NS |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
6481 static int |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
6482 jpeg_load (struct frame *f, struct image *img) |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
6483 { |
109160
f8660b83cdbf
Fix whitespace to follow coding guidelines.
Juanma Barranquero <lekktu@gmail.com>
parents:
109144
diff
changeset
|
6484 return ns_load_image (f, img, |
f8660b83cdbf
Fix whitespace to follow coding guidelines.
Juanma Barranquero <lekktu@gmail.com>
parents:
109144
diff
changeset
|
6485 image_spec_value (img->spec, QCfile, NULL), |
f8660b83cdbf
Fix whitespace to follow coding guidelines.
Juanma Barranquero <lekktu@gmail.com>
parents:
109144
diff
changeset
|
6486 image_spec_value (img->spec, QCdata, NULL)); |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
6487 } |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
6488 #endif /* HAVE_NS */ |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
6489 |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6490 #endif /* !HAVE_JPEG */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6491 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6492 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6493 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6494 /*********************************************************************** |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6495 TIFF |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6496 ***********************************************************************/ |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6497 |
97043
9592c50233ab
Remove support for Mac Carbon.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
97034
diff
changeset
|
6498 #if defined (HAVE_TIFF) || defined (HAVE_NS) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6499 |
109100
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
6500 static int tiff_image_p (Lisp_Object object); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
6501 static int tiff_load (struct frame *f, struct image *img); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6502 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6503 /* The symbol `tiff' identifying images of this type. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6504 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6505 Lisp_Object Qtiff; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6506 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6507 /* Indices of image specification fields in tiff_format, below. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6508 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6509 enum tiff_keyword_index |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6510 { |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6511 TIFF_TYPE, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6512 TIFF_DATA, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6513 TIFF_FILE, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6514 TIFF_ASCENT, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6515 TIFF_MARGIN, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6516 TIFF_RELIEF, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6517 TIFF_ALGORITHM, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6518 TIFF_HEURISTIC_MASK, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6519 TIFF_MASK, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6520 TIFF_BACKGROUND, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6521 TIFF_INDEX, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6522 TIFF_LAST |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6523 }; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6524 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6525 /* Vector of image_keyword structures describing the format |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6526 of valid user-defined image specifications. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6527 |
105959
ba3ffbd9c422
* process.c (ifflag_def): Make flag_sym constant.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
105877
diff
changeset
|
6528 static const struct image_keyword tiff_format[TIFF_LAST] = |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6529 { |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6530 {":type", IMAGE_SYMBOL_VALUE, 1}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6531 {":data", IMAGE_STRING_VALUE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6532 {":file", IMAGE_STRING_VALUE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6533 {":ascent", IMAGE_ASCENT_VALUE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6534 {":margin", IMAGE_POSITIVE_INTEGER_VALUE_OR_PAIR, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6535 {":relief", IMAGE_INTEGER_VALUE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6536 {":conversions", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6537 {":heuristic-mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6538 {":mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6539 {":background", IMAGE_STRING_OR_NIL_VALUE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6540 {":index", IMAGE_NON_NEGATIVE_INTEGER_VALUE, 0} |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6541 }; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6542 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6543 /* Structure describing the image type `tiff'. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6544 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6545 static struct image_type tiff_type = |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6546 { |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6547 &Qtiff, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6548 tiff_image_p, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6549 tiff_load, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6550 x_clear_image, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6551 NULL |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6552 }; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6553 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6554 /* Return non-zero if OBJECT is a valid TIFF image specification. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6555 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6556 static int |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
6557 tiff_image_p (Lisp_Object object) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6558 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6559 struct image_keyword fmt[TIFF_LAST]; |
109165
750db9f3e6d8
Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents:
109160
diff
changeset
|
6560 memcpy (fmt, tiff_format, sizeof fmt); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6561 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6562 if (!parse_image_spec (object, fmt, TIFF_LAST, Qtiff)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6563 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6564 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6565 /* Must specify either the :data or :file keyword. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6566 return fmt[TIFF_FILE].count + fmt[TIFF_DATA].count == 1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6567 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6568 |
97043
9592c50233ab
Remove support for Mac Carbon.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
97034
diff
changeset
|
6569 #endif /* HAVE_TIFF || HAVE_NS */ |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6570 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6571 #ifdef HAVE_TIFF |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6572 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6573 #include <tiffio.h> |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6574 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6575 #ifdef HAVE_NTGUI |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6576 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6577 /* TIFF library details. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6578 DEF_IMGLIB_FN (TIFFSetErrorHandler); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6579 DEF_IMGLIB_FN (TIFFSetWarningHandler); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6580 DEF_IMGLIB_FN (TIFFOpen); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6581 DEF_IMGLIB_FN (TIFFClientOpen); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6582 DEF_IMGLIB_FN (TIFFGetField); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6583 DEF_IMGLIB_FN (TIFFReadRGBAImage); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6584 DEF_IMGLIB_FN (TIFFClose); |
97635
eb8c3a9e1565
(enum tiff_keyword_index, tiff_format): Add :index keyword.
Jason Rumney <jasonr@gnu.org>
parents:
97043
diff
changeset
|
6585 DEF_IMGLIB_FN (TIFFSetDirectory); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6586 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6587 static int |
56104
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
6588 init_tiff_functions (Lisp_Object libraries) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6589 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6590 HMODULE library; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6591 |
56104
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
6592 if (!(library = w32_delayed_load (libraries, Qtiff))) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6593 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6594 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6595 LOAD_IMGLIB_FN (library, TIFFSetErrorHandler); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6596 LOAD_IMGLIB_FN (library, TIFFSetWarningHandler); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6597 LOAD_IMGLIB_FN (library, TIFFOpen); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6598 LOAD_IMGLIB_FN (library, TIFFClientOpen); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6599 LOAD_IMGLIB_FN (library, TIFFGetField); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6600 LOAD_IMGLIB_FN (library, TIFFReadRGBAImage); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6601 LOAD_IMGLIB_FN (library, TIFFClose); |
97635
eb8c3a9e1565
(enum tiff_keyword_index, tiff_format): Add :index keyword.
Jason Rumney <jasonr@gnu.org>
parents:
97043
diff
changeset
|
6602 LOAD_IMGLIB_FN (library, TIFFSetDirectory); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6603 return 1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6604 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6605 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6606 #else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6607 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6608 #define fn_TIFFSetErrorHandler TIFFSetErrorHandler |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6609 #define fn_TIFFSetWarningHandler TIFFSetWarningHandler |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6610 #define fn_TIFFOpen TIFFOpen |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6611 #define fn_TIFFClientOpen TIFFClientOpen |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6612 #define fn_TIFFGetField TIFFGetField |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6613 #define fn_TIFFReadRGBAImage TIFFReadRGBAImage |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6614 #define fn_TIFFClose TIFFClose |
97635
eb8c3a9e1565
(enum tiff_keyword_index, tiff_format): Add :index keyword.
Jason Rumney <jasonr@gnu.org>
parents:
97043
diff
changeset
|
6615 #define fn_TIFFSetDirectory TIFFSetDirectory |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6616 #endif /* HAVE_NTGUI */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6617 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6618 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6619 /* Reading from a memory buffer for TIFF images Based on the PNG |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6620 memory source, but we have to provide a lot of extra functions. |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6621 Blah. |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6622 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6623 We really only need to implement read and seek, but I am not |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6624 convinced that the TIFF library is smart enough not to destroy |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6625 itself if we only hand it the function pointers we need to |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6626 override. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6627 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6628 typedef struct |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6629 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6630 unsigned char *bytes; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6631 size_t len; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6632 int index; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6633 } |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6634 tiff_memory_source; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6635 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6636 static size_t |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
6637 tiff_read_from_memory (thandle_t data, tdata_t buf, tsize_t size) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6638 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6639 tiff_memory_source *src = (tiff_memory_source *) data; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6640 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6641 if (size > src->len - src->index) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6642 return (size_t) -1; |
109165
750db9f3e6d8
Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents:
109160
diff
changeset
|
6643 memcpy (buf, src->bytes + src->index, size); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6644 src->index += size; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6645 return size; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6646 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6647 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6648 static size_t |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
6649 tiff_write_from_memory (thandle_t data, tdata_t buf, tsize_t size) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6650 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6651 return (size_t) -1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6652 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6653 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6654 static toff_t |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
6655 tiff_seek_in_memory (thandle_t data, toff_t off, int whence) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6656 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6657 tiff_memory_source *src = (tiff_memory_source *) data; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6658 int idx; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6659 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6660 switch (whence) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6661 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6662 case SEEK_SET: /* Go from beginning of source. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6663 idx = off; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6664 break; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6665 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6666 case SEEK_END: /* Go from end of source. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6667 idx = src->len + off; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6668 break; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6669 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6670 case SEEK_CUR: /* Go from current position. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6671 idx = src->index + off; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6672 break; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6673 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6674 default: /* Invalid `whence'. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6675 return -1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6676 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6677 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6678 if (idx > src->len || idx < 0) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6679 return -1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6680 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6681 src->index = idx; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6682 return src->index; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6683 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6684 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6685 static int |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
6686 tiff_close_memory (thandle_t data) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6687 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6688 /* NOOP */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6689 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6690 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6691 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6692 static int |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
6693 tiff_mmap_memory (thandle_t data, tdata_t *pbase, toff_t *psize) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6694 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6695 /* It is already _IN_ memory. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6696 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6697 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6698 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6699 static void |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
6700 tiff_unmap_memory (thandle_t data, tdata_t base, toff_t size) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6701 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6702 /* We don't need to do this. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6703 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6704 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6705 static toff_t |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
6706 tiff_size_of_memory (thandle_t data) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6707 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6708 return ((tiff_memory_source *) data)->len; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6709 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6710 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6711 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6712 static void |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
6713 tiff_error_handler (const char *title, const char *format, va_list ap) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6714 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6715 char buf[512]; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6716 int len; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6717 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6718 len = sprintf (buf, "TIFF error: %s ", title); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6719 vsprintf (buf + len, format, ap); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6720 add_to_log (buf, Qnil, Qnil); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6721 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6722 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6723 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6724 static void |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
6725 tiff_warning_handler (const char *title, const char *format, va_list ap) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6726 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6727 char buf[512]; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6728 int len; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6729 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6730 len = sprintf (buf, "TIFF warning: %s ", title); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6731 vsprintf (buf + len, format, ap); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6732 add_to_log (buf, Qnil, Qnil); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6733 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6734 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6735 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6736 /* Load TIFF image IMG for use on frame F. Value is non-zero if |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6737 successful. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6738 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6739 static int |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
6740 tiff_load (struct frame *f, struct image *img) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6741 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6742 Lisp_Object file, specified_file; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6743 Lisp_Object specified_data; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6744 TIFF *tiff; |
97635
eb8c3a9e1565
(enum tiff_keyword_index, tiff_format): Add :index keyword.
Jason Rumney <jasonr@gnu.org>
parents:
97043
diff
changeset
|
6745 int width, height, x, y, count; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6746 uint32 *buf; |
97635
eb8c3a9e1565
(enum tiff_keyword_index, tiff_format): Add :index keyword.
Jason Rumney <jasonr@gnu.org>
parents:
97043
diff
changeset
|
6747 int rc, rc2; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6748 XImagePtr ximg; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6749 tiff_memory_source memsrc; |
97635
eb8c3a9e1565
(enum tiff_keyword_index, tiff_format): Add :index keyword.
Jason Rumney <jasonr@gnu.org>
parents:
97043
diff
changeset
|
6750 Lisp_Object image; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6751 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6752 specified_file = image_spec_value (img->spec, QCfile, NULL); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6753 specified_data = image_spec_value (img->spec, QCdata, NULL); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6754 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6755 fn_TIFFSetErrorHandler (tiff_error_handler); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6756 fn_TIFFSetWarningHandler (tiff_warning_handler); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6757 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6758 if (NILP (specified_data)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6759 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6760 /* Read from a file */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6761 file = x_find_image_file (specified_file); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6762 if (!STRINGP (file)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6763 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6764 image_error ("Cannot find image file `%s'", specified_file, Qnil); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6765 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6766 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6767 |
63323
ccf928f0383c
(x_create_x_image_and_pixmap) [HAVE_NTGUI]: Cast 4th arg
Eli Zaretskii <eliz@gnu.org>
parents:
63112
diff
changeset
|
6768 /* Try to open the image file. Casting return value avoids a |
ccf928f0383c
(x_create_x_image_and_pixmap) [HAVE_NTGUI]: Cast 4th arg
Eli Zaretskii <eliz@gnu.org>
parents:
63112
diff
changeset
|
6769 GCC warning on W32. */ |
ccf928f0383c
(x_create_x_image_and_pixmap) [HAVE_NTGUI]: Cast 4th arg
Eli Zaretskii <eliz@gnu.org>
parents:
63112
diff
changeset
|
6770 tiff = (TIFF *)fn_TIFFOpen (SDATA (file), "r"); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6771 if (tiff == NULL) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6772 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6773 image_error ("Cannot open `%s'", file, Qnil); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6774 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6775 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6776 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6777 else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6778 { |
110184
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
6779 if (!STRINGP (specified_data)) |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
6780 { |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
6781 image_error ("Invalid image data `%s'", specified_data, Qnil); |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
6782 return 0; |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
6783 } |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
6784 |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6785 /* Memory source! */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6786 memsrc.bytes = SDATA (specified_data); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6787 memsrc.len = SBYTES (specified_data); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6788 memsrc.index = 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6789 |
63323
ccf928f0383c
(x_create_x_image_and_pixmap) [HAVE_NTGUI]: Cast 4th arg
Eli Zaretskii <eliz@gnu.org>
parents:
63112
diff
changeset
|
6790 /* Casting return value avoids a GCC warning on W32. */ |
ccf928f0383c
(x_create_x_image_and_pixmap) [HAVE_NTGUI]: Cast 4th arg
Eli Zaretskii <eliz@gnu.org>
parents:
63112
diff
changeset
|
6791 tiff = (TIFF *)fn_TIFFClientOpen ("memory_source", "r", &memsrc, |
ccf928f0383c
(x_create_x_image_and_pixmap) [HAVE_NTGUI]: Cast 4th arg
Eli Zaretskii <eliz@gnu.org>
parents:
63112
diff
changeset
|
6792 (TIFFReadWriteProc) tiff_read_from_memory, |
ccf928f0383c
(x_create_x_image_and_pixmap) [HAVE_NTGUI]: Cast 4th arg
Eli Zaretskii <eliz@gnu.org>
parents:
63112
diff
changeset
|
6793 (TIFFReadWriteProc) tiff_write_from_memory, |
ccf928f0383c
(x_create_x_image_and_pixmap) [HAVE_NTGUI]: Cast 4th arg
Eli Zaretskii <eliz@gnu.org>
parents:
63112
diff
changeset
|
6794 tiff_seek_in_memory, |
ccf928f0383c
(x_create_x_image_and_pixmap) [HAVE_NTGUI]: Cast 4th arg
Eli Zaretskii <eliz@gnu.org>
parents:
63112
diff
changeset
|
6795 tiff_close_memory, |
ccf928f0383c
(x_create_x_image_and_pixmap) [HAVE_NTGUI]: Cast 4th arg
Eli Zaretskii <eliz@gnu.org>
parents:
63112
diff
changeset
|
6796 tiff_size_of_memory, |
ccf928f0383c
(x_create_x_image_and_pixmap) [HAVE_NTGUI]: Cast 4th arg
Eli Zaretskii <eliz@gnu.org>
parents:
63112
diff
changeset
|
6797 tiff_mmap_memory, |
ccf928f0383c
(x_create_x_image_and_pixmap) [HAVE_NTGUI]: Cast 4th arg
Eli Zaretskii <eliz@gnu.org>
parents:
63112
diff
changeset
|
6798 tiff_unmap_memory); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6799 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6800 if (!tiff) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6801 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6802 image_error ("Cannot open memory source for `%s'", img->spec, Qnil); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6803 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6804 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6805 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6806 |
97635
eb8c3a9e1565
(enum tiff_keyword_index, tiff_format): Add :index keyword.
Jason Rumney <jasonr@gnu.org>
parents:
97043
diff
changeset
|
6807 image = image_spec_value (img->spec, QCindex, NULL); |
eb8c3a9e1565
(enum tiff_keyword_index, tiff_format): Add :index keyword.
Jason Rumney <jasonr@gnu.org>
parents:
97043
diff
changeset
|
6808 if (INTEGERP (image)) |
eb8c3a9e1565
(enum tiff_keyword_index, tiff_format): Add :index keyword.
Jason Rumney <jasonr@gnu.org>
parents:
97043
diff
changeset
|
6809 { |
eb8c3a9e1565
(enum tiff_keyword_index, tiff_format): Add :index keyword.
Jason Rumney <jasonr@gnu.org>
parents:
97043
diff
changeset
|
6810 int ino = XFASTINT (image); |
eb8c3a9e1565
(enum tiff_keyword_index, tiff_format): Add :index keyword.
Jason Rumney <jasonr@gnu.org>
parents:
97043
diff
changeset
|
6811 if (!fn_TIFFSetDirectory (tiff, ino)) |
eb8c3a9e1565
(enum tiff_keyword_index, tiff_format): Add :index keyword.
Jason Rumney <jasonr@gnu.org>
parents:
97043
diff
changeset
|
6812 { |
eb8c3a9e1565
(enum tiff_keyword_index, tiff_format): Add :index keyword.
Jason Rumney <jasonr@gnu.org>
parents:
97043
diff
changeset
|
6813 image_error ("Invalid image number `%s' in image `%s'", |
eb8c3a9e1565
(enum tiff_keyword_index, tiff_format): Add :index keyword.
Jason Rumney <jasonr@gnu.org>
parents:
97043
diff
changeset
|
6814 image, img->spec); |
eb8c3a9e1565
(enum tiff_keyword_index, tiff_format): Add :index keyword.
Jason Rumney <jasonr@gnu.org>
parents:
97043
diff
changeset
|
6815 fn_TIFFClose (tiff); |
eb8c3a9e1565
(enum tiff_keyword_index, tiff_format): Add :index keyword.
Jason Rumney <jasonr@gnu.org>
parents:
97043
diff
changeset
|
6816 return 0; |
eb8c3a9e1565
(enum tiff_keyword_index, tiff_format): Add :index keyword.
Jason Rumney <jasonr@gnu.org>
parents:
97043
diff
changeset
|
6817 } |
eb8c3a9e1565
(enum tiff_keyword_index, tiff_format): Add :index keyword.
Jason Rumney <jasonr@gnu.org>
parents:
97043
diff
changeset
|
6818 } |
eb8c3a9e1565
(enum tiff_keyword_index, tiff_format): Add :index keyword.
Jason Rumney <jasonr@gnu.org>
parents:
97043
diff
changeset
|
6819 |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6820 /* Get width and height of the image, and allocate a raster buffer |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6821 of width x height 32-bit values. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6822 fn_TIFFGetField (tiff, TIFFTAG_IMAGEWIDTH, &width); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6823 fn_TIFFGetField (tiff, TIFFTAG_IMAGELENGTH, &height); |
66195
ad1acaef1abb
* image.c (Vmax_image_size): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
66013
diff
changeset
|
6824 |
ad1acaef1abb
* image.c (Vmax_image_size): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
66013
diff
changeset
|
6825 if (!check_image_size (f, width, height)) |
ad1acaef1abb
* image.c (Vmax_image_size): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
66013
diff
changeset
|
6826 { |
102392
689fbe81edc4
(xbm_read_bitmap_data, png_load, svg_load_image):
Jason Rumney <jasonr@gnu.org>
parents:
101838
diff
changeset
|
6827 image_error ("Invalid image size (see `max-image-size')", Qnil, Qnil); |
97635
eb8c3a9e1565
(enum tiff_keyword_index, tiff_format): Add :index keyword.
Jason Rumney <jasonr@gnu.org>
parents:
97043
diff
changeset
|
6828 fn_TIFFClose (tiff); |
66195
ad1acaef1abb
* image.c (Vmax_image_size): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
66013
diff
changeset
|
6829 return 0; |
ad1acaef1abb
* image.c (Vmax_image_size): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
66013
diff
changeset
|
6830 } |
ad1acaef1abb
* image.c (Vmax_image_size): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
66013
diff
changeset
|
6831 |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6832 buf = (uint32 *) xmalloc (width * height * sizeof *buf); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6833 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6834 rc = fn_TIFFReadRGBAImage (tiff, width, height, buf, 0); |
97635
eb8c3a9e1565
(enum tiff_keyword_index, tiff_format): Add :index keyword.
Jason Rumney <jasonr@gnu.org>
parents:
97043
diff
changeset
|
6835 |
eb8c3a9e1565
(enum tiff_keyword_index, tiff_format): Add :index keyword.
Jason Rumney <jasonr@gnu.org>
parents:
97043
diff
changeset
|
6836 /* Count the number of images in the file. */ |
eb8c3a9e1565
(enum tiff_keyword_index, tiff_format): Add :index keyword.
Jason Rumney <jasonr@gnu.org>
parents:
97043
diff
changeset
|
6837 for (count = 1, rc2 = 1; rc2; count++) |
eb8c3a9e1565
(enum tiff_keyword_index, tiff_format): Add :index keyword.
Jason Rumney <jasonr@gnu.org>
parents:
97043
diff
changeset
|
6838 rc2 = fn_TIFFSetDirectory (tiff, count); |
eb8c3a9e1565
(enum tiff_keyword_index, tiff_format): Add :index keyword.
Jason Rumney <jasonr@gnu.org>
parents:
97043
diff
changeset
|
6839 |
eb8c3a9e1565
(enum tiff_keyword_index, tiff_format): Add :index keyword.
Jason Rumney <jasonr@gnu.org>
parents:
97043
diff
changeset
|
6840 if (count > 1) |
eb8c3a9e1565
(enum tiff_keyword_index, tiff_format): Add :index keyword.
Jason Rumney <jasonr@gnu.org>
parents:
97043
diff
changeset
|
6841 img->data.lisp_val = Fcons (Qcount, |
eb8c3a9e1565
(enum tiff_keyword_index, tiff_format): Add :index keyword.
Jason Rumney <jasonr@gnu.org>
parents:
97043
diff
changeset
|
6842 Fcons (make_number (count), |
eb8c3a9e1565
(enum tiff_keyword_index, tiff_format): Add :index keyword.
Jason Rumney <jasonr@gnu.org>
parents:
97043
diff
changeset
|
6843 img->data.lisp_val)); |
eb8c3a9e1565
(enum tiff_keyword_index, tiff_format): Add :index keyword.
Jason Rumney <jasonr@gnu.org>
parents:
97043
diff
changeset
|
6844 |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6845 fn_TIFFClose (tiff); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6846 if (!rc) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6847 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6848 image_error ("Error reading TIFF image `%s'", img->spec, Qnil); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6849 xfree (buf); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6850 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6851 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6852 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6853 /* Create the X image and pixmap. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6854 if (!x_create_x_image_and_pixmap (f, width, height, 0, &ximg, &img->pixmap)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6855 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6856 xfree (buf); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6857 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6858 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6859 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6860 /* Initialize the color table. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6861 init_color_table (); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6862 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6863 /* Process the pixel raster. Origin is in the lower-left corner. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6864 for (y = 0; y < height; ++y) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6865 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6866 uint32 *row = buf + y * width; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6867 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6868 for (x = 0; x < width; ++x) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6869 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6870 uint32 abgr = row[x]; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6871 int r = TIFFGetR (abgr) << 8; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6872 int g = TIFFGetG (abgr) << 8; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6873 int b = TIFFGetB (abgr) << 8; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6874 XPutPixel (ximg, x, height - 1 - y, lookup_rgb_color (f, r, g, b)); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6875 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6876 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6877 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6878 #ifdef COLOR_TABLE_SUPPORT |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6879 /* Remember the colors allocated for the image. Free the color table. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6880 img->colors = colors_in_color_table (&img->ncolors); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6881 free_color_table (); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6882 #endif /* COLOR_TABLE_SUPPORT */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6883 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6884 img->width = width; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6885 img->height = height; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6886 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6887 /* Maybe fill in the background field while we have ximg handy. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6888 if (NILP (image_spec_value (img->spec, QCbackground, NULL))) |
63323
ccf928f0383c
(x_create_x_image_and_pixmap) [HAVE_NTGUI]: Cast 4th arg
Eli Zaretskii <eliz@gnu.org>
parents:
63112
diff
changeset
|
6889 /* Casting avoids a GCC warning on W32. */ |
ccf928f0383c
(x_create_x_image_and_pixmap) [HAVE_NTGUI]: Cast 4th arg
Eli Zaretskii <eliz@gnu.org>
parents:
63112
diff
changeset
|
6890 IMAGE_BACKGROUND (img, f, (XImagePtr_or_DC)ximg); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6891 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6892 /* Put the image into the pixmap, then free the X image and its buffer. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6893 x_put_x_image (f, ximg, img->pixmap, width, height); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6894 x_destroy_x_image (ximg); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6895 xfree (buf); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6896 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6897 return 1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6898 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6899 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6900 #else /* HAVE_TIFF */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6901 |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
6902 #ifdef HAVE_NS |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
6903 static int |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
6904 tiff_load (struct frame *f, struct image *img) |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
6905 { |
109160
f8660b83cdbf
Fix whitespace to follow coding guidelines.
Juanma Barranquero <lekktu@gmail.com>
parents:
109144
diff
changeset
|
6906 return ns_load_image (f, img, |
f8660b83cdbf
Fix whitespace to follow coding guidelines.
Juanma Barranquero <lekktu@gmail.com>
parents:
109144
diff
changeset
|
6907 image_spec_value (img->spec, QCfile, NULL), |
f8660b83cdbf
Fix whitespace to follow coding guidelines.
Juanma Barranquero <lekktu@gmail.com>
parents:
109144
diff
changeset
|
6908 image_spec_value (img->spec, QCdata, NULL)); |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
6909 } |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
6910 #endif /* HAVE_NS */ |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
6911 |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6912 #endif /* !HAVE_TIFF */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6913 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6914 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6915 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6916 /*********************************************************************** |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6917 GIF |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6918 ***********************************************************************/ |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6919 |
97043
9592c50233ab
Remove support for Mac Carbon.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
97034
diff
changeset
|
6920 #if defined (HAVE_GIF) || defined (HAVE_NS) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6921 |
109100
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
6922 static int gif_image_p (Lisp_Object object); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
6923 static int gif_load (struct frame *f, struct image *img); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
6924 static void gif_clear_image (struct frame *f, struct image *img); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6925 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6926 /* The symbol `gif' identifying images of this type. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6927 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6928 Lisp_Object Qgif; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6929 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6930 /* Indices of image specification fields in gif_format, below. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6931 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6932 enum gif_keyword_index |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6933 { |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6934 GIF_TYPE, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6935 GIF_DATA, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6936 GIF_FILE, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6937 GIF_ASCENT, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6938 GIF_MARGIN, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6939 GIF_RELIEF, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6940 GIF_ALGORITHM, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6941 GIF_HEURISTIC_MASK, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6942 GIF_MASK, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6943 GIF_IMAGE, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6944 GIF_BACKGROUND, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6945 GIF_LAST |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6946 }; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6947 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6948 /* Vector of image_keyword structures describing the format |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6949 of valid user-defined image specifications. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6950 |
105959
ba3ffbd9c422
* process.c (ifflag_def): Make flag_sym constant.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
105877
diff
changeset
|
6951 static const struct image_keyword gif_format[GIF_LAST] = |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6952 { |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6953 {":type", IMAGE_SYMBOL_VALUE, 1}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6954 {":data", IMAGE_STRING_VALUE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6955 {":file", IMAGE_STRING_VALUE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6956 {":ascent", IMAGE_ASCENT_VALUE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6957 {":margin", IMAGE_POSITIVE_INTEGER_VALUE_OR_PAIR, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6958 {":relief", IMAGE_INTEGER_VALUE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6959 {":conversion", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6960 {":heuristic-mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6961 {":mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6962 {":index", IMAGE_NON_NEGATIVE_INTEGER_VALUE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6963 {":background", IMAGE_STRING_OR_NIL_VALUE, 0} |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6964 }; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6965 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6966 /* Structure describing the image type `gif'. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6967 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6968 static struct image_type gif_type = |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6969 { |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6970 &Qgif, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6971 gif_image_p, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6972 gif_load, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6973 gif_clear_image, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6974 NULL |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
6975 }; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6976 |
70168
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
6977 /* Free X resources of GIF image IMG which is used on frame F. */ |
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
6978 |
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
6979 static void |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
6980 gif_clear_image (struct frame *f, struct image *img) |
70168
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
6981 { |
107719
9c0ed2d6731a
Rename `image-extension-data' to `image-metadata'.
Juri Linkov <juri@jurta.org>
parents:
106975
diff
changeset
|
6982 /* IMG->data.ptr_val may contain metadata with extension data. */ |
70168
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
6983 img->data.lisp_val = Qnil; |
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
6984 x_clear_image (f, img); |
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
6985 } |
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
6986 |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6987 /* Return non-zero if OBJECT is a valid GIF image specification. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6988 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6989 static int |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
6990 gif_image_p (Lisp_Object object) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6991 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6992 struct image_keyword fmt[GIF_LAST]; |
109165
750db9f3e6d8
Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents:
109160
diff
changeset
|
6993 memcpy (fmt, gif_format, sizeof fmt); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6994 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6995 if (!parse_image_spec (object, fmt, GIF_LAST, Qgif)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6996 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6997 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6998 /* Must specify either the :data or :file keyword. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
6999 return fmt[GIF_FILE].count + fmt[GIF_DATA].count == 1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7000 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7001 |
97043
9592c50233ab
Remove support for Mac Carbon.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
97034
diff
changeset
|
7002 #endif /* HAVE_GIF */ |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7003 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7004 #ifdef HAVE_GIF |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7005 |
97043
9592c50233ab
Remove support for Mac Carbon.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
97034
diff
changeset
|
7006 #if defined (HAVE_NTGUI) |
63323
ccf928f0383c
(x_create_x_image_and_pixmap) [HAVE_NTGUI]: Cast 4th arg
Eli Zaretskii <eliz@gnu.org>
parents:
63112
diff
changeset
|
7007 /* winuser.h might define DrawText to DrawTextA or DrawTextW. |
ccf928f0383c
(x_create_x_image_and_pixmap) [HAVE_NTGUI]: Cast 4th arg
Eli Zaretskii <eliz@gnu.org>
parents:
63112
diff
changeset
|
7008 Undefine before redefining to avoid a preprocessor warning. */ |
ccf928f0383c
(x_create_x_image_and_pixmap) [HAVE_NTGUI]: Cast 4th arg
Eli Zaretskii <eliz@gnu.org>
parents:
63112
diff
changeset
|
7009 #ifdef DrawText |
ccf928f0383c
(x_create_x_image_and_pixmap) [HAVE_NTGUI]: Cast 4th arg
Eli Zaretskii <eliz@gnu.org>
parents:
63112
diff
changeset
|
7010 #undef DrawText |
ccf928f0383c
(x_create_x_image_and_pixmap) [HAVE_NTGUI]: Cast 4th arg
Eli Zaretskii <eliz@gnu.org>
parents:
63112
diff
changeset
|
7011 #endif |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7012 /* avoid conflict with QuickdrawText.h */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7013 #define DrawText gif_DrawText |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7014 #include <gif_lib.h> |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7015 #undef DrawText |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7016 |
97043
9592c50233ab
Remove support for Mac Carbon.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
97034
diff
changeset
|
7017 #else /* HAVE_NTGUI */ |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7018 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7019 #include <gif_lib.h> |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7020 |
97043
9592c50233ab
Remove support for Mac Carbon.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
97034
diff
changeset
|
7021 #endif /* HAVE_NTGUI */ |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7022 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7023 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7024 #ifdef HAVE_NTGUI |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7025 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7026 /* GIF library details. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7027 DEF_IMGLIB_FN (DGifCloseFile); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7028 DEF_IMGLIB_FN (DGifSlurp); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7029 DEF_IMGLIB_FN (DGifOpen); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7030 DEF_IMGLIB_FN (DGifOpenFileName); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7031 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7032 static int |
56104
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
7033 init_gif_functions (Lisp_Object libraries) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7034 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7035 HMODULE library; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7036 |
56104
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
7037 if (!(library = w32_delayed_load (libraries, Qgif))) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7038 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7039 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7040 LOAD_IMGLIB_FN (library, DGifCloseFile); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7041 LOAD_IMGLIB_FN (library, DGifSlurp); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7042 LOAD_IMGLIB_FN (library, DGifOpen); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7043 LOAD_IMGLIB_FN (library, DGifOpenFileName); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7044 return 1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7045 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7046 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7047 #else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7048 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7049 #define fn_DGifCloseFile DGifCloseFile |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7050 #define fn_DGifSlurp DGifSlurp |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7051 #define fn_DGifOpen DGifOpen |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7052 #define fn_DGifOpenFileName DGifOpenFileName |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7053 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7054 #endif /* HAVE_NTGUI */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7055 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7056 /* Reading a GIF image from memory |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7057 Based on the PNG memory stuff to a certain extent. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7058 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7059 typedef struct |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7060 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7061 unsigned char *bytes; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7062 size_t len; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7063 int index; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7064 } |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
7065 gif_memory_source; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7066 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7067 /* Make the current memory source available to gif_read_from_memory. |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7068 It's done this way because not all versions of libungif support |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7069 a UserData field in the GifFileType structure. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7070 static gif_memory_source *current_gif_memory_src; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7071 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7072 static int |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
7073 gif_read_from_memory (GifFileType *file, GifByteType *buf, int len) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7074 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7075 gif_memory_source *src = current_gif_memory_src; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7076 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7077 if (len > src->len - src->index) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7078 return -1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7079 |
109165
750db9f3e6d8
Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents:
109160
diff
changeset
|
7080 memcpy (buf, src->bytes + src->index, len); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7081 src->index += len; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7082 return len; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7083 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7084 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7085 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7086 /* Load GIF image IMG for use on frame F. Value is non-zero if |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7087 successful. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7088 |
105959
ba3ffbd9c422
* process.c (ifflag_def): Make flag_sym constant.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
105877
diff
changeset
|
7089 static const int interlace_start[] = {0, 4, 2, 1}; |
ba3ffbd9c422
* process.c (ifflag_def): Make flag_sym constant.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
105877
diff
changeset
|
7090 static const int interlace_increment[] = {8, 8, 4, 2}; |
78788
c077ece08ff6
(our_memory_fill_input_buffer) <buffer>: Move to file scope and rename
Glenn Morris <rgm@gnu.org>
parents:
78746
diff
changeset
|
7091 |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7092 static int |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
7093 gif_load (struct frame *f, struct image *img) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7094 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7095 Lisp_Object file, specified_file; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7096 Lisp_Object specified_data; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7097 int rc, width, height, x, y, i; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7098 XImagePtr ximg; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7099 ColorMapObject *gif_color_map; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7100 unsigned long pixel_colors[256]; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7101 GifFileType *gif; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7102 Lisp_Object image; |
70168
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
7103 int ino, image_height, image_width; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7104 gif_memory_source memsrc; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7105 unsigned char *raster; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7106 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7107 specified_file = image_spec_value (img->spec, QCfile, NULL); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7108 specified_data = image_spec_value (img->spec, QCdata, NULL); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7109 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7110 if (NILP (specified_data)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7111 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7112 file = x_find_image_file (specified_file); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7113 if (!STRINGP (file)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7114 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7115 image_error ("Cannot find image file `%s'", specified_file, Qnil); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7116 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7117 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7118 |
63323
ccf928f0383c
(x_create_x_image_and_pixmap) [HAVE_NTGUI]: Cast 4th arg
Eli Zaretskii <eliz@gnu.org>
parents:
63112
diff
changeset
|
7119 /* Open the GIF file. Casting return value avoids a GCC warning |
ccf928f0383c
(x_create_x_image_and_pixmap) [HAVE_NTGUI]: Cast 4th arg
Eli Zaretskii <eliz@gnu.org>
parents:
63112
diff
changeset
|
7120 on W32. */ |
ccf928f0383c
(x_create_x_image_and_pixmap) [HAVE_NTGUI]: Cast 4th arg
Eli Zaretskii <eliz@gnu.org>
parents:
63112
diff
changeset
|
7121 gif = (GifFileType *)fn_DGifOpenFileName (SDATA (file)); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7122 if (gif == NULL) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7123 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7124 image_error ("Cannot open `%s'", file, Qnil); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7125 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7126 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7127 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7128 else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7129 { |
110184
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7130 if (!STRINGP (specified_data)) |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7131 { |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7132 image_error ("Invalid image data `%s'", specified_data, Qnil); |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7133 return 0; |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7134 } |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7135 |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7136 /* Read from memory! */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7137 current_gif_memory_src = &memsrc; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7138 memsrc.bytes = SDATA (specified_data); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7139 memsrc.len = SBYTES (specified_data); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7140 memsrc.index = 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7141 |
63323
ccf928f0383c
(x_create_x_image_and_pixmap) [HAVE_NTGUI]: Cast 4th arg
Eli Zaretskii <eliz@gnu.org>
parents:
63112
diff
changeset
|
7142 /* Casting return value avoids a GCC warning on W32. */ |
82795
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
7143 gif = (GifFileType *) fn_DGifOpen (&memsrc, gif_read_from_memory); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7144 if (!gif) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7145 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7146 image_error ("Cannot open memory source `%s'", img->spec, Qnil); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7147 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7148 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7149 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7150 |
66195
ad1acaef1abb
* image.c (Vmax_image_size): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
66013
diff
changeset
|
7151 /* Before reading entire contents, check the declared image size. */ |
ad1acaef1abb
* image.c (Vmax_image_size): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
66013
diff
changeset
|
7152 if (!check_image_size (f, gif->SWidth, gif->SHeight)) |
ad1acaef1abb
* image.c (Vmax_image_size): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
66013
diff
changeset
|
7153 { |
102392
689fbe81edc4
(xbm_read_bitmap_data, png_load, svg_load_image):
Jason Rumney <jasonr@gnu.org>
parents:
101838
diff
changeset
|
7154 image_error ("Invalid image size (see `max-image-size')", Qnil, Qnil); |
66195
ad1acaef1abb
* image.c (Vmax_image_size): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
66013
diff
changeset
|
7155 fn_DGifCloseFile (gif); |
ad1acaef1abb
* image.c (Vmax_image_size): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
66013
diff
changeset
|
7156 return 0; |
ad1acaef1abb
* image.c (Vmax_image_size): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
66013
diff
changeset
|
7157 } |
ad1acaef1abb
* image.c (Vmax_image_size): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
66013
diff
changeset
|
7158 |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7159 /* Read entire contents. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7160 rc = fn_DGifSlurp (gif); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7161 if (rc == GIF_ERROR) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7162 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7163 image_error ("Error reading `%s'", img->spec, Qnil); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7164 fn_DGifCloseFile (gif); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7165 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7166 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7167 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7168 image = image_spec_value (img->spec, QCindex, NULL); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7169 ino = INTEGERP (image) ? XFASTINT (image) : 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7170 if (ino >= gif->ImageCount) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7171 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7172 image_error ("Invalid image number `%s' in image `%s'", |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7173 image, img->spec); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7174 fn_DGifCloseFile (gif); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7175 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7176 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7177 |
70168
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
7178 img->corners[TOP_CORNER] = gif->SavedImages[ino].ImageDesc.Top; |
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
7179 img->corners[LEFT_CORNER] = gif->SavedImages[ino].ImageDesc.Left; |
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
7180 image_height = gif->SavedImages[ino].ImageDesc.Height; |
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
7181 img->corners[BOT_CORNER] = img->corners[TOP_CORNER] + image_height; |
65723
b88d5090aa86
(gif_load): Fix size of allocated image buffer
Kim F. Storm <storm@cua.dk>
parents:
65250
diff
changeset
|
7182 image_width = gif->SavedImages[ino].ImageDesc.Width; |
70168
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
7183 img->corners[RIGHT_CORNER] = img->corners[LEFT_CORNER] + image_width; |
65723
b88d5090aa86
(gif_load): Fix size of allocated image buffer
Kim F. Storm <storm@cua.dk>
parents:
65250
diff
changeset
|
7184 |
b88d5090aa86
(gif_load): Fix size of allocated image buffer
Kim F. Storm <storm@cua.dk>
parents:
65250
diff
changeset
|
7185 width = img->width = max (gif->SWidth, |
b88d5090aa86
(gif_load): Fix size of allocated image buffer
Kim F. Storm <storm@cua.dk>
parents:
65250
diff
changeset
|
7186 max (gif->Image.Left + gif->Image.Width, |
70168
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
7187 img->corners[RIGHT_CORNER])); |
65723
b88d5090aa86
(gif_load): Fix size of allocated image buffer
Kim F. Storm <storm@cua.dk>
parents:
65250
diff
changeset
|
7188 height = img->height = max (gif->SHeight, |
b88d5090aa86
(gif_load): Fix size of allocated image buffer
Kim F. Storm <storm@cua.dk>
parents:
65250
diff
changeset
|
7189 max (gif->Image.Top + gif->Image.Height, |
70168
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
7190 img->corners[BOT_CORNER])); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7191 |
66195
ad1acaef1abb
* image.c (Vmax_image_size): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
66013
diff
changeset
|
7192 if (!check_image_size (f, width, height)) |
ad1acaef1abb
* image.c (Vmax_image_size): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
66013
diff
changeset
|
7193 { |
102392
689fbe81edc4
(xbm_read_bitmap_data, png_load, svg_load_image):
Jason Rumney <jasonr@gnu.org>
parents:
101838
diff
changeset
|
7194 image_error ("Invalid image size (see `max-image-size')", Qnil, Qnil); |
66195
ad1acaef1abb
* image.c (Vmax_image_size): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
66013
diff
changeset
|
7195 fn_DGifCloseFile (gif); |
ad1acaef1abb
* image.c (Vmax_image_size): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
66013
diff
changeset
|
7196 return 0; |
ad1acaef1abb
* image.c (Vmax_image_size): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
66013
diff
changeset
|
7197 } |
ad1acaef1abb
* image.c (Vmax_image_size): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
66013
diff
changeset
|
7198 |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7199 /* Create the X image and pixmap. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7200 if (!x_create_x_image_and_pixmap (f, width, height, 0, &ximg, &img->pixmap)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7201 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7202 fn_DGifCloseFile (gif); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7203 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7204 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7205 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7206 /* Allocate colors. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7207 gif_color_map = gif->SavedImages[ino].ImageDesc.ColorMap; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7208 if (!gif_color_map) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7209 gif_color_map = gif->SColorMap; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7210 init_color_table (); |
109165
750db9f3e6d8
Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents:
109160
diff
changeset
|
7211 memset (pixel_colors, 0, sizeof pixel_colors); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7212 |
78746
8090732dfc6d
(gif_load): Fix bug: Handle nonexistent colormap.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
78692
diff
changeset
|
7213 if (gif_color_map) |
8090732dfc6d
(gif_load): Fix bug: Handle nonexistent colormap.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
78692
diff
changeset
|
7214 for (i = 0; i < gif_color_map->ColorCount; ++i) |
8090732dfc6d
(gif_load): Fix bug: Handle nonexistent colormap.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
78692
diff
changeset
|
7215 { |
8090732dfc6d
(gif_load): Fix bug: Handle nonexistent colormap.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
78692
diff
changeset
|
7216 int r = gif_color_map->Colors[i].Red << 8; |
8090732dfc6d
(gif_load): Fix bug: Handle nonexistent colormap.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
78692
diff
changeset
|
7217 int g = gif_color_map->Colors[i].Green << 8; |
8090732dfc6d
(gif_load): Fix bug: Handle nonexistent colormap.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
78692
diff
changeset
|
7218 int b = gif_color_map->Colors[i].Blue << 8; |
8090732dfc6d
(gif_load): Fix bug: Handle nonexistent colormap.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
78692
diff
changeset
|
7219 pixel_colors[i] = lookup_rgb_color (f, r, g, b); |
8090732dfc6d
(gif_load): Fix bug: Handle nonexistent colormap.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
78692
diff
changeset
|
7220 } |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7221 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7222 #ifdef COLOR_TABLE_SUPPORT |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7223 img->colors = colors_in_color_table (&img->ncolors); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7224 free_color_table (); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7225 #endif /* COLOR_TABLE_SUPPORT */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7226 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7227 /* Clear the part of the screen image that are not covered by |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7228 the image from the GIF file. Full animated GIF support |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7229 requires more than can be done here (see the gif89 spec, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7230 disposal methods). Let's simply assume that the part |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7231 not covered by a sub-image is in the frame's background color. */ |
70168
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
7232 for (y = 0; y < img->corners[TOP_CORNER]; ++y) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7233 for (x = 0; x < width; ++x) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7234 XPutPixel (ximg, x, y, FRAME_BACKGROUND_PIXEL (f)); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7235 |
70168
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
7236 for (y = img->corners[BOT_CORNER]; y < height; ++y) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7237 for (x = 0; x < width; ++x) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7238 XPutPixel (ximg, x, y, FRAME_BACKGROUND_PIXEL (f)); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7239 |
70168
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
7240 for (y = img->corners[TOP_CORNER]; y < img->corners[BOT_CORNER]; ++y) |
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
7241 { |
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
7242 for (x = 0; x < img->corners[LEFT_CORNER]; ++x) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7243 XPutPixel (ximg, x, y, FRAME_BACKGROUND_PIXEL (f)); |
70168
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
7244 for (x = img->corners[RIGHT_CORNER]; x < width; ++x) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7245 XPutPixel (ximg, x, y, FRAME_BACKGROUND_PIXEL (f)); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7246 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7247 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7248 /* Read the GIF image into the X image. We use a local variable |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7249 `raster' here because RasterBits below is a char *, and invites |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7250 problems with bytes >= 0x80. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7251 raster = (unsigned char *) gif->SavedImages[ino].RasterBits; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7252 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7253 if (gif->SavedImages[ino].ImageDesc.Interlace) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7254 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7255 int pass; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7256 int row = interlace_start[0]; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7257 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7258 pass = 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7259 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7260 for (y = 0; y < image_height; y++) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7261 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7262 if (row >= image_height) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7263 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7264 row = interlace_start[++pass]; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7265 while (row >= image_height) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7266 row = interlace_start[++pass]; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7267 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7268 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7269 for (x = 0; x < image_width; x++) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7270 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7271 int i = raster[(y * image_width) + x]; |
70168
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
7272 XPutPixel (ximg, x + img->corners[LEFT_CORNER], |
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
7273 row + img->corners[TOP_CORNER], pixel_colors[i]); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7274 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7275 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7276 row += interlace_increment[pass]; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7277 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7278 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7279 else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7280 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7281 for (y = 0; y < image_height; ++y) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7282 for (x = 0; x < image_width; ++x) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7283 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7284 int i = raster[y * image_width + x]; |
70168
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
7285 XPutPixel (ximg, x + img->corners[LEFT_CORNER], |
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
7286 y + img->corners[TOP_CORNER], pixel_colors[i]); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7287 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7288 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7289 |
107719
9c0ed2d6731a
Rename `image-extension-data' to `image-metadata'.
Juri Linkov <juri@jurta.org>
parents:
106975
diff
changeset
|
7290 /* Save GIF image extension data for `image-metadata'. |
9c0ed2d6731a
Rename `image-extension-data' to `image-metadata'.
Juri Linkov <juri@jurta.org>
parents:
106975
diff
changeset
|
7291 Format is (count IMAGES extension-data (FUNCTION "BYTES" ...)). */ |
70168
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
7292 img->data.lisp_val = Qnil; |
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
7293 if (gif->SavedImages[ino].ExtensionBlockCount > 0) |
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
7294 { |
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
7295 ExtensionBlock *ext = gif->SavedImages[ino].ExtensionBlocks; |
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
7296 for (i = 0; i < gif->SavedImages[ino].ExtensionBlockCount; i++, ext++) |
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
7297 /* Append (... FUNCTION "BYTES") */ |
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
7298 img->data.lisp_val = Fcons (make_unibyte_string (ext->Bytes, ext->ByteCount), |
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
7299 Fcons (make_number (ext->Function), |
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
7300 img->data.lisp_val)); |
107719
9c0ed2d6731a
Rename `image-extension-data' to `image-metadata'.
Juri Linkov <juri@jurta.org>
parents:
106975
diff
changeset
|
7301 img->data.lisp_val = Fcons (Qextension_data, |
9c0ed2d6731a
Rename `image-extension-data' to `image-metadata'.
Juri Linkov <juri@jurta.org>
parents:
106975
diff
changeset
|
7302 Fcons (Fnreverse (img->data.lisp_val), |
9c0ed2d6731a
Rename `image-extension-data' to `image-metadata'.
Juri Linkov <juri@jurta.org>
parents:
106975
diff
changeset
|
7303 Qnil)); |
70168
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
7304 } |
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
7305 if (gif->ImageCount > 1) |
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
7306 img->data.lisp_val = Fcons (Qcount, |
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
7307 Fcons (make_number (gif->ImageCount), |
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
7308 img->data.lisp_val)); |
60bff6b0c656
(four_corners_best): New arg CORNERS specifies what pixels
Kim F. Storm <storm@cua.dk>
parents:
70147
diff
changeset
|
7309 |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7310 fn_DGifCloseFile (gif); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7311 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7312 /* Maybe fill in the background field while we have ximg handy. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7313 if (NILP (image_spec_value (img->spec, QCbackground, NULL))) |
63323
ccf928f0383c
(x_create_x_image_and_pixmap) [HAVE_NTGUI]: Cast 4th arg
Eli Zaretskii <eliz@gnu.org>
parents:
63112
diff
changeset
|
7314 /* Casting avoids a GCC warning. */ |
ccf928f0383c
(x_create_x_image_and_pixmap) [HAVE_NTGUI]: Cast 4th arg
Eli Zaretskii <eliz@gnu.org>
parents:
63112
diff
changeset
|
7315 IMAGE_BACKGROUND (img, f, (XImagePtr_or_DC)ximg); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7316 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7317 /* Put the image into the pixmap, then free the X image and its buffer. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7318 x_put_x_image (f, ximg, img->pixmap, width, height); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7319 x_destroy_x_image (ximg); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7320 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7321 return 1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7322 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7323 |
63323
ccf928f0383c
(x_create_x_image_and_pixmap) [HAVE_NTGUI]: Cast 4th arg
Eli Zaretskii <eliz@gnu.org>
parents:
63112
diff
changeset
|
7324 #else /* !HAVE_GIF */ |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7325 |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
7326 #ifdef HAVE_NS |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
7327 static int |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
7328 gif_load (struct frame *f, struct image *img) |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
7329 { |
109160
f8660b83cdbf
Fix whitespace to follow coding guidelines.
Juanma Barranquero <lekktu@gmail.com>
parents:
109144
diff
changeset
|
7330 return ns_load_image (f, img, |
f8660b83cdbf
Fix whitespace to follow coding guidelines.
Juanma Barranquero <lekktu@gmail.com>
parents:
109144
diff
changeset
|
7331 image_spec_value (img->spec, QCfile, NULL), |
f8660b83cdbf
Fix whitespace to follow coding guidelines.
Juanma Barranquero <lekktu@gmail.com>
parents:
109144
diff
changeset
|
7332 image_spec_value (img->spec, QCdata, NULL)); |
96675
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
7333 } |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
7334 #endif /* HAVE_NS */ |
d45acf0c8d23
merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
95213
diff
changeset
|
7335 |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7336 #endif /* HAVE_GIF */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7337 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7338 |
109849 | 7339 /*********************************************************************** |
7340 imagemagick | |
109860
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7341 ***********************************************************************/ |
109849 | 7342 #if defined (HAVE_IMAGEMAGICK) |
7343 Lisp_Object Vimagemagick_render_type; | |
7344 | |
7345 /* The symbol `imagemagick' identifying images of this type. */ | |
7346 | |
7347 Lisp_Object Qimagemagick; | |
7348 Lisp_Object Vimagemagick_render_type; | |
7349 | |
7350 /* Indices of image specification fields in imagemagick_format, below. */ | |
7351 | |
7352 enum imagemagick_keyword_index | |
109860
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7353 { |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7354 IMAGEMAGICK_TYPE, |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7355 IMAGEMAGICK_DATA, |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7356 IMAGEMAGICK_FILE, |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7357 IMAGEMAGICK_ASCENT, |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7358 IMAGEMAGICK_MARGIN, |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7359 IMAGEMAGICK_RELIEF, |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7360 IMAGEMAGICK_ALGORITHM, |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7361 IMAGEMAGICK_HEURISTIC_MASK, |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7362 IMAGEMAGICK_MASK, |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7363 IMAGEMAGICK_BACKGROUND, |
109866
73512e4aa257
image-mode changes. removed the imagemagick specific :geometry and :crop interface that wasnt very good.
Joakim <joakim@localhost.localdomain>
parents:
109864
diff
changeset
|
7364 IMAGEMAGICK_HEIGHT, |
73512e4aa257
image-mode changes. removed the imagemagick specific :geometry and :crop interface that wasnt very good.
Joakim <joakim@localhost.localdomain>
parents:
109864
diff
changeset
|
7365 IMAGEMAGICK_WIDTH, |
73512e4aa257
image-mode changes. removed the imagemagick specific :geometry and :crop interface that wasnt very good.
Joakim <joakim@localhost.localdomain>
parents:
109864
diff
changeset
|
7366 IMAGEMAGICK_ROTATION, |
73512e4aa257
image-mode changes. removed the imagemagick specific :geometry and :crop interface that wasnt very good.
Joakim <joakim@localhost.localdomain>
parents:
109864
diff
changeset
|
7367 IMAGEMAGICK_CROP, |
109860
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7368 IMAGEMAGICK_LAST |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7369 }; |
109849 | 7370 |
7371 /* Vector of image_keyword structures describing the format | |
7372 of valid user-defined image specifications. */ | |
7373 | |
7374 static struct image_keyword imagemagick_format[IMAGEMAGICK_LAST] = | |
109860
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7375 { |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7376 {":type", IMAGE_SYMBOL_VALUE, 1}, |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7377 {":data", IMAGE_STRING_VALUE, 0}, |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7378 {":file", IMAGE_STRING_VALUE, 0}, |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7379 {":ascent", IMAGE_ASCENT_VALUE, 0}, |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7380 {":margin", IMAGE_POSITIVE_INTEGER_VALUE_OR_PAIR, 0}, |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7381 {":relief", IMAGE_INTEGER_VALUE, 0}, |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7382 {":conversion", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7383 {":heuristic-mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7384 {":mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
109866
73512e4aa257
image-mode changes. removed the imagemagick specific :geometry and :crop interface that wasnt very good.
Joakim <joakim@localhost.localdomain>
parents:
109864
diff
changeset
|
7385 {":background", IMAGE_STRING_OR_NIL_VALUE, 0}, |
110184
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7386 {":height", IMAGE_INTEGER_VALUE, 0}, |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7387 {":width", IMAGE_INTEGER_VALUE, 0}, |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7388 {":rotation", IMAGE_NUMBER_VALUE, 0}, |
109866
73512e4aa257
image-mode changes. removed the imagemagick specific :geometry and :crop interface that wasnt very good.
Joakim <joakim@localhost.localdomain>
parents:
109864
diff
changeset
|
7389 {":crop", IMAGE_DONT_CHECK_VALUE_TYPE, 0} |
109860
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7390 }; |
109849 | 7391 /* Free X resources of imagemagick image IMG which is used on frame F. */ |
7392 | |
7393 static void | |
109860
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7394 imagemagick_clear_image (struct frame *f, |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7395 struct image *img) |
109849 | 7396 { |
7397 x_clear_image (f, img); | |
7398 } | |
7399 | |
7400 | |
7401 | |
7402 /* Return non-zero if OBJECT is a valid IMAGEMAGICK image specification. Do | |
7403 this by calling parse_image_spec and supplying the keywords that | |
7404 identify the IMAGEMAGICK format. */ | |
7405 | |
7406 static int | |
109860
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7407 imagemagick_image_p (Lisp_Object object) |
109849 | 7408 { |
7409 struct image_keyword fmt[IMAGEMAGICK_LAST]; | |
110174
873c8f137ae3
* image.c (imagemagick_image_p): Replace bcopy by memcpy.
Andreas Schwab <schwab@linux-m68k.org>
parents:
109885
diff
changeset
|
7410 memcpy (fmt, imagemagick_format, sizeof fmt); |
109849 | 7411 |
7412 if (!parse_image_spec (object, fmt, IMAGEMAGICK_LAST, Qimagemagick)) | |
7413 return 0; | |
7414 | |
7415 /* Must specify either the :data or :file keyword. */ | |
7416 return fmt[IMAGEMAGICK_FILE].count + fmt[IMAGEMAGICK_DATA].count == 1; | |
7417 } | |
7418 | |
7419 /* The GIF library also defines DrawRectangle, but its never used in Emacs. | |
7420 Therefore rename the function so it doesnt collide with ImageMagick. */ | |
7421 #define DrawRectangle DrawRectangleGif | |
7422 #include <wand/MagickWand.h> | |
7423 | |
109861
8e0241dfb81c
cosmetics, and changing of defconst to defcustom
Joakim <joakim@localhost.localdomain>
parents:
109860
diff
changeset
|
7424 /* imagemagick_load_image is a helper function for imagemagick_load, |
8e0241dfb81c
cosmetics, and changing of defconst to defcustom
Joakim <joakim@localhost.localdomain>
parents:
109860
diff
changeset
|
7425 which does the actual loading given contents and size, apart from |
8e0241dfb81c
cosmetics, and changing of defconst to defcustom
Joakim <joakim@localhost.localdomain>
parents:
109860
diff
changeset
|
7426 frame and image structures, passed from imagemagick_load. |
109860
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7427 |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7428 Uses librimagemagick to do most of the image processing. |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7429 |
109868
c1ae0a9b14a1
reworked :index functionality a bit so its faster
Joakim <joakim@localhost.localdomain>
parents:
109866
diff
changeset
|
7430 non-zero when successful. |
109860
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7431 */ |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7432 |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7433 static int |
109861
8e0241dfb81c
cosmetics, and changing of defconst to defcustom
Joakim <joakim@localhost.localdomain>
parents:
109860
diff
changeset
|
7434 imagemagick_load_image (/* Pointer to emacs frame structure. */ |
8e0241dfb81c
cosmetics, and changing of defconst to defcustom
Joakim <joakim@localhost.localdomain>
parents:
109860
diff
changeset
|
7435 struct frame *f, |
8e0241dfb81c
cosmetics, and changing of defconst to defcustom
Joakim <joakim@localhost.localdomain>
parents:
109860
diff
changeset
|
7436 /* Pointer to emacs image structure. */ |
110184
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7437 struct image *img, |
109861
8e0241dfb81c
cosmetics, and changing of defconst to defcustom
Joakim <joakim@localhost.localdomain>
parents:
109860
diff
changeset
|
7438 /* String containing the IMAGEMAGICK data to |
8e0241dfb81c
cosmetics, and changing of defconst to defcustom
Joakim <joakim@localhost.localdomain>
parents:
109860
diff
changeset
|
7439 be parsed. */ |
8e0241dfb81c
cosmetics, and changing of defconst to defcustom
Joakim <joakim@localhost.localdomain>
parents:
109860
diff
changeset
|
7440 unsigned char *contents, |
8e0241dfb81c
cosmetics, and changing of defconst to defcustom
Joakim <joakim@localhost.localdomain>
parents:
109860
diff
changeset
|
7441 /* Size of data in bytes. */ |
8e0241dfb81c
cosmetics, and changing of defconst to defcustom
Joakim <joakim@localhost.localdomain>
parents:
109860
diff
changeset
|
7442 unsigned int size, |
8e0241dfb81c
cosmetics, and changing of defconst to defcustom
Joakim <joakim@localhost.localdomain>
parents:
109860
diff
changeset
|
7443 /* Filename, either pass filename or |
8e0241dfb81c
cosmetics, and changing of defconst to defcustom
Joakim <joakim@localhost.localdomain>
parents:
109860
diff
changeset
|
7444 contents/size. */ |
8e0241dfb81c
cosmetics, and changing of defconst to defcustom
Joakim <joakim@localhost.localdomain>
parents:
109860
diff
changeset
|
7445 unsigned char *filename) |
109860
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7446 { |
110175
6488e31d7e94
Fix type mismatch in ImageMagick loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110174
diff
changeset
|
7447 unsigned long width; |
6488e31d7e94
Fix type mismatch in ImageMagick loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110174
diff
changeset
|
7448 unsigned long height; |
109860
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7449 |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7450 MagickBooleanType |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7451 status; |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7452 |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7453 XImagePtr ximg; |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7454 Lisp_Object specified_bg; |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7455 XColor background; |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7456 int x; |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7457 int y; |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7458 |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7459 MagickWand *image_wand; |
110184
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7460 MagickWand *ping_wand; |
109860
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7461 PixelIterator *iterator; |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7462 PixelWand **pixels; |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7463 MagickPixelPacket pixel; |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7464 Lisp_Object image; |
110184
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7465 Lisp_Object value; |
109860
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7466 Lisp_Object crop, geometry; |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7467 long ino; |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7468 int desired_width, desired_height; |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7469 double rotation; |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7470 int imagemagick_rendermethod; |
110184
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7471 int pixelwidth; |
109868
c1ae0a9b14a1
reworked :index functionality a bit so its faster
Joakim <joakim@localhost.localdomain>
parents:
109866
diff
changeset
|
7472 ImageInfo *image_info; |
c1ae0a9b14a1
reworked :index functionality a bit so its faster
Joakim <joakim@localhost.localdomain>
parents:
109866
diff
changeset
|
7473 ExceptionInfo *exception; |
c1ae0a9b14a1
reworked :index functionality a bit so its faster
Joakim <joakim@localhost.localdomain>
parents:
109866
diff
changeset
|
7474 Image * im_image; |
c1ae0a9b14a1
reworked :index functionality a bit so its faster
Joakim <joakim@localhost.localdomain>
parents:
109866
diff
changeset
|
7475 |
110184
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7476 |
109868
c1ae0a9b14a1
reworked :index functionality a bit so its faster
Joakim <joakim@localhost.localdomain>
parents:
109866
diff
changeset
|
7477 /* Handle image index for image types who can contain more than one |
c1ae0a9b14a1
reworked :index functionality a bit so its faster
Joakim <joakim@localhost.localdomain>
parents:
109866
diff
changeset
|
7478 image. Interface :index is same as for GIF. First we "ping" the |
c1ae0a9b14a1
reworked :index functionality a bit so its faster
Joakim <joakim@localhost.localdomain>
parents:
109866
diff
changeset
|
7479 image to see how many sub-images it contains. Pinging is faster |
109876
224f72d9b53f
some minor cosmetic fixes in comments
Joakim <joakim@localhost.localdomain>
parents:
109875
diff
changeset
|
7480 than loading the image to find out things about it. */ |
109860
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7481 image = image_spec_value (img->spec, QCindex, NULL); |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7482 ino = INTEGERP (image) ? XFASTINT (image) : 0; |
110184
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7483 ping_wand = NewMagickWand (); |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7484 MagickSetResolution (ping_wand, 2, 2); |
109868
c1ae0a9b14a1
reworked :index functionality a bit so its faster
Joakim <joakim@localhost.localdomain>
parents:
109866
diff
changeset
|
7485 if (filename != NULL) |
c1ae0a9b14a1
reworked :index functionality a bit so its faster
Joakim <joakim@localhost.localdomain>
parents:
109866
diff
changeset
|
7486 { |
110184
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7487 status = MagickPingImage (ping_wand, filename); |
109868
c1ae0a9b14a1
reworked :index functionality a bit so its faster
Joakim <joakim@localhost.localdomain>
parents:
109866
diff
changeset
|
7488 } |
c1ae0a9b14a1
reworked :index functionality a bit so its faster
Joakim <joakim@localhost.localdomain>
parents:
109866
diff
changeset
|
7489 else |
c1ae0a9b14a1
reworked :index functionality a bit so its faster
Joakim <joakim@localhost.localdomain>
parents:
109866
diff
changeset
|
7490 { |
110184
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7491 status = MagickPingImageBlob (ping_wand, contents, size); |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7492 } |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7493 |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7494 if (ino >= MagickGetNumberImages (ping_wand)) |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7495 { |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7496 image_error ("Invalid image number `%s' in image `%s'", |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7497 image, img->spec); |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7498 DestroyMagickWand (ping_wand); |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7499 return 0; |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7500 } |
109860
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7501 |
109868
c1ae0a9b14a1
reworked :index functionality a bit so its faster
Joakim <joakim@localhost.localdomain>
parents:
109866
diff
changeset
|
7502 if (MagickGetNumberImages(ping_wand) > 1) |
109861
8e0241dfb81c
cosmetics, and changing of defconst to defcustom
Joakim <joakim@localhost.localdomain>
parents:
109860
diff
changeset
|
7503 img->data.lisp_val = |
8e0241dfb81c
cosmetics, and changing of defconst to defcustom
Joakim <joakim@localhost.localdomain>
parents:
109860
diff
changeset
|
7504 Fcons (Qcount, |
110184
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7505 Fcons (make_number (MagickGetNumberImages (ping_wand)), |
109861
8e0241dfb81c
cosmetics, and changing of defconst to defcustom
Joakim <joakim@localhost.localdomain>
parents:
109860
diff
changeset
|
7506 img->data.lisp_val)); |
109868
c1ae0a9b14a1
reworked :index functionality a bit so its faster
Joakim <joakim@localhost.localdomain>
parents:
109866
diff
changeset
|
7507 |
c1ae0a9b14a1
reworked :index functionality a bit so its faster
Joakim <joakim@localhost.localdomain>
parents:
109866
diff
changeset
|
7508 DestroyMagickWand (ping_wand); |
c1ae0a9b14a1
reworked :index functionality a bit so its faster
Joakim <joakim@localhost.localdomain>
parents:
109866
diff
changeset
|
7509 /* Now, after pinging, we know how many images are inside the |
109876
224f72d9b53f
some minor cosmetic fixes in comments
Joakim <joakim@localhost.localdomain>
parents:
109875
diff
changeset
|
7510 file. If its not a bundle, just one. */ |
109868
c1ae0a9b14a1
reworked :index functionality a bit so its faster
Joakim <joakim@localhost.localdomain>
parents:
109866
diff
changeset
|
7511 |
c1ae0a9b14a1
reworked :index functionality a bit so its faster
Joakim <joakim@localhost.localdomain>
parents:
109866
diff
changeset
|
7512 if (filename != NULL) |
c1ae0a9b14a1
reworked :index functionality a bit so its faster
Joakim <joakim@localhost.localdomain>
parents:
109866
diff
changeset
|
7513 { |
110184
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7514 image_info = CloneImageInfo ((ImageInfo *) NULL); |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7515 (void) strcpy (image_info->filename, filename); |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7516 image_info->number_scenes = 1; |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7517 image_info->scene = ino; |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7518 exception = AcquireExceptionInfo (); |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7519 |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7520 im_image = ReadImage (image_info, exception); |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7521 CatchException (exception); |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7522 |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7523 image_wand = NewMagickWandFromImage (im_image); |
109868
c1ae0a9b14a1
reworked :index functionality a bit so its faster
Joakim <joakim@localhost.localdomain>
parents:
109866
diff
changeset
|
7524 } |
109860
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7525 else |
109868
c1ae0a9b14a1
reworked :index functionality a bit so its faster
Joakim <joakim@localhost.localdomain>
parents:
109866
diff
changeset
|
7526 { |
110184
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7527 image_wand = NewMagickWand (); |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7528 status = MagickReadImageBlob (image_wand, contents, size); |
109868
c1ae0a9b14a1
reworked :index functionality a bit so its faster
Joakim <joakim@localhost.localdomain>
parents:
109866
diff
changeset
|
7529 } |
c1ae0a9b14a1
reworked :index functionality a bit so its faster
Joakim <joakim@localhost.localdomain>
parents:
109866
diff
changeset
|
7530 image_error ("im read failed", Qnil, Qnil); |
c1ae0a9b14a1
reworked :index functionality a bit so its faster
Joakim <joakim@localhost.localdomain>
parents:
109866
diff
changeset
|
7531 if (status == MagickFalse) goto imagemagick_error; |
c1ae0a9b14a1
reworked :index functionality a bit so its faster
Joakim <joakim@localhost.localdomain>
parents:
109866
diff
changeset
|
7532 |
109861
8e0241dfb81c
cosmetics, and changing of defconst to defcustom
Joakim <joakim@localhost.localdomain>
parents:
109860
diff
changeset
|
7533 /* If width and/or height is set in the display spec assume we want |
109868
c1ae0a9b14a1
reworked :index functionality a bit so its faster
Joakim <joakim@localhost.localdomain>
parents:
109866
diff
changeset
|
7534 to scale to those values. if either h or w is unspecified, the |
c1ae0a9b14a1
reworked :index functionality a bit so its faster
Joakim <joakim@localhost.localdomain>
parents:
109866
diff
changeset
|
7535 unspecified should be calculated from the specified to preserve |
109876
224f72d9b53f
some minor cosmetic fixes in comments
Joakim <joakim@localhost.localdomain>
parents:
109875
diff
changeset
|
7536 aspect ratio. */ |
109860
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7537 |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7538 value = image_spec_value (img->spec, QCwidth, NULL); |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7539 desired_width = (INTEGERP (value) ? XFASTINT (value) : -1); |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7540 value = image_spec_value (img->spec, QCheight, NULL); |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7541 desired_height = (INTEGERP (value) ? XFASTINT (value) : -1); |
109866
73512e4aa257
image-mode changes. removed the imagemagick specific :geometry and :crop interface that wasnt very good.
Joakim <joakim@localhost.localdomain>
parents:
109864
diff
changeset
|
7542 |
109864
458fda2a5cff
improved lisp interface to scaling, doc changed acordingly
Joakim <joakim@localhost.localdomain>
parents:
109861
diff
changeset
|
7543 height = MagickGetImageHeight (image_wand); |
458fda2a5cff
improved lisp interface to scaling, doc changed acordingly
Joakim <joakim@localhost.localdomain>
parents:
109861
diff
changeset
|
7544 width = MagickGetImageWidth (image_wand); |
458fda2a5cff
improved lisp interface to scaling, doc changed acordingly
Joakim <joakim@localhost.localdomain>
parents:
109861
diff
changeset
|
7545 |
458fda2a5cff
improved lisp interface to scaling, doc changed acordingly
Joakim <joakim@localhost.localdomain>
parents:
109861
diff
changeset
|
7546 if(desired_width != -1 && desired_height == -1) |
458fda2a5cff
improved lisp interface to scaling, doc changed acordingly
Joakim <joakim@localhost.localdomain>
parents:
109861
diff
changeset
|
7547 { |
109876
224f72d9b53f
some minor cosmetic fixes in comments
Joakim <joakim@localhost.localdomain>
parents:
109875
diff
changeset
|
7548 /* w known, calculate h. */ |
110184
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7549 desired_height = (double) desired_width / width * height; |
109864
458fda2a5cff
improved lisp interface to scaling, doc changed acordingly
Joakim <joakim@localhost.localdomain>
parents:
109861
diff
changeset
|
7550 } |
458fda2a5cff
improved lisp interface to scaling, doc changed acordingly
Joakim <joakim@localhost.localdomain>
parents:
109861
diff
changeset
|
7551 if(desired_width == -1 && desired_height != -1) |
458fda2a5cff
improved lisp interface to scaling, doc changed acordingly
Joakim <joakim@localhost.localdomain>
parents:
109861
diff
changeset
|
7552 { |
109876
224f72d9b53f
some minor cosmetic fixes in comments
Joakim <joakim@localhost.localdomain>
parents:
109875
diff
changeset
|
7553 /* h known, calculate w. */ |
110184
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7554 desired_width = (double) desired_height / height * width; |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7555 } |
109860
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7556 if(desired_width != -1 && desired_height != -1) |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7557 { |
110184
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7558 status = MagickScaleImage (image_wand, desired_width, desired_height); |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7559 if (status == MagickFalse) |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7560 { |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7561 image_error ("Imagemagick scale failed", Qnil, Qnil); |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7562 goto imagemagick_error; |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7563 } |
109860
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7564 } |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7565 |
109868
c1ae0a9b14a1
reworked :index functionality a bit so its faster
Joakim <joakim@localhost.localdomain>
parents:
109866
diff
changeset
|
7566 |
c1ae0a9b14a1
reworked :index functionality a bit so its faster
Joakim <joakim@localhost.localdomain>
parents:
109866
diff
changeset
|
7567 /* crop behaves similar to image slicing in Emacs but is more memory |
110184
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7568 efficient. */ |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7569 crop = image_spec_value (img->spec, QCcrop, NULL); |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7570 |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7571 if (CONSP (crop) && INTEGERP (XCAR (crop))) |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7572 { |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7573 /* After some testing, it seems MagickCropImage is the fastest |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7574 crop function in ImageMagick. This crop function seems to do |
109868
c1ae0a9b14a1
reworked :index functionality a bit so its faster
Joakim <joakim@localhost.localdomain>
parents:
109866
diff
changeset
|
7575 less copying than the alternatives, but it still reads the |
c1ae0a9b14a1
reworked :index functionality a bit so its faster
Joakim <joakim@localhost.localdomain>
parents:
109866
diff
changeset
|
7576 entire image into memory before croping, which is aparently |
110184
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7577 difficult to avoid when using imagemagick. */ |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7578 |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7579 int w, h, x, y; |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7580 w = XFASTINT (XCAR (crop)); |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7581 crop = XCDR (crop); |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7582 if (CONSP (crop) && INTEGERP (XCAR (crop))) |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7583 { |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7584 h = XFASTINT (XCAR (crop)); |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7585 crop = XCDR (crop); |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7586 if (CONSP (crop) && INTEGERP (XCAR (crop))) |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7587 { |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7588 x = XFASTINT (XCAR (crop)); |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7589 crop = XCDR (crop); |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7590 if (CONSP (crop) && INTEGERP (XCAR (crop))) |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7591 { |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7592 y = XFASTINT (XCAR (crop)); |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7593 MagickCropImage (image_wand, w, h, x, y); |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7594 } |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7595 } |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7596 } |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7597 } |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7598 |
109861
8e0241dfb81c
cosmetics, and changing of defconst to defcustom
Joakim <joakim@localhost.localdomain>
parents:
109860
diff
changeset
|
7599 /* Furthermore :rotation. we need background color and angle for |
8e0241dfb81c
cosmetics, and changing of defconst to defcustom
Joakim <joakim@localhost.localdomain>
parents:
109860
diff
changeset
|
7600 rotation. */ |
109860
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7601 /* |
109861
8e0241dfb81c
cosmetics, and changing of defconst to defcustom
Joakim <joakim@localhost.localdomain>
parents:
109860
diff
changeset
|
7602 TODO background handling for rotation specified_bg = |
8e0241dfb81c
cosmetics, and changing of defconst to defcustom
Joakim <joakim@localhost.localdomain>
parents:
109860
diff
changeset
|
7603 image_spec_value (img->spec, QCbackground, NULL); if (!STRINGP |
109876
224f72d9b53f
some minor cosmetic fixes in comments
Joakim <joakim@localhost.localdomain>
parents:
109875
diff
changeset
|
7604 (specified_bg). */ |
109860
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7605 value = image_spec_value (img->spec, QCrotation, NULL); |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7606 if (FLOATP (value)) |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7607 { |
110184
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7608 PixelWand* background = NewPixelWand (); |
109860
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7609 PixelSetColor (background, "#ffffff");/*TODO remove hardcode*/ |
110184
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7610 |
109860
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7611 rotation = extract_float (value); |
110184
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7612 |
109860
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7613 status = MagickRotateImage (image_wand, background, rotation); |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7614 DestroyPixelWand (background); |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7615 if (status == MagickFalse) |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7616 { |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7617 image_error ("Imagemagick image rotate failed", Qnil, Qnil); |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7618 goto imagemagick_error; |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7619 } |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7620 } |
110184
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7621 |
109866
73512e4aa257
image-mode changes. removed the imagemagick specific :geometry and :crop interface that wasnt very good.
Joakim <joakim@localhost.localdomain>
parents:
109864
diff
changeset
|
7622 /* Finaly we are done manipulating the image, figure out resulting |
109876
224f72d9b53f
some minor cosmetic fixes in comments
Joakim <joakim@localhost.localdomain>
parents:
109875
diff
changeset
|
7623 width, height, and then transfer ownerwship to Emacs. */ |
109860
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7624 height = MagickGetImageHeight (image_wand); |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7625 width = MagickGetImageWidth (image_wand); |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7626 if (status == MagickFalse) |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7627 { |
110184
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7628 image_error ("Imagemagick image get size failed", Qnil, Qnil); |
109860
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7629 goto imagemagick_error; |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7630 } |
110184
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7631 |
109860
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7632 if (! check_image_size (f, width, height)) |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7633 { |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7634 image_error ("Invalid image size (see `max-image-size')", Qnil, Qnil); |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7635 goto imagemagick_error; |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7636 } |
110184
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7637 |
109860
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7638 /* We can now get a valid pixel buffer from the imagemagick file, if all |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7639 went ok. */ |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7640 |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7641 init_color_table (); |
109861
8e0241dfb81c
cosmetics, and changing of defconst to defcustom
Joakim <joakim@localhost.localdomain>
parents:
109860
diff
changeset
|
7642 imagemagick_rendermethod = (INTEGERP (Vimagemagick_render_type) |
8e0241dfb81c
cosmetics, and changing of defconst to defcustom
Joakim <joakim@localhost.localdomain>
parents:
109860
diff
changeset
|
7643 ? XFASTINT (Vimagemagick_render_type) : 0); |
109860
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7644 if (imagemagick_rendermethod == 0) |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7645 { |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7646 /* Try to create a x pixmap to hold the imagemagick pixmap. */ |
109861
8e0241dfb81c
cosmetics, and changing of defconst to defcustom
Joakim <joakim@localhost.localdomain>
parents:
109860
diff
changeset
|
7647 if (!x_create_x_image_and_pixmap (f, width, height, 0, |
8e0241dfb81c
cosmetics, and changing of defconst to defcustom
Joakim <joakim@localhost.localdomain>
parents:
109860
diff
changeset
|
7648 &ximg, &img->pixmap)) |
109860
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7649 { |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7650 image_error("Imagemagick X bitmap allocation failure", Qnil, Qnil); |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7651 goto imagemagick_error; |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7652 } |
110184
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7653 |
109860
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7654 /* Copy imagegmagick image to x with primitive yet robust pixel |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7655 pusher loop. This has been tested a lot with many different |
109876
224f72d9b53f
some minor cosmetic fixes in comments
Joakim <joakim@localhost.localdomain>
parents:
109875
diff
changeset
|
7656 images. */ |
110184
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7657 |
109860
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7658 /* Copy pixels from the imagemagick image structure to the x image map. */ |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7659 iterator = NewPixelIterator (image_wand); |
110184
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7660 if (iterator == (PixelIterator *) NULL) |
109860
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7661 { |
109861
8e0241dfb81c
cosmetics, and changing of defconst to defcustom
Joakim <joakim@localhost.localdomain>
parents:
109860
diff
changeset
|
7662 image_error ("Imagemagick pixel iterator creation failed", |
8e0241dfb81c
cosmetics, and changing of defconst to defcustom
Joakim <joakim@localhost.localdomain>
parents:
109860
diff
changeset
|
7663 Qnil, Qnil); |
109860
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7664 goto imagemagick_error; |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7665 } |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7666 |
110184
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7667 for (y = 0; y < (long) MagickGetImageHeight (image_wand); y++) |
109860
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7668 { |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7669 pixels = PixelGetNextIteratorRow (iterator, &width); |
110184
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7670 if (pixels == (PixelWand **) NULL) |
109860
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7671 break; |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7672 for (x = 0; x < (long) width; x++) |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7673 { |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7674 PixelGetMagickColor (pixels[x], &pixel); |
109861
8e0241dfb81c
cosmetics, and changing of defconst to defcustom
Joakim <joakim@localhost.localdomain>
parents:
109860
diff
changeset
|
7675 XPutPixel (ximg, x, y, |
8e0241dfb81c
cosmetics, and changing of defconst to defcustom
Joakim <joakim@localhost.localdomain>
parents:
109860
diff
changeset
|
7676 lookup_rgb_color (f, |
8e0241dfb81c
cosmetics, and changing of defconst to defcustom
Joakim <joakim@localhost.localdomain>
parents:
109860
diff
changeset
|
7677 pixel.red, |
8e0241dfb81c
cosmetics, and changing of defconst to defcustom
Joakim <joakim@localhost.localdomain>
parents:
109860
diff
changeset
|
7678 pixel.green, |
8e0241dfb81c
cosmetics, and changing of defconst to defcustom
Joakim <joakim@localhost.localdomain>
parents:
109860
diff
changeset
|
7679 pixel.blue)); |
109860
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7680 } |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7681 } |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7682 DestroyPixelIterator (iterator); |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7683 } |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7684 |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7685 if (imagemagick_rendermethod == 1) |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7686 { |
109872 | 7687 /* Magicexportimage is normaly faster than pixelpushing. This |
7688 method is also well tested. Some aspects of this method are | |
7689 ad-hoc and needs to be more researched. */ | |
109860
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7690 int imagedepth = 24;/*MagickGetImageDepth(image_wand);*/ |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7691 char* exportdepth = imagedepth <= 8 ? "I" : "BGRP";/*"RGBP";*/ |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7692 /* Try to create a x pixmap to hold the imagemagick pixmap. */ |
109861
8e0241dfb81c
cosmetics, and changing of defconst to defcustom
Joakim <joakim@localhost.localdomain>
parents:
109860
diff
changeset
|
7693 if (!x_create_x_image_and_pixmap (f, width, height, imagedepth, |
110184
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7694 &ximg, &img->pixmap)) |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7695 { |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7696 image_error("Imagemagick X bitmap allocation failure", Qnil, Qnil); |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7697 goto imagemagick_error; |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7698 } |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7699 |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7700 |
109860
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7701 /* Oddly, the below code doesnt seem to work:*/ |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7702 /* switch(ximg->bitmap_unit){ */ |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7703 /* case 8: */ |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7704 /* pixelwidth=CharPixel; */ |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7705 /* break; */ |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7706 /* case 16: */ |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7707 /* pixelwidth=ShortPixel; */ |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7708 /* break; */ |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7709 /* case 32: */ |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7710 /* pixelwidth=LongPixel; */ |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7711 /* break; */ |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7712 /* } */ |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7713 /* |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7714 Here im just guessing the format of the bitmap. |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7715 happens to work fine for: |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7716 - bw djvu images |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7717 on rgb display. |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7718 seems about 3 times as fast as pixel pushing(not carefully measured) |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7719 */ |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7720 pixelwidth = CharPixel;/*??? TODO figure out*/ |
110184
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7721 #ifdef HAVE_MAGICKEXPORTIMAGEPIXELS |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7722 MagickExportImagePixels (image_wand, |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7723 0, 0, |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7724 width, height, |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7725 exportdepth, |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7726 pixelwidth, |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7727 /*&(img->pixmap));*/ |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7728 ximg->data); |
109860
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7729 #else |
110184
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7730 image_error ("You dont have MagickExportImagePixels, upgrade ImageMagick!", |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7731 Qnil, Qnil); |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7732 #endif |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7733 } |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7734 |
109860
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7735 |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7736 #ifdef COLOR_TABLE_SUPPORT |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7737 /* Remember colors allocated for this image. */ |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7738 img->colors = colors_in_color_table (&img->ncolors); |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7739 free_color_table (); |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7740 #endif /* COLOR_TABLE_SUPPORT */ |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7741 |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7742 |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7743 img->width = width; |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7744 img->height = height; |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7745 |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7746 /* Put the image into the pixmap, then free the X image and its |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7747 buffer. */ |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7748 x_put_x_image (f, ximg, img->pixmap, width, height); |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7749 x_destroy_x_image (ximg); |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7750 |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7751 |
109868
c1ae0a9b14a1
reworked :index functionality a bit so its faster
Joakim <joakim@localhost.localdomain>
parents:
109866
diff
changeset
|
7752 /* Final cleanup. image_wand should be the only resource left. */ |
109860
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7753 DestroyMagickWand (image_wand); |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7754 |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7755 return 1; |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7756 |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7757 imagemagick_error: |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7758 /* TODO more cleanup. */ |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7759 image_error ("Error parsing IMAGEMAGICK image `%s'", img->spec, Qnil); |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7760 return 0; |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7761 } |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7762 |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7763 |
109849 | 7764 /* Load IMAGEMAGICK image IMG for use on frame F. Value is non-zero if |
7765 successful. this function will go into the imagemagick_type structure, and | |
7766 the prototype thus needs to be compatible with that structure. */ | |
7767 | |
7768 static int | |
109860
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7769 imagemagick_load (struct frame *f, |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7770 struct image *img) |
109849 | 7771 { |
7772 int success_p = 0; | |
7773 Lisp_Object file_name; | |
7774 | |
7775 /* If IMG->spec specifies a file name, create a non-file spec from it. */ | |
7776 file_name = image_spec_value (img->spec, QCfile, NULL); | |
7777 if (STRINGP (file_name)) | |
7778 { | |
7779 Lisp_Object file; | |
7780 | |
7781 file = x_find_image_file (file_name); | |
7782 if (!STRINGP (file)) | |
7783 { | |
7784 image_error ("Cannot find image file `%s'", file_name, Qnil); | |
7785 return 0; | |
7786 } | |
110184
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7787 success_p = imagemagick_load_image (f, img, 0, 0, SDATA (file)); |
109849 | 7788 } |
7789 /* Else its not a file, its a lisp object. Load the image from a | |
7790 lisp object rather than a file. */ | |
7791 else | |
7792 { | |
7793 Lisp_Object data; | |
7794 | |
7795 data = image_spec_value (img->spec, QCdata, NULL); | |
110184
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7796 if (!STRINGP (data)) |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7797 { |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7798 image_error ("Invalid image data `%s'", data, Qnil); |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7799 return 0; |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7800 } |
109861
8e0241dfb81c
cosmetics, and changing of defconst to defcustom
Joakim <joakim@localhost.localdomain>
parents:
109860
diff
changeset
|
7801 success_p = imagemagick_load_image (f, img, SDATA (data), |
8e0241dfb81c
cosmetics, and changing of defconst to defcustom
Joakim <joakim@localhost.localdomain>
parents:
109860
diff
changeset
|
7802 SBYTES (data), NULL); |
109849 | 7803 } |
7804 | |
7805 return success_p; | |
7806 } | |
7807 | |
109861
8e0241dfb81c
cosmetics, and changing of defconst to defcustom
Joakim <joakim@localhost.localdomain>
parents:
109860
diff
changeset
|
7808 /* Structure describing the image type `imagemagick'. Its the same |
8e0241dfb81c
cosmetics, and changing of defconst to defcustom
Joakim <joakim@localhost.localdomain>
parents:
109860
diff
changeset
|
7809 type of structure defined for all image formats, handled by Emacs |
8e0241dfb81c
cosmetics, and changing of defconst to defcustom
Joakim <joakim@localhost.localdomain>
parents:
109860
diff
changeset
|
7810 image functions. See struct image_type in dispextern.h. */ |
109860
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7811 |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7812 static struct image_type imagemagick_type = |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7813 { |
109861
8e0241dfb81c
cosmetics, and changing of defconst to defcustom
Joakim <joakim@localhost.localdomain>
parents:
109860
diff
changeset
|
7814 /* An identifier showing that this is an image structure for the |
8e0241dfb81c
cosmetics, and changing of defconst to defcustom
Joakim <joakim@localhost.localdomain>
parents:
109860
diff
changeset
|
7815 IMAGEMAGICK format. */ |
109860
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7816 &Qimagemagick, |
109861
8e0241dfb81c
cosmetics, and changing of defconst to defcustom
Joakim <joakim@localhost.localdomain>
parents:
109860
diff
changeset
|
7817 /* Handle to a function that can be used to identify a IMAGEMAGICK |
8e0241dfb81c
cosmetics, and changing of defconst to defcustom
Joakim <joakim@localhost.localdomain>
parents:
109860
diff
changeset
|
7818 file. */ |
109860
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7819 imagemagick_image_p, |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7820 /* Handle to function used to load a IMAGEMAGICK file. */ |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7821 imagemagick_load, |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7822 /* Handle to function to free resources for IMAGEMAGICK. */ |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7823 imagemagick_clear_image, |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7824 /* An internal field to link to the next image type in a list of |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7825 image types, will be filled in when registering the format. */ |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7826 NULL |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7827 }; |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7828 |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7829 |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7830 |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7831 |
110184
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7832 DEFUN ("imagemagick-types", Fimagemagick_types, Simagemagick_types, 0, 0, 0, |
109849 | 7833 doc: /* Return image file types supported by ImageMagick. |
110176
e04dbb6aa46a
* image.c (Fimagemagick_types): Doc fix.
Andreas Schwab <schwab@linux-m68k.org>
parents:
110175
diff
changeset
|
7834 Since ImageMagick recognizes a lot of file-types that clash with Emacs, |
e04dbb6aa46a
* image.c (Fimagemagick_types): Doc fix.
Andreas Schwab <schwab@linux-m68k.org>
parents:
110175
diff
changeset
|
7835 such as .c, we want to be able to alter the list at the lisp level. */) |
109871 | 7836 (void) |
109849 | 7837 { |
7838 Lisp_Object typelist = Qnil; | |
110175
6488e31d7e94
Fix type mismatch in ImageMagick loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110174
diff
changeset
|
7839 unsigned long numf; |
109849 | 7840 ExceptionInfo ex; |
110184
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7841 char **imtypes = GetMagickList ("*", &numf, &ex); |
109849 | 7842 int i; |
7843 Lisp_Object Qimagemagicktype; | |
109860
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7844 for (i = 0; i < numf; i++) |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7845 { |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
7846 Qimagemagicktype = intern (imtypes[i]); |
109868
c1ae0a9b14a1
reworked :index functionality a bit so its faster
Joakim <joakim@localhost.localdomain>
parents:
109866
diff
changeset
|
7847 typelist = Fcons (Qimagemagicktype, typelist); |
c1ae0a9b14a1
reworked :index functionality a bit so its faster
Joakim <joakim@localhost.localdomain>
parents:
109866
diff
changeset
|
7848 } |
c1ae0a9b14a1
reworked :index functionality a bit so its faster
Joakim <joakim@localhost.localdomain>
parents:
109866
diff
changeset
|
7849 return typelist; |
109849 | 7850 } |
110184
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
7851 |
109849 | 7852 #endif /* defined (HAVE_IMAGEMAGICK) */ |
7853 | |
7854 | |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7855 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
7856 /*********************************************************************** |
82518
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
7857 SVG |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
7858 ***********************************************************************/ |
82518
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
7859 |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
7860 #if defined (HAVE_RSVG) |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
7861 |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
7862 /* Function prototypes. */ |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
7863 |
109100
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
7864 static int svg_image_p (Lisp_Object object); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
7865 static int svg_load (struct frame *f, struct image *img); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
7866 |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
7867 static int svg_load_image (struct frame *, struct image *, |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
7868 unsigned char *, unsigned int); |
82518
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
7869 |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
7870 /* The symbol `svg' identifying images of this type. */ |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
7871 |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
7872 Lisp_Object Qsvg; |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
7873 |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
7874 /* Indices of image specification fields in svg_format, below. */ |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
7875 |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
7876 enum svg_keyword_index |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
7877 { |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
7878 SVG_TYPE, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
7879 SVG_DATA, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
7880 SVG_FILE, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
7881 SVG_ASCENT, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
7882 SVG_MARGIN, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
7883 SVG_RELIEF, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
7884 SVG_ALGORITHM, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
7885 SVG_HEURISTIC_MASK, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
7886 SVG_MASK, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
7887 SVG_BACKGROUND, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
7888 SVG_LAST |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
7889 }; |
82518
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
7890 |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
7891 /* Vector of image_keyword structures describing the format |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
7892 of valid user-defined image specifications. */ |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
7893 |
105959
ba3ffbd9c422
* process.c (ifflag_def): Make flag_sym constant.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
105877
diff
changeset
|
7894 static const struct image_keyword svg_format[SVG_LAST] = |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
7895 { |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
7896 {":type", IMAGE_SYMBOL_VALUE, 1}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
7897 {":data", IMAGE_STRING_VALUE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
7898 {":file", IMAGE_STRING_VALUE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
7899 {":ascent", IMAGE_ASCENT_VALUE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
7900 {":margin", IMAGE_POSITIVE_INTEGER_VALUE_OR_PAIR, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
7901 {":relief", IMAGE_INTEGER_VALUE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
7902 {":conversion", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
7903 {":heuristic-mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
7904 {":mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
7905 {":background", IMAGE_STRING_OR_NIL_VALUE, 0} |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
7906 }; |
82518
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
7907 |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
7908 /* Structure describing the image type `svg'. Its the same type of |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
7909 structure defined for all image formats, handled by emacs image |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
7910 functions. See struct image_type in dispextern.h. */ |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
7911 |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
7912 static struct image_type svg_type = |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
7913 { |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
7914 /* An identifier showing that this is an image structure for the SVG format. */ |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
7915 &Qsvg, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
7916 /* Handle to a function that can be used to identify a SVG file. */ |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
7917 svg_image_p, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
7918 /* Handle to function used to load a SVG file. */ |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
7919 svg_load, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
7920 /* Handle to function to free sresources for SVG. */ |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
7921 x_clear_image, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
7922 /* An internal field to link to the next image type in a list of |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
7923 image types, will be filled in when registering the format. */ |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
7924 NULL |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
7925 }; |
82518
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
7926 |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
7927 |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
7928 /* Return non-zero if OBJECT is a valid SVG image specification. Do |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
7929 this by calling parse_image_spec and supplying the keywords that |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
7930 identify the SVG format. */ |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
7931 |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
7932 static int |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
7933 svg_image_p (Lisp_Object object) |
82518
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
7934 { |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
7935 struct image_keyword fmt[SVG_LAST]; |
109165
750db9f3e6d8
Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents:
109160
diff
changeset
|
7936 memcpy (fmt, svg_format, sizeof fmt); |
82518
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
7937 |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
7938 if (!parse_image_spec (object, fmt, SVG_LAST, Qsvg)) |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
7939 return 0; |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
7940 |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
7941 /* Must specify either the :data or :file keyword. */ |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
7942 return fmt[SVG_FILE].count + fmt[SVG_DATA].count == 1; |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
7943 } |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
7944 |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
7945 #include <librsvg/rsvg.h> |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
7946 |
82795
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
7947 #ifdef HAVE_NTGUI |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
7948 |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
7949 /* SVG library functions. */ |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
7950 DEF_IMGLIB_FN (rsvg_handle_new); |
97012
c5f36ea75cba
(svg_load_image): Use rsvg_handle_get_dimensions to check that image
Chong Yidong <cyd@stupidchicken.com>
parents:
97007
diff
changeset
|
7951 DEF_IMGLIB_FN (rsvg_handle_get_dimensions); |
82795
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
7952 DEF_IMGLIB_FN (rsvg_handle_write); |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
7953 DEF_IMGLIB_FN (rsvg_handle_close); |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
7954 DEF_IMGLIB_FN (rsvg_handle_get_pixbuf); |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
7955 DEF_IMGLIB_FN (rsvg_handle_free); |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
7956 |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
7957 DEF_IMGLIB_FN (gdk_pixbuf_get_width); |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
7958 DEF_IMGLIB_FN (gdk_pixbuf_get_height); |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
7959 DEF_IMGLIB_FN (gdk_pixbuf_get_pixels); |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
7960 DEF_IMGLIB_FN (gdk_pixbuf_get_rowstride); |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
7961 DEF_IMGLIB_FN (gdk_pixbuf_get_colorspace); |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
7962 DEF_IMGLIB_FN (gdk_pixbuf_get_n_channels); |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
7963 DEF_IMGLIB_FN (gdk_pixbuf_get_has_alpha); |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
7964 DEF_IMGLIB_FN (gdk_pixbuf_get_bits_per_sample); |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
7965 |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
7966 DEF_IMGLIB_FN (g_type_init); |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
7967 DEF_IMGLIB_FN (g_object_unref); |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
7968 DEF_IMGLIB_FN (g_error_free); |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
7969 |
100826 | 7970 Lisp_Object Qgdk_pixbuf, Qglib, Qgobject; |
82795
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
7971 |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
7972 static int |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
7973 init_svg_functions (Lisp_Object libraries) |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
7974 { |
100826 | 7975 HMODULE library, gdklib, glib, gobject; |
82795
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
7976 |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
7977 if (!(glib = w32_delayed_load (libraries, Qglib)) |
100826 | 7978 || !(gobject = w32_delayed_load (libraries, Qgobject)) |
82795
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
7979 || !(gdklib = w32_delayed_load (libraries, Qgdk_pixbuf)) |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
7980 || !(library = w32_delayed_load (libraries, Qsvg))) |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
7981 return 0; |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
7982 |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
7983 LOAD_IMGLIB_FN (library, rsvg_handle_new); |
97012
c5f36ea75cba
(svg_load_image): Use rsvg_handle_get_dimensions to check that image
Chong Yidong <cyd@stupidchicken.com>
parents:
97007
diff
changeset
|
7984 LOAD_IMGLIB_FN (library, rsvg_handle_get_dimensions); |
82795
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
7985 LOAD_IMGLIB_FN (library, rsvg_handle_write); |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
7986 LOAD_IMGLIB_FN (library, rsvg_handle_close); |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
7987 LOAD_IMGLIB_FN (library, rsvg_handle_get_pixbuf); |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
7988 LOAD_IMGLIB_FN (library, rsvg_handle_free); |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
7989 |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
7990 LOAD_IMGLIB_FN (gdklib, gdk_pixbuf_get_width); |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
7991 LOAD_IMGLIB_FN (gdklib, gdk_pixbuf_get_height); |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
7992 LOAD_IMGLIB_FN (gdklib, gdk_pixbuf_get_pixels); |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
7993 LOAD_IMGLIB_FN (gdklib, gdk_pixbuf_get_rowstride); |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
7994 LOAD_IMGLIB_FN (gdklib, gdk_pixbuf_get_colorspace); |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
7995 LOAD_IMGLIB_FN (gdklib, gdk_pixbuf_get_n_channels); |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
7996 LOAD_IMGLIB_FN (gdklib, gdk_pixbuf_get_has_alpha); |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
7997 LOAD_IMGLIB_FN (gdklib, gdk_pixbuf_get_bits_per_sample); |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
7998 |
100826 | 7999 LOAD_IMGLIB_FN (gobject, g_type_init); |
8000 LOAD_IMGLIB_FN (gobject, g_object_unref); | |
82795
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
8001 LOAD_IMGLIB_FN (glib, g_error_free); |
100826 | 8002 |
82795
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
8003 return 1; |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
8004 } |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
8005 |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
8006 #else |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
8007 /* The following aliases for library functions allow dynamic loading |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
8008 to be used on some platforms. */ |
82518
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8009 #define fn_rsvg_handle_new rsvg_handle_new |
97012
c5f36ea75cba
(svg_load_image): Use rsvg_handle_get_dimensions to check that image
Chong Yidong <cyd@stupidchicken.com>
parents:
97007
diff
changeset
|
8010 #define fn_rsvg_handle_get_dimensions rsvg_handle_get_dimensions |
82518
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8011 #define fn_rsvg_handle_write rsvg_handle_write |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8012 #define fn_rsvg_handle_close rsvg_handle_close |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8013 #define fn_rsvg_handle_get_pixbuf rsvg_handle_get_pixbuf |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8014 #define fn_rsvg_handle_free rsvg_handle_free |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8015 |
82795
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
8016 #define fn_gdk_pixbuf_get_width gdk_pixbuf_get_width |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
8017 #define fn_gdk_pixbuf_get_height gdk_pixbuf_get_height |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
8018 #define fn_gdk_pixbuf_get_pixels gdk_pixbuf_get_pixels |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
8019 #define fn_gdk_pixbuf_get_rowstride gdk_pixbuf_get_rowstride |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
8020 #define fn_gdk_pixbuf_get_colorspace gdk_pixbuf_get_colorspace |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
8021 #define fn_gdk_pixbuf_get_n_channels gdk_pixbuf_get_n_channels |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
8022 #define fn_gdk_pixbuf_get_has_alpha gdk_pixbuf_get_has_alpha |
82518
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8023 #define fn_gdk_pixbuf_get_bits_per_sample gdk_pixbuf_get_bits_per_sample |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8024 |
82795
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
8025 #define fn_g_type_init g_type_init |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
8026 #define fn_g_object_unref g_object_unref |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
8027 #define fn_g_error_free g_error_free |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
8028 #endif /* !HAVE_NTGUI */ |
82518
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8029 |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8030 /* Load SVG image IMG for use on frame F. Value is non-zero if |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8031 successful. this function will go into the svg_type structure, and |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8032 the prototype thus needs to be compatible with that structure. */ |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8033 |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8034 static int |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
8035 svg_load (struct frame *f, struct image *img) |
82518
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8036 { |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8037 int success_p = 0; |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8038 Lisp_Object file_name; |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8039 |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8040 /* If IMG->spec specifies a file name, create a non-file spec from it. */ |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8041 file_name = image_spec_value (img->spec, QCfile, NULL); |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8042 if (STRINGP (file_name)) |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8043 { |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8044 Lisp_Object file; |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8045 unsigned char *contents; |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8046 int size; |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8047 |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8048 file = x_find_image_file (file_name); |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8049 if (!STRINGP (file)) |
82781
916a16bcfda2
(svg_load_image): Blend with specified background if exists.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82736
diff
changeset
|
8050 { |
916a16bcfda2
(svg_load_image): Blend with specified background if exists.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82736
diff
changeset
|
8051 image_error ("Cannot find image file `%s'", file_name, Qnil); |
916a16bcfda2
(svg_load_image): Blend with specified background if exists.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82736
diff
changeset
|
8052 return 0; |
916a16bcfda2
(svg_load_image): Blend with specified background if exists.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82736
diff
changeset
|
8053 } |
916a16bcfda2
(svg_load_image): Blend with specified background if exists.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82736
diff
changeset
|
8054 |
82518
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8055 /* Read the entire file into memory. */ |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8056 contents = slurp_file (SDATA (file), &size); |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8057 if (contents == NULL) |
82781
916a16bcfda2
(svg_load_image): Blend with specified background if exists.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82736
diff
changeset
|
8058 { |
916a16bcfda2
(svg_load_image): Blend with specified background if exists.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82736
diff
changeset
|
8059 image_error ("Error loading SVG image `%s'", img->spec, Qnil); |
916a16bcfda2
(svg_load_image): Blend with specified background if exists.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82736
diff
changeset
|
8060 return 0; |
916a16bcfda2
(svg_load_image): Blend with specified background if exists.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82736
diff
changeset
|
8061 } |
82518
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8062 /* If the file was slurped into memory properly, parse it. */ |
82781
916a16bcfda2
(svg_load_image): Blend with specified background if exists.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82736
diff
changeset
|
8063 success_p = svg_load_image (f, img, contents, size); |
82518
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8064 xfree (contents); |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8065 } |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8066 /* Else its not a file, its a lisp object. Load the image from a |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8067 lisp object rather than a file. */ |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8068 else |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8069 { |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8070 Lisp_Object data; |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8071 |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8072 data = image_spec_value (img->spec, QCdata, NULL); |
110184
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
8073 if (!STRINGP (data)) |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
8074 { |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
8075 image_error ("Invalid image data `%s'", data, Qnil); |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
8076 return 0; |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
8077 } |
82518
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8078 success_p = svg_load_image (f, img, SDATA (data), SBYTES (data)); |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8079 } |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8080 |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8081 return success_p; |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8082 } |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8083 |
85039
50b33e26718b
(syms_of_image) <image-types>: Fix typo in docstring.
Juanma Barranquero <lekktu@gmail.com>
parents:
84561
diff
changeset
|
8084 /* svg_load_image is a helper function for svg_load, which does the |
50b33e26718b
(syms_of_image) <image-types>: Fix typo in docstring.
Juanma Barranquero <lekktu@gmail.com>
parents:
84561
diff
changeset
|
8085 actual loading given contents and size, apart from frame and image |
50b33e26718b
(syms_of_image) <image-types>: Fix typo in docstring.
Juanma Barranquero <lekktu@gmail.com>
parents:
84561
diff
changeset
|
8086 structures, passed from svg_load. |
50b33e26718b
(syms_of_image) <image-types>: Fix typo in docstring.
Juanma Barranquero <lekktu@gmail.com>
parents:
84561
diff
changeset
|
8087 |
50b33e26718b
(syms_of_image) <image-types>: Fix typo in docstring.
Juanma Barranquero <lekktu@gmail.com>
parents:
84561
diff
changeset
|
8088 Uses librsvg to do most of the image processing. |
50b33e26718b
(syms_of_image) <image-types>: Fix typo in docstring.
Juanma Barranquero <lekktu@gmail.com>
parents:
84561
diff
changeset
|
8089 |
50b33e26718b
(syms_of_image) <image-types>: Fix typo in docstring.
Juanma Barranquero <lekktu@gmail.com>
parents:
84561
diff
changeset
|
8090 Returns non-zero when successful. */ |
82518
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8091 static int |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
8092 svg_load_image (struct frame *f, /* Pointer to emacs frame structure. */ |
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
8093 struct image *img, /* Pointer to emacs image structure. */ |
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
8094 unsigned char *contents, /* String containing the SVG XML data to be parsed. */ |
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
8095 unsigned int size) /* Size of data in bytes. */ |
82518
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8096 { |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8097 RsvgHandle *rsvg_handle; |
97012
c5f36ea75cba
(svg_load_image): Use rsvg_handle_get_dimensions to check that image
Chong Yidong <cyd@stupidchicken.com>
parents:
97007
diff
changeset
|
8098 RsvgDimensionData dimension_data; |
82518
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8099 GError *error = NULL; |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8100 GdkPixbuf *pixbuf; |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8101 int width; |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8102 int height; |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8103 const guint8 *pixels; |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8104 int rowstride; |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8105 XImagePtr ximg; |
82781
916a16bcfda2
(svg_load_image): Blend with specified background if exists.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82736
diff
changeset
|
8106 Lisp_Object specified_bg; |
82518
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8107 XColor background; |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8108 int x; |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8109 int y; |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8110 |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8111 /* g_type_init is a glib function that must be called prior to using |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8112 gnome type library functions. */ |
82795
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
8113 fn_g_type_init (); |
82518
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8114 /* Make a handle to a new rsvg object. */ |
100845
58017ff34d94
* w32term.c (x_query_colors, x_query_color): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
100826
diff
changeset
|
8115 rsvg_handle = (RsvgHandle *) fn_rsvg_handle_new (); |
82518
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8116 |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8117 /* Parse the contents argument and fill in the rsvg_handle. */ |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8118 fn_rsvg_handle_write (rsvg_handle, contents, size, &error); |
97012
c5f36ea75cba
(svg_load_image): Use rsvg_handle_get_dimensions to check that image
Chong Yidong <cyd@stupidchicken.com>
parents:
97007
diff
changeset
|
8119 if (error) goto rsvg_error; |
82518
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8120 |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8121 /* The parsing is complete, rsvg_handle is ready to used, close it |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8122 for further writes. */ |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8123 fn_rsvg_handle_close (rsvg_handle, &error); |
97012
c5f36ea75cba
(svg_load_image): Use rsvg_handle_get_dimensions to check that image
Chong Yidong <cyd@stupidchicken.com>
parents:
97007
diff
changeset
|
8124 if (error) goto rsvg_error; |
c5f36ea75cba
(svg_load_image): Use rsvg_handle_get_dimensions to check that image
Chong Yidong <cyd@stupidchicken.com>
parents:
97007
diff
changeset
|
8125 |
c5f36ea75cba
(svg_load_image): Use rsvg_handle_get_dimensions to check that image
Chong Yidong <cyd@stupidchicken.com>
parents:
97007
diff
changeset
|
8126 fn_rsvg_handle_get_dimensions (rsvg_handle, &dimension_data); |
c5f36ea75cba
(svg_load_image): Use rsvg_handle_get_dimensions to check that image
Chong Yidong <cyd@stupidchicken.com>
parents:
97007
diff
changeset
|
8127 if (! check_image_size (f, dimension_data.width, dimension_data.height)) |
102392
689fbe81edc4
(xbm_read_bitmap_data, png_load, svg_load_image):
Jason Rumney <jasonr@gnu.org>
parents:
101838
diff
changeset
|
8128 { |
689fbe81edc4
(xbm_read_bitmap_data, png_load, svg_load_image):
Jason Rumney <jasonr@gnu.org>
parents:
101838
diff
changeset
|
8129 image_error ("Invalid image size (see `max-image-size')", Qnil, Qnil); |
689fbe81edc4
(xbm_read_bitmap_data, png_load, svg_load_image):
Jason Rumney <jasonr@gnu.org>
parents:
101838
diff
changeset
|
8130 goto rsvg_error; |
689fbe81edc4
(xbm_read_bitmap_data, png_load, svg_load_image):
Jason Rumney <jasonr@gnu.org>
parents:
101838
diff
changeset
|
8131 } |
97007
2b861be36de9
(svg_load_image): Fix last change.
Chong Yidong <cyd@stupidchicken.com>
parents:
97003
diff
changeset
|
8132 |
82518
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8133 /* We can now get a valid pixel buffer from the svg file, if all |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8134 went ok. */ |
100845
58017ff34d94
* w32term.c (x_query_colors, x_query_color): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
100826
diff
changeset
|
8135 pixbuf = (GdkPixbuf *) fn_rsvg_handle_get_pixbuf (rsvg_handle); |
97012
c5f36ea75cba
(svg_load_image): Use rsvg_handle_get_dimensions to check that image
Chong Yidong <cyd@stupidchicken.com>
parents:
97007
diff
changeset
|
8136 if (!pixbuf) goto rsvg_error; |
c5f36ea75cba
(svg_load_image): Use rsvg_handle_get_dimensions to check that image
Chong Yidong <cyd@stupidchicken.com>
parents:
97007
diff
changeset
|
8137 fn_g_object_unref (rsvg_handle); |
82518
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8138 |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8139 /* Extract some meta data from the svg handle. */ |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8140 width = fn_gdk_pixbuf_get_width (pixbuf); |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8141 height = fn_gdk_pixbuf_get_height (pixbuf); |
100845
58017ff34d94
* w32term.c (x_query_colors, x_query_color): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
100826
diff
changeset
|
8142 pixels = (const guint8 *) fn_gdk_pixbuf_get_pixels (pixbuf); |
82518
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8143 rowstride = fn_gdk_pixbuf_get_rowstride (pixbuf); |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8144 |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8145 /* Validate the svg meta data. */ |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8146 eassert (fn_gdk_pixbuf_get_colorspace (pixbuf) == GDK_COLORSPACE_RGB); |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8147 eassert (fn_gdk_pixbuf_get_n_channels (pixbuf) == 4); |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8148 eassert (fn_gdk_pixbuf_get_has_alpha (pixbuf)); |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8149 eassert (fn_gdk_pixbuf_get_bits_per_sample (pixbuf) == 8); |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8150 |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8151 /* Try to create a x pixmap to hold the svg pixmap. */ |
82781
916a16bcfda2
(svg_load_image): Blend with specified background if exists.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82736
diff
changeset
|
8152 if (!x_create_x_image_and_pixmap (f, width, height, 0, &ximg, &img->pixmap)) |
916a16bcfda2
(svg_load_image): Blend with specified background if exists.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82736
diff
changeset
|
8153 { |
82795
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
8154 fn_g_object_unref (pixbuf); |
82781
916a16bcfda2
(svg_load_image): Blend with specified background if exists.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82736
diff
changeset
|
8155 return 0; |
916a16bcfda2
(svg_load_image): Blend with specified background if exists.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82736
diff
changeset
|
8156 } |
82518
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8157 |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8158 init_color_table (); |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8159 |
82781
916a16bcfda2
(svg_load_image): Blend with specified background if exists.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82736
diff
changeset
|
8160 /* Handle alpha channel by combining the image with a background |
916a16bcfda2
(svg_load_image): Blend with specified background if exists.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82736
diff
changeset
|
8161 color. */ |
916a16bcfda2
(svg_load_image): Blend with specified background if exists.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82736
diff
changeset
|
8162 specified_bg = image_spec_value (img->spec, QCbackground, NULL); |
101838
a4a5037b3040
(svg_load_image): Fix last change.
Chong Yidong <cyd@stupidchicken.com>
parents:
101638
diff
changeset
|
8163 if (!STRINGP (specified_bg) |
a4a5037b3040
(svg_load_image): Fix last change.
Chong Yidong <cyd@stupidchicken.com>
parents:
101638
diff
changeset
|
8164 || !x_defined_color (f, SDATA (specified_bg), &background, 0)) |
101638
b6df48c94ca5
* image.c (svg_load_image): Don't right-shift background RGB when
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
100951
diff
changeset
|
8165 { |
b6df48c94ca5
* image.c (svg_load_image): Don't right-shift background RGB when
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
100951
diff
changeset
|
8166 #ifndef HAVE_NS |
b6df48c94ca5
* image.c (svg_load_image): Don't right-shift background RGB when
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
100951
diff
changeset
|
8167 background.pixel = FRAME_BACKGROUND_PIXEL (f); |
b6df48c94ca5
* image.c (svg_load_image): Don't right-shift background RGB when
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
100951
diff
changeset
|
8168 x_query_color (f, &background); |
b6df48c94ca5
* image.c (svg_load_image): Don't right-shift background RGB when
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
100951
diff
changeset
|
8169 #else |
109160
f8660b83cdbf
Fix whitespace to follow coding guidelines.
Juanma Barranquero <lekktu@gmail.com>
parents:
109144
diff
changeset
|
8170 ns_query_color (FRAME_BACKGROUND_COLOR (f), &background, 1); |
101638
b6df48c94ca5
* image.c (svg_load_image): Don't right-shift background RGB when
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
100951
diff
changeset
|
8171 #endif |
b6df48c94ca5
* image.c (svg_load_image): Don't right-shift background RGB when
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
100951
diff
changeset
|
8172 } |
82518
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8173 |
101838
a4a5037b3040
(svg_load_image): Fix last change.
Chong Yidong <cyd@stupidchicken.com>
parents:
101638
diff
changeset
|
8174 /* SVG pixmaps specify transparency in the last byte, so right |
a4a5037b3040
(svg_load_image): Fix last change.
Chong Yidong <cyd@stupidchicken.com>
parents:
101638
diff
changeset
|
8175 shift 8 bits to get rid of it, since emacs doesn't support |
a4a5037b3040
(svg_load_image): Fix last change.
Chong Yidong <cyd@stupidchicken.com>
parents:
101638
diff
changeset
|
8176 transparency. */ |
a4a5037b3040
(svg_load_image): Fix last change.
Chong Yidong <cyd@stupidchicken.com>
parents:
101638
diff
changeset
|
8177 background.red >>= 8; |
a4a5037b3040
(svg_load_image): Fix last change.
Chong Yidong <cyd@stupidchicken.com>
parents:
101638
diff
changeset
|
8178 background.green >>= 8; |
a4a5037b3040
(svg_load_image): Fix last change.
Chong Yidong <cyd@stupidchicken.com>
parents:
101638
diff
changeset
|
8179 background.blue >>= 8; |
a4a5037b3040
(svg_load_image): Fix last change.
Chong Yidong <cyd@stupidchicken.com>
parents:
101638
diff
changeset
|
8180 |
82518
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8181 /* This loop handles opacity values, since Emacs assumes |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8182 non-transparent images. Each pixel must be "flattened" by |
85039
50b33e26718b
(syms_of_image) <image-types>: Fix typo in docstring.
Juanma Barranquero <lekktu@gmail.com>
parents:
84561
diff
changeset
|
8183 calculating the resulting color, given the transparency of the |
50b33e26718b
(syms_of_image) <image-types>: Fix typo in docstring.
Juanma Barranquero <lekktu@gmail.com>
parents:
84561
diff
changeset
|
8184 pixel, and the image background color. */ |
82518
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8185 for (y = 0; y < height; ++y) |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8186 { |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8187 for (x = 0; x < width; ++x) |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8188 { |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8189 unsigned red; |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8190 unsigned green; |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8191 unsigned blue; |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8192 unsigned opacity; |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8193 |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8194 red = *pixels++; |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8195 green = *pixels++; |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8196 blue = *pixels++; |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8197 opacity = *pixels++; |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8198 |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8199 red = ((red * opacity) |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8200 + (background.red * ((1 << 8) - opacity))); |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8201 green = ((green * opacity) |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8202 + (background.green * ((1 << 8) - opacity))); |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8203 blue = ((blue * opacity) |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8204 + (background.blue * ((1 << 8) - opacity))); |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8205 |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8206 XPutPixel (ximg, x, y, lookup_rgb_color (f, red, green, blue)); |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8207 } |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8208 |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8209 pixels += rowstride - 4 * width; |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8210 } |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8211 |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8212 #ifdef COLOR_TABLE_SUPPORT |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8213 /* Remember colors allocated for this image. */ |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8214 img->colors = colors_in_color_table (&img->ncolors); |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8215 free_color_table (); |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8216 #endif /* COLOR_TABLE_SUPPORT */ |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8217 |
82795
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
8218 fn_g_object_unref (pixbuf); |
82518
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8219 |
82781
916a16bcfda2
(svg_load_image): Blend with specified background if exists.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82736
diff
changeset
|
8220 img->width = width; |
916a16bcfda2
(svg_load_image): Blend with specified background if exists.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82736
diff
changeset
|
8221 img->height = height; |
916a16bcfda2
(svg_load_image): Blend with specified background if exists.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82736
diff
changeset
|
8222 |
916a16bcfda2
(svg_load_image): Blend with specified background if exists.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82736
diff
changeset
|
8223 /* Maybe fill in the background field while we have ximg handy. |
916a16bcfda2
(svg_load_image): Blend with specified background if exists.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82736
diff
changeset
|
8224 Casting avoids a GCC warning. */ |
916a16bcfda2
(svg_load_image): Blend with specified background if exists.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82736
diff
changeset
|
8225 IMAGE_BACKGROUND (img, f, (XImagePtr_or_DC)ximg); |
916a16bcfda2
(svg_load_image): Blend with specified background if exists.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82736
diff
changeset
|
8226 |
82518
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8227 /* Put the image into the pixmap, then free the X image and its |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8228 buffer. */ |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8229 x_put_x_image (f, ximg, img->pixmap, width, height); |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8230 x_destroy_x_image (ximg); |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8231 |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8232 return 1; |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8233 |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8234 rsvg_error: |
97012
c5f36ea75cba
(svg_load_image): Use rsvg_handle_get_dimensions to check that image
Chong Yidong <cyd@stupidchicken.com>
parents:
97007
diff
changeset
|
8235 fn_g_object_unref (rsvg_handle); |
82518
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8236 /* FIXME: Use error->message so the user knows what is the actual |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8237 problem with the image. */ |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8238 image_error ("Error parsing SVG image `%s'", img->spec, Qnil); |
82795
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
8239 fn_g_error_free (error); |
82518
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8240 return 0; |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8241 } |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8242 |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8243 #endif /* defined (HAVE_RSVG) */ |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8244 |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8245 |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8246 |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8247 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8248 /*********************************************************************** |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8249 Ghostscript |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8250 ***********************************************************************/ |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8251 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8252 #ifdef HAVE_X_WINDOWS |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8253 #define HAVE_GHOSTSCRIPT 1 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8254 #endif /* HAVE_X_WINDOWS */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8255 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8256 #ifdef HAVE_GHOSTSCRIPT |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8257 |
109100
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
8258 static int gs_image_p (Lisp_Object object); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
8259 static int gs_load (struct frame *f, struct image *img); |
2bc9a0c04c87
Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents:
108746
diff
changeset
|
8260 static void gs_clear_image (struct frame *f, struct image *img); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8261 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8262 /* Keyword symbols. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8263 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8264 Lisp_Object QCloader, QCbounding_box, QCpt_width, QCpt_height; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8265 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8266 /* Indices of image specification fields in gs_format, below. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8267 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8268 enum gs_keyword_index |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8269 { |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8270 GS_TYPE, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8271 GS_PT_WIDTH, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8272 GS_PT_HEIGHT, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8273 GS_FILE, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8274 GS_LOADER, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8275 GS_BOUNDING_BOX, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8276 GS_ASCENT, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8277 GS_MARGIN, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8278 GS_RELIEF, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8279 GS_ALGORITHM, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8280 GS_HEURISTIC_MASK, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8281 GS_MASK, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8282 GS_BACKGROUND, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8283 GS_LAST |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8284 }; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8285 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8286 /* Vector of image_keyword structures describing the format |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8287 of valid user-defined image specifications. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8288 |
105959
ba3ffbd9c422
* process.c (ifflag_def): Make flag_sym constant.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
105877
diff
changeset
|
8289 static const struct image_keyword gs_format[GS_LAST] = |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8290 { |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8291 {":type", IMAGE_SYMBOL_VALUE, 1}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8292 {":pt-width", IMAGE_POSITIVE_INTEGER_VALUE, 1}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8293 {":pt-height", IMAGE_POSITIVE_INTEGER_VALUE, 1}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8294 {":file", IMAGE_STRING_VALUE, 1}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8295 {":loader", IMAGE_FUNCTION_VALUE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8296 {":bounding-box", IMAGE_DONT_CHECK_VALUE_TYPE, 1}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8297 {":ascent", IMAGE_ASCENT_VALUE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8298 {":margin", IMAGE_POSITIVE_INTEGER_VALUE_OR_PAIR, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8299 {":relief", IMAGE_INTEGER_VALUE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8300 {":conversion", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8301 {":heuristic-mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8302 {":mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8303 {":background", IMAGE_STRING_OR_NIL_VALUE, 0} |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8304 }; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8305 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8306 /* Structure describing the image type `ghostscript'. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8307 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8308 static struct image_type gs_type = |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8309 { |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8310 &Qpostscript, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8311 gs_image_p, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8312 gs_load, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8313 gs_clear_image, |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8314 NULL |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8315 }; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8316 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8317 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8318 /* Free X resources of Ghostscript image IMG which is used on frame F. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8319 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8320 static void |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
8321 gs_clear_image (struct frame *f, struct image *img) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8322 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8323 /* IMG->data.ptr_val may contain a recorded colormap. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8324 xfree (img->data.ptr_val); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8325 x_clear_image (f, img); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8326 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8327 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8328 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8329 /* Return non-zero if OBJECT is a valid Ghostscript image |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8330 specification. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8331 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8332 static int |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
8333 gs_image_p (Lisp_Object object) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8334 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8335 struct image_keyword fmt[GS_LAST]; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8336 Lisp_Object tem; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8337 int i; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8338 |
109165
750db9f3e6d8
Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents:
109160
diff
changeset
|
8339 memcpy (fmt, gs_format, sizeof fmt); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8340 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8341 if (!parse_image_spec (object, fmt, GS_LAST, Qpostscript)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8342 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8343 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8344 /* Bounding box must be a list or vector containing 4 integers. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8345 tem = fmt[GS_BOUNDING_BOX].value; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8346 if (CONSP (tem)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8347 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8348 for (i = 0; i < 4; ++i, tem = XCDR (tem)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8349 if (!CONSP (tem) || !INTEGERP (XCAR (tem))) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8350 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8351 if (!NILP (tem)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8352 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8353 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8354 else if (VECTORP (tem)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8355 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8356 if (XVECTOR (tem)->size != 4) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8357 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8358 for (i = 0; i < 4; ++i) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8359 if (!INTEGERP (XVECTOR (tem)->contents[i])) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8360 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8361 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8362 else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8363 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8364 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8365 return 1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8366 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8367 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8368 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8369 /* Load Ghostscript image IMG for use on frame F. Value is non-zero |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8370 if successful. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8371 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8372 static int |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
8373 gs_load (struct frame *f, struct image *img) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8374 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8375 char buffer[100]; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8376 Lisp_Object window_and_pixmap_id = Qnil, loader, pt_height, pt_width; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8377 Lisp_Object frame; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8378 double in_width, in_height; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8379 Lisp_Object pixel_colors = Qnil; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8380 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8381 /* Compute pixel size of pixmap needed from the given size in the |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8382 image specification. Sizes in the specification are in pt. 1 pt |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8383 = 1/72 in, xdpi and ydpi are stored in the frame's X display |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8384 info. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8385 pt_width = image_spec_value (img->spec, QCpt_width, NULL); |
110184
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
8386 in_width = INTEGERP (pt_width) ? XFASTINT (pt_width) / 72.0 : 0; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8387 img->width = in_width * FRAME_X_DISPLAY_INFO (f)->resx; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8388 pt_height = image_spec_value (img->spec, QCpt_height, NULL); |
110184
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
8389 in_height = INTEGERP (pt_height) ? XFASTINT (pt_height) / 72.0 : 0; |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8390 img->height = in_height * FRAME_X_DISPLAY_INFO (f)->resy; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8391 |
66195
ad1acaef1abb
* image.c (Vmax_image_size): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
66013
diff
changeset
|
8392 if (!check_image_size (f, img->width, img->height)) |
ad1acaef1abb
* image.c (Vmax_image_size): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
66013
diff
changeset
|
8393 { |
102392
689fbe81edc4
(xbm_read_bitmap_data, png_load, svg_load_image):
Jason Rumney <jasonr@gnu.org>
parents:
101838
diff
changeset
|
8394 image_error ("Invalid image size (see `max-image-size')", Qnil, Qnil); |
66195
ad1acaef1abb
* image.c (Vmax_image_size): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
66013
diff
changeset
|
8395 return 0; |
ad1acaef1abb
* image.c (Vmax_image_size): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
66013
diff
changeset
|
8396 } |
ad1acaef1abb
* image.c (Vmax_image_size): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
66013
diff
changeset
|
8397 |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8398 /* Create the pixmap. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8399 xassert (img->pixmap == NO_PIXMAP); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8400 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8401 /* Only W32 version did BLOCK_INPUT here. ++kfs */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8402 BLOCK_INPUT; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8403 img->pixmap = XCreatePixmap (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8404 img->width, img->height, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8405 DefaultDepthOfScreen (FRAME_X_SCREEN (f))); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8406 UNBLOCK_INPUT; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8407 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8408 if (!img->pixmap) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8409 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8410 image_error ("Unable to create pixmap for `%s'", img->spec, Qnil); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8411 return 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8412 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8413 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8414 /* Call the loader to fill the pixmap. It returns a process object |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8415 if successful. We do not record_unwind_protect here because |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8416 other places in redisplay like calling window scroll functions |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8417 don't either. Let the Lisp loader use `unwind-protect' instead. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8418 sprintf (buffer, "%lu %lu", |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8419 (unsigned long) FRAME_X_WINDOW (f), |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8420 (unsigned long) img->pixmap); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8421 window_and_pixmap_id = build_string (buffer); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8422 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8423 sprintf (buffer, "%lu %lu", |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8424 FRAME_FOREGROUND_PIXEL (f), |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8425 FRAME_BACKGROUND_PIXEL (f)); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8426 pixel_colors = build_string (buffer); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8427 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8428 XSETFRAME (frame, f); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8429 loader = image_spec_value (img->spec, QCloader, NULL); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8430 if (NILP (loader)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8431 loader = intern ("gs-load-image"); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8432 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8433 img->data.lisp_val = call6 (loader, frame, img->spec, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8434 make_number (img->width), |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8435 make_number (img->height), |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8436 window_and_pixmap_id, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8437 pixel_colors); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8438 return PROCESSP (img->data.lisp_val); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8439 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8440 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8441 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8442 /* Kill the Ghostscript process that was started to fill PIXMAP on |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8443 frame F. Called from XTread_socket when receiving an event |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8444 telling Emacs that Ghostscript has finished drawing. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8445 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8446 void |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
8447 x_kill_gs_process (Pixmap pixmap, struct frame *f) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8448 { |
92109
4d9fc08769fa
Consolidate the image_cache to the terminal struct.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
87649
diff
changeset
|
8449 struct image_cache *c = FRAME_IMAGE_CACHE (f); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8450 int class, i; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8451 struct image *img; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8452 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8453 /* Find the image containing PIXMAP. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8454 for (i = 0; i < c->used; ++i) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8455 if (c->images[i]->pixmap == pixmap) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8456 break; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8457 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8458 /* Should someone in between have cleared the image cache, for |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8459 instance, give up. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8460 if (i == c->used) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8461 return; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8462 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8463 /* Kill the GS process. We should have found PIXMAP in the image |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8464 cache and its image should contain a process object. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8465 img = c->images[i]; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8466 xassert (PROCESSP (img->data.lisp_val)); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8467 Fkill_process (img->data.lisp_val, Qnil); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8468 img->data.lisp_val = Qnil; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8469 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8470 #if defined (HAVE_X_WINDOWS) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8471 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8472 /* On displays with a mutable colormap, figure out the colors |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8473 allocated for the image by looking at the pixels of an XImage for |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8474 img->pixmap. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8475 class = FRAME_X_VISUAL (f)->class; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8476 if (class != StaticColor && class != StaticGray && class != TrueColor) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8477 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8478 XImagePtr ximg; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8479 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8480 BLOCK_INPUT; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8481 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8482 /* Try to get an XImage for img->pixmep. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8483 ximg = XGetImage (FRAME_X_DISPLAY (f), img->pixmap, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8484 0, 0, img->width, img->height, ~0, ZPixmap); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8485 if (ximg) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8486 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8487 int x, y; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8488 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8489 /* Initialize the color table. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8490 init_color_table (); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8491 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8492 /* For each pixel of the image, look its color up in the |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8493 color table. After having done so, the color table will |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8494 contain an entry for each color used by the image. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8495 for (y = 0; y < img->height; ++y) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8496 for (x = 0; x < img->width; ++x) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8497 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8498 unsigned long pixel = XGetPixel (ximg, x, y); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8499 lookup_pixel_color (f, pixel); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8500 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8501 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8502 /* Record colors in the image. Free color table and XImage. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8503 #ifdef COLOR_TABLE_SUPPORT |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8504 img->colors = colors_in_color_table (&img->ncolors); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8505 free_color_table (); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8506 #endif |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8507 XDestroyImage (ximg); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8508 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8509 #if 0 /* This doesn't seem to be the case. If we free the colors |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8510 here, we get a BadAccess later in x_clear_image when |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8511 freeing the colors. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8512 /* We have allocated colors once, but Ghostscript has also |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8513 allocated colors on behalf of us. So, to get the |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8514 reference counts right, free them once. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8515 if (img->ncolors) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8516 x_free_colors (f, img->colors, img->ncolors); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8517 #endif |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8518 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8519 else |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8520 image_error ("Cannot get X image of `%s'; colors will not be freed", |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8521 img->spec, Qnil); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8522 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8523 UNBLOCK_INPUT; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8524 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8525 #endif /* HAVE_X_WINDOWS */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8526 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8527 /* Now that we have the pixmap, compute mask and transform the |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8528 image if requested. */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8529 BLOCK_INPUT; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8530 postprocess_image (f, img); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8531 UNBLOCK_INPUT; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8532 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8533 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8534 #endif /* HAVE_GHOSTSCRIPT */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8535 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8536 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8537 /*********************************************************************** |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8538 Tests |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8539 ***********************************************************************/ |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8540 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8541 #if GLYPH_DEBUG |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8542 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8543 DEFUN ("imagep", Fimagep, Simagep, 1, 1, 0, |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8544 doc: /* Value is non-nil if SPEC is a valid image specification. */) |
109179
8cfee7d2955f
Convert DEFUNs to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109165
diff
changeset
|
8545 (Lisp_Object spec) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8546 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8547 return valid_image_p (spec) ? Qt : Qnil; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8548 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8549 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8550 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8551 DEFUN ("lookup-image", Flookup_image, Slookup_image, 1, 1, 0, "") |
109179
8cfee7d2955f
Convert DEFUNs to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109165
diff
changeset
|
8552 (Lisp_Object spec) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8553 { |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8554 int id = -1; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8555 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8556 if (valid_image_p (spec)) |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8557 id = lookup_image (SELECTED_FRAME (), spec); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8558 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8559 debug_print (spec); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8560 return make_number (id); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8561 } |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8562 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8563 #endif /* GLYPH_DEBUG != 0 */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8564 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8565 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8566 /*********************************************************************** |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8567 Initialization |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8568 ***********************************************************************/ |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8569 |
56104
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
8570 #ifdef HAVE_NTGUI |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
8571 /* Image types that rely on external libraries are loaded dynamically |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
8572 if the library is available. */ |
56288
7acb38a05354
(CHECK_LIB_AVAILABLE): Add third parameter LIBRARIES.
Andreas Schwab <schwab@suse.de>
parents:
56132
diff
changeset
|
8573 #define CHECK_LIB_AVAILABLE(image_type, init_lib_fn, libraries) \ |
56104
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
8574 define_image_type (image_type, init_lib_fn (libraries)) |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
8575 #else |
56288
7acb38a05354
(CHECK_LIB_AVAILABLE): Add third parameter LIBRARIES.
Andreas Schwab <schwab@suse.de>
parents:
56132
diff
changeset
|
8576 #define CHECK_LIB_AVAILABLE(image_type, init_lib_fn, libraries) \ |
58846
4d7444f1a64c
(our_fill_input_buffer, jpeg_load, CHECK_LIB_AVAILABLE, init_image):
Richard M. Stallman <rms@gnu.org>
parents:
58752
diff
changeset
|
8577 define_image_type (image_type, 1) |
56104
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
8578 #endif /* HAVE_NTGUI */ |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
8579 |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
8580 DEFUN ("init-image-library", Finit_image_library, Sinit_image_library, 2, 2, 0, |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
8581 doc: /* Initialize image library implementing image type TYPE. |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8582 Return non-nil if TYPE is a supported image type. |
56104
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
8583 |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
8584 Image types pbm and xbm are prebuilt; other types are loaded here. |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
8585 Libraries to load are specified in alist LIBRARIES (usually, the value |
56288
7acb38a05354
(CHECK_LIB_AVAILABLE): Add third parameter LIBRARIES.
Andreas Schwab <schwab@suse.de>
parents:
56132
diff
changeset
|
8586 of `image-library-alist', which see). */) |
109179
8cfee7d2955f
Convert DEFUNs to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
109165
diff
changeset
|
8587 (Lisp_Object type, Lisp_Object libraries) |
56104
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
8588 { |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
8589 Lisp_Object tested; |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
8590 |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
8591 /* Don't try to reload the library. */ |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
8592 tested = Fassq (type, Vimage_type_cache); |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
8593 if (CONSP (tested)) |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
8594 return XCDR (tested); |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
8595 |
97043
9592c50233ab
Remove support for Mac Carbon.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
97034
diff
changeset
|
8596 #if defined (HAVE_XPM) || defined (HAVE_NS) |
56104
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
8597 if (EQ (type, Qxpm)) |
56288
7acb38a05354
(CHECK_LIB_AVAILABLE): Add third parameter LIBRARIES.
Andreas Schwab <schwab@suse.de>
parents:
56132
diff
changeset
|
8598 return CHECK_LIB_AVAILABLE (&xpm_type, init_xpm_functions, libraries); |
56104
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
8599 #endif |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
8600 |
97043
9592c50233ab
Remove support for Mac Carbon.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
97034
diff
changeset
|
8601 #if defined (HAVE_JPEG) || defined (HAVE_NS) |
56104
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
8602 if (EQ (type, Qjpeg)) |
56288
7acb38a05354
(CHECK_LIB_AVAILABLE): Add third parameter LIBRARIES.
Andreas Schwab <schwab@suse.de>
parents:
56132
diff
changeset
|
8603 return CHECK_LIB_AVAILABLE (&jpeg_type, init_jpeg_functions, libraries); |
56104
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
8604 #endif |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
8605 |
97043
9592c50233ab
Remove support for Mac Carbon.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
97034
diff
changeset
|
8606 #if defined (HAVE_TIFF) || defined (HAVE_NS) |
56104
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
8607 if (EQ (type, Qtiff)) |
56288
7acb38a05354
(CHECK_LIB_AVAILABLE): Add third parameter LIBRARIES.
Andreas Schwab <schwab@suse.de>
parents:
56132
diff
changeset
|
8608 return CHECK_LIB_AVAILABLE (&tiff_type, init_tiff_functions, libraries); |
56104
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
8609 #endif |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
8610 |
97043
9592c50233ab
Remove support for Mac Carbon.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
97034
diff
changeset
|
8611 #if defined (HAVE_GIF) || defined (HAVE_NS) |
56104
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
8612 if (EQ (type, Qgif)) |
56288
7acb38a05354
(CHECK_LIB_AVAILABLE): Add third parameter LIBRARIES.
Andreas Schwab <schwab@suse.de>
parents:
56132
diff
changeset
|
8613 return CHECK_LIB_AVAILABLE (&gif_type, init_gif_functions, libraries); |
56104
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
8614 #endif |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
8615 |
97043
9592c50233ab
Remove support for Mac Carbon.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
97034
diff
changeset
|
8616 #if defined (HAVE_PNG) || defined (HAVE_NS) |
56104
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
8617 if (EQ (type, Qpng)) |
56288
7acb38a05354
(CHECK_LIB_AVAILABLE): Add third parameter LIBRARIES.
Andreas Schwab <schwab@suse.de>
parents:
56132
diff
changeset
|
8618 return CHECK_LIB_AVAILABLE (&png_type, init_png_functions, libraries); |
56104
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
8619 #endif |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
8620 |
82518
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8621 #if defined (HAVE_RSVG) |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8622 if (EQ (type, Qsvg)) |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8623 return CHECK_LIB_AVAILABLE (&svg_type, init_svg_functions, libraries); |
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8624 #endif |
82781
916a16bcfda2
(svg_load_image): Blend with specified background if exists.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82736
diff
changeset
|
8625 |
109849 | 8626 #if defined (HAVE_IMAGEMAGICK) |
110184
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
8627 if (EQ (type, Qimagemagick)) |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
8628 { |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
8629 /* MagickWandGenesis() initalizes the imagemagick library. */ |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
8630 MagickWandGenesis (); |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
8631 return CHECK_LIB_AVAILABLE (&imagemagick_type, init_imagemagick_functions, |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
8632 libraries); |
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
8633 } |
109849 | 8634 #endif |
8635 | |
56104
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
8636 #ifdef HAVE_GHOSTSCRIPT |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
8637 if (EQ (type, Qpostscript)) |
56288
7acb38a05354
(CHECK_LIB_AVAILABLE): Add third parameter LIBRARIES.
Andreas Schwab <schwab@suse.de>
parents:
56132
diff
changeset
|
8638 return CHECK_LIB_AVAILABLE (&gs_type, init_gs_functions, libraries); |
56104
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
8639 #endif |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
8640 |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
8641 /* If the type is not recognized, avoid testing it ever again. */ |
56288
7acb38a05354
(CHECK_LIB_AVAILABLE): Add third parameter LIBRARIES.
Andreas Schwab <schwab@suse.de>
parents:
56132
diff
changeset
|
8642 CACHE_IMAGE_TYPE (type, Qnil); |
56104
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
8643 return Qnil; |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
8644 } |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
8645 |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8646 void |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
8647 syms_of_image (void) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8648 { |
64910
eef3e25f6aed
(syms_of_image): Init image_types here, and call define_image_type.
Richard M. Stallman <rms@gnu.org>
parents:
64770
diff
changeset
|
8649 /* Initialize this only once, since that's what we do with Vimage_types |
eef3e25f6aed
(syms_of_image): Init image_types here, and call define_image_type.
Richard M. Stallman <rms@gnu.org>
parents:
64770
diff
changeset
|
8650 and they are supposed to be in sync. Initializing here gives correct |
eef3e25f6aed
(syms_of_image): Init image_types here, and call define_image_type.
Richard M. Stallman <rms@gnu.org>
parents:
64770
diff
changeset
|
8651 operation on GNU/Linux of calling dump-emacs after loading some images. */ |
eef3e25f6aed
(syms_of_image): Init image_types here, and call define_image_type.
Richard M. Stallman <rms@gnu.org>
parents:
64770
diff
changeset
|
8652 image_types = NULL; |
eef3e25f6aed
(syms_of_image): Init image_types here, and call define_image_type.
Richard M. Stallman <rms@gnu.org>
parents:
64770
diff
changeset
|
8653 |
56104
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
8654 /* Must be defined now becase we're going to update it below, while |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
8655 defining the supported image types. */ |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
8656 DEFVAR_LISP ("image-types", &Vimage_types, |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8657 doc: /* List of potentially supported image types. |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8658 Each element of the list is a symbol for an image type, like 'jpeg or 'png. |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8659 To check whether it is really supported, use `image-type-available-p'. */); |
56104
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
8660 Vimage_types = Qnil; |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
8661 |
62815
94db1d097527
(Vimage_library_alist): Moved from image.el.
Juanma Barranquero <lekktu@gmail.com>
parents:
62561
diff
changeset
|
8662 DEFVAR_LISP ("image-library-alist", &Vimage_library_alist, |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8663 doc: /* Alist of image types vs external libraries needed to display them. |
62815
94db1d097527
(Vimage_library_alist): Moved from image.el.
Juanma Barranquero <lekktu@gmail.com>
parents:
62561
diff
changeset
|
8664 |
94db1d097527
(Vimage_library_alist): Moved from image.el.
Juanma Barranquero <lekktu@gmail.com>
parents:
62561
diff
changeset
|
8665 Each element is a list (IMAGE-TYPE LIBRARY...), where the car is a symbol |
94db1d097527
(Vimage_library_alist): Moved from image.el.
Juanma Barranquero <lekktu@gmail.com>
parents:
62561
diff
changeset
|
8666 representing a supported image type, and the rest are strings giving |
94db1d097527
(Vimage_library_alist): Moved from image.el.
Juanma Barranquero <lekktu@gmail.com>
parents:
62561
diff
changeset
|
8667 alternate filenames for the corresponding external libraries. |
94db1d097527
(Vimage_library_alist): Moved from image.el.
Juanma Barranquero <lekktu@gmail.com>
parents:
62561
diff
changeset
|
8668 |
94db1d097527
(Vimage_library_alist): Moved from image.el.
Juanma Barranquero <lekktu@gmail.com>
parents:
62561
diff
changeset
|
8669 Emacs tries to load the libraries in the order they appear on the |
94db1d097527
(Vimage_library_alist): Moved from image.el.
Juanma Barranquero <lekktu@gmail.com>
parents:
62561
diff
changeset
|
8670 list; if none is loaded, the running session of Emacs won't |
94db1d097527
(Vimage_library_alist): Moved from image.el.
Juanma Barranquero <lekktu@gmail.com>
parents:
62561
diff
changeset
|
8671 support the image type. Types 'pbm and 'xbm don't need to be |
78692
6e1f6f80e430
(syms_of_image) <image-library-alist, cross-disabled-images>: Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents:
78450
diff
changeset
|
8672 listed; they are always supported. */); |
62815
94db1d097527
(Vimage_library_alist): Moved from image.el.
Juanma Barranquero <lekktu@gmail.com>
parents:
62561
diff
changeset
|
8673 Vimage_library_alist = Qnil; |
105877
21bdda3ded62
* xterm.c (syms_of_xterm):
Dan Nicolaescu <dann@ics.uci.edu>
parents:
105678
diff
changeset
|
8674 Fput (intern_c_string ("image-library-alist"), Qrisky_local_variable, Qt); |
62815
94db1d097527
(Vimage_library_alist): Moved from image.el.
Juanma Barranquero <lekktu@gmail.com>
parents:
62561
diff
changeset
|
8675 |
66195
ad1acaef1abb
* image.c (Vmax_image_size): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
66013
diff
changeset
|
8676 DEFVAR_LISP ("max-image-size", &Vmax_image_size, |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8677 doc: /* Maximum size of images. |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8678 Emacs will not load an image into memory if its pixel width or |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8679 pixel height exceeds this limit. |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8680 |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8681 If the value is an integer, it directly specifies the maximum |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8682 image height and width, measured in pixels. If it is a floating |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8683 point number, it specifies the maximum image height and width |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8684 as a ratio to the frame height and width. If the value is |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8685 non-numeric, there is no explicit limit on the size of images. */); |
66195
ad1acaef1abb
* image.c (Vmax_image_size): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
66013
diff
changeset
|
8686 Vmax_image_size = make_float (MAX_IMAGE_SIZE); |
ad1acaef1abb
* image.c (Vmax_image_size): New variable.
Chong Yidong <cyd@stupidchicken.com>
parents:
66013
diff
changeset
|
8687 |
56104
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
8688 Vimage_type_cache = Qnil; |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
8689 staticpro (&Vimage_type_cache); |
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
8690 |
105877
21bdda3ded62
* xterm.c (syms_of_xterm):
Dan Nicolaescu <dann@ics.uci.edu>
parents:
105678
diff
changeset
|
8691 Qpbm = intern_c_string ("pbm"); |
64967
30b17a96bd90
(syms_of_image): Init Qxbm, Qpbm before calling define_image_type.
Richard M. Stallman <rms@gnu.org>
parents:
64910
diff
changeset
|
8692 staticpro (&Qpbm); |
82795
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
8693 ADD_IMAGE_TYPE (Qpbm); |
64967
30b17a96bd90
(syms_of_image): Init Qxbm, Qpbm before calling define_image_type.
Richard M. Stallman <rms@gnu.org>
parents:
64910
diff
changeset
|
8694 |
105877
21bdda3ded62
* xterm.c (syms_of_xterm):
Dan Nicolaescu <dann@ics.uci.edu>
parents:
105678
diff
changeset
|
8695 Qxbm = intern_c_string ("xbm"); |
64967
30b17a96bd90
(syms_of_image): Init Qxbm, Qpbm before calling define_image_type.
Richard M. Stallman <rms@gnu.org>
parents:
64910
diff
changeset
|
8696 staticpro (&Qxbm); |
82795
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
8697 ADD_IMAGE_TYPE (Qxbm); |
64967
30b17a96bd90
(syms_of_image): Init Qxbm, Qpbm before calling define_image_type.
Richard M. Stallman <rms@gnu.org>
parents:
64910
diff
changeset
|
8698 |
30b17a96bd90
(syms_of_image): Init Qxbm, Qpbm before calling define_image_type.
Richard M. Stallman <rms@gnu.org>
parents:
64910
diff
changeset
|
8699 define_image_type (&xbm_type, 1); |
30b17a96bd90
(syms_of_image): Init Qxbm, Qpbm before calling define_image_type.
Richard M. Stallman <rms@gnu.org>
parents:
64910
diff
changeset
|
8700 define_image_type (&pbm_type, 1); |
30b17a96bd90
(syms_of_image): Init Qxbm, Qpbm before calling define_image_type.
Richard M. Stallman <rms@gnu.org>
parents:
64910
diff
changeset
|
8701 |
105877
21bdda3ded62
* xterm.c (syms_of_xterm):
Dan Nicolaescu <dann@ics.uci.edu>
parents:
105678
diff
changeset
|
8702 Qcount = intern_c_string ("count"); |
85710
beb909dfc54d
Rewrite abbrev.c in Elisp.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
85254
diff
changeset
|
8703 staticpro (&Qcount); |
107719
9c0ed2d6731a
Rename `image-extension-data' to `image-metadata'.
Juri Linkov <juri@jurta.org>
parents:
106975
diff
changeset
|
8704 Qextension_data = intern_c_string ("extension-data"); |
9c0ed2d6731a
Rename `image-extension-data' to `image-metadata'.
Juri Linkov <juri@jurta.org>
parents:
106975
diff
changeset
|
8705 staticpro (&Qextension_data); |
85710
beb909dfc54d
Rewrite abbrev.c in Elisp.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
85254
diff
changeset
|
8706 |
105877
21bdda3ded62
* xterm.c (syms_of_xterm):
Dan Nicolaescu <dann@ics.uci.edu>
parents:
105678
diff
changeset
|
8707 QCascent = intern_c_string (":ascent"); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8708 staticpro (&QCascent); |
105877
21bdda3ded62
* xterm.c (syms_of_xterm):
Dan Nicolaescu <dann@ics.uci.edu>
parents:
105678
diff
changeset
|
8709 QCmargin = intern_c_string (":margin"); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8710 staticpro (&QCmargin); |
105877
21bdda3ded62
* xterm.c (syms_of_xterm):
Dan Nicolaescu <dann@ics.uci.edu>
parents:
105678
diff
changeset
|
8711 QCrelief = intern_c_string (":relief"); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8712 staticpro (&QCrelief); |
105877
21bdda3ded62
* xterm.c (syms_of_xterm):
Dan Nicolaescu <dann@ics.uci.edu>
parents:
105678
diff
changeset
|
8713 QCconversion = intern_c_string (":conversion"); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8714 staticpro (&QCconversion); |
105877
21bdda3ded62
* xterm.c (syms_of_xterm):
Dan Nicolaescu <dann@ics.uci.edu>
parents:
105678
diff
changeset
|
8715 QCcolor_symbols = intern_c_string (":color-symbols"); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8716 staticpro (&QCcolor_symbols); |
105877
21bdda3ded62
* xterm.c (syms_of_xterm):
Dan Nicolaescu <dann@ics.uci.edu>
parents:
105678
diff
changeset
|
8717 QCheuristic_mask = intern_c_string (":heuristic-mask"); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8718 staticpro (&QCheuristic_mask); |
105877
21bdda3ded62
* xterm.c (syms_of_xterm):
Dan Nicolaescu <dann@ics.uci.edu>
parents:
105678
diff
changeset
|
8719 QCindex = intern_c_string (":index"); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8720 staticpro (&QCindex); |
109849 | 8721 QCgeometry = intern (":geometry"); |
8722 staticpro (&QCgeometry); | |
8723 QCcrop = intern (":crop"); | |
8724 staticpro (&QCcrop); | |
8725 QCrotation = intern (":rotation"); | |
8726 staticpro (&QCrotation); | |
105877
21bdda3ded62
* xterm.c (syms_of_xterm):
Dan Nicolaescu <dann@ics.uci.edu>
parents:
105678
diff
changeset
|
8727 QCmatrix = intern_c_string (":matrix"); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8728 staticpro (&QCmatrix); |
105877
21bdda3ded62
* xterm.c (syms_of_xterm):
Dan Nicolaescu <dann@ics.uci.edu>
parents:
105678
diff
changeset
|
8729 QCcolor_adjustment = intern_c_string (":color-adjustment"); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8730 staticpro (&QCcolor_adjustment); |
105877
21bdda3ded62
* xterm.c (syms_of_xterm):
Dan Nicolaescu <dann@ics.uci.edu>
parents:
105678
diff
changeset
|
8731 QCmask = intern_c_string (":mask"); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8732 staticpro (&QCmask); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8733 |
105877
21bdda3ded62
* xterm.c (syms_of_xterm):
Dan Nicolaescu <dann@ics.uci.edu>
parents:
105678
diff
changeset
|
8734 Qlaplace = intern_c_string ("laplace"); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8735 staticpro (&Qlaplace); |
105877
21bdda3ded62
* xterm.c (syms_of_xterm):
Dan Nicolaescu <dann@ics.uci.edu>
parents:
105678
diff
changeset
|
8736 Qemboss = intern_c_string ("emboss"); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8737 staticpro (&Qemboss); |
105877
21bdda3ded62
* xterm.c (syms_of_xterm):
Dan Nicolaescu <dann@ics.uci.edu>
parents:
105678
diff
changeset
|
8738 Qedge_detection = intern_c_string ("edge-detection"); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8739 staticpro (&Qedge_detection); |
105877
21bdda3ded62
* xterm.c (syms_of_xterm):
Dan Nicolaescu <dann@ics.uci.edu>
parents:
105678
diff
changeset
|
8740 Qheuristic = intern_c_string ("heuristic"); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8741 staticpro (&Qheuristic); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8742 |
105877
21bdda3ded62
* xterm.c (syms_of_xterm):
Dan Nicolaescu <dann@ics.uci.edu>
parents:
105678
diff
changeset
|
8743 Qpostscript = intern_c_string ("postscript"); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8744 staticpro (&Qpostscript); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8745 #ifdef HAVE_GHOSTSCRIPT |
82795
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
8746 ADD_IMAGE_TYPE (Qpostscript); |
105877
21bdda3ded62
* xterm.c (syms_of_xterm):
Dan Nicolaescu <dann@ics.uci.edu>
parents:
105678
diff
changeset
|
8747 QCloader = intern_c_string (":loader"); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8748 staticpro (&QCloader); |
105877
21bdda3ded62
* xterm.c (syms_of_xterm):
Dan Nicolaescu <dann@ics.uci.edu>
parents:
105678
diff
changeset
|
8749 QCbounding_box = intern_c_string (":bounding-box"); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8750 staticpro (&QCbounding_box); |
105877
21bdda3ded62
* xterm.c (syms_of_xterm):
Dan Nicolaescu <dann@ics.uci.edu>
parents:
105678
diff
changeset
|
8751 QCpt_width = intern_c_string (":pt-width"); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8752 staticpro (&QCpt_width); |
105877
21bdda3ded62
* xterm.c (syms_of_xterm):
Dan Nicolaescu <dann@ics.uci.edu>
parents:
105678
diff
changeset
|
8753 QCpt_height = intern_c_string (":pt-height"); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8754 staticpro (&QCpt_height); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8755 #endif /* HAVE_GHOSTSCRIPT */ |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8756 |
97043
9592c50233ab
Remove support for Mac Carbon.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
97034
diff
changeset
|
8757 #if defined (HAVE_XPM) || defined (HAVE_NS) |
105877
21bdda3ded62
* xterm.c (syms_of_xterm):
Dan Nicolaescu <dann@ics.uci.edu>
parents:
105678
diff
changeset
|
8758 Qxpm = intern_c_string ("xpm"); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8759 staticpro (&Qxpm); |
82795
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
8760 ADD_IMAGE_TYPE (Qxpm); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8761 #endif |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8762 |
97043
9592c50233ab
Remove support for Mac Carbon.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
97034
diff
changeset
|
8763 #if defined (HAVE_JPEG) || defined (HAVE_NS) |
105877
21bdda3ded62
* xterm.c (syms_of_xterm):
Dan Nicolaescu <dann@ics.uci.edu>
parents:
105678
diff
changeset
|
8764 Qjpeg = intern_c_string ("jpeg"); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8765 staticpro (&Qjpeg); |
82795
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
8766 ADD_IMAGE_TYPE (Qjpeg); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8767 #endif |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8768 |
97043
9592c50233ab
Remove support for Mac Carbon.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
97034
diff
changeset
|
8769 #if defined (HAVE_TIFF) || defined (HAVE_NS) |
105877
21bdda3ded62
* xterm.c (syms_of_xterm):
Dan Nicolaescu <dann@ics.uci.edu>
parents:
105678
diff
changeset
|
8770 Qtiff = intern_c_string ("tiff"); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8771 staticpro (&Qtiff); |
82795
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
8772 ADD_IMAGE_TYPE (Qtiff); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8773 #endif |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8774 |
97043
9592c50233ab
Remove support for Mac Carbon.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
97034
diff
changeset
|
8775 #if defined (HAVE_GIF) || defined (HAVE_NS) |
105877
21bdda3ded62
* xterm.c (syms_of_xterm):
Dan Nicolaescu <dann@ics.uci.edu>
parents:
105678
diff
changeset
|
8776 Qgif = intern_c_string ("gif"); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8777 staticpro (&Qgif); |
82795
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
8778 ADD_IMAGE_TYPE (Qgif); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8779 #endif |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8780 |
97043
9592c50233ab
Remove support for Mac Carbon.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
97034
diff
changeset
|
8781 #if defined (HAVE_PNG) || defined (HAVE_NS) |
105877
21bdda3ded62
* xterm.c (syms_of_xterm):
Dan Nicolaescu <dann@ics.uci.edu>
parents:
105678
diff
changeset
|
8782 Qpng = intern_c_string ("png"); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8783 staticpro (&Qpng); |
82795
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
8784 ADD_IMAGE_TYPE (Qpng); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8785 #endif |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8786 |
109849 | 8787 #if defined (HAVE_IMAGEMAGICK) |
8788 Qimagemagick = intern ("imagemagick"); | |
8789 staticpro (&Qimagemagick); | |
8790 ADD_IMAGE_TYPE (Qimagemagick); | |
8791 #endif | |
110184
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
8792 |
82518
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8793 #if defined (HAVE_RSVG) |
105877
21bdda3ded62
* xterm.c (syms_of_xterm):
Dan Nicolaescu <dann@ics.uci.edu>
parents:
105678
diff
changeset
|
8794 Qsvg = intern_c_string ("svg"); |
82518
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8795 staticpro (&Qsvg); |
82795
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
8796 ADD_IMAGE_TYPE (Qsvg); |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
8797 #ifdef HAVE_NTGUI |
100826 | 8798 /* Other libraries used directly by svg code. */ |
105877
21bdda3ded62
* xterm.c (syms_of_xterm):
Dan Nicolaescu <dann@ics.uci.edu>
parents:
105678
diff
changeset
|
8799 Qgdk_pixbuf = intern_c_string ("gdk-pixbuf"); |
82795
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
8800 staticpro (&Qgdk_pixbuf); |
105877
21bdda3ded62
* xterm.c (syms_of_xterm):
Dan Nicolaescu <dann@ics.uci.edu>
parents:
105678
diff
changeset
|
8801 Qglib = intern_c_string ("glib"); |
82795
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
8802 staticpro (&Qglib); |
105877
21bdda3ded62
* xterm.c (syms_of_xterm):
Dan Nicolaescu <dann@ics.uci.edu>
parents:
105678
diff
changeset
|
8803 Qgobject = intern_c_string ("gobject"); |
100826 | 8804 staticpro (&Qgobject); |
82795
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
8805 #endif /* HAVE_NTGUI */ |
bf61b6631aba
[HAVE_NTGUI]: Define dynamic loaded functions.
Jason Rumney <jasonr@gnu.org>
parents:
82781
diff
changeset
|
8806 #endif /* HAVE_RSVG */ |
82518
b6db95f12a9d
Paul Pogonyshev <pogonyshev at gmx.net>
Glenn Morris <rgm@gnu.org>
parents:
82318
diff
changeset
|
8807 |
56104
a450e67752ed
(Vimage_types): Move from xdisp.c.
Juanma Barranquero <lekktu@gmail.com>
parents:
56065
diff
changeset
|
8808 defsubr (&Sinit_image_library); |
110184
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
8809 #ifdef HAVE_IMAGEMAGICK |
109849 | 8810 defsubr (&Simagemagick_types); |
110184
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
8811 #endif |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8812 defsubr (&Sclear_image_cache); |
108746
24d486687f54
Rename image-refresh to image-flush.
Chong Yidong <cyd@stupidchicken.com>
parents:
108741
diff
changeset
|
8813 defsubr (&Simage_flush); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8814 defsubr (&Simage_size); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8815 defsubr (&Simage_mask_p); |
107719
9c0ed2d6731a
Rename `image-extension-data' to `image-metadata'.
Juri Linkov <juri@jurta.org>
parents:
106975
diff
changeset
|
8816 defsubr (&Simage_metadata); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8817 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8818 #if GLYPH_DEBUG |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8819 defsubr (&Simagep); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8820 defsubr (&Slookup_image); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8821 #endif |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8822 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8823 DEFVAR_BOOL ("cross-disabled-images", &cross_disabled_images, |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8824 doc: /* Non-nil means always draw a cross over disabled images. |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8825 Disabled images are those having a `:conversion disabled' property. |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8826 A cross is always drawn on black & white displays. */); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8827 cross_disabled_images = 0; |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8828 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8829 DEFVAR_LISP ("x-bitmap-file-path", &Vx_bitmap_file_path, |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8830 doc: /* List of directories to search for window system bitmap files. */); |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8831 Vx_bitmap_file_path = decode_env_path ((char *) 0, PATH_BITMAPS); |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8832 |
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8833 DEFVAR_LISP ("image-cache-eviction-delay", &Vimage_cache_eviction_delay, |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8834 doc: /* Maximum time after which images are removed from the cache. |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8835 When an image has not been displayed this many seconds, Emacs |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8836 automatically removes it from the image cache. If the cache contains |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8837 a large number of images, the actual eviction time may be shorter. |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8838 The value can also be nil, meaning the cache is never cleared. |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8839 |
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8840 The function `clear-image-cache' disregards this variable. */); |
108741
9480d787845f
Improve image cache clearing logic (Bug#6230).
Chong Yidong <cyd@stupidchicken.com>
parents:
107719
diff
changeset
|
8841 Vimage_cache_eviction_delay = make_number (300); |
110184
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
8842 #ifdef HAVE_IMAGEMAGICK |
109849 | 8843 DEFVAR_LISP ("imagemagick-render-type", &Vimagemagick_render_type, |
109860
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
8844 doc: /* Choose between ImageMagick render methods. */); |
110184
44aeafd02c21
Check all lisp types in image loader
Andreas Schwab <schwab@linux-m68k.org>
parents:
110176
diff
changeset
|
8845 #endif |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8846 |
109860
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
8847 } |
c92f5e6103a8
mostly cosmetic, moving { instances, changing indentation accordingly.
Joakim <joakim@localhost.localdomain>
parents:
109859
diff
changeset
|
8848 |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8849 void |
109144
7dceae91724c
Convert most remaining function definitions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents:
109100
diff
changeset
|
8850 init_image (void) |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8851 { |
109875
ce46135d2b98
fix some accidental whitespace changes
Joakim <joakim@localhost.localdomain>
parents:
109872
diff
changeset
|
8852 } |
54341
80dfe07a1d65
New file (image.c) for Image consolidation:
Kim F. Storm <storm@cua.dk>
parents:
diff
changeset
|
8853 |
54348 | 8854 /* arch-tag: 123c2a5e-14a8-4c53-ab95-af47d7db49b9 |
8855 (do not change this comment) */ |