aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormd52011-05-26 11:44:52 +0300
committermd52011-05-26 11:46:42 +0300
commitd5050463d52ef396f4e91e7780424ed19dd79fd2 (patch)
treef0b55b857263855f6b4bc12314874feb81d96730
parent984f53ac14cb0124caab39aba3e712dfc49a8ef5 (diff)
downloadscummvm-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.cpp185
-rw-r--r--engines/sword25/gfx/image/pngloader.h26
-rw-r--r--engines/sword25/gfx/image/renderedimage.cpp9
-rw-r--r--engines/sword25/gfx/image/swimage.cpp8
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;