From 11d04287c9903d753114050ede49205e15a63cfa Mon Sep 17 00:00:00 2001 From: castano Date: Wed, 6 Apr 2011 06:42:10 +0000 Subject: [PATCH] Fix errors. --- src/nvtt/tools/thumbnailer.cpp | 204 +++++++++++++++++---------------- 1 file changed, 106 insertions(+), 98 deletions(-) diff --git a/src/nvtt/tools/thumbnailer.cpp b/src/nvtt/tools/thumbnailer.cpp index 6270b5b..69c9efb 100644 --- a/src/nvtt/tools/thumbnailer.cpp +++ b/src/nvtt/tools/thumbnailer.cpp @@ -40,118 +40,126 @@ static bool loadImage(nv::Image & image, const char * fileName) { - if (nv::strCaseCmp(nv::Path::extension(fileName), ".dds") == 0) - { - nv::DirectDrawSurface dds(fileName); - if (!dds.isValid()) - { - fprintf(stderr, "The file '%s' is not a valid DDS file.\n", fileName); - return false; - } - - dds.mipmap(&image, 0, 0); // get first image - } - else - { - // Regular image. - if (!image.load(fileName)) - { - fprintf(stderr, "The file '%s' is not a supported image type.\n", fileName); - return false; - } - } - - return true; + if (nv::strCaseCmp(nv::Path::extension(fileName), ".dds") == 0) + { + nv::DirectDrawSurface dds(fileName); + if (!dds.isValid()) + { + fprintf(stderr, "The file '%s' is not a valid DDS file.\n", fileName); + return false; + } + + dds.mipmap(&image, 0, 0); // get first image + } + else + { + // Regular image. + if (!image.load(fileName)) + { + fprintf(stderr, "The file '%s' is not a supported image type.\n", fileName); + return false; + } + } + + return true; } int main(int argc, char *argv[]) { - //MyAssertHandler assertHandler; - MyMessageHandler messageHandler; - - float gamma = 2.2f; - nv::Path input; - nv::Path output; - uint size = 128; - - // Parse arguments. - for (int i = 1; i < argc; i++) - { - // Input options. - if (strcmp("-s", argv[i]) == 0) - { - if (i+1 < argc && argv[i+1][0] != '-') { - size = (uint)atoi(argv[i+1]); - i++; - } - } - else if (argv[i][0] != '-') - { - input = argv[i]; - - if (i+1 < argc && argv[i+1][0] != '-') { - output = argv[i+1]; - } - else - { - fprintf(stderr, "No output filename.\n"); - return 1; - } - - break; - } + //MyAssertHandler assertHandler; + MyMessageHandler messageHandler; + + float gamma = 2.2f; + nv::Path input; + nv::Path output; + uint size = 128; + + // Parse arguments. + for (int i = 1; i < argc; i++) + { + // Input options. + if (strcmp("-s", argv[i]) == 0) + { + if (i+1 < argc && argv[i+1][0] != '-') { + size = (uint)atoi(argv[i+1]); + i++; + } + } + else if (argv[i][0] != '-') + { + input = argv[i]; + + if (i+1 < argc && argv[i+1][0] != '-') { + output = argv[i+1]; + } + else { + fprintf(stderr, "No output filename.\n"); + return 1; + } + + break; } + } - if (input.isNull() || output.isNull()) - { - printf("NVIDIA Texture Tools - Copyright NVIDIA Corporation 2007\n\n"); - - printf("usage: nv-gnome-thumbnailer [options] input output\n\n"); - - printf("Options:\n"); - printf(" -s size\tThumbnail size (default = 128)\n"); - - return 1; - } - - nv::Image image; - if (!loadImage(image, input.str())) return 1; + if (input.isNull() || output.isNull()) + { + printf("NVIDIA Texture Tools - Copyright NVIDIA Corporation 2007\n\n"); - nv::ImageIO::ImageMetaData metaData; - metaData.tagMap.add("Thumb::Image::Width", nv::StringBuilder().number (image.width())); - metaData.tagMap.add("Thumb::Image::Height", nv::StringBuilder().number (image.height())); + printf("usage: nv-gnome-thumbnailer [options] input output\n\n"); - if ((image.width() > size) || (image.height() > size)) - { - nv::FloatImage fimage(&image); - fimage.toLinear(0, 3, gamma); - - uint thumbW, thumbH; - if (image.width() > image.height()) - { - thumbW = size; - thumbH = uint ((float (image.height()) / float (image.width())) * size); - } - else - { - thumbW = uint ((float (image.width()) / float (image.height())) * size); - thumbH = size; - } - nv::AutoPtr fresult(fimage.resize(nv::BoxFilter(), thumbW, thumbH, nv::FloatImage::WrapMode_Clamp)); - - nv::AutoPtr result(fresult->createImageGammaCorrect(gamma)); - result->setFormat(nv::Image::Format_ARGB); + printf("Options:\n"); + printf(" -s size\tThumbnail size (default = 128)\n"); - nv::StdOutputStream stream(output.str()); - nv::ImageIO::save(output.str(), stream, result.ptr(), &metaData); + return 1; + } + + nv::Image image; + if (!loadImage(image, input.str())) return 1; + + nv::StringBuilder widthString; + widthString.number(image.width()); + nv::StringBuilder heightString; + heightString.number(image.height()); + + nv::Array metaData; + metaData.append("Thumb::Image::Width"); + metaData.append(widthString.str()); + metaData.append("Thumb::Image::Height"); + metaData.append(heightString.str()); + metaData.append(NULL); + metaData.append(NULL); + + if ((image.width() > size) || (image.height() > size)) + { + nv::FloatImage fimage(&image); + fimage.toLinear(0, 3, gamma); + + uint thumbW, thumbH; + if (image.width() > image.height()) + { + thumbW = size; + thumbH = uint ((float (image.height()) / float (image.width())) * size); } else { - nv::StdOutputStream stream(output.str()); - nv::ImageIO::save(output.str(), stream, &image, &metaData); + thumbW = uint ((float (image.width()) / float (image.height())) * size); + thumbH = size; } + nv::AutoPtr fresult(fimage.resize(nv::BoxFilter(), thumbW, thumbH, nv::FloatImage::WrapMode_Clamp)); + + nv::AutoPtr result(fresult->createImageGammaCorrect(gamma)); + result->setFormat(nv::Image::Format_ARGB); + + nv::StdOutputStream stream(output.str()); + nv::ImageIO::save(output.str(), stream, result.ptr(), metaData.buffer()); + } + else + { + nv::StdOutputStream stream(output.str()); + nv::ImageIO::save(output.str(), stream, &image, metaData.buffer()); + } - return 0; + return 0; }