1 /* 2 * Copyright 2012 Google Inc. 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8 #ifndef SkSurface_Raster_DEFINED 9 #define SkSurface_Raster_DEFINED 10 11 #include "include/core/SkBitmap.h" 12 #include "include/core/SkImageInfo.h" 13 #include "include/core/SkRefCnt.h" 14 #include "include/core/SkSamplingOptions.h" 15 #include "include/core/SkScalar.h" 16 #include "src/image/SkSurface_Base.h" 17 18 #include <cstring> 19 20 class SkCanvas; 21 class SkCapabilities; 22 class SkImage; 23 class SkPaint; 24 class SkPixelRef; 25 class SkPixmap; 26 class SkSurface; 27 class SkSurfaceProps; 28 struct SkIRect; 29 30 class SkSurface_Raster : public SkSurface_Base { 31 public: 32 SkSurface_Raster(const SkImageInfo&, void*, size_t rb, 33 void (*releaseProc)(void* pixels, void* context), void* context, 34 const SkSurfaceProps*); 35 SkSurface_Raster(const SkImageInfo& info, sk_sp<SkPixelRef>, const SkSurfaceProps*); 36 37 // From SkSurface.h imageInfo()38 SkImageInfo imageInfo() const override { return fBitmap.info(); } 39 40 // From SkSurface_Base.h type()41 SkSurface_Base::Type type() const override { return SkSurface_Base::Type::kRaster; } 42 43 SkCanvas* onNewCanvas() override; 44 sk_sp<SkSurface> onNewSurface(const SkImageInfo&) override; 45 sk_sp<SkImage> onNewImageSnapshot(const SkIRect* subset) override; 46 void onWritePixels(const SkPixmap&, int x, int y) override; 47 void onDraw(SkCanvas*, SkScalar, SkScalar, const SkSamplingOptions&, const SkPaint*) override; 48 bool onCopyOnWrite(ContentChangeMode) override; 49 void onRestoreBackingMutability() override; 50 sk_sp<const SkCapabilities> onCapabilities() override; 51 52 private: 53 SkBitmap fBitmap; 54 bool fWeOwnThePixels; 55 56 using INHERITED = SkSurface_Base; 57 }; 58 59 #endif 60