#ifndef _bounds_h_
#define _bounds_h_

//////////////////////////////////////////////////////////////////////////////
//
// Bounds2
//
//////////////////////////////////////////////////////////////////////////////

class Bounds2 {
private:
    Rect m_rect;

public:
    //
    // Constructors
    //

    Bounds2() {}
    Bounds2(const Rect& m_rect);
    Bounds2(const Bounds2& Bounds2);

    static const Bounds2& GetEmpty();
    Bounds2 Transform(const Matrix2& mat) const;
    friend Bounds2 Union(const Bounds2& Bounds21, const Bounds2& Bounds22);
    friend Bounds2 Intersect(const Bounds2& Bounds21, const Bounds2& Bounds22);

    //
    // Accessors
    //

    const Rect& GetRect() const { return m_rect; }

    //
    // Methods
    //

    void SetRect(const Rect& rect);
};

//////////////////////////////////////////////////////////////////////////////
//
// Bounds
//
//////////////////////////////////////////////////////////////////////////////

/*
class Bounds {
private:
    Vector m_vecMin;
    Vector m_vecMax;
    float m_diagonal;

    void CalcDiagonal();

public:
    //
    // Constructors
    //

    Bounds(const Vector& vecMin, const Vector& vecMax);
    Bounds(const Bounds& bounds);
    Bounds() {}

    static const Bounds& GetEmpty();
    Bounds Transform(const Matrix& mat);
    friend Bounds Union(const Bounds& bounds1, const Bounds& bounds2);

    //
    // Accessors
    //

    const Vector& GetMin() const { return m_vecMin; }
    const Vector& GetMax() const { return m_vecMax; }
    Vector GetCenter() const { return (m_vecMin + m_vecMax) * 0.5; }
    float GetDiagonal() const { return m_diagonal; }
    float GetRadius() const { return m_diagonal / 2; }

    //
    // Methods
    //

    void SetVectors(const Vector& vecMin, const Vector& vecMax);
};
*/

#endif