diff --git a/doomsday/engine/engine.pro b/doomsday/engine/engine.pro index 5cf6a521c1..1311be7748 100644 --- a/doomsday/engine/engine.pro +++ b/doomsday/engine/engine.pro @@ -198,7 +198,6 @@ DENG_HEADERS += \ include/gl_tex.h \ include/gl_texmanager.h \ include/gridmap.h \ - include/image.h \ include/json.h \ include/kdtree.h \ include/library.h \ @@ -294,6 +293,7 @@ DENG_HEADERS += \ include/resource/colorpalette.h \ include/resource/font.h \ include/resource/fonts.h \ + include/resource/image.h \ include/resource/material.h \ include/resource/materials.h \ include/resource/materialvariant.h \ @@ -488,7 +488,6 @@ SOURCES += \ src/gl_tex.c \ src/gl_texmanager.c \ src/gridmap.c \ - src/image.cpp \ src/json.cpp \ src/kdtree.c \ src/library.cpp \ @@ -580,6 +579,7 @@ SOURCES += \ src/resource/bitmapfont.c \ src/resource/colorpalette.c \ src/resource/fonts.cpp \ + src/resource/image.cpp \ src/resource/material.cpp \ src/resource/materialarchive.c \ src/resource/materials.cpp \ diff --git a/doomsday/engine/include/image.h b/doomsday/engine/include/resource/image.h similarity index 88% rename from doomsday/engine/include/image.h rename to doomsday/engine/include/resource/image.h index 63cc7b5c35..366373c81b 100644 --- a/doomsday/engine/include/image.h +++ b/doomsday/engine/include/resource/image.h @@ -1,6 +1,6 @@ /** * @file image.h - * Image objects and relates routines. @ingroup gl + * Image objects and relates routines. @ingroup resource * * @authors Copyright © 2003-2012 Jaakko Keränen * @authors Copyright © 2005-2012 Daniel Swanson @@ -65,9 +65,19 @@ typedef struct image_s { uint8_t* pixels; } image_t; -void GL_InitImage(image_t* image); +/** + * Initializes the previously allocated @a image for use. + * @param image Image instance. + */ +void Image_Init(image_t* image); + +/** + * Releases image pixel data, but does not delete @a image. + * @param image Image instance. + */ +void Image_Destroy(image_t* image); -void GL_PrintImageMetadata(const image_t* image); +void Image_PrintMetadata(const image_t* image); /** * Loads PCX, TGA and PNG images. The returned buffer must be freed @@ -81,9 +91,6 @@ boolean Image_LoadFromFileWithFormat(image_t* img, const char* format, FileHandl boolean Image_Save(const image_t *image, const char* filePath); -/// Release image pixel data. -void GL_DestroyImage(image_t* image); - /// @return @c true if the image pixel data contains alpha information. boolean Image_HasAlpha(const image_t* image); diff --git a/doomsday/engine/src/gl_texmanager.c b/doomsday/engine/src/gl_texmanager.c index 99523a5bec..a56bdacf1d 100644 --- a/doomsday/engine/src/gl_texmanager.c +++ b/doomsday/engine/src/gl_texmanager.c @@ -1405,7 +1405,7 @@ void GL_PruneTextureVariantSpecifications(void) #endif } -void GL_InitImage(image_t* img) +void Image_Init(image_t* img) { assert(img); img->size.width = 0; @@ -1416,7 +1416,7 @@ void GL_InitImage(image_t* img) img->pixels = 0; } -void GL_PrintImageMetadata(const image_t* image) +void Image_PrintMetadata(const image_t* image) { assert(image); Con_Printf("dimensions:[%ix%i] flags:%i %s:%i\n", image->size.width, image->size.height, @@ -1427,7 +1427,7 @@ void GL_PrintImageMetadata(const image_t* image) static boolean tryLoadPCX(image_t* img, FileHandle* file) { assert(img && file); - GL_InitImage(img); + Image_Init(img); img->pixels = PCX_Load(file, &img->size.width, &img->size.height, &img->pixelSize); return (0 != img->pixels); } @@ -1442,7 +1442,7 @@ static boolean tryLoadPNG(image_t* img, FileHandle* file) { assert(img && file); /* - GL_InitImage(img); + Image_Init(img); img->pixels = PNG_Load(file, &img->size.width, &img->size.height, &img->pixelSize); return (0 != img->pixels); */ @@ -1452,7 +1452,7 @@ static boolean tryLoadPNG(image_t* img, FileHandle* file) static boolean tryLoadTGA(image_t* img, FileHandle* file) { assert(img && file); - GL_InitImage(img); + Image_Init(img); img->pixels = TGA_Load(file, &img->size.width, &img->size.height, &img->pixelSize); return (0 != img->pixels); } @@ -1497,7 +1497,7 @@ uint8_t* Image_LoadFromFile(image_t* img, FileHandle* file) const char* fileName; assert(img && file); - GL_InitImage(img); + Image_Init(img); fileName = Str_Text(F_ComposePath(FileHandle_File_const(file))); @@ -1571,7 +1571,7 @@ uint8_t* GL_LoadImageStr(image_t* img, const ddstring_t* filePath) return GL_LoadImage(img, Str_Text(filePath)); } -void GL_DestroyImage(image_t* img) +void Image_Destroy(image_t* img) { assert(img); if(!img->pixels) return; @@ -2367,7 +2367,7 @@ TexSource GL_LoadDetailTextureLump(image_t* image, FileHandle* file) { // It must be an old-fashioned "raw" image. size_t bufSize, fileLength = FileHandle_Length(file); - GL_InitImage(image); + Image_Init(image); /** * @todo Do not fatal error here if the not a known format! @@ -2418,7 +2418,7 @@ TexSource GL_LoadFlatLump(image_t* image, FileHandle* file) size_t bufSize, fileLength = FileHandle_Length(file); - GL_InitImage(image); + Image_Init(image); /// @todo not all flats are 64x64! image->size.width = FLAT_WIDTH; @@ -2463,7 +2463,7 @@ static TexSource loadPatchLump(image_t* image, FileHandle* file, int tclass, int if(validPatch((const uint8_t*)patch, fileLength)) { - GL_InitImage(image); + Image_Init(image); image->size.width = SHORT(patch->width) + border*2; image->size.height = SHORT(patch->height) + border*2; image->pixelSize = 1; @@ -2531,7 +2531,7 @@ DGLuint GL_PrepareExtTexture(const char* name, gfxmode_t mode, int useMipmap, 0, (useMipmap ? glmode[mipmapping] : GL_LINEAR), magFilter, texAniso, wrapS, wrapT); - GL_DestroyImage(&image); + Image_Destroy(&image); } return texture; @@ -2550,7 +2550,7 @@ TexSource GL_LoadPatchComposite(image_t* image, Texture* tex) texDef = (patchcompositetex_t*)Texture_UserDataPointer(tex); assert(texDef); - GL_InitImage(image); + Image_Init(image); image->pixelSize = 1; image->size.width = texDef->size.width; image->size.height = texDef->size.height; @@ -2626,7 +2626,7 @@ TexSource GL_LoadPatchCompositeAsSky(image_t* image, Texture* tex, boolean zeroM F_UnlockLump(file, lumpIdx); } - GL_InitImage(image); + Image_Init(image); image->pixelSize = 1; image->size.width = width; image->size.height = height; @@ -2705,7 +2705,7 @@ TexSource GL_LoadRawTex(image_t* image, const rawtex_t* r) size_t fileLength = FileHandle_Length(file); size_t bufSize = 3 * RAW_WIDTH * RAW_HEIGHT; - GL_InitImage(image); + Image_Init(image); image->pixels = malloc(bufSize); if(fileLength < bufSize) memset(image->pixels, 0, bufSize); @@ -2764,7 +2764,7 @@ DGLuint GL_PrepareRawTexture(rawtex_t* raw) raw->width = image.size.width; raw->height = image.size.height; - GL_DestroyImage(&image); + Image_Destroy(&image); } return raw->tex; @@ -3356,7 +3356,7 @@ static boolean tryLoadImageAndPrepareVariant(Texture* tex, } // We're done with the image data. - GL_DestroyImage(&image); + Image_Destroy(&image); #ifdef _DEBUG VERBOSE( @@ -3369,7 +3369,7 @@ static boolean tryLoadImageAndPrepareVariant(Texture* tex, ) VERBOSE2( Con_Printf(" Content: "); - GL_PrintImageMetadata(&image); + Image_PrintMetadata(&image); Con_Printf(" Specification: "); GL_PrintTextureVariantSpecification(spec); ) @@ -3660,7 +3660,7 @@ boolean GL_DumpImage(const image_t* origImg, const char* filePath) const image_t* img = origImg; if(img->pixelSize != 4 || img->paletteId) { - GL_InitImage(&imgABGR32); + Image_Init(&imgABGR32); imgABGR32.pixels = GL_ConvertBuffer(img->pixels, img->size.width, img->size.height, ((img->flags & IMGF_IS_MASKED)? 2 : 1), R_ToColorPalette(img->paletteId), 4); @@ -3674,7 +3674,7 @@ boolean GL_DumpImage(const image_t* origImg, const char* filePath) if(img == &imgABGR32) { - GL_DestroyImage(&imgABGR32); + Image_Destroy(&imgABGR32); } return savedOK; }} diff --git a/doomsday/engine/src/render/rend_particle.c b/doomsday/engine/src/render/rend_particle.c index 75e549d0a3..70a1e564df 100644 --- a/doomsday/engine/src/render/rend_particle.c +++ b/doomsday/engine/src/render/rend_particle.c @@ -135,7 +135,7 @@ static byte loadParticleTexture(uint particleTex, boolean silent) TXCF_NO_COMPRESSION); // Free the buffer. - GL_DestroyImage(&image); + Image_Destroy(&image); } else if(!silent) { diff --git a/doomsday/engine/src/image.cpp b/doomsday/engine/src/resource/image.cpp similarity index 99% rename from doomsday/engine/src/image.cpp rename to doomsday/engine/src/resource/image.cpp index 9b1daea5ed..e2254ce0c3 100644 --- a/doomsday/engine/src/image.cpp +++ b/doomsday/engine/src/resource/image.cpp @@ -145,7 +145,7 @@ boolean Image_LoadFromFileWithFormat(image_t* img, const char* format, FileHandl // It is assumed that file's position stays the same (could be trying multiple loaders). size_t initPos = hndl.tell(); - GL_InitImage(img); + Image_Init(img); // Load the file contents to a memory buffer. QByteArray data; diff --git a/doomsday/engine/src/ui/busyvisual.c b/doomsday/engine/src/ui/busyvisual.c index 7edc5e4c8e..ed5963f80c 100644 --- a/doomsday/engine/src/ui/busyvisual.c +++ b/doomsday/engine/src/ui/busyvisual.c @@ -153,13 +153,13 @@ void BusyVisual_LoadTextures(void) if(GL_LoadImage(&image, "}data/graphics/loading1.png")) { texLoading[0] = GL_NewTextureWithParams(DGL_RGBA, image.size.width, image.size.height, image.pixels, TXCF_NEVER_DEFER); - GL_DestroyImage(&image); + Image_Destroy(&image); } if(GL_LoadImage(&image, "}data/graphics/loading2.png")) { texLoading[1] = GL_NewTextureWithParams(DGL_RGBA, image.size.width, image.size.height, image.pixels, TXCF_NEVER_DEFER); - GL_DestroyImage(&image); + Image_Destroy(&image); } } diff --git a/doomsday/engine/src/ui/canvas.cpp b/doomsday/engine/src/ui/canvas.cpp index 49b66612f7..2fe8333ccf 100644 --- a/doomsday/engine/src/ui/canvas.cpp +++ b/doomsday/engine/src/ui/canvas.cpp @@ -235,7 +235,7 @@ void Canvas::grab(image_t* img, const QSize& outputSize) { QImage grabbed = grabImage(outputSize); - GL_InitImage(img); + Image_Init(img); img->size.width = grabbed.width(); img->size.height = grabbed.height(); img->pixels = (uint8_t*) malloc(grabbed.byteCount()); diff --git a/doomsday/engine/src/ui/ui_main.c b/doomsday/engine/src/ui/ui_main.c index 54974060dd..378fd3e583 100644 --- a/doomsday/engine/src/ui/ui_main.c +++ b/doomsday/engine/src/ui/ui_main.c @@ -281,7 +281,7 @@ void UI_LoadTextures(void) TXCF_NO_COMPRESSION, 0, GL_LINEAR, GL_LINEAR, 0 /*no anisotropy*/, GL_CLAMP_TO_EDGE, GL_CLAMP_TO_EDGE); - GL_DestroyImage(&image); + Image_Destroy(&image); } else uiTextures[i] = 0;