blob: f6cdf1ebc0ace33763560b797daf4be7869050fa [file] [log] [blame]
/*
* Copyright 2023 Google LLC
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#ifndef SkImageGeneratorPriv_DEFINED
#define SkImageGeneratorPriv_DEFINED
#include "include/core/SkRefCnt.h" // IWYU pragma: keep
#include <memory>
#include <optional>
class SkColorSpace;
class SkData;
class SkImageGenerator;
class SkMatrix;
class SkPaint;
class SkPicture;
class SkSurfaceProps;
enum SkAlphaType : int;
namespace SkImages { enum class BitDepth; }
struct SkISize;
namespace SkImageGenerators {
/** Return a new image generator backed by the specified picture. If the size is empty or
* the picture is NULL, this returns NULL.
* The optional matrix and paint arguments are passed to drawPicture() at rasterization
* time.
*/
std::unique_ptr<SkImageGenerator> MakeFromPicture(const SkISize&,
sk_sp<SkPicture>,
const SkMatrix*,
const SkPaint*,
SkImages::BitDepth,
sk_sp<SkColorSpace>,
SkSurfaceProps props);
std::unique_ptr<SkImageGenerator> MakeFromPicture(const SkISize&,
sk_sp<SkPicture>,
const SkMatrix*,
const SkPaint*,
SkImages::BitDepth,
sk_sp<SkColorSpace>);
/**
* If the default image decoder system can interpret the specified (encoded) data, then
* this returns a new ImageGenerator for it. Otherwise this returns NULL. Either way
* the caller is still responsible for managing their ownership of the data.
* By default, images will be converted to premultiplied pixels. The alpha type can be
* overridden by specifying kPremul_SkAlphaType or kUnpremul_SkAlphaType. Specifying
* kOpaque_SkAlphaType is not supported, and will return NULL.
*/
std::unique_ptr<SkImageGenerator> MakeFromEncoded(sk_sp<SkData>,
std::optional<SkAlphaType> = std::nullopt);
}
#endif