Update to 2.0.0 tree from current Fremantle build
[opencv] / otherlibs / _graphics / include / OpenEXR / ImfHeader.h
diff --git a/otherlibs/_graphics/include/OpenEXR/ImfHeader.h b/otherlibs/_graphics/include/OpenEXR/ImfHeader.h
deleted file mode 100644 (file)
index 0d93a8c..0000000
+++ /dev/null
@@ -1,557 +0,0 @@
-///////////////////////////////////////////////////////////////////////////
-//
-// Copyright (c) 2004, Industrial Light & Magic, a division of Lucas
-// Digital Ltd. LLC
-// 
-// All rights reserved.
-// 
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-// *       Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// *       Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// *       Neither the name of Industrial Light & Magic nor the names of
-// its contributors may be used to endorse or promote products derived
-// from this software without specific prior written permission. 
-// 
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-///////////////////////////////////////////////////////////////////////////
-
-
-
-#ifndef INCLUDED_IMF_HEADER_H
-#define INCLUDED_IMF_HEADER_H
-
-//-----------------------------------------------------------------------------
-//
-//     class Header
-//
-//-----------------------------------------------------------------------------
-
-#include <ImfLineOrder.h>
-#include <ImfCompression.h>
-#include <ImfName.h>
-#include <ImfTileDescription.h>
-#include <ImfInt64.h>
-#include "ImathVec.h"
-#include "ImathBox.h"
-#include "IexBaseExc.h"
-#include <map>
-#include <iosfwd>
-
-namespace Imf {
-
-
-class Attribute;
-class ChannelList;
-class IStream;
-class OStream;
-class PreviewImage;
-
-
-class Header
-{
-  public:
-    
-    //----------------------------------------------------------------
-    // Default constructor -- the display window and the data window
-    // are both set to Box2i (V2i (0, 0), V2i (width-1, height-1).
-    //----------------------------------------------------------------
-
-    Header (int width = 64,
-           int height = 64,
-           float pixelAspectRatio = 1,
-           const Imath::V2f &screenWindowCenter = Imath::V2f (0, 0),
-           float screenWindowWidth = 1,
-           LineOrder lineOrder = INCREASING_Y,
-           Compression = ZIP_COMPRESSION);
-
-
-    //--------------------------------------------------------------------
-    // Constructor -- the data window is specified explicitly; the display
-    // window is set to Box2i (V2i (0, 0), V2i (width-1, height-1).
-    //--------------------------------------------------------------------
-
-    Header (int width,
-           int height,
-           const Imath::Box2i &dataWindow,
-           float pixelAspectRatio = 1,
-           const Imath::V2f &screenWindowCenter = Imath::V2f (0, 0),
-           float screenWindowWidth = 1,
-           LineOrder lineOrder = INCREASING_Y,
-           Compression = ZIP_COMPRESSION);
-
-
-    //----------------------------------------------------------
-    // Constructor -- the display window and the data window are
-    // both specified explicitly.
-    //----------------------------------------------------------
-
-    Header (const Imath::Box2i &displayWindow,
-           const Imath::Box2i &dataWindow,
-           float pixelAspectRatio = 1,
-           const Imath::V2f &screenWindowCenter = Imath::V2f (0, 0),
-           float screenWindowWidth = 1,
-           LineOrder lineOrder = INCREASING_Y,
-           Compression = ZIP_COMPRESSION);
-
-
-    //-----------------
-    // Copy constructor
-    //-----------------
-
-    Header (const Header &other);
-
-
-    //-----------
-    // Destructor
-    //-----------
-
-    ~Header ();
-
-
-    //-----------
-    // Assignment
-    //-----------
-
-    Header &                   operator = (const Header &other);
-
-
-    //---------------------------------------------------------------
-    // Add an attribute:
-    //
-    // insert(n,attr)  If no attribute with name n exists, a new
-    //                 attribute with name n, and the same type as
-    //                 attr, is added, and the value of attr is
-    //                 copied into the new attribute.
-    //
-    //                 If an attribute with name n exists, and its
-    //                 type is the same as attr, the value of attr
-    //                 is copied into this attribute.
-    //
-    //                 If an attribute with name n exists, and its
-    //                 type is different from attr, an Iex::TypeExc
-    //                 is thrown.
-    //
-    //---------------------------------------------------------------
-
-    void                       insert (const char name[],
-                                       const Attribute &attribute);
-
-    //------------------------------------------------------------------
-    // Access to existing attributes:
-    //
-    // [n]                     Returns a reference to the attribute
-    //                         with name n.  If no attribute with
-    //                         name n exists, an Iex::ArgExc is thrown.
-    //
-    // typedAttribute<T>(n)    Returns a reference to the attribute
-    //                         with name n and type T.  If no attribute
-    //                         with name n exists, an Iex::ArgExc is
-    //                         thrown.  If an attribute with name n
-    //                         exists, but its type is not T, an
-    //                         Iex::TypeExc is thrown.
-    //
-    // findTypedAttribute<T>(n)        Returns a pointer to the attribute with
-    //                         name n and type T, or 0 if no attribute
-    //                         with name n and type T exists.
-    //
-    //------------------------------------------------------------------
-
-    Attribute &                        operator [] (const char name[]);
-    const Attribute &          operator [] (const char name[]) const;
-
-    template <class T> T&      typedAttribute (const char name[]);
-    template <class T> const T&        typedAttribute (const char name[]) const;
-
-    template <class T> T*      findTypedAttribute (const char name[]);
-    template <class T> const T*        findTypedAttribute (const char name[]) const;
-
-
-    //---------------------------------------------
-    // Iterator-style access to existing attributes
-    //---------------------------------------------
-
-    typedef std::map <Name, Attribute *> AttributeMap;
-
-    class Iterator;
-    class ConstIterator;
-
-    Iterator                   begin ();
-    ConstIterator              begin () const;
-    Iterator                   end ();
-    ConstIterator              end () const;
-    Iterator                   find (const char name[]);
-    ConstIterator              find (const char name[]) const;
-
-
-    //--------------------------------
-    // Access to predefined attributes
-    //--------------------------------
-
-    Imath::Box2i &             displayWindow ();
-    const Imath::Box2i &       displayWindow () const;
-
-    Imath::Box2i &             dataWindow ();
-    const Imath::Box2i &       dataWindow () const;
-
-    float &                    pixelAspectRatio ();
-    const float &              pixelAspectRatio () const;
-
-    Imath::V2f &               screenWindowCenter ();
-    const Imath::V2f &         screenWindowCenter () const;
-
-    float &                    screenWindowWidth ();
-    const float &              screenWindowWidth () const;
-
-    ChannelList &              channels ();
-    const ChannelList &                channels () const;
-
-    LineOrder &                        lineOrder ();
-    const LineOrder &          lineOrder () const;
-
-    Compression &              compression ();
-    const Compression &                compression () const;
-
-
-    //----------------------------------------------------------------------
-    // Tile Description:
-    //
-    // The tile description is a TileDescriptionAttribute whose name
-    // is "tiles".  The "tiles" attribute must be present in any tiled
-    // image file. When present, it describes various properties of the
-    // tiles that make up the file.
-    //
-    // Convenience functions:
-    //
-    // setTileDescription(td)
-    //     calls insert ("tiles", TileDescriptionAttribute (td))
-    //
-    // tileDescription()
-    //     returns typedAttribute<TileDescriptionAttribute>("tiles").value()
-    //
-    // hasTileDescription()
-    //     return findTypedAttribute<TileDescriptionAttribute>("tiles") != 0
-    //
-    //----------------------------------------------------------------------
-
-    void                       setTileDescription (const TileDescription & td);
-
-    TileDescription &          tileDescription ();
-    const TileDescription &    tileDescription () const;
-
-    bool                       hasTileDescription() const;
-
-
-    //----------------------------------------------------------------------
-    // Preview image:
-    //
-    // The preview image is a PreviewImageAttribute whose name is "preview".
-    // This attribute is special -- while an image file is being written,
-    // the pixels of the preview image can be changed repeatedly by calling
-    // OutputFile::updatePreviewImage().
-    //
-    // Convenience functions:
-    //
-    // setPreviewImage(p)
-    //     calls insert ("preview", PreviewImageAttribute (p))
-    //
-    // previewImage()
-    //     returns typedAttribute<PreviewImageAttribute>("preview").value()
-    //
-    // hasPreviewImage()
-    //     return findTypedAttribute<PreviewImageAttribute>("preview") != 0
-    //
-    //----------------------------------------------------------------------
-
-    void                       setPreviewImage (const PreviewImage &p);
-
-    PreviewImage &             previewImage ();
-    const PreviewImage &       previewImage () const;
-
-    bool                       hasPreviewImage () const;
-
-
-    //-------------------------------------------------------------
-    // Sanity check -- examines the header, and throws an exception
-    // if it finds something wrong (empty display window, negative
-    // pixel aspect ratio, unknown compression sceme etc.)
-    //
-    // set isTiled to true if you are checking a tiled/multi-res
-    // header
-    //-------------------------------------------------------------
-
-    void                       sanityCheck (bool isTiled = false) const;
-
-
-    //------------------------------------------------------------------
-    // Input and output:
-    //
-    // If the header contains a preview image attribute, then writeTo()
-    // returns the position of that attribute in the output stream; this
-    // information is used by OutputFile::updatePreviewImage().
-    // If the header contains no preview image attribute, then writeTo()
-    // returns 0.
-    //------------------------------------------------------------------
-
-
-    Int64                      writeTo (OStream &os,
-                                        bool isTiled = false) const;
-
-    void                       readFrom (IStream &is, int &version);
-
-  private:
-
-    AttributeMap               _map;
-};
-
-
-//----------
-// Iterators
-//----------
-
-class Header::Iterator
-{
-  public:
-
-    Iterator ();
-    Iterator (const Header::AttributeMap::iterator &i);
-
-    Iterator &                 operator ++ ();
-    Iterator                   operator ++ (int);
-
-    const char *               name () const;
-    Attribute &                        attribute () const;
-
-  private:
-
-    friend class Header::ConstIterator;
-
-    Header::AttributeMap::iterator _i;
-};
-
-
-class Header::ConstIterator
-{
-  public:
-
-    ConstIterator ();
-    ConstIterator (const Header::AttributeMap::const_iterator &i);
-    ConstIterator (const Header::Iterator &other);
-
-    ConstIterator &            operator ++ ();
-    ConstIterator              operator ++ (int);
-
-    const char *               name () const;
-    const Attribute &          attribute () const;
-
-  private:
-
-    friend bool operator == (const ConstIterator &, const ConstIterator &);
-    friend bool operator != (const ConstIterator &, const ConstIterator &);
-
-    Header::AttributeMap::const_iterator _i;
-};
-
-
-//------------------------------------------------------------------------
-// Library initialization:
-//
-// In a multithreaded program, staticInitialize() must be called once
-// during startup, before the program accesses any other functions or
-// classes in the IlmImf library.  Calling staticInitialize() in this
-// way avoids races during initialization of the library's global
-// variables.
-//
-// Single-threaded programs are not required to call staticInitialize();
-// initialization of the library's global variables happens automatically.
-//
-//------------------------------------------------------------------------
-
-void staticInitialize ();
-
-
-//-----------------
-// Inline Functions
-//-----------------
-
-
-inline
-Header::Iterator::Iterator (): _i()
-{
-    // empty
-}
-
-
-inline
-Header::Iterator::Iterator (const Header::AttributeMap::iterator &i): _i (i)
-{
-    // empty
-}
-
-
-inline Header::Iterator &              
-Header::Iterator::operator ++ ()
-{
-    ++_i;
-    return *this;
-}
-
-
-inline Header::Iterator        
-Header::Iterator::operator ++ (int)
-{
-    Iterator tmp = *this;
-    ++_i;
-    return tmp;
-}
-
-
-inline const char *
-Header::Iterator::name () const
-{
-    return *_i->first;
-}
-
-
-inline Attribute &     
-Header::Iterator::attribute () const
-{
-    return *_i->second;
-}
-
-
-inline
-Header::ConstIterator::ConstIterator (): _i()
-{
-    // empty
-}
-
-inline
-Header::ConstIterator::ConstIterator
-    (const Header::AttributeMap::const_iterator &i): _i (i)
-{
-    // empty
-}
-
-
-inline
-Header::ConstIterator::ConstIterator (const Header::Iterator &other):
-    _i (other._i)
-{
-    // empty
-}
-
-inline Header::ConstIterator &
-Header::ConstIterator::operator ++ ()
-{
-    ++_i;
-    return *this;
-}
-
-
-inline Header::ConstIterator           
-Header::ConstIterator::operator ++ (int)
-{
-    ConstIterator tmp = *this;
-    ++_i;
-    return tmp;
-}
-
-
-inline const char *
-Header::ConstIterator::name () const
-{
-    return *_i->first;
-}
-
-
-inline const Attribute &       
-Header::ConstIterator::attribute () const
-{
-    return *_i->second;
-}
-
-
-inline bool
-operator == (const Header::ConstIterator &x, const Header::ConstIterator &y)
-{
-    return x._i == y._i;
-}
-
-
-inline bool
-operator != (const Header::ConstIterator &x, const Header::ConstIterator &y)
-{
-    return !(x == y);
-}
-
-
-//---------------------
-// Template definitions
-//---------------------
-
-template <class T>
-T &
-Header::typedAttribute (const char name[])
-{
-    Attribute *attr = &(*this)[name];
-    T *tattr = dynamic_cast <T*> (attr);
-
-    if (tattr == 0)
-       throw Iex::TypeExc ("Unexpected attribute type.");
-
-    return *tattr;
-}
-
-
-template <class T>
-const T &
-Header::typedAttribute (const char name[]) const
-{
-    const Attribute *attr = &(*this)[name];
-    const T *tattr = dynamic_cast <const T*> (attr);
-
-    if (tattr == 0)
-       throw Iex::TypeExc ("Unexpected attribute type.");
-
-    return *tattr;
-}
-
-
-template <class T>
-T *
-Header::findTypedAttribute (const char name[])
-{
-    AttributeMap::iterator i = _map.find (name);
-    return (i == _map.end())? 0: dynamic_cast <T*> (i->second);
-}
-
-
-template <class T>
-const T *
-Header::findTypedAttribute (const char name[]) const
-{
-    AttributeMap::const_iterator i = _map.find (name);
-    return (i == _map.end())? 0: dynamic_cast <const T*> (i->second);
-}
-
-
-} // namespace Imf
-
-#endif