Index: include/core/SkCanvas.h |
diff --git a/include/core/SkCanvas.h b/include/core/SkCanvas.h |
index 5088d7ded5268b9e86808c3c7d0148c7bcc891a4..77038c3067b2803bda471e5d8e6d9daafbf907c4 100644 |
--- a/include/core/SkCanvas.h |
+++ b/include/core/SkCanvas.h |
@@ -16,6 +16,7 @@ |
#include "SkRefCnt.h" |
#include "SkPath.h" |
#include "SkRegion.h" |
+#include "SkSurfaceProps.h" |
#include "SkXfermode.h" |
#ifdef SK_SUPPORT_LEGACY_DRAWTEXT_VIRTUAL |
@@ -200,8 +201,12 @@ public: |
* Create a new surface matching the specified info, one that attempts to |
* be maximally compatible when used with this canvas. If there is no matching Surface type, |
* NULL is returned. |
+ * |
+ * If surfaceprops is specified, those are passed to the new surface, otherwise the new surface |
+ * inherits the properties of the surface that owns this canvas. If this canvas has no parent |
+ * surface, then the new surface is created with default properties. |
*/ |
- SkSurface* newSurface(const SkImageInfo&); |
+ SkSurface* newSurface(const SkImageInfo&, const SkSurfaceProps* = NULL); |
/** |
* Return the GPU context of the device that is associated with the canvas. |
@@ -1192,7 +1197,7 @@ public: |
protected: |
// default impl defers to getDevice()->newSurface(info) |
- virtual SkSurface* onNewSurface(const SkImageInfo&); |
+ virtual SkSurface* onNewSurface(const SkImageInfo&, const SkSurfaceProps&); |
// default impl defers to its device |
virtual const void* onPeekPixels(SkImageInfo*, size_t* rowBytes); |
@@ -1282,6 +1287,8 @@ private: |
// the first N recs that can fit here mean we won't call malloc |
uint32_t fMCRecStorage[32]; |
+ const SkSurfaceProps fProps; |
+ |
int fSaveLayerCount; // number of successful saveLayer calls |
int fCullCount; // number of active culls |
@@ -1311,14 +1318,20 @@ private: |
kDefault_InitFlags = 0, |
kConservativeRasterClip_InitFlag = 1 << 0, |
}; |
- SkCanvas(int width, int height, InitFlags flags); |
- SkCanvas(SkBaseDevice*, InitFlags flags); |
+ SkCanvas(int width, int height, InitFlags); |
+ SkCanvas(SkBaseDevice*, const SkSurfaceProps*, InitFlags); |
+ SkCanvas(const SkBitmap&, const SkSurfaceProps&); |
// needs gettotalclip() |
friend SkCanvasState* SkCanvasStateUtils::CaptureCanvasState(SkCanvas*); |
SkBaseDevice* createLayerDevice(const SkImageInfo&); |
+ // call this each time we attach ourselves to a device |
+ // - constructor |
+ // - internalSaveLayer |
+ void setupDevice(SkBaseDevice*); |
+ |
SkBaseDevice* init(SkBaseDevice*, InitFlags); |
/** |