1/*
2    Copyright (C) 2005, 2006 Apple Inc. All rights reserved.
3
4    This library is free software; you can redistribute it and/or
5    modify it under the terms of the GNU Library General Public
6    License as published by the Free Software Foundation; either
7    version 2 of the License, or (at your option) any later version.
8
9    This library is distributed in the hope that it will be useful,
10    but WITHOUT ANY WARRANTY; without even the implied warranty of
11    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12    Library General Public License for more details.
13
14    You should have received a copy of the GNU Library General Public License
15    along with this library; see the file COPYING.LIB.  If not, write to
16    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17    Boston, MA 02110-1301, USA.
18
19
20    Some useful definitions needed for laying out elements
21*/
22
23#ifndef GapRects_h
24#define GapRects_h
25
26#include "platform/geometry/LayoutRect.h"
27
28namespace blink {
29
30    struct GapRects {
31        const LayoutRect& left() const { return m_left; }
32        const LayoutRect& center() const { return m_center; }
33        const LayoutRect& right() const { return m_right; }
34
35        void uniteLeft(const LayoutRect& r) { m_left.unite(r); }
36        void uniteCenter(const LayoutRect& r) { m_center.unite(r); }
37        void uniteRight(const LayoutRect& r) { m_right.unite(r); }
38        void unite(const GapRects& o) { uniteLeft(o.left()); uniteCenter(o.center()); uniteRight(o.right()); }
39
40        operator LayoutRect() const
41        {
42            LayoutRect result = m_left;
43            result.unite(m_center);
44            result.unite(m_right);
45            return result;
46        }
47
48        bool operator==(const GapRects& other)
49        {
50            return m_left == other.left() && m_center == other.center() && m_right == other.right();
51        }
52        bool operator!=(const GapRects& other) { return !(*this == other); }
53
54    private:
55        LayoutRect m_left;
56        LayoutRect m_center;
57        LayoutRect m_right;
58    };
59
60} // namespace blink
61
62#endif // GapRects_h
63