diff options
author | 2014-11-19 07:17:16 -0800 | |
---|---|---|
committer | 2014-11-19 07:17:17 -0800 | |
commit | 7c4cdd2c5b7b6c71fa0e7612594f7885f2dbf264 (patch) | |
tree | 06ea08866680ce7abe2fdc7cdca0eb0321684ace /src | |
parent | 7e76bff26e7c74902841ca4f607eb0b24a833a4a (diff) |
Revert of allow pictures to have a full bounds (patchset #3 id:40001 of https://codereview.chromium.org/736583004/)
Reason for revert:
needed to update legacy width() helpers
Original issue's description:
> allow pictures to have a full bounds
>
> BUG=skia:
>
> Committed: https://skia.googlesource.com/skia/+/7e76bff26e7c74902841ca4f607eb0b24a833a4a
TBR=fmalita@google.com,mtklein@google.com,robertphillips@google.com,fmalita@chromium.org
NOTREECHECKS=true
NOTRY=true
BUG=skia:
Review URL: https://codereview.chromium.org/722043005
Diffstat (limited to 'src')
-rw-r--r-- | src/core/SkBBHFactory.cpp | 13 | ||||
-rw-r--r-- | src/core/SkCanvas.cpp | 15 | ||||
-rw-r--r-- | src/core/SkCanvasDrawable.cpp | 22 | ||||
-rw-r--r-- | src/core/SkPicture.cpp | 5 | ||||
-rw-r--r-- | src/core/SkPictureRecorder.cpp | 17 | ||||
-rw-r--r-- | src/core/SkRecorder.cpp | 8 | ||||
-rw-r--r-- | src/core/SkRecorder.h | 3 |
7 files changed, 27 insertions, 56 deletions
diff --git a/src/core/SkBBHFactory.cpp b/src/core/SkBBHFactory.cpp index 4b9ae558e2..22f816c4d9 100644 --- a/src/core/SkBBHFactory.cpp +++ b/src/core/SkBBHFactory.cpp @@ -9,20 +9,15 @@ #include "SkRTree.h" #include "SkTileGrid.h" -SkBBoxHierarchy* SkRTreeFactory::operator()(const SkRect& bounds) const { - SkScalar aspectRatio = bounds.width() / bounds.height(); + +SkBBoxHierarchy* SkRTreeFactory::operator()(int width, int height) const { + SkScalar aspectRatio = SkScalarDiv(SkIntToScalar(width), SkIntToScalar(height)); return SkNEW_ARGS(SkRTree, (aspectRatio)); } -SkBBoxHierarchy* SkTileGridFactory::operator()(const SkRect& bounds) const { +SkBBoxHierarchy* SkTileGridFactory::operator()(int width, int height) const { SkASSERT(fInfo.fMargin.width() >= 0); SkASSERT(fInfo.fMargin.height() >= 0); - - // We want a conservative answer for the size... - const SkIRect ibounds = bounds.roundOut(); - const int width = ibounds.width(); - const int height = ibounds.height(); - // Note: SkIRects are non-inclusive of the right() column and bottom() row. // For example, an SkIRect at 0,0 with a size of (1,1) will only have // content at pixel (0,0) and will report left=0 and right=1, hence the diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp index 31a9a7970b..4fda7a37b3 100644 --- a/src/core/SkCanvas.cpp +++ b/src/core/SkCanvas.cpp @@ -431,7 +431,7 @@ SkBaseDevice* SkCanvas::init(SkBaseDevice* device, InitFlags flags) { } device->onAttachToCanvas(this); fMCRec->fLayer->fDevice = SkRef(device); - fMCRec->fRasterClip.setRect(device->getGlobalBounds()); + fMCRec->fRasterClip.setRect(SkIRect::MakeWH(device->width(), device->height())); } return device; } @@ -453,11 +453,7 @@ static SkBitmap make_nopixels(int width, int height) { class SkNoPixelsBitmapDevice : public SkBitmapDevice { public: - SkNoPixelsBitmapDevice(const SkIRect& bounds) - : INHERITED(make_nopixels(bounds.width(), bounds.height())) - { - this->setOrigin(bounds.x(), bounds.y()); - } + SkNoPixelsBitmapDevice(int width, int height) : INHERITED(make_nopixels(width, height)) {} private: @@ -470,17 +466,16 @@ SkCanvas::SkCanvas(int width, int height) { inc_canvas(); - this->init(SkNEW_ARGS(SkNoPixelsBitmapDevice, - (SkIRect::MakeWH(width, height))), kDefault_InitFlags)->unref(); + this->init(SkNEW_ARGS(SkNoPixelsBitmapDevice, (width, height)), kDefault_InitFlags)->unref(); } -SkCanvas::SkCanvas(const SkIRect& bounds, InitFlags flags) +SkCanvas::SkCanvas(int width, int height, InitFlags flags) : fMCStack(sizeof(MCRec), fMCRecStorage, sizeof(fMCRecStorage)) , fProps(SkSurfaceProps::kLegacyFontHost_InitType) { inc_canvas(); - this->init(SkNEW_ARGS(SkNoPixelsBitmapDevice, (bounds)), flags)->unref(); + this->init(SkNEW_ARGS(SkNoPixelsBitmapDevice, (width, height)), flags)->unref(); } SkCanvas::SkCanvas(SkBaseDevice* device, const SkSurfaceProps* props, InitFlags flags) diff --git a/src/core/SkCanvasDrawable.cpp b/src/core/SkCanvasDrawable.cpp index e0120f0bb1..0065d430f9 100644 --- a/src/core/SkCanvasDrawable.cpp +++ b/src/core/SkCanvasDrawable.cpp @@ -23,22 +23,9 @@ static int32_t next_generation_id() { SkCanvasDrawable::SkCanvasDrawable() : fGenerationID(0) {} -static void draw_bbox(SkCanvas* canvas, const SkRect& r) { - SkPaint paint; - paint.setStyle(SkPaint::kStroke_Style); - paint.setColor(0xFFFF7088); - canvas->drawRect(r, paint); - canvas->drawLine(r.left(), r.top(), r.right(), r.bottom(), paint); - canvas->drawLine(r.left(), r.bottom(), r.right(), r.top(), paint); -} - void SkCanvasDrawable::draw(SkCanvas* canvas) { SkAutoCanvasRestore acr(canvas, true); this->onDraw(canvas); - - if (false) { - draw_bbox(canvas, this->getBounds()); - } } SkPicture* SkCanvasDrawable::newPictureSnapshot(SkBBHFactory* bbhFactory, uint32_t recordFlags) { @@ -65,13 +52,8 @@ void SkCanvasDrawable::notifyDrawingChanged() { #include "SkPictureRecorder.h" SkPicture* SkCanvasDrawable::onNewPictureSnapshot(SkBBHFactory* bbhFactory, uint32_t recordFlags) { - SkPictureRecorder recorder; - const SkRect bounds = this->getBounds(); - SkCanvas* canvas = recorder.beginRecording(bounds, bbhFactory, recordFlags); - this->draw(canvas); - if (false) { - draw_bbox(canvas, bounds); - } + SkPictureRecorder recorder; + this->draw(recorder.beginRecording(bounds.width(), bounds.height(), bbhFactory, recordFlags)); return recorder.endRecording(); } diff --git a/src/core/SkPicture.cpp b/src/core/SkPicture.cpp index 7f4b33afac..4c97cb71b9 100644 --- a/src/core/SkPicture.cpp +++ b/src/core/SkPicture.cpp @@ -530,9 +530,10 @@ uint32_t SkPicture::uniqueID() const { return fUniqueID; } -SkPicture::SkPicture(const SkRect& cullRect, SkRecord* record, SkData* drawablePicts, +SkPicture::SkPicture(SkScalar width, SkScalar height, SkRecord* record, SkData* drawablePicts, SkBBoxHierarchy* bbh) - : fCullRect(cullRect) + : fCullWidth(width) + , fCullHeight(height) , fRecord(record) , fBBH(SkSafeRef(bbh)) , fDrawablePicts(SkSafeRef(drawablePicts)) diff --git a/src/core/SkPictureRecorder.cpp b/src/core/SkPictureRecorder.cpp index aea9e389da..bc8bffb9b3 100644 --- a/src/core/SkPictureRecorder.cpp +++ b/src/core/SkPictureRecorder.cpp @@ -18,19 +18,20 @@ SkPictureRecorder::SkPictureRecorder() {} SkPictureRecorder::~SkPictureRecorder() {} -SkCanvas* SkPictureRecorder::beginRecording(const SkRect& cullRect, +SkCanvas* SkPictureRecorder::beginRecording(SkScalar width, SkScalar height, SkBBHFactory* bbhFactory /* = NULL */, uint32_t recordFlags /* = 0 */) { - fCullRect = cullRect; fFlags = recordFlags; + fCullWidth = width; + fCullHeight = height; if (bbhFactory) { - fBBH.reset((*bbhFactory)(cullRect)); + fBBH.reset((*bbhFactory)(width, height)); SkASSERT(fBBH.get()); } fRecord.reset(SkNEW(SkRecord)); - fRecorder.reset(SkNEW_ARGS(SkRecorder, (fRecord.get(), cullRect))); + fRecorder.reset(SkNEW_ARGS(SkRecorder, (fRecord.get(), width, height))); return this->getRecordingCanvas(); } @@ -51,10 +52,12 @@ SkPicture* SkPictureRecorder::endRecording() { } if (fBBH.get()) { + SkRect cullRect = SkRect::MakeWH(fCullWidth, fCullHeight); + if (saveLayerData) { - SkRecordComputeLayers(fCullRect, *fRecord, fBBH.get(), saveLayerData); + SkRecordComputeLayers(cullRect, *fRecord, fBBH.get(), saveLayerData); } else { - SkRecordFillBounds(fCullRect, *fRecord, fBBH.get()); + SkRecordFillBounds(cullRect, *fRecord, fBBH.get()); } } @@ -62,7 +65,7 @@ SkPicture* SkPictureRecorder::endRecording() { SkBBHFactory* factory = NULL; uint32_t recordFlags = 0; SkAutoDataUnref drawablePicts(fRecorder->newDrawableSnapshot(factory, recordFlags)); - SkPicture* pict = SkNEW_ARGS(SkPicture, (fCullRect, fRecord.detach(), + SkPicture* pict = SkNEW_ARGS(SkPicture, (fCullWidth, fCullHeight, fRecord.detach(), drawablePicts, fBBH.get())); if (saveLayerData) { diff --git a/src/core/SkRecorder.cpp b/src/core/SkRecorder.cpp index 998fb6645b..1af328afd2 100644 --- a/src/core/SkRecorder.cpp +++ b/src/core/SkRecorder.cpp @@ -10,13 +10,9 @@ #include "SkPatchUtils.h" #include "SkPicture.h" +// SkCanvas will fail in mysterious ways if it doesn't know the real width and height. SkRecorder::SkRecorder(SkRecord* record, int width, int height) - : SkCanvas(SkIRect::MakeWH(width, height), SkCanvas::kConservativeRasterClip_InitFlag) - , fRecord(record) - , fSaveLayerCount(0) {} - -SkRecorder::SkRecorder(SkRecord* record, const SkRect& bounds) - : SkCanvas(bounds.roundOut(), SkCanvas::kConservativeRasterClip_InitFlag) + : SkCanvas(width, height, SkCanvas::kConservativeRasterClip_InitFlag) , fRecord(record) , fSaveLayerCount(0) {} diff --git a/src/core/SkRecorder.h b/src/core/SkRecorder.h index 7b2cbfe3a0..563f16d124 100644 --- a/src/core/SkRecorder.h +++ b/src/core/SkRecorder.h @@ -18,8 +18,7 @@ class SkRecorder : public SkCanvas { public: // Does not take ownership of the SkRecord. - SkRecorder(SkRecord*, int width, int height); // legacy version - SkRecorder(SkRecord*, const SkRect& bounds); + SkRecorder(SkRecord*, int width, int height); virtual ~SkRecorder() SK_OVERRIDE; // return a (new or ref'd) data containing the array of pictures that were |