1/*
2    Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3    Copyright (C) 2006, 2008 Apple Inc. All rights reserved.
4
5    This library is free software; you can redistribute it and/or
6    modify it under the terms of the GNU Library General Public
7    License as published by the Free Software Foundation; either
8    version 2 of the License, or (at your option) any later version.
9
10    This library is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13    Library General Public License for more details.
14
15    You should have received a copy of the GNU Library General Public License
16    along with this library; see the file COPYING.LIB.  If not, write to
17    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18    Boston, MA 02110-1301, USA.
19*/
20
21#ifndef LengthBox_h
22#define LengthBox_h
23
24#include "Length.h"
25
26namespace WebCore {
27
28struct LengthBox {
29    LengthBox()
30    {
31    }
32
33    LengthBox(LengthType t)
34        : m_left(t)
35        , m_right(t)
36        , m_top(t)
37        , m_bottom(t)
38    {
39    }
40
41    LengthBox(int v)
42        : m_left(Length(v, Fixed))
43        , m_right(Length(v, Fixed))
44        , m_top(Length(v, Fixed))
45        , m_bottom(Length(v, Fixed))
46    {
47    }
48
49    LengthBox(int t, int r, int b, int l)
50        : m_left(Length(l, Fixed))
51        , m_right(Length(r, Fixed))
52        , m_top(Length(t, Fixed))
53        , m_bottom(Length(b, Fixed))
54    {
55    }
56
57    Length left() const { return m_left; }
58    Length right() const { return m_right; }
59    Length top() const { return m_top; }
60    Length bottom() const { return m_bottom; }
61
62    bool operator==(const LengthBox& o) const
63    {
64        return m_left == o.m_left && m_right == o.m_right && m_top == o.m_top && m_bottom == o.m_bottom;
65    }
66
67    bool operator!=(const LengthBox& o) const
68    {
69        return !(*this == o);
70    }
71
72    bool nonZero() const
73    {
74        return !(m_left.isZero() && m_right.isZero() && m_top.isZero() && m_bottom.isZero());
75    }
76
77    Length m_left;
78    Length m_right;
79    Length m_top;
80    Length m_bottom;
81};
82
83} // namespace WebCore
84
85#endif // LengthBox_h
86