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

Side by Side Diff: Source/core/svg/SVGSVGElement.cpp

Issue 61753005: Remove SVGLocatable and SVGTransformable (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Fix farthestVieportElement Created 7 years, 1 month 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
« no previous file with comments | « Source/core/svg/SVGSVGElement.h ('k') | Source/core/svg/SVGTransformList.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 * 5 *
6 * This library is free software; you can redistribute it and/or 6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Library General Public 7 * modify it under the terms of the GNU Library General Public
8 * License as published by the Free Software Foundation; either 8 * License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version. 9 * version 2 of the License, or (at your option) any later version.
10 * 10 *
(...skipping 406 matching lines...) Expand 10 before | Expand all | Expand 10 after
417 SVGTransform SVGSVGElement::createSVGTransform() 417 SVGTransform SVGSVGElement::createSVGTransform()
418 { 418 {
419 return SVGTransform(SVGTransform::SVG_TRANSFORM_MATRIX); 419 return SVGTransform(SVGTransform::SVG_TRANSFORM_MATRIX);
420 } 420 }
421 421
422 SVGTransform SVGSVGElement::createSVGTransformFromMatrix(const SVGMatrix& matrix ) 422 SVGTransform SVGSVGElement::createSVGTransformFromMatrix(const SVGMatrix& matrix )
423 { 423 {
424 return SVGTransform(static_cast<const AffineTransform&>(matrix)); 424 return SVGTransform(static_cast<const AffineTransform&>(matrix));
425 } 425 }
426 426
427 AffineTransform SVGSVGElement::localCoordinateSpaceTransform(SVGLocatable::CTMSc ope mode) const 427 AffineTransform SVGSVGElement::localCoordinateSpaceTransform(SVGElement::CTMScop e mode) const
428 { 428 {
429 AffineTransform viewBoxTransform; 429 AffineTransform viewBoxTransform;
430 if (!hasEmptyViewBox()) { 430 if (!hasEmptyViewBox()) {
431 FloatSize size = currentViewportSize(); 431 FloatSize size = currentViewportSize();
432 viewBoxTransform = viewBoxToViewTransform(size.width(), size.height()); 432 viewBoxTransform = viewBoxToViewTransform(size.width(), size.height());
433 } 433 }
434 434
435 AffineTransform transform; 435 AffineTransform transform;
436 if (!isOutermostSVGSVGElement()) { 436 if (!isOutermostSVGSVGElement()) {
437 SVGLengthContext lengthContext(this); 437 SVGLengthContext lengthContext(this);
438 transform.translate(xCurrentValue().value(lengthContext), yCurrentValue( ).value(lengthContext)); 438 transform.translate(xCurrentValue().value(lengthContext), yCurrentValue( ).value(lengthContext));
439 } else if (mode == SVGLocatable::ScreenScope) { 439 } else if (mode == SVGElement::ScreenScope) {
440 if (RenderObject* renderer = this->renderer()) { 440 if (RenderObject* renderer = this->renderer()) {
441 FloatPoint location; 441 FloatPoint location;
442 float zoomFactor = 1; 442 float zoomFactor = 1;
443 443
444 // At the SVG/HTML boundary (aka RenderSVGRoot), we apply the localT oBorderBoxTransform 444 // At the SVG/HTML boundary (aka RenderSVGRoot), we apply the localT oBorderBoxTransform
445 // to map an element from SVG viewport coordinates to CSS box coordi nates. 445 // to map an element from SVG viewport coordinates to CSS box coordi nates.
446 // RenderSVGRoot's localToAbsolute method expects CSS box coordinate s. 446 // RenderSVGRoot's localToAbsolute method expects CSS box coordinate s.
447 // We also need to adjust for the zoom level factored into CSS coord inates (bug #96361). 447 // We also need to adjust for the zoom level factored into CSS coord inates (bug #96361).
448 if (renderer->isSVGRoot()) { 448 if (renderer->isSVGRoot()) {
449 location = toRenderSVGRoot(renderer)->localToBorderBoxTransform( ).mapPoint(location); 449 location = toRenderSVGRoot(renderer)->localToBorderBoxTransform( ).mapPoint(location);
(...skipping 272 matching lines...) Expand 10 before | Expand all | Expand 10 after
722 722
723 // Spec: If the SVG fragment identifier addresses a ‘view’ element within an SVG document (e.g., MyDrawing.svg#MyView 723 // Spec: If the SVG fragment identifier addresses a ‘view’ element within an SVG document (e.g., MyDrawing.svg#MyView
724 // or MyDrawing.svg#xpointer(id('MyView'))) then the closest ancestor ‘svg’ element is displayed in the viewport. 724 // or MyDrawing.svg#xpointer(id('MyView'))) then the closest ancestor ‘svg’ element is displayed in the viewport.
725 // Any view specification attributes included on the given ‘view’ element ov erride the corresponding view specification 725 // Any view specification attributes included on the given ‘view’ element ov erride the corresponding view specification
726 // attributes on the closest ancestor ‘svg’ element. 726 // attributes on the closest ancestor ‘svg’ element.
727 if (anchorNode && anchorNode->hasTagName(SVGNames::viewTag)) { 727 if (anchorNode && anchorNode->hasTagName(SVGNames::viewTag)) {
728 SVGViewElement* viewElement = toSVGViewElement(anchorNode); 728 SVGViewElement* viewElement = toSVGViewElement(anchorNode);
729 if (!viewElement) 729 if (!viewElement)
730 return; 730 return;
731 731
732 SVGElement* element = SVGLocatable::nearestViewportElement(viewElement); 732 if (SVGSVGElement* svg = viewElement->ownerSVGElement()) {
733 if (element->hasTagName(SVGNames::svgTag)) {
734 SVGSVGElement* svg = toSVGSVGElement(element);
735 svg->inheritViewAttributes(viewElement); 733 svg->inheritViewAttributes(viewElement);
736 734
737 if (RenderObject* renderer = svg->renderer()) 735 if (RenderObject* renderer = svg->renderer())
738 RenderSVGResource::markForLayoutAndParentResourceInvalidation(re nderer); 736 RenderSVGResource::markForLayoutAndParentResourceInvalidation(re nderer);
739 } 737 }
740 } 738 }
741 739
742 // FIXME: We need to decide which <svg> to focus on, and zoom to it. 740 // FIXME: We need to decide which <svg> to focus on, and zoom to it.
743 // FIXME: We need to actually "highlight" the viewTarget(s). 741 // FIXME: We need to actually "highlight" the viewTarget(s).
744 } 742 }
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
779 continue; 777 continue;
780 778
781 Element* element = toElement(node); 779 Element* element = toElement(node);
782 if (element->getIdAttribute() == id) 780 if (element->getIdAttribute() == id)
783 return element; 781 return element;
784 } 782 }
785 return 0; 783 return 0;
786 } 784 }
787 785
788 } 786 }
OLDNEW
« no previous file with comments | « Source/core/svg/SVGSVGElement.h ('k') | Source/core/svg/SVGTransformList.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698