namespace WebCore {
-class CSSBasicShape : public RefCounted<CSSBasicShape> {
+class CSSBasicShape : public RefCountedWillBeGarbageCollected<CSSBasicShape> {
+ DECLARE_EMPTY_VIRTUAL_DESTRUCTOR_WILL_BE_REMOVED(CSSBasicShape);
public:
enum Type {
- CSSBasicShapeRectangleType = 1,
- CSSBasicShapeCircleType = 2,
- CSSBasicShapeEllipseType = 3,
- CSSBasicShapePolygonType = 4,
- CSSBasicShapeInsetRectangleType = 5
+ CSSBasicShapeEllipseType,
+ CSSBasicShapePolygonType,
+ CSSBasicShapeCircleType,
+ CSSBasicShapeInsetType
};
virtual Type type() const = 0;
virtual String cssText() const = 0;
virtual bool equals(const CSSBasicShape&) const = 0;
- virtual String serializeResolvingVariables(const HashMap<AtomicString, String>&) const = 0;
- virtual bool hasVariableReference() const = 0;
+ CSSPrimitiveValue* referenceBox() const { return m_referenceBox.get(); }
+ void setReferenceBox(PassRefPtrWillBeRawPtr<CSSPrimitiveValue> referenceBox) { m_referenceBox = referenceBox; }
-public:
- virtual ~CSSBasicShape() { }
+ virtual void trace(Visitor* visitor) { visitor->trace(m_referenceBox); }
protected:
CSSBasicShape() { }
+ RefPtrWillBeMember<CSSPrimitiveValue> m_referenceBox;
};
-class CSSBasicShapeRectangle : public CSSBasicShape {
+class CSSBasicShapeCircle FINAL : public CSSBasicShape {
public:
- static PassRefPtr<CSSBasicShapeRectangle> create() { return adoptRef(new CSSBasicShapeRectangle); }
-
- CSSPrimitiveValue* x() const { return m_x.get(); }
- CSSPrimitiveValue* y() const { return m_y.get(); }
- CSSPrimitiveValue* width() const { return m_width.get(); }
- CSSPrimitiveValue* height() const { return m_height.get(); }
- CSSPrimitiveValue* radiusX() const { return m_radiusX.get(); }
- CSSPrimitiveValue* radiusY() const { return m_radiusY.get(); }
-
- void setX(PassRefPtr<CSSPrimitiveValue> x) { m_x = x; }
- void setY(PassRefPtr<CSSPrimitiveValue> y) { m_y = y; }
- void setWidth(PassRefPtr<CSSPrimitiveValue> width) { m_width = width; }
- void setHeight(PassRefPtr<CSSPrimitiveValue> height) { m_height = height; }
- void setRadiusX(PassRefPtr<CSSPrimitiveValue> radiusX) { m_radiusX = radiusX; }
- void setRadiusY(PassRefPtr<CSSPrimitiveValue> radiusY) { m_radiusY = radiusY; }
-
- virtual Type type() const { return CSSBasicShapeRectangleType; }
- virtual String cssText() const;
- virtual bool equals(const CSSBasicShape&) const;
-
- virtual String serializeResolvingVariables(const HashMap<AtomicString, String>&) const;
- virtual bool hasVariableReference() const;
-
-private:
- CSSBasicShapeRectangle() { }
-
- RefPtr<CSSPrimitiveValue> m_y;
- RefPtr<CSSPrimitiveValue> m_x;
- RefPtr<CSSPrimitiveValue> m_width;
- RefPtr<CSSPrimitiveValue> m_height;
- RefPtr<CSSPrimitiveValue> m_radiusX;
- RefPtr<CSSPrimitiveValue> m_radiusY;
-};
-
-class CSSBasicShapeInsetRectangle : public CSSBasicShape {
-public:
- static PassRefPtr<CSSBasicShapeInsetRectangle> create() { return adoptRef(new CSSBasicShapeInsetRectangle); }
-
- CSSPrimitiveValue* top() const { return m_top.get(); }
- CSSPrimitiveValue* right() const { return m_right.get(); }
- CSSPrimitiveValue* bottom() const { return m_bottom.get(); }
- CSSPrimitiveValue* left() const { return m_left.get(); }
- CSSPrimitiveValue* radiusX() const { return m_radiusX.get(); }
- CSSPrimitiveValue* radiusY() const { return m_radiusY.get(); }
+ static PassRefPtrWillBeRawPtr<CSSBasicShapeCircle> create() { return adoptRefWillBeNoop(new CSSBasicShapeCircle); }
- void setTop(PassRefPtr<CSSPrimitiveValue> top) { m_top = top; }
- void setRight(PassRefPtr<CSSPrimitiveValue> right) { m_right = right; }
- void setBottom(PassRefPtr<CSSPrimitiveValue> bottom) { m_bottom = bottom; }
- void setLeft(PassRefPtr<CSSPrimitiveValue> left) { m_left = left; }
- void setRadiusX(PassRefPtr<CSSPrimitiveValue> radiusX) { m_radiusX = radiusX; }
- void setRadiusY(PassRefPtr<CSSPrimitiveValue> radiusY) { m_radiusY = radiusY; }
-
- virtual Type type() const { return CSSBasicShapeInsetRectangleType; }
- virtual String cssText() const;
- virtual bool equals(const CSSBasicShape&) const;
-
- virtual String serializeResolvingVariables(const HashMap<AtomicString, String>&) const;
- virtual bool hasVariableReference() const;
-
-private:
- CSSBasicShapeInsetRectangle() { }
-
- RefPtr<CSSPrimitiveValue> m_right;
- RefPtr<CSSPrimitiveValue> m_top;
- RefPtr<CSSPrimitiveValue> m_bottom;
- RefPtr<CSSPrimitiveValue> m_left;
- RefPtr<CSSPrimitiveValue> m_radiusX;
- RefPtr<CSSPrimitiveValue> m_radiusY;
-};
-
-class CSSBasicShapeCircle : public CSSBasicShape {
-public:
- static PassRefPtr<CSSBasicShapeCircle> create() { return adoptRef(new CSSBasicShapeCircle); }
+ virtual Type type() const OVERRIDE { return CSSBasicShapeCircleType; }
+ virtual String cssText() const OVERRIDE;
+ virtual bool equals(const CSSBasicShape&) const OVERRIDE;
CSSPrimitiveValue* centerX() const { return m_centerX.get(); }
CSSPrimitiveValue* centerY() const { return m_centerY.get(); }
CSSPrimitiveValue* radius() const { return m_radius.get(); }
- void setCenterX(PassRefPtr<CSSPrimitiveValue> centerX) { m_centerX = centerX; }
- void setCenterY(PassRefPtr<CSSPrimitiveValue> centerY) { m_centerY = centerY; }
- void setRadius(PassRefPtr<CSSPrimitiveValue> radius) { m_radius = radius; }
-
- virtual Type type() const { return CSSBasicShapeCircleType; }
- virtual String cssText() const;
- virtual bool equals(const CSSBasicShape&) const;
+ void setCenterX(PassRefPtrWillBeRawPtr<CSSPrimitiveValue> centerX) { m_centerX = centerX; }
+ void setCenterY(PassRefPtrWillBeRawPtr<CSSPrimitiveValue> centerY) { m_centerY = centerY; }
+ void setRadius(PassRefPtrWillBeRawPtr<CSSPrimitiveValue> radius) { m_radius = radius; }
- virtual String serializeResolvingVariables(const HashMap<AtomicString, String>&) const;
- virtual bool hasVariableReference() const;
+ virtual void trace(Visitor*);
private:
CSSBasicShapeCircle() { }
- RefPtr<CSSPrimitiveValue> m_centerY;
- RefPtr<CSSPrimitiveValue> m_centerX;
- RefPtr<CSSPrimitiveValue> m_radius;
+ RefPtrWillBeMember<CSSPrimitiveValue> m_centerX;
+ RefPtrWillBeMember<CSSPrimitiveValue> m_centerY;
+ RefPtrWillBeMember<CSSPrimitiveValue> m_radius;
};
-class CSSBasicShapeEllipse : public CSSBasicShape {
+class CSSBasicShapeEllipse FINAL : public CSSBasicShape {
public:
- static PassRefPtr<CSSBasicShapeEllipse> create() { return adoptRef(new CSSBasicShapeEllipse); }
+ static PassRefPtrWillBeRawPtr<CSSBasicShapeEllipse> create() { return adoptRefWillBeNoop(new CSSBasicShapeEllipse); }
+
+ virtual Type type() const OVERRIDE { return CSSBasicShapeEllipseType; }
+ virtual String cssText() const OVERRIDE;
+ virtual bool equals(const CSSBasicShape&) const OVERRIDE;
CSSPrimitiveValue* centerX() const { return m_centerX.get(); }
CSSPrimitiveValue* centerY() const { return m_centerY.get(); }
CSSPrimitiveValue* radiusX() const { return m_radiusX.get(); }
CSSPrimitiveValue* radiusY() const { return m_radiusY.get(); }
- void setCenterX(PassRefPtr<CSSPrimitiveValue> centerX) { m_centerX = centerX; }
- void setCenterY(PassRefPtr<CSSPrimitiveValue> centerY) { m_centerY = centerY; }
- void setRadiusX(PassRefPtr<CSSPrimitiveValue> radiusX) { m_radiusX = radiusX; }
- void setRadiusY(PassRefPtr<CSSPrimitiveValue> radiusY) { m_radiusY = radiusY; }
-
- virtual Type type() const { return CSSBasicShapeEllipseType; }
- virtual String cssText() const;
- virtual bool equals(const CSSBasicShape&) const;
+ void setCenterX(PassRefPtrWillBeRawPtr<CSSPrimitiveValue> centerX) { m_centerX = centerX; }
+ void setCenterY(PassRefPtrWillBeRawPtr<CSSPrimitiveValue> centerY) { m_centerY = centerY; }
+ void setRadiusX(PassRefPtrWillBeRawPtr<CSSPrimitiveValue> radiusX) { m_radiusX = radiusX; }
+ void setRadiusY(PassRefPtrWillBeRawPtr<CSSPrimitiveValue> radiusY) { m_radiusY = radiusY; }
- virtual String serializeResolvingVariables(const HashMap<AtomicString, String>&) const;
- virtual bool hasVariableReference() const;
+ virtual void trace(Visitor*);
private:
CSSBasicShapeEllipse() { }
- RefPtr<CSSPrimitiveValue> m_centerX;
- RefPtr<CSSPrimitiveValue> m_centerY;
- RefPtr<CSSPrimitiveValue> m_radiusX;
- RefPtr<CSSPrimitiveValue> m_radiusY;
+ RefPtrWillBeMember<CSSPrimitiveValue> m_centerX;
+ RefPtrWillBeMember<CSSPrimitiveValue> m_centerY;
+ RefPtrWillBeMember<CSSPrimitiveValue> m_radiusX;
+ RefPtrWillBeMember<CSSPrimitiveValue> m_radiusY;
};
-class CSSBasicShapePolygon : public CSSBasicShape {
+class CSSBasicShapePolygon FINAL : public CSSBasicShape {
public:
- static PassRefPtr<CSSBasicShapePolygon> create() { return adoptRef(new CSSBasicShapePolygon); }
+ static PassRefPtrWillBeRawPtr<CSSBasicShapePolygon> create() { return adoptRefWillBeNoop(new CSSBasicShapePolygon); }
- void appendPoint(PassRefPtr<CSSPrimitiveValue> x, PassRefPtr<CSSPrimitiveValue> y)
+ void appendPoint(PassRefPtrWillBeRawPtr<CSSPrimitiveValue> x, PassRefPtrWillBeRawPtr<CSSPrimitiveValue> y)
{
m_values.append(x);
m_values.append(y);
}
- PassRefPtr<CSSPrimitiveValue> getXAt(unsigned i) const { return m_values.at(i * 2); }
- PassRefPtr<CSSPrimitiveValue> getYAt(unsigned i) const { return m_values.at(i * 2 + 1); }
- const Vector<RefPtr<CSSPrimitiveValue> >& values() const { return m_values; }
+ PassRefPtrWillBeRawPtr<CSSPrimitiveValue> getXAt(unsigned i) const { return m_values.at(i * 2); }
+ PassRefPtrWillBeRawPtr<CSSPrimitiveValue> getYAt(unsigned i) const { return m_values.at(i * 2 + 1); }
+ const WillBeHeapVector<RefPtrWillBeMember<CSSPrimitiveValue> >& values() const { return m_values; }
void setWindRule(WindRule w) { m_windRule = w; }
WindRule windRule() const { return m_windRule; }
- virtual Type type() const { return CSSBasicShapePolygonType; }
- virtual String cssText() const;
- virtual bool equals(const CSSBasicShape&) const;
- virtual String serializeResolvingVariables(const HashMap<AtomicString, String>&) const;
- virtual bool hasVariableReference() const;
+ virtual Type type() const OVERRIDE { return CSSBasicShapePolygonType; }
+ virtual String cssText() const OVERRIDE;
+ virtual bool equals(const CSSBasicShape&) const OVERRIDE;
+
+ virtual void trace(Visitor*);
private:
CSSBasicShapePolygon()
{
}
- Vector<RefPtr<CSSPrimitiveValue> > m_values;
+ WillBeHeapVector<RefPtrWillBeMember<CSSPrimitiveValue> > m_values;
WindRule m_windRule;
};
+class CSSBasicShapeInset : public CSSBasicShape {
+public:
+ static PassRefPtrWillBeRawPtr<CSSBasicShapeInset> create() { return adoptRefWillBeNoop(new CSSBasicShapeInset); }
+
+ CSSPrimitiveValue* top() const { return m_top.get(); }
+ CSSPrimitiveValue* right() const { return m_right.get(); }
+ CSSPrimitiveValue* bottom() const { return m_bottom.get(); }
+ CSSPrimitiveValue* left() const { return m_left.get(); }
+
+ CSSPrimitiveValue* topLeftRadius() const { return m_topLeftRadius.get(); }
+ CSSPrimitiveValue* topRightRadius() const { return m_topRightRadius.get(); }
+ CSSPrimitiveValue* bottomRightRadius() const { return m_bottomRightRadius.get(); }
+ CSSPrimitiveValue* bottomLeftRadius() const { return m_bottomLeftRadius.get(); }
+
+ void setTop(PassRefPtrWillBeRawPtr<CSSPrimitiveValue> top) { m_top = top; }
+ void setRight(PassRefPtrWillBeRawPtr<CSSPrimitiveValue> right) { m_right = right; }
+ void setBottom(PassRefPtrWillBeRawPtr<CSSPrimitiveValue> bottom) { m_bottom = bottom; }
+ void setLeft(PassRefPtrWillBeRawPtr<CSSPrimitiveValue> left) { m_left = left; }
+
+ void updateShapeSize4Values(CSSPrimitiveValue* top, CSSPrimitiveValue* right, CSSPrimitiveValue* bottom, CSSPrimitiveValue* left)
+ {
+ setTop(top);
+ setRight(right);
+ setBottom(bottom);
+ setLeft(left);
+ }
+
+ void updateShapeSize1Value(CSSPrimitiveValue* value1)
+ {
+ updateShapeSize4Values(value1, value1, value1, value1);
+ }
+
+ void updateShapeSize2Values(CSSPrimitiveValue* value1, CSSPrimitiveValue* value2)
+ {
+ updateShapeSize4Values(value1, value2, value1, value2);
+ }
+
+ void updateShapeSize3Values(CSSPrimitiveValue* value1, CSSPrimitiveValue* value2, CSSPrimitiveValue* value3)
+ {
+ updateShapeSize4Values(value1, value2, value3, value2);
+ }
+
+
+ void setTopLeftRadius(PassRefPtrWillBeRawPtr<CSSPrimitiveValue> radius) { m_topLeftRadius = radius; }
+ void setTopRightRadius(PassRefPtrWillBeRawPtr<CSSPrimitiveValue> radius) { m_topRightRadius = radius; }
+ void setBottomRightRadius(PassRefPtrWillBeRawPtr<CSSPrimitiveValue> radius) { m_bottomRightRadius = radius; }
+ void setBottomLeftRadius(PassRefPtrWillBeRawPtr<CSSPrimitiveValue> radius) { m_bottomLeftRadius = radius; }
+
+ virtual Type type() const OVERRIDE { return CSSBasicShapeInsetType; }
+ virtual String cssText() const OVERRIDE;
+ virtual bool equals(const CSSBasicShape&) const OVERRIDE;
+
+ virtual void trace(Visitor*);
+
+private:
+ CSSBasicShapeInset() { }
+
+ RefPtrWillBeMember<CSSPrimitiveValue> m_top;
+ RefPtrWillBeMember<CSSPrimitiveValue> m_right;
+ RefPtrWillBeMember<CSSPrimitiveValue> m_bottom;
+ RefPtrWillBeMember<CSSPrimitiveValue> m_left;
+
+ RefPtrWillBeMember<CSSPrimitiveValue> m_topLeftRadius;
+ RefPtrWillBeMember<CSSPrimitiveValue> m_topRightRadius;
+ RefPtrWillBeMember<CSSPrimitiveValue> m_bottomRightRadius;
+ RefPtrWillBeMember<CSSPrimitiveValue> m_bottomLeftRadius;
+};
+
} // namespace WebCore
#endif // CSSBasicShapes_h