15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/* 25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2011 Adobe Systems Incorporated. All rights reserved. 35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Redistribution and use in source and binary forms, with or without 55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * modification, are permitted provided that the following conditions 65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * are met: 75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 1. Redistributions of source code must retain the above 95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * copyright notice, this list of conditions and the following 105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * disclaimer. 115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 2. Redistributions in binary form must reproduce the above 125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * copyright notice, this list of conditions and the following 135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * disclaimer in the documentation and/or other materials 145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * provided with the distribution. 155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY 175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR 255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * SUCH DAMAGE. 285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef CSSBasicShapes_h 315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define CSSBasicShapes_h 325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/css/CSSPrimitiveValue.h" 34e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)#include "platform/graphics/GraphicsTypes.h" 35e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch#include "wtf/RefPtr.h" 36e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch#include "wtf/Vector.h" 37e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch#include "wtf/text/WTFString.h" 385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 39c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink { 405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 41d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)class CSSBasicShape : public RefCountedWillBeGarbageCollected<CSSBasicShape> { 42d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) DECLARE_EMPTY_VIRTUAL_DESTRUCTOR_WILL_BE_REMOVED(CSSBasicShape); 435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)public: 445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) enum Type { 4509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) CSSBasicShapeEllipseType, 4609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) CSSBasicShapePolygonType, 4709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) CSSBasicShapeCircleType, 4809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) CSSBasicShapeInsetType 495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) virtual Type type() const = 0; 525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) virtual String cssText() const = 0; 53926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) virtual bool equals(const CSSBasicShape&) const = 0; 545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 55aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch CSSPrimitiveValue* referenceBox() const { return m_referenceBox.get(); } 56aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch void setReferenceBox(PassRefPtrWillBeRawPtr<CSSPrimitiveValue> referenceBox) { m_referenceBox = referenceBox; } 575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 58aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch virtual void trace(Visitor* visitor) { visitor->trace(m_referenceBox); } 595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)protected: 615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) CSSBasicShape() { } 62aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch RefPtrWillBeMember<CSSPrimitiveValue> m_referenceBox; 635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)class CSSBasicShapeCircle FINAL : public CSSBasicShape { 665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)public: 67d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) static PassRefPtrWillBeRawPtr<CSSBasicShapeCircle> create() { return adoptRefWillBeNoop(new CSSBasicShapeCircle); } 685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) virtual Type type() const OVERRIDE { return CSSBasicShapeCircleType; } 7009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) virtual String cssText() const OVERRIDE; 7109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) virtual bool equals(const CSSBasicShape&) const OVERRIDE; 7209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 7309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) CSSPrimitiveValue* centerX() const { return m_centerX.get(); } 7409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) CSSPrimitiveValue* centerY() const { return m_centerY.get(); } 7509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) CSSPrimitiveValue* radius() const { return m_radius.get(); } 7609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 77d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) void setCenterX(PassRefPtrWillBeRawPtr<CSSPrimitiveValue> centerX) { m_centerX = centerX; } 78d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) void setCenterY(PassRefPtrWillBeRawPtr<CSSPrimitiveValue> centerY) { m_centerY = centerY; } 79d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) void setRadius(PassRefPtrWillBeRawPtr<CSSPrimitiveValue> radius) { m_radius = radius; } 80d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 81d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) virtual void trace(Visitor*); 8209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 8309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)private: 8409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) CSSBasicShapeCircle() { } 8509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 86d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) RefPtrWillBeMember<CSSPrimitiveValue> m_centerX; 87d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) RefPtrWillBeMember<CSSPrimitiveValue> m_centerY; 88d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) RefPtrWillBeMember<CSSPrimitiveValue> m_radius; 8909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)}; 9009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 9109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)class CSSBasicShapeEllipse FINAL : public CSSBasicShape { 925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)public: 93d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) static PassRefPtrWillBeRawPtr<CSSBasicShapeEllipse> create() { return adoptRefWillBeNoop(new CSSBasicShapeEllipse); } 945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) virtual Type type() const OVERRIDE { return CSSBasicShapeEllipseType; } 9609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) virtual String cssText() const OVERRIDE; 9709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) virtual bool equals(const CSSBasicShape&) const OVERRIDE; 9809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) CSSPrimitiveValue* centerX() const { return m_centerX.get(); } 1005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) CSSPrimitiveValue* centerY() const { return m_centerY.get(); } 1015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) CSSPrimitiveValue* radiusX() const { return m_radiusX.get(); } 1025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) CSSPrimitiveValue* radiusY() const { return m_radiusY.get(); } 1035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 104d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) void setCenterX(PassRefPtrWillBeRawPtr<CSSPrimitiveValue> centerX) { m_centerX = centerX; } 105d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) void setCenterY(PassRefPtrWillBeRawPtr<CSSPrimitiveValue> centerY) { m_centerY = centerY; } 106d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) void setRadiusX(PassRefPtrWillBeRawPtr<CSSPrimitiveValue> radiusX) { m_radiusX = radiusX; } 107d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) void setRadiusY(PassRefPtrWillBeRawPtr<CSSPrimitiveValue> radiusY) { m_radiusY = radiusY; } 108d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 109d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) virtual void trace(Visitor*); 1105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)private: 11209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) CSSBasicShapeEllipse() { } 11309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 114d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) RefPtrWillBeMember<CSSPrimitiveValue> m_centerX; 115d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) RefPtrWillBeMember<CSSPrimitiveValue> m_centerY; 116d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) RefPtrWillBeMember<CSSPrimitiveValue> m_radiusX; 117d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) RefPtrWillBeMember<CSSPrimitiveValue> m_radiusY; 11809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)}; 11909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 12009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)class CSSBasicShapePolygon FINAL : public CSSBasicShape { 1215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)public: 122d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) static PassRefPtrWillBeRawPtr<CSSBasicShapePolygon> create() { return adoptRefWillBeNoop(new CSSBasicShapePolygon); } 1235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 124d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) void appendPoint(PassRefPtrWillBeRawPtr<CSSPrimitiveValue> x, PassRefPtrWillBeRawPtr<CSSPrimitiveValue> y) 1255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_values.append(x); 1275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_values.append(y); 1285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 130d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) PassRefPtrWillBeRawPtr<CSSPrimitiveValue> getXAt(unsigned i) const { return m_values.at(i * 2); } 131d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) PassRefPtrWillBeRawPtr<CSSPrimitiveValue> getYAt(unsigned i) const { return m_values.at(i * 2 + 1); } 132d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) const WillBeHeapVector<RefPtrWillBeMember<CSSPrimitiveValue> >& values() const { return m_values; } 1335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setWindRule(WindRule w) { m_windRule = w; } 1355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WindRule windRule() const { return m_windRule; } 1365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 13709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) virtual Type type() const OVERRIDE { return CSSBasicShapePolygonType; } 13809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) virtual String cssText() const OVERRIDE; 13909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) virtual bool equals(const CSSBasicShape&) const OVERRIDE; 140d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 141d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) virtual void trace(Visitor*); 142d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 1435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)private: 1445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) CSSBasicShapePolygon() 1455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) : m_windRule(RULE_NONZERO) 1465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 149d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) WillBeHeapVector<RefPtrWillBeMember<CSSPrimitiveValue> > m_values; 1505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WindRule m_windRule; 1515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 1525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)class CSSBasicShapeInset : public CSSBasicShape { 15409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)public: 155d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) static PassRefPtrWillBeRawPtr<CSSBasicShapeInset> create() { return adoptRefWillBeNoop(new CSSBasicShapeInset); } 15609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 15709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) CSSPrimitiveValue* top() const { return m_top.get(); } 15809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) CSSPrimitiveValue* right() const { return m_right.get(); } 15909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) CSSPrimitiveValue* bottom() const { return m_bottom.get(); } 16009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) CSSPrimitiveValue* left() const { return m_left.get(); } 16109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 16209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) CSSPrimitiveValue* topLeftRadius() const { return m_topLeftRadius.get(); } 16309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) CSSPrimitiveValue* topRightRadius() const { return m_topRightRadius.get(); } 16409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) CSSPrimitiveValue* bottomRightRadius() const { return m_bottomRightRadius.get(); } 16509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) CSSPrimitiveValue* bottomLeftRadius() const { return m_bottomLeftRadius.get(); } 16609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 167d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) void setTop(PassRefPtrWillBeRawPtr<CSSPrimitiveValue> top) { m_top = top; } 168d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) void setRight(PassRefPtrWillBeRawPtr<CSSPrimitiveValue> right) { m_right = right; } 169d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) void setBottom(PassRefPtrWillBeRawPtr<CSSPrimitiveValue> bottom) { m_bottom = bottom; } 170d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) void setLeft(PassRefPtrWillBeRawPtr<CSSPrimitiveValue> left) { m_left = left; } 17109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 17209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) void updateShapeSize4Values(CSSPrimitiveValue* top, CSSPrimitiveValue* right, CSSPrimitiveValue* bottom, CSSPrimitiveValue* left) 17309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) { 17409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) setTop(top); 17509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) setRight(right); 17609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) setBottom(bottom); 17709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) setLeft(left); 17809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) } 17909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 18009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) void updateShapeSize1Value(CSSPrimitiveValue* value1) 18109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) { 18209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) updateShapeSize4Values(value1, value1, value1, value1); 18309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) } 18409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 18509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) void updateShapeSize2Values(CSSPrimitiveValue* value1, CSSPrimitiveValue* value2) 18609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) { 18709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) updateShapeSize4Values(value1, value2, value1, value2); 18809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) } 18909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 19009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) void updateShapeSize3Values(CSSPrimitiveValue* value1, CSSPrimitiveValue* value2, CSSPrimitiveValue* value3) 19109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) { 19209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) updateShapeSize4Values(value1, value2, value3, value2); 19309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) } 19409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 19509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 196d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) void setTopLeftRadius(PassRefPtrWillBeRawPtr<CSSPrimitiveValue> radius) { m_topLeftRadius = radius; } 197d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) void setTopRightRadius(PassRefPtrWillBeRawPtr<CSSPrimitiveValue> radius) { m_topRightRadius = radius; } 198d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) void setBottomRightRadius(PassRefPtrWillBeRawPtr<CSSPrimitiveValue> radius) { m_bottomRightRadius = radius; } 199d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) void setBottomLeftRadius(PassRefPtrWillBeRawPtr<CSSPrimitiveValue> radius) { m_bottomLeftRadius = radius; } 20009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 20109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) virtual Type type() const OVERRIDE { return CSSBasicShapeInsetType; } 20209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) virtual String cssText() const OVERRIDE; 20309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) virtual bool equals(const CSSBasicShape&) const OVERRIDE; 20409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 205d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) virtual void trace(Visitor*); 206d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 20709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)private: 20809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) CSSBasicShapeInset() { } 20909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 210d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) RefPtrWillBeMember<CSSPrimitiveValue> m_top; 211d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) RefPtrWillBeMember<CSSPrimitiveValue> m_right; 212d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) RefPtrWillBeMember<CSSPrimitiveValue> m_bottom; 213d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) RefPtrWillBeMember<CSSPrimitiveValue> m_left; 21409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 215d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) RefPtrWillBeMember<CSSPrimitiveValue> m_topLeftRadius; 216d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) RefPtrWillBeMember<CSSPrimitiveValue> m_topRightRadius; 217d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) RefPtrWillBeMember<CSSPrimitiveValue> m_bottomRightRadius; 218d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) RefPtrWillBeMember<CSSPrimitiveValue> m_bottomLeftRadius; 21909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)}; 22009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 221c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} // namespace blink 2225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif // CSSBasicShapes_h 224