]>
git.saurik.com Git - iphone-api.git/blob - WebCore/IntSize.h
2 * Copyright (C) 2003, 2004, 2005, 2006 Apple Computer, Inc. All rights reserved.
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
13 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 #include <wtf/Platform.h>
31 #include <CoreGraphics/CoreGraphics.h>
34 typedef struct CGSize CGSize
;
44 typedef struct tagSIZE SIZE
;
59 IntSize() : m_width(0), m_height(0) { }
60 IntSize(int width
, int height
) : m_width(width
), m_height(height
) { }
62 int width() const { return m_width
; }
63 int height() const { return m_height
; }
65 void setWidth(int width
) { m_width
= width
; }
66 void setHeight(int height
) { m_height
= height
; }
68 bool isEmpty() const { return m_width
<= 0 || m_height
<= 0; }
70 void expand(int width
, int height
)
76 IntSize
expandedTo(const IntSize
& other
) const
78 return IntSize(m_width
> other
.m_width
? m_width
: other
.m_width
,
79 m_height
> other
.m_height
? m_height
: other
.m_height
);
82 IntSize
shrunkTo(const IntSize
& other
) const
84 return IntSize(m_width
< other
.m_width
? m_width
: other
.m_width
,
85 m_height
< other
.m_height
? m_height
: other
.m_height
);
88 void clampNegativeToZero()
90 *this = expandedTo(IntSize());
94 explicit IntSize(const CGSize
&); // don't do this implicitly since it's lossy
95 operator CGSize() const;
100 IntSize(const SIZE
&);
101 operator SIZE() const;
105 IntSize(const QSize
&);
106 operator QSize() const;
108 #if PLATFORM(SYMBIAN)
109 IntSize(const TSize
&);
110 operator TSize() const;
115 int m_width
, m_height
;
118 inline IntSize
& operator+=(IntSize
& a
, const IntSize
& b
)
120 a
.setWidth(a
.width() + b
.width());
121 a
.setHeight(a
.height() + b
.height());
125 inline IntSize
& operator-=(IntSize
& a
, const IntSize
& b
)
127 a
.setWidth(a
.width() - b
.width());
128 a
.setHeight(a
.height() - b
.height());
132 inline IntSize
operator+(const IntSize
& a
, const IntSize
& b
)
134 return IntSize(a
.width() + b
.width(), a
.height() + b
.height());
137 inline IntSize
operator-(const IntSize
& a
, const IntSize
& b
)
139 return IntSize(a
.width() - b
.width(), a
.height() - b
.height());
142 inline IntSize
operator-(const IntSize
& size
)
144 return IntSize(-size
.width(), -size
.height());
147 inline bool operator==(const IntSize
& a
, const IntSize
& b
)
149 return a
.width() == b
.width() && a
.height() == b
.height();
152 inline bool operator!=(const IntSize
& a
, const IntSize
& b
)
154 return a
.width() != b
.width() || a
.height() != b
.height();
157 } // namespace WebCore