OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2013 Samsung Electronics. All rights reserved. | 2 * Copyright (C) 2013 Samsung Electronics. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 28 matching lines...) Expand all Loading... |
39 | 39 |
40 namespace blink { | 40 namespace blink { |
41 | 41 |
42 SVGGeometryElement::SVGGeometryElement(const QualifiedName& tagName, Document& d
ocument, ConstructionType constructionType) | 42 SVGGeometryElement::SVGGeometryElement(const QualifiedName& tagName, Document& d
ocument, ConstructionType constructionType) |
43 : SVGGraphicsElement(tagName, document, constructionType) | 43 : SVGGraphicsElement(tagName, document, constructionType) |
44 { | 44 { |
45 } | 45 } |
46 | 46 |
47 bool SVGGeometryElement::isPointInFill(SVGPointTearOff* point) const | 47 bool SVGGeometryElement::isPointInFill(SVGPointTearOff* point) const |
48 { | 48 { |
49 document().updateLayoutIgnorePendingStylesheets(); | 49 document().updateStyleAndLayoutIgnorePendingStylesheets(); |
50 | 50 |
51 // FIXME: Eventually we should support isPointInFill for display:none elemen
ts. | 51 // FIXME: Eventually we should support isPointInFill for display:none elemen
ts. |
52 if (!layoutObject() || !layoutObject()->isSVGShape()) | 52 if (!layoutObject() || !layoutObject()->isSVGShape()) |
53 return false; | 53 return false; |
54 | 54 |
55 HitTestRequest request(HitTestRequest::ReadOnly); | 55 HitTestRequest request(HitTestRequest::ReadOnly); |
56 PointerEventsHitRules hitRules(PointerEventsHitRules::SVG_GEOMETRY_HITTESTIN
G, request, layoutObject()->style()->pointerEvents()); | 56 PointerEventsHitRules hitRules(PointerEventsHitRules::SVG_GEOMETRY_HITTESTIN
G, request, layoutObject()->style()->pointerEvents()); |
57 hitRules.canHitStroke = false; | 57 hitRules.canHitStroke = false; |
58 return toLayoutSVGShape(layoutObject())->nodeAtFloatPointInternal(request, p
oint->target()->value(), hitRules); | 58 return toLayoutSVGShape(layoutObject())->nodeAtFloatPointInternal(request, p
oint->target()->value(), hitRules); |
59 } | 59 } |
60 | 60 |
61 bool SVGGeometryElement::isPointInStroke(SVGPointTearOff* point) const | 61 bool SVGGeometryElement::isPointInStroke(SVGPointTearOff* point) const |
62 { | 62 { |
63 document().updateLayoutIgnorePendingStylesheets(); | 63 document().updateStyleAndLayoutIgnorePendingStylesheets(); |
64 | 64 |
65 // FIXME: Eventually we should support isPointInStroke for display:none elem
ents. | 65 // FIXME: Eventually we should support isPointInStroke for display:none elem
ents. |
66 if (!layoutObject() || !layoutObject()->isSVGShape()) | 66 if (!layoutObject() || !layoutObject()->isSVGShape()) |
67 return false; | 67 return false; |
68 | 68 |
69 HitTestRequest request(HitTestRequest::ReadOnly); | 69 HitTestRequest request(HitTestRequest::ReadOnly); |
70 PointerEventsHitRules hitRules(PointerEventsHitRules::SVG_GEOMETRY_HITTESTIN
G, request, layoutObject()->style()->pointerEvents()); | 70 PointerEventsHitRules hitRules(PointerEventsHitRules::SVG_GEOMETRY_HITTESTIN
G, request, layoutObject()->style()->pointerEvents()); |
71 hitRules.canHitFill = false; | 71 hitRules.canHitFill = false; |
72 return toLayoutSVGShape(layoutObject())->nodeAtFloatPointInternal(request, p
oint->target()->value(), hitRules); | 72 return toLayoutSVGShape(layoutObject())->nodeAtFloatPointInternal(request, p
oint->target()->value(), hitRules); |
73 } | 73 } |
74 | 74 |
75 void SVGGeometryElement::toClipPath(Path& path) const | 75 void SVGGeometryElement::toClipPath(Path& path) const |
76 { | 76 { |
77 path = asPath(); | 77 path = asPath(); |
78 path.transform(calculateAnimatedLocalTransform()); | 78 path.transform(calculateAnimatedLocalTransform()); |
79 | 79 |
80 ASSERT(layoutObject()); | 80 ASSERT(layoutObject()); |
81 ASSERT(layoutObject()->style()); | 81 ASSERT(layoutObject()->style()); |
82 path.setWindRule(layoutObject()->style()->svgStyle().clipRule()); | 82 path.setWindRule(layoutObject()->style()->svgStyle().clipRule()); |
83 } | 83 } |
84 | 84 |
85 LayoutObject* SVGGeometryElement::createLayoutObject(const ComputedStyle&) | 85 LayoutObject* SVGGeometryElement::createLayoutObject(const ComputedStyle&) |
86 { | 86 { |
87 // By default, any subclass is expected to do path-based drawing. | 87 // By default, any subclass is expected to do path-based drawing. |
88 return new LayoutSVGPath(this); | 88 return new LayoutSVGPath(this); |
89 } | 89 } |
90 | 90 |
91 } // namespace blink | 91 } // namespace blink |
OLD | NEW |