Update to 2.0.0 tree from current Fremantle build
[opencv] / otherlibs / _graphics / include / OpenEXR / ImathShear.h
diff --git a/otherlibs/_graphics/include/OpenEXR/ImathShear.h b/otherlibs/_graphics/include/OpenEXR/ImathShear.h
deleted file mode 100644 (file)
index bad40a5..0000000
+++ /dev/null
@@ -1,659 +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_IMATHSHEAR_H
-#define INCLUDED_IMATHSHEAR_H
-
-//----------------------------------------------------
-//
-//     Shear6 class template.
-//
-//----------------------------------------------------
-
-#include "ImathExc.h"
-#include "ImathLimits.h"
-#include "ImathMath.h"
-#include "ImathVec.h"
-
-#include <iostream>
-
-
-namespace Imath {
-
-
-
-
-template <class T> class Shear6
-{
-  public:
-
-    //-------------------
-    // Access to elements
-    //-------------------
-
-    T                  xy, xz, yz, yx, zx, zy;
-
-    T &                        operator [] (int i);
-    const T &          operator [] (int i) const;
-
-
-    //-------------
-    // Constructors
-    //-------------
-
-    Shear6 ();                    // (0 0 0 0 0 0)
-    Shear6 (T XY, T XZ, T YZ);    // (XY XZ YZ 0 0 0)
-    Shear6 (const Vec3<T> &v);     // (v.x v.y v.z 0 0 0)
-    template <class S>             // (v.x v.y v.z 0 0 0)
-       Shear6 (const Vec3<S> &v);
-    Shear6 (T XY, T XZ, T YZ,      // (XY XZ YZ YX ZX ZY)
-           T YX, T ZX, T ZY);  
-
-
-    //---------------------------------
-    // Copy constructors and assignment
-    //---------------------------------
-
-    Shear6 (const Shear6 &h);
-    template <class S> Shear6 (const Shear6<S> &h);
-
-    const Shear6 &     operator = (const Shear6 &h);
-    template <class S> 
-       const Shear6 &  operator = (const Vec3<S> &v);
-
-
-    //----------------------
-    // Compatibility with Sb
-    //----------------------
-
-    template <class S>
-    void               setValue (S XY, S XZ, S YZ, S YX, S ZX, S ZY);
-
-    template <class S>
-    void               setValue (const Shear6<S> &h);
-
-    template <class S>
-    void               getValue (S &XY, S &XZ, S &YZ, 
-                                 S &YX, S &ZX, S &ZY) const;
-
-    template <class S>
-    void               getValue (Shear6<S> &h) const;
-
-    T *                        getValue();
-    const T *          getValue() const;
-
-
-    //---------
-    // Equality
-    //---------
-
-    template <class S>
-    bool               operator == (const Shear6<S> &h) const;
-
-    template <class S>
-    bool               operator != (const Shear6<S> &h) const;
-
-    //-----------------------------------------------------------------------
-    // Compare two shears and test if they are "approximately equal":
-    //
-    // equalWithAbsError (h, e)
-    //
-    //     Returns true if the coefficients of this and h are the same with
-    //     an absolute error of no more than e, i.e., for all i
-    //
-    //      abs (this[i] - h[i]) <= e
-    //
-    // equalWithRelError (h, e)
-    //
-    //     Returns true if the coefficients of this and h are the same with
-    //     a relative error of no more than e, i.e., for all i
-    //
-    //      abs (this[i] - h[i]) <= e * abs (this[i])
-    //-----------------------------------------------------------------------
-
-    bool               equalWithAbsError (const Shear6<T> &h, T e) const;
-    bool               equalWithRelError (const Shear6<T> &h, T e) const;
-
-
-    //------------------------
-    // Component-wise addition
-    //------------------------
-
-    const Shear6 &     operator += (const Shear6 &h);
-    Shear6             operator + (const Shear6 &h) const;
-
-
-    //---------------------------
-    // Component-wise subtraction
-    //---------------------------
-
-    const Shear6 &     operator -= (const Shear6 &h);
-    Shear6             operator - (const Shear6 &h) const;
-
-
-    //------------------------------------
-    // Component-wise multiplication by -1
-    //------------------------------------
-
-    Shear6             operator - () const;
-    const Shear6 &     negate ();
-
-
-    //------------------------------
-    // Component-wise multiplication
-    //------------------------------
-
-    const Shear6 &     operator *= (const Shear6 &h);
-    const Shear6 &     operator *= (T a);
-    Shear6             operator * (const Shear6 &h) const;
-    Shear6             operator * (T a) const;
-
-
-    //------------------------
-    // Component-wise division
-    //------------------------
-
-    const Shear6 &     operator /= (const Shear6 &h);
-    const Shear6 &     operator /= (T a);
-    Shear6             operator / (const Shear6 &h) const;
-    Shear6             operator / (T a) const;
-
-
-    //----------------------------------------------------------
-    // Number of dimensions, i.e. number of elements in a Shear6
-    //----------------------------------------------------------
-
-    static unsigned int        dimensions() {return 6;}
-
-
-    //-------------------------------------------------
-    // Limitations of type T (see also class limits<T>)
-    //-------------------------------------------------
-
-    static T           baseTypeMin()           {return limits<T>::min();}
-    static T           baseTypeMax()           {return limits<T>::max();}
-    static T           baseTypeSmallest()      {return limits<T>::smallest();}
-    static T           baseTypeEpsilon()       {return limits<T>::epsilon();}
-
-
-    //--------------------------------------------------------------
-    // Base type -- in templates, which accept a parameter, V, which
-    // could be either a Vec2<T> or a Shear6<T>, you can refer to T as
-    // V::BaseType
-    //--------------------------------------------------------------
-
-    typedef T          BaseType;
-};
-
-
-//--------------
-// Stream output
-//--------------
-
-template <class T>
-std::ostream & operator << (std::ostream &s, const Shear6<T> &h);
-
-
-//----------------------------------------------------
-// Reverse multiplication: scalar * Shear6<T>
-//----------------------------------------------------
-
-template <class S, class T> Shear6<T>  operator * (S a, const Shear6<T> &h);
-
-
-//-------------------------
-// Typedefs for convenience
-//-------------------------
-
-typedef Vec3   <float>  Shear3f;
-typedef Vec3   <double> Shear3d;
-typedef Shear6 <float>  Shear6f;
-typedef Shear6 <double> Shear6d;
-
-
-
-
-//-----------------------
-// Implementation of Shear6
-//-----------------------
-
-template <class T>
-inline T &
-Shear6<T>::operator [] (int i)
-{
-    return (&xy)[i];
-}
-
-template <class T>
-inline const T &
-Shear6<T>::operator [] (int i) const
-{
-    return (&xy)[i];
-}
-
-template <class T>
-inline
-Shear6<T>::Shear6 ()
-{
-    xy = xz = yz = yx = zx = zy = 0;
-}
-
-template <class T>
-inline
-Shear6<T>::Shear6 (T XY, T XZ, T YZ)
-{
-    xy = XY;
-    xz = XZ;
-    yz = YZ;
-    yx = 0;
-    zx = 0;
-    zy = 0;
-}
-
-template <class T>
-inline
-Shear6<T>::Shear6 (const Vec3<T> &v)
-{
-    xy = v.x;
-    xz = v.y;
-    yz = v.z;
-    yx = 0;
-    zx = 0;
-    zy = 0;
-}
-
-template <class T>
-template <class S>
-inline
-Shear6<T>::Shear6 (const Vec3<S> &v)
-{
-    xy = T (v.x);
-    xz = T (v.y);
-    yz = T (v.z);
-    yx = 0;
-    zx = 0;
-    zy = 0;
-}
-
-template <class T>
-inline
-Shear6<T>::Shear6 (T XY, T XZ, T YZ, T YX, T ZX, T ZY)
-{
-    xy = XY;
-    xz = XZ;
-    yz = YZ;
-    yx = YX;
-    zx = ZX;
-    zy = ZY;
-}
-
-template <class T>
-inline
-Shear6<T>::Shear6 (const Shear6 &h)
-{
-    xy = h.xy;
-    xz = h.xz;
-    yz = h.yz;
-    yx = h.yx;
-    zx = h.zx;
-    zy = h.zy;
-}
-
-template <class T>
-template <class S>
-inline
-Shear6<T>::Shear6 (const Shear6<S> &h)
-{
-    xy = T (h.xy);
-    xz = T (h.xz);
-    yz = T (h.yz);
-    yx = T (h.yx);
-    zx = T (h.zx);
-    zy = T (h.zy);
-}
-
-template <class T>
-inline const Shear6<T> &
-Shear6<T>::operator = (const Shear6 &h)
-{
-    xy = h.xy;
-    xz = h.xz;
-    yz = h.yz;
-    yx = h.yx;
-    zx = h.zx;
-    zy = h.zy;
-    return *this;
-}
-
-template <class T>
-template <class S>
-inline const Shear6<T> &
-Shear6<T>::operator = (const Vec3<S> &v)
-{
-    xy = T (v.x);
-    xz = T (v.y);
-    yz = T (v.z);
-    yx = 0;
-    zx = 0;
-    zy = 0;
-    return *this;
-}
-
-template <class T>
-template <class S>
-inline void
-Shear6<T>::setValue (S XY, S XZ, S YZ, S YX, S ZX, S ZY)
-{
-    xy = T (XY);
-    xz = T (XZ);
-    yz = T (YZ);
-    yx = T (YX);
-    zx = T (ZX);
-    zy = T (ZY);
-}
-
-template <class T>
-template <class S>
-inline void
-Shear6<T>::setValue (const Shear6<S> &h)
-{
-    xy = T (h.xy);
-    xz = T (h.xz);
-    yz = T (h.yz);
-    yx = T (h.yx);
-    zx = T (h.zx);
-    zy = T (h.zy);
-}
-
-template <class T>
-template <class S>
-inline void
-Shear6<T>::getValue (S &XY, S &XZ, S &YZ, S &YX, S &ZX, S &ZY) const
-{
-    XY = S (xy);
-    XZ = S (xz);
-    YZ = S (yz);
-    YX = S (yx);
-    ZX = S (zx);
-    ZY = S (zy);
-}
-
-template <class T>
-template <class S>
-inline void
-Shear6<T>::getValue (Shear6<S> &h) const
-{
-    h.xy = S (xy);
-    h.xz = S (xz);
-    h.yz = S (yz);
-    h.yx = S (yx);
-    h.zx = S (zx);
-    h.zy = S (zy);
-}
-
-template <class T>
-inline T *
-Shear6<T>::getValue()
-{
-    return (T *) &xy;
-}
-
-template <class T>
-inline const T *
-Shear6<T>::getValue() const
-{
-    return (const T *) &xy;
-}
-
-template <class T>
-template <class S>
-inline bool
-Shear6<T>::operator == (const Shear6<S> &h) const
-{
-    return xy == h.xy  &&  xz == h.xz  &&  yz == h.yz  &&  
-          yx == h.yx  &&  zx == h.zx  &&  zy == h.zy;
-}
-
-template <class T>
-template <class S>
-inline bool
-Shear6<T>::operator != (const Shear6<S> &h) const
-{
-    return xy != h.xy  ||  xz != h.xz  ||  yz != h.yz  ||
-          yx != h.yx  ||  zx != h.zx  ||  zy != h.zy;
-}
-
-template <class T>
-bool
-Shear6<T>::equalWithAbsError (const Shear6<T> &h, T e) const
-{
-    for (int i = 0; i < 6; i++)
-       if (!Imath::equalWithAbsError ((*this)[i], h[i], e))
-           return false;
-
-    return true;
-}
-
-template <class T>
-bool
-Shear6<T>::equalWithRelError (const Shear6<T> &h, T e) const
-{
-    for (int i = 0; i < 6; i++)
-       if (!Imath::equalWithRelError ((*this)[i], h[i], e))
-           return false;
-
-    return true;
-}
-
-
-template <class T>
-inline const Shear6<T> &
-Shear6<T>::operator += (const Shear6 &h)
-{
-    xy += h.xy;
-    xz += h.xz;
-    yz += h.yz;
-    yx += h.yx;
-    zx += h.zx;
-    zy += h.zy;
-    return *this;
-}
-
-template <class T>
-inline Shear6<T>
-Shear6<T>::operator + (const Shear6 &h) const
-{
-    return Shear6 (xy + h.xy, xz + h.xz, yz + h.yz,
-                  yx + h.yx, zx + h.zx, zy + h.zy);
-}
-
-template <class T>
-inline const Shear6<T> &
-Shear6<T>::operator -= (const Shear6 &h)
-{
-    xy -= h.xy;
-    xz -= h.xz;
-    yz -= h.yz;
-    yx -= h.yx;
-    zx -= h.zx;
-    zy -= h.zy;
-    return *this;
-}
-
-template <class T>
-inline Shear6<T>
-Shear6<T>::operator - (const Shear6 &h) const
-{
-    return Shear6 (xy - h.xy, xz - h.xz, yz - h.yz,
-                  yx - h.yx, zx - h.zx, zy - h.zy);
-}
-
-template <class T>
-inline Shear6<T>
-Shear6<T>::operator - () const
-{
-    return Shear6 (-xy, -xz, -yz, -yx, -zx, -zy);
-}
-
-template <class T>
-inline const Shear6<T> &
-Shear6<T>::negate ()
-{
-    xy = -xy;
-    xz = -xz;
-    yz = -yz;
-    yx = -yx;
-    zx = -zx;
-    zy = -zy;
-    return *this;
-}
-
-template <class T>
-inline const Shear6<T> &
-Shear6<T>::operator *= (const Shear6 &h)
-{
-    xy *= h.xy;
-    xz *= h.xz;
-    yz *= h.yz;
-    yx *= h.yx;
-    zx *= h.zx;
-    zy *= h.zy;
-    return *this;
-}
-
-template <class T>
-inline const Shear6<T> &
-Shear6<T>::operator *= (T a)
-{
-    xy *= a;
-    xz *= a;
-    yz *= a;
-    yx *= a;
-    zx *= a;
-    zy *= a;
-    return *this;
-}
-
-template <class T>
-inline Shear6<T>
-Shear6<T>::operator * (const Shear6 &h) const
-{
-    return Shear6 (xy * h.xy, xz * h.xz, yz * h.yz, 
-                  yx * h.yx, zx * h.zx, zy * h.zy);
-}
-
-template <class T>
-inline Shear6<T>
-Shear6<T>::operator * (T a) const
-{
-    return Shear6 (xy * a, xz * a, yz * a,
-                  yx * a, zx * a, zy * a);
-}
-
-template <class T>
-inline const Shear6<T> &
-Shear6<T>::operator /= (const Shear6 &h)
-{
-    xy /= h.xy;
-    xz /= h.xz;
-    yz /= h.yz;
-    yx /= h.yx;
-    zx /= h.zx;
-    zy /= h.zy;
-    return *this;
-}
-
-template <class T>
-inline const Shear6<T> &
-Shear6<T>::operator /= (T a)
-{
-    xy /= a;
-    xz /= a;
-    yz /= a;
-    yx /= a;
-    zx /= a;
-    zy /= a;
-    return *this;
-}
-
-template <class T>
-inline Shear6<T>
-Shear6<T>::operator / (const Shear6 &h) const
-{
-    return Shear6 (xy / h.xy, xz / h.xz, yz / h.yz,
-                  yx / h.yx, zx / h.zx, zy / h.zy);
-}
-
-template <class T>
-inline Shear6<T>
-Shear6<T>::operator / (T a) const
-{
-    return Shear6 (xy / a, xz / a, yz / a,
-                  yx / a, zx / a, zy / a);
-}
-
-
-//-----------------------------
-// Stream output implementation
-//-----------------------------
-
-template <class T>
-std::ostream &
-operator << (std::ostream &s, const Shear6<T> &h)
-{
-    return s << '(' 
-            << h.xy << ' ' << h.xz << ' ' << h.yz 
-            << h.yx << ' ' << h.zx << ' ' << h.zy 
-            << ')';
-}
-
-
-//-----------------------------------------
-// Implementation of reverse multiplication
-//-----------------------------------------
-
-template <class S, class T>
-inline Shear6<T>
-operator * (S a, const Shear6<T> &h)
-{
-    return Shear6<T> (a * h.xy, a * h.xz, a * h.yz,
-                     a * h.yx, a * h.zx, a * h.zy);
-}
-
-
-} // namespace Imath
-
-#endif