Blame exrenvmap/main.cpp

Packit Service 6754ca
///////////////////////////////////////////////////////////////////////////
Packit Service 6754ca
//
Packit Service 6754ca
// Copyright (c) 2004, Industrial Light & Magic, a division of Lucas
Packit Service 6754ca
// Digital Ltd. LLC
Packit Service 6754ca
// 
Packit Service 6754ca
// All rights reserved.
Packit Service 6754ca
// 
Packit Service 6754ca
// Redistribution and use in source and binary forms, with or without
Packit Service 6754ca
// modification, are permitted provided that the following conditions are
Packit Service 6754ca
// met:
Packit Service 6754ca
// *       Redistributions of source code must retain the above copyright
Packit Service 6754ca
// notice, this list of conditions and the following disclaimer.
Packit Service 6754ca
// *       Redistributions in binary form must reproduce the above
Packit Service 6754ca
// copyright notice, this list of conditions and the following disclaimer
Packit Service 6754ca
// in the documentation and/or other materials provided with the
Packit Service 6754ca
// distribution.
Packit Service 6754ca
// *       Neither the name of Industrial Light & Magic nor the names of
Packit Service 6754ca
// its contributors may be used to endorse or promote products derived
Packit Service 6754ca
// from this software without specific prior written permission. 
Packit Service 6754ca
// 
Packit Service 6754ca
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
Packit Service 6754ca
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
Packit Service 6754ca
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
Packit Service 6754ca
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
Packit Service 6754ca
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
Packit Service 6754ca
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
Packit Service 6754ca
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
Packit Service 6754ca
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
Packit Service 6754ca
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
Packit Service 6754ca
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
Packit Service 6754ca
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Packit Service 6754ca
//
Packit Service 6754ca
///////////////////////////////////////////////////////////////////////////
Packit Service 6754ca
Packit Service 6754ca
Packit Service 6754ca
//-----------------------------------------------------------------------------
Packit Service 6754ca
//
Packit Service 6754ca
//      exrenvmap -- makes OpenEXR environment maps
Packit Service 6754ca
//
Packit Service 6754ca
//-----------------------------------------------------------------------------
Packit Service 6754ca
Packit Service 6754ca
#include <makeCubeMap.h>
Packit Service 6754ca
#include <makeLatLongMap.h>
Packit Service 6754ca
#include <blurImage.h>
Packit Service 6754ca
#include <EnvmapImage.h>
Packit Service 6754ca
#include <ImfEnvmap.h>
Packit Service 6754ca
#include <ImfHeader.h>
Packit Service 6754ca
Packit Service 6754ca
#include <iostream>
Packit Service 6754ca
#include <exception>
Packit Service 6754ca
#include <string>
Packit Service 6754ca
#include <string.h>
Packit Service 6754ca
#include <stdlib.h>
Packit Service 6754ca
Packit Service 6754ca
#include "namespaceAlias.h"
Packit Service 6754ca
using namespace IMF;
Packit Service 6754ca
using namespace std;
Packit Service 6754ca
Packit Service 6754ca
Packit Service 6754ca
namespace {
Packit Service 6754ca
Packit Service 6754ca
void
Packit Service 6754ca
usageMessage (const char argv0[], bool verbose = false)
Packit Service 6754ca
{
Packit Service 6754ca
    cerr << "usage: " << argv0 << " [options] infile outfile" << endl;
Packit Service 6754ca
Packit Service 6754ca
    if (verbose)
Packit Service 6754ca
    {
Packit Service 6754ca
        cerr << "\n"
Packit Service 6754ca
                "Converts OpenEXR latitude-longitude environment maps\n"
Packit Service 6754ca
                "into cube-face environment maps or vice versa.\n"
Packit Service 6754ca
                "Reads an environment map image from infile, converts\n"
Packit Service 6754ca
                "it, and stores the result in outfile.\n"
Packit Service 6754ca
                "\n"
Packit Service 6754ca
                "If the input file name contains a '%' character, then an\n"
Packit Service 6754ca
                "input cube-face environment map is assembled from six\n"
Packit Service 6754ca
                "square sub-images that represent the six faces of the cube.\n"
Packit Service 6754ca
                "The names of the six image files are generated by replacing\n"
Packit Service 6754ca
                "the % with +X, -X, +Y, -Y, +Z and -Z respectively.\n"
Packit Service 6754ca
                "\n"
Packit Service 6754ca
                "If the output file name contains a '%' character and\n"
Packit Service 6754ca
                "the program has been instructed to produce a cube-face\n"
Packit Service 6754ca
                "environment map, then the output image is split into six\n"
Packit Service 6754ca
                "square sub-images that are saved in six separate output\n"
Packit Service 6754ca
                "files.  The names of the files are generated by replacing\n"
Packit Service 6754ca
                "the % with +X, -X, +Y, -Y, +Z and -Z respectively.\n"
Packit Service 6754ca
                "\n"
Packit Service 6754ca
                "Options:\n"
Packit Service 6754ca
                "\n"
Packit Service 6754ca
                "-o         produces a ONE_LEVEL output file (default)\n"
Packit Service 6754ca
                "\n"
Packit Service 6754ca
                "-m         produces a MIPMAP_LEVELS output file (-m has\n"
Packit Service 6754ca
                "           no effect if the output image is split into\n"
Packit Service 6754ca
                "           multiple files)\n"
Packit Service 6754ca
                "\n"
Packit Service 6754ca
                "-c         the output file will be a cube-face environment\n"
Packit Service 6754ca
                "           map (default)\n"
Packit Service 6754ca
                "\n"
Packit Service 6754ca
                "-l         the output file will be a latitude-longitude\n"
Packit Service 6754ca
                "           environment map\n"
Packit Service 6754ca
                "\n"
Packit Service 6754ca
                "-ci        the input file is interpreted as a cube-face\n"
Packit Service 6754ca
                "           environment map, regardless of its envmap\n"
Packit Service 6754ca
                "           attribute\n"
Packit Service 6754ca
                "\n"
Packit Service 6754ca
                "-li        the input file is interpreted as a latitude-\n"
Packit Service 6754ca
                "           longitude environment map, regardless of its\n"
Packit Service 6754ca
                "           envmap attribute (-li has no effect if the\n"
Packit Service 6754ca
                "           input image is assembled from multiple files)\n"
Packit Service 6754ca
                "\n"
Packit Service 6754ca
                "-w x       sets the width of the output image to x pixels\n"
Packit Service 6754ca
                "           (default is 256).  The height of the output image\n"
Packit Service 6754ca
                "           will be x*6 pixels for a cube-face map, or x/2\n"
Packit Service 6754ca
                "           pixels for a latitude-longitude map.\n"
Packit Service 6754ca
                "\n"
Packit Service 6754ca
                "-f r n     sets the antialiasing filter radius to r\n"
Packit Service 6754ca
                "           (default is 1.0) and the sampling rate to\n"
Packit Service 6754ca
                "           n by n (default is 5 by 5).  Increasing r\n"
Packit Service 6754ca
                "           makes the output image blurrier; decreasing r\n"
Packit Service 6754ca
                "           makes the image sharper but may cause aliasing.\n"
Packit Service 6754ca
                "           Increasing n improves antialiasing, but\n"
Packit Service 6754ca
                "           generating the output image takes longer.\n"
Packit Service 6754ca
                "\n"
Packit Service 6754ca
                "-b         blurs the environment map image by applying a\n"
Packit Service 6754ca
                "           180-degree-wide filter kernel such that point-\n"
Packit Service 6754ca
                "           sampling the blurred image at a location that\n"
Packit Service 6754ca
                "           corresponds to 3D direction N returns the color\n"
Packit Service 6754ca
                "           that a white diffuse reflector with surface\n"
Packit Service 6754ca
                "           normal N would have if it was illuminated using\n"
Packit Service 6754ca
                "           the original non-blurred image.\n"
Packit Service 6754ca
                "           Generating the blurred image can be fairly slow.\n"
Packit Service 6754ca
                "\n"
Packit Service 6754ca
                "-t x y     sets the output file's tile size to x by y pixels\n"
Packit Service 6754ca
                "           (default is 64 by 64)\n"
Packit Service 6754ca
                "\n"
Packit Service 6754ca
                "-p t b     if the input image is a latitude-longitude map,\n"
Packit Service 6754ca
                "           pad the image at the top and bottom with t*h\n"
Packit Service 6754ca
                "           and b*h extra scan lines, where h is the height\n"
Packit Service 6754ca
                "           of the input image.  This is useful for images\n"
Packit Service 6754ca
                "           from 360-degree panoramic scans that cover\n"
Packit Service 6754ca
                "           less than 180 degrees vertically.\n"
Packit Service 6754ca
                "\n"
Packit Service 6754ca
                "-d         sets level size rounding to ROUND_DOWN (default)\n"
Packit Service 6754ca
                "\n"
Packit Service 6754ca
                "-u         sets level size rounding to ROUND_UP\n"
Packit Service 6754ca
                "\n"
Packit Service 6754ca
                "-z x       sets the data compression method to x\n"
Packit Service 6754ca
                "           (none/rle/zip/piz/pxr24/b44/b44a/dwaa/dwab,\n"
Packit Service 6754ca
                "           default is zip)\n"
Packit Service 6754ca
                "\n"
Packit Service 6754ca
                "-v         verbose mode\n"
Packit Service 6754ca
                "\n"
Packit Service 6754ca
                "-h         prints this message\n";
Packit Service 6754ca
Packit Service 6754ca
         cerr << endl;
Packit Service 6754ca
    }
Packit Service 6754ca
Packit Service 6754ca
    exit (1);
Packit Service 6754ca
}
Packit Service 6754ca
Packit Service 6754ca
Packit Service 6754ca
Compression
Packit Service 6754ca
getCompression (const string &str)
Packit Service 6754ca
{
Packit Service 6754ca
    Compression c;
Packit Service 6754ca
Packit Service 6754ca
    if (str == "no" || str == "none" || str == "NO" || str == "NONE")
Packit Service 6754ca
    {
Packit Service 6754ca
        c = NO_COMPRESSION;
Packit Service 6754ca
    }
Packit Service 6754ca
    else if (str == "rle" || str == "RLE")
Packit Service 6754ca
    {
Packit Service 6754ca
        c = RLE_COMPRESSION;
Packit Service 6754ca
    }
Packit Service 6754ca
    else if (str == "zip" || str == "ZIP")
Packit Service 6754ca
    {
Packit Service 6754ca
        c = ZIP_COMPRESSION;
Packit Service 6754ca
    }
Packit Service 6754ca
    else if (str == "piz" || str == "PIZ")
Packit Service 6754ca
    {
Packit Service 6754ca
        c = PIZ_COMPRESSION;
Packit Service 6754ca
    }
Packit Service 6754ca
    else if (str == "pxr24" || str == "PXR24")
Packit Service 6754ca
    {
Packit Service 6754ca
        c = PXR24_COMPRESSION;
Packit Service 6754ca
    }
Packit Service 6754ca
    else if (str == "b44" || str == "B44")
Packit Service 6754ca
    {
Packit Service 6754ca
        c = B44_COMPRESSION;
Packit Service 6754ca
    }
Packit Service 6754ca
    else if (str == "b44a" || str == "B44A")
Packit Service 6754ca
    {
Packit Service 6754ca
        c = B44A_COMPRESSION;
Packit Service 6754ca
    }
Packit Service 6754ca
    else if (str == "dwaa" || str == "DWAA")
Packit Service 6754ca
    {
Packit Service 6754ca
        c = DWAA_COMPRESSION;
Packit Service 6754ca
    }
Packit Service 6754ca
    else if (str == "dwab" || str == "DWAB")
Packit Service 6754ca
    {
Packit Service 6754ca
        c = DWAB_COMPRESSION;
Packit Service 6754ca
    }
Packit Service 6754ca
    else
Packit Service 6754ca
    {
Packit Service 6754ca
        cerr << "Unknown compression method \"" << str << "\"." << endl;
Packit Service 6754ca
        exit (1);
Packit Service 6754ca
    }
Packit Service 6754ca
Packit Service 6754ca
    return c;
Packit Service 6754ca
}
Packit Service 6754ca
Packit Service 6754ca
} // namespace
Packit Service 6754ca
Packit Service 6754ca
Packit Service 6754ca
int
Packit Service 6754ca
main(int argc, char **argv)
Packit Service 6754ca
{
Packit Service 6754ca
    const char *inFile = 0;
Packit Service 6754ca
    const char *outFile = 0;
Packit Service 6754ca
    Envmap type = ENVMAP_CUBE;
Packit Service 6754ca
    Envmap overrideInputType = NUM_ENVMAPTYPES;
Packit Service 6754ca
    LevelMode levelMode = ONE_LEVEL;
Packit Service 6754ca
    LevelRoundingMode roundingMode = ROUND_DOWN;
Packit Service 6754ca
    Compression compression = ZIP_COMPRESSION;
Packit Service 6754ca
    int mapWidth = 256;
Packit Service 6754ca
    int tileWidth = 64;
Packit Service 6754ca
    int tileHeight = 64;
Packit Service 6754ca
    float padTop = 0;
Packit Service 6754ca
    float padBottom = 0;
Packit Service 6754ca
    float filterRadius = 1;
Packit Service 6754ca
    int numSamples = 5;
Packit Service 6754ca
    bool diffuseBlur = false;
Packit Service 6754ca
    bool verbose = false;
Packit Service 6754ca
Packit Service 6754ca
    //
Packit Service 6754ca
    // Parse the command line.
Packit Service 6754ca
    //
Packit Service 6754ca
Packit Service 6754ca
    if (argc < 2)
Packit Service 6754ca
        usageMessage (argv[0], true);
Packit Service 6754ca
Packit Service 6754ca
    int i = 1;
Packit Service 6754ca
Packit Service 6754ca
    while (i < argc)
Packit Service 6754ca
    {
Packit Service 6754ca
        if (!strcmp (argv[i], "-o"))    
Packit Service 6754ca
        {
Packit Service 6754ca
            //
Packit Service 6754ca
            // generate a ONE_LEVEL image
Packit Service 6754ca
            //
Packit Service 6754ca
Packit Service 6754ca
            levelMode = ONE_LEVEL;
Packit Service 6754ca
            i += 1;
Packit Service 6754ca
        }
Packit Service 6754ca
        else if (!strcmp (argv[i], "-m"))
Packit Service 6754ca
        {
Packit Service 6754ca
            //
Packit Service 6754ca
            // Generate a MIPMAP_LEVELS image
Packit Service 6754ca
            //
Packit Service 6754ca
Packit Service 6754ca
            levelMode = MIPMAP_LEVELS;
Packit Service 6754ca
            i += 1;
Packit Service 6754ca
        }
Packit Service 6754ca
        else if (!strcmp (argv[i], "-c"))
Packit Service 6754ca
        {
Packit Service 6754ca
            //
Packit Service 6754ca
            // Generate a cube-face map
Packit Service 6754ca
            //
Packit Service 6754ca
Packit Service 6754ca
            type = ENVMAP_CUBE;
Packit Service 6754ca
            i += 1;
Packit Service 6754ca
        }
Packit Service 6754ca
        else if (!strcmp (argv[i], "-l"))
Packit Service 6754ca
        {
Packit Service 6754ca
            //
Packit Service 6754ca
            // Generate a latitude-longitude map
Packit Service 6754ca
            //
Packit Service 6754ca
Packit Service 6754ca
            type = ENVMAP_LATLONG;
Packit Service 6754ca
            i += 1;
Packit Service 6754ca
        }
Packit Service 6754ca
        else if (!strcmp (argv[i], "-ci"))
Packit Service 6754ca
        {
Packit Service 6754ca
            //
Packit Service 6754ca
            // Assume input is a cube-face map
Packit Service 6754ca
            //
Packit Service 6754ca
Packit Service 6754ca
            overrideInputType = ENVMAP_CUBE;
Packit Service 6754ca
            i += 1;
Packit Service 6754ca
        }
Packit Service 6754ca
        else if (!strcmp (argv[i], "-li"))
Packit Service 6754ca
        {
Packit Service 6754ca
            //
Packit Service 6754ca
            // Assume input is a latitude-longitude map
Packit Service 6754ca
            //
Packit Service 6754ca
Packit Service 6754ca
            overrideInputType = ENVMAP_LATLONG;
Packit Service 6754ca
            i += 1;
Packit Service 6754ca
        }
Packit Service 6754ca
        else if (!strcmp (argv[i], "-w"))
Packit Service 6754ca
        {
Packit Service 6754ca
            //
Packit Service 6754ca
            // Set output image width
Packit Service 6754ca
            //
Packit Service 6754ca
Packit Service 6754ca
            if (i > argc - 2)
Packit Service 6754ca
                usageMessage (argv[0]);
Packit Service 6754ca
Packit Service 6754ca
            mapWidth = strtol (argv[i + 1], 0, 0);
Packit Service 6754ca
Packit Service 6754ca
            if (mapWidth <= 0)
Packit Service 6754ca
            {
Packit Service 6754ca
                cerr << "Output image width must be greater than zero." << endl;
Packit Service 6754ca
                return 1;
Packit Service 6754ca
            }
Packit Service 6754ca
Packit Service 6754ca
            i += 2;
Packit Service 6754ca
        }
Packit Service 6754ca
        else if (!strcmp (argv[i], "-f"))
Packit Service 6754ca
        {
Packit Service 6754ca
            //
Packit Service 6754ca
            // Set filter radius and supersampling rate
Packit Service 6754ca
            //
Packit Service 6754ca
Packit Service 6754ca
            if (i > argc - 3)
Packit Service 6754ca
                usageMessage (argv[0]);
Packit Service 6754ca
Packit Service 6754ca
            filterRadius = strtod (argv[i + 1], 0);
Packit Service 6754ca
            numSamples   = strtol (argv[i + 2], 0, 0);
Packit Service 6754ca
Packit Service 6754ca
            if (filterRadius < 0)
Packit Service 6754ca
            {
Packit Service 6754ca
                cerr << "Filter radius must not be less than zero." << endl;
Packit Service 6754ca
                return 1;
Packit Service 6754ca
            }
Packit Service 6754ca
Packit Service 6754ca
            if (numSamples <= 0)
Packit Service 6754ca
            {
Packit Service 6754ca
                cerr << "Sampling rate must be greater than zero." << endl;
Packit Service 6754ca
                return 1;
Packit Service 6754ca
            }
Packit Service 6754ca
Packit Service 6754ca
            i += 3;
Packit Service 6754ca
        }
Packit Service 6754ca
        else if (!strcmp (argv[i], "-b"))
Packit Service 6754ca
        {
Packit Service 6754ca
            //
Packit Service 6754ca
            // Diffuse blur
Packit Service 6754ca
            //
Packit Service 6754ca
Packit Service 6754ca
            diffuseBlur = true;
Packit Service 6754ca
            i += 1;
Packit Service 6754ca
        }
Packit Service 6754ca
        else if (!strcmp (argv[i], "-t"))
Packit Service 6754ca
        {
Packit Service 6754ca
            //
Packit Service 6754ca
            // Set tile size
Packit Service 6754ca
            //
Packit Service 6754ca
Packit Service 6754ca
            if (i > argc - 3)
Packit Service 6754ca
                usageMessage (argv[0]);
Packit Service 6754ca
Packit Service 6754ca
            tileWidth  = strtol (argv[i + 1], 0, 0);
Packit Service 6754ca
            tileHeight = strtol (argv[i + 2], 0, 0);
Packit Service 6754ca
Packit Service 6754ca
            if (tileWidth <= 0 || tileHeight <= 0)
Packit Service 6754ca
            {
Packit Service 6754ca
                cerr << "Tile size must be greater than zero." << endl;
Packit Service 6754ca
                return 1;
Packit Service 6754ca
            }
Packit Service 6754ca
Packit Service 6754ca
            i += 3;
Packit Service 6754ca
        }
Packit Service 6754ca
        else if (!strcmp (argv[i], "-p"))
Packit Service 6754ca
        {
Packit Service 6754ca
            //
Packit Service 6754ca
            // Set top and bottom padding
Packit Service 6754ca
            //
Packit Service 6754ca
Packit Service 6754ca
            if (i > argc - 3)
Packit Service 6754ca
                usageMessage (argv[0]);
Packit Service 6754ca
Packit Service 6754ca
            padTop    = strtod (argv[i + 1], 0);
Packit Service 6754ca
            padBottom = strtod (argv[i + 2], 0);
Packit Service 6754ca
Packit Service 6754ca
            if (padTop < 0 || padBottom < 0)
Packit Service 6754ca
            {
Packit Service 6754ca
                cerr << "Padding must not be less than zero." << endl;
Packit Service 6754ca
                return 1;
Packit Service 6754ca
            }
Packit Service 6754ca
Packit Service 6754ca
            i += 3;
Packit Service 6754ca
        }
Packit Service 6754ca
        else if (!strcmp (argv[i], "-d"))
Packit Service 6754ca
        {
Packit Service 6754ca
            //
Packit Service 6754ca
            // Round down
Packit Service 6754ca
            //
Packit Service 6754ca
Packit Service 6754ca
            roundingMode = ROUND_DOWN;
Packit Service 6754ca
            i += 1;
Packit Service 6754ca
        }
Packit Service 6754ca
        else if (!strcmp (argv[i], "-u"))
Packit Service 6754ca
        {
Packit Service 6754ca
            //
Packit Service 6754ca
            // Round down
Packit Service 6754ca
            //
Packit Service 6754ca
Packit Service 6754ca
            roundingMode = ROUND_UP;
Packit Service 6754ca
            i += 1;
Packit Service 6754ca
        }
Packit Service 6754ca
        else if (!strcmp (argv[i], "-z"))
Packit Service 6754ca
        {
Packit Service 6754ca
            //
Packit Service 6754ca
            // Set compression method
Packit Service 6754ca
            //
Packit Service 6754ca
Packit Service 6754ca
            if (i > argc - 2)
Packit Service 6754ca
                usageMessage (argv[0]);
Packit Service 6754ca
Packit Service 6754ca
            compression = getCompression (argv[i + 1]);
Packit Service 6754ca
            i += 2;
Packit Service 6754ca
        }
Packit Service 6754ca
        else if (!strcmp (argv[i], "-v"))
Packit Service 6754ca
        {
Packit Service 6754ca
            //
Packit Service 6754ca
            // Verbose mode
Packit Service 6754ca
            //
Packit Service 6754ca
Packit Service 6754ca
            verbose = true;
Packit Service 6754ca
            i += 1;
Packit Service 6754ca
        }
Packit Service 6754ca
        else if (!strcmp (argv[i], "-h"))
Packit Service 6754ca
        {
Packit Service 6754ca
            //
Packit Service 6754ca
            // Print help message
Packit Service 6754ca
            //
Packit Service 6754ca
Packit Service 6754ca
            usageMessage (argv[0], true);
Packit Service 6754ca
        }
Packit Service 6754ca
        else
Packit Service 6754ca
        {
Packit Service 6754ca
            //
Packit Service 6754ca
            // Image file name
Packit Service 6754ca
            //
Packit Service 6754ca
Packit Service 6754ca
            if (inFile == 0)
Packit Service 6754ca
                inFile = argv[i];
Packit Service 6754ca
            else
Packit Service 6754ca
                outFile = argv[i];
Packit Service 6754ca
Packit Service 6754ca
            i += 1;
Packit Service 6754ca
        }
Packit Service 6754ca
    }
Packit Service 6754ca
Packit Service 6754ca
    if (inFile == 0 || outFile == 0)
Packit Service 6754ca
        usageMessage (argv[0]);
Packit Service 6754ca
Packit Service 6754ca
    //
Packit Service 6754ca
    // Load inFile, convert it, and save the result in outFile.
Packit Service 6754ca
    //
Packit Service 6754ca
Packit Service 6754ca
    int exitStatus = 0;
Packit Service 6754ca
Packit Service 6754ca
    try
Packit Service 6754ca
    {
Packit Service 6754ca
        EnvmapImage image;
Packit Service 6754ca
        Header header;
Packit Service 6754ca
        RgbaChannels channels;
Packit Service 6754ca
Packit Service 6754ca
        readInputImage (inFile, padTop, padBottom,
Packit Service 6754ca
                        overrideInputType, verbose,
Packit Service 6754ca
                        image, header, channels);
Packit Service 6754ca
Packit Service 6754ca
        if (diffuseBlur)
Packit Service 6754ca
            blurImage (image, verbose);
Packit Service 6754ca
Packit Service 6754ca
        if (type == ENVMAP_CUBE)
Packit Service 6754ca
        {
Packit Service 6754ca
            makeCubeMap (image, header, channels,
Packit Service 6754ca
                         outFile,
Packit Service 6754ca
                         tileWidth, tileHeight,
Packit Service 6754ca
                         levelMode, roundingMode,
Packit Service 6754ca
                         compression, mapWidth,
Packit Service 6754ca
                         filterRadius, numSamples,
Packit Service 6754ca
                         verbose);
Packit Service 6754ca
        }
Packit Service 6754ca
        else
Packit Service 6754ca
        {
Packit Service 6754ca
            makeLatLongMap (image, header, channels,
Packit Service 6754ca
                            outFile,
Packit Service 6754ca
                            tileWidth, tileHeight,
Packit Service 6754ca
                            levelMode, roundingMode,
Packit Service 6754ca
                            compression, mapWidth,
Packit Service 6754ca
                            filterRadius, numSamples,
Packit Service 6754ca
                            verbose);
Packit Service 6754ca
        }
Packit Service 6754ca
    }
Packit Service 6754ca
    catch (const exception &e)
Packit Service 6754ca
    {
Packit Service 6754ca
        cerr << e.what() << endl;
Packit Service 6754ca
        exitStatus = 1;
Packit Service 6754ca
    }
Packit Service 6754ca
Packit Service 6754ca
    return exitStatus;
Packit Service 6754ca
}