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

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

Issue 815933006: Change all uses of the RoundedRect class to use FloatRoundedRect instead. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 12 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/blink_platform.gypi ('k') | Source/platform/geometry/FloatRoundedRect.cpp » ('j') | 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.
(...skipping 14 matching lines...) Expand all
25 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 25 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 26 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
27 * OF THE POSSIBILITY OF SUCH DAMAGE. 27 * OF THE POSSIBILITY OF SUCH DAMAGE.
28 */ 28 */
29 29
30 #ifndef FloatRoundedRect_h 30 #ifndef FloatRoundedRect_h
31 #define FloatRoundedRect_h 31 #define FloatRoundedRect_h
32 32
33 #include "platform/geometry/FloatRect.h" 33 #include "platform/geometry/FloatRect.h"
34 #include "platform/geometry/FloatSize.h" 34 #include "platform/geometry/FloatSize.h"
35 #include "platform/geometry/RoundedRect.h"
36 35
37 namespace blink { 36 namespace blink {
38 37
38 class FloatQuad;
39
39 class PLATFORM_EXPORT FloatRoundedRect { 40 class PLATFORM_EXPORT FloatRoundedRect {
40 public: 41 public:
41 class PLATFORM_EXPORT Radii { 42 class PLATFORM_EXPORT Radii {
42 public: 43 public:
43 Radii() { } 44 Radii() { }
44 Radii(const FloatSize& topLeft, const FloatSize& topRight, const FloatSi ze& bottomLeft, const FloatSize& bottomRight) 45 Radii(const FloatSize& topLeft, const FloatSize& topRight, const FloatSi ze& bottomLeft, const FloatSize& bottomRight)
45 : m_topLeft(topLeft) 46 : m_topLeft(topLeft)
46 , m_topRight(topRight) 47 , m_topRight(topRight)
47 , m_bottomLeft(bottomLeft) 48 , m_bottomLeft(bottomLeft)
48 , m_bottomRight(bottomRight) 49 , m_bottomRight(bottomRight)
49 { 50 {
50 } 51 }
51 52
52 Radii(const RoundedRect::Radii& intRadii) 53 Radii(const FloatRoundedRect::Radii& intRadii)
53 : m_topLeft(intRadii.topLeft()) 54 : m_topLeft(intRadii.topLeft())
54 , m_topRight(intRadii.topRight()) 55 , m_topRight(intRadii.topRight())
55 , m_bottomLeft(intRadii.bottomLeft()) 56 , m_bottomLeft(intRadii.bottomLeft())
56 , m_bottomRight(intRadii.bottomRight()) 57 , m_bottomRight(intRadii.bottomRight())
57 { 58 {
58 } 59 }
59 60
60 void setTopLeft(const FloatSize& size) { m_topLeft = size; } 61 void setTopLeft(const FloatSize& size) { m_topLeft = size; }
61 void setTopRight(const FloatSize& size) { m_topRight = size; } 62 void setTopRight(const FloatSize& size) { m_topRight = size; }
62 void setBottomLeft(const FloatSize& size) { m_bottomLeft = size; } 63 void setBottomLeft(const FloatSize& size) { m_bottomLeft = size; }
63 void setBottomRight(const FloatSize& size) { m_bottomRight = size; } 64 void setBottomRight(const FloatSize& size) { m_bottomRight = size; }
64 const FloatSize& topLeft() const { return m_topLeft; } 65 const FloatSize& topLeft() const { return m_topLeft; }
65 const FloatSize& topRight() const { return m_topRight; } 66 const FloatSize& topRight() const { return m_topRight; }
66 const FloatSize& bottomLeft() const { return m_bottomLeft; } 67 const FloatSize& bottomLeft() const { return m_bottomLeft; }
67 const FloatSize& bottomRight() const { return m_bottomRight; } 68 const FloatSize& bottomRight() const { return m_bottomRight; }
68 69
69 bool isZero() const; 70 bool isZero() const;
70 71
71 void scale(float factor); 72 void scale(float factor);
72 void expand(float topWidth, float bottomWidth, float leftWidth, float ri ghtWidth); 73 void expand(float topWidth, float bottomWidth, float leftWidth, float ri ghtWidth);
73 void expand(float size) { expand(size, size, size, size); } 74 void expand(float size) { expand(size, size, size, size); }
74 void shrink(float topWidth, float bottomWidth, float leftWidth, float ri ghtWidth) { expand(-topWidth, -bottomWidth, -leftWidth, -rightWidth); } 75 void shrink(float topWidth, float bottomWidth, float leftWidth, float ri ghtWidth) { expand(-topWidth, -bottomWidth, -leftWidth, -rightWidth); }
75 void shrink(float size) { shrink(size, size, size, size); } 76 void shrink(float size) { shrink(size, size, size, size); }
76 77
78 void includeLogicalEdges(const Radii& edges, bool isHorizontal, bool inc ludeLogicalLeftEdge, bool includeLogicalRightEdge);
79
77 private: 80 private:
78 FloatSize m_topLeft; 81 FloatSize m_topLeft;
79 FloatSize m_topRight; 82 FloatSize m_topRight;
80 FloatSize m_bottomLeft; 83 FloatSize m_bottomLeft;
81 FloatSize m_bottomRight; 84 FloatSize m_bottomRight;
82 }; 85 };
83 86
84 explicit FloatRoundedRect(const FloatRect&, const Radii& = Radii()); 87 explicit FloatRoundedRect(const FloatRect&, const Radii& = Radii());
85 FloatRoundedRect(float x, float y, float width, float height); 88 FloatRoundedRect(float x, float y, float width, float height);
86 FloatRoundedRect(const FloatRect&, const FloatSize& topLeft, const FloatSize & topRight, const FloatSize& bottomLeft, const FloatSize& bottomRight); 89 FloatRoundedRect(const FloatRect&, const FloatSize& topLeft, const FloatSize & topRight, const FloatSize& bottomLeft, const FloatSize& bottomRight);
87 90
88 const FloatRect& rect() const { return m_rect; } 91 const FloatRect& rect() const { return m_rect; }
89 const Radii& radii() const { return m_radii; } 92 const Radii& radii() const { return m_radii; }
90 bool isRounded() const { return !m_radii.isZero(); } 93 bool isRounded() const { return !m_radii.isZero(); }
91 bool isEmpty() const { return m_rect.isEmpty(); } 94 bool isEmpty() const { return m_rect.isEmpty(); }
92 95
93 void setRect(const FloatRect& rect) { m_rect = rect; } 96 void setRect(const FloatRect& rect) { m_rect = rect; }
94 void setRadii(const Radii& radii) { m_radii = radii; } 97 void setRadii(const Radii& radii) { m_radii = radii; }
95 98
96 void move(const FloatSize& size) { m_rect.move(size); } 99 void move(const FloatSize& size) { m_rect.move(size); }
97 void inflate(float size) { m_rect.inflate(size); } 100 void inflateWithRadii(int size);
101 void inflate(float size) { m_rect.inflate(size); }
98 void expandRadii(float size) { m_radii.expand(size); } 102 void expandRadii(float size) { m_radii.expand(size); }
99 void shrinkRadii(float size) { m_radii.shrink(size); } 103 void shrinkRadii(float size) { m_radii.shrink(size); }
100 104
105 // Returns a quickly computed rect enclosed by the rounded rect.
106 FloatRect radiusCenterRect() const;
107
101 FloatRect topLeftCorner() const 108 FloatRect topLeftCorner() const
102 { 109 {
103 return FloatRect(m_rect.x(), m_rect.y(), m_radii.topLeft().width(), m_ra dii.topLeft().height()); 110 return FloatRect(m_rect.x(), m_rect.y(), m_radii.topLeft().width(), m_ra dii.topLeft().height());
104 } 111 }
105 FloatRect topRightCorner() const 112 FloatRect topRightCorner() const
106 { 113 {
107 return FloatRect(m_rect.maxX() - m_radii.topRight().width(), m_rect.y(), m_radii.topRight().width(), m_radii.topRight().height()); 114 return FloatRect(m_rect.maxX() - m_radii.topRight().width(), m_rect.y(), m_radii.topRight().width(), m_radii.topRight().height());
108 } 115 }
109 FloatRect bottomLeftCorner() const 116 FloatRect bottomLeftCorner() const
110 { 117 {
111 return FloatRect(m_rect.x(), m_rect.maxY() - m_radii.bottomLeft().height (), m_radii.bottomLeft().width(), m_radii.bottomLeft().height()); 118 return FloatRect(m_rect.x(), m_rect.maxY() - m_radii.bottomLeft().height (), m_radii.bottomLeft().width(), m_radii.bottomLeft().height());
112 } 119 }
113 FloatRect bottomRightCorner() const 120 FloatRect bottomRightCorner() const
114 { 121 {
115 return FloatRect(m_rect.maxX() - m_radii.bottomRight().width(), m_rect.m axY() - m_radii.bottomRight().height(), m_radii.bottomRight().width(), m_radii.b ottomRight().height()); 122 return FloatRect(m_rect.maxX() - m_radii.bottomRight().width(), m_rect.m axY() - m_radii.bottomRight().height(), m_radii.bottomRight().width(), m_radii.b ottomRight().height());
116 } 123 }
117 124
118 bool xInterceptsAtY(float y, float& minXIntercept, float& maxXIntercept) con st; 125 bool xInterceptsAtY(float y, float& minXIntercept, float& maxXIntercept) con st;
119 126
127 void includeLogicalEdges(const Radii& edges, bool isHorizontal, bool include LogicalLeftEdge, bool includeLogicalRightEdge);
128
129 // Tests whether the quad intersects any part of this rounded rectangle.
130 // This only works for convex quads.
131 bool intersectsQuad(const FloatQuad&) const;
132
133 void adjustRadii();
134 bool isRenderable() const;
135
120 private: 136 private:
121 FloatRect m_rect; 137 FloatRect m_rect;
122 Radii m_radii; 138 Radii m_radii;
123 }; 139 };
124 140
125 inline bool operator==(const FloatRoundedRect::Radii& a, const FloatRoundedRect: :Radii& b) 141 inline bool operator==(const FloatRoundedRect::Radii& a, const FloatRoundedRect: :Radii& b)
126 { 142 {
127 return a.topLeft() == b.topLeft() && a.topRight() == b.topRight() && a.botto mLeft() == b.bottomLeft() && a.bottomRight() == b.bottomRight(); 143 return a.topLeft() == b.topLeft() && a.topRight() == b.topRight() && a.botto mLeft() == b.bottomLeft() && a.bottomRight() == b.bottomRight();
128 } 144 }
129 145
146
147 inline bool operator!=(const FloatRoundedRect::Radii& a, const FloatRoundedRect: :Radii& b)
148 {
149 return !(a == b);
150 }
151
152
130 inline bool operator==(const FloatRoundedRect& a, const FloatRoundedRect& b) 153 inline bool operator==(const FloatRoundedRect& a, const FloatRoundedRect& b)
131 { 154 {
132 return a.rect() == b.rect() && a.radii() == b.radii(); 155 return a.rect() == b.rect() && a.radii() == b.radii();
133 } 156 }
134 157
135 } // namespace blink 158 } // namespace blink
136 159
137 #endif // FloatRoundedRect_h 160 #endif // FloatRoundedRect_h
OLDNEW
« no previous file with comments | « Source/platform/blink_platform.gypi ('k') | Source/platform/geometry/FloatRoundedRect.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698