Chromium Code Reviews| Index: include/core/SkCanvas.h |
| diff --git a/include/core/SkCanvas.h b/include/core/SkCanvas.h |
| index ec14829ca85296d12d79d27a04073c6ee587c20e..e2cfa5ebf632372f21f82675c42cf92bd9ea4f41 100644 |
| --- a/include/core/SkCanvas.h |
| +++ b/include/core/SkCanvas.h |
| @@ -33,6 +33,7 @@ class SkPath; |
| class SkPicture; |
| class SkPixmap; |
| class SkRasterClip; |
| +class SkRasterCanvasLayerAllocator; |
| class SkRRect; |
| struct SkRSXform; |
| class SkSurface; |
| @@ -1219,6 +1220,12 @@ public: |
| */ |
| void replayClips(ClipVisitor*) const; |
| + /** |
| + * Returns any OS-specific native context backing this SkCanvas, |
| + * or nullptr. |
| + */ |
| + void* getTopLayerNative() const; |
| + |
| /////////////////////////////////////////////////////////////////////////// |
| // don't call |
| @@ -1413,7 +1420,7 @@ private: |
| enum { |
| kMCRecSize = 128, // most recent measurement |
| kMCRecCount = 32, // common depth for save/restores |
| - kDeviceCMSize = 176, // most recent measurement |
| + kDeviceCMSize = 192, // most recent measurement |
| }; |
| intptr_t fMCRecStorage[kMCRecSize * kMCRecCount / sizeof(intptr_t)]; |
| intptr_t fDeviceCMStorage[kDeviceCMSize / sizeof(intptr_t)]; |
| @@ -1450,6 +1457,7 @@ private: |
| friend class SkPictureImageFilter; // SkCanvas(SkBaseDevice*, SkSurfaceProps*, InitFlags) |
| friend class SkPictureRecord; // predrawNotify (why does it need it? <reed>) |
| friend class SkPicturePlayback; // SaveFlagsToSaveLayerFlags |
| + friend class SkRasterCanvasLayerAllocator; |
| enum InitFlags { |
| kDefault_InitFlags = 0, |
| @@ -1457,6 +1465,7 @@ private: |
| }; |
| SkCanvas(const SkIRect& bounds, InitFlags); |
| SkCanvas(SkBaseDevice* device, InitFlags); |
| + SkCanvas(const SkBitmap& bitmap, sk_sp<SkRasterCanvasLayerAllocator>); |
|
tomhudson
2016/05/26 16:36:17
Figuring out lifetime here is a little awkward - t
reed1
2016/07/12 19:52:39
I think unique_ptr as a parameter type is fine. No
|
| void resetForNextPicture(const SkIRect& bounds); |
| @@ -1468,7 +1477,7 @@ private: |
| // - internalSaveLayer |
| void setupDevice(SkBaseDevice*); |
| - SkBaseDevice* init(SkBaseDevice*, InitFlags); |
| + SkBaseDevice* init(SkBaseDevice*, InitFlags, sk_sp<SkRasterCanvasLayerAllocator>); |
| /** |
| * Gets the bounds of the top level layer in global canvas coordinates. We don't want this |
| @@ -1543,6 +1552,8 @@ private: |
| void validateClip() const {} |
| #endif |
| + sk_sp<SkRasterCanvasLayerAllocator> fAllocator; |
| + |
| typedef SkRefCnt INHERITED; |
| }; |