| /* |
| * Copyright 2026 Google LLC |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| #ifndef GrMippedBitmap_DEFINED |
| #define GrMippedBitmap_DEFINED |
| |
| #include "include/core/SkAlphaType.h" |
| #include "include/core/SkBitmap.h" |
| #include "include/core/SkImageInfo.h" |
| #include "include/core/SkPixelRef.h" |
| #include "include/core/SkRefCnt.h" |
| #include "src/core/SkMipmap.h" |
| |
| #include <optional> |
| |
| class SkMipmap; |
| |
| // A wrapper for an immutable SkBitmap that includes ganesh-specific things, such as mipmaps. |
| class GrMippedBitmap { |
| public: |
| explicit GrMippedBitmap(SkBitmap b) : fBitmap(b) {} |
| explicit GrMippedBitmap(SkBitmap b, sk_sp<const SkMipmap> mipmaps) |
| : fBitmap(b), fMips(mipmaps) {} |
| |
| ~GrMippedBitmap() = default; |
| GrMippedBitmap(const GrMippedBitmap&) = default; |
| GrMippedBitmap(GrMippedBitmap&&) = default; |
| GrMippedBitmap& operator=(const GrMippedBitmap&) = default; |
| GrMippedBitmap& operator=(GrMippedBitmap&&) = default; |
| |
| SkAlphaType alphaType() const { return fBitmap.alphaType(); } |
| SkBitmap bitmap() const { return fBitmap; } |
| SkColorType colorType() const { return fBitmap.colorType(); } |
| sk_sp<const SkMipmap> mips() const { return fMips; } |
| |
| using ReleaseProc = void(void* pixels, void* context); |
| |
| static std::optional<GrMippedBitmap> Make( |
| SkImageInfo, const void* pixels, size_t rowBytes, ReleaseProc, void* context); |
| static std::optional<GrMippedBitmap> Make(SkImageInfo ii, const void* pixels, size_t rowBytes) { |
| return Make(ii, pixels, rowBytes, nullptr, nullptr); |
| } |
| static std::optional<GrMippedBitmap> Make(const SkPixmap& p) { |
| return Make(p.info(), p.addr(), p.rowBytes()); |
| } |
| |
| private: |
| SkBitmap fBitmap; |
| sk_sp<const SkMipmap> fMips; |
| }; |
| |
| #endif |