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

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

Issue 23685007: Have SVGURIReference API deal with Document references, not pointers (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years, 3 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) Research In Motion Limited 2010. All rights reserved. 2 * Copyright (C) Research In Motion Limited 2010. All rights reserved.
3 * 3 *
4 * This library is free software; you can redistribute it and/or 4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Library General Public 5 * modify it under the terms of the GNU Library General Public
6 * License as published by the Free Software Foundation; either 6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version. 7 * version 2 of the License, or (at your option) any later version.
8 * 8 *
9 * This library is distributed in the hope that it will be useful, 9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 String target; 144 String target;
145 if (element->hasTagName(SVGNames::patternTag)) 145 if (element->hasTagName(SVGNames::patternTag))
146 target = toSVGPatternElement(element)->hrefCurrentValue(); 146 target = toSVGPatternElement(element)->hrefCurrentValue();
147 else if (element->hasTagName(SVGNames::linearGradientTag) || element->hasTag Name(SVGNames::radialGradientTag)) 147 else if (element->hasTagName(SVGNames::linearGradientTag) || element->hasTag Name(SVGNames::radialGradientTag))
148 target = toSVGGradientElement(element)->hrefCurrentValue(); 148 target = toSVGGradientElement(element)->hrefCurrentValue();
149 else if (element->hasTagName(SVGNames::filterTag)) 149 else if (element->hasTagName(SVGNames::filterTag))
150 target = toSVGFilterElement(element)->hrefCurrentValue(); 150 target = toSVGFilterElement(element)->hrefCurrentValue();
151 else 151 else
152 ASSERT_NOT_REACHED(); 152 ASSERT_NOT_REACHED();
153 153
154 return SVGURIReference::fragmentIdentifierFromIRIString(target, &element->do cument()); 154 return SVGURIReference::fragmentIdentifierFromIRIString(target, element->doc ument());
155 } 155 }
156 156
157 static inline RenderSVGResourceContainer* paintingResourceFromSVGPaint(Document* document, const SVGPaint::SVGPaintType& paintType, const String& paintUri, Atom icString& id, bool& hasPendingResource) 157 static inline RenderSVGResourceContainer* paintingResourceFromSVGPaint(Document& document, const SVGPaint::SVGPaintType& paintType, const String& paintUri, Atom icString& id, bool& hasPendingResource)
158 { 158 {
159 if (paintType != SVGPaint::SVG_PAINTTYPE_URI && paintType != SVGPaint::SVG_P AINTTYPE_URI_RGBCOLOR) 159 if (paintType != SVGPaint::SVG_PAINTTYPE_URI && paintType != SVGPaint::SVG_P AINTTYPE_URI_RGBCOLOR)
160 return 0; 160 return 0;
161 161
162 id = SVGURIReference::fragmentIdentifierFromIRIString(paintUri, document); 162 id = SVGURIReference::fragmentIdentifierFromIRIString(paintUri, document);
163 RenderSVGResourceContainer* container = getRenderSVGResourceContainerById(do cument, id); 163 RenderSVGResourceContainer* container = getRenderSVGResourceContainerById(do cument, id);
164 if (!container) { 164 if (!container) {
165 hasPendingResource = true; 165 hasPendingResource = true;
166 return 0; 166 return 0;
167 } 167 }
(...skipping 30 matching lines...) Expand all
198 ASSERT(extensions); 198 ASSERT(extensions);
199 199
200 const AtomicString& tagName = element->localName(); 200 const AtomicString& tagName = element->localName();
201 if (tagName.isNull()) 201 if (tagName.isNull())
202 return false; 202 return false;
203 203
204 bool foundResources = false; 204 bool foundResources = false;
205 if (clipperFilterMaskerTags().contains(tagName)) { 205 if (clipperFilterMaskerTags().contains(tagName)) {
206 if (style->hasClipper()) { 206 if (style->hasClipper()) {
207 AtomicString id(style->clipperResource()); 207 AtomicString id(style->clipperResource());
208 if (setClipper(getRenderSVGResourceById<RenderSVGResourceClipper>(&d ocument, id))) 208 if (setClipper(getRenderSVGResourceById<RenderSVGResourceClipper>(do cument, id)))
209 foundResources = true; 209 foundResources = true;
210 else 210 else
211 registerPendingResource(extensions, id, element); 211 registerPendingResource(extensions, id, element);
212 } 212 }
213 213
214 if (style->hasFilter()) { 214 if (style->hasFilter()) {
215 AtomicString id(style->filterResource()); 215 AtomicString id(style->filterResource());
216 if (setFilter(getRenderSVGResourceById<RenderSVGResourceFilter>(&doc ument, id))) 216 if (setFilter(getRenderSVGResourceById<RenderSVGResourceFilter>(docu ment, id)))
217 foundResources = true; 217 foundResources = true;
218 else 218 else
219 registerPendingResource(extensions, id, element); 219 registerPendingResource(extensions, id, element);
220 } 220 }
221 221
222 if (style->hasMasker()) { 222 if (style->hasMasker()) {
223 AtomicString id(style->maskerResource()); 223 AtomicString id(style->maskerResource());
224 if (setMasker(getRenderSVGResourceById<RenderSVGResourceMasker>(&doc ument, id))) 224 if (setMasker(getRenderSVGResourceById<RenderSVGResourceMasker>(docu ment, id)))
225 foundResources = true; 225 foundResources = true;
226 else 226 else
227 registerPendingResource(extensions, id, element); 227 registerPendingResource(extensions, id, element);
228 } 228 }
229 } 229 }
230 230
231 if (markerTags().contains(tagName) && style->hasMarkers()) { 231 if (markerTags().contains(tagName) && style->hasMarkers()) {
232 AtomicString markerStartId(style->markerStartResource()); 232 AtomicString markerStartId(style->markerStartResource());
233 if (setMarkerStart(getRenderSVGResourceById<RenderSVGResourceMarker>(&do cument, markerStartId))) 233 if (setMarkerStart(getRenderSVGResourceById<RenderSVGResourceMarker>(doc ument, markerStartId)))
234 foundResources = true; 234 foundResources = true;
235 else 235 else
236 registerPendingResource(extensions, markerStartId, element); 236 registerPendingResource(extensions, markerStartId, element);
237 237
238 AtomicString markerMidId(style->markerMidResource()); 238 AtomicString markerMidId(style->markerMidResource());
239 if (setMarkerMid(getRenderSVGResourceById<RenderSVGResourceMarker>(&docu ment, markerMidId))) 239 if (setMarkerMid(getRenderSVGResourceById<RenderSVGResourceMarker>(docum ent, markerMidId)))
240 foundResources = true; 240 foundResources = true;
241 else 241 else
242 registerPendingResource(extensions, markerMidId, element); 242 registerPendingResource(extensions, markerMidId, element);
243 243
244 AtomicString markerEndId(style->markerEndResource()); 244 AtomicString markerEndId(style->markerEndResource());
245 if (setMarkerEnd(getRenderSVGResourceById<RenderSVGResourceMarker>(&docu ment, markerEndId))) 245 if (setMarkerEnd(getRenderSVGResourceById<RenderSVGResourceMarker>(docum ent, markerEndId)))
246 foundResources = true; 246 foundResources = true;
247 else 247 else
248 registerPendingResource(extensions, markerEndId, element); 248 registerPendingResource(extensions, markerEndId, element);
249 } 249 }
250 250
251 if (fillAndStrokeTags().contains(tagName)) { 251 if (fillAndStrokeTags().contains(tagName)) {
252 if (style->hasFill()) { 252 if (style->hasFill()) {
253 bool hasPendingResource = false; 253 bool hasPendingResource = false;
254 AtomicString id; 254 AtomicString id;
255 if (setFill(paintingResourceFromSVGPaint(&document, style->fillPaint Type(), style->fillPaintUri(), id, hasPendingResource))) 255 if (setFill(paintingResourceFromSVGPaint(document, style->fillPaintT ype(), style->fillPaintUri(), id, hasPendingResource)))
256 foundResources = true; 256 foundResources = true;
257 else if (hasPendingResource) 257 else if (hasPendingResource)
258 registerPendingResource(extensions, id, element); 258 registerPendingResource(extensions, id, element);
259 } 259 }
260 260
261 if (style->hasStroke()) { 261 if (style->hasStroke()) {
262 bool hasPendingResource = false; 262 bool hasPendingResource = false;
263 AtomicString id; 263 AtomicString id;
264 if (setStroke(paintingResourceFromSVGPaint(&document, style->strokeP aintType(), style->strokePaintUri(), id, hasPendingResource))) 264 if (setStroke(paintingResourceFromSVGPaint(document, style->strokePa intType(), style->strokePaintUri(), id, hasPendingResource)))
265 foundResources = true; 265 foundResources = true;
266 else if (hasPendingResource) 266 else if (hasPendingResource)
267 registerPendingResource(extensions, id, element); 267 registerPendingResource(extensions, id, element);
268 } 268 }
269 } 269 }
270 270
271 if (chainableResourceTags().contains(tagName)) { 271 if (chainableResourceTags().contains(tagName)) {
272 AtomicString id(targetReferenceFromResource(element)); 272 AtomicString id(targetReferenceFromResource(element));
273 if (setLinkedResource(getRenderSVGResourceContainerById(&document, id))) 273 if (setLinkedResource(getRenderSVGResourceContainerById(document, id)))
274 foundResources = true; 274 foundResources = true;
275 else 275 else
276 registerPendingResource(extensions, id, element); 276 registerPendingResource(extensions, id, element);
277 } 277 }
278 278
279 return foundResources; 279 return foundResources;
280 } 280 }
281 281
282 void SVGResources::removeClientFromCache(RenderObject* object, bool markForInval idation) const 282 void SVGResources::removeClientFromCache(RenderObject* object, bool markForInval idation) const
283 { 283 {
(...skipping 370 matching lines...) Expand 10 before | Expand all | Expand 10 after
654 if (RenderSVGResourceContainer* stroke = m_fillStrokeData->stroke) 654 if (RenderSVGResourceContainer* stroke = m_fillStrokeData->stroke)
655 fprintf(stderr, " |-> Stroke : %p (node=%p)\n", stroke, stroke-> node()); 655 fprintf(stderr, " |-> Stroke : %p (node=%p)\n", stroke, stroke-> node());
656 } 656 }
657 657
658 if (m_linkedResource) 658 if (m_linkedResource)
659 fprintf(stderr, " |-> xlink:href : %p (node=%p)\n", m_linkedResource, m_ linkedResource->node()); 659 fprintf(stderr, " |-> xlink:href : %p (node=%p)\n", m_linkedResource, m_ linkedResource->node());
660 } 660 }
661 #endif 661 #endif
662 662
663 } 663 }
OLDNEW
« no previous file with comments | « Source/core/rendering/svg/SVGRenderTreeAsText.cpp ('k') | Source/core/svg/SVGAltGlyphElement.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698