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

Side by Side Diff: Source/core/rendering/svg/SVGRenderTreeAsText.cpp

Issue 658333003: Make RenderSVGResource::requestPaintingResource an implementation detail (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: requestPaintForDRT -> requestPaintDescription. Created 6 years, 2 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2004, 2005, 2007, 2009 Apple Inc. All rights reserved. 2 * Copyright (C) 2004, 2005, 2007, 2009 Apple Inc. All rights reserved.
3 * (C) 2005 Rob Buis <buis@kde.org> 3 * (C) 2005 Rob Buis <buis@kde.org>
4 * (C) 2006 Alexander Kellett <lypanov@kde.org> 4 * (C) 2006 Alexander Kellett <lypanov@kde.org>
5 * Copyright (C) Research In Motion Limited 2010. All rights reserved. 5 * Copyright (C) Research In Motion Limited 2010. All rights reserved.
6 * 6 *
7 * Redistribution and use in source and binary forms, with or without 7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions 8 * modification, are permitted provided that the following conditions
9 * are met: 9 * are met:
10 * 1. Redistributions of source code must retain the above copyright 10 * 1. Redistributions of source code must retain the above copyright
(...skipping 24 matching lines...) Expand all
35 #include "core/rendering/svg/RenderSVGGradientStop.h" 35 #include "core/rendering/svg/RenderSVGGradientStop.h"
36 #include "core/rendering/svg/RenderSVGImage.h" 36 #include "core/rendering/svg/RenderSVGImage.h"
37 #include "core/rendering/svg/RenderSVGInlineText.h" 37 #include "core/rendering/svg/RenderSVGInlineText.h"
38 #include "core/rendering/svg/RenderSVGResourceClipper.h" 38 #include "core/rendering/svg/RenderSVGResourceClipper.h"
39 #include "core/rendering/svg/RenderSVGResourceFilter.h" 39 #include "core/rendering/svg/RenderSVGResourceFilter.h"
40 #include "core/rendering/svg/RenderSVGResourceLinearGradient.h" 40 #include "core/rendering/svg/RenderSVGResourceLinearGradient.h"
41 #include "core/rendering/svg/RenderSVGResourceMarker.h" 41 #include "core/rendering/svg/RenderSVGResourceMarker.h"
42 #include "core/rendering/svg/RenderSVGResourceMasker.h" 42 #include "core/rendering/svg/RenderSVGResourceMasker.h"
43 #include "core/rendering/svg/RenderSVGResourcePattern.h" 43 #include "core/rendering/svg/RenderSVGResourcePattern.h"
44 #include "core/rendering/svg/RenderSVGResourceRadialGradient.h" 44 #include "core/rendering/svg/RenderSVGResourceRadialGradient.h"
45 #include "core/rendering/svg/RenderSVGResourceSolidColor.h"
46 #include "core/rendering/svg/RenderSVGRoot.h" 45 #include "core/rendering/svg/RenderSVGRoot.h"
47 #include "core/rendering/svg/RenderSVGShape.h" 46 #include "core/rendering/svg/RenderSVGShape.h"
48 #include "core/rendering/svg/RenderSVGText.h" 47 #include "core/rendering/svg/RenderSVGText.h"
49 #include "core/rendering/svg/SVGInlineTextBox.h" 48 #include "core/rendering/svg/SVGInlineTextBox.h"
50 #include "core/rendering/svg/SVGRootInlineBox.h" 49 #include "core/rendering/svg/SVGRootInlineBox.h"
51 #include "core/svg/LinearGradientAttributes.h" 50 #include "core/svg/LinearGradientAttributes.h"
52 #include "core/svg/PatternAttributes.h" 51 #include "core/svg/PatternAttributes.h"
53 #include "core/svg/RadialGradientAttributes.h" 52 #include "core/svg/RadialGradientAttributes.h"
54 #include "core/svg/SVGCircleElement.h" 53 #include "core/svg/SVGCircleElement.h"
55 #include "core/svg/SVGEllipseElement.h" 54 #include "core/svg/SVGEllipseElement.h"
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after
239 } 238 }
240 return ts; 239 return ts;
241 } 240 }
242 241
243 static TextStream& operator<<(TextStream& ts, const SVGSpreadMethodType& type) 242 static TextStream& operator<<(TextStream& ts, const SVGSpreadMethodType& type)
244 { 243 {
245 ts << SVGEnumerationToString<SVGSpreadMethodType>(type).upper(); 244 ts << SVGEnumerationToString<SVGSpreadMethodType>(type).upper();
246 return ts; 245 return ts;
247 } 246 }
248 247
249 static void writeSVGPaintingResource(TextStream& ts, RenderSVGResource* resource ) 248 static void writeSVGPaintingResource(TextStream& ts, const SVGPaintDescription& paintDescription)
250 { 249 {
251 if (resource->resourceType() == SolidColorResourceType) { 250 ASSERT(paintDescription.isValid);
252 ts << "[type=SOLID] [color=" << static_cast<RenderSVGResourceSolidColor* >(resource)->color() << "]"; 251 if (!paintDescription.resource) {
252 ts << "[type=SOLID] [color=" << paintDescription.color << "]";
253 return; 253 return;
254 } 254 }
255 255
256 RenderSVGResource* resource = paintDescription.resource;
256 // All other resources derive from RenderSVGResourceContainer 257 // All other resources derive from RenderSVGResourceContainer
257 RenderSVGResourceContainer* container = static_cast<RenderSVGResourceContain er*>(resource); 258 RenderSVGResourceContainer* container = static_cast<RenderSVGResourceContain er*>(resource);
258 SVGElement* element = container->element(); 259 SVGElement* element = container->element();
259 ASSERT(element); 260 ASSERT(element);
260 261
261 if (resource->resourceType() == PatternResourceType) 262 if (resource->resourceType() == PatternResourceType)
262 ts << "[type=PATTERN]"; 263 ts << "[type=PATTERN]";
263 else if (resource->resourceType() == LinearGradientResourceType) 264 else if (resource->resourceType() == LinearGradientResourceType)
264 ts << "[type=LINEAR-GRADIENT]"; 265 ts << "[type=LINEAR-GRADIENT]";
265 else if (resource->resourceType() == RadialGradientResourceType) 266 else if (resource->resourceType() == RadialGradientResourceType)
266 ts << "[type=RADIAL-GRADIENT]"; 267 ts << "[type=RADIAL-GRADIENT]";
267 268
268 ts << " [id=\"" << element->getIdAttribute() << "\"]"; 269 ts << " [id=\"" << element->getIdAttribute() << "\"]";
269 } 270 }
270 271
271 static void writeStyle(TextStream& ts, const RenderObject& object) 272 static void writeStyle(TextStream& ts, const RenderObject& object)
272 { 273 {
273 const RenderStyle* style = object.style(); 274 const RenderStyle* style = object.style();
274 const SVGRenderStyle& svgStyle = style->svgStyle(); 275 const SVGRenderStyle& svgStyle = style->svgStyle();
275 276
276 if (!object.localTransform().isIdentity()) 277 if (!object.localTransform().isIdentity())
277 writeNameValuePair(ts, "transform", object.localTransform()); 278 writeNameValuePair(ts, "transform", object.localTransform());
278 writeIfNotDefault(ts, "image rendering", style->imageRendering(), RenderStyl e::initialImageRendering()); 279 writeIfNotDefault(ts, "image rendering", style->imageRendering(), RenderStyl e::initialImageRendering());
279 writeIfNotDefault(ts, "opacity", style->opacity(), RenderStyle::initialOpaci ty()); 280 writeIfNotDefault(ts, "opacity", style->opacity(), RenderStyle::initialOpaci ty());
280 if (object.isSVGShape()) { 281 if (object.isSVGShape()) {
281 const RenderSVGShape& shape = static_cast<const RenderSVGShape&>(object) ; 282 const RenderSVGShape& shape = static_cast<const RenderSVGShape&>(object) ;
282 ASSERT(shape.element()); 283 ASSERT(shape.element());
283 284
284 bool hasFallback; 285 SVGPaintDescription strokePaintDescription = RenderSVGResource::requestP aintDescription(shape, shape.style(), ApplyToStrokeMode);
285 if (RenderSVGResource* strokePaintingResource = RenderSVGResource::reque stPaintingResource(ApplyToStrokeMode, shape, shape.style(), hasFallback)) { 286 if (strokePaintDescription.isValid) {
286 TextStreamSeparator s(" "); 287 TextStreamSeparator s(" ");
287 ts << " [stroke={" << s; 288 ts << " [stroke={" << s;
288 writeSVGPaintingResource(ts, strokePaintingResource); 289 writeSVGPaintingResource(ts, strokePaintDescription);
289 290
290 SVGLengthContext lengthContext(shape.element()); 291 SVGLengthContext lengthContext(shape.element());
291 double dashOffset = svgStyle.strokeDashOffset()->value(lengthContext ); 292 double dashOffset = svgStyle.strokeDashOffset()->value(lengthContext );
292 double strokeWidth = svgStyle.strokeWidth()->value(lengthContext); 293 double strokeWidth = svgStyle.strokeWidth()->value(lengthContext);
293 RefPtr<SVGLengthList> dashes = svgStyle.strokeDashArray(); 294 RefPtr<SVGLengthList> dashes = svgStyle.strokeDashArray();
294 295
295 DashArray dashArray; 296 DashArray dashArray;
296 SVGLengthList::ConstIterator it = dashes->begin(); 297 SVGLengthList::ConstIterator it = dashes->begin();
297 SVGLengthList::ConstIterator itEnd = dashes->end(); 298 SVGLengthList::ConstIterator itEnd = dashes->end();
298 for (; it != itEnd; ++it) 299 for (; it != itEnd; ++it)
299 dashArray.append(it->value(lengthContext)); 300 dashArray.append(it->value(lengthContext));
300 301
301 writeIfNotDefault(ts, "opacity", svgStyle.strokeOpacity(), 1.0f); 302 writeIfNotDefault(ts, "opacity", svgStyle.strokeOpacity(), 1.0f);
302 writeIfNotDefault(ts, "stroke width", strokeWidth, 1.0); 303 writeIfNotDefault(ts, "stroke width", strokeWidth, 1.0);
303 writeIfNotDefault(ts, "miter limit", svgStyle.strokeMiterLimit(), 4. 0f); 304 writeIfNotDefault(ts, "miter limit", svgStyle.strokeMiterLimit(), 4. 0f);
304 writeIfNotDefault(ts, "line cap", svgStyle.capStyle(), ButtCap); 305 writeIfNotDefault(ts, "line cap", svgStyle.capStyle(), ButtCap);
305 writeIfNotDefault(ts, "line join", svgStyle.joinStyle(), MiterJoin); 306 writeIfNotDefault(ts, "line join", svgStyle.joinStyle(), MiterJoin);
306 writeIfNotDefault(ts, "dash offset", dashOffset, 0.0); 307 writeIfNotDefault(ts, "dash offset", dashOffset, 0.0);
307 if (!dashArray.isEmpty()) 308 if (!dashArray.isEmpty())
308 writeNameValuePair(ts, "dash array", dashArray); 309 writeNameValuePair(ts, "dash array", dashArray);
309 310
310 ts << "}]"; 311 ts << "}]";
311 } 312 }
312 313
313 if (RenderSVGResource* fillPaintingResource = RenderSVGResource::request PaintingResource(ApplyToFillMode, shape, shape.style(), hasFallback)) { 314 SVGPaintDescription fillPaintDescription = RenderSVGResource::requestPai ntDescription(shape, shape.style(), ApplyToFillMode);
315 if (fillPaintDescription.isValid) {
314 TextStreamSeparator s(" "); 316 TextStreamSeparator s(" ");
315 ts << " [fill={" << s; 317 ts << " [fill={" << s;
316 writeSVGPaintingResource(ts, fillPaintingResource); 318 writeSVGPaintingResource(ts, fillPaintDescription);
317 319
318 writeIfNotDefault(ts, "opacity", svgStyle.fillOpacity(), 1.0f); 320 writeIfNotDefault(ts, "opacity", svgStyle.fillOpacity(), 1.0f);
319 writeIfNotDefault(ts, "fill rule", svgStyle.fillRule(), RULE_NONZERO ); 321 writeIfNotDefault(ts, "fill rule", svgStyle.fillRule(), RULE_NONZERO );
320 ts << "}]"; 322 ts << "}]";
321 } 323 }
322 writeIfNotDefault(ts, "clip rule", svgStyle.clipRule(), RULE_NONZERO); 324 writeIfNotDefault(ts, "clip rule", svgStyle.clipRule(), RULE_NONZERO);
323 } 325 }
324 326
325 writeIfNotEmpty(ts, "start marker", svgStyle.markerStartResource()); 327 writeIfNotEmpty(ts, "start marker", svgStyle.markerStartResource());
326 writeIfNotEmpty(ts, "middle marker", svgStyle.markerMidResource()); 328 writeIfNotEmpty(ts, "middle marker", svgStyle.markerMidResource());
(...skipping 347 matching lines...) Expand 10 before | Expand all | Expand 10 after
674 ts << " "; 676 ts << " ";
675 writeNameAndQuotedValue(ts, "filter", svgStyle.filterResource()); 677 writeNameAndQuotedValue(ts, "filter", svgStyle.filterResource());
676 ts << " "; 678 ts << " ";
677 writeStandardPrefix(ts, *filter, 0); 679 writeStandardPrefix(ts, *filter, 0);
678 ts << " " << filter->resourceBoundingBox(&renderer) << "\n"; 680 ts << " " << filter->resourceBoundingBox(&renderer) << "\n";
679 } 681 }
680 } 682 }
681 } 683 }
682 684
683 } // namespace blink 685 } // namespace blink
OLDNEW
« no previous file with comments | « Source/core/rendering/svg/RenderSVGShape.cpp ('k') | Source/core/rendering/svg/SVGResources.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698