| // 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> 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_ |