mirror of
https://foundry.openuru.org/gitblit/r/CWE-ou-minkata.git
synced 2025-07-17 18:59:09 +00:00
Merge H-uru GIT PR356:
Adam Johnson committed 48ad646 on 15 Jan 17 Manually merge #356 Merge remote-tracking branch 'deledrius/plMipmap_png'
This commit is contained in:
@ -113,7 +113,8 @@ UInt32 plBitmap::Read( hsStream *s )
|
|||||||
fFlags = s->ReadSwap16();
|
fFlags = s->ReadSwap16();
|
||||||
fCompressionType = s->ReadByte();
|
fCompressionType = s->ReadByte();
|
||||||
|
|
||||||
if(( fCompressionType == kUncompressed )||( fCompressionType == kJPEGCompression ))
|
if( fCompressionType == kUncompressed || fCompressionType == kJPEGCompression ||
|
||||||
|
fCompressionType == kPNGCompression )
|
||||||
{
|
{
|
||||||
fUncompressedInfo.fType = s->ReadByte();
|
fUncompressedInfo.fType = s->ReadByte();
|
||||||
read++;
|
read++;
|
||||||
@ -145,7 +146,8 @@ UInt32 plBitmap::Write( hsStream *s )
|
|||||||
s->WriteSwap16( fFlags );
|
s->WriteSwap16( fFlags );
|
||||||
s->WriteByte( fCompressionType );
|
s->WriteByte( fCompressionType );
|
||||||
|
|
||||||
if(( fCompressionType == kUncompressed )||(fCompressionType == kJPEGCompression ))
|
if( fCompressionType == kUncompressed || fCompressionType == kJPEGCompression ||
|
||||||
|
fCompressionType == kPNGCompression )
|
||||||
{
|
{
|
||||||
s->WriteByte( fUncompressedInfo.fType );
|
s->WriteByte( fUncompressedInfo.fType );
|
||||||
written++;
|
written++;
|
||||||
|
@ -104,7 +104,8 @@ class plBitmap : public hsKeyedObject
|
|||||||
{
|
{
|
||||||
kUncompressed = 0x0,
|
kUncompressed = 0x0,
|
||||||
kDirectXCompression = 0x1,
|
kDirectXCompression = 0x1,
|
||||||
kJPEGCompression = 0x2
|
kJPEGCompression = 0x2,
|
||||||
|
kPNGCompression = 0x3
|
||||||
};
|
};
|
||||||
|
|
||||||
struct DirectXInfo
|
struct DirectXInfo
|
||||||
|
@ -60,6 +60,7 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
|||||||
#include "../plPipeline/hsGDeviceRef.h"
|
#include "../plPipeline/hsGDeviceRef.h"
|
||||||
#include "plProfile.h"
|
#include "plProfile.h"
|
||||||
#include "../plJPEG/plJPEG.h"
|
#include "../plJPEG/plJPEG.h"
|
||||||
|
#include "plPNG.h"
|
||||||
|
|
||||||
plProfile_CreateMemCounter("Mipmaps", "Memory", MemMipmaps);
|
plProfile_CreateMemCounter("Mipmaps", "Memory", MemMipmaps);
|
||||||
|
|
||||||
@ -122,11 +123,8 @@ void plMipmap::Create( UInt32 width, UInt32 height, unsigned config, UInt8 numLe
|
|||||||
}
|
}
|
||||||
|
|
||||||
fCompressionType = compType;
|
fCompressionType = compType;
|
||||||
if( compType == kUncompressed )
|
if( compType == kUncompressed || compType == kJPEGCompression ||
|
||||||
{
|
compType == kPNGCompression )
|
||||||
fUncompressedInfo.fType = format;
|
|
||||||
}
|
|
||||||
else if( compType == kJPEGCompression )
|
|
||||||
{
|
{
|
||||||
fUncompressedInfo.fType = format;
|
fUncompressedInfo.fType = format;
|
||||||
}
|
}
|
||||||
@ -269,6 +267,10 @@ UInt32 plMipmap::Read( hsStream *s )
|
|||||||
case kJPEGCompression:
|
case kJPEGCompression:
|
||||||
IReadJPEGImage( s );
|
IReadJPEGImage( s );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case kPNGCompression:
|
||||||
|
IReadPNGImage( s );
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
hsAssert( false, "Unknown compression type in plMipmap::Read()" );
|
hsAssert( false, "Unknown compression type in plMipmap::Read()" );
|
||||||
@ -309,6 +311,10 @@ UInt32 plMipmap::Write( hsStream *s )
|
|||||||
IWriteJPEGImage( s );
|
IWriteJPEGImage( s );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case kPNGCompression:
|
||||||
|
IWritePNGImage( s );
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
hsAssert( false, "Unknown compression type in plMipmap::Read()" );
|
hsAssert( false, "Unknown compression type in plMipmap::Read()" );
|
||||||
return totalWritten;
|
return totalWritten;
|
||||||
@ -576,6 +582,23 @@ void plMipmap::IWriteJPEGImage( hsStream *stream )
|
|||||||
delete alpha;
|
delete alpha;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void plMipmap::IReadPNGImage(hsStream* stream)
|
||||||
|
{
|
||||||
|
plMipmap* temp = nullptr;
|
||||||
|
|
||||||
|
temp = plPNG::Instance().ReadFromStream(stream);
|
||||||
|
|
||||||
|
if (temp) {
|
||||||
|
CopyFrom(temp);
|
||||||
|
delete temp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void plMipmap::IWritePNGImage(hsStream* stream)
|
||||||
|
{
|
||||||
|
plPNG::Instance().WriteToStream(stream, this);
|
||||||
|
}
|
||||||
|
|
||||||
//// GetLevelSize /////////////////////////////////////////////////////////////
|
//// GetLevelSize /////////////////////////////////////////////////////////////
|
||||||
// Get the size of a single mipmap level (0 is the largest)
|
// Get the size of a single mipmap level (0 is the largest)
|
||||||
|
|
||||||
@ -613,6 +636,7 @@ void plMipmap::IBuildLevelSizes()
|
|||||||
|
|
||||||
case kUncompressed:
|
case kUncompressed:
|
||||||
case kJPEGCompression:
|
case kJPEGCompression:
|
||||||
|
case kPNGCompression:
|
||||||
fLevelSizes[ level ] = height * rowBytes;
|
fLevelSizes[ level ] = height * rowBytes;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -1586,6 +1610,7 @@ void plMipmap::CopyFrom( const plMipmap *source )
|
|||||||
break;
|
break;
|
||||||
case kUncompressed:
|
case kUncompressed:
|
||||||
case kJPEGCompression:
|
case kJPEGCompression:
|
||||||
|
case kPNGCompression:
|
||||||
fUncompressedInfo.fType = source->fUncompressedInfo.fType;
|
fUncompressedInfo.fType = source->fUncompressedInfo.fType;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -310,6 +310,8 @@ class plMipmap : public plBitmap
|
|||||||
void IWriteRLEImage( hsStream *stream, plMipmap *mipmap );
|
void IWriteRLEImage( hsStream *stream, plMipmap *mipmap );
|
||||||
void IReadJPEGImage( hsStream *stream );
|
void IReadJPEGImage( hsStream *stream );
|
||||||
void IWriteJPEGImage( hsStream *stream );
|
void IWriteJPEGImage( hsStream *stream );
|
||||||
|
void IReadPNGImage( hsStream *stream );
|
||||||
|
void IWritePNGImage( hsStream *stream );
|
||||||
void IBuildLevelSizes();
|
void IBuildLevelSizes();
|
||||||
|
|
||||||
void IColorLevel( UInt8 level, const UInt8 *colorMask );
|
void IColorLevel( UInt8 level, const UInt8 *colorMask );
|
||||||
|
Reference in New Issue
Block a user