#include <iostream>
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <memory.h>
#include <string.h>
#include <assert.h>
//#include "Utils.h"
//#include "PVRTC.h"
#include "Image.h"
//#include "Image.cpp"
void error(const char* message)
{
printf("error: %s\n", message);
exit(-1);
}
void test_case(const char* inputFile, const char* beforeFile, const char* afterFile)
{
// Load the file
ByteArray inputData;
Image inputImage;
if (!LoadFile(inputFile, inputData))
error("couldn't load file");
if (!DecodeTGA(inputData, inputImage))
error("couldn't decode tga");
printf("loaded\n");
printf("fmt: %i bpp: %i\n", inputImage.m_type, (inputImage.m_type == RAW_RGBA_32BPP) ? 32 : 24);
// Write the texture prior to compression
ByteArray outData;
if (!EncodeTGA(inputImage, outData))
error("couldn't encode tga");
if (!SaveFile(beforeFile, outData))
error("couldn't save file");
Image pvrImage;
if (!ConvertImage(inputImage, pvrImage, PVRTC_RGBA_4BPPV1))
error("couldn't convert file to pvr");
if (!SaveFile(std::string(afterFile + std::string(".pvr")).c_str(), pvrImage.m_data))
error("couldn't save pvr file");
Image outputImage;
if (!ConvertImage(pvrImage, outputImage, inputImage.m_type))
error("couldn't convert file to pvr");
printf("after fmt: %i bpp: %i\n", outputImage.m_type, (outputImage.m_type == RAW_RGBA_32BPP) ? 32 : 24);
// Write the texture post compression
ByteArray outDataPost;
if (!EncodeTGA(outputImage, outDataPost))
error("couldn't encode tga");
if (!SaveFile(afterFile, outDataPost))
error("couldn't save file");
}
int main(int argc, char **argv)
{
test_case("globe.tga", "globe_before.tga", "globe_after.tga");
test_case("alpha.tga", "alpha_before.tga", "alpha_after.tga");
return 0;
}