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

Unified Diff: Source/core/rendering/style/BasicShapes.h

Issue 144373002: [CSS Shapes] Basic shapes' computed position should be a horizontal and vertical offset (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Try to fix tests Created 6 years, 11 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 side-by-side diff with in-line comments
Download patch
Index: Source/core/rendering/style/BasicShapes.h
diff --git a/Source/core/rendering/style/BasicShapes.h b/Source/core/rendering/style/BasicShapes.h
index 088f8f5d79e9c1bd2e2606f125902b0ac413a5cf..56356f92ac3c26f780102b65dd1dcc2757f085e5 100644
--- a/Source/core/rendering/style/BasicShapes.h
+++ b/Source/core/rendering/style/BasicShapes.h
@@ -87,12 +87,12 @@ class BasicShapeRectangle FINAL : public BasicShape {
public:
static PassRefPtr<BasicShapeRectangle> create() { return adoptRef(new BasicShapeRectangle); }
- Length x() const { return m_x; }
- Length y() const { return m_y; }
- Length width() const { return m_width; }
- Length height() const { return m_height; }
- Length cornerRadiusX() const { return m_cornerRadiusX; }
- Length cornerRadiusY() const { return m_cornerRadiusY; }
+ const Length& x() const { return m_x; }
Bear Travis 2014/01/23 22:04:42 Is this change necessary to this patch? It feels l
+ const Length& y() const { return m_y; }
+ const Length& width() const { return m_width; }
+ const Length& height() const { return m_height; }
+ const Length& cornerRadiusX() const { return m_cornerRadiusX; }
+ const Length& cornerRadiusY() const { return m_cornerRadiusY; }
void setX(Length x) { m_x = x; }
void setY(Length y) { m_y = y; }
@@ -127,39 +127,48 @@ DEFINE_BASICSHAPE_TYPE_CASTS(BasicShapeRectangle);
class BasicShapeCenterCoordinate {
public:
- enum Keyword {
- None,
- Top,
- Right,
- Bottom,
- Left
+ enum Direction {
+ TopLeft,
+ BottomRight
};
- BasicShapeCenterCoordinate() : m_keyword(None), m_length(Undefined) { }
- explicit BasicShapeCenterCoordinate(Length length) : m_keyword(None), m_length(length) { }
- BasicShapeCenterCoordinate(Keyword keyword, Length length) : m_keyword(keyword), m_length(length) { }
- BasicShapeCenterCoordinate(const BasicShapeCenterCoordinate& other) : m_keyword(other.keyword()), m_length(other.length()) { }
- bool operator==(const BasicShapeCenterCoordinate& other) const { return m_keyword == other.m_keyword && m_length == other.m_length; }
+ BasicShapeCenterCoordinate()
+ : m_direction(TopLeft)
+ , m_length(Undefined)
+ {
+ updateComputedLength();
+ }
- Keyword keyword() const { return m_keyword; }
- const Length& length() const { return m_length; }
+ BasicShapeCenterCoordinate(Direction direction, Length length)
+ : m_direction(direction)
+ , m_length(length)
+ {
+ updateComputedLength();
+ }
- bool canBlend(const BasicShapeCenterCoordinate& other) const
+ BasicShapeCenterCoordinate(const BasicShapeCenterCoordinate& other)
+ : m_direction(other.direction())
+ , m_length(other.length())
+ , m_computedLength(other.m_computedLength)
{
- // FIXME determine how to interpolate between keywords. See issue 330248.
- return m_keyword == None && other.keyword() == None;
}
+ bool operator==(const BasicShapeCenterCoordinate& other) const { return m_direction == other.m_direction && m_length == other.m_length && m_computedLength == other.m_computedLength; }
+
+ Direction direction() const { return m_direction; }
+ const Length& length() const { return m_length; }
+ const Length& computedLength() const { return m_computedLength; }
+
BasicShapeCenterCoordinate blend(const BasicShapeCenterCoordinate& other, double progress) const
{
- if (m_keyword != None || other.keyword() != None)
- return BasicShapeCenterCoordinate(other);
-
- return BasicShapeCenterCoordinate(m_length.blend(other.length(), progress, ValueRangeAll));
+ return BasicShapeCenterCoordinate(TopLeft, m_computedLength.blend(other.m_computedLength, progress, ValueRangeAll));
}
private:
- Keyword m_keyword;
+ Direction m_direction;
Length m_length;
+ Length m_computedLength;
+
+ void updateComputedLength();
};
class BasicShapeRadius {
@@ -230,9 +239,9 @@ class DeprecatedBasicShapeCircle FINAL : public BasicShape {
public:
static PassRefPtr<DeprecatedBasicShapeCircle> create() { return adoptRef(new DeprecatedBasicShapeCircle); }
- Length centerX() const { return m_centerX; }
- Length centerY() const { return m_centerY; }
- Length radius() const { return m_radius; }
+ const Length& centerX() const { return m_centerX; }
+ const Length& centerY() const { return m_centerY; }
+ const Length& radius() const { return m_radius; }
void setCenterX(Length centerX) { m_centerX = centerX; }
void setCenterY(Length centerY) { m_centerY = centerY; }
@@ -347,12 +356,12 @@ class BasicShapeInsetRectangle FINAL : public BasicShape {
public:
static PassRefPtr<BasicShapeInsetRectangle> create() { return adoptRef(new BasicShapeInsetRectangle); }
- Length top() const { return m_top; }
- Length right() const { return m_right; }
- Length bottom() const { return m_bottom; }
- Length left() const { return m_left; }
- Length cornerRadiusX() const { return m_cornerRadiusX; }
- Length cornerRadiusY() const { return m_cornerRadiusY; }
+ const Length& top() const { return m_top; }
+ const Length& right() const { return m_right; }
+ const Length& bottom() const { return m_bottom; }
+ const Length& left() const { return m_left; }
+ const Length& cornerRadiusX() const { return m_cornerRadiusX; }
+ const Length& cornerRadiusY() const { return m_cornerRadiusY; }
void setTop(Length top) { m_top = top; }
void setRight(Length right) { m_right = right; }

Powered by Google App Engine
This is Rietveld 408576698