15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/*
25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    Copyright (C) 2005, 2006 Apple Inc. All rights reserved.
35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    This library is free software; you can redistribute it and/or
55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    modify it under the terms of the GNU Library General Public
65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    License as published by the Free Software Foundation; either
75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    version 2 of the License, or (at your option) any later version.
85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    This library is distributed in the hope that it will be useful,
105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    but WITHOUT ANY WARRANTY; without even the implied warranty of
115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    Library General Public License for more details.
135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    You should have received a copy of the GNU Library General Public License
155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    along with this library; see the file COPYING.LIB.  If not, write to
165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    Boston, MA 02110-1301, USA.
185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    Some useful definitions needed for laying out elements
215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)*/
225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef GapRects_h
245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define GapRects_h
255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
261e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)#include "platform/geometry/LayoutRect.h"
275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
28c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink {
295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    struct GapRects {
315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        const LayoutRect& left() const { return m_left; }
325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        const LayoutRect& center() const { return m_center; }
335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        const LayoutRect& right() const { return m_right; }
3402772c6a72f1ee0b226341a4f4439970c29fc861Ben Murdoch
355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        void uniteLeft(const LayoutRect& r) { m_left.unite(r); }
365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        void uniteCenter(const LayoutRect& r) { m_center.unite(r); }
375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        void uniteRight(const LayoutRect& r) { m_right.unite(r); }
385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        void unite(const GapRects& o) { uniteLeft(o.left()); uniteCenter(o.center()); uniteRight(o.right()); }
395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        operator LayoutRect() const
415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        {
425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)            LayoutRect result = m_left;
435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)            result.unite(m_center);
445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)            result.unite(m_right);
455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)            return result;
465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        bool operator==(const GapRects& other)
495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        {
505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)            return m_left == other.left() && m_center == other.center() && m_right == other.right();
515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        bool operator!=(const GapRects& other) { return !(*this == other); }
535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    private:
555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        LayoutRect m_left;
565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        LayoutRect m_center;
575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        LayoutRect m_right;
585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    };
595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
60c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} // namespace blink
615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif // GapRects_h
63