blob: 6dabfb9eda63d760ae6bc247bcba57ee3ab6f25e [file] [log] [blame]
Kaushik Iskac42fdc12022-04-01 05:40:36 -04001// Copyright 2013 The Flutter Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef FLUTTER_FLOW_LAYERS_OFFSCREEN_SURFACE_H_
6#define FLUTTER_FLOW_LAYERS_OFFSCREEN_SURFACE_H_
7
8#include "flutter/fml/logging.h"
9#include "flutter/fml/macros.h"
10
Jim Graham0d5b7802023-02-23 22:09:35 -080011#include "flutter/display_list/dl_canvas.h"
12#include "flutter/display_list/skia/dl_sk_canvas.h"
Kevin Lubick3e9eddd2023-04-07 11:27:24 -040013#include "third_party/skia/include/core/SkData.h"
14#include "third_party/skia/include/core/SkRefCnt.h"
15#include "third_party/skia/include/core/SkSize.h"
Kaushik Iskac42fdc12022-04-01 05:40:36 -040016#include "third_party/skia/include/core/SkSurface.h"
17
Kevin Lubick0513cef2023-03-14 16:47:22 -040018class GrDirectContext;
19
Kaushik Iskac42fdc12022-04-01 05:40:36 -040020namespace flutter {
21
22class OffscreenSurface {
23 public:
24 explicit OffscreenSurface(GrDirectContext* surface_context,
25 const SkISize& size);
26
27 ~OffscreenSurface() = default;
28
29 sk_sp<SkData> GetRasterData(bool compressed) const;
30
Jim Graham0d5b7802023-02-23 22:09:35 -080031 DlCanvas* GetCanvas();
Kaushik Iskac42fdc12022-04-01 05:40:36 -040032
33 bool IsValid() const;
34
35 private:
36 sk_sp<SkSurface> offscreen_surface_;
Jim Graham0d5b7802023-02-23 22:09:35 -080037 DlSkCanvasAdapter adapter_;
Kaushik Iskac42fdc12022-04-01 05:40:36 -040038
39 FML_DISALLOW_COPY_AND_ASSIGN(OffscreenSurface);
40};
41
42} // namespace flutter
43
44#endif // FLUTTER_FLOW_LAYERS_OFFSCREEN_SURFACE_H_