/* * 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