45 if (!
info.validRowBytes(rowBytes)) {
50 static const size_t kMaxTotalSize =
SK_MaxS32;
51 if (size > kMaxTotalSize) {
59 void (*
releaseProc)(
void* pixels,
void* context),
void* context,
64 fWeOwnThePixels =
false;
73 fWeOwnThePixels =
true;
98 if (fWeOwnThePixels) {
102 pr->setTemporarilyImmutable();
120 pr->restoreMutability();
149 bmDev->replaceBitmapBackendForRasterSurface(fBitmap);
172 if (
nullptr == pixels) {
176 return sk_make_sp<SkSurface_Raster>(
info, pixels, rowBytes,
releaseProc, context, props);
183 return WrapPixels(
info, pixels, rowBytes,
nullptr,
nullptr, props);
196 SkASSERT(pr->rowBytes() == rowBytes);
198 return sk_make_sp<SkSurface_Raster>(
info, std::move(pr), props);
static void info(const char *fmt,...) SK_PRINTF_LIKE(1
static float prev(float f)
#define SkAssertResult(cond)
static void releaseProc(const void *ptr, void *context)
static bool SkImageInfoIsValid(const SkImageInfo &info)
SK_SPI sk_sp< SkImage > SkMakeImageFromRasterBitmap(const SkBitmap &, SkCopyPixelsMode)
@ kIfMutable_SkCopyPixelsMode
only copy src pixels if they are marked mutable
@ kAlways_SkCopyPixelsMode
always copy src pixels (even if they are marked immutable)
const SkPixelRef * SkBitmapImageGetPixelRef(const SkImage *rasterImage)
static int64_t sk_64_mul(int64_t a, int64_t b)
static constexpr int32_t SK_MaxS32
bool SkSurfaceValidateRasterInfo(const SkImageInfo &, size_t rb=kIgnoreRowBytesValue)
constexpr size_t kIgnoreRowBytesValue
bool SkSurfaceValidateRasterInfo(const SkImageInfo &info, size_t rowBytes)
sk_sp< SkImage > asImage() const
bool installPixels(const SkImageInfo &info, void *pixels, size_t rowBytes, void(*releaseProc)(void *addr, void *context), void *context)
SkPixelRef * pixelRef() const
size_t computeByteSize() const
bool writePixels(const SkPixmap &src, int dstX, int dstY)
const SkImageInfo & info() const
bool readPixels(const SkImageInfo &dstInfo, void *dstPixels, size_t dstRowBytes, int srcX, int srcY) const
bool setInfo(const SkImageInfo &imageInfo, size_t rowBytes=0)
void setPixelRef(sk_sp< SkPixelRef > pixelRef, int dx, int dy)
bool tryAllocPixels(const SkImageInfo &info, size_t rowBytes)
void drawImage(const SkImage *image, SkScalar left, SkScalar top)
static sk_sp< const SkCapabilities > RasterBackend()
sk_sp< SkImage > refCachedImage()
SkCanvas * getCachedCanvas()
bool hasCachedImage() const
void onDraw(SkCanvas *, SkScalar, SkScalar, const SkSamplingOptions &, const SkPaint *) override
SkCanvas * onNewCanvas() override
SkSurface_Raster(const SkImageInfo &, void *, size_t rb, void(*releaseProc)(void *pixels, void *context), void *context, const SkSurfaceProps *)
sk_sp< const SkCapabilities > onCapabilities() override
sk_sp< SkSurface > onNewSurface(const SkImageInfo &) override
bool onCopyOnWrite(ContentChangeMode) override
void onWritePixels(const SkPixmap &, int x, int y) override
void onRestoreBackingMutability() override
sk_sp< SkImage > onNewImageSnapshot(const SkIRect *subset) override
@ kDiscard_ContentChangeMode
discards surface on change
const SkSurfaceProps & props() const
SK_API sk_sp< SkPixelRef > MakeAllocate(const SkImageInfo &, size_t rowBytes)
SK_API sk_sp< SkSurface > Raster(const SkImageInfo &imageInfo, size_t rowBytes, const SkSurfaceProps *surfaceProps)
SK_API sk_sp< SkSurface > WrapPixels(const SkImageInfo &imageInfo, void *pixels, size_t rowBytes, const SkSurfaceProps *surfaceProps=nullptr)
void(void *pixels, void *context) PixelsReleaseProc
constexpr int32_t top() const
constexpr SkISize size() const
static constexpr SkIRect MakeWH(int32_t w, int32_t h)
constexpr int32_t left() const
bool contains(int32_t x, int32_t y) const
SkImageInfo makeDimensions(SkISize newSize) const