OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright (C) 2012 Adobe Systems Incorporated. All rights reserved. | 2 * Copyright (C) 2012 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 29 matching lines...) Expand all Loading... | |
40 | 40 |
41 class FloatRect; | 41 class FloatRect; |
42 class Path; | 42 class Path; |
43 | 43 |
44 class BasicShape : public RefCounted<BasicShape> { | 44 class BasicShape : public RefCounted<BasicShape> { |
45 public: | 45 public: |
46 virtual ~BasicShape() { } | 46 virtual ~BasicShape() { } |
47 | 47 |
48 enum Type { | 48 enum Type { |
49 BasicShapeRectangleType = 1, | 49 BasicShapeRectangleType = 1, |
50 BasicShapeCircleType = 2, | 50 DeprecatedBasicShapeCircleType = 2, |
51 BasicShapeEllipseType = 3, | 51 DeprecatedBasicShapeEllipseType = 3, |
52 BasicShapePolygonType = 4, | 52 BasicShapeEllipseType = 4, |
53 BasicShapeInsetRectangleType = 5 | 53 BasicShapePolygonType = 5, |
54 BasicShapeInsetRectangleType = 6, | |
55 BasicShapeCircleType = 7 | |
bemjb
2013/12/07 00:05:32
Do you want to remove these explicit numbers in th
| |
54 }; | 56 }; |
55 | 57 |
56 bool canBlend(const BasicShape*) const; | 58 bool canBlend(const BasicShape*) const; |
57 | 59 |
58 virtual void path(Path&, const FloatRect&) = 0; | 60 virtual void path(Path&, const FloatRect&) = 0; |
59 virtual WindRule windRule() const { return RULE_NONZERO; } | 61 virtual WindRule windRule() const { return RULE_NONZERO; } |
60 virtual PassRefPtr<BasicShape> blend(const BasicShape*, double) const = 0; | 62 virtual PassRefPtr<BasicShape> blend(const BasicShape*, double) const = 0; |
61 | 63 |
62 virtual Type type() const = 0; | 64 virtual Type type() const = 0; |
63 protected: | 65 protected: |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
98 BasicShapeRectangle() { } | 100 BasicShapeRectangle() { } |
99 | 101 |
100 Length m_y; | 102 Length m_y; |
101 Length m_x; | 103 Length m_x; |
102 Length m_width; | 104 Length m_width; |
103 Length m_height; | 105 Length m_height; |
104 Length m_cornerRadiusX; | 106 Length m_cornerRadiusX; |
105 Length m_cornerRadiusY; | 107 Length m_cornerRadiusY; |
106 }; | 108 }; |
107 | 109 |
110 class BasicShapeCenterCoordinate { | |
111 public: | |
112 enum Keyword { | |
113 None, | |
114 Top, | |
115 Right, | |
116 Bottom, | |
117 Left | |
118 }; | |
119 BasicShapeCenterCoordinate() : m_keyword(None), m_length(Undefined) { } | |
120 explicit BasicShapeCenterCoordinate(Length length) : m_keyword(None), m_leng th(length) { } | |
121 BasicShapeCenterCoordinate(Keyword keyword, Length length) : m_keyword(keywo rd), m_length(length) { } | |
122 BasicShapeCenterCoordinate(const BasicShapeCenterCoordinate& other) : m_keyw ord(other.keyword()), m_length(other.length()) { } | |
123 | |
124 Keyword keyword() const { return m_keyword; } | |
125 const Length& length() const { return m_length; } | |
126 | |
127 BasicShapeCenterCoordinate blend(const BasicShapeCenterCoordinate& other, do uble progress) const | |
128 { | |
129 if (m_keyword != None || other.keyword() != None) | |
130 return BasicShapeCenterCoordinate(other); | |
131 | |
132 return BasicShapeCenterCoordinate(m_length.blend(other.length(), progres s, ValueRangeAll)); | |
133 } | |
134 | |
135 private: | |
136 Keyword m_keyword; | |
137 Length m_length; | |
138 }; | |
139 | |
140 class BasicShapeRadius { | |
141 public: | |
142 enum Type { | |
143 Value, | |
144 ClosestSide, | |
145 FarthestSide | |
146 }; | |
147 BasicShapeRadius() : m_value(Undefined), m_type(ClosestSide) { } | |
148 explicit BasicShapeRadius(Length v) : m_value(v), m_type(Value) { } | |
149 explicit BasicShapeRadius(Type t) : m_value(Undefined), m_type(t) { } | |
150 BasicShapeRadius(const BasicShapeRadius& other) : m_value(other.value()), m_ type(other.type()) { } | |
151 | |
152 const Length& value() const { return m_value; } | |
153 Type type() const { return m_type; } | |
154 | |
155 BasicShapeRadius blend(const BasicShapeRadius& other, double progress) const | |
156 { | |
157 if (m_type != Value || other.type() != Value) | |
158 return BasicShapeRadius(other); | |
159 | |
160 return BasicShapeRadius(m_value.blend(other.value(), progress, ValueRang eAll)); | |
161 } | |
162 | |
163 private: | |
164 Length m_value; | |
165 Type m_type; | |
166 | |
167 }; | |
168 | |
108 class BasicShapeCircle : public BasicShape { | 169 class BasicShapeCircle : public BasicShape { |
109 public: | 170 public: |
110 static PassRefPtr<BasicShapeCircle> create() { return adoptRef(new BasicShap eCircle); } | 171 static PassRefPtr<BasicShapeCircle> create() { return adoptRef(new BasicShap eCircle); } |
111 | 172 |
173 const BasicShapeCenterCoordinate& centerX() const { return m_centerX; } | |
174 const BasicShapeCenterCoordinate& centerY() const { return m_centerY; } | |
175 const BasicShapeRadius& radius() const { return m_radius; } | |
176 | |
177 void setCenterX(BasicShapeCenterCoordinate centerX) { m_centerX = centerX; } | |
178 void setCenterY(BasicShapeCenterCoordinate centerY) { m_centerY = centerY; } | |
179 void setRadius(BasicShapeRadius radius) { m_radius = radius; } | |
180 | |
181 virtual void path(Path&, const FloatRect&) OVERRIDE; | |
182 virtual PassRefPtr<BasicShape> blend(const BasicShape*, double) const OVERRI DE; | |
183 | |
184 virtual Type type() const { return BasicShapeCircleType; } | |
185 private: | |
186 BasicShapeCircle() { } | |
187 | |
188 BasicShapeCenterCoordinate m_centerX; | |
189 BasicShapeCenterCoordinate m_centerY; | |
190 BasicShapeRadius m_radius; | |
191 }; | |
192 | |
193 class DeprecatedBasicShapeCircle : public BasicShape { | |
194 public: | |
195 static PassRefPtr<DeprecatedBasicShapeCircle> create() { return adoptRef(new DeprecatedBasicShapeCircle); } | |
196 | |
112 Length centerX() const { return m_centerX; } | 197 Length centerX() const { return m_centerX; } |
113 Length centerY() const { return m_centerY; } | 198 Length centerY() const { return m_centerY; } |
114 Length radius() const { return m_radius; } | 199 Length radius() const { return m_radius; } |
115 | 200 |
116 void setCenterX(Length centerX) { m_centerX = centerX; } | 201 void setCenterX(Length centerX) { m_centerX = centerX; } |
117 void setCenterY(Length centerY) { m_centerY = centerY; } | 202 void setCenterY(Length centerY) { m_centerY = centerY; } |
118 void setRadius(Length radius) { m_radius = radius; } | 203 void setRadius(Length radius) { m_radius = radius; } |
119 | 204 |
120 virtual void path(Path&, const FloatRect&) OVERRIDE; | 205 virtual void path(Path&, const FloatRect&) OVERRIDE; |
121 virtual PassRefPtr<BasicShape> blend(const BasicShape*, double) const OVERRI DE; | 206 virtual PassRefPtr<BasicShape> blend(const BasicShape*, double) const OVERRI DE; |
122 | 207 |
123 virtual Type type() const { return BasicShapeCircleType; } | 208 virtual Type type() const { return DeprecatedBasicShapeCircleType; } |
124 private: | 209 private: |
125 BasicShapeCircle() { } | 210 DeprecatedBasicShapeCircle() { } |
126 | 211 |
127 Length m_centerX; | 212 Length m_centerX; |
128 Length m_centerY; | 213 Length m_centerY; |
129 Length m_radius; | 214 Length m_radius; |
130 }; | 215 }; |
131 | 216 |
132 class BasicShapeEllipse : public BasicShape { | 217 class BasicShapeEllipse : public BasicShape { |
133 public: | 218 public: |
134 static PassRefPtr<BasicShapeEllipse> create() { return adoptRef(new BasicSha peEllipse); } | 219 static PassRefPtr<BasicShapeEllipse> create() { return adoptRef(new BasicSha peEllipse); } |
135 | 220 |
221 const BasicShapeCenterCoordinate& centerX() const { return m_centerX; } | |
222 const BasicShapeCenterCoordinate& centerY() const { return m_centerY; } | |
223 const BasicShapeRadius& radiusX() const { return m_radiusX; } | |
224 const BasicShapeRadius& radiusY() const { return m_radiusY; } | |
225 | |
226 void setCenterX(BasicShapeCenterCoordinate centerX) { m_centerX = centerX; } | |
227 void setCenterY(BasicShapeCenterCoordinate centerY) { m_centerY = centerY; } | |
228 void setRadiusX(BasicShapeRadius radiusX) { m_radiusX = radiusX; } | |
229 void setRadiusY(BasicShapeRadius radiusY) { m_radiusY = radiusY; } | |
230 | |
231 virtual void path(Path&, const FloatRect&) OVERRIDE; | |
232 virtual PassRefPtr<BasicShape> blend(const BasicShape*, double) const OVERRI DE; | |
233 | |
234 virtual Type type() const { return BasicShapeEllipseType; } | |
235 private: | |
236 BasicShapeEllipse() { } | |
237 | |
238 BasicShapeCenterCoordinate m_centerX; | |
239 BasicShapeCenterCoordinate m_centerY; | |
240 BasicShapeRadius m_radiusX; | |
241 BasicShapeRadius m_radiusY; | |
242 }; | |
243 | |
244 class DeprecatedBasicShapeEllipse : public BasicShape { | |
245 public: | |
246 static PassRefPtr<DeprecatedBasicShapeEllipse> create() { return adoptRef(ne w DeprecatedBasicShapeEllipse); } | |
247 | |
136 Length centerX() const { return m_centerX; } | 248 Length centerX() const { return m_centerX; } |
137 Length centerY() const { return m_centerY; } | 249 Length centerY() const { return m_centerY; } |
138 Length radiusX() const { return m_radiusX; } | 250 Length radiusX() const { return m_radiusX; } |
139 Length radiusY() const { return m_radiusY; } | 251 Length radiusY() const { return m_radiusY; } |
140 | 252 |
141 void setCenterX(Length centerX) { m_centerX = centerX; } | 253 void setCenterX(Length centerX) { m_centerX = centerX; } |
142 void setCenterY(Length centerY) { m_centerY = centerY; } | 254 void setCenterY(Length centerY) { m_centerY = centerY; } |
143 void setRadiusX(Length radiusX) { m_radiusX = radiusX; } | 255 void setRadiusX(Length radiusX) { m_radiusX = radiusX; } |
144 void setRadiusY(Length radiusY) { m_radiusY = radiusY; } | 256 void setRadiusY(Length radiusY) { m_radiusY = radiusY; } |
145 | 257 |
146 virtual void path(Path&, const FloatRect&) OVERRIDE; | 258 virtual void path(Path&, const FloatRect&) OVERRIDE; |
147 virtual PassRefPtr<BasicShape> blend(const BasicShape*, double) const OVERRI DE; | 259 virtual PassRefPtr<BasicShape> blend(const BasicShape*, double) const OVERRI DE; |
148 | 260 |
149 virtual Type type() const { return BasicShapeEllipseType; } | 261 virtual Type type() const { return DeprecatedBasicShapeEllipseType; } |
150 private: | 262 private: |
151 BasicShapeEllipse() { } | 263 DeprecatedBasicShapeEllipse() { } |
152 | 264 |
153 Length m_centerX; | 265 Length m_centerX; |
154 Length m_centerY; | 266 Length m_centerY; |
155 Length m_radiusX; | 267 Length m_radiusX; |
156 Length m_radiusY; | 268 Length m_radiusY; |
157 }; | 269 }; |
158 | 270 |
159 class BasicShapePolygon : public BasicShape { | 271 class BasicShapePolygon : public BasicShape { |
160 public: | 272 public: |
161 static PassRefPtr<BasicShapePolygon> create() { return adoptRef(new BasicSha pePolygon); } | 273 static PassRefPtr<BasicShapePolygon> create() { return adoptRef(new BasicSha pePolygon); } |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
217 | 329 |
218 Length m_right; | 330 Length m_right; |
219 Length m_top; | 331 Length m_top; |
220 Length m_bottom; | 332 Length m_bottom; |
221 Length m_left; | 333 Length m_left; |
222 Length m_cornerRadiusX; | 334 Length m_cornerRadiusX; |
223 Length m_cornerRadiusY; | 335 Length m_cornerRadiusY; |
224 }; | 336 }; |
225 } | 337 } |
226 #endif | 338 #endif |
OLD | NEW |