diff options
author | 2015-03-04 11:20:12 -0800 | |
---|---|---|
committer | 2015-03-04 11:20:12 -0800 | |
commit | 85d5eb92940868baf8f6962dffe8ed28caa62d0d (patch) | |
tree | 7c4e7834235b5e5147da13ba19763d09efbb0c40 /src/core/SkCanvas.cpp | |
parent | ea8b55db889b19786008b7c613d238e7202485e5 (diff) |
Pass blob bounds to the looper, if available
R=robertphillips@google.com,reed@google.com
Review URL: https://codereview.chromium.org/979943002
Diffstat (limited to 'src/core/SkCanvas.cpp')
-rw-r--r-- | src/core/SkCanvas.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp index 8b88a03814..a47bd89c05 100644 --- a/src/core/SkCanvas.cpp +++ b/src/core/SkCanvas.cpp @@ -2153,10 +2153,13 @@ void SkCanvas::onDrawTextOnPath(const void* text, size_t byteLength, const SkPat void SkCanvas::onDrawTextBlob(const SkTextBlob* blob, SkScalar x, SkScalar y, const SkPaint& paint) { + SkRect storage; + const SkRect* bounds = NULL; if (paint.canComputeFastBounds()) { - SkRect storage; + storage = blob->bounds().makeOffset(x, y); + bounds = &paint.computeFastBounds(storage, &storage); - if (this->quickReject(paint.computeFastBounds(blob->bounds().makeOffset(x, y), &storage))) { + if (this->quickReject(*bounds)) { return; } } @@ -2166,7 +2169,7 @@ void SkCanvas::onDrawTextBlob(const SkTextBlob* blob, SkScalar x, SkScalar y, SkDrawFilter* drawFilter = fMCRec->fFilter; fMCRec->fFilter = NULL; - LOOPER_BEGIN(paint, SkDrawFilter::kText_Type, NULL) + LOOPER_BEGIN(paint, SkDrawFilter::kText_Type, bounds) while (iter.next()) { SkDeviceFilteredPaint dfp(iter.fDevice, looper.paint()); |