diff options
author | md5 | 2011-05-26 11:44:52 +0300 |
---|---|---|
committer | md5 | 2011-05-26 11:46:42 +0300 |
commit | d5050463d52ef396f4e91e7780424ed19dd79fd2 (patch) | |
tree | f0b55b857263855f6b4bc12314874feb81d96730 | |
parent | 984f53ac14cb0124caab39aba3e712dfc49a8ef5 (diff) | |
download | scummvm-rg350-d5050463d52ef396f4e91e7780424ed19dd79fd2.tar.gz scummvm-rg350-d5050463d52ef396f4e91e7780424ed19dd79fd2.tar.bz2 scummvm-rg350-d5050463d52ef396f4e91e7780424ed19dd79fd2.zip |
SWORD25: Removed the leftover libpng code
-rw-r--r-- | engines/sword25/gfx/image/pngloader.cpp | 185 | ||||
-rw-r--r-- | engines/sword25/gfx/image/pngloader.h | 26 | ||||
-rw-r--r-- | engines/sword25/gfx/image/renderedimage.cpp | 9 | ||||
-rw-r--r-- | engines/sword25/gfx/image/swimage.cpp | 8 |
4 files changed, 1 insertions, 227 deletions
diff --git a/engines/sword25/gfx/image/pngloader.cpp b/engines/sword25/gfx/image/pngloader.cpp index 6f370d8861..921994052f 100644 --- a/engines/sword25/gfx/image/pngloader.cpp +++ b/engines/sword25/gfx/image/pngloader.cpp @@ -29,141 +29,15 @@ * */ -#ifndef USE_INTERNAL_PNG_DECODER -// Disable symbol overrides so that we can use png.h -#define FORBIDDEN_SYMBOL_ALLOW_ALL -#endif - #include "common/memstream.h" #include "sword25/gfx/image/image.h" #include "sword25/gfx/image/pngloader.h" -#ifndef USE_INTERNAL_PNG_DECODER -#include <png.h> -#else #include "graphics/pixelformat.h" #include "graphics/png.h" -#endif namespace Sword25 { -#ifndef USE_INTERNAL_PNG_DECODER -static void png_user_read_data(png_structp png_ptr, png_bytep data, png_size_t length) { - const byte **ref = (const byte **)png_get_io_ptr(png_ptr); - memcpy(data, *ref, length); - *ref += length; -} - -static bool doIsCorrectImageFormat(const byte *fileDataPtr, uint fileSize) { - return (fileSize > 8) && png_check_sig(const_cast<byte *>(fileDataPtr), 8); -} -#endif - -bool PNGLoader::doDecodeImage(const byte *fileDataPtr, uint fileSize, byte *&uncompressedDataPtr, int &width, int &height, int &pitch) { -#ifndef USE_INTERNAL_PNG_DECODER - png_structp png_ptr = NULL; - png_infop info_ptr = NULL; - - int bitDepth; - int colorType; - int interlaceType; - int i; - - // Check for valid PNG signature - if (!doIsCorrectImageFormat(fileDataPtr, fileSize)) { - error("png_check_sig failed"); - } - - // Create both PNG structures - png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); - if (!png_ptr) { - error("Could not create libpng read struct."); - } - - info_ptr = png_create_info_struct(png_ptr); - if (!info_ptr) { - error("Could not create libpng info struct."); - } - - // Use alternative reading function - const byte **ref = &fileDataPtr; - png_set_read_fn(png_ptr, (void *)ref, png_user_read_data); - - // Read PNG header - png_read_info(png_ptr, info_ptr); - - // Read out PNG informations - - png_uint_32 w, h; - png_get_IHDR(png_ptr, info_ptr, &w, &h, &bitDepth, &colorType, &interlaceType, NULL, NULL); - width = w; - height = h; - - // Calculate pitch of output image - pitch = GraphicEngine::calcPitch(GraphicEngine::CF_ARGB32, width); - - // Allocate memory for the final image data. - // To keep memory framentation low this happens before allocating memory for temporary image data. - uncompressedDataPtr = new byte[pitch * height]; - if (!uncompressedDataPtr) { - error("Could not allocate memory for output image."); - } - - // Images of all color formates will be transformed into ARGB images - if (bitDepth == 16) - png_set_strip_16(png_ptr); - if (colorType == PNG_COLOR_TYPE_PALETTE) - png_set_expand(png_ptr); - if (bitDepth < 8) - png_set_expand(png_ptr); - if (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS)) - png_set_expand(png_ptr); - if (colorType == PNG_COLOR_TYPE_GRAY || - colorType == PNG_COLOR_TYPE_GRAY_ALPHA) - png_set_gray_to_rgb(png_ptr); - - png_set_bgr(png_ptr); - - if (colorType != PNG_COLOR_TYPE_RGB_ALPHA) - png_set_filler(png_ptr, 0xff, PNG_FILLER_AFTER); - - // After the transformations have been registered, the image data is read again. - png_read_update_info(png_ptr, info_ptr); - png_get_IHDR(png_ptr, info_ptr, &w, &h, &bitDepth, &colorType, NULL, NULL, NULL); - width = w; - height = h; - - if (interlaceType == PNG_INTERLACE_NONE) { - // PNGs without interlacing can simply be read row by row. - for (i = 0; i < height; i++) { - png_read_row(png_ptr, uncompressedDataPtr + i * pitch, NULL); - } - } else { - // PNGs with interlacing require us to allocate an auxillary - // buffer with pointers to all row starts. - - // Allocate row pointer buffer - png_bytep *pRowPtr = new png_bytep[height]; - if (!pRowPtr) { - error("Could not allocate memory for row pointers."); - } - - // Initialize row pointers - for (i = 0; i < height; i++) - pRowPtr[i] = uncompressedDataPtr + i * pitch; - - // Read image data - png_read_image(png_ptr, pRowPtr); - - // Free row pointer buffer - delete[] pRowPtr; - } - - // Read additional data at the end. - png_read_end(png_ptr, NULL); - - // Destroy libpng structures - png_destroy_read_struct(&png_ptr, &info_ptr, NULL); -#else +bool PNGLoader::decodeImage(const byte *fileDataPtr, uint fileSize, byte *&uncompressedDataPtr, int &width, int &height, int &pitch) { Common::MemoryReadStream *fileStr = new Common::MemoryReadStream(fileDataPtr, fileSize, DisposeAfterUse::NO); Graphics::PNG *png = new Graphics::PNG(); if (!png->read(fileStr)) // the fileStr pointer, and thus pFileData will be deleted after this is done @@ -181,65 +55,8 @@ bool PNGLoader::doDecodeImage(const byte *fileDataPtr, uint fileSize, byte *&unc delete pngSurface; delete png; -#endif // Signal success return true; } -bool PNGLoader::decodeImage(const byte *fileDataPtr, uint fileSize, byte *&uncompressedDataPtr, int &width, int &height, int &pitch) { - return doDecodeImage(fileDataPtr, fileSize, uncompressedDataPtr, width, height, pitch); -} - -#ifndef USE_INTERNAL_PNG_DECODER -bool PNGLoader::doImageProperties(const byte *fileDataPtr, uint fileSize, int &width, int &height) { - // Check for valid PNG signature - if (!doIsCorrectImageFormat(fileDataPtr, fileSize)) - return false; - - png_structp png_ptr = NULL; - png_infop info_ptr = NULL; - - // Create both PNG structures - png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); - if (!png_ptr) { - error("Could not create libpng read struct."); - } - - info_ptr = png_create_info_struct(png_ptr); - if (!info_ptr) { - error("Could not create libpng info struct."); - } - - // Use alternative reading function - const byte **ref = &fileDataPtr; - png_set_read_fn(png_ptr, (void *)ref, png_user_read_data); - - // Read PNG Header - png_read_info(png_ptr, info_ptr); - - // Read out PNG informations - int bitDepth; - int colorType; - png_uint_32 w, h; - png_get_IHDR(png_ptr, info_ptr, &w, &h, &bitDepth, &colorType, NULL, NULL, NULL); - - width = w; - height = h; - - // Destroy libpng structures - png_destroy_read_struct(&png_ptr, &info_ptr, NULL); - - return true; - -} - -bool PNGLoader::imageProperties(const byte *fileDataPtr, uint fileSize, int &width, int &height) { - return doImageProperties(fileDataPtr, fileSize, width, height); -} - -#else - // We don't need to read the image properties here... -#endif - - } // End of namespace Sword25 diff --git a/engines/sword25/gfx/image/pngloader.h b/engines/sword25/gfx/image/pngloader.h index 6b5f65ff57..3f909315ab 100644 --- a/engines/sword25/gfx/image/pngloader.h +++ b/engines/sword25/gfx/image/pngloader.h @@ -37,9 +37,6 @@ namespace Sword25 { -// Define to use ScummVM's PNG decoder, instead of libpng -#define USE_INTERNAL_PNG_DECODER - /** * Class for loading PNG files, and PNG data embedded into savegames. * @@ -49,11 +46,6 @@ class PNGLoader { protected: PNGLoader() {} // Protected constructor to prevent instances - static bool doDecodeImage(const byte *fileDataPtr, uint fileSize, byte *&uncompressedDataPtr, int &width, int &height, int &pitch); -#ifndef USE_INTERNAL_PNG_DECODER - static bool doImageProperties(const byte *fileDataPtr, uint fileSize, int &width, int &height); -#endif - public: /** @@ -74,24 +66,6 @@ public: byte *&pUncompressedData, int &width, int &height, int &pitch); - -#ifndef USE_INTERNAL_PNG_DECODER - /** - * Extract the properties of an image. - * @param[in] fileDatePtr pointer to the image data - * @param[in] fileSize size of the image data in bytes - * @param[out] width if successful, this is set to the width of the image - * @param[out] height if successful, this is set to the height of the image - * @return returns true if extraction of the properties was successful, false in case of an error - * - * @remark This function does not free the image buffer passed to it, - * it is the callers responsibility to do so. - */ - static bool imageProperties(const byte *fileDatePtr, uint fileSize, - int &width, - int &height); -#endif - }; } // End of namespace Sword25 diff --git a/engines/sword25/gfx/image/renderedimage.cpp b/engines/sword25/gfx/image/renderedimage.cpp index 395d29d81a..476d293779 100644 --- a/engines/sword25/gfx/image/renderedimage.cpp +++ b/engines/sword25/gfx/image/renderedimage.cpp @@ -145,15 +145,6 @@ RenderedImage::RenderedImage(const Common::String &filename, bool &result) : return; } -#ifndef USE_INTERNAL_PNG_DECODER - // Determine image properties - if (!PNGLoader::imageProperties(pFileData, fileSize, _width, _height)) { - error("Could not read image properties."); - delete[] pFileData; - return; - } -#endif - // Uncompress the image int pitch; if (isPNG) diff --git a/engines/sword25/gfx/image/swimage.cpp b/engines/sword25/gfx/image/swimage.cpp index 92d47368b2..0978eb5ac1 100644 --- a/engines/sword25/gfx/image/swimage.cpp +++ b/engines/sword25/gfx/image/swimage.cpp @@ -53,14 +53,6 @@ SWImage::SWImage(const Common::String &filename, bool &result) : return; } -#ifndef USE_INTERNAL_PNG_DECODER - // Determine image properties - if (!PNGLoader::imageProperties(pFileData, fileSize, _width, _height)) { - error("Could not read image properties."); - return; - } -#endif - // Uncompress the image int pitch; byte *pUncompressedData; |