Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(309)

Side by Side Diff: Source/platform/geometry/FloatBoxExtent.h

Issue 206403004: Change HarfBuzzShaper to use FloatBoxExtent for glyp bounds (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « Source/platform/fonts/harfbuzz/HarfBuzzShaper.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2013 Adobe Systems Incorporated. All rights reserved. 2 * Copyright (C) 2013 Adobe Systems Incorporated. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above 8 * 1. Redistributions of source code must retain the above
9 * copyright notice, this list of conditions and the following 9 * copyright notice, this list of conditions and the following
10 * disclaimer. 10 * disclaimer.
11 * 2. Redistributions in binary form must reproduce the above 11 * 2. Redistributions in binary form must reproduce the above
12 * copyright notice, this list of conditions and the following 12 * copyright notice, this list of conditions and the following
13 * disclaimer in the documentation and/or other materials 13 * disclaimer in the documentation and/or other materials
14 * provided with the distribution. 14 * provided with the distribution.
15 * 15 *
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY 16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE 19 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE
20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, 20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
21 * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 21 * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
22 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 22 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
23 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 23 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR 24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
25 * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 25 * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
26 * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 26 * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27 * SUCH DAMAGE. 27 * SUCH DAMAGE.
28 */ 28 */
29 29
30 #ifndef IntRectExtent_h 30 #ifndef FloatBoxExtent_h
31 #define IntRectExtent_h 31 #define FloatBoxExtent_h
32 32
33 #include "platform/geometry/LayoutRect.h" 33 #include "platform/geometry/FloatRect.h"
34 34
35 namespace WebCore { 35 namespace WebCore {
36 36
37 class IntRectExtent { 37 class FloatBoxExtent {
38 public: 38 public:
39 IntRectExtent() 39 FloatBoxExtent()
40 : m_top(0) 40 : m_top(0)
41 , m_right(0) 41 , m_right(0)
42 , m_bottom(0) 42 , m_bottom(0)
43 , m_left(0) 43 , m_left(0)
44 { 44 {
45 } 45 }
46 46
47 IntRectExtent(int top, int right, int bottom, int left) 47 FloatBoxExtent(float top, float right, float bottom, float left)
48 : m_top(top) 48 : m_top(top)
49 , m_right(right) 49 , m_right(right)
50 , m_bottom(bottom) 50 , m_bottom(bottom)
51 , m_left(left) 51 , m_left(left)
52 { 52 {
53 } 53 }
54 54
55 int top() const { return m_top; } 55 float top() const { return m_top; }
56 void setTop(int top) { m_top = top; } 56 void setTop(float top) { m_top = top; }
57 57
58 int right() const { return m_right; } 58 float right() const { return m_right; }
59 void setRight(int right) { m_right = right; } 59 void setRight(float right) { m_right = right; }
60 60
61 int bottom() const { return m_bottom; } 61 float bottom() const { return m_bottom; }
62 void setBottom(int bottom) { m_bottom = bottom; } 62 void setBottom(float bottom) { m_bottom = bottom; }
63 63
64 int left() const { return m_left; } 64 float left() const { return m_left; }
65 void setLeft(int left) { m_left = left; } 65 void setLeft(float left) { m_left = left; }
66 66
67 bool isZero() const { return !left() && !right() && !top() && !bottom(); } 67 bool isZero() const { return !left() && !right() && !top() && !bottom(); }
68 68
69 void expandRect(LayoutRect& rect) const 69 void expandRect(FloatRect& rect) const
70 { 70 {
71 if (isZero()) 71 if (isZero())
72 return; 72 return;
73 73
74 rect.move(-left(), -top()); 74 rect.move(-left(), -top());
75 rect.expand(left() + right(), top() + bottom()); 75 rect.expand(left() + right(), top() + bottom());
76 } 76 }
77 77
78 void unite(const FloatBoxExtent& other)
79 {
80 m_top = std::min(m_top, other.top());
81 m_right = std::max(m_right, other.right());
82 m_bottom = std::max(m_bottom, other.bottom());
83 m_left = std::min(m_left, other.left());
84 }
85
86 void unite(const FloatRect& rect)
87 {
88 m_top = std::min(m_top, rect.y());
89 m_right = std::max(m_right, rect.maxX());
90 m_bottom = std::max(m_bottom, rect.maxY());
91 m_left = std::min(m_left, rect.x());
92 }
93
78 private: 94 private:
79 int m_top; 95 float m_top;
80 int m_right; 96 float m_right;
81 int m_bottom; 97 float m_bottom;
82 int m_left; 98 float m_left;
83 }; 99 };
84 100
85 inline bool operator==(const IntRectExtent& a, const IntRectExtent& b) 101 inline bool operator==(const FloatBoxExtent& a, const FloatBoxExtent& b)
86 { 102 {
87 return a.top() == b.top() 103 return a.top() == b.top()
88 && a.right() == b.right() 104 && a.right() == b.right()
89 && a.bottom() == b.bottom() 105 && a.bottom() == b.bottom()
90 && a.left() == b.left(); 106 && a.left() == b.left();
91 } 107 }
92 108
93 inline bool operator!=(const IntRectExtent& a, const IntRectExtent& b) 109 inline bool operator!=(const FloatBoxExtent& a, const FloatBoxExtent& b)
94 { 110 {
95 return !(a == b); 111 return !(a == b);
96 } 112 }
97 113
98 inline void operator+=(IntRectExtent& a, const IntRectExtent& b) 114 inline void operator+=(FloatBoxExtent& a, const FloatBoxExtent& b)
99 { 115 {
100 a.setTop(a.top() + b.top()); 116 a.setTop(a.top() + b.top());
101 a.setRight(a.right() + b.right()); 117 a.setRight(a.right() + b.right());
102 a.setBottom(a.bottom() + b.bottom()); 118 a.setBottom(a.bottom() + b.bottom());
103 a.setLeft(a.left() + b.left()); 119 a.setLeft(a.left() + b.left());
104 } 120 }
105 121
106 } // namespace WebCore 122 } // namespace WebCore
107 123
108 124
109 #endif // IntRectExtent_h 125 #endif // FloatBoxExtent_h
OLDNEW
« no previous file with comments | « Source/platform/fonts/harfbuzz/HarfBuzzShaper.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698