Allow pictures to have a full bounds
This reverts commit 7c4cdd2c5b7b6c71fa0e7612594f7885f2dbf264.
BUG=skia:
Review URL: https://codereview.chromium.org/738083002
diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp
index 4fda7a3..31a9a79 100644
--- a/src/core/SkCanvas.cpp
+++ b/src/core/SkCanvas.cpp
@@ -431,7 +431,7 @@
}
device->onAttachToCanvas(this);
fMCRec->fLayer->fDevice = SkRef(device);
- fMCRec->fRasterClip.setRect(SkIRect::MakeWH(device->width(), device->height()));
+ fMCRec->fRasterClip.setRect(device->getGlobalBounds());
}
return device;
}
@@ -453,7 +453,11 @@
class SkNoPixelsBitmapDevice : public SkBitmapDevice {
public:
- SkNoPixelsBitmapDevice(int width, int height) : INHERITED(make_nopixels(width, height)) {}
+ SkNoPixelsBitmapDevice(const SkIRect& bounds)
+ : INHERITED(make_nopixels(bounds.width(), bounds.height()))
+ {
+ this->setOrigin(bounds.x(), bounds.y());
+ }
private:
@@ -466,16 +470,17 @@
{
inc_canvas();
- this->init(SkNEW_ARGS(SkNoPixelsBitmapDevice, (width, height)), kDefault_InitFlags)->unref();
+ this->init(SkNEW_ARGS(SkNoPixelsBitmapDevice,
+ (SkIRect::MakeWH(width, height))), kDefault_InitFlags)->unref();
}
-SkCanvas::SkCanvas(int width, int height, InitFlags flags)
+SkCanvas::SkCanvas(const SkIRect& bounds, InitFlags flags)
: fMCStack(sizeof(MCRec), fMCRecStorage, sizeof(fMCRecStorage))
, fProps(SkSurfaceProps::kLegacyFontHost_InitType)
{
inc_canvas();
- this->init(SkNEW_ARGS(SkNoPixelsBitmapDevice, (width, height)), flags)->unref();
+ this->init(SkNEW_ARGS(SkNoPixelsBitmapDevice, (bounds)), flags)->unref();
}
SkCanvas::SkCanvas(SkBaseDevice* device, const SkSurfaceProps* props, InitFlags flags)