X-Git-Url: http://git.xonotic.org/?p=xonotic%2Fdarkplaces.git;a=blobdiff_plain;f=image.c;h=ed498ed6562ce832080410a4fc25a9378aeb4727;hp=dec67c3b3609385cd01edcc3fb34fc87fcca78ec;hb=4d34e0a632cbc401712f46e10bb9864438b0881f;hpb=bee674d55fd008e90e33646c0e26ee1943f1ec30 diff --git a/image.c b/image.c index dec67c3b..ed498ed6 100644 --- a/image.c +++ b/image.c @@ -21,7 +21,7 @@ static void Image_CopyAlphaFromBlueBGRA(unsigned char *outpixels, const unsigned #if 1 // written by LadyHavoc in a readable way, optimized by Vic, further optimized by LadyHavoc (the non-special index case), readable version preserved below this -void Image_CopyMux(unsigned char *outpixels, const unsigned char *inpixels, int inputwidth, int inputheight, qboolean inputflipx, qboolean inputflipy, qboolean inputflipdiagonal, int numoutputcomponents, int numinputcomponents, int *outputinputcomponentindices) +void Image_CopyMux(unsigned char *outpixels, const unsigned char *inpixels, int inputwidth, int inputheight, qbool inputflipx, qbool inputflipy, qbool inputflipdiagonal, int numoutputcomponents, int numinputcomponents, int *outputinputcomponentindices) { int index, c, x, y; const unsigned char *in, *line; @@ -70,7 +70,7 @@ void Image_CopyMux(unsigned char *outpixels, const unsigned char *inpixels, int } #else // intentionally readable version -void Image_CopyMux(unsigned char *outpixels, const unsigned char *inpixels, int inputwidth, int inputheight, qboolean inputflipx, qboolean inputflipy, qboolean inputflipdiagonal, int numoutputcomponents, int numinputcomponents, int *outputinputcomponentindices) +void Image_CopyMux(unsigned char *outpixels, const unsigned char *inpixels, int inputwidth, int inputheight, qbool inputflipx, qbool inputflipy, qbool inputflipdiagonal, int numoutputcomponents, int numinputcomponents, int *outputinputcomponentindices) { int index, c, x, y; const unsigned char *in, *inrow, *incolumn; @@ -283,7 +283,7 @@ static unsigned char* LoadPCX_BGRA (const unsigned char *f, int filesize, int *m LoadPCX ============ */ -qboolean LoadPCX_QWSkin(const unsigned char *f, int filesize, unsigned char *pixels, int outwidth, int outheight) +qbool LoadPCX_QWSkin(const unsigned char *f, int filesize, unsigned char *pixels, int outwidth, int outheight) { pcx_t pcx; unsigned char *a; @@ -362,7 +362,7 @@ qboolean LoadPCX_QWSkin(const unsigned char *f, int filesize, unsigned char *pix LoadPCX ============ */ -qboolean LoadPCX_PaletteOnly(const unsigned char *f, int filesize, unsigned char *palette768b) +qbool LoadPCX_PaletteOnly(const unsigned char *f, int filesize, unsigned char *palette768b) { if (filesize < 768) return false; @@ -797,7 +797,7 @@ static unsigned char *LoadWAL_BGRA (const unsigned char *f, int filesize, int *m return image_buffer; } -qboolean LoadWAL_GetMetadata(const unsigned char *f, int filesize, int *retwidth, int *retheight, int *retflags, int *retvalue, int *retcontents, char *retanimname32c) +qbool LoadWAL_GetMetadata(const unsigned char *f, int filesize, int *retwidth, int *retheight, int *retflags, int *retvalue, int *retcontents, char *retanimname32c) { const q2wal_t *inwal = (const q2wal_t *)f; @@ -878,7 +878,7 @@ static unsigned char* LoadLMP_BGRA(const unsigned char *f, int filesize, int *mi } // gfx/conchars is a raw 128x128 image with 0 as transparent color rather than 255 -unsigned char *LoadConChars_BGRA(const unsigned char *f, int filesize, int *miplevel) +static unsigned char *LoadConChars_BGRA(const unsigned char *f, int filesize, int *miplevel) { unsigned char *image_buffer; int i; @@ -1040,10 +1040,11 @@ imageformat_t imageformats_other[] = }; int fixtransparentpixels(unsigned char *data, int w, int h); -unsigned char *loadimagepixelsbgra (const char *filename, qboolean complain, qboolean allowFixtrans, qboolean convertsRGB, int *miplevel) +unsigned char *loadimagepixelsbgra (const char *filename, qbool complain, qbool allowFixtrans, qbool convertsRGB, int *miplevel) { fs_offset_t filesize; imageformat_t *firstformat, *format; + int mymiplevel; unsigned char *f, *data = NULL, *data2 = NULL; char basename[MAX_QPATH], name[MAX_QPATH], name2[MAX_QPATH], path[MAX_QPATH], afterpath[MAX_QPATH], *c; char vabuf[1024]; @@ -1083,10 +1084,12 @@ unsigned char *loadimagepixelsbgra (const char *filename, qboolean complain, qbo for (format = firstformat;format->formatstring;format++) { dpsnprintf (name, sizeof(name), format->formatstring, basename); - f = FS_LoadFile(name, tempmempool, true, &filesize); - if (f) + + FS_SanitizePath(name); + + if(FS_FileExists(name) && (f = FS_LoadFile(name, tempmempool, true, &filesize)) != NULL) { - int mymiplevel = miplevel ? *miplevel : 0; + mymiplevel = miplevel ? *miplevel : 0; image_width = 0; image_height = 0; data = format->loadfunc(f, (int)filesize, &mymiplevel); @@ -1152,7 +1155,7 @@ unsigned char *loadimagepixelsbgra (const char *filename, qboolean complain, qbo if (developer_loading.integer) Con_Printf("loading gfx.wad lump \"%s\"\n", afterpath); - int mymiplevel = miplevel ? *miplevel : 0; + mymiplevel = miplevel ? *miplevel : 0; if (!strcmp(afterpath, "conchars")) { // conchars is a raw image and with color 0 as transparent instead of 255 @@ -1190,7 +1193,7 @@ unsigned char *loadimagepixelsbgra (const char *filename, qboolean complain, qbo return NULL; } -qboolean Image_GetStockPicSize(const char *filename, int *returnwidth, int *returnheight) +qbool Image_GetStockPicSize(const char *filename, int *returnwidth, int *returnheight) { unsigned char *data; fs_offset_t filesize; @@ -1239,7 +1242,7 @@ qboolean Image_GetStockPicSize(const char *filename, int *returnwidth, int *retu } extern cvar_t gl_picmip; -rtexture_t *loadtextureimage (rtexturepool_t *pool, const char *filename, qboolean complain, int flags, qboolean allowFixtrans, qboolean sRGB) +rtexture_t *loadtextureimage (rtexturepool_t *pool, const char *filename, qbool complain, int flags, qbool allowFixtrans, qbool sRGB) { unsigned char *data; rtexture_t *rt; @@ -1383,7 +1386,7 @@ void Image_FixTransparentPixels_f(cmd_state_t *cmd) return; } filename_pattern = Cmd_Argv(cmd, 1); - search = FS_Search(filename_pattern, true, true); + search = FS_Search(filename_pattern, true, true, NULL); if(!search) return; for(i = 0; i < search->numfilenames; ++i) @@ -1406,9 +1409,9 @@ void Image_FixTransparentPixels_f(cmd_state_t *cmd) FS_FreeSearch(search); } -qboolean Image_WriteTGABGR_preflipped (const char *filename, int width, int height, const unsigned char *data) +qbool Image_WriteTGABGR_preflipped (const char *filename, int width, int height, const unsigned char *data) { - qboolean ret; + qbool ret; unsigned char buffer[18]; const void *buffers[2]; fs_offset_t sizes[2]; @@ -1430,12 +1433,12 @@ qboolean Image_WriteTGABGR_preflipped (const char *filename, int width, int heig return ret; } -qboolean Image_WriteTGABGRA (const char *filename, int width, int height, const unsigned char *data) +qbool Image_WriteTGABGRA (const char *filename, int width, int height, const unsigned char *data) { int y; unsigned char *buffer, *out; const unsigned char *in, *end; - qboolean ret; + qbool ret; buffer = (unsigned char *)Mem_Alloc(tempmempool, width*height*4 + 18); @@ -1804,10 +1807,8 @@ void Image_HeightmapToNormalmap_BGRA(const unsigned char *inpixels, unsigned cha } } -static const unsigned char concharimage[] = -{ + #include "lhfont.h" -}; static unsigned char *Image_GenerateConChars(void) { @@ -2094,7 +2095,7 @@ unsigned char *Image_GetEmbeddedPicBGRA(const char *name) return data; } } - if (!strcmp(name, "white") || !strcmp(name, "#white")) + if (!strcmp(name, "white") || !strcmp(name, "#white") || !strcmp(name, "*white") || !strcmp(name, "$whiteimage")) return Image_GenerateWhite(); if (!strcmp(name, "gfx/conchars")) return Image_GenerateConChars();