mirror of
https://foundry.openuru.org/gitblit/r/CWE-ou-minkata.git
synced 2025-07-14 02:27:40 -04:00
Add libPNG support stubs.
This commit is contained in:
@ -10,6 +10,7 @@ find_package(PythonLibs REQUIRED)
|
|||||||
find_package(EXPAT REQUIRED)
|
find_package(EXPAT REQUIRED)
|
||||||
find_package(ZLIB REQUIRED)
|
find_package(ZLIB REQUIRED)
|
||||||
find_package(PhysX REQUIRED) #TODO: Not required if we aren't building the client
|
find_package(PhysX REQUIRED) #TODO: Not required if we aren't building the client
|
||||||
|
find_package(PNG REQUIRED)
|
||||||
find_package(Ogg REQUIRED) #TODO: Not required if we aren't building the client
|
find_package(Ogg REQUIRED) #TODO: Not required if we aren't building the client
|
||||||
find_package(Vorbis REQUIRED) #TODO: Not required if we aren't building the client
|
find_package(Vorbis REQUIRED) #TODO: Not required if we aren't building the client
|
||||||
find_package(Speex REQUIRED) #TODO: Not required if we aren't building the client
|
find_package(Speex REQUIRED) #TODO: Not required if we aren't building the client
|
||||||
@ -86,4 +87,4 @@ endif(MSVC)
|
|||||||
include_directories(${OPENSSL_INCLUDE_DIR})
|
include_directories(${OPENSSL_INCLUDE_DIR})
|
||||||
|
|
||||||
add_subdirectory(Sources/Plasma)
|
add_subdirectory(Sources/Plasma)
|
||||||
add_subdirectory(Sources/Tools)
|
add_subdirectory(Sources/Tools)
|
||||||
|
@ -3,6 +3,9 @@ include_directories("../../NucleusLib/inc")
|
|||||||
include_directories("../../NucleusLib")
|
include_directories("../../NucleusLib")
|
||||||
include_directories("../../PubUtilLib")
|
include_directories("../../PubUtilLib")
|
||||||
|
|
||||||
|
find_package(PNG REQUIRED)
|
||||||
|
include_directories(${PNG_INCLUDE_DIR})
|
||||||
|
|
||||||
set(plGImage_SOURCES
|
set(plGImage_SOURCES
|
||||||
hsCodecManager.cpp
|
hsCodecManager.cpp
|
||||||
hsDXTDirectXCodec.cpp
|
hsDXTDirectXCodec.cpp
|
||||||
@ -17,6 +20,7 @@ set(plGImage_SOURCES
|
|||||||
plFontCache.cpp
|
plFontCache.cpp
|
||||||
plLODMipmap.cpp
|
plLODMipmap.cpp
|
||||||
plMipmap.cpp
|
plMipmap.cpp
|
||||||
|
plPNG.cpp
|
||||||
plTGAWriter.cpp
|
plTGAWriter.cpp
|
||||||
plWinFontCache.cpp
|
plWinFontCache.cpp
|
||||||
)
|
)
|
||||||
@ -37,6 +41,7 @@ set(plGImage_HEADERS
|
|||||||
plGImageCreatable.h
|
plGImageCreatable.h
|
||||||
plLODMipmap.h
|
plLODMipmap.h
|
||||||
plMipmap.h
|
plMipmap.h
|
||||||
|
plPNG.h
|
||||||
plTGAWriter.h
|
plTGAWriter.h
|
||||||
plWinFontCache.h
|
plWinFontCache.h
|
||||||
)
|
)
|
||||||
|
139
Sources/Plasma/PubUtilLib/plGImage/plPNG.cpp
Normal file
139
Sources/Plasma/PubUtilLib/plGImage/plPNG.cpp
Normal file
@ -0,0 +1,139 @@
|
|||||||
|
/*==LICENSE==*
|
||||||
|
|
||||||
|
CyanWorlds.com Engine - MMOG client, server and tools
|
||||||
|
Copyright (C) 2011 Cyan Worlds, Inc.
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
||||||
|
or by snail mail at:
|
||||||
|
Cyan Worlds, Inc.
|
||||||
|
14617 N Newport Hwy
|
||||||
|
Mead, WA 99021
|
||||||
|
|
||||||
|
*==LICENSE==*/
|
||||||
|
|
||||||
|
#include "hsTypes.h"
|
||||||
|
#include "hsStream.h"
|
||||||
|
#include "hsExceptions.h"
|
||||||
|
#include "hsUtils.h"
|
||||||
|
#include "plPNG.h"
|
||||||
|
#include "plGImage/plMipmap.h"
|
||||||
|
|
||||||
|
#include <png.h>
|
||||||
|
|
||||||
|
|
||||||
|
plMipmap *plPNG::IRead( hsStream *inStream )
|
||||||
|
{
|
||||||
|
plMipmap *newMipmap = NULL;
|
||||||
|
png_structp png_ptr;
|
||||||
|
png_infop info_ptr;
|
||||||
|
png_infop end_info;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// Check PNG Signature
|
||||||
|
png_byte sig[8];
|
||||||
|
inStream->Read8Bytes((char *) sig);
|
||||||
|
if (!png_sig_cmp(sig, 0, 8))
|
||||||
|
{
|
||||||
|
inStream->Rewind();
|
||||||
|
|
||||||
|
// Allocate required structs
|
||||||
|
png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
|
||||||
|
if (!png_ptr)
|
||||||
|
throw( false );
|
||||||
|
|
||||||
|
info_ptr = png_create_info_struct(png_ptr);
|
||||||
|
if (!info_ptr)
|
||||||
|
{
|
||||||
|
png_destroy_read_struct(&png_ptr, (png_infopp)NULL, (png_infopp)NULL);
|
||||||
|
throw( false );
|
||||||
|
}
|
||||||
|
|
||||||
|
end_info = png_create_info_struct(png_ptr);
|
||||||
|
if (!end_info)
|
||||||
|
{
|
||||||
|
png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL);
|
||||||
|
throw( false );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Clean up allocated structs
|
||||||
|
png_destroy_read_struct(&png_ptr, &info_ptr, &end_info);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch( ... )
|
||||||
|
{
|
||||||
|
if (newMipmap != NULL)
|
||||||
|
{
|
||||||
|
delete newMipmap;
|
||||||
|
newMipmap = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return newMipmap;
|
||||||
|
}
|
||||||
|
|
||||||
|
plMipmap* plPNG::ReadFromFile( const char *fileName )
|
||||||
|
{
|
||||||
|
wchar* wFilename = hsStringToWString(fileName);
|
||||||
|
plMipmap* retVal = ReadFromFile(wFilename);
|
||||||
|
delete [] wFilename;
|
||||||
|
return retVal;
|
||||||
|
}
|
||||||
|
|
||||||
|
plMipmap* plPNG::ReadFromFile( const wchar *fileName )
|
||||||
|
{
|
||||||
|
hsUNIXStream in;
|
||||||
|
if (!in.Open(fileName, L"rb"))
|
||||||
|
return false;
|
||||||
|
plMipmap* ret = IRead(&in);
|
||||||
|
in.Close();
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
hsBool plPNG::IWrite( plMipmap *source, hsStream *outStream )
|
||||||
|
{
|
||||||
|
hsBool result = true;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
}
|
||||||
|
catch( ... )
|
||||||
|
{
|
||||||
|
result = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
hsBool plPNG::WriteToFile( const char *fileName, plMipmap *sourceData )
|
||||||
|
{
|
||||||
|
wchar* wFilename = hsStringToWString(fileName);
|
||||||
|
hsBool retVal = WriteToFile(wFilename, sourceData);
|
||||||
|
delete [] wFilename;
|
||||||
|
return retVal;
|
||||||
|
}
|
||||||
|
|
||||||
|
hsBool plPNG::WriteToFile( const wchar *fileName, plMipmap *sourceData )
|
||||||
|
{
|
||||||
|
hsUNIXStream out;
|
||||||
|
if (!out.Open(fileName, L"wb"))
|
||||||
|
return false;
|
||||||
|
hsBool ret = IWrite(sourceData, &out);
|
||||||
|
out.Close();
|
||||||
|
return ret;
|
||||||
|
}
|
54
Sources/Plasma/PubUtilLib/plGImage/plPNG.h
Normal file
54
Sources/Plasma/PubUtilLib/plGImage/plPNG.h
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
/*==LICENSE==*
|
||||||
|
|
||||||
|
CyanWorlds.com Engine - MMOG client, server and tools
|
||||||
|
Copyright (C) 2011 Cyan Worlds, Inc.
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
||||||
|
or by snail mail at:
|
||||||
|
Cyan Worlds, Inc.
|
||||||
|
14617 N Newport Hwy
|
||||||
|
Mead, WA 99021
|
||||||
|
|
||||||
|
*==LICENSE==*/
|
||||||
|
|
||||||
|
#ifndef _plPNG_h
|
||||||
|
#define _plPNG_h
|
||||||
|
|
||||||
|
|
||||||
|
//// Class Definition /////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
class plMipmap;
|
||||||
|
class hsStream;
|
||||||
|
|
||||||
|
class plPNG
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
|
||||||
|
plMipmap *IRead( hsStream *inStream );
|
||||||
|
hsBool IWrite( plMipmap *source, hsStream *outStream );
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
plMipmap *ReadFromStream( hsStream *inStream ) { return IRead( inStream ); }
|
||||||
|
plMipmap *ReadFromFile( const char *fileName );
|
||||||
|
plMipmap *ReadFromFile( const wchar *fileName );
|
||||||
|
|
||||||
|
hsBool WriteToStream( hsStream *outStream, plMipmap *sourceData ) { return IWrite( sourceData, outStream ); }
|
||||||
|
hsBool WriteToFile( const char *fileName, plMipmap *sourceData );
|
||||||
|
hsBool WriteToFile( const wchar *fileName, plMipmap *sourceData );
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // _plPNG_h
|
Reference in New Issue
Block a user