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

Side by Side Diff: Source/core/rendering/svg/SVGRenderSupport.h

Issue 899163003: Move rendering/RenderObject to layout/LayoutObject. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 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) 2007 Rob Buis <buis@kde.org> 2 * Copyright (C) 2007 Rob Buis <buis@kde.org>
3 * Copyright (C) 2007 Nikolas Zimmermann <zimmermann@kde.org> 3 * Copyright (C) 2007 Nikolas Zimmermann <zimmermann@kde.org>
4 * Copyright (C) 2007 Eric Seidel <eric@webkit.org> 4 * Copyright (C) 2007 Eric Seidel <eric@webkit.org>
5 * Copyright (C) 2009 Google, Inc. All rights reserved. 5 * Copyright (C) 2009 Google, Inc. All rights reserved.
6 * Copyright (C) Research In Motion Limited 2010. All rights reserved. 6 * Copyright (C) Research In Motion Limited 2010. All rights reserved.
7 * 7 *
8 * This library is free software; you can redistribute it and/or 8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Library General Public 9 * modify it under the terms of the GNU Library General Public
10 * License as published by the Free Software Foundation; either 10 * License as published by the Free Software Foundation; either
(...skipping 20 matching lines...) Expand all
31 class AffineTransform; 31 class AffineTransform;
32 class FloatPoint; 32 class FloatPoint;
33 class FloatRect; 33 class FloatRect;
34 class GraphicsContext; 34 class GraphicsContext;
35 class GraphicsContextStateSaver; 35 class GraphicsContextStateSaver;
36 class PaintInvalidationState; 36 class PaintInvalidationState;
37 class LayoutRect; 37 class LayoutRect;
38 struct PaintInfo; 38 struct PaintInfo;
39 class RenderGeometryMap; 39 class RenderGeometryMap;
40 class LayoutLayerModelObject; 40 class LayoutLayerModelObject;
41 class RenderObject; 41 class LayoutObject;
42 class RenderStyle; 42 class RenderStyle;
43 class RenderSVGRoot; 43 class RenderSVGRoot;
44 class StrokeData; 44 class StrokeData;
45 class TransformState; 45 class TransformState;
46 46
47 class SVGRenderSupport { 47 class SVGRenderSupport {
48 public: 48 public:
49 // Shares child layouting code between RenderSVGRoot/RenderSVG(Hidden)Contai ner 49 // Shares child layouting code between RenderSVGRoot/RenderSVG(Hidden)Contai ner
50 static void layoutChildren(RenderObject*, bool selfNeedsLayout); 50 static void layoutChildren(LayoutObject*, bool selfNeedsLayout);
51 51
52 // Layout resources used by this node. 52 // Layout resources used by this node.
53 static void layoutResourcesIfNeeded(const RenderObject*); 53 static void layoutResourcesIfNeeded(const LayoutObject*);
54 54
55 // Helper function determining whether overflow is hidden. 55 // Helper function determining whether overflow is hidden.
56 static bool isOverflowHidden(const RenderObject*); 56 static bool isOverflowHidden(const LayoutObject*);
57 57
58 // Calculates the paintInvalidationRect in combination with filter, clipper and masker in local coordinates. 58 // Calculates the paintInvalidationRect in combination with filter, clipper and masker in local coordinates.
59 static void intersectPaintInvalidationRectWithResources(const RenderObject*, FloatRect&); 59 static void intersectPaintInvalidationRectWithResources(const LayoutObject*, FloatRect&);
60 60
61 // Determines whether a container needs to be laid out because it's filtered and a child is being laid out. 61 // Determines whether a container needs to be laid out because it's filtered and a child is being laid out.
62 static bool filtersForceContainerLayout(RenderObject*); 62 static bool filtersForceContainerLayout(LayoutObject*);
63 63
64 // Determines whether the passed point lies in a clipping area 64 // Determines whether the passed point lies in a clipping area
65 static bool pointInClippingArea(RenderObject*, const FloatPoint&); 65 static bool pointInClippingArea(LayoutObject*, const FloatPoint&);
66 66
67 // Transform |pointInParent| to |object|'s user-space and check if it is 67 // Transform |pointInParent| to |object|'s user-space and check if it is
68 // within the clipping area. Returns false if the transform is singular or 68 // within the clipping area. Returns false if the transform is singular or
69 // the point is outside the clipping area. 69 // the point is outside the clipping area.
70 static bool transformToUserSpaceAndCheckClipping(RenderObject*, const Affine Transform& localTransform, const FloatPoint& pointInParent, FloatPoint& localPoi nt); 70 static bool transformToUserSpaceAndCheckClipping(LayoutObject*, const Affine Transform& localTransform, const FloatPoint& pointInParent, FloatPoint& localPoi nt);
71 71
72 static void computeContainerBoundingBoxes(const RenderObject* container, Flo atRect& objectBoundingBox, bool& objectBoundingBoxValid, FloatRect& strokeBoundi ngBox, FloatRect& paintInvalidationBoundingBox); 72 static void computeContainerBoundingBoxes(const LayoutObject* container, Flo atRect& objectBoundingBox, bool& objectBoundingBoxValid, FloatRect& strokeBoundi ngBox, FloatRect& paintInvalidationBoundingBox);
73 73
74 // Important functions used by nearly all SVG renderers centralizing coordin ate transformations / paint invalidation rect calculations 74 // Important functions used by nearly all SVG renderers centralizing coordin ate transformations / paint invalidation rect calculations
75 static LayoutRect clippedOverflowRectForPaintInvalidation(const RenderObject *, const LayoutLayerModelObject* paintInvalidationContainer, const PaintInvalida tionState*); 75 static LayoutRect clippedOverflowRectForPaintInvalidation(const LayoutObject *, const LayoutLayerModelObject* paintInvalidationContainer, const PaintInvalida tionState*);
76 static const RenderSVGRoot& mapRectToSVGRootForPaintInvalidation(const Rende rObject*, const FloatRect& localPaintInvalidationRect, LayoutRect&); 76 static const RenderSVGRoot& mapRectToSVGRootForPaintInvalidation(const Layou tObject*, const FloatRect& localPaintInvalidationRect, LayoutRect&);
77 static void mapLocalToContainer(const RenderObject*, const LayoutLayerModelO bject* paintInvalidationContainer, TransformState&, bool* wasFixed = 0, const Pa intInvalidationState* = 0); 77 static void mapLocalToContainer(const LayoutObject*, const LayoutLayerModelO bject* paintInvalidationContainer, TransformState&, bool* wasFixed = 0, const Pa intInvalidationState* = 0);
78 static const RenderObject* pushMappingToContainer(const RenderObject*, const LayoutLayerModelObject* ancestorToStopAt, RenderGeometryMap&); 78 static const LayoutObject* pushMappingToContainer(const LayoutObject*, const LayoutLayerModelObject* ancestorToStopAt, RenderGeometryMap&);
79 79
80 // Shared between SVG renderers and resources. 80 // Shared between SVG renderers and resources.
81 static void applyStrokeStyleToContext(GraphicsContext*, const RenderStyle&, const RenderObject*); 81 static void applyStrokeStyleToContext(GraphicsContext*, const RenderStyle&, const LayoutObject*);
82 static void applyStrokeStyleToStrokeData(StrokeData*, const RenderStyle*, co nst RenderObject*); 82 static void applyStrokeStyleToStrokeData(StrokeData*, const RenderStyle*, co nst LayoutObject*);
83 83
84 // Update the GC state (on |paintInfo.context|) for painting |renderer| 84 // Update the GC state (on |paintInfo.context|) for painting |renderer|
85 // using |style|. |resourceMode| is used to decide between fill/stroke. 85 // using |style|. |resourceMode| is used to decide between fill/stroke.
86 // Previous state will be saved (if needed) using |stateSaver|. 86 // Previous state will be saved (if needed) using |stateSaver|.
87 static bool updateGraphicsContext(const PaintInfo&, GraphicsContextStateSave r&, const RenderStyle&, RenderObject&, RenderSVGResourceMode, const AffineTransf orm* additionalPaintServerTransform = 0); 87 static bool updateGraphicsContext(const PaintInfo&, GraphicsContextStateSave r&, const RenderStyle&, LayoutObject&, RenderSVGResourceMode, const AffineTransf orm* additionalPaintServerTransform = 0);
88 88
89 // Determines if any ancestor's transform has changed. 89 // Determines if any ancestor's transform has changed.
90 static bool transformToRootChanged(RenderObject*); 90 static bool transformToRootChanged(LayoutObject*);
91 91
92 // FIXME: These methods do not belong here. 92 // FIXME: These methods do not belong here.
93 static const RenderSVGRoot* findTreeRootObject(const RenderObject*); 93 static const RenderSVGRoot* findTreeRootObject(const LayoutObject*);
94 94
95 // Helper method for determining if a RenderObject marked as text (isText()= = true) 95 // Helper method for determining if a LayoutObject marked as text (isText()= = true)
96 // can/will be rendered as part of a <text>. 96 // can/will be rendered as part of a <text>.
97 static bool isRenderableTextNode(const RenderObject*); 97 static bool isRenderableTextNode(const LayoutObject*);
98 98
99 // Determines whether a svg node should isolate or not based on RenderStyle. 99 // Determines whether a svg node should isolate or not based on RenderStyle.
100 static bool willIsolateBlendingDescendantsForStyle(const RenderStyle*); 100 static bool willIsolateBlendingDescendantsForStyle(const RenderStyle*);
101 static bool willIsolateBlendingDescendantsForObject(const RenderObject*); 101 static bool willIsolateBlendingDescendantsForObject(const LayoutObject*);
102 template<typename RenderObjectType> 102 template<typename LayoutObjectType>
103 static bool computeHasNonIsolatedBlendingDescendants(const RenderObjectType* ); 103 static bool computeHasNonIsolatedBlendingDescendants(const LayoutObjectType* );
104 static bool isIsolationRequired(const RenderObject*); 104 static bool isIsolationRequired(const LayoutObject*);
105 105
106 private: 106 private:
107 static void updateObjectBoundingBox(FloatRect& objectBoundingBox, bool& obje ctBoundingBoxValid, RenderObject* other, FloatRect otherBoundingBox); 107 static void updateObjectBoundingBox(FloatRect& objectBoundingBox, bool& obje ctBoundingBoxValid, LayoutObject* other, FloatRect otherBoundingBox);
108 static bool layoutSizeOfNearestViewportChanged(const RenderObject* start); 108 static bool layoutSizeOfNearestViewportChanged(const LayoutObject* start);
109 }; 109 };
110 110
111 template <typename RenderObjectType> 111 template <typename LayoutObjectType>
112 bool SVGRenderSupport::computeHasNonIsolatedBlendingDescendants(const RenderObje ctType* object) 112 bool SVGRenderSupport::computeHasNonIsolatedBlendingDescendants(const LayoutObje ctType* object)
113 { 113 {
114 for (RenderObject* child = object->firstChild(); child; child = child->nextS ibling()) { 114 for (LayoutObject* child = object->firstChild(); child; child = child->nextS ibling()) {
115 if (child->isBlendingAllowed() && child->style()->hasBlendMode()) 115 if (child->isBlendingAllowed() && child->style()->hasBlendMode())
116 return true; 116 return true;
117 if (child->hasNonIsolatedBlendingDescendants() && !willIsolateBlendingDe scendantsForObject(child)) 117 if (child->hasNonIsolatedBlendingDescendants() && !willIsolateBlendingDe scendantsForObject(child))
118 return true; 118 return true;
119 } 119 }
120 return false; 120 return false;
121 } 121 }
122 122
123 } // namespace blink 123 } // namespace blink
124 124
125 #endif // SVGRenderSupport_h 125 #endif // SVGRenderSupport_h
OLDNEW
« no previous file with comments | « Source/core/rendering/svg/RenderSVGViewportContainer.h ('k') | Source/core/rendering/svg/SVGRenderSupport.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698