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

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

Issue 169033002: Drop [LegacyImplementedInBaseClass] from SVGFitToViewBox IDL interface (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Further refactoring Created 6 years, 10 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, 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 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 namespace WebCore { 63 namespace WebCore {
64 64
65 // Animated property definitions 65 // Animated property definitions
66 66
67 BEGIN_REGISTER_ANIMATED_PROPERTIES(SVGSVGElement) 67 BEGIN_REGISTER_ANIMATED_PROPERTIES(SVGSVGElement)
68 REGISTER_PARENT_ANIMATED_PROPERTIES(SVGGraphicsElement) 68 REGISTER_PARENT_ANIMATED_PROPERTIES(SVGGraphicsElement)
69 END_REGISTER_ANIMATED_PROPERTIES 69 END_REGISTER_ANIMATED_PROPERTIES
70 70
71 inline SVGSVGElement::SVGSVGElement(Document& doc) 71 inline SVGSVGElement::SVGSVGElement(Document& doc)
72 : SVGGraphicsElement(SVGNames::svgTag, doc) 72 : SVGGraphicsElement(SVGNames::svgTag, doc)
73 , SVGFitToViewBox(this)
73 , m_x(SVGAnimatedLength::create(this, SVGNames::xAttr, SVGLength::create(Len gthModeWidth))) 74 , m_x(SVGAnimatedLength::create(this, SVGNames::xAttr, SVGLength::create(Len gthModeWidth)))
74 , m_y(SVGAnimatedLength::create(this, SVGNames::yAttr, SVGLength::create(Len gthModeHeight))) 75 , m_y(SVGAnimatedLength::create(this, SVGNames::yAttr, SVGLength::create(Len gthModeHeight)))
75 , m_width(SVGAnimatedLength::create(this, SVGNames::widthAttr, SVGLength::cr eate(LengthModeWidth))) 76 , m_width(SVGAnimatedLength::create(this, SVGNames::widthAttr, SVGLength::cr eate(LengthModeWidth)))
76 , m_height(SVGAnimatedLength::create(this, SVGNames::heightAttr, SVGLength:: create(LengthModeHeight))) 77 , m_height(SVGAnimatedLength::create(this, SVGNames::heightAttr, SVGLength:: create(LengthModeHeight)))
77 , m_viewBox(SVGAnimatedRect::create(this, SVGNames::viewBoxAttr))
78 , m_preserveAspectRatio(SVGAnimatedPreserveAspectRatio::create(this, SVGName s::preserveAspectRatioAttr, SVGPreserveAspectRatio::create()))
79 , m_useCurrentView(false) 78 , m_useCurrentView(false)
80 , m_zoomAndPan(SVGZoomAndPanMagnify) 79 , m_zoomAndPan(SVGZoomAndPanMagnify)
81 , m_timeContainer(SMILTimeContainer::create(this)) 80 , m_timeContainer(SMILTimeContainer::create(this))
82 , m_translation(SVGPoint::create()) 81 , m_translation(SVGPoint::create())
83 { 82 {
84 ScriptWrappable::init(this); 83 ScriptWrappable::init(this);
85 84
86 m_width->setDefaultValueAsString("100%"); 85 m_width->setDefaultValueAsString("100%");
87 m_height->setDefaultValueAsString("100%"); 86 m_height->setDefaultValueAsString("100%");
88 87
89 addToPropertyMap(m_x); 88 addToPropertyMap(m_x);
90 addToPropertyMap(m_y); 89 addToPropertyMap(m_y);
91 addToPropertyMap(m_width); 90 addToPropertyMap(m_width);
92 addToPropertyMap(m_height); 91 addToPropertyMap(m_height);
93 addToPropertyMap(m_viewBox);
94 addToPropertyMap(m_preserveAspectRatio);
95 registerAnimatedPropertiesForSVGSVGElement(); 92 registerAnimatedPropertiesForSVGSVGElement();
96 93
97 UseCounter::count(doc, UseCounter::SVGSVGElement); 94 UseCounter::count(doc, UseCounter::SVGSVGElement);
98 } 95 }
99 96
100 PassRefPtr<SVGSVGElement> SVGSVGElement::create(Document& document) 97 PassRefPtr<SVGSVGElement> SVGSVGElement::create(Document& document)
101 { 98 {
102 return adoptRef(new SVGSVGElement(document)); 99 return adoptRef(new SVGSVGElement(document));
103 } 100 }
104 101
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
277 else if (name == HTMLNames::onerrorAttr) 274 else if (name == HTMLNames::onerrorAttr)
278 document().setWindowAttributeEventListener(EventTypeNames::error, create AttributeEventListener(document().frame(), name, value)); 275 document().setWindowAttributeEventListener(EventTypeNames::error, create AttributeEventListener(document().frame(), name, value));
279 else if (name == SVGNames::xAttr) 276 else if (name == SVGNames::xAttr)
280 m_x->setBaseValueAsString(value, AllowNegativeLengths, parseError); 277 m_x->setBaseValueAsString(value, AllowNegativeLengths, parseError);
281 else if (name == SVGNames::yAttr) 278 else if (name == SVGNames::yAttr)
282 m_y->setBaseValueAsString(value, AllowNegativeLengths, parseError); 279 m_y->setBaseValueAsString(value, AllowNegativeLengths, parseError);
283 else if (name == SVGNames::widthAttr) 280 else if (name == SVGNames::widthAttr)
284 m_width->setBaseValueAsString(value, ForbidNegativeLengths, parseError); 281 m_width->setBaseValueAsString(value, ForbidNegativeLengths, parseError);
285 else if (name == SVGNames::heightAttr) 282 else if (name == SVGNames::heightAttr)
286 m_height->setBaseValueAsString(value, ForbidNegativeLengths, parseError) ; 283 m_height->setBaseValueAsString(value, ForbidNegativeLengths, parseError) ;
287 else if (SVGFitToViewBox::parseAttribute(this, name, value) 284 else if (SVGFitToViewBox::parseAttribute(name, value, document(), parseError )
288 || SVGZoomAndPan::parseAttribute(this, name, value)) { 285 || SVGZoomAndPan::parseAttribute(this, name, value)) {
289 } else 286 } else
290 SVGGraphicsElement::parseAttribute(name, value); 287 SVGGraphicsElement::parseAttribute(name, value);
291 288
292 reportAttributeParsingError(parseError, name, value); 289 reportAttributeParsingError(parseError, name, value);
293 } 290 }
294 291
295 void SVGSVGElement::svgAttributeChanged(const QualifiedName& attrName) 292 void SVGSVGElement::svgAttributeChanged(const QualifiedName& attrName)
296 { 293 {
297 bool updateRelativeLengthsOrViewBox = false; 294 bool updateRelativeLengthsOrViewBox = false;
(...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after
552 || m_width->currentValue()->isRelative() 549 || m_width->currentValue()->isRelative()
553 || m_height->currentValue()->isRelative() 550 || m_height->currentValue()->isRelative()
554 || hasAttribute(SVGNames::viewBoxAttr); 551 || hasAttribute(SVGNames::viewBoxAttr);
555 } 552 }
556 553
557 FloatRect SVGSVGElement::currentViewBoxRect() const 554 FloatRect SVGSVGElement::currentViewBoxRect() const
558 { 555 {
559 if (m_useCurrentView) 556 if (m_useCurrentView)
560 return m_viewSpec ? m_viewSpec->viewBox()->currentValue()->value() : Flo atRect(); 557 return m_viewSpec ? m_viewSpec->viewBox()->currentValue()->value() : Flo atRect();
561 558
562 FloatRect useViewBox = m_viewBox->currentValue()->value(); 559 FloatRect useViewBox = viewBox()->currentValue()->value();
563 if (!useViewBox.isEmpty()) 560 if (!useViewBox.isEmpty())
564 return useViewBox; 561 return useViewBox;
565 if (!renderer() || !renderer()->isSVGRoot()) 562 if (!renderer() || !renderer()->isSVGRoot())
566 return FloatRect(); 563 return FloatRect();
567 if (!toRenderSVGRoot(renderer())->isEmbeddedThroughSVGImage()) 564 if (!toRenderSVGRoot(renderer())->isEmbeddedThroughSVGImage())
568 return FloatRect(); 565 return FloatRect();
569 566
570 Length intrinsicWidth = this->intrinsicWidth(); 567 Length intrinsicWidth = this->intrinsicWidth();
571 Length intrinsicHeight = this->intrinsicHeight(); 568 Length intrinsicHeight = this->intrinsicHeight();
572 if (!intrinsicWidth.isFixed() || !intrinsicHeight.isFixed()) 569 if (!intrinsicWidth.isFixed() || !intrinsicHeight.isFixed())
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
668 return Length(m_height->currentValue()->value(lengthContext), Fixed); 665 return Length(m_height->currentValue()->value(lengthContext), Fixed);
669 } 666 }
670 667
671 ASSERT(renderer()); 668 ASSERT(renderer());
672 return renderer()->style()->height(); 669 return renderer()->style()->height();
673 } 670 }
674 671
675 AffineTransform SVGSVGElement::viewBoxToViewTransform(float viewWidth, float vie wHeight) const 672 AffineTransform SVGSVGElement::viewBoxToViewTransform(float viewWidth, float vie wHeight) const
676 { 673 {
677 if (!m_useCurrentView || !m_viewSpec) 674 if (!m_useCurrentView || !m_viewSpec)
678 return SVGFitToViewBox::viewBoxToViewTransform(currentViewBoxRect(), m_p reserveAspectRatio->currentValue(), viewWidth, viewHeight); 675 return SVGFitToViewBox::viewBoxToViewTransform(currentViewBoxRect(), pre serveAspectRatio()->currentValue(), viewWidth, viewHeight);
679 676
680 AffineTransform ctm = SVGFitToViewBox::viewBoxToViewTransform(currentViewBox Rect(), m_viewSpec->preserveAspectRatio()->currentValue(), viewWidth, viewHeight ); 677 AffineTransform ctm = SVGFitToViewBox::viewBoxToViewTransform(currentViewBox Rect(), m_viewSpec->preserveAspectRatio()->currentValue(), viewWidth, viewHeight );
681 const SVGTransformList& transformList = m_viewSpec->transformBaseValue(); 678 const SVGTransformList& transformList = m_viewSpec->transformBaseValue();
682 if (transformList.isEmpty()) 679 if (transformList.isEmpty())
683 return ctm; 680 return ctm;
684 681
685 AffineTransform transform; 682 AffineTransform transform;
686 if (transformList.concatenate(transform)) 683 if (transformList.concatenate(transform))
687 ctm *= transform; 684 ctm *= transform;
688 685
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
742 } 739 }
743 740
744 void SVGSVGElement::inheritViewAttributes(SVGViewElement* viewElement) 741 void SVGSVGElement::inheritViewAttributes(SVGViewElement* viewElement)
745 { 742 {
746 SVGViewSpec* view = currentView(); 743 SVGViewSpec* view = currentView();
747 m_useCurrentView = true; 744 m_useCurrentView = true;
748 745
749 if (viewElement->hasAttribute(SVGNames::viewBoxAttr)) 746 if (viewElement->hasAttribute(SVGNames::viewBoxAttr))
750 view->viewBox()->baseValue()->setValue(viewElement->viewBox()->currentVa lue()->value()); 747 view->viewBox()->baseValue()->setValue(viewElement->viewBox()->currentVa lue()->value());
751 else 748 else
752 view->viewBox()->baseValue()->setValue(m_viewBox->currentValue()->value( )); 749 view->viewBox()->baseValue()->setValue(viewBox()->currentValue()->value( ));
753 750
754 if (viewElement->hasAttribute(SVGNames::preserveAspectRatioAttr)) { 751 if (viewElement->hasAttribute(SVGNames::preserveAspectRatioAttr)) {
755 view->preserveAspectRatio()->baseValue()->setAlign(viewElement->preserve AspectRatio()->currentValue()->align()); 752 view->preserveAspectRatio()->baseValue()->setAlign(viewElement->preserve AspectRatio()->currentValue()->align());
756 view->preserveAspectRatio()->baseValue()->setMeetOrSlice(viewElement->pr eserveAspectRatio()->currentValue()->meetOrSlice()); 753 view->preserveAspectRatio()->baseValue()->setMeetOrSlice(viewElement->pr eserveAspectRatio()->currentValue()->meetOrSlice());
757 } else { 754 } else {
758 view->preserveAspectRatio()->baseValue()->setAlign(m_preserveAspectRatio ->currentValue()->align()); 755 view->preserveAspectRatio()->baseValue()->setAlign(preserveAspectRatio() ->currentValue()->align());
759 view->preserveAspectRatio()->baseValue()->setMeetOrSlice(m_preserveAspec tRatio->currentValue()->meetOrSlice()); 756 view->preserveAspectRatio()->baseValue()->setMeetOrSlice(preserveAspectR atio()->currentValue()->meetOrSlice());
760 } 757 }
761 758
762 if (viewElement->hasAttribute(SVGNames::zoomAndPanAttr)) 759 if (viewElement->hasAttribute(SVGNames::zoomAndPanAttr))
763 view->setZoomAndPanBaseValue(viewElement->zoomAndPan()); 760 view->setZoomAndPanBaseValue(viewElement->zoomAndPan());
764 else 761 else
765 view->setZoomAndPanBaseValue(zoomAndPan()); 762 view->setZoomAndPanBaseValue(zoomAndPan());
766 } 763 }
767 764
768 // getElementById on SVGSVGElement is restricted to only the child subtree defin ed by the <svg> element. 765 // getElementById on SVGSVGElement is restricted to only the child subtree defin ed by the <svg> element.
769 // See http://www.w3.org/TR/SVG11/struct.html#InterfaceSVGSVGElement 766 // See http://www.w3.org/TR/SVG11/struct.html#InterfaceSVGSVGElement
(...skipping 10 matching lines...) Expand all
780 continue; 777 continue;
781 778
782 Element* element = toElement(node); 779 Element* element = toElement(node);
783 if (element->getIdAttribute() == id) 780 if (element->getIdAttribute() == id)
784 return element; 781 return element;
785 } 782 }
786 return 0; 783 return 0;
787 } 784 }
788 785
789 } 786 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698