870
|
1 /* Interface to graphics/etc libraries, with cdecl calling convention.
|
|
2 Copyright (C) 2002 Ben Wing
|
|
3
|
|
4 This file is part of XEmacs.
|
|
5
|
|
6 XEmacs is free software; you can redistribute it and/or modify it
|
|
7 under the terms of the GNU General Public License as published by the
|
|
8 Free Software Foundation; either version 2, or (at your option) any
|
|
9 later version.
|
|
10
|
|
11 XEmacs is distributed in the hope that it will be useful, but WITHOUT
|
|
12 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
13 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
14 for more details.
|
|
15
|
|
16 You should have received a copy of the GNU General Public License
|
|
17 along with XEmacs; see the file COPYING. If not, write to
|
|
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
19 Boston, MA 02111-1307, USA. */
|
|
20
|
|
21 /* Synched up with: Not in FSF. */
|
|
22
|
|
23 #include <config.h>
|
|
24 #include "lisp.h"
|
|
25
|
|
26 #include "libinterface.h"
|
|
27
|
|
28 /* YUUUUUUUUUUUUUUCK!
|
|
29
|
|
30 This file exists only because VC++ lacks pragmas that let you change the
|
|
31 default calling convention in the middle of a file. With optimization,
|
|
32 we compile XEmacs using fastcall as the default convention; but
|
|
33 libraries are not compiled this way, and thus need __cdecl in their
|
|
34 declaration. Without the pragma, we either
|
|
35
|
|
36 (a) depend on libraries that declare their external functions with
|
|
37 suitable preprocessor definitions that we can change;
|
|
38
|
|
39 (b) force the user to recompile the library with fastcall (not
|
|
40 reasonable);
|
|
41
|
|
42 (c) hack the headers manually (not reasonable);
|
|
43
|
|
44 (d) put all calls to the library in a separate file where the default
|
|
45 calling convention is __cdecl (hence, this file).
|
|
46
|
|
47 In fact, some libraries do make (a) feasible. This is the case with PNG
|
|
48 and ZLIB. JPEG almost does so, since all externs are wrapped with
|
|
49 EXTERN(); but they fail to wrap their definition of EXTERN with #ifndef
|
|
50 EXTERN, so we can't override it. XPM is similar, wrapping their externs
|
|
51 with FUNC() -- again, not overridable. With PNG, we define PNG_EXPORT;
|
|
52 with ZLIB, we define ZEXPORT and ZEXPORTVA. */
|
|
53
|
|
54 #ifdef HAVE_XPM
|
|
55
|
|
56 void
|
|
57 qxe_XpmFreeXpmImage (XpmImage *image)
|
|
58 {
|
|
59 XpmFreeXpmImage (image);
|
|
60 }
|
|
61
|
|
62 void
|
|
63 qxe_XpmFreeXpmInfo (XpmInfo *info)
|
|
64 {
|
|
65 XpmFreeXpmInfo (info);
|
|
66 }
|
|
67
|
|
68 int
|
|
69 qxe_XpmCreateXpmImageFromBuffer (char *buffer, XpmImage *image, XpmInfo *info)
|
|
70 {
|
|
71 return XpmCreateXpmImageFromBuffer (buffer, image, info);
|
|
72 }
|
|
73
|
|
74 void
|
|
75 qxe_XpmFree (void *ptr)
|
|
76 {
|
|
77 XpmFree (ptr);
|
|
78 }
|
|
79
|
|
80 int
|
|
81 qxe_XpmReadFileToData (char *filename, char ***data_return)
|
|
82 {
|
|
83 return XpmReadFileToData (filename, data_return);
|
|
84 }
|
|
85
|
|
86 #endif /* HAVE_XPM */
|
|
87
|
|
88 #ifdef HAVE_JPEG
|
|
89
|
|
90 boolean
|
|
91 qxe_jpeg_finish_decompress (j_decompress_ptr cinfo)
|
|
92 {
|
|
93 return jpeg_finish_decompress (cinfo);
|
|
94 }
|
|
95
|
|
96 boolean
|
|
97 qxe_jpeg_start_decompress (j_decompress_ptr cinfo)
|
|
98 {
|
|
99 return jpeg_start_decompress (cinfo);
|
|
100 }
|
|
101
|
|
102 JDIMENSION
|
|
103 qxe_jpeg_read_scanlines (j_decompress_ptr cinfo, JSAMPARRAY scanlines,
|
|
104 JDIMENSION max_lines)
|
|
105 {
|
|
106 return jpeg_read_scanlines (cinfo, scanlines, max_lines);
|
|
107 }
|
|
108
|
|
109 int
|
|
110 qxe_jpeg_read_header (j_decompress_ptr cinfo, boolean require_image)
|
|
111 {
|
|
112 return jpeg_read_header (cinfo, require_image);
|
|
113 }
|
|
114
|
|
115 void
|
|
116 qxe_jpeg_CreateDecompress (j_decompress_ptr cinfo, int version,
|
|
117 size_t structsize)
|
|
118 {
|
|
119 jpeg_CreateDecompress (cinfo, version, structsize);
|
|
120 }
|
|
121
|
|
122 struct jpeg_error_mgr *
|
|
123 qxe_jpeg_std_error (struct jpeg_error_mgr *err)
|
|
124 {
|
|
125 return jpeg_std_error (err);
|
|
126 }
|
|
127
|
|
128 void
|
|
129 qxe_jpeg_destroy_decompress (j_decompress_ptr cinfo)
|
|
130 {
|
|
131 jpeg_destroy_decompress (cinfo);
|
|
132 }
|
|
133
|
|
134 boolean
|
|
135 qxe_jpeg_resync_to_restart (j_decompress_ptr cinfo, int desired)
|
|
136 {
|
|
137 return jpeg_resync_to_restart (cinfo, desired);
|
|
138 }
|
|
139
|
|
140 #endif /* HAVE_JPEG */
|
|
141
|
|
142 #ifdef HAVE_TIFF
|
|
143
|
|
144 tdata_t
|
|
145 qxe_TIFFmalloc (tsize_t x1)
|
|
146 {
|
|
147 return _TIFFmalloc (x1);
|
|
148 }
|
|
149
|
|
150 void
|
|
151 qxe_TIFFfree (tdata_t x1)
|
|
152 {
|
|
153 _TIFFfree (x1);
|
|
154 }
|
|
155
|
|
156 void
|
|
157 qxe_TIFFClose (TIFF *x1)
|
|
158 {
|
|
159 TIFFClose (x1);
|
|
160 }
|
|
161
|
|
162 int
|
|
163 qxe_TIFFGetField (TIFF *x1, ttag_t x2, uint32 *x3)
|
|
164 {
|
|
165 return TIFFGetField (x1, x2, x3);
|
|
166 }
|
|
167
|
|
168 TIFF *
|
|
169 qxe_TIFFClientOpen (const char *x1, const char *x2,
|
|
170 thandle_t x3,
|
|
171 TIFFReadWriteProc x4, TIFFReadWriteProc x5,
|
|
172 TIFFSeekProc x6, TIFFCloseProc x7,
|
|
173 TIFFSizeProc x8,
|
|
174 TIFFMapFileProc x9, TIFFUnmapFileProc x10)
|
|
175 {
|
|
176 return TIFFClientOpen (x1, x2, x3, x4, x5, x6, x7, x8, x9, x10);
|
|
177 }
|
|
178
|
|
179 TIFFErrorHandler
|
|
180 qxe_TIFFSetErrorHandler (TIFFErrorHandler x1)
|
|
181 {
|
|
182 return TIFFSetErrorHandler (x1);
|
|
183 }
|
|
184
|
|
185 TIFFErrorHandler
|
|
186 qxe_TIFFSetWarningHandler (TIFFErrorHandler x1)
|
|
187 {
|
|
188 return TIFFSetWarningHandler (x1);
|
|
189 }
|
|
190
|
|
191 int
|
|
192 qxe_TIFFReadRGBAImage (TIFF *x1, uint32 x2, uint32 x3, uint32 *x4, int x5)
|
|
193 {
|
|
194 return TIFFReadRGBAImage (x1, x2, x3, x4, x5);
|
|
195 }
|
|
196
|
|
197 #endif /* HAVE_TIFF */
|