khanat-opennel-code/code/nel/tools/3d/tga_resize/main.cpp

74 lines
1.2 KiB
C++

#include "nel/misc/bitmap.h"
#include "nel/misc/file.h"
#include <vector>
using namespace NLMISC;
using namespace std;
void usage()
{
printf("Usage: tga_resize tgaFileIn tgaFileOut divideRatio.\n \
eg: tga_resize pipo.tga pipo.tga 2\n \
=> pipo.tga widht and height are divided by 2 \n\n");
}
int main(int argc, char *argv[])
{
if(argc != 4)
{
usage();
return -1;
}
else
{
CBitmap btmp;
CIFile inFile;
COFile outFile;
uint divideRatio;
NLMISC::fromString(argv[3], divideRatio);
if(divideRatio==0 || !isPowerOf2(divideRatio))
{
printf("divideRatio must be a powerOf2 (1, 2, 4, 8 ...) \n");
return 0;
}
try
{
// read.
if (!inFile.open(argv[1]))
{
printf("Can't open input file %s \n", argv[1]);
return -1;
}
uint8 depth= btmp.load(inFile);
if(depth==0)
throw Exception("Bad File Format");
inFile.close();
// resize.
btmp.resample(btmp.getWidth() / divideRatio, btmp.getHeight() / divideRatio);
// output.
if (!outFile.open(argv[2]))
{
printf("Can't open output file %s \n", argv[2]);
return -1;
}
btmp.writeTGA(outFile, depth);
}
catch (const Exception &e)
{
printf("Error: %s\n", e.what());
return -1;
}
return 0;
}
}