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 591 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
602 FloatRect useViewBox = viewBox()->currentValue()->value(); | 602 FloatRect useViewBox = viewBox()->currentValue()->value(); |
603 if (!useViewBox.isEmpty()) | 603 if (!useViewBox.isEmpty()) |
604 return useViewBox; | 604 return useViewBox; |
605 if (!layoutObject() || !layoutObject()->isSVGRoot()) | 605 if (!layoutObject() || !layoutObject()->isSVGRoot()) |
606 return FloatRect(); | 606 return FloatRect(); |
607 if (!toLayoutSVGRoot(layoutObject())->isEmbeddedThroughSVGImage()) | 607 if (!toLayoutSVGRoot(layoutObject())->isEmbeddedThroughSVGImage()) |
608 return FloatRect(); | 608 return FloatRect(); |
609 | 609 |
610 // If no viewBox is specified but non-relative width/height values, then we | 610 // If no viewBox is specified but non-relative width/height values, then we |
611 // should always synthesize a viewBox if we're embedded through a SVGImage. | 611 // should always synthesize a viewBox if we're embedded through a SVGImage. |
612 return FloatRect(FloatPoint(), FloatSize(floatValueForLength(intrinsicWidth(
), 0), floatValueForLength(intrinsicHeight(), 0))); | 612 return FloatRect(FloatPoint(), FloatSize(intrinsicWidth(), intrinsicHeight()
)); |
613 } | 613 } |
614 | 614 |
615 FloatSize SVGSVGElement::currentViewportSize() const | 615 FloatSize SVGSVGElement::currentViewportSize() const |
616 { | 616 { |
617 if (!layoutObject()) | 617 if (!layoutObject()) |
618 return FloatSize(); | 618 return FloatSize(); |
619 | 619 |
620 if (layoutObject()->isSVGRoot()) { | 620 if (layoutObject()->isSVGRoot()) { |
621 LayoutRect contentBoxRect = toLayoutSVGRoot(layoutObject())->contentBoxR
ect(); | 621 LayoutRect contentBoxRect = toLayoutSVGRoot(layoutObject())->contentBoxR
ect(); |
622 return FloatSize(contentBoxRect.width() / layoutObject()->style()->effec
tiveZoom(), contentBoxRect.height() / layoutObject()->style()->effectiveZoom()); | 622 return FloatSize(contentBoxRect.width() / layoutObject()->style()->effec
tiveZoom(), contentBoxRect.height() / layoutObject()->style()->effectiveZoom()); |
623 } | 623 } |
624 | 624 |
625 FloatRect viewportRect = toLayoutSVGViewportContainer(layoutObject())->viewp
ort(); | 625 FloatRect viewportRect = toLayoutSVGViewportContainer(layoutObject())->viewp
ort(); |
626 return FloatSize(viewportRect.width(), viewportRect.height()); | 626 return FloatSize(viewportRect.width(), viewportRect.height()); |
627 } | 627 } |
628 | 628 |
629 bool SVGSVGElement::hasIntrinsicWidth() const | 629 bool SVGSVGElement::hasIntrinsicWidth() const |
630 { | 630 { |
631 return width()->currentValue()->typeWithCalcResolved() != CSSPrimitiveValue:
:UnitType::Percentage; | 631 return width()->currentValue()->typeWithCalcResolved() != CSSPrimitiveValue:
:UnitType::Percentage; |
632 } | 632 } |
633 | 633 |
634 bool SVGSVGElement::hasIntrinsicHeight() const | 634 bool SVGSVGElement::hasIntrinsicHeight() const |
635 { | 635 { |
636 return height()->currentValue()->typeWithCalcResolved() != CSSPrimitiveValue
::UnitType::Percentage; | 636 return height()->currentValue()->typeWithCalcResolved() != CSSPrimitiveValue
::UnitType::Percentage; |
637 } | 637 } |
638 | 638 |
639 Length SVGSVGElement::intrinsicWidth() const | 639 float SVGSVGElement::intrinsicWidth() const |
640 { | 640 { |
641 if (width()->currentValue()->typeWithCalcResolved() == CSSPrimitiveValue::Un
itType::Percentage) | 641 if (width()->currentValue()->typeWithCalcResolved() == CSSPrimitiveValue::Un
itType::Percentage) |
642 return Length(0, Fixed); | 642 return 0; |
643 | 643 |
644 SVGLengthContext lengthContext(this); | 644 SVGLengthContext lengthContext(this); |
645 return Length(width()->currentValue()->value(lengthContext), Fixed); | 645 return width()->currentValue()->value(lengthContext); |
646 } | 646 } |
647 | 647 |
648 Length SVGSVGElement::intrinsicHeight() const | 648 float SVGSVGElement::intrinsicHeight() const |
649 { | 649 { |
650 if (height()->currentValue()->typeWithCalcResolved() == CSSPrimitiveValue::U
nitType::Percentage) | 650 if (height()->currentValue()->typeWithCalcResolved() == CSSPrimitiveValue::U
nitType::Percentage) |
651 return Length(0, Fixed); | 651 return 0; |
652 | 652 |
653 SVGLengthContext lengthContext(this); | 653 SVGLengthContext lengthContext(this); |
654 return Length(height()->currentValue()->value(lengthContext), Fixed); | 654 return height()->currentValue()->value(lengthContext); |
655 } | 655 } |
656 | 656 |
657 AffineTransform SVGSVGElement::viewBoxToViewTransform(float viewWidth, float vie
wHeight) const | 657 AffineTransform SVGSVGElement::viewBoxToViewTransform(float viewWidth, float vie
wHeight) const |
658 { | 658 { |
659 if (!m_useCurrentView || !m_viewSpec) | 659 if (!m_useCurrentView || !m_viewSpec) |
660 return SVGFitToViewBox::viewBoxToViewTransform(currentViewBoxRect(), pre
serveAspectRatio()->currentValue(), viewWidth, viewHeight); | 660 return SVGFitToViewBox::viewBoxToViewTransform(currentViewBoxRect(), pre
serveAspectRatio()->currentValue(), viewWidth, viewHeight); |
661 | 661 |
662 AffineTransform ctm = SVGFitToViewBox::viewBoxToViewTransform(currentViewBox
Rect(), m_viewSpec->preserveAspectRatio()->currentValue(), viewWidth, viewHeight
); | 662 AffineTransform ctm = SVGFitToViewBox::viewBoxToViewTransform(currentViewBox
Rect(), m_viewSpec->preserveAspectRatio()->currentValue(), viewWidth, viewHeight
); |
663 RefPtrWillBeRawPtr<SVGTransformList> transformList = m_viewSpec->transform()
; | 663 RefPtrWillBeRawPtr<SVGTransformList> transformList = m_viewSpec->transform()
; |
664 if (transformList->isEmpty()) | 664 if (transformList->isEmpty()) |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
759 visitor->trace(m_width); | 759 visitor->trace(m_width); |
760 visitor->trace(m_height); | 760 visitor->trace(m_height); |
761 visitor->trace(m_translation); | 761 visitor->trace(m_translation); |
762 visitor->trace(m_timeContainer); | 762 visitor->trace(m_timeContainer); |
763 visitor->trace(m_viewSpec); | 763 visitor->trace(m_viewSpec); |
764 SVGGraphicsElement::trace(visitor); | 764 SVGGraphicsElement::trace(visitor); |
765 SVGFitToViewBox::trace(visitor); | 765 SVGFitToViewBox::trace(visitor); |
766 } | 766 } |
767 | 767 |
768 } // namespace blink | 768 } // namespace blink |
OLD | NEW |