OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2004, 2005, 2006 Nikolas Zimmermann <zimmermann@kde.org> | 2 * Copyright (C) 2004, 2005, 2006 Nikolas Zimmermann <zimmermann@kde.org> |
3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2010 Rob Buis <buis@kde.org> | 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2010 Rob Buis <buis@kde.org> |
4 * Copyright (C) 2007 Apple Inc. All rights reserved. | 4 * Copyright (C) 2007 Apple Inc. All rights reserved. |
5 * Copyright (C) 2014 Google, Inc. | 5 * Copyright (C) 2014 Google, Inc. |
6 * | 6 * |
7 * This library is free software; you can redistribute it and/or | 7 * This library is free software; you can redistribute it and/or |
8 * modify it under the terms of the GNU Library General Public | 8 * modify it under the terms of the GNU Library General Public |
9 * License as published by the Free Software Foundation; either | 9 * License as published by the Free Software Foundation; either |
10 * version 2 of the License, or (at your option) any later version. | 10 * version 2 of the License, or (at your option) any later version. |
(...skipping 356 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
367 result = rect.contains(mappedRepaintRect); | 367 result = rect.contains(mappedRepaintRect); |
368 break; | 368 break; |
369 default: | 369 default: |
370 ASSERT_NOT_REACHED(); | 370 ASSERT_NOT_REACHED(); |
371 break; | 371 break; |
372 } | 372 } |
373 | 373 |
374 return result; | 374 return result; |
375 } | 375 } |
376 | 376 |
377 PassRefPtr<NodeList> SVGSVGElement::collectIntersectionOrEnclosureList(const Flo
atRect& rect, | 377 PassRefPtrWillBeRawPtr<NodeList> SVGSVGElement::collectIntersectionOrEnclosureLi
st(const FloatRect& rect, |
378 SVGElement* referenceElement, CheckIntersectionOrEnclosure mode) const | 378 SVGElement* referenceElement, CheckIntersectionOrEnclosure mode) const |
379 { | 379 { |
380 Vector<RefPtr<Node> > nodes; | 380 Vector<RefPtr<Node> > nodes; |
381 | 381 |
382 const SVGElement* root = this; | 382 const SVGElement* root = this; |
383 if (referenceElement) { | 383 if (referenceElement) { |
384 // Only the common subtree needs to be traversed. | 384 // Only the common subtree needs to be traversed. |
385 if (contains(referenceElement)) { | 385 if (contains(referenceElement)) { |
386 root = referenceElement; | 386 root = referenceElement; |
387 } else if (!isDescendantOf(referenceElement)) { | 387 } else if (!isDescendantOf(referenceElement)) { |
388 // No common subtree. | 388 // No common subtree. |
389 return StaticNodeList::adopt(nodes); | 389 return StaticNodeList::adopt(nodes); |
390 } | 390 } |
391 } | 391 } |
392 | 392 |
393 for (SVGGraphicsElement* element = Traversal<SVGGraphicsElement>::firstWithi
n(*root); element; | 393 for (SVGGraphicsElement* element = Traversal<SVGGraphicsElement>::firstWithi
n(*root); element; |
394 element = Traversal<SVGGraphicsElement>::next(*element, root)) { | 394 element = Traversal<SVGGraphicsElement>::next(*element, root)) { |
395 if (checkIntersectionOrEnclosure(*element, rect, mode)) | 395 if (checkIntersectionOrEnclosure(*element, rect, mode)) |
396 nodes.append(element); | 396 nodes.append(element); |
397 } | 397 } |
398 | 398 |
399 return StaticNodeList::adopt(nodes); | 399 return StaticNodeList::adopt(nodes); |
400 } | 400 } |
401 | 401 |
402 PassRefPtr<NodeList> SVGSVGElement::getIntersectionList(PassRefPtr<SVGRectTearOf
f> rect, SVGElement* referenceElement) const | 402 PassRefPtrWillBeRawPtr<NodeList> SVGSVGElement::getIntersectionList(PassRefPtr<S
VGRectTearOff> rect, SVGElement* referenceElement) const |
403 { | 403 { |
404 document().updateLayoutIgnorePendingStylesheets(); | 404 document().updateLayoutIgnorePendingStylesheets(); |
405 | 405 |
406 return collectIntersectionOrEnclosureList(rect->target()->value(), reference
Element, CheckIntersection); | 406 return collectIntersectionOrEnclosureList(rect->target()->value(), reference
Element, CheckIntersection); |
407 } | 407 } |
408 | 408 |
409 PassRefPtr<NodeList> SVGSVGElement::getEnclosureList(PassRefPtr<SVGRectTearOff>
rect, SVGElement* referenceElement) const | 409 PassRefPtrWillBeRawPtr<NodeList> SVGSVGElement::getEnclosureList(PassRefPtr<SVGR
ectTearOff> rect, SVGElement* referenceElement) const |
410 { | 410 { |
411 document().updateLayoutIgnorePendingStylesheets(); | 411 document().updateLayoutIgnorePendingStylesheets(); |
412 | 412 |
413 return collectIntersectionOrEnclosureList(rect->target()->value(), reference
Element, CheckEnclosure); | 413 return collectIntersectionOrEnclosureList(rect->target()->value(), reference
Element, CheckEnclosure); |
414 } | 414 } |
415 | 415 |
416 bool SVGSVGElement::checkIntersection(SVGElement* element, PassRefPtr<SVGRectTea
rOff> rect) const | 416 bool SVGSVGElement::checkIntersection(SVGElement* element, PassRefPtr<SVGRectTea
rOff> rect) const |
417 { | 417 { |
418 ASSERT(element); | 418 ASSERT(element); |
419 document().updateLayoutIgnorePendingStylesheets(); | 419 document().updateLayoutIgnorePendingStylesheets(); |
(...skipping 353 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
773 // The outermost SVGSVGElement SVGLoad event is fired through Document::disp
atchWindowLoadEvent. | 773 // The outermost SVGSVGElement SVGLoad event is fired through Document::disp
atchWindowLoadEvent. |
774 if (isOutermostSVGSVGElement()) | 774 if (isOutermostSVGSVGElement()) |
775 return; | 775 return; |
776 | 776 |
777 // finishParsingChildren() is called when the close tag is reached for an el
ement (e.g. </svg>) | 777 // finishParsingChildren() is called when the close tag is reached for an el
ement (e.g. </svg>) |
778 // we send SVGLoad events here if we can, otherwise they'll be sent when any
required loads finish | 778 // we send SVGLoad events here if we can, otherwise they'll be sent when any
required loads finish |
779 sendSVGLoadEventIfPossible(); | 779 sendSVGLoadEventIfPossible(); |
780 } | 780 } |
781 | 781 |
782 } | 782 } |
OLD | NEW |