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