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:
@ -22,7 +22,7 @@
|
|||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
Optimization="2"
|
Optimization="2"
|
||||||
InlineFunctionExpansion="1"
|
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"
|
PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
|
||||||
StringPooling="TRUE"
|
StringPooling="TRUE"
|
||||||
RuntimeLibrary="2"
|
RuntimeLibrary="2"
|
||||||
@ -74,7 +74,7 @@
|
|||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
Optimization="0"
|
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"
|
PreprocessorDefinitions="WIN32;_DEBUG;_LIB"
|
||||||
BasicRuntimeChecks="3"
|
BasicRuntimeChecks="3"
|
||||||
RuntimeLibrary="3"
|
RuntimeLibrary="3"
|
||||||
@ -381,6 +381,9 @@
|
|||||||
BasicRuntimeChecks="3"/>
|
BasicRuntimeChecks="3"/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\..\..\Sources\Plasma\PubUtilLib\plGImage\plPNG.cpp">
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\..\..\Sources\Plasma\PubUtilLib\plGImage\plTGAWriter.cpp">
|
RelativePath="..\..\..\..\Sources\Plasma\PubUtilLib\plGImage\plTGAWriter.cpp">
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
@ -470,6 +473,9 @@
|
|||||||
<File
|
<File
|
||||||
RelativePath="..\..\..\..\Sources\Plasma\PubUtilLib\plGImage\plMipmap.h">
|
RelativePath="..\..\..\..\Sources\Plasma\PubUtilLib\plGImage\plMipmap.h">
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\..\..\Sources\Plasma\PubUtilLib\plGImage\plPNG.h">
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\..\..\Sources\Plasma\PubUtilLib\plGImage\plTGAWriter.h">
|
RelativePath="..\..\..\..\Sources\Plasma\PubUtilLib\plGImage\plTGAWriter.h">
|
||||||
</File>
|
</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