1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef ClipRectsCache_h
6 #define ClipRectsCache_h
8 #include "core/rendering/ClipRects.h"
11 #include "core/rendering/RenderBox.h" // For OverlayScrollbarSizeRelevancy.
16 enum ClipRectsCacheSlot {
17 // Relative to the ancestor treated as the root (e.g. transformed layer). Used for hit testing.
18 RootRelativeClipRects,
20 // Relative to the RenderView's layer. Used for compositing overlap testing.
23 // Relative to painting ancestor. Used for painting.
25 PaintingClipRectsIgnoringOverflowClip,
27 NumberOfClipRectsCacheSlots,
31 class ClipRectsCache {
32 WTF_MAKE_FAST_ALLOCATED;
38 , scrollbarRelevancy(IgnoreOverlayScrollbarSize)
43 const RenderLayer* root;
44 RefPtr<ClipRects> clipRects;
46 OverlayScrollbarSizeRelevancy scrollbarRelevancy;
50 Entry& get(ClipRectsCacheSlot slot)
52 ASSERT(slot < NumberOfClipRectsCacheSlots);
53 return m_entries[slot];
56 void clear(ClipRectsCacheSlot slot)
58 ASSERT(slot < NumberOfClipRectsCacheSlots);
59 m_entries[slot] = Entry();
63 Entry m_entries[NumberOfClipRectsCacheSlots];
68 #endif // ClipRectsCache_h