| Index: include/core/SkSurface.h
|
| diff --git a/include/core/SkSurface.h b/include/core/SkSurface.h
|
| index 1871c676f21e56a9a6e0a66018836fcc7c534ade..0e238f8429cbfdda1c13628af7b8bc2d27b54418 100644
|
| --- a/include/core/SkSurface.h
|
| +++ b/include/core/SkSurface.h
|
| @@ -10,6 +10,7 @@
|
|
|
| #include "SkRefCnt.h"
|
| #include "SkImage.h"
|
| +#include "SkSurfaceProps.h"
|
|
|
| class SkCanvas;
|
| class SkPaint;
|
| @@ -35,7 +36,8 @@ public:
|
| * If the requested surface cannot be created, or the request is not a
|
| * supported configuration, NULL will be returned.
|
| */
|
| - static SkSurface* NewRasterDirect(const SkImageInfo&, void* pixels, size_t rowBytes);
|
| + static SkSurface* NewRasterDirect(const SkImageInfo&, void* pixels, size_t rowBytes,
|
| + const SkSurfaceProps* = NULL);
|
|
|
| /**
|
| * The same as NewRasterDirect, but also accepts a call-back routine, which is invoked
|
| @@ -43,7 +45,7 @@ public:
|
| */
|
| static SkSurface* NewRasterDirectReleaseProc(const SkImageInfo&, void* pixels, size_t rowBytes,
|
| void (*releaseProc)(void* pixels, void* context),
|
| - void* context);
|
| + void* context, const SkSurfaceProps* = NULL);
|
|
|
| /**
|
| * Return a new surface, with the memory for the pixels automatically
|
| @@ -52,45 +54,36 @@ public:
|
| * If the requested surface cannot be created, or the request is not a
|
| * supported configuration, NULL will be returned.
|
| */
|
| - static SkSurface* NewRaster(const SkImageInfo&);
|
| + static SkSurface* NewRaster(const SkImageInfo&, const SkSurfaceProps* = NULL);
|
|
|
| /**
|
| * Helper version of NewRaster. It creates a SkImageInfo with the
|
| * specified width and height, and populates the rest of info to match
|
| * pixels in SkPMColor format.
|
| */
|
| - static SkSurface* NewRasterPMColor(int width, int height) {
|
| - return NewRaster(SkImageInfo::MakeN32Premul(width, height));
|
| + static SkSurface* NewRasterPMColor(int width, int height, const SkSurfaceProps* props = NULL) {
|
| + return NewRaster(SkImageInfo::MakeN32Premul(width, height), props);
|
| }
|
|
|
| /**
|
| - * Text rendering modes that can be passed to NewRenderTarget*
|
| - */
|
| - enum TextRenderMode {
|
| - /**
|
| - * This will use the standard text rendering method
|
| - */
|
| - kStandard_TextRenderMode,
|
| - /**
|
| - * This will use signed distance fields for text rendering when possible
|
| - */
|
| - kDistanceField_TextRenderMode,
|
| - };
|
| -
|
| - /**
|
| * Return a new surface using the specified render target.
|
| - * The pixels in the rendertarget are not cleared or otherwised changed when the surface
|
| - * is created.
|
| */
|
| - static SkSurface* NewRenderTargetDirect(GrRenderTarget*,
|
| - TextRenderMode trm = kStandard_TextRenderMode);
|
| -
|
| + static SkSurface* NewRenderTargetDirect(GrRenderTarget*, const SkSurfaceProps*);
|
| +
|
| + static SkSurface* NewRenderTargetDirect(GrRenderTarget* target) {
|
| + return NewRenderTargetDirect(target, NULL);
|
| + }
|
| +
|
| /**
|
| * Return a new surface whose contents will be drawn to an offscreen
|
| * render target, allocated by the surface.
|
| */
|
| - static SkSurface* NewRenderTarget(GrContext*, const SkImageInfo&, int sampleCount = 0,
|
| - TextRenderMode trm = kStandard_TextRenderMode);
|
| + static SkSurface* NewRenderTarget(GrContext*, const SkImageInfo&, int sampleCount,
|
| + const SkSurfaceProps* = NULL);
|
| +
|
| + static SkSurface* NewRenderTarget(GrContext* gr, const SkImageInfo& info) {
|
| + return NewRenderTarget(gr, info, 0, NULL);
|
| + }
|
|
|
| /**
|
| * Return a new surface whose contents will be drawn to an offscreen
|
| @@ -104,8 +97,33 @@ public:
|
| * Note: Scratch textures count against the GrContext's cached resource
|
| * budget.
|
| */
|
| - static SkSurface* NewScratchRenderTarget(GrContext*, const SkImageInfo&, int sampleCount = 0,
|
| - TextRenderMode trm = kStandard_TextRenderMode);
|
| + static SkSurface* NewScratchRenderTarget(GrContext*, const SkImageInfo&, int sampleCount,
|
| + const SkSurfaceProps* = NULL);
|
| +
|
| + static SkSurface* NewScratchRenderTarget(GrContext* gr, const SkImageInfo& info) {
|
| + return NewScratchRenderTarget(gr, info, 0, NULL);
|
| + }
|
| +
|
| +#ifdef SK_SUPPORT_LEGACY_TEXTRENDERMODE
|
| + /**
|
| + * Text rendering modes that can be passed to NewRenderTarget*
|
| + */
|
| + enum TextRenderMode {
|
| + /**
|
| + * This will use the standard text rendering method
|
| + */
|
| + kStandard_TextRenderMode,
|
| + /**
|
| + * This will use signed distance fields for text rendering when possible
|
| + */
|
| + kDistanceField_TextRenderMode,
|
| + };
|
| + static SkSurface* NewRenderTargetDirect(GrRenderTarget*, TextRenderMode);
|
| + static SkSurface* NewRenderTarget(GrContext*, const SkImageInfo&, int sampleCount,
|
| + TextRenderMode);
|
| + static SkSurface* NewScratchRenderTarget(GrContext*, const SkImageInfo&, int sampleCount,
|
| + TextRenderMode);
|
| +#endif
|
|
|
| int width() const { return fWidth; }
|
| int height() const { return fHeight; }
|
| @@ -194,9 +212,11 @@ public:
|
| */
|
| const void* peekPixels(SkImageInfo* info, size_t* rowBytes);
|
|
|
| + const SkSurfaceProps& props() const { return fProps; }
|
| +
|
| protected:
|
| - SkSurface(int width, int height);
|
| - SkSurface(const SkImageInfo&);
|
| + SkSurface(int width, int height, const SkSurfaceProps*);
|
| + SkSurface(const SkImageInfo&, const SkSurfaceProps*);
|
|
|
| // called by subclass if their contents have changed
|
| void dirtyGenerationID() {
|
| @@ -204,9 +224,10 @@ protected:
|
| }
|
|
|
| private:
|
| - const int fWidth;
|
| - const int fHeight;
|
| - uint32_t fGenerationID;
|
| + const SkSurfaceProps fProps;
|
| + const int fWidth;
|
| + const int fHeight;
|
| + uint32_t fGenerationID;
|
|
|
| typedef SkRefCnt INHERITED;
|
| };
|
|
|