blob: dc3ebf697c3d01c78beb8e6ddc7d6018f855625f [file] [log] [blame]
// Copyright 2013 The Flutter 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 FLUTTER_IMPELLER_GOLDEN_TESTS_METAL_SCREENSHOT_H_
#define FLUTTER_IMPELLER_GOLDEN_TESTS_METAL_SCREENSHOT_H_
#include "flutter/impeller/golden_tests/screenshot.h"
#include <CoreFoundation/CoreFoundation.h>
#include <CoreImage/CoreImage.h>
#include <string>
#include "flutter/fml/macros.h"
namespace impeller {
namespace testing {
/// A screenshot that was produced from `MetalScreenshotter`.
class MetalScreenshot : public Screenshot {
public:
explicit MetalScreenshot(CGImageRef cgImage);
~MetalScreenshot();
const uint8_t* GetBytes() const override;
size_t GetHeight() const override;
size_t GetWidth() const override;
size_t GetBytesPerRow() const override;
bool WriteToPNG(const std::string& path) const override;
private:
MetalScreenshot(const MetalScreenshot&) = delete;
MetalScreenshot& operator=(const MetalScreenshot&) = delete;
CGImageRef cg_image_;
CFDataRef pixel_data_;
};
} // namespace testing
} // namespace impeller
#endif // FLUTTER_IMPELLER_GOLDEN_TESTS_METAL_SCREENSHOT_H_