OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2006 Apple Computer, Inc. | 2 * Copyright (C) 2006 Apple Computer, Inc. |
3 * Copyright (C) 2009 Google, Inc. | 3 * Copyright (C) 2009 Google, Inc. |
4 * Copyright (C) Research In Motion Limited 2010. All rights reserved. | 4 * Copyright (C) Research In Motion Limited 2010. 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 24 matching lines...) Expand all Loading... |
35 LayoutSVGForeignObject::LayoutSVGForeignObject(SVGForeignObjectElement* node) | 35 LayoutSVGForeignObject::LayoutSVGForeignObject(SVGForeignObjectElement* node) |
36 : LayoutSVGBlock(node) | 36 : LayoutSVGBlock(node) |
37 , m_needsTransformUpdate(true) | 37 , m_needsTransformUpdate(true) |
38 { | 38 { |
39 } | 39 } |
40 | 40 |
41 LayoutSVGForeignObject::~LayoutSVGForeignObject() | 41 LayoutSVGForeignObject::~LayoutSVGForeignObject() |
42 { | 42 { |
43 } | 43 } |
44 | 44 |
45 bool LayoutSVGForeignObject::isChildAllowed(LayoutObject* child, const LayoutSty
le& style) const | 45 bool LayoutSVGForeignObject::isChildAllowed(LayoutObject* child, const ComputedS
tyle& style) const |
46 { | 46 { |
47 // Disallow arbitary SVG content. Only allow proper <svg xmlns="svgNS"> subd
ocuments. | 47 // Disallow arbitary SVG content. Only allow proper <svg xmlns="svgNS"> subd
ocuments. |
48 return !child->isSVG() || child->isSVGRoot(); | 48 return !child->isSVG() || child->isSVGRoot(); |
49 } | 49 } |
50 | 50 |
51 void LayoutSVGForeignObject::paint(const PaintInfo& paintInfo, const LayoutPoint
&) | 51 void LayoutSVGForeignObject::paint(const PaintInfo& paintInfo, const LayoutPoint
&) |
52 { | 52 { |
53 SVGForeignObjectPainter(*this).paint(paintInfo); | 53 SVGForeignObjectPainter(*this).paint(paintInfo); |
54 } | 54 } |
55 | 55 |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
96 FloatPoint viewportLocation( | 96 FloatPoint viewportLocation( |
97 lengthContext.valueForLength(styleRef().svgStyle().x(), styleRef(), SVGL
engthMode::Width), | 97 lengthContext.valueForLength(styleRef().svgStyle().x(), styleRef(), SVGL
engthMode::Width), |
98 lengthContext.valueForLength(styleRef().svgStyle().y(), styleRef(), SVGL
engthMode::Height)); | 98 lengthContext.valueForLength(styleRef().svgStyle().y(), styleRef(), SVGL
engthMode::Height)); |
99 m_viewport = FloatRect(viewportLocation, FloatSize( | 99 m_viewport = FloatRect(viewportLocation, FloatSize( |
100 lengthContext.valueForLength(styleRef().width(), styleRef(), SVGLengthMo
de::Width), | 100 lengthContext.valueForLength(styleRef().width(), styleRef(), SVGLengthMo
de::Width), |
101 lengthContext.valueForLength(styleRef().height(), styleRef(), SVGLengthM
ode::Height))); | 101 lengthContext.valueForLength(styleRef().height(), styleRef(), SVGLengthM
ode::Height))); |
102 if (!updateCachedBoundariesInParents) | 102 if (!updateCachedBoundariesInParents) |
103 updateCachedBoundariesInParents = oldViewport != m_viewport; | 103 updateCachedBoundariesInParents = oldViewport != m_viewport; |
104 | 104 |
105 // Set box origin to the foreignObject x/y translation, so positioned object
s in XHTML content get correct | 105 // Set box origin to the foreignObject x/y translation, so positioned object
s in XHTML content get correct |
106 // positions. A regular LayoutBoxModelObject would pull this information fro
m LayoutStyle - in SVG those | 106 // positions. A regular LayoutBoxModelObject would pull this information fro
m ComputedStyle - in SVG those |
107 // properties are ignored for non <svg> elements, so we mimic what happens w
hen specifying them through CSS. | 107 // properties are ignored for non <svg> elements, so we mimic what happens w
hen specifying them through CSS. |
108 | 108 |
109 // FIXME: Investigate in location rounding issues - only affects LayoutSVGFo
reignObject & LayoutSVGText | 109 // FIXME: Investigate in location rounding issues - only affects LayoutSVGFo
reignObject & LayoutSVGText |
110 setLocation(roundedIntPoint(viewportLocation)); | 110 setLocation(roundedIntPoint(viewportLocation)); |
111 | 111 |
112 bool layoutChanged = everHadLayout() && selfNeedsLayout(); | 112 bool layoutChanged = everHadLayout() && selfNeedsLayout(); |
113 LayoutBlock::layout(); | 113 LayoutBlock::layout(); |
114 ASSERT(!needsLayout()); | 114 ASSERT(!needsLayout()); |
115 | 115 |
116 // If our bounds changed, notify the parents. | 116 // If our bounds changed, notify the parents. |
(...skipping 22 matching lines...) Expand all Loading... |
139 return false; | 139 return false; |
140 | 140 |
141 // FOs establish a stacking context, so we need to hit-test all layers. | 141 // FOs establish a stacking context, so we need to hit-test all layers. |
142 HitTestLocation hitTestLocation(roundedLayoutPoint(localPoint)); | 142 HitTestLocation hitTestLocation(roundedLayoutPoint(localPoint)); |
143 return LayoutBlock::nodeAtPoint(request, result, hitTestLocation, LayoutPoin
t(), HitTestForeground) | 143 return LayoutBlock::nodeAtPoint(request, result, hitTestLocation, LayoutPoin
t(), HitTestForeground) |
144 || LayoutBlock::nodeAtPoint(request, result, hitTestLocation, LayoutPoin
t(), HitTestFloat) | 144 || LayoutBlock::nodeAtPoint(request, result, hitTestLocation, LayoutPoin
t(), HitTestFloat) |
145 || LayoutBlock::nodeAtPoint(request, result, hitTestLocation, LayoutPoin
t(), HitTestChildBlockBackgrounds); | 145 || LayoutBlock::nodeAtPoint(request, result, hitTestLocation, LayoutPoin
t(), HitTestChildBlockBackgrounds); |
146 } | 146 } |
147 | 147 |
148 } | 148 } |
OLD | NEW |