source: GTP/trunk/Lib/Geom/OgreStuff/include/OgreRectangle.h @ 1809

Revision 1809, 2.3 KB checked in by gumbau, 18 years ago (diff)
RevLine 
[1809]1/*
2-----------------------------------------------------------------------------
3This source file is part of OGRE
4    (Object-oriented Graphics Rendering Engine)
5For the latest info, see http://ogre.sourceforge.net/
6
7Copyright (c) 2000-2005 The OGRE Team
8Also see acknowledgements in Readme.html
9
10This program is free software; you can redistribute it and/or modify it under
11the terms of the GNU Lesser General Public License as published by the Free Software
12Foundation; either version 2 of the License, or (at your option) any later
13version.
14
15This program is distributed in the hope that it will be useful, but WITHOUT
16ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
18
19You should have received a copy of the GNU Lesser General Public License along with
20this program; if not, write to the Free Software Foundation, Inc., 59 Temple
21Place - Suite 330, Boston, MA 02111-1307, USA, or go to
22http://www.gnu.org/copyleft/lesser.txt.
23-----------------------------------------------------------------------------
24*/
25#ifndef _Rectangle_H__
26#define _Rectangle_H__
27
28#include "OgrePrerequisites.h"
29
30namespace Ogre {
31
32    struct _OgreExport Rectangle
33    {
34        Real left;
35        Real top;
36        Real right;
37        Real bottom;
38
39        inline bool inside(Real x, Real y) const { return x >= left && x <= right && y >= top && y <= bottom; }
40    };
41
42    /** Geometric intersection of two rectanglar regions.
43     *
44     * @remarks Calculates the geometric intersection of two rectangular
45     * regions.  Rectangle coordinates must be ([0-N], [0-N]), such that
46     * (0,0) is in the upper left hand corner.
47     *
48     * If the two input rectangles do not intersect, then the result will be
49     * a degenerate rectangle, i.e. left >= right or top >= bottom, or both.
50     */
51    inline Rectangle intersect(const Rectangle& lhs, const Rectangle& rhs)
52    {
53        Rectangle r;
54
55        r.left   = lhs.left   > rhs.left   ? lhs.left   : rhs.left;
56        r.top    = lhs.top    > rhs.top    ? lhs.top    : rhs.top;
57        r.right  = lhs.right  < rhs.right  ? lhs.right  : rhs.right;
58        r.bottom = lhs.bottom < rhs.bottom ? lhs.bottom : rhs.bottom;
59
60        return r;
61    }
62
63}
64
65#endif // _Rectangle_H__
Note: See TracBrowser for help on using the repository browser.