Use uint8_t instead unsigned char for byte buffer [skip appveyor][skip travis]

This commit is contained in:
halx99 2020-09-01 14:57:18 +08:00
parent cf5c4f38c3
commit 8cad7319f6
2 changed files with 103 additions and 103 deletions

View File

@ -166,7 +166,7 @@ namespace
static const char gPVRTexIdentifier[5] = "PVR!";
// v2
enum class PVR2TexturePixelFormat : unsigned char
enum class PVR2TexturePixelFormat : uint8_t
{
RGBA4444 = 0x10,
RGBA5551,
@ -466,7 +466,7 @@ namespace
{
typedef struct
{
const unsigned char * data;
const uint8_t * data;
ssize_t size;
int offset;
}tImageSource;
@ -630,7 +630,7 @@ bool Image::initWithImageFileThreadSafe(const std::string& fullpath)
return ret;
}
bool Image::initWithImageData(const unsigned char* data, ssize_t dataLen, bool ownData)
bool Image::initWithImageData(const uint8_t* data, ssize_t dataLen, bool ownData)
{
bool ret = false;
@ -638,7 +638,7 @@ bool Image::initWithImageData(const unsigned char* data, ssize_t dataLen, bool o
{
CC_BREAK_IF(!data || dataLen == 0);
unsigned char* unpackedData = nullptr;
uint8_t* unpackedData = nullptr;
ssize_t unpackedLen = 0;
//detect and unzip the compress file
@ -648,11 +648,11 @@ bool Image::initWithImageData(const unsigned char* data, ssize_t dataLen, bool o
}
else if (ZipUtils::isGZipBuffer(data, dataLen))
{
unpackedLen = ZipUtils::inflateMemory(const_cast<unsigned char*>(data), dataLen, &unpackedData);
unpackedLen = ZipUtils::inflateMemory(const_cast<uint8_t*>(data), dataLen, &unpackedData);
}
else
{
unpackedData = const_cast<unsigned char*>(data);
unpackedData = const_cast<uint8_t*>(data);
unpackedLen = dataLen;
}
@ -722,7 +722,7 @@ bool Image::initWithImageData(const unsigned char* data, ssize_t dataLen, bool o
return ret;
}
bool Image::initWithRawData(const unsigned char* data, ssize_t /*dataLen*/, int width, int height, int /*bitsPerComponent*/, bool preMulti)
bool Image::initWithRawData(const uint8_t* data, ssize_t /*dataLen*/, int width, int height, int /*bitsPerComponent*/, bool preMulti)
{
bool ret = false;
do
@ -737,7 +737,7 @@ bool Image::initWithRawData(const unsigned char* data, ssize_t /*dataLen*/, int
// only RGBA8888 supported
int bytesPerComponent = 4;
_dataLen = height * width * bytesPerComponent;
_data = static_cast<unsigned char*>(malloc(_dataLen * sizeof(unsigned char)));
_data = static_cast<uint8_t*>(malloc(_dataLen));
CC_BREAK_IF(!_data);
memcpy(_data, data, _dataLen);
@ -747,34 +747,34 @@ bool Image::initWithRawData(const unsigned char* data, ssize_t /*dataLen*/, int
return ret;
}
bool Image::isPng(const unsigned char * data, ssize_t dataLen)
bool Image::isPng(const uint8_t * data, ssize_t dataLen)
{
if (dataLen <= 8)
{
return false;
}
static const unsigned char PNG_SIGNATURE[] = {0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a};
static const uint8_t PNG_SIGNATURE[] = {0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a};
return memcmp(PNG_SIGNATURE, data, sizeof(PNG_SIGNATURE)) == 0;
}
bool Image::isBmp(const unsigned char * data, ssize_t dataLen)
bool Image::isBmp(const uint8_t * data, ssize_t dataLen)
{
return dataLen > 54 && data[0] == 'B' && data[1] == 'M';
}
bool Image::isEtc1(const unsigned char * data, ssize_t /*dataLen*/)
bool Image::isEtc1(const uint8_t * data, ssize_t /*dataLen*/)
{
return !!etc1_pkm_is_valid((etc1_byte*)data);
}
bool Image::isEtc2(const unsigned char* data, ssize_t dataLen)
bool Image::isEtc2(const uint8_t* data, ssize_t dataLen)
{
return !!etc2_pkm_is_valid((etc2_byte*)data);
}
bool Image::isS3TC(const unsigned char * data, ssize_t /*dataLen*/)
bool Image::isS3TC(const uint8_t * data, ssize_t /*dataLen*/)
{
S3TCTexHeader *header = (S3TCTexHeader *)data;
@ -782,14 +782,14 @@ bool Image::isS3TC(const unsigned char * data, ssize_t /*dataLen*/)
return (strncmp(header->fileCode, "DDS", 3) == 0);
}
bool Image::isATITC(const unsigned char *data, ssize_t /*dataLen*/)
bool Image::isATITC(const uint8_t *data, ssize_t /*dataLen*/)
{
ATITCTexHeader *header = (ATITCTexHeader *)data;
return (strncmp(&header->identifier[1], "KTX", 3) == 0);
}
bool Image::isASTC(const unsigned char* data, ssize_t /*dataLen*/)
bool Image::isASTC(const uint8_t* data, ssize_t /*dataLen*/)
{
ASTCTexHeader* hdr = (ASTCTexHeader*)data;
@ -798,19 +798,19 @@ bool Image::isASTC(const unsigned char* data, ssize_t /*dataLen*/)
return (magicval == ASTC_MAGIC_FILE_CONSTANT);
}
bool Image::isJpg(const unsigned char * data, ssize_t dataLen)
bool Image::isJpg(const uint8_t * data, ssize_t dataLen)
{
if (dataLen <= 4)
{
return false;
}
static const unsigned char JPG_SOI[] = {0xFF, 0xD8};
static const uint8_t JPG_SOI[] = {0xFF, 0xD8};
return memcmp(data, JPG_SOI, 2) == 0;
}
bool Image::isWebp(const unsigned char * data, ssize_t dataLen)
bool Image::isWebp(const uint8_t * data, ssize_t dataLen)
{
if (dataLen <= 12)
{
@ -821,10 +821,10 @@ bool Image::isWebp(const unsigned char * data, ssize_t dataLen)
static const char* WEBP_WEBP = "WEBP";
return memcmp(data, WEBP_RIFF, 4) == 0
&& memcmp(static_cast<const unsigned char*>(data) + 8, WEBP_WEBP, 4) == 0;
&& memcmp(static_cast<const uint8_t*>(data) + 8, WEBP_WEBP, 4) == 0;
}
bool Image::isPvr(const unsigned char * data, ssize_t dataLen)
bool Image::isPvr(const uint8_t * data, ssize_t dataLen)
{
if (static_cast<size_t>(dataLen) < sizeof(PVRv2TexHeader) || static_cast<size_t>(dataLen) < sizeof(PVRv3TexHeader))
{
@ -837,7 +837,7 @@ bool Image::isPvr(const unsigned char * data, ssize_t dataLen)
return memcmp(&headerv2->pvrTag, gPVRTexIdentifier, strlen(gPVRTexIdentifier)) == 0 || CC_SWAP_INT32_BIG_TO_HOST(headerv3->version) == 0x50565203;
}
Image::Format Image::detectFormat(const unsigned char * data, ssize_t dataLen)
Image::Format Image::detectFormat(const uint8_t * data, ssize_t dataLen)
{
if (isPng(data, dataLen))
{
@ -959,7 +959,7 @@ namespace
#endif // CC_USE_JPEG
}
bool Image::initWithJpgData(unsigned char * data, ssize_t dataLen)
bool Image::initWithJpgData(uint8_t * data, ssize_t dataLen)
{
#if CC_USE_JPEG
/* these are standard libjpeg structures for reading(decompression) */
@ -993,7 +993,7 @@ bool Image::initWithJpgData(unsigned char * data, ssize_t dataLen)
jpeg_create_decompress( &cinfo );
#ifndef CC_TARGET_QT5
jpeg_mem_src(&cinfo, const_cast<unsigned char*>(data), dataLen);
jpeg_mem_src(&cinfo, const_cast<uint8_t*>(data), dataLen);
#endif /* CC_TARGET_QT5 */
/* reading the image header which contains image information */
@ -1022,7 +1022,7 @@ bool Image::initWithJpgData(unsigned char * data, ssize_t dataLen)
_height = cinfo.output_height;
_dataLen = cinfo.output_width*cinfo.output_height*cinfo.output_components;
_data = static_cast<unsigned char*>(malloc(_dataLen * sizeof(unsigned char)));
_data = static_cast<uint8_t*>(malloc(_dataLen));
CC_BREAK_IF(! _data);
/* now actually read the jpeg into the raw buffer */
@ -1052,7 +1052,7 @@ bool Image::initWithJpgData(unsigned char * data, ssize_t dataLen)
#endif // CC_USE_JPEG
}
bool Image::initWithPngData(unsigned char * data, ssize_t dataLen)
bool Image::initWithPngData(uint8_t * data, ssize_t dataLen)
{
#if CC_USE_PNG
// length of bytes to check if it is a valid png file
@ -1083,7 +1083,7 @@ bool Image::initWithPngData(unsigned char * data, ssize_t dataLen)
// set the read call back function
tImageSource imageSource;
imageSource.data = (unsigned char*)data;
imageSource.data = (uint8_t*)data;
imageSource.size = dataLen;
imageSource.offset = 0;
png_set_read_fn(png_ptr, &imageSource, pngReadCallback);
@ -1157,7 +1157,7 @@ bool Image::initWithPngData(unsigned char * data, ssize_t dataLen)
rowbytes = png_get_rowbytes(png_ptr, info_ptr);
_dataLen = rowbytes * _height;
_data = static_cast<unsigned char*>(malloc(_dataLen * sizeof(unsigned char)));
_data = static_cast<uint8_t*>(malloc(_dataLen));
if (!_data)
{
if (row_pointers != nullptr)
@ -1209,7 +1209,7 @@ bool Image::initWithPngData(unsigned char * data, ssize_t dataLen)
#endif //CC_USE_PNG
}
bool Image::initWithBmpData(unsigned char* data, ssize_t dataLen)
bool Image::initWithBmpData(uint8_t* data, ssize_t dataLen)
{
const int nrChannels = 4;
_data = stbi_load_from_memory(data, dataLen, &_width, &_height, nullptr, nrChannels);
@ -1222,7 +1222,7 @@ bool Image::initWithBmpData(unsigned char* data, ssize_t dataLen)
return false;
}
bool Image::initWithWebpData(unsigned char* data, ssize_t dataLen)
bool Image::initWithWebpData(uint8_t* data, ssize_t dataLen)
{
#if CC_USE_WEBP
bool ret = false;
@ -1243,7 +1243,7 @@ bool Image::initWithWebpData(unsigned char* data, ssize_t dataLen)
_hasPremultipliedAlpha = (config.input.has_alpha != 0);
_dataLen = _width * _height * (config.input.has_alpha ? 4 : 3);
_data = static_cast<unsigned char*>(malloc(_dataLen * sizeof(unsigned char)));
_data = static_cast<uint8_t*>(malloc(_dataLen));
config.output.u.RGBA.rgba = static_cast<uint8_t*>(_data);
config.output.u.RGBA.stride = _width * (config.input.has_alpha ? 4 : 3);
@ -1341,7 +1341,7 @@ bool Image::initWithTGAData(tImageTGA* tgaData)
return ret;
}
bool Image::initWithPVRv2Data(unsigned char * data, ssize_t dataLen, bool ownData)
bool Image::initWithPVRv2Data(uint8_t * data, ssize_t dataLen, bool ownData)
{
int blockSize = 0, widthBlocks = 0, heightBlocks = 0;
int width = 0, height = 0;
@ -1409,7 +1409,7 @@ bool Image::initWithPVRv2Data(unsigned char * data, ssize_t dataLen, bool ownDat
//Move by size of header
const int pixelOffset = sizeof(PVRv2TexHeader);
unsigned char* pixelData = data + pixelOffset;
uint8_t* pixelData = data + pixelOffset;
int dataOffset = 0, dataSize = 0;
//Get ptr to where data starts..
@ -1425,7 +1425,7 @@ bool Image::initWithPVRv2Data(unsigned char * data, ssize_t dataLen, bool ownDat
CCLOG("cocos2d: Hardware PVR decoder not present. Using software decoder");
_unpack = true;
_mipmaps[_numberOfMipmaps].len = width*height*4;
_mipmaps[_numberOfMipmaps].address = (unsigned char*)malloc(width*height*4);
_mipmaps[_numberOfMipmaps].address = (uint8_t*)malloc(width*height*4);
PVRTDecompressPVRTC(pixelData + dataOffset,width,height,_mipmaps[_numberOfMipmaps].address, true);
bpp = 2;
}
@ -1439,7 +1439,7 @@ bool Image::initWithPVRv2Data(unsigned char * data, ssize_t dataLen, bool ownDat
CCLOG("cocos2d: Hardware PVR decoder not present. Using software decoder");
_unpack = true;
_mipmaps[_numberOfMipmaps].len = width*height*4;
_mipmaps[_numberOfMipmaps].address = (unsigned char*)malloc(width*height*4);
_mipmaps[_numberOfMipmaps].address = (uint8_t*)malloc(width*height*4);
PVRTDecompressPVRTC(pixelData + dataOffset,width,height,_mipmaps[_numberOfMipmaps].address, false);
bpp = 4;
}
@ -1500,7 +1500,7 @@ bool Image::initWithPVRv2Data(unsigned char * data, ssize_t dataLen, bool ownDat
return true;
}
bool Image::initWithPVRv3Data(unsigned char * data, ssize_t dataLen, bool ownData)
bool Image::initWithPVRv3Data(uint8_t * data, ssize_t dataLen, bool ownData)
{
if (static_cast<size_t>(dataLen) < sizeof(PVRv3TexHeader))
{
@ -1562,7 +1562,7 @@ bool Image::initWithPVRv3Data(unsigned char * data, ssize_t dataLen, bool ownDat
_height = height;
const int pixelOffset = (sizeof(PVRv3TexHeader) + header->metadataLength);
unsigned char* pixelData = data + pixelOffset;
uint8_t* pixelData = data + pixelOffset;
int pixelLen = dataLen - pixelOffset;
int dataOffset = 0, dataSize = 0;
@ -1582,7 +1582,7 @@ bool Image::initWithPVRv3Data(unsigned char * data, ssize_t dataLen, bool ownDat
CCLOG("cocos2d: Hardware PVR decoder not present. Using software decoder");
_unpack = true;
_mipmaps[i].len = width*height*4;
_mipmaps[i].address = (unsigned char*)malloc(width*height*4);
_mipmaps[i].address = (uint8_t*)malloc(width*height*4);
PVRTDecompressPVRTC(pixelData + dataOffset,width,height,_mipmaps[i].address, true);
bpp = 2;
}
@ -1597,7 +1597,7 @@ bool Image::initWithPVRv3Data(unsigned char * data, ssize_t dataLen, bool ownDat
CCLOG("cocos2d: Hardware PVR decoder not present. Using software decoder");
_unpack = true;
_mipmaps[i].len = width*height*4;
_mipmaps[i].address = (unsigned char*)malloc(width*height*4);
_mipmaps[i].address = (uint8_t*)malloc(width*height*4);
PVRTDecompressPVRTC(pixelData + dataOffset,width,height,_mipmaps[i].address, false);
bpp = 4;
}
@ -1612,7 +1612,7 @@ bool Image::initWithPVRv3Data(unsigned char * data, ssize_t dataLen, bool ownDat
const int bytePerPixel = 4;
_unpack = true;
_mipmaps[i].len = width*height*bytePerPixel;
_mipmaps[i].address = (unsigned char*)malloc(width*height*bytePerPixel);
_mipmaps[i].address = (uint8_t*)malloc(width*height*bytePerPixel);
if (etc2_decode_image(ETC2_RGB_NO_MIPMAPS, pixelData + dataOffset, static_cast<etc1_byte*>(_mipmaps[i].address), width, height) != 0)
{
return false;
@ -1674,7 +1674,7 @@ bool Image::initWithPVRv3Data(unsigned char * data, ssize_t dataLen, bool ownDat
return true;
}
bool Image::initWithETCData(unsigned char* data, ssize_t dataLen, bool ownData)
bool Image::initWithETCData(uint8_t* data, ssize_t dataLen, bool ownData)
{
const etc1_byte* header = static_cast<const etc1_byte*>(data);
@ -1713,8 +1713,8 @@ bool Image::initWithETCData(unsigned char* data, ssize_t dataLen, bool ownData)
CCLOG("cocos2d: Hardware ETC1 decoder not present. Using software decoder");
_dataLen = _width * _height * 4;
_data = static_cast<unsigned char*>(malloc(_dataLen));
if (etc2_decode_image(ETC2_RGB_NO_MIPMAPS, static_cast<const unsigned char*>(data) + ETC2_PKM_HEADER_SIZE, static_cast<etc2_byte*>(_data), _width, _height) == 0)
_data = static_cast<uint8_t*>(malloc(_dataLen));
if (etc2_decode_image(ETC2_RGB_NO_MIPMAPS, static_cast<const uint8_t*>(data) + ETC2_PKM_HEADER_SIZE, static_cast<etc2_byte*>(_data), _width, _height) == 0)
{ // if it is not gles or device do not support ETC1, decode texture by software
// directly decode ETC1_RGB to RGBA8888
_pixelFormat = backend::PixelFormat::RGBA8888;
@ -1728,7 +1728,7 @@ bool Image::initWithETCData(unsigned char* data, ssize_t dataLen, bool ownData)
}
}
bool Image::initWithETC2Data(unsigned char* data, ssize_t dataLen, bool ownData)
bool Image::initWithETC2Data(uint8_t* data, ssize_t dataLen, bool ownData)
{
const etc2_byte* header = static_cast<const etc2_byte*>(data);
@ -1763,8 +1763,8 @@ bool Image::initWithETC2Data(unsigned char* data, ssize_t dataLen, bool ownData)
// if device do not support ETC2, decode texture by software
// etc2_decode_image always decode to RGBA8888
_dataLen = _width * _height * 4;
_data = static_cast<unsigned char*>(malloc(_dataLen));
if (etc2_decode_image(format, static_cast<const unsigned char*>(data) + ETC2_PKM_HEADER_SIZE, static_cast<etc2_byte*>(_data), _width, _height) == 0)
_data = static_cast<uint8_t*>(malloc(_dataLen));
if (etc2_decode_image(format, static_cast<const uint8_t*>(data) + ETC2_PKM_HEADER_SIZE, static_cast<etc2_byte*>(_data), _width, _height) == 0)
{
_pixelFormat = backend::PixelFormat::RGBA8888;
return true;
@ -1777,7 +1777,7 @@ bool Image::initWithETC2Data(unsigned char* data, ssize_t dataLen, bool ownData)
}
}
bool Image::initWithASTCData(unsigned char* data, ssize_t dataLen, bool ownData)
bool Image::initWithASTCData(uint8_t* data, ssize_t dataLen, bool ownData)
{
ASTCTexHeader* header = (ASTCTexHeader*)data;
@ -1814,8 +1814,8 @@ bool Image::initWithASTCData(unsigned char* data, ssize_t dataLen, bool ownData)
CCLOG("cocos2d: Hardware ASTC decoder not present. Using software decoder");
_dataLen = _width * _height * 4;
_data = static_cast<unsigned char*>(malloc(_dataLen));
if (decompress_astc(static_cast<const unsigned char*>(data) + ASTC_HEAD_SIZE, _data, _width, _height, xdim, ydim, _dataLen) == 0) {
_data = static_cast<uint8_t*>(malloc(_dataLen));
if (decompress_astc(static_cast<const uint8_t*>(data) + ASTC_HEAD_SIZE, _data, _width, _height, xdim, ydim, _dataLen) == 0) {
_pixelFormat = backend::PixelFormat::RGBA8888;
return true;
}
@ -1826,7 +1826,7 @@ bool Image::initWithASTCData(unsigned char* data, ssize_t dataLen, bool ownData)
}
}
bool Image::initWithS3TCData(unsigned char * data, ssize_t dataLen, bool ownData)
bool Image::initWithS3TCData(uint8_t * data, ssize_t dataLen, bool ownData)
{
const uint32_t FOURCC_DXT1 = makeFourCC('D', 'X', 'T', '1');
const uint32_t FOURCC_DXT3 = makeFourCC('D', 'X', 'T', '3');
@ -1847,7 +1847,7 @@ bool Image::initWithS3TCData(unsigned char * data, ssize_t dataLen, bool ownData
int height = _height;
const int pixelOffset = sizeof(S3TCTexHeader);
unsigned char* pixelData = data + pixelOffset;
uint8_t* pixelData = data + pixelOffset;
bool hardware = Configuration::getInstance()->supportsS3TC();
/* if hardware supports s3tc, set pixelformat before loading mipmaps, to support non-mipmapped textures */
@ -1880,7 +1880,7 @@ bool Image::initWithS3TCData(unsigned char * data, ssize_t dataLen, bool ownData
width >>= 1;
height >>= 1;
}
_data = static_cast<unsigned char*>(malloc(_dataLen * sizeof(unsigned char)));
_data = static_cast<uint8_t*>(malloc(_dataLen));
}
/* load the mipmaps */
@ -1897,7 +1897,7 @@ bool Image::initWithS3TCData(unsigned char * data, ssize_t dataLen, bool ownData
if (Configuration::getInstance()->supportsS3TC())
{ //decode texture through hardware
_mipmaps[i].address = (unsigned char *)pixelData + encodeOffset;
_mipmaps[i].address = (uint8_t *)pixelData + encodeOffset;
_mipmaps[i].len = size;
}
else
@ -1908,7 +1908,7 @@ bool Image::initWithS3TCData(unsigned char * data, ssize_t dataLen, bool ownData
int bytePerPixel = 4;
unsigned int stride = width * bytePerPixel;
std::vector<unsigned char> decodeImageData(stride * height);
std::vector<uint8_t> decodeImageData(stride * height);
if (FOURCC_DXT1 == header->ddsd.DUMMYUNIONNAMEN4.ddpfPixelFormat.fourCC)
{
s3tc_decode(pixelData + encodeOffset, &decodeImageData[0], width, height, S3TCDecodeFlag::DXT1);
@ -1922,7 +1922,7 @@ bool Image::initWithS3TCData(unsigned char * data, ssize_t dataLen, bool ownData
s3tc_decode(pixelData + encodeOffset, &decodeImageData[0], width, height, S3TCDecodeFlag::DXT5);
}
_mipmaps[i].address = (unsigned char *)_data + decodeOffset;
_mipmaps[i].address = (uint8_t *)_data + decodeOffset;
_mipmaps[i].len = (stride * height);
memcpy((void *)_mipmaps[i].address, (void *)&decodeImageData[0], _mipmaps[i].len);
decodeOffset += stride * height;
@ -1943,7 +1943,7 @@ bool Image::initWithS3TCData(unsigned char * data, ssize_t dataLen, bool ownData
}
bool Image::initWithATITCData(unsigned char *data, ssize_t dataLen, bool ownData)
bool Image::initWithATITCData(uint8_t *data, ssize_t dataLen, bool ownData)
{
/* load the .ktx file */
ATITCTexHeader *header = (ATITCTexHeader *)data;
@ -1969,7 +1969,7 @@ bool Image::initWithATITCData(unsigned char *data, ssize_t dataLen, bool ownData
/* pixelData point to the compressed data address */
int pixelOffset = sizeof(ATITCTexHeader) + header->bytesOfKeyValueData + 4;
unsigned char *pixelData = (unsigned char *)data + pixelOffset;
uint8_t *pixelData = (uint8_t *)data + pixelOffset;
/* calculate the dataLen */
int width = _width;
@ -2012,7 +2012,7 @@ bool Image::initWithATITCData(unsigned char *data, ssize_t dataLen, bool ownData
width >>= 1;
height >>= 1;
}
_data = static_cast<unsigned char*>(malloc(_dataLen * sizeof(unsigned char)));
_data = static_cast<uint8_t*>(malloc(_dataLen));
}
/* load the mipmaps */
@ -2030,7 +2030,7 @@ bool Image::initWithATITCData(unsigned char *data, ssize_t dataLen, bool ownData
if (hardware)
{
/* decode texture through hardware */
_mipmaps[i].address = (unsigned char *)pixelData + encodeOffset;
_mipmaps[i].address = (uint8_t *)pixelData + encodeOffset;
_mipmaps[i].len = size;
}
else
@ -2038,7 +2038,7 @@ bool Image::initWithATITCData(unsigned char *data, ssize_t dataLen, bool ownData
int bytePerPixel = 4;
unsigned int stride = width * bytePerPixel;
std::vector<unsigned char> decodeImageData(stride * height);
std::vector<uint8_t> decodeImageData(stride * height);
switch (header->glInternalFormat)
{
case CC_GL_ATC_RGB_AMD:
@ -2054,7 +2054,7 @@ bool Image::initWithATITCData(unsigned char *data, ssize_t dataLen, bool ownData
break;
}
_mipmaps[i].address = (unsigned char *)_data + decodeOffset;
_mipmaps[i].address = (uint8_t *)_data + decodeOffset;
_mipmaps[i].len = (stride * height);
memcpy((void *)_mipmaps[i].address, (void *)&decodeImageData[0], _mipmaps[i].len);
decodeOffset += stride * height;
@ -2073,12 +2073,12 @@ bool Image::initWithATITCData(unsigned char *data, ssize_t dataLen, bool ownData
return true;
}
bool Image::initWithPVRData(unsigned char * data, ssize_t dataLen, bool ownData)
bool Image::initWithPVRData(uint8_t * data, ssize_t dataLen, bool ownData)
{
return initWithPVRv2Data(data, dataLen, ownData) || initWithPVRv3Data(data, dataLen, ownData);
}
void Image::forwardPixels(unsigned char* data, ssize_t dataLen, int offset, bool ownData)
void Image::forwardPixels(uint8_t* data, ssize_t dataLen, int offset, bool ownData)
{
if(ownData) {
_data = data;
@ -2087,7 +2087,7 @@ void Image::forwardPixels(unsigned char* data, ssize_t dataLen, int offset, bool
}
else {
_dataLen = dataLen - offset;
_data = (unsigned char*)malloc(_dataLen);
_data = (uint8_t*)malloc(_dataLen);
memcpy(_data, data + offset, _dataLen);
}
}
@ -2196,7 +2196,7 @@ bool Image::saveImageToPNG(const std::string& filePath, bool isToRGB)
{
if (isToRGB)
{
unsigned char *tempData = static_cast<unsigned char*>(malloc(_width * _height * 3 * sizeof(unsigned char)));
uint8_t *tempData = static_cast<uint8_t*>(malloc(_width * _height * 3));
if (nullptr == tempData)
{
fclose(fp);
@ -2295,7 +2295,7 @@ bool Image::saveImageToJPG(const std::string& filePath)
if (hasAlpha())
{
unsigned char *tempData = static_cast<unsigned char*>(malloc(_width * _height * 3 * sizeof(unsigned char)));
uint8_t *tempData = static_cast<uint8_t*>(malloc(_width * _height * 3));
if (nullptr == tempData)
{
jpeg_finish_compress(&cinfo);
@ -2358,7 +2358,7 @@ void Image::premultiplyAlpha()
unsigned int* fourBytes = (unsigned int*)_data;
for(int i = 0; i < _width * _height; i++)
{
unsigned char* p = _data + i * 4;
uint8_t* p = _data + i * 4;
fourBytes[i] = CC_RGB_PREMULTIPLY_ALPHA(p[0], p[1], p[2], p[3]);
}
@ -2366,8 +2366,8 @@ void Image::premultiplyAlpha()
#endif
}
static inline unsigned char clamp(int x) {
return (unsigned char)(x >= 0 ? (x < 255 ? x : 255) : 0);
static inline uint8_t clamp(int x) {
return (uint8_t)(x >= 0 ? (x < 255 ? x : 255) : 0);
}
void Image::reversePremultipliedAlpha()
@ -2377,7 +2377,7 @@ void Image::reversePremultipliedAlpha()
unsigned int* fourBytes = (unsigned int*)_data;
for (int i = 0; i < _width * _height; i++)
{
unsigned char* p = _data + i * 4;
uint8_t* p = _data + i * 4;
if (p[3] > 0)
{
fourBytes[i] = clamp(int(std::ceil((p[0] * 255.0f) / p[3]))) |

View File

@ -36,10 +36,10 @@ THE SOFTWARE.
// premultiply alpha, or the effect will be wrong when using other pixel formats in Texture2D,
// such as RGB888, RGB5A1
#define CC_RGB_PREMULTIPLY_ALPHA(vr, vg, vb, va) \
(unsigned)(((unsigned)((unsigned char)(vr) * ((unsigned char)(va) + 1)) >> 8) | \
((unsigned)((unsigned char)(vg) * ((unsigned char)(va) + 1) >> 8) << 8) | \
((unsigned)((unsigned char)(vb) * ((unsigned char)(va) + 1) >> 8) << 16) | \
((unsigned)(unsigned char)(va) << 24))
(unsigned)(((unsigned)((uint8_t)(vr) * ((uint8_t)(va) + 1)) >> 8) | \
((unsigned)((uint8_t)(vg) * ((uint8_t)(va) + 1) >> 8) << 8) | \
((unsigned)((uint8_t)(vb) * ((uint8_t)(va) + 1) >> 8) << 16) | \
((unsigned)(uint8_t)(va) << 24))
NS_CC_BEGIN
@ -53,7 +53,7 @@ NS_CC_BEGIN
*/
typedef struct _MipmapInfo
{
unsigned char* address;
uint8_t* address;
int len;
_MipmapInfo():address(NULL),len(0){}
}MipmapInfo;
@ -134,13 +134,13 @@ public:
* @js NA
* @lua NA
*/
bool initWithImageData(const unsigned char * data, ssize_t dataLen, bool ownData = false);
bool initWithImageData(const uint8_t* data, ssize_t dataLen, bool ownData = false);
// @warning kFmtRawData only support RGBA8888
bool initWithRawData(const unsigned char * data, ssize_t dataLen, int width, int height, int bitsPerComponent, bool preMulti = false);
bool initWithRawData(const uint8_t* data, ssize_t dataLen, int width, int height, int bitsPerComponent, bool preMulti = false);
// Getters
unsigned char * getData() { return _data + _offset; }
uint8_t * getData() { return _data + _offset; }
ssize_t getDataLen() { return _dataLen - _offset; }
Format getFileType() { return _fileType; }
backend::PixelFormat getPixelFormat() { return _pixelFormat; }
@ -168,25 +168,25 @@ public:
protected:
typedef struct sImageTGA tImageTGA;
bool initWithJpgData(unsigned char * data, ssize_t dataLen);
bool initWithPngData(unsigned char * data, ssize_t dataLen);
bool initWithBmpData(unsigned char *data, ssize_t dataLen);
bool initWithWebpData(unsigned char * data, ssize_t dataLen);
bool initWithJpgData(uint8_t* data, ssize_t dataLen);
bool initWithPngData(uint8_t* data, ssize_t dataLen);
bool initWithBmpData(uint8_t* data, ssize_t dataLen);
bool initWithWebpData(uint8_t* data, ssize_t dataLen);
bool initWithTGAData(tImageTGA* tgaData);
// All internal init function have chance to own the data for fast forward data to hardware decoder
// see: initWithImageData
bool initWithPVRData(unsigned char * data, ssize_t dataLen, bool ownData);
bool initWithPVRv2Data(unsigned char * data, ssize_t dataLen, bool ownData);
bool initWithPVRv3Data(unsigned char * data, ssize_t dataLen, bool ownData);
bool initWithETCData(unsigned char* data, ssize_t dataLen, bool ownData);
bool initWithETC2Data(unsigned char* data, ssize_t dataLen, bool ownData);
bool initWithASTCData(unsigned char* data, ssize_t dataLen, bool ownData);
bool initWithS3TCData(unsigned char * data, ssize_t dataLen, bool ownData);
bool initWithATITCData(unsigned char *data, ssize_t dataLen, bool ownData);
bool initWithPVRData(uint8_t* data, ssize_t dataLen, bool ownData);
bool initWithPVRv2Data(uint8_t* data, ssize_t dataLen, bool ownData);
bool initWithPVRv3Data(uint8_t* data, ssize_t dataLen, bool ownData);
bool initWithETCData(uint8_t* data, ssize_t dataLen, bool ownData);
bool initWithETC2Data(uint8_t* data, ssize_t dataLen, bool ownData);
bool initWithASTCData(uint8_t* data, ssize_t dataLen, bool ownData);
bool initWithS3TCData(uint8_t* data, ssize_t dataLen, bool ownData);
bool initWithATITCData(uint8_t* data, ssize_t dataLen, bool ownData);
// fast forward pixels to GPU if ownData
void forwardPixels(unsigned char* data, ssize_t dataLen, int offset, bool ownData);
void forwardPixels(uint8_t* data, ssize_t dataLen, int offset, bool ownData);
bool saveImageToPNG(const std::string& filePath, bool isToRGB = true);
bool saveImageToJPG(const std::string& filePath);
@ -201,7 +201,7 @@ protected:
@brief Determine whether we premultiply alpha for png files.
*/
static bool PNG_PREMULTIPLIED_ALPHA_ENABLED;
unsigned char *_data;
uint8_t *_data;
ssize_t _dataLen;
ssize_t _offset; // useful for hardware decoder present to hold data without copy
int _width;
@ -230,17 +230,17 @@ protected:
*/
bool initWithImageFileThreadSafe(const std::string& fullpath);
Format detectFormat(const unsigned char * data, ssize_t dataLen);
bool isPng(const unsigned char * data, ssize_t dataLen);
bool isJpg(const unsigned char * data, ssize_t dataLen);
bool isBmp(const unsigned char * data, ssize_t dataLen);
bool isWebp(const unsigned char * data, ssize_t dataLen);
bool isPvr(const unsigned char * data, ssize_t dataLen);
bool isEtc1(const unsigned char * data, ssize_t dataLen);
bool isEtc2(const unsigned char* data, ssize_t dataLen);
bool isS3TC(const unsigned char * data,ssize_t dataLen);
bool isATITC(const unsigned char *data, ssize_t dataLen);
bool isASTC(const unsigned char* data, ssize_t dataLen);
Format detectFormat(const uint8_t* data, ssize_t dataLen);
bool isPng(const uint8_t* data, ssize_t dataLen);
bool isJpg(const uint8_t* data, ssize_t dataLen);
bool isBmp(const uint8_t* data, ssize_t dataLen);
bool isWebp(const uint8_t* data, ssize_t dataLen);
bool isPvr(const uint8_t* data, ssize_t dataLen);
bool isEtc1(const uint8_t* data, ssize_t dataLen);
bool isEtc2(const uint8_t* data, ssize_t dataLen);
bool isS3TC(const uint8_t* data, ssize_t dataLen);
bool isATITC(const uint8_t* data, ssize_t dataLen);
bool isASTC(const uint8_t* data, ssize_t dataLen);
};
// end of platform group