Home | History | Annotate | Download | only in rendering
      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 "IntRect.h"
     27 
     28 namespace WebCore {
     29 
     30     struct GapRects {
     31         const IntRect& left() const { return m_left; }
     32         const IntRect& center() const { return m_center; }
     33         const IntRect& right() const { return m_right; }
     34 
     35         void uniteLeft(const IntRect& r) { m_left.unite(r); }
     36         void uniteCenter(const IntRect& r) { m_center.unite(r); }
     37         void uniteRight(const IntRect& r) { m_right.unite(r); }
     38         void unite(const GapRects& o) { uniteLeft(o.left()); uniteCenter(o.center()); uniteRight(o.right()); }
     39 
     40         operator IntRect() const
     41         {
     42             IntRect 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         IntRect m_left;
     56         IntRect m_center;
     57         IntRect m_right;
     58     };
     59 
     60 } // namespace WebCore
     61 
     62 #endif // GapRects_h
     63