mirror of
https://foundry.openuru.org/gitblit/r/CWE-ou-minkata.git
synced 2025-07-14 10:37:41 -04:00
Add libPNG support stubs.
This commit is contained in:
@ -22,7 +22,7 @@
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="../../../../Sources/Plasma/NucleusLib/inc;../../../../../StaticSDKs/Win32/dx8.1sdk/include;../../../../Sources/Plasma/PubUtilLib/inc;../../../../Sources/Plasma/CoreLib"
|
||||
AdditionalIncludeDirectories="../../../../Sources/Plasma/NucleusLib/inc;../../../../../StaticSDKs/Win32/dx8.1sdk/include;../../../../../StaticSDKs/XPlatform/zlib;../../../../../StaticSDKs/XPlatform/png;../../../../Sources/Plasma/PubUtilLib/inc;../../../../Sources/Plasma/CoreLib"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
|
||||
StringPooling="TRUE"
|
||||
RuntimeLibrary="2"
|
||||
@ -74,7 +74,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="../../../../Sources/Plasma/NucleusLib/inc;../../../../../StaticSDKs/Win32/dx8.1sdk/include;../../../../Sources/Plasma/PubUtilLib/inc;../../../../Sources/Plasma/CoreLib"
|
||||
AdditionalIncludeDirectories="../../../../Sources/Plasma/NucleusLib/inc;../../../../../StaticSDKs/Win32/dx8.1sdk/include;../../../../../StaticSDKs/XPlatform/zlib;../../../../../StaticSDKs/XPlatform/png;../../../../Sources/Plasma/PubUtilLib/inc;../../../../Sources/Plasma/CoreLib"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_LIB"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
@ -381,6 +381,9 @@
|
||||
BasicRuntimeChecks="3"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\Sources\Plasma\PubUtilLib\plGImage\plPNG.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\Sources\Plasma\PubUtilLib\plGImage\plTGAWriter.cpp">
|
||||
<FileConfiguration
|
||||
@ -470,6 +473,9 @@
|
||||
<File
|
||||
RelativePath="..\..\..\..\Sources\Plasma\PubUtilLib\plGImage\plMipmap.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\Sources\Plasma\PubUtilLib\plGImage\plPNG.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\Sources\Plasma\PubUtilLib\plGImage\plTGAWriter.h">
|
||||
</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;
|
||||
}
|
@ -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