Index: third_party/WebKit/Source/platform/graphics/paint/GeometryMapper.h |
diff --git a/third_party/WebKit/Source/platform/graphics/paint/GeometryMapper.h b/third_party/WebKit/Source/platform/graphics/paint/GeometryMapper.h |
index 9b1fff2b6638efb371ffc52789a749090fb94665..05514071738a79c7bf089d3533fdddf7725f2f62 100644 |
--- a/third_party/WebKit/Source/platform/graphics/paint/GeometryMapper.h |
+++ b/third_party/WebKit/Source/platform/graphics/paint/GeometryMapper.h |
@@ -156,7 +156,7 @@ |
const TransformPaintPropertyNode* ancestorTransformNode, |
bool& success); |
- const FloatClipRect& localToAncestorClipRectInternal( |
+ FloatClipRect localToAncestorClipRectInternal( |
const ClipPaintPropertyNode* descendant, |
const ClipPaintPropertyNode* ancestorClip, |
const TransformPaintPropertyNode* ancestorTransform, |
@@ -173,11 +173,45 @@ |
const PropertyTreeState& ancestorState, |
bool& success); |
+ // Maps from a transform node that is a descendant of the implied ancestor |
+ // transform node to the combined transform between the descendant's and the |
+ // ancestor's coordinate space. |
+ // The "implied ancestor" is the key of the m_transformCache object for which |
+ // this TransformCache is a value. |
+ using TransformCache = |
+ HashMap<const TransformPaintPropertyNode*, TransformationMatrix>; |
+ |
+ // Returns the transform cache for the given ancestor transform node. |
+ TransformCache& getTransformCache(const TransformPaintPropertyNode* ancestor); |
+ |
+ // Maps from a descendant clip node to its equivalent "clip visual rect" in |
+ // the local transform space of the implied ancestor clip node. The clip |
+ // visual rect is defined as the intersection of all clips between the |
+ // descendant and the ancestor (*not* including the ancestor) in the clip |
+ // tree, individually transformed from their localTransformSpace into the |
+ // ancestor's localTransformSpace. If one of the clips that contributes to it |
+ // has a border radius, the hasRadius() field is set to true. |
+ // The "implied ancestor" is the key of the TransformToClip cachefor which |
+ // this ClipCache is a value. |
+ using ClipCache = HashMap<const ClipPaintPropertyNode*, FloatClipRect>; |
+ |
+ using TransformToClip = |
+ HashMap<const TransformPaintPropertyNode*, std::unique_ptr<ClipCache>>; |
+ |
+ // Returns the clip cache for the given transform space relative to the |
+ // given ancestor clip node. |
+ ClipCache& getClipCache(const ClipPaintPropertyNode* ancestorClip, |
+ const TransformPaintPropertyNode* ancestorTransform); |
+ |
friend class GeometryMapperTest; |
friend class PaintLayerClipperTest; |
+ HashMap<const TransformPaintPropertyNode*, std::unique_ptr<TransformCache>> |
+ m_transformCache; |
+ HashMap<const ClipPaintPropertyNode*, std::unique_ptr<TransformToClip>> |
+ m_clipCache; |
+ |
const TransformationMatrix m_identity; |
- const FloatClipRect m_infiniteClip; |
DISALLOW_COPY_AND_ASSIGN(GeometryMapper); |
}; |