1/*
2 * Author:      William Chia-Wei Cheng (bill.cheng@acm.org)
3 *
4 * Copyright (C) 2001-2009, William Chia-Wei Cheng.
5 *
6 * This file may be distributed under the terms of the Q Public License
7 * as defined by Trolltech AS of Norway and appearing in the file
8 * LICENSE.QPL included in the packaging of this file.
9 *
10 * THIS FILE IS PROVIDED AS IS WITH NO WARRANTY OF ANY KIND, INCLUDING
11 * THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
12 * PURPOSE.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL,
13 * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
14 * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
15 * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
16 * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17 *
18 * @(#)$Header: /mm2/home/cvs/bc-src/tgif/xpixmap.e,v 1.23 2011/05/16 16:22:00 william Exp $
19 */
20
21#ifndef _XPIXMAP_E_
22#define _XPIXMAP_E_
23
24typedef struct tagXpmTransIndexInfo {
25   int has_transparent_pixel;
26   int found_transparent_pixel;
27   int transparent_pixel_index;
28   int *dump_index_to_color_index;
29} XpmTransIndexInfo;
30
31extern GC	xpmGC;
32extern int	newColormapUsed;
33extern int	allocColorFailed;
34extern int	myReadTransparentPixmap;
35extern int	xpmIsArray;
36extern long	xpmArraySeek;
37extern int	xpmHasTooManyColorsForPrinting;
38extern int	hasReadHexString;
39
40extern PngHeaderInfo	gPngHeaderInfo;
41
42extern double	rotatedSine[];
43extern double	rotatedCosine[];
44
45#ifdef _INCLUDE_FROM_XPIXMAP_C_
46#undef extern
47#define extern
48#endif /*_INCLUDE_FROM_XPIXMAP_C_*/
49
50extern void	ResetXPmErrorMessage ARGS_DECL((void));
51extern void	InitXPm ARGS_DECL((void));
52extern void	CleanUpXPm ARGS_DECL((void));
53extern int	IsLinkedJpegObj ARGS_DECL((struct ObjRec *));
54extern int	IsPpmTrueObj ARGS_DECL((int real_type, int ppm_data_compress,
55		                        char *ppm_data));
56extern int	ObjHasIndexedTransPixel ARGS_DECL((struct ObjRec *,
57		                                   int *pn_index));
58extern int	ObjHasTrueColorTransPixel ARGS_DECL((struct ObjRec *,
59				unsigned char *puch_trans_color_r,
60				unsigned char *puch_trans_color_g,
61				unsigned char *puch_trans_color_b));
62extern int	ObjHasTransPixel ARGS_DECL((struct ObjRec *));
63extern int	BuildXPmBuckets ARGS_DECL((int NColors, int *Pixels,
64		                          int *DumpIndexToColorIndex,
65		                          int CharsPerPixel, char *ColorChr,
66		                          XpmTransIndexInfo*));
67extern int	XPmLookUp ARGS_DECL((int Pixel, int CharsPerPixel,
68		                     char *ColorChr, int *pnColorIndexReturn));
69extern void	MakeCachedPixmap ARGS_DECL((struct ObjRec *));
70extern int	ExtractPixmap ARGS_DECL((Pixmap, XImage*, Pixmap, XImage*,
71		                         int, int, int, int, Pixmap*, XImage**,
72		                         Pixmap*, XImage**));
73extern struct ObjRec	* CutXPixmap ARGS_DECL((struct ObjRec *ObjPtrToCut,
74		                                int *AbsX, int *AbsY,
75		                                int *AbsW, int *AbsH));
76extern void	CleanUpCachedColorsForPrinting ARGS_DECL((void));
77extern void	CacheColorsForPrinting ARGS_DECL((void));
78extern int	ConvertPpmTrueToPpm6 ARGS_DECL((char *ppm_data,
79		                                int ppm_datasize,
80		                                int ppm_data_compress,
81		                                char *tmp_ppm6_fname,
82		                                int tmp_ppm6_sz));
83extern void	DumpXPmObj ARGS_DECL((FILE *, struct ObjRec *));
84extern int	NeedsToCacheXPmObj ARGS_DECL((struct ObjRec *));
85extern void	RecolorXPmObj ARGS_DECL((struct ObjRec *, int color_index));
86extern void	DrawXPmObj ARGS_DECL((Window, int XOff, int YOff,
87		                      struct ObjRec *));
88extern struct ObjRec	* CreateXPmObj ARGS_DECL((int ImageW, int ImageH,
89			                          int W, int H, Pixmap pixmap,
90			                          XImage *image, Pixmap bitmap,
91			                          XImage *bitmap_image,
92			                          int NColors,
93			                          int CharsPerPixel,
94			                          int FirstPixelIsBg,
95			                          char *ColorChar,
96			                          char **ColorStr,
97			                          int *Pixels, char *Data));
98extern void	BreakUpXPixmap ARGS_DECL((struct ObjRec *, int ColsAndRows,
99		                          int W, int H));
100extern void	SaveXPmObj ARGS_DECL((FILE *, struct ObjRec *));
101extern int	PrTgifFindColorIndex ARGS_DECL((struct ObjRec *, char *Str));
102extern int	QuickFindColorIndex ARGS_DECL((struct ObjRec *, char *Str,
103		                               int *NewAlloc, int UseDefault));
104extern int	MyReadPixmapFile ARGS_DECL((char *FileName, int *ImageW,
105		                            int *ImageH, int *W, int *H,
106		                            Pixmap *pixmap, XImage **image,
107		                            Pixmap *bitmap,
108		                            XImage **bitmap_image, int *NColors,
109		                            int *CharsPerPixel,
110		                            int *FirstPixelIsBg,
111		                            char **ColorChar, char ***ColorStr,
112		                            int **Pixels, char **Data));
113extern void	ReadXPmObj ARGS_DECL((FILE *, char *Inbuf, struct ObjRec **));
114extern void	ReadJpegObj ARGS_DECL((FILE *, char *Inbuf, struct ObjRec **));
115extern int	SetupTrueColorInfo ARGS_DECL((TrueColorInfo*));
116extern struct ObjRec	* CreatePpmTrueObjFromFile ARGS_DECL((char *ppm_fname));
117extern void	ReadPpmTrueObj ARGS_DECL((FILE *, char *Inbuf,
118		                          struct ObjRec **));
119extern void	SetXPmPropMask ARGS_DECL((struct ObjRec *, long *plMask,
120		                          long *plSkip,
121		                          struct PropertiesRec *pProp));
122extern void	FreeXPmObj ARGS_DECL((struct ObjRec *));
123
124#ifdef _INCLUDE_FROM_XPIXMAP_C_
125#undef extern
126#ifndef _NO_RECURSIVE_EXTERN
127#define extern extern
128#endif /* ~_NO_RECURSIVE_EXTERN */
129#endif /*_INCLUDE_FROM_XPIXMAP_C_*/
130
131#endif /*_XPIXMAP_E_*/
132