| // Copyright 2015 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 UI_COMPOSITOR_PAINT_CACHE_H_ |
| #define UI_COMPOSITOR_PAINT_CACHE_H_ |
| |
| #include "base/macros.h" |
| #include "cc/playback/drawing_display_item.h" |
| #include "ui/compositor/compositor_export.h" |
| #include "ui/gfx/geometry/rect.h" |
| |
| namespace ui { |
| class PaintContext; |
| class PaintRecorder; |
| |
| // A class that holds the output of a PaintRecorder to be reused when the |
| // object that created the PaintRecorder has not been changed/invalidated. |
| class COMPOSITOR_EXPORT PaintCache { |
| public: |
| PaintCache(); |
| ~PaintCache(); |
| |
| // Returns true if the PaintCache was able to insert a previously-saved |
| // painting output into the PaintContext. If it returns false, the caller |
| // needs to do the work of painting, which can be stored into the PaintCache |
| // to be used next time. |
| bool UseCache(const PaintContext& context, const gfx::Size& size_in_context); |
| |
| private: |
| // Only PaintRecorder can modify these. |
| friend PaintRecorder; |
| |
| void SetCache(const cc::DrawingDisplayItem& item); |
| |
| bool has_cache_; |
| cc::DrawingDisplayItem display_item_; |
| |
| DISALLOW_COPY_AND_ASSIGN(PaintCache); |
| }; |
| |
| } // namespace ui |
| |
| #endif // UI_COMPOSITOR_PAINT_CACHE_H_ |