@@ -3,6 +3,7 @@
|
||||
|
||||
|
||||
#include <graphics/PixelFormat.h>
|
||||
#include <system/Endian.h>
|
||||
#include <stdint.h>
|
||||
#include <math.h>
|
||||
|
||||
@@ -110,23 +111,32 @@ namespace lime {
|
||||
}
|
||||
|
||||
|
||||
inline void ReadUInt8 (const unsigned char* data, int offset, PixelFormat format, bool premultiplied) {
|
||||
inline void ReadUInt8 (const unsigned char* data, int offset, PixelFormat format, bool premultiplied, Endian endian) {
|
||||
|
||||
switch (format) {
|
||||
|
||||
case BGRA32:
|
||||
|
||||
Set (data[offset + 2], data[offset + 1], data[offset], data[offset + 3]);
|
||||
if (endian == LITTLE_ENDIAN)
|
||||
Set (data[offset + 1], data[offset + 2], data[offset + 3], data[offset]);
|
||||
else
|
||||
Set (data[offset + 2], data[offset + 1], data[offset], data[offset + 3]);
|
||||
break;
|
||||
|
||||
case RGBA32:
|
||||
|
||||
Set (data[offset], data[offset + 1], data[offset + 2], data[offset + 3]);
|
||||
if (endian == LITTLE_ENDIAN)
|
||||
Set (data[offset + 3], data[offset + 2], data[offset + 1], data[offset]);
|
||||
else
|
||||
Set (data[offset], data[offset + 1], data[offset + 2], data[offset + 3]);
|
||||
break;
|
||||
|
||||
case ARGB32:
|
||||
|
||||
Set (data[offset + 1], data[offset + 2], data[offset + 3], data[offset]);
|
||||
if (endian == LITTLE_ENDIAN)
|
||||
Set (data[offset + 2], data[offset + 1], data[offset], data[offset + 3]);
|
||||
else
|
||||
Set (data[offset + 1], data[offset + 2], data[offset + 3], data[offset]);
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user