// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef SKY_ENGINE_CORE_RENDERING_CLIPRECTSCACHE_H_ #define SKY_ENGINE_CORE_RENDERING_CLIPRECTSCACHE_H_ #include "sky/engine/core/rendering/ClipRects.h" namespace blink { enum ClipRectsCacheSlot { // Relative to the ancestor treated as the root (e.g. transformed layer). Used for hit testing. RootRelativeClipRects, // Relative to painting ancestor. Used for painting. PaintingClipRects, NumberOfClipRectsCacheSlots, UncachedClipRects, }; class ClipRectsCache { WTF_MAKE_FAST_ALLOCATED; public: struct Entry { Entry() : root(0) { } const RenderLayer* root; RefPtr clipRects; }; Entry& get(ClipRectsCacheSlot slot) { ASSERT(slot < NumberOfClipRectsCacheSlots); return m_entries[slot]; } void clear(ClipRectsCacheSlot slot) { ASSERT(slot < NumberOfClipRectsCacheSlots); m_entries[slot] = Entry(); } private: Entry m_entries[NumberOfClipRectsCacheSlots]; }; } // namespace blink #endif // SKY_ENGINE_CORE_RENDERING_CLIPRECTSCACHE_H_