Browse Source

Merge H-uru GIT PR356:

Adam Johnson committed 48ad646 on 15 Jan 17
Manually merge #356 Merge remote-tracking branch 'deledrius/plMipmap_png'
pending
rarified 5 years ago
parent
commit
3a62c231d2
  1. 6
      MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGImage/plBitmap.cpp
  2. 3
      MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGImage/plBitmap.h
  3. 35
      MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGImage/plMipmap.cpp
  4. 2
      MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGImage/plMipmap.h

6
MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGImage/plBitmap.cpp

@ -113,7 +113,8 @@ UInt32 plBitmap::Read( hsStream *s )
fFlags = s->ReadSwap16();
fCompressionType = s->ReadByte();
if(( fCompressionType == kUncompressed )||( fCompressionType == kJPEGCompression ))
if( fCompressionType == kUncompressed || fCompressionType == kJPEGCompression ||
fCompressionType == kPNGCompression )
{
fUncompressedInfo.fType = s->ReadByte();
read++;
@ -145,7 +146,8 @@ UInt32 plBitmap::Write( hsStream *s )
s->WriteSwap16( fFlags );
s->WriteByte( fCompressionType );
if(( fCompressionType == kUncompressed )||(fCompressionType == kJPEGCompression ))
if( fCompressionType == kUncompressed || fCompressionType == kJPEGCompression ||
fCompressionType == kPNGCompression )
{
s->WriteByte( fUncompressedInfo.fType );
written++;

3
MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGImage/plBitmap.h

@ -104,7 +104,8 @@ class plBitmap : public hsKeyedObject
{
kUncompressed = 0x0,
kDirectXCompression = 0x1,
kJPEGCompression = 0x2
kJPEGCompression = 0x2,
kPNGCompression = 0x3
};
struct DirectXInfo

35
MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGImage/plMipmap.cpp

@ -60,6 +60,7 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
#include "../plPipeline/hsGDeviceRef.h"
#include "plProfile.h"
#include "../plJPEG/plJPEG.h"
#include "plPNG.h"
plProfile_CreateMemCounter("Mipmaps", "Memory", MemMipmaps);
@ -122,11 +123,8 @@ void plMipmap::Create( UInt32 width, UInt32 height, unsigned config, UInt8 numLe
}
fCompressionType = compType;
if( compType == kUncompressed )
{
fUncompressedInfo.fType = format;
}
else if( compType == kJPEGCompression )
if( compType == kUncompressed || compType == kJPEGCompression ||
compType == kPNGCompression )
{
fUncompressedInfo.fType = format;
}
@ -269,6 +267,10 @@ UInt32 plMipmap::Read( hsStream *s )
case kJPEGCompression:
IReadJPEGImage( s );
break;
case kPNGCompression:
IReadPNGImage( s );
break;
default:
hsAssert( false, "Unknown compression type in plMipmap::Read()" );
@ -309,6 +311,10 @@ UInt32 plMipmap::Write( hsStream *s )
IWriteJPEGImage( s );
break;
case kPNGCompression:
IWritePNGImage( s );
break;
default:
hsAssert( false, "Unknown compression type in plMipmap::Read()" );
return totalWritten;
@ -576,6 +582,23 @@ void plMipmap::IWriteJPEGImage( hsStream *stream )
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 /////////////////////////////////////////////////////////////
// Get the size of a single mipmap level (0 is the largest)
@ -613,6 +636,7 @@ void plMipmap::IBuildLevelSizes()
case kUncompressed:
case kJPEGCompression:
case kPNGCompression:
fLevelSizes[ level ] = height * rowBytes;
break;
@ -1586,6 +1610,7 @@ void plMipmap::CopyFrom( const plMipmap *source )
break;
case kUncompressed:
case kJPEGCompression:
case kPNGCompression:
fUncompressedInfo.fType = source->fUncompressedInfo.fType;
break;
default:

2
MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGImage/plMipmap.h

@ -310,6 +310,8 @@ class plMipmap : public plBitmap
void IWriteRLEImage( hsStream *stream, plMipmap *mipmap );
void IReadJPEGImage( hsStream *stream );
void IWriteJPEGImage( hsStream *stream );
void IReadPNGImage( hsStream *stream );
void IWritePNGImage( hsStream *stream );
void IBuildLevelSizes();
void IColorLevel( UInt8 level, const UInt8 *colorMask );

Loading…
Cancel
Save