123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- // 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_RECORDER_H_
- #define UI_COMPOSITOR_PAINT_RECORDER_H_
- #include "base/memory/raw_ptr.h"
- #include "cc/paint/display_item_list.h"
- #include "cc/paint/record_paint_canvas.h"
- #include "ui/compositor/compositor_export.h"
- #include "ui/gfx/canvas.h"
- #include "ui/gfx/geometry/rect.h"
- namespace gfx {
- class Canvas;
- }
- namespace ui {
- class PaintCache;
- class PaintContext;
- // A class to hide the complexity behind setting up a recording into a
- // DisplayItem. This is meant to be short-lived within the scope of recording
- // taking place, the DisplayItem should be removed from the PaintRecorder once
- // recording is complete and can be cached.
- class COMPOSITOR_EXPORT PaintRecorder {
- public:
- // The |cache| is owned by the caller and must be kept alive while
- // PaintRecorder is in use. Canvas is bounded by |recording_size|.
- PaintRecorder(const PaintContext& context,
- const gfx::Size& recording_size,
- float recording_scale_x,
- float recording_scale_y,
- PaintCache* cache);
- PaintRecorder(const PaintContext& context, const gfx::Size& recording_size);
- PaintRecorder(const PaintRecorder&) = delete;
- PaintRecorder& operator=(const PaintRecorder&) = delete;
- ~PaintRecorder();
- // Gets a gfx::Canvas for painting into.
- gfx::Canvas* canvas() { return &canvas_; }
- private:
- const PaintContext& context_;
- scoped_refptr<cc::DisplayItemList> local_list_;
- cc::RecordPaintCanvas record_canvas_;
- gfx::Canvas canvas_;
- raw_ptr<PaintCache> cache_;
- gfx::Size recording_size_;
- };
- } // namespace ui
- #endif // UI_COMPOSITOR_PAINT_RECORDER_H_
|