Blame IlmImfUtil/ImfImageDataWindow.cpp

Packit Service 6754ca
///////////////////////////////////////////////////////////////////////////
Packit Service 6754ca
//
Packit Service 6754ca
// Copyright (c) 2014, 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
//      Function dataWindowForFile()
Packit Service 6754ca
//
Packit Service 6754ca
//----------------------------------------------------------------------------
Packit Service 6754ca
Packit Service 6754ca
#include "ImfImageDataWindow.h"
Packit Service 6754ca
#include "ImfImage.h"
Packit Service 6754ca
#include <ImfHeader.h>
Packit Service 6754ca
#include <Iex.h>
Packit Service 6754ca
#include <algorithm>
Packit Service 6754ca
#include <cassert>
Packit Service 6754ca
Packit Service 6754ca
using namespace IMATH_NAMESPACE;
Packit Service 6754ca
using namespace IEX_NAMESPACE;
Packit Service 6754ca
using namespace std;
Packit Service 6754ca
Packit Service 6754ca
OPENEXR_IMF_INTERNAL_NAMESPACE_SOURCE_ENTER
Packit Service 6754ca
Packit Service 6754ca
Packit Service 6754ca
Box2i
Packit Service 6754ca
dataWindowForFile (const Header &hdr, const Image &img, DataWindowSource dws)
Packit Service 6754ca
{
Packit Service 6754ca
    switch (dws)
Packit Service 6754ca
    {
Packit Service 6754ca
      case USE_IMAGE_DATA_WINDOW:
Packit Service 6754ca
        
Packit Service 6754ca
        return img.dataWindow();
Packit Service 6754ca
Packit Service 6754ca
      case USE_HEADER_DATA_WINDOW:
Packit Service 6754ca
Packit Service 6754ca
        {
Packit Service 6754ca
            if (img.levelMode() != ONE_LEVEL)
Packit Service 6754ca
                throw ArgExc ("Cannot crop multi-resolution images.");
Packit Service 6754ca
Packit Service 6754ca
            const Box2i &hdw = hdr.dataWindow();
Packit Service 6754ca
            const Box2i &idw = img.dataWindow();
Packit Service 6754ca
Packit Service 6754ca
            return Box2i (V2i (max (hdw.min.x, idw.min.x),
Packit Service 6754ca
                               max (hdw.min.y, idw.min.y)),
Packit Service 6754ca
                          V2i (min (hdw.max.x, idw.max.x),
Packit Service 6754ca
                               min (hdw.max.y, idw.max.y)));
Packit Service 6754ca
        }
Packit Service 6754ca
Packit Service 6754ca
      default:
Packit Service 6754ca
Packit Service 6754ca
        assert (false);
Packit Service 6754ca
    }
Packit Service 6754ca
}
Packit Service 6754ca
Packit Service 6754ca
Packit Service 6754ca
OPENEXR_IMF_INTERNAL_NAMESPACE_SOURCE_EXIT