2003-09-04 18:09:02 +00:00
|
|
|
/*
|
|
|
|
image.h
|
|
|
|
|
|
|
|
General image handling
|
|
|
|
|
|
|
|
Copyright (C) 2003 Harry Roberts
|
|
|
|
|
|
|
|
Author: Harry Roberts
|
|
|
|
Date: Sep 4 2003
|
|
|
|
|
|
|
|
This program is free software; you can redistribute it and/or
|
|
|
|
modify it under the terms of the GNU General Public License
|
|
|
|
as published by the Free Software Foundation; either version 2
|
|
|
|
of the License, or (at your option) any later version.
|
|
|
|
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
|
|
|
|
|
|
See the GNU General Public License for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
|
|
along with this program; if not, write to:
|
|
|
|
|
|
|
|
Free Software Foundation, Inc.
|
|
|
|
59 Temple Place - Suite 330
|
|
|
|
Boston, MA 02111-1307, USA
|
|
|
|
*/
|
|
|
|
#ifndef __QF_image_h
|
|
|
|
#define __QF_image_h
|
|
|
|
|
2013-05-10 23:02:43 +00:00
|
|
|
#include "QF/qtypes.h"
|
2021-01-16 06:39:16 +00:00
|
|
|
|
|
|
|
typedef enum QFFormat {
|
|
|
|
tex_palette = 0,
|
|
|
|
tex_l = 0x1909, //GL_LUMINANCE
|
|
|
|
tex_a = 0x1906, //GL_ALPHA
|
|
|
|
tex_la = 2,
|
|
|
|
tex_rgb = 3,
|
|
|
|
tex_rgba = 4,
|
2021-01-19 16:18:47 +00:00
|
|
|
tex_frgba = 5,
|
2021-01-16 06:39:16 +00:00
|
|
|
} QFFormat;
|
2003-09-04 18:09:02 +00:00
|
|
|
|
2003-09-04 18:59:39 +00:00
|
|
|
// could not use texture_t as that is used for models.
|
|
|
|
typedef struct tex_s {
|
2013-05-10 23:02:43 +00:00
|
|
|
int width;
|
|
|
|
int height;
|
2021-01-16 06:39:16 +00:00
|
|
|
QFFormat format;
|
2022-03-31 11:00:13 +00:00
|
|
|
union {
|
|
|
|
struct {
|
|
|
|
int loaded:1; // 0 if size info only, otherwise data loaded
|
|
|
|
int flipped:1; // 1 if first pixel is bottom instead of top
|
|
|
|
int bgr:1; // 1 if image is bgr (for tex_rgb)
|
|
|
|
};
|
|
|
|
int flagbits; // for eazy zeroing
|
|
|
|
};
|
2021-03-25 13:01:31 +00:00
|
|
|
const byte *palette; // 0 = 32 bit, otherwise 8
|
2021-01-24 15:54:41 +00:00
|
|
|
byte *data;
|
2003-09-04 18:59:39 +00:00
|
|
|
} tex_t;
|
|
|
|
|
2021-01-19 01:15:57 +00:00
|
|
|
tex_t *LoadImage (const char *imageFile, int load);
|
2003-09-04 18:59:39 +00:00
|
|
|
|
2021-04-24 23:38:13 +00:00
|
|
|
size_t ImageSize (const tex_t *tex, int incl_struct) __attribute__((pure));
|
|
|
|
|
2013-05-10 23:02:43 +00:00
|
|
|
typedef struct colcache_s colcache_t;
|
|
|
|
|
|
|
|
colcache_t *ColorCache_New (void);
|
|
|
|
void ColorCache_Delete (colcache_t *cache);
|
2023-03-05 08:14:25 +00:00
|
|
|
void ColorCache_Shutdown (void);
|
2013-05-10 23:02:43 +00:00
|
|
|
byte ConvertColor (const byte *rgb, const byte *pal, colcache_t *cache);
|
|
|
|
tex_t *ConvertImage (const tex_t *tex, const byte *pal);
|
2003-09-04 18:09:02 +00:00
|
|
|
|
2020-02-24 03:21:20 +00:00
|
|
|
#endif//__QF_image_h
|