| Index: src/core/SkCanvas.cpp
|
| diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp
|
| index 14372611f8cfbed8a667a0a3b9eeedaf853aa17f..d6f90df21a91449080f3bcbedb8f9b19cca7a0d3 100644
|
| --- a/src/core/SkCanvas.cpp
|
| +++ b/src/core/SkCanvas.cpp
|
| @@ -9,7 +9,6 @@
|
| #include "SkCanvasPriv.h"
|
| #include "SkBitmapDevice.h"
|
| #include "SkColorFilter.h"
|
| -#include "SkDeviceProperties.h"
|
| #include "SkDraw.h"
|
| #include "SkDrawable.h"
|
| #include "SkDrawFilter.h"
|
| @@ -537,6 +536,7 @@ SkBaseDevice* SkCanvas::init(SkBaseDevice* device, InitFlags flags) {
|
| fSurfaceBase = NULL;
|
|
|
| if (device) {
|
| + // TODO: remove this - the root device & canvas should always have same surfaceProps
|
| device->initForRootLayer(fProps.pixelGeometry());
|
| if (device->forceConservativeRasterClip()) {
|
| fConservativeRasterClip = true;
|
| @@ -565,8 +565,8 @@ static SkBitmap make_nopixels(int width, int height) {
|
|
|
| class SkNoPixelsBitmapDevice : public SkBitmapDevice {
|
| public:
|
| - SkNoPixelsBitmapDevice(const SkIRect& bounds)
|
| - : INHERITED(make_nopixels(bounds.width(), bounds.height()))
|
| + SkNoPixelsBitmapDevice(const SkIRect& bounds, const SkSurfaceProps& surfaceProps)
|
| + : INHERITED(make_nopixels(bounds.width(), bounds.height()), surfaceProps)
|
| {
|
| this->setOrigin(bounds.x(), bounds.y());
|
| }
|
| @@ -583,7 +583,7 @@ SkCanvas::SkCanvas(int width, int height, const SkSurfaceProps* props)
|
| inc_canvas();
|
|
|
| this->init(SkNEW_ARGS(SkNoPixelsBitmapDevice,
|
| - (SkIRect::MakeWH(width, height))), kDefault_InitFlags)->unref();
|
| + (SkIRect::MakeWH(width, height), fProps)), kDefault_InitFlags)->unref();
|
| }
|
|
|
| SkCanvas::SkCanvas(const SkIRect& bounds, InitFlags flags)
|
| @@ -592,9 +592,10 @@ SkCanvas::SkCanvas(const SkIRect& bounds, InitFlags flags)
|
| {
|
| inc_canvas();
|
|
|
| - this->init(SkNEW_ARGS(SkNoPixelsBitmapDevice, (bounds)), flags)->unref();
|
| + this->init(SkNEW_ARGS(SkNoPixelsBitmapDevice, (bounds, fProps)), flags)->unref();
|
| }
|
|
|
| +// TODO: remove this ctor
|
| SkCanvas::SkCanvas(SkBaseDevice* device, const SkSurfaceProps* props, InitFlags flags)
|
| : fMCStack(sizeof(MCRec), fMCRecStorage, sizeof(fMCRecStorage))
|
| , fProps(SkSurfacePropsCopyOrDefault(props))
|
| @@ -606,20 +607,29 @@ SkCanvas::SkCanvas(SkBaseDevice* device, const SkSurfaceProps* props, InitFlags
|
|
|
| SkCanvas::SkCanvas(SkBaseDevice* device)
|
| : fMCStack(sizeof(MCRec), fMCRecStorage, sizeof(fMCRecStorage))
|
| - , fProps(SkSurfaceProps::kLegacyFontHost_InitType)
|
| + , fProps(device->getLeakyProperties())
|
| {
|
| inc_canvas();
|
|
|
| this->init(device, kDefault_InitFlags);
|
| }
|
|
|
| +SkCanvas::SkCanvas(SkBaseDevice* device, InitFlags flags)
|
| + : fMCStack(sizeof(MCRec), fMCRecStorage, sizeof(fMCRecStorage))
|
| + , fProps(device->getLeakyProperties())
|
| +{
|
| + inc_canvas();
|
| +
|
| + this->init(device, flags);
|
| +}
|
| +
|
| SkCanvas::SkCanvas(const SkBitmap& bitmap, const SkSurfaceProps& props)
|
| : fMCStack(sizeof(MCRec), fMCRecStorage, sizeof(fMCRecStorage))
|
| , fProps(props)
|
| {
|
| inc_canvas();
|
|
|
| - SkAutoTUnref<SkBaseDevice> device(SkNEW_ARGS(SkBitmapDevice, (bitmap)));
|
| + SkAutoTUnref<SkBaseDevice> device(SkNEW_ARGS(SkBitmapDevice, (bitmap, fProps)));
|
| this->init(device, kDefault_InitFlags);
|
| }
|
|
|
| @@ -629,7 +639,7 @@ SkCanvas::SkCanvas(const SkBitmap& bitmap)
|
| {
|
| inc_canvas();
|
|
|
| - SkAutoTUnref<SkBaseDevice> device(SkNEW_ARGS(SkBitmapDevice, (bitmap)));
|
| + SkAutoTUnref<SkBaseDevice> device(SkNEW_ARGS(SkBitmapDevice, (bitmap, fProps)));
|
| this->init(device, kDefault_InitFlags);
|
| }
|
|
|
| @@ -1039,8 +1049,8 @@ void SkCanvas::internalSaveLayer(const SkRect* bounds, const SkPaint* paint, Sav
|
| SkBaseDevice* newDev = device->onCreateDevice(createInfo, paint);
|
| if (NULL == newDev) {
|
| // If onCreateDevice didn't succeed, try raster (e.g. PDF couldn't handle the paint)
|
| - const SkDeviceProperties deviceProps(createInfo.fPixelGeometry);
|
| - newDev = SkBitmapDevice::Create(createInfo.fInfo, &deviceProps);
|
| + const SkSurfaceProps surfaceProps(0, createInfo.fPixelGeometry);
|
| + newDev = SkBitmapDevice::Create(createInfo.fInfo, &surfaceProps);
|
| if (NULL == newDev) {
|
| SkErrorInternals::SetError(kInternalError_SkError,
|
| "Unable to create device for layer.");
|
|
|