Flutter Engine
 
Loading...
Searching...
No Matches
metal_screenshot.h
Go to the documentation of this file.
1// 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_IMPELLER_GOLDEN_TESTS_METAL_SCREENSHOT_H_
6#define FLUTTER_IMPELLER_GOLDEN_TESTS_METAL_SCREENSHOT_H_
7
9
10#include <CoreFoundation/CoreFoundation.h>
11#include <CoreImage/CoreImage.h>
12#include <string>
13
15
16namespace fml {
17
18/// fml::CFRef retain and release implementations for CGImageRef.
19template <>
20struct CFRefTraits<CGImageRef> {
21 static constexpr CGImageRef kNullValue = nullptr;
22 static void Retain(CGImageRef instance) { CGImageRetain(instance); }
23 static void Release(CGImageRef instance) { CGImageRelease(instance); }
24};
25
26} // namespace fml
27
28namespace impeller {
29namespace testing {
30
31/// A screenshot that was produced from `MetalScreenshotter`.
33 public:
34 explicit MetalScreenshot(CGImageRef cgImage);
35
37
38 const uint8_t* GetBytes() const override;
39
40 size_t GetHeight() const override;
41
42 size_t GetWidth() const override;
43
44 size_t GetBytesPerRow() const override;
45
46 bool WriteToPNG(const std::string& path) const override;
47
48 private:
49 MetalScreenshot(const MetalScreenshot&) = delete;
50
51 MetalScreenshot& operator=(const MetalScreenshot&) = delete;
52 fml::CFRef<CGImageRef> cg_image_;
53 fml::CFRef<CFDataRef> pixel_data_;
54};
55} // namespace testing
56} // namespace impeller
57
58#endif // FLUTTER_IMPELLER_GOLDEN_TESTS_METAL_SCREENSHOT_H_
A screenshot that was produced from MetalScreenshotter.
const uint8_t * GetBytes() const override
Access raw data of the screenshot.
bool WriteToPNG(const std::string &path) const override
size_t GetHeight() const override
Returns the height of the image in pixels.
size_t GetWidth() const override
Returns the width of the image in pixels.
size_t GetBytesPerRow() const override
Returns number of bytes required to represent one row of the raw image.
VkInstance instance
Definition main.cc:64
DEF_SWITCHES_START aot vmservice shared library Name of the *so containing AOT compiled Dart assets for launching the service isolate vm snapshot The VM snapshot data that will be memory mapped as read only SnapshotAssetPath must be present isolate snapshot The isolate snapshot data that will be memory mapped as read only SnapshotAssetPath must be present cache dir path
Definition switch_defs.h:52
static void Release(CGImageRef instance)
static void Retain(CGImageRef instance)
Default retain and release implementations for CFRef.
Definition cf_utils.h:16
static constexpr T kNullValue
Definition cf_utils.h:17