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

Unified Diff: Source/core/css/CSSBasicShapes.cpp

Issue 1225553002: CSSValue Immediates: Make CSSPrimitiveValue a container (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@cssvalue_patch_1
Patch Set: Rebase Created 5 years, 5 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
« no previous file with comments | « Source/core/css/CSSBasicShapes.h ('k') | Source/core/css/CSSBorderImageSliceValue.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/css/CSSBasicShapes.cpp
diff --git a/Source/core/css/CSSBasicShapes.cpp b/Source/core/css/CSSBasicShapes.cpp
index 6b8eac31794a17660a6bd045662465ce7bc57cf4..8af835b6039e250a0593a722076f1d80a18c641a 100644
--- a/Source/core/css/CSSBasicShapes.cpp
+++ b/Source/core/css/CSSBasicShapes.cpp
@@ -69,23 +69,23 @@ static String buildCircleString(const String& radius, const String& centerX, con
static String serializePositionOffset(const Pair& offset, const Pair& other)
{
- if ((offset.first()->getValueID() == CSSValueLeft && other.first()->getValueID() == CSSValueTop)
- || (offset.first()->getValueID() == CSSValueTop && other.first()->getValueID() == CSSValueLeft))
+ if ((toCSSPrimitiveValue(*offset.first()).getValueID() == CSSValueLeft && toCSSPrimitiveValue(*other.first()).getValueID() == CSSValueTop)
+ || (toCSSPrimitiveValue(*offset.first()).getValueID() == CSSValueTop && toCSSPrimitiveValue(*other.first()).getValueID() == CSSValueLeft))
return offset.second()->cssText();
return offset.cssText();
}
-static PassRefPtrWillBeRawPtr<CSSPrimitiveValue> buildSerializablePositionOffset(PassRefPtrWillBeRawPtr<CSSPrimitiveValue> offset, CSSValueID defaultSide)
+static CSSPrimitiveValue buildSerializablePositionOffset(NullableCSSValue offset, CSSValueID defaultSide)
{
CSSValueID side = defaultSide;
- RefPtrWillBeRawPtr<CSSPrimitiveValue> amount = nullptr;
+ NullableCSSValue amount;
if (!offset) {
side = CSSValueCenter;
- } else if (offset->isValueID()) {
- side = offset->getValueID();
- } else if (Pair* pair = offset->getPairValue()) {
- side = pair->first()->getValueID();
+ } else if (toCSSPrimitiveValue(*offset).isValueID()) {
+ side = toCSSPrimitiveValue(*offset).getValueID();
+ } else if (Pair* pair = toCSSPrimitiveValue(*offset).getPairValue()) {
+ side = toCSSPrimitiveValue(*pair->first()).getValueID();
amount = pair->second();
} else {
amount = offset;
@@ -95,10 +95,10 @@ static PassRefPtrWillBeRawPtr<CSSPrimitiveValue> buildSerializablePositionOffset
side = defaultSide;
amount = cssValuePool().createValue(50, CSSPrimitiveValue::CSS_PERCENTAGE);
} else if ((side == CSSValueRight || side == CSSValueBottom)
- && amount->isPercentage()) {
+ && toCSSPrimitiveValue(*amount).isPercentage()) {
side = defaultSide;
- amount = cssValuePool().createValue(100 - amount->getFloatValue(), CSSPrimitiveValue::CSS_PERCENTAGE);
- } else if (amount->isLength() && !amount->getFloatValue()) {
+ amount = cssValuePool().createValue(100 - toCSSPrimitiveValue(*amount).getFloatValue(), CSSPrimitiveValue::CSS_PERCENTAGE);
+ } else if (toCSSPrimitiveValue(*amount).isLength() && !toCSSPrimitiveValue(*amount).getFloatValue()) {
if (side == CSSValueRight || side == CSSValueBottom)
amount = cssValuePool().createValue(100, CSSPrimitiveValue::CSS_PERCENTAGE);
else
@@ -106,21 +106,21 @@ static PassRefPtrWillBeRawPtr<CSSPrimitiveValue> buildSerializablePositionOffset
side = defaultSide;
}
- return cssValuePool().createValue(Pair::create(cssValuePool().createValue(side), amount.release(), Pair::KeepIdenticalValues));
+ return cssValuePool().createValue(Pair::create(cssValuePool().createValue(side), toCSSPrimitiveValue(*amount), Pair::KeepIdenticalValues));
}
String CSSBasicShapeCircle::cssText() const
{
- RefPtrWillBeRawPtr<CSSPrimitiveValue> normalizedCX = buildSerializablePositionOffset(m_centerX, CSSValueLeft);
- RefPtrWillBeRawPtr<CSSPrimitiveValue> normalizedCY = buildSerializablePositionOffset(m_centerY, CSSValueTop);
+ CSSPrimitiveValue normalizedCX = buildSerializablePositionOffset(m_centerX, CSSValueLeft);
+ CSSPrimitiveValue normalizedCY = buildSerializablePositionOffset(m_centerY, CSSValueTop);
String radius;
- if (m_radius && m_radius->getValueID() != CSSValueClosestSide)
+ if (m_radius && toCSSPrimitiveValue(*m_radius).getValueID() != CSSValueClosestSide)
radius = m_radius->cssText();
return buildCircleString(radius,
- serializePositionOffset(*normalizedCX->getPairValue(), *normalizedCY->getPairValue()),
- serializePositionOffset(*normalizedCY->getPairValue(), *normalizedCX->getPairValue()),
+ serializePositionOffset(*normalizedCX.getPairValue(), *normalizedCY.getPairValue()),
+ serializePositionOffset(*normalizedCY.getPairValue(), *normalizedCX.getPairValue()),
m_referenceBox ? m_referenceBox->cssText() : String());
}
@@ -130,10 +130,10 @@ bool CSSBasicShapeCircle::equals(const CSSBasicShape& shape) const
return false;
const CSSBasicShapeCircle& other = toCSSBasicShapeCircle(shape);
- return compareCSSValuePtr(m_centerX, other.m_centerX)
- && compareCSSValuePtr(m_centerY, other.m_centerY)
- && compareCSSValuePtr(m_radius, other.m_radius)
- && compareCSSValuePtr(m_referenceBox, other.m_referenceBox);
+ return m_centerX == other.m_centerX
+ && m_centerY == other.m_centerY
+ && m_radius == other.m_radius
+ && m_referenceBox == other.m_referenceBox;
}
DEFINE_TRACE(CSSBasicShapeCircle)
@@ -181,17 +181,17 @@ static String buildEllipseString(const String& radiusX, const String& radiusY, c
String CSSBasicShapeEllipse::cssText() const
{
- RefPtrWillBeRawPtr<CSSPrimitiveValue> normalizedCX = buildSerializablePositionOffset(m_centerX, CSSValueLeft);
- RefPtrWillBeRawPtr<CSSPrimitiveValue> normalizedCY = buildSerializablePositionOffset(m_centerY, CSSValueTop);
+ CSSPrimitiveValue normalizedCX = buildSerializablePositionOffset(m_centerX, CSSValueLeft);
+ CSSPrimitiveValue normalizedCY = buildSerializablePositionOffset(m_centerY, CSSValueTop);
String radiusX;
String radiusY;
if (m_radiusX) {
- bool shouldSerializeRadiusXValue = m_radiusX->getValueID() != CSSValueClosestSide;
+ bool shouldSerializeRadiusXValue = toCSSPrimitiveValue(*m_radiusX).getValueID() != CSSValueClosestSide;
bool shouldSerializeRadiusYValue = false;
if (m_radiusY) {
- shouldSerializeRadiusYValue = m_radiusY->getValueID() != CSSValueClosestSide;
+ shouldSerializeRadiusYValue = toCSSPrimitiveValue(*m_radiusY).getValueID() != CSSValueClosestSide;
if (shouldSerializeRadiusYValue)
radiusY = m_radiusY->cssText();
}
@@ -200,8 +200,8 @@ String CSSBasicShapeEllipse::cssText() const
}
return buildEllipseString(radiusX, radiusY,
- serializePositionOffset(*normalizedCX->getPairValue(), *normalizedCY->getPairValue()),
- serializePositionOffset(*normalizedCY->getPairValue(), *normalizedCX->getPairValue()),
+ serializePositionOffset(*normalizedCX.getPairValue(), *normalizedCY.getPairValue()),
+ serializePositionOffset(*normalizedCY.getPairValue(), *normalizedCX.getPairValue()),
m_referenceBox ? m_referenceBox->cssText() : String());
}
@@ -211,11 +211,11 @@ bool CSSBasicShapeEllipse::equals(const CSSBasicShape& shape) const
return false;
const CSSBasicShapeEllipse& other = toCSSBasicShapeEllipse(shape);
- return compareCSSValuePtr(m_centerX, other.m_centerX)
- && compareCSSValuePtr(m_centerY, other.m_centerY)
- && compareCSSValuePtr(m_radiusX, other.m_radiusX)
- && compareCSSValuePtr(m_radiusY, other.m_radiusY)
- && compareCSSValuePtr(m_referenceBox, other.m_referenceBox);
+ return m_centerX == other.m_centerX
+ && m_centerY == other.m_centerY
+ && m_radiusX == other.m_radiusX
+ && m_radiusY == other.m_radiusY
+ && m_referenceBox == other.m_referenceBox;
}
DEFINE_TRACE(CSSBasicShapeEllipse)
@@ -278,7 +278,7 @@ String CSSBasicShapePolygon::cssText() const
points.reserveInitialCapacity(m_values.size());
for (size_t i = 0; i < m_values.size(); ++i)
- points.append(m_values.at(i)->cssText());
+ points.append(m_values.at(i).cssText());
return buildPolygonString(m_windRule, points, m_referenceBox ? m_referenceBox->cssText() : String());
}
@@ -290,10 +290,10 @@ bool CSSBasicShapePolygon::equals(const CSSBasicShape& shape) const
const CSSBasicShapePolygon& rhs = toCSSBasicShapePolygon(shape);
- if (!compareCSSValuePtr(m_referenceBox, rhs.m_referenceBox))
+ if (m_referenceBox != rhs.m_referenceBox)
return false;
- return compareCSSValueObjectVector(m_values, rhs.m_values);
+ return compareCSSValueVector(m_values, rhs.m_values);
}
DEFINE_TRACE(CSSBasicShapePolygon)
@@ -378,12 +378,12 @@ static String buildInsetString(const String& top, const String& right, const Str
return result.toString();
}
-static inline void updateCornerRadiusWidthAndHeight(CSSPrimitiveValue* corner, String& width, String& height)
+static inline void updateCornerRadiusWidthAndHeight(NullableCSSValue corner, String& width, String& height)
{
if (!corner)
return;
- Pair* radius = corner->getPairValue();
+ Pair* radius = toCSSPrimitiveValue(*corner).getPairValue();
width = radius->first() ? radius->first()->cssText() : String("0");
if (radius->second())
height = radius->second()->cssText();
@@ -425,14 +425,14 @@ bool CSSBasicShapeInset::equals(const CSSBasicShape& shape) const
return false;
const CSSBasicShapeInset& other = toCSSBasicShapeInset(shape);
- return compareCSSValuePtr(m_top, other.m_top)
- && compareCSSValuePtr(m_right, other.m_right)
- && compareCSSValuePtr(m_bottom, other.m_bottom)
- && compareCSSValuePtr(m_left, other.m_left)
- && compareCSSValuePtr(m_topLeftRadius, other.m_topLeftRadius)
- && compareCSSValuePtr(m_topRightRadius, other.m_topRightRadius)
- && compareCSSValuePtr(m_bottomRightRadius, other.m_bottomRightRadius)
- && compareCSSValuePtr(m_bottomLeftRadius, other.m_bottomLeftRadius);
+ return m_top == other.m_top
+ && m_right == other.m_right
+ && m_bottom == other.m_bottom
+ && m_left == other.m_left
+ && m_topLeftRadius == other.m_topLeftRadius
+ && m_topRightRadius == other.m_topRightRadius
+ && m_bottomRightRadius == other.m_bottomRightRadius
+ && m_bottomLeftRadius == other.m_bottomLeftRadius;
}
DEFINE_TRACE(CSSBasicShapeInset)
« no previous file with comments | « Source/core/css/CSSBasicShapes.h ('k') | Source/core/css/CSSBorderImageSliceValue.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698