Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / third_party / WebKit / public / platform / WebFloatSize.h
blobe379e4d2e3ee688ea4c4b33b2a525fc0a2debc28
1 /*
2 * Copyright (C) 2013 Google 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 are
6 * met:
8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above
11 * copyright notice, this list of conditions and the following disclaimer
12 * in the documentation and/or other materials provided with the
13 * distribution.
14 * * Neither the name of Google Inc. nor the names of its
15 * contributors may be used to endorse or promote products derived from
16 * this software without specific prior written permission.
18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 #ifndef WebFloatSize_h
32 #define WebFloatSize_h
34 #include "WebCommon.h"
36 #include <algorithm>
38 #if INSIDE_BLINK
39 #include "platform/geometry/FloatSize.h"
40 #else
41 #include <cmath>
42 #include <ui/gfx/geometry/size_f.h>
43 #include <ui/gfx/geometry/vector2d_f.h>
44 #endif
46 namespace blink {
48 struct WebFloatSize {
49 float width;
50 float height;
52 bool isEmpty() const { return width <= 0 || height <= 0; }
54 WebFloatSize()
55 : width(0)
56 , height(0)
60 WebFloatSize(float width, float height)
61 : width(width)
62 , height(height)
66 #if INSIDE_BLINK
67 WebFloatSize(const FloatSize& s)
68 : width(s.width())
69 , height(s.height())
73 WebFloatSize& operator=(const FloatSize& s)
75 width = s.width();
76 height = s.height();
77 return *this;
80 operator FloatSize() const
82 return FloatSize(width, height);
84 #else
85 WebFloatSize(const gfx::SizeF& s)
86 : width(s.width())
87 , height(s.height())
91 WebFloatSize(const gfx::Vector2dF& v)
92 : width(v.x())
93 , height(v.y())
97 WebFloatSize& operator=(const gfx::SizeF& s)
99 width = s.width();
100 height = s.height();
101 return *this;
104 WebFloatSize& operator=(const gfx::Vector2dF& v)
106 width = v.x();
107 height = v.y();
108 return *this;
111 operator gfx::SizeF() const
113 return gfx::SizeF(std::max(0.f, width), std::max(0.f, height));
116 operator gfx::Vector2dF() const
118 return gfx::Vector2dF(width, height);
120 #endif
123 inline bool operator==(const WebFloatSize& a, const WebFloatSize& b)
125 return a.width == b.width && a.height == b.height;
128 inline bool operator!=(const WebFloatSize& a, const WebFloatSize& b)
130 return !(a == b);
133 } // namespace blink
135 #endif