mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2024-11-26 22:31:05 +00:00
790f62a209
This means that a tex_t object is passed in instead of just raw bytes and width and height, but it means the texture can specify whether it's flipped or uses BGR instead of RGB. This fixes the upside down screenshots for vulkan.
72 lines
1.9 KiB
C
72 lines
1.9 KiB
C
/*
|
|
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
|
|
|
|
#include "QF/qtypes.h"
|
|
|
|
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,
|
|
tex_frgba = 5,
|
|
} QFFormat;
|
|
|
|
// could not use texture_t as that is used for models.
|
|
typedef struct tex_s {
|
|
int width;
|
|
int height;
|
|
QFFormat format;
|
|
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
|
|
};
|
|
const byte *palette; // 0 = 32 bit, otherwise 8
|
|
byte *data;
|
|
} tex_t;
|
|
|
|
tex_t *LoadImage (const char *imageFile, int load);
|
|
|
|
size_t ImageSize (const tex_t *tex, int incl_struct) __attribute__((pure));
|
|
|
|
typedef struct colcache_s colcache_t;
|
|
|
|
colcache_t *ColorCache_New (void);
|
|
void ColorCache_Delete (colcache_t *cache);
|
|
byte ConvertColor (const byte *rgb, const byte *pal, colcache_t *cache);
|
|
tex_t *ConvertImage (const tex_t *tex, const byte *pal);
|
|
|
|
#endif//__QF_image_h
|