| /* |
| * Copyright 2025 Google LLC |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| #ifndef SkRecorder_DEFINED |
| #define SkRecorder_DEFINED |
| |
| #include "include/private/base/SkAPI.h" |
| |
| class SkCanvas; |
| class SkSurface; |
| |
| namespace skcpu { |
| class Recorder; |
| } |
| |
| class SK_API SkRecorder { |
| public: |
| SkRecorder() = default; |
| virtual ~SkRecorder() = default; |
| SkRecorder(const SkRecorder&) = delete; |
| SkRecorder(SkRecorder&&) = delete; |
| SkRecorder& operator=(const SkRecorder&) = delete; |
| |
| enum class Type { |
| kCPU, |
| kGanesh, |
| kGraphite, |
| }; |
| |
| virtual Type type() const = 0; |
| |
| virtual skcpu::Recorder* cpuRecorder() = 0; |
| |
| private: |
| |
| /** |
| * Attempts to create and return an SkCaptureCanvas that wraps the provided base canvas. |
| * Returns nullptr if capture is not enabled. |
| */ |
| virtual SkCanvas* makeCaptureCanvas(SkCanvas*) = 0; |
| virtual void createCaptureBreakpoint(SkSurface*) = 0; |
| |
| friend class SkSurface_Base; // for capture functionality |
| }; |
| |
| #endif |