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

Side by Side Diff: Source/core/rendering/shapes/Shape.cpp

Issue 103413006: Implement parsing of the new ellipse shape syntax. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 7 years 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 unified diff | Download patch
OLDNEW
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 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
123 FloatSize cornerRadii( 123 FloatSize cornerRadii(
124 floatValueForLength(rectangle->cornerRadiusX(), boxWidth), 124 floatValueForLength(rectangle->cornerRadiusX(), boxWidth),
125 floatValueForLength(rectangle->cornerRadiusY(), boxHeight)); 125 floatValueForLength(rectangle->cornerRadiusY(), boxHeight));
126 ensureRadiiDoNotOverlap(bounds, cornerRadii); 126 ensureRadiiDoNotOverlap(bounds, cornerRadii);
127 FloatRect logicalBounds = physicalRectToLogical(bounds, logicalBoxSize.h eight(), writingMode); 127 FloatRect logicalBounds = physicalRectToLogical(bounds, logicalBoxSize.h eight(), writingMode);
128 128
129 shape = createRectangleShape(logicalBounds, physicalSizeToLogical(corner Radii, writingMode)); 129 shape = createRectangleShape(logicalBounds, physicalSizeToLogical(corner Radii, writingMode));
130 break; 130 break;
131 } 131 }
132 132
133 case BasicShape::BasicShapeCircleType: { 133 case BasicShape::DeprecatedBasicShapeCircleType: {
134 const BasicShapeCircle* circle = static_cast<const BasicShapeCircle*>(ba sicShape); 134 const DeprecatedBasicShapeCircle* circle = static_cast<const DeprecatedB asicShapeCircle*>(basicShape);
135 float centerX = floatValueForLength(circle->centerX(), boxWidth); 135 float centerX = floatValueForLength(circle->centerX(), boxWidth);
136 float centerY = floatValueForLength(circle->centerY(), boxHeight); 136 float centerY = floatValueForLength(circle->centerY(), boxHeight);
137 // This method of computing the radius is as defined in SVG 137 // This method of computing the radius is as defined in SVG
138 // (http://www.w3.org/TR/SVG/coords.html#Units). It bases the radius 138 // (http://www.w3.org/TR/SVG/coords.html#Units). It bases the radius
139 // off of the diagonal of the box and ensures that if the box is 139 // off of the diagonal of the box and ensures that if the box is
140 // square, the radius is equal to half the diagonal. 140 // square, the radius is equal to half the diagonal.
141 float radius = floatValueForLength(circle->radius(), sqrtf((boxWidth * b oxWidth + boxHeight * boxHeight) / 2)); 141 float radius = floatValueForLength(circle->radius(), sqrtf((boxWidth * b oxWidth + boxHeight * boxHeight) / 2));
142 FloatPoint logicalCenter = physicalPointToLogical(FloatPoint(centerX, ce nterY), logicalBoxSize.height(), writingMode); 142 FloatPoint logicalCenter = physicalPointToLogical(FloatPoint(centerX, ce nterY), logicalBoxSize.height(), writingMode);
143 143
144 shape = createCircleShape(logicalCenter, radius); 144 shape = createCircleShape(logicalCenter, radius);
145 break; 145 break;
146 } 146 }
147 147
148 case BasicShape::BasicShapeEllipseType: { 148 case BasicShape::BasicShapeCircleType: {
149 const BasicShapeEllipse* ellipse = static_cast<const BasicShapeEllipse*> (basicShape); 149 // FIXME implement layout. bug 124619
bemjb 2013/12/07 00:05:32 This is the webkit bug number, Either remove the n
150 shape = createRectangleShape(FloatRect(0, 0, boxWidth, boxHeight), Float Size(0, 0));
151 break;
152 }
153
154 case BasicShape::DeprecatedBasicShapeEllipseType: {
155 const DeprecatedBasicShapeEllipse* ellipse = static_cast<const Deprecate dBasicShapeEllipse*>(basicShape);
150 float centerX = floatValueForLength(ellipse->centerX(), boxWidth); 156 float centerX = floatValueForLength(ellipse->centerX(), boxWidth);
151 float centerY = floatValueForLength(ellipse->centerY(), boxHeight); 157 float centerY = floatValueForLength(ellipse->centerY(), boxHeight);
152 float radiusX = floatValueForLength(ellipse->radiusX(), boxWidth); 158 float radiusX = floatValueForLength(ellipse->radiusX(), boxWidth);
153 float radiusY = floatValueForLength(ellipse->radiusY(), boxHeight); 159 float radiusY = floatValueForLength(ellipse->radiusY(), boxHeight);
154 FloatPoint logicalCenter = physicalPointToLogical(FloatPoint(centerX, ce nterY), logicalBoxSize.height(), writingMode); 160 FloatPoint logicalCenter = physicalPointToLogical(FloatPoint(centerX, ce nterY), logicalBoxSize.height(), writingMode);
155 FloatSize logicalRadii = physicalSizeToLogical(FloatSize(radiusX, radius Y), writingMode); 161 FloatSize logicalRadii = physicalSizeToLogical(FloatSize(radiusX, radius Y), writingMode);
156 162
157 shape = createEllipseShape(logicalCenter, logicalRadii); 163 shape = createEllipseShape(logicalCenter, logicalRadii);
158 break; 164 break;
159 } 165 }
160 166
167 case BasicShape::BasicShapeEllipseType: {
168 // FIXME implement layout. bug 124619
bemjb 2013/12/07 00:05:32 Ditto.
169 shape = createRectangleShape(FloatRect(0, 0, boxWidth, boxHeight), Float Size(0, 0));
170 break;
171 }
172
161 case BasicShape::BasicShapePolygonType: { 173 case BasicShape::BasicShapePolygonType: {
162 const BasicShapePolygon* polygon = static_cast<const BasicShapePolygon*> (basicShape); 174 const BasicShapePolygon* polygon = static_cast<const BasicShapePolygon*> (basicShape);
163 const Vector<Length>& values = polygon->values(); 175 const Vector<Length>& values = polygon->values();
164 size_t valuesSize = values.size(); 176 size_t valuesSize = values.size();
165 ASSERT(!(valuesSize % 2)); 177 ASSERT(!(valuesSize % 2));
166 OwnPtr<Vector<FloatPoint> > vertices = adoptPtr(new Vector<FloatPoint>(v aluesSize / 2)); 178 OwnPtr<Vector<FloatPoint> > vertices = adoptPtr(new Vector<FloatPoint>(v aluesSize / 2));
167 for (unsigned i = 0; i < valuesSize; i += 2) { 179 for (unsigned i = 0; i < valuesSize; i += 2) {
168 FloatPoint vertex( 180 FloatPoint vertex(
169 floatValueForLength(values.at(i), boxWidth), 181 floatValueForLength(values.at(i), boxWidth),
170 floatValueForLength(values.at(i + 1), boxHeight)); 182 floatValueForLength(values.at(i + 1), boxHeight));
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
253 265
254 OwnPtr<Shape> shape = createRectangleShape(bounds, radii); 266 OwnPtr<Shape> shape = createRectangleShape(bounds, radii);
255 shape->m_writingMode = writingMode; 267 shape->m_writingMode = writingMode;
256 shape->m_margin = floatValueForLength(margin, 0); 268 shape->m_margin = floatValueForLength(margin, 0);
257 shape->m_padding = floatValueForLength(padding, 0); 269 shape->m_padding = floatValueForLength(padding, 0);
258 270
259 return shape.release(); 271 return shape.release();
260 } 272 }
261 273
262 } // namespace WebCore 274 } // namespace WebCore
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698