Chromium Code Reviews| 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 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 134 }; | 134 }; |
| 135 BasicShapeCenterCoordinate() : m_keyword(None), m_length(Undefined) { } | 135 BasicShapeCenterCoordinate() : m_keyword(None), m_length(Undefined) { } |
| 136 explicit BasicShapeCenterCoordinate(Length length) : m_keyword(None), m_leng th(length) { } | 136 explicit BasicShapeCenterCoordinate(Length length) : m_keyword(None), m_leng th(length) { } |
| 137 BasicShapeCenterCoordinate(Keyword keyword, Length length) : m_keyword(keywo rd), m_length(length) { } | 137 BasicShapeCenterCoordinate(Keyword keyword, Length length) : m_keyword(keywo rd), m_length(length) { } |
| 138 BasicShapeCenterCoordinate(const BasicShapeCenterCoordinate& other) : m_keyw ord(other.keyword()), m_length(other.length()) { } | 138 BasicShapeCenterCoordinate(const BasicShapeCenterCoordinate& other) : m_keyw ord(other.keyword()), m_length(other.length()) { } |
| 139 bool operator==(const BasicShapeCenterCoordinate& other) const { return m_ke yword == other.m_keyword && m_length == other.m_length; } | 139 bool operator==(const BasicShapeCenterCoordinate& other) const { return m_ke yword == other.m_keyword && m_length == other.m_length; } |
| 140 | 140 |
| 141 Keyword keyword() const { return m_keyword; } | 141 Keyword keyword() const { return m_keyword; } |
| 142 const Length& length() const { return m_length; } | 142 const Length& length() const { return m_length; } |
| 143 | 143 |
| 144 bool canBlend(const BasicShapeCenterCoordinate& other) const | |
| 145 { | |
| 146 // FIXME determine how to interpolate between keywords. See bug 125108. | |
|
Bem Jones-Bey (adobe)
2013/12/19 23:08:48
You could merge in the interpolation patch to this
| |
| 147 return m_keyword == None && other.keyword() == None; | |
| 148 } | |
| 149 | |
| 144 BasicShapeCenterCoordinate blend(const BasicShapeCenterCoordinate& other, do uble progress) const | 150 BasicShapeCenterCoordinate blend(const BasicShapeCenterCoordinate& other, do uble progress) const |
| 145 { | 151 { |
| 146 if (m_keyword != None || other.keyword() != None) | 152 if (m_keyword != None || other.keyword() != None) |
| 147 return BasicShapeCenterCoordinate(other); | 153 return BasicShapeCenterCoordinate(other); |
| 148 | 154 |
| 149 return BasicShapeCenterCoordinate(m_length.blend(other.length(), progres s, ValueRangeAll)); | 155 return BasicShapeCenterCoordinate(m_length.blend(other.length(), progres s, ValueRangeAll)); |
| 150 } | 156 } |
| 151 | 157 |
| 152 private: | 158 private: |
| 153 Keyword m_keyword; | 159 Keyword m_keyword; |
| 154 Length m_length; | 160 Length m_length; |
| 155 }; | 161 }; |
| 156 | 162 |
| 157 class BasicShapeRadius { | 163 class BasicShapeRadius { |
| 158 public: | 164 public: |
| 159 enum Type { | 165 enum Type { |
| 160 Value, | 166 Value, |
| 161 ClosestSide, | 167 ClosestSide, |
| 162 FarthestSide | 168 FarthestSide |
| 163 }; | 169 }; |
| 164 BasicShapeRadius() : m_value(Undefined), m_type(ClosestSide) { } | 170 BasicShapeRadius() : m_value(Undefined), m_type(ClosestSide) { } |
| 165 explicit BasicShapeRadius(Length v) : m_value(v), m_type(Value) { } | 171 explicit BasicShapeRadius(Length v) : m_value(v), m_type(Value) { } |
| 166 explicit BasicShapeRadius(Type t) : m_value(Undefined), m_type(t) { } | 172 explicit BasicShapeRadius(Type t) : m_value(Undefined), m_type(t) { } |
| 167 BasicShapeRadius(const BasicShapeRadius& other) : m_value(other.value()), m_ type(other.type()) { } | 173 BasicShapeRadius(const BasicShapeRadius& other) : m_value(other.value()), m_ type(other.type()) { } |
| 168 bool operator==(const BasicShapeRadius& other) const { return m_type == othe r.m_type && m_value == other.m_value; } | 174 bool operator==(const BasicShapeRadius& other) const { return m_type == othe r.m_type && m_value == other.m_value; } |
| 169 | 175 |
| 170 const Length& value() const { return m_value; } | 176 const Length& value() const { return m_value; } |
| 171 Type type() const { return m_type; } | 177 Type type() const { return m_type; } |
| 172 | 178 |
| 179 bool canBlend(const BasicShapeRadius& other) const | |
| 180 { | |
| 181 // FIXME determine how to interpolate between keywords. See bug 125108. | |
|
Bem Jones-Bey (adobe)
2013/12/19 23:08:48
Ditto.
| |
| 182 return m_type == Value && other.type() == Value; | |
| 183 } | |
| 184 | |
| 173 BasicShapeRadius blend(const BasicShapeRadius& other, double progress) const | 185 BasicShapeRadius blend(const BasicShapeRadius& other, double progress) const |
| 174 { | 186 { |
| 175 if (m_type != Value || other.type() != Value) | 187 if (m_type != Value || other.type() != Value) |
| 176 return BasicShapeRadius(other); | 188 return BasicShapeRadius(other); |
| 177 | 189 |
| 178 return BasicShapeRadius(m_value.blend(other.value(), progress, ValueRang eAll)); | 190 return BasicShapeRadius(m_value.blend(other.value(), progress, ValueRang eAll)); |
| 179 } | 191 } |
| 180 | 192 |
| 181 private: | 193 private: |
| 182 Length m_value; | 194 Length m_value; |
| 183 Type m_type; | 195 Type m_type; |
| 184 | 196 |
| 185 }; | 197 }; |
| 186 | 198 |
| 187 class BasicShapeCircle : public BasicShape { | 199 class BasicShapeCircle : public BasicShape { |
| 188 public: | 200 public: |
| 189 static PassRefPtr<BasicShapeCircle> create() { return adoptRef(new BasicShap eCircle); } | 201 static PassRefPtr<BasicShapeCircle> create() { return adoptRef(new BasicShap eCircle); } |
| 190 | 202 |
| 191 const BasicShapeCenterCoordinate& centerX() const { return m_centerX; } | 203 const BasicShapeCenterCoordinate& centerX() const { return m_centerX; } |
| 192 const BasicShapeCenterCoordinate& centerY() const { return m_centerY; } | 204 const BasicShapeCenterCoordinate& centerY() const { return m_centerY; } |
| 193 const BasicShapeRadius& radius() const { return m_radius; } | 205 const BasicShapeRadius& radius() const { return m_radius; } |
| 194 | 206 |
| 207 float floatValueForRadiusInBox(float boxWidth, float boxHeight) const; | |
| 195 void setCenterX(BasicShapeCenterCoordinate centerX) { m_centerX = centerX; } | 208 void setCenterX(BasicShapeCenterCoordinate centerX) { m_centerX = centerX; } |
| 196 void setCenterY(BasicShapeCenterCoordinate centerY) { m_centerY = centerY; } | 209 void setCenterY(BasicShapeCenterCoordinate centerY) { m_centerY = centerY; } |
| 197 void setRadius(BasicShapeRadius radius) { m_radius = radius; } | 210 void setRadius(BasicShapeRadius radius) { m_radius = radius; } |
| 198 | 211 |
| 199 virtual void path(Path&, const FloatRect&) OVERRIDE; | 212 virtual void path(Path&, const FloatRect&) OVERRIDE; |
| 200 virtual PassRefPtr<BasicShape> blend(const BasicShape*, double) const OVERRI DE; | 213 virtual PassRefPtr<BasicShape> blend(const BasicShape*, double) const OVERRI DE; |
| 201 virtual bool operator==(const BasicShape&) const OVERRIDE; | 214 virtual bool operator==(const BasicShape&) const OVERRIDE; |
| 202 | 215 |
| 203 virtual Type type() const { return BasicShapeCircleType; } | 216 virtual Type type() const { return BasicShapeCircleType; } |
| 204 private: | 217 private: |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 334 Length m_bottom; | 347 Length m_bottom; |
| 335 Length m_left; | 348 Length m_left; |
| 336 Length m_cornerRadiusX; | 349 Length m_cornerRadiusX; |
| 337 Length m_cornerRadiusY; | 350 Length m_cornerRadiusY; |
| 338 }; | 351 }; |
| 339 | 352 |
| 340 DEFINE_BASICSHAPE_TYPE_CASTS(BasicShapeInsetRectangle); | 353 DEFINE_BASICSHAPE_TYPE_CASTS(BasicShapeInsetRectangle); |
| 341 | 354 |
| 342 } | 355 } |
| 343 #endif | 356 #endif |
| OLD | NEW |