Image: Share LoadImage
This commit is contained in:
parent
43c690eab2
commit
18bc788335
|
@ -435,8 +435,8 @@ scale3x(const byte *src, byte *dst, int width, int height)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
struct image_s *
|
static struct image_s *
|
||||||
LoadHiColorImage(char *name, const char* namewe, const char *ext,
|
LoadHiColorImage(const char *name, const char* namewe, const char *ext,
|
||||||
imagetype_t type, loadimage_t load_image)
|
imagetype_t type, loadimage_t load_image)
|
||||||
{
|
{
|
||||||
int realwidth = 0, realheight = 0;
|
int realwidth = 0, realheight = 0;
|
||||||
|
@ -490,3 +490,73 @@ LoadHiColorImage(char *name, const char* namewe, const char *ext,
|
||||||
|
|
||||||
return image;
|
return image;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct image_s *
|
||||||
|
LoadImage(const char *name, const char* namewe, const char *ext, imagetype_t type,
|
||||||
|
qboolean r_retexturing, loadimage_t load_image)
|
||||||
|
{
|
||||||
|
struct image_s *image = NULL;
|
||||||
|
|
||||||
|
// with retexturing and not skin
|
||||||
|
if (r_retexturing)
|
||||||
|
{
|
||||||
|
image = LoadHiColorImage(name, namewe, ext, type, load_image);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!image)
|
||||||
|
{
|
||||||
|
if (!strcmp(ext, "pcx"))
|
||||||
|
{
|
||||||
|
byte *pic = NULL;
|
||||||
|
byte *palette = NULL;
|
||||||
|
int width = 0, height = 0;
|
||||||
|
|
||||||
|
LoadPCX (namewe, &pic, &palette, &width, &height);
|
||||||
|
if (!pic)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
image = load_image(name, pic,
|
||||||
|
width, width,
|
||||||
|
height, height,
|
||||||
|
width * height, type, 8);
|
||||||
|
|
||||||
|
if (palette)
|
||||||
|
{
|
||||||
|
free(palette);
|
||||||
|
}
|
||||||
|
free(pic);
|
||||||
|
}
|
||||||
|
else if (!strcmp(ext, "wal"))
|
||||||
|
{
|
||||||
|
image = LoadWal(namewe, type, load_image);
|
||||||
|
}
|
||||||
|
else if (!strcmp(ext, "m8"))
|
||||||
|
{
|
||||||
|
image = LoadM8(namewe, type, load_image);
|
||||||
|
}
|
||||||
|
else if (!strcmp(ext, "m32"))
|
||||||
|
{
|
||||||
|
image = LoadM32(namewe, type, load_image);
|
||||||
|
}
|
||||||
|
else if (!strcmp(ext, "tga") ||
|
||||||
|
!strcmp(ext, "png") ||
|
||||||
|
!strcmp(ext, "jpg"))
|
||||||
|
{
|
||||||
|
byte *pic = NULL;
|
||||||
|
int width = 0, height = 0;
|
||||||
|
|
||||||
|
if (LoadSTB (namewe, ext, &pic, &width, &height) && pic)
|
||||||
|
{
|
||||||
|
image = load_image(name, pic,
|
||||||
|
width, width,
|
||||||
|
height, height,
|
||||||
|
width * height,
|
||||||
|
type, 32);
|
||||||
|
|
||||||
|
free(pic);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return image;
|
||||||
|
}
|
||||||
|
|
|
@ -40,7 +40,6 @@ LoadWal(const char *origname, imagetype_t type, loadimage_t load_image)
|
||||||
|
|
||||||
if (!mt)
|
if (!mt)
|
||||||
{
|
{
|
||||||
R_Printf(PRINT_ALL, "%s: can't load %s\n", __func__, name);
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -88,7 +87,6 @@ LoadM8(const char *origname, imagetype_t type, loadimage_t load_image)
|
||||||
|
|
||||||
if (!mt)
|
if (!mt)
|
||||||
{
|
{
|
||||||
R_Printf(PRINT_ALL, "%s: can't load %s\n", __func__, name);
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -153,7 +151,6 @@ LoadM32(const char *origname, imagetype_t type, loadimage_t load_image)
|
||||||
|
|
||||||
if (!mt)
|
if (!mt)
|
||||||
{
|
{
|
||||||
R_Printf(PRINT_ALL, "%s: can't load %s\n", __func__, name);
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1035,11 +1035,8 @@ R_FindImage(char *name, imagetype_t type)
|
||||||
{
|
{
|
||||||
image_t *image;
|
image_t *image;
|
||||||
int i, len;
|
int i, len;
|
||||||
byte *pic;
|
|
||||||
int width, height;
|
|
||||||
char *ptr;
|
char *ptr;
|
||||||
char namewe[256];
|
char namewe[256];
|
||||||
int realwidth = 0, realheight = 0;
|
|
||||||
const char* ext;
|
const char* ext;
|
||||||
|
|
||||||
if (!name)
|
if (!name)
|
||||||
|
@ -1081,181 +1078,16 @@ R_FindImage(char *name, imagetype_t type)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* load the pic from disk */
|
//
|
||||||
pic = NULL;
|
// load the pic from disk
|
||||||
|
//
|
||||||
|
image = (image_t *)LoadImage(name, namewe, ext, type,
|
||||||
|
r_retexturing->value, (loadimage_t)R_LoadPic);
|
||||||
|
|
||||||
if (strcmp(ext, "pcx") == 0)
|
if (!image)
|
||||||
{
|
{
|
||||||
if (r_retexturing->value)
|
R_Printf(PRINT_ALL, "%s: can't load %s\n", __func__, name);
|
||||||
{
|
image = r_notexture;
|
||||||
GetPCXInfo(name, &realwidth, &realheight);
|
|
||||||
if(realwidth == 0)
|
|
||||||
{
|
|
||||||
/* No texture found */
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* try to load a tga, png or jpg (in that order/priority) */
|
|
||||||
if ( LoadSTB(namewe, "tga", &pic, &width, &height)
|
|
||||||
|| LoadSTB(namewe, "png", &pic, &width, &height)
|
|
||||||
|| LoadSTB(namewe, "jpg", &pic, &width, &height) )
|
|
||||||
{
|
|
||||||
/* upload tga or png or jpg */
|
|
||||||
image = R_LoadPic(name, pic,
|
|
||||||
width, realwidth,
|
|
||||||
height, realheight,
|
|
||||||
width * height, type, 32);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
/* PCX if no TGA/PNG/JPEG available (exists always) */
|
|
||||||
LoadPCX(name, &pic, NULL, &width, &height);
|
|
||||||
|
|
||||||
if (!pic)
|
|
||||||
{
|
|
||||||
/* No texture found */
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Upload the PCX */
|
|
||||||
image = R_LoadPic(name, pic,
|
|
||||||
width, 0,
|
|
||||||
height, 0,
|
|
||||||
width * height, type, 8);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else /* gl_retexture is not set */
|
|
||||||
{
|
|
||||||
LoadPCX(name, &pic, NULL, &width, &height);
|
|
||||||
|
|
||||||
if (!pic)
|
|
||||||
{
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
image = R_LoadPic(name, pic,
|
|
||||||
width, 0,
|
|
||||||
height, 0,
|
|
||||||
width * height, type, 8);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (strcmp(ext, "wal") == 0 || strcmp(ext, "m8") == 0)
|
|
||||||
{
|
|
||||||
if (r_retexturing->value)
|
|
||||||
{
|
|
||||||
/* Get size of the original texture */
|
|
||||||
if (strcmp(ext, "m8") == 0)
|
|
||||||
{
|
|
||||||
GetM8Info(name, &realwidth, &realheight);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
GetWalInfo(name, &realwidth, &realheight);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(realwidth == 0)
|
|
||||||
{
|
|
||||||
/* No texture found */
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* try to load a tga, png or jpg (in that order/priority) */
|
|
||||||
if ( LoadSTB(namewe, "tga", &pic, &width, &height)
|
|
||||||
|| LoadSTB(namewe, "png", &pic, &width, &height)
|
|
||||||
|| LoadSTB(namewe, "jpg", &pic, &width, &height) )
|
|
||||||
{
|
|
||||||
/* upload tga or png or jpg */
|
|
||||||
image = R_LoadPic(name, pic,
|
|
||||||
width, realwidth,
|
|
||||||
height, realheight,
|
|
||||||
width * height, type, 32);
|
|
||||||
}
|
|
||||||
else if (strcmp(ext, "m8") == 0)
|
|
||||||
{
|
|
||||||
image = (image_t *)LoadM8(namewe, type, (loadimage_t)R_LoadPic);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
/* WAL if no TGA/PNG/JPEG available (exists always) */
|
|
||||||
image = (image_t *)LoadWal(namewe, type, (loadimage_t)R_LoadPic);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!image)
|
|
||||||
{
|
|
||||||
/* No texture found */
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (strcmp(ext, "m8") == 0)
|
|
||||||
{
|
|
||||||
image = (image_t *)LoadM8(name, type, (loadimage_t)R_LoadPic);
|
|
||||||
|
|
||||||
if (!image)
|
|
||||||
{
|
|
||||||
/* No texture found */
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else /* gl_retexture is not set */
|
|
||||||
{
|
|
||||||
image = (image_t *)LoadWal(name, type, (loadimage_t)R_LoadPic);
|
|
||||||
|
|
||||||
if (!image)
|
|
||||||
{
|
|
||||||
/* No texture found */
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (strcmp(ext, "tga") == 0 || strcmp(ext, "png") == 0 || strcmp(ext, "jpg") == 0)
|
|
||||||
{
|
|
||||||
char tmp_name[256];
|
|
||||||
|
|
||||||
realwidth = 0;
|
|
||||||
realheight = 0;
|
|
||||||
|
|
||||||
strcpy(tmp_name, namewe);
|
|
||||||
strcat(tmp_name, ".wal");
|
|
||||||
GetWalInfo(tmp_name, &realwidth, &realheight);
|
|
||||||
|
|
||||||
if (realwidth == 0 || realheight == 0) {
|
|
||||||
strcpy(tmp_name, namewe);
|
|
||||||
strcat(tmp_name, ".m8");
|
|
||||||
GetM8Info(tmp_name, &realwidth, &realheight);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (realwidth == 0 || realheight == 0) {
|
|
||||||
/* It's a sky or model skin. */
|
|
||||||
strcpy(tmp_name, namewe);
|
|
||||||
strcat(tmp_name, ".pcx");
|
|
||||||
GetPCXInfo(tmp_name, &realwidth, &realheight);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* TODO: not sure if not having realwidth/heigth is bad - a tga/png/jpg
|
|
||||||
* was requested, after all, so there might be no corresponding wal/pcx?
|
|
||||||
* if (realwidth == 0 || realheight == 0) return NULL;
|
|
||||||
*/
|
|
||||||
|
|
||||||
if(LoadSTB(name, ext, &pic, &width, &height))
|
|
||||||
{
|
|
||||||
image = R_LoadPic(name, pic,
|
|
||||||
width, realwidth,
|
|
||||||
height, realheight,
|
|
||||||
width * height, type, 32);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pic)
|
|
||||||
{
|
|
||||||
free(pic);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return image;
|
return image;
|
||||||
|
|
|
@ -605,11 +605,8 @@ GL3_FindImage(char *name, imagetype_t type)
|
||||||
{
|
{
|
||||||
gl3image_t *image;
|
gl3image_t *image;
|
||||||
int i, len;
|
int i, len;
|
||||||
byte *pic;
|
|
||||||
int width, height;
|
|
||||||
char *ptr;
|
char *ptr;
|
||||||
char namewe[256];
|
char namewe[256];
|
||||||
int realwidth = 0, realheight = 0;
|
|
||||||
const char* ext;
|
const char* ext;
|
||||||
|
|
||||||
if (!name)
|
if (!name)
|
||||||
|
@ -651,179 +648,16 @@ GL3_FindImage(char *name, imagetype_t type)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* load the pic from disk */
|
//
|
||||||
pic = NULL;
|
// load the pic from disk
|
||||||
|
//
|
||||||
|
image = (gl3image_t *)LoadImage(name, namewe, ext, type,
|
||||||
|
r_retexturing->value, (loadimage_t)GL3_LoadPic);
|
||||||
|
|
||||||
if (strcmp(ext, "pcx") == 0)
|
if (!image)
|
||||||
{
|
{
|
||||||
if (r_retexturing->value)
|
R_Printf(PRINT_ALL, "%s: can't load %s\n", __func__, name);
|
||||||
{
|
image = gl3_notexture;
|
||||||
GetPCXInfo(name, &realwidth, &realheight);
|
|
||||||
if(realwidth == 0)
|
|
||||||
{
|
|
||||||
/* No texture found */
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* try to load a tga, png or jpg (in that order/priority) */
|
|
||||||
if ( LoadSTB(namewe, "tga", &pic, &width, &height)
|
|
||||||
|| LoadSTB(namewe, "png", &pic, &width, &height)
|
|
||||||
|| LoadSTB(namewe, "jpg", &pic, &width, &height) )
|
|
||||||
{
|
|
||||||
/* upload tga or png or jpg */
|
|
||||||
image = GL3_LoadPic(name, pic,
|
|
||||||
width, realwidth,
|
|
||||||
height, realheight,
|
|
||||||
width * height, type, 32);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
/* PCX if no TGA/PNG/JPEG available (exists always) */
|
|
||||||
LoadPCX(name, &pic, NULL, &width, &height);
|
|
||||||
|
|
||||||
if (!pic)
|
|
||||||
{
|
|
||||||
/* No texture found */
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Upload the PCX */
|
|
||||||
image = GL3_LoadPic(name, pic,
|
|
||||||
width, 0,
|
|
||||||
height, 0,
|
|
||||||
width * height, type, 8);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else /* gl_retexture is not set */
|
|
||||||
{
|
|
||||||
LoadPCX(name, &pic, NULL, &width, &height);
|
|
||||||
|
|
||||||
if (!pic)
|
|
||||||
{
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
image = GL3_LoadPic(name, pic,
|
|
||||||
width, 0,
|
|
||||||
height, 0,
|
|
||||||
width * height, type, 8);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (strcmp(ext, "wal") == 0 || strcmp(ext, "m8") == 0)
|
|
||||||
{
|
|
||||||
if (r_retexturing->value)
|
|
||||||
{
|
|
||||||
/* Get size of the original texture */
|
|
||||||
if (strcmp(ext, "m8") == 0)
|
|
||||||
{
|
|
||||||
GetM8Info(name, &realwidth, &realheight);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
GetWalInfo(name, &realwidth, &realheight);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(realwidth == 0)
|
|
||||||
{
|
|
||||||
/* No texture found */
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* try to load a tga, png or jpg (in that order/priority) */
|
|
||||||
if ( LoadSTB(namewe, "tga", &pic, &width, &height)
|
|
||||||
|| LoadSTB(namewe, "png", &pic, &width, &height)
|
|
||||||
|| LoadSTB(namewe, "jpg", &pic, &width, &height) )
|
|
||||||
{
|
|
||||||
/* upload tga or png or jpg */
|
|
||||||
image = GL3_LoadPic(name, pic,
|
|
||||||
width, realwidth,
|
|
||||||
height, realheight,
|
|
||||||
width * height, type, 32);
|
|
||||||
}
|
|
||||||
else if (strcmp(ext, "m8") == 0)
|
|
||||||
{
|
|
||||||
image = (gl3image_t *)LoadM8(namewe, type, (loadimage_t)GL3_LoadPic);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
/* WAL if no TGA/PNG/JPEG available (exists always) */
|
|
||||||
image = (gl3image_t *)LoadWal(namewe, type, (loadimage_t)GL3_LoadPic);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!image)
|
|
||||||
{
|
|
||||||
/* No texture found */
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (strcmp(ext, "m8") == 0)
|
|
||||||
{
|
|
||||||
image = (gl3image_t *)LoadM8(name, type, (loadimage_t)GL3_LoadPic);
|
|
||||||
|
|
||||||
if (!image)
|
|
||||||
{
|
|
||||||
/* No texture found */
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else /* gl_retexture is not set */
|
|
||||||
{
|
|
||||||
image = (gl3image_t *)LoadWal(name, type, (loadimage_t)GL3_LoadPic);
|
|
||||||
|
|
||||||
if (!image)
|
|
||||||
{
|
|
||||||
/* No texture found */
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (strcmp(ext, "tga") == 0 || strcmp(ext, "png") == 0 || strcmp(ext, "jpg") == 0)
|
|
||||||
{
|
|
||||||
char tmp_name[256];
|
|
||||||
|
|
||||||
realwidth = 0;
|
|
||||||
realheight = 0;
|
|
||||||
|
|
||||||
strcpy(tmp_name, namewe);
|
|
||||||
strcat(tmp_name, ".wal");
|
|
||||||
GetWalInfo(tmp_name, &realwidth, &realheight);
|
|
||||||
|
|
||||||
if (realwidth == 0 || realheight == 0) {
|
|
||||||
strcpy(tmp_name, namewe);
|
|
||||||
strcat(tmp_name, ".m8");
|
|
||||||
GetM8Info(tmp_name, &realwidth, &realheight);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (realwidth == 0 || realheight == 0) {
|
|
||||||
/* It's a sky or model skin. */
|
|
||||||
strcpy(tmp_name, namewe);
|
|
||||||
strcat(tmp_name, ".pcx");
|
|
||||||
GetPCXInfo(tmp_name, &realwidth, &realheight);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* TODO: not sure if not having realwidth/heigth is bad - a tga/png/jpg
|
|
||||||
* was requested, after all, so there might be no corresponding wal/pcx?
|
|
||||||
* if (realwidth == 0 || realheight == 0) return NULL;
|
|
||||||
*/
|
|
||||||
|
|
||||||
if(LoadSTB(name, ext, &pic, &width, &height))
|
|
||||||
{
|
|
||||||
image = GL3_LoadPic(name, pic,
|
|
||||||
width, realwidth,
|
|
||||||
height, realheight,
|
|
||||||
width * height, type, 32);
|
|
||||||
} else {
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pic)
|
|
||||||
{
|
|
||||||
free(pic);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return image;
|
return image;
|
||||||
|
|
|
@ -83,8 +83,8 @@ typedef struct image_s* (*loadimage_t)(const char *name, byte *pic, int width, i
|
||||||
extern struct image_s* LoadWal(const char *origname, imagetype_t type, loadimage_t load_image);
|
extern struct image_s* LoadWal(const char *origname, imagetype_t type, loadimage_t load_image);
|
||||||
extern struct image_s* LoadM8(const char *origname, imagetype_t type, loadimage_t load_image);
|
extern struct image_s* LoadM8(const char *origname, imagetype_t type, loadimage_t load_image);
|
||||||
extern struct image_s* LoadM32(const char *origname, imagetype_t type, loadimage_t load_image);
|
extern struct image_s* LoadM32(const char *origname, imagetype_t type, loadimage_t load_image);
|
||||||
extern struct image_s* LoadHiColorImage(char *name, const char* namewe, const char *ext,
|
extern struct image_s* LoadImage(const char *name, const char* namewe, const char *ext, imagetype_t type,
|
||||||
imagetype_t type, loadimage_t load_image);
|
qboolean r_retexturing, loadimage_t load_image);
|
||||||
extern void FixFileExt(const char *origname, const char *ext, char *filename, size_t size);
|
extern void FixFileExt(const char *origname, const char *ext, char *filename, size_t size);
|
||||||
extern void GetPCXPalette(byte **colormap, unsigned *d_8to24table);
|
extern void GetPCXPalette(byte **colormap, unsigned *d_8to24table);
|
||||||
extern void LoadPCX(const char *origname, byte **pic, byte **palette, int *width, int *height);
|
extern void LoadPCX(const char *origname, byte **pic, byte **palette, int *width, int *height);
|
||||||
|
|
|
@ -317,7 +317,19 @@ static image_t *
|
||||||
R_LoadPic (char *name, byte *pic, int width, int realwidth, int height, int realheight,
|
R_LoadPic (char *name, byte *pic, int width, int realwidth, int height, int realheight,
|
||||||
size_t data_size, imagetype_t type, int bits)
|
size_t data_size, imagetype_t type, int bits)
|
||||||
{
|
{
|
||||||
if (bits == 32 && data_size > 0)
|
if (!realwidth || !realheight)
|
||||||
|
{
|
||||||
|
realwidth = width;
|
||||||
|
realheight = height;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (data_size <= 0 || !width || !height)
|
||||||
|
{
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Code used with HIColor calls */
|
||||||
|
if (bits == 32)
|
||||||
{
|
{
|
||||||
image_t *image;
|
image_t *image;
|
||||||
byte *pic8;
|
byte *pic8;
|
||||||
|
@ -364,7 +376,6 @@ R_LoadPic (char *name, byte *pic, int width, int realwidth, int height, int real
|
||||||
|
|
||||||
// resize image
|
// resize image
|
||||||
pic32 = malloc(uploadwidth * uploadheight * 4);
|
pic32 = malloc(uploadwidth * uploadheight * 4);
|
||||||
printf("%s: %dx%d -> %dx%d\n", name, width, height, uploadwidth, uploadheight);
|
|
||||||
if (ResizeSTB(pic, width, height,
|
if (ResizeSTB(pic, width, height,
|
||||||
pic32, uploadwidth, uploadheight))
|
pic32, uploadwidth, uploadheight))
|
||||||
{
|
{
|
||||||
|
@ -389,8 +400,36 @@ R_LoadPic (char *name, byte *pic, int width, int realwidth, int height, int real
|
||||||
return image;
|
return image;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
/* used with WAL and 8bit textures */
|
||||||
{
|
{
|
||||||
return R_LoadPic8 (name, pic, width, realwidth, height, realheight, data_size, type);
|
if (r_scale8bittextures->value && type == it_pic)
|
||||||
|
{
|
||||||
|
byte *scaled = NULL;
|
||||||
|
image_t *image;
|
||||||
|
|
||||||
|
scaled = malloc(width * height * 4);
|
||||||
|
if (!scaled)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
scale2x(pic, scaled, width, height);
|
||||||
|
width *= 2;
|
||||||
|
height *= 2;
|
||||||
|
|
||||||
|
image = R_LoadPic8(name, scaled,
|
||||||
|
width, realwidth,
|
||||||
|
height, realheight,
|
||||||
|
width * height, type);
|
||||||
|
free(scaled);
|
||||||
|
|
||||||
|
return image;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return R_LoadPic8 (name, pic,
|
||||||
|
width, realwidth,
|
||||||
|
height, realheight,
|
||||||
|
data_size, type);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -435,84 +474,6 @@ R_ApplyLight(pixel_t pix, const light3_t light)
|
||||||
return d_16to8table[i_c & 0xFFFF];
|
return d_16to8table[i_c & 0xFFFF];
|
||||||
}
|
}
|
||||||
|
|
||||||
static image_t *
|
|
||||||
R_LoadImage(char *name, const char* namewe, const char *ext, imagetype_t type)
|
|
||||||
{
|
|
||||||
image_t *image = NULL;
|
|
||||||
|
|
||||||
// with retexturing and not skin
|
|
||||||
if (r_retexturing->value)
|
|
||||||
{
|
|
||||||
image = (image_t *)LoadHiColorImage(name, namewe, ext, type,
|
|
||||||
(loadimage_t)R_LoadPic);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!image)
|
|
||||||
{
|
|
||||||
if (strcmp(ext, "pcx") == 0)
|
|
||||||
{
|
|
||||||
byte *pic = NULL;
|
|
||||||
byte *palette = NULL;
|
|
||||||
int width = 0, height = 0;
|
|
||||||
|
|
||||||
LoadPCX (name, &pic, &palette, &width, &height);
|
|
||||||
if (!pic)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
if (r_scale8bittextures->value && type == it_pic)
|
|
||||||
{
|
|
||||||
byte *scaled = NULL;
|
|
||||||
int realwidth, realheight;
|
|
||||||
|
|
||||||
// save original size
|
|
||||||
realwidth = width;
|
|
||||||
realheight = height;
|
|
||||||
|
|
||||||
scaled = malloc(width * height * 4);
|
|
||||||
if (!scaled)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
scale2x(pic, scaled, width, height);
|
|
||||||
width *= 2;
|
|
||||||
height *= 2;
|
|
||||||
image = R_LoadPic(name, scaled,
|
|
||||||
width, realwidth,
|
|
||||||
height, realheight,
|
|
||||||
width * height, type, 8);
|
|
||||||
free(scaled);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
image = R_LoadPic(name, pic,
|
|
||||||
width, width,
|
|
||||||
height, height,
|
|
||||||
width * height, type, 8);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (palette)
|
|
||||||
{
|
|
||||||
free(palette);
|
|
||||||
}
|
|
||||||
free(pic);
|
|
||||||
}
|
|
||||||
else if (strcmp(ext, "wal") == 0)
|
|
||||||
{
|
|
||||||
image = (image_t *)LoadWal(namewe, type, (loadimage_t)R_LoadPic);
|
|
||||||
}
|
|
||||||
else if (strcmp(ext, "m8") == 0)
|
|
||||||
{
|
|
||||||
image = (image_t *)LoadM8(namewe, type, (loadimage_t)R_LoadPic);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!image)
|
|
||||||
{
|
|
||||||
image = r_notexture_mip;
|
|
||||||
}
|
|
||||||
|
|
||||||
return image;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
===============
|
===============
|
||||||
R_FindImage
|
R_FindImage
|
||||||
|
@ -577,7 +538,16 @@ R_FindImage(char *name, imagetype_t type)
|
||||||
//
|
//
|
||||||
// load the pic from disk
|
// load the pic from disk
|
||||||
//
|
//
|
||||||
return R_LoadImage(name, namewe, ext, type);
|
image = (image_t *)LoadImage(name, namewe, ext, type,
|
||||||
|
r_retexturing->value, (loadimage_t)R_LoadPic);
|
||||||
|
|
||||||
|
if (!image)
|
||||||
|
{
|
||||||
|
R_Printf(PRINT_ALL, "%s: can't load %s\n", __func__, name);
|
||||||
|
image = r_notexture_mip;
|
||||||
|
}
|
||||||
|
|
||||||
|
return image;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in New Issue