428
+ − 1 /* Image processing aux functions header file
+ − 2 Copyright (C) 1998 Jareth Hein
+ − 3
+ − 4 This file is a 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
440
+ − 21 #ifndef INCLUDED_imgproc_h_
+ − 22 #define INCLUDED_imgproc_h_
+ − 23
428
+ − 24 /* Synched up with: Not in FSF. */
+ − 25
+ − 26 /* Original author: Jareth Hein */
+ − 27
+ − 28 #define MAX_CMAP_SIZE 256
+ − 29 #define COLOR_DEPTH 8
+ − 30 #define MAX_COLOR 256
+ − 31
+ − 32 #define B_DEPTH 5 /* # bits/pixel to use */
+ − 33 #define B_LEN (1L<<B_DEPTH)
+ − 34
+ − 35 #define C_DEPTH 2
+ − 36 #define C_LEN (1L<<C_DEPTH) /* # cells/color to use */
+ − 37
+ − 38 #define COLOR_SHIFT (COLOR_DEPTH-B_DEPTH)
+ − 39
+ − 40 typedef struct colorbox {
+ − 41 struct colorbox *next, *prev;
+ − 42 int rmin, rmax;
+ − 43 int gmin, gmax;
+ − 44 int bmin, bmax;
+ − 45 int total;
+ − 46 } Colorbox;
+ − 47
+ − 48 typedef struct {
+ − 49 int num_ents;
+ − 50 int entries[MAX_CMAP_SIZE][2];
+ − 51 } C_cell;
+ − 52
+ − 53 typedef struct {
+ − 54 unsigned short rm[MAX_CMAP_SIZE], gm[MAX_CMAP_SIZE], bm[MAX_CMAP_SIZE]; /* map values */
+ − 55 int um[MAX_CMAP_SIZE]; /* usage counts for each mapentry */
+ − 56 int histogram[B_LEN][B_LEN][B_LEN];
+ − 57 int num_active_colors;
+ − 58 Colorbox *freeboxes; /* used and freed internally */
+ − 59 Colorbox *usedboxes; /* used and freed internally */
+ − 60 C_cell **ColorCells; /* used and freed internally */
+ − 61 } quant_table;
+ − 62
+ − 63 #define QUANT_GET_COLOR(qt,r,g,b) (qt->histogram[r>>COLOR_SHIFT][g>>COLOR_SHIFT][b>>COLOR_SHIFT])
+ − 64
+ − 65 quant_table *build_EImage_quantable(unsigned char *eimage, int width, int height, int num_colors);
440
+ − 66
+ − 67 #endif /* INCLUDED_imgproc_h_ */