nvidia-texture-tools/src/nvimage/KtxFile.cpp

88 lines
2.1 KiB
C++
Raw Normal View History

2011-03-22 22:52:43 +00:00
// This code is in the public domain -- Ignacio Casta<74>o <castano@gmail.com>
#include "KtxFile.h"
2018-02-06 02:55:07 +00:00
#include "nvcore/StdStream.h"
2011-03-22 22:52:43 +00:00
using namespace nv;
static const uint8 fileIdentifier[12] = {
0xAB, 0x4B, 0x54, 0x58,
0x20, 0x31, 0x31, 0xBB,
0x0D, 0x0A, 0x1A, 0x0A
};
2018-02-06 02:55:07 +00:00
namespace nv
{
2011-03-22 22:52:43 +00:00
KtxHeader::KtxHeader() {
memcpy(identifier, fileIdentifier, 12);
endianness = 0x04030201;
glType = 0;
glTypeSize = 1;
glFormat = 0;
2018-02-06 02:55:07 +00:00
glInternalFormat = KTX_INTERNAL_COMPRESSED_SRGB_S3TC_DXT1;
glBaseInternalFormat = KTX_BASE_INTERNAL_RGB;
2011-03-22 22:52:43 +00:00
pixelWidth = 0;
pixelHeight = 0;
pixelDepth = 0;
numberOfArrayElements = 0;
numberOfFaces = 1;
numberOfMipmapLevels = 0;
bytesOfKeyValueData = 0;
}
2018-02-06 02:55:07 +00:00
Stream & operator<< (Stream & s, KtxHeader & header) {
2011-03-22 22:52:43 +00:00
s.serialize(header.identifier, 12);
2018-02-06 02:55:07 +00:00
s << header.endianness << header.glType << header.glTypeSize << header.glFormat << header.glInternalFormat << header.glBaseInternalFormat;
2011-03-22 22:52:43 +00:00
s << header.pixelWidth << header.pixelHeight << header.pixelDepth;
s << header.numberOfArrayElements << header.numberOfFaces << header.numberOfMipmapLevels;
s << header.bytesOfKeyValueData;
return s;
}
2018-02-06 02:55:07 +00:00
/*KtxFile::KtxFile() {
2011-03-22 22:52:43 +00:00
}
KtxFile::~KtxFile() {
}
void KtxFile::addKeyValue(const char * key, const char * value) {
keyArray.append(key);
valueArray.append(value);
2018-02-06 02:55:07 +00:00
header.bytesOfKeyValueData += strlen(key) + 1 + strlen(value) + 1;
2011-03-22 22:52:43 +00:00
}
Stream & operator<< (Stream & s, KtxFile & file) {
s << header;
if (s.isSaving()) {
int keyValueCount = keyArray.count();
for (int i = 0; i < keyValueCount; i++) {
const String & key = keyArray[i];
const String & value = valueArray[i];
uint keySize = key.length() + 1;
uint valueSize = value.length() + 1;
uint keyValueSize = keySize + valueSize;
s << keyValueSize;
s.serialize(key.str(), keySize);
s.serialize(value.str(), valueSize);
}
}
else {
// @@ Read key value pairs.
}
return s;
2018-02-06 02:55:07 +00:00
}*/
2011-03-22 22:52:43 +00:00
2018-02-06 02:55:07 +00:00
} // nv
2011-03-22 22:52:43 +00:00