diff options
author | 2018-01-08 15:05:02 -0500 | |
---|---|---|
committer | 2018-01-08 20:42:27 +0000 | |
commit | 274218ef0173ff6046f2258c703c1c83ea37c02f (patch) | |
tree | 5d0077217a7b3e42a6fcacb8a12e95a6323746a9 /src/core | |
parent | 7ff6ca525454e9dfbabbec2f6bf66d6b290ac195 (diff) |
move largest apis into private
Related to https://skia-review.googlesource.com/c/skia/+/91860
Bug: skia:
Change-Id: Ia8fd981b422bbab75541b078277d2e09e1fc9d41
Reviewed-on: https://skia-review.googlesource.com/91940
Reviewed-by: Brian Salomon <bsalomon@google.com>
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/SkDraw.cpp | 3 | ||||
-rw-r--r-- | src/core/SkMiniRecorder.cpp | 5 | ||||
-rw-r--r-- | src/core/SkRectPriv.h | 24 | ||||
-rw-r--r-- | src/core/SkScan_Path.cpp | 5 | ||||
-rw-r--r-- | src/core/SkThreadedBMPDevice.cpp | 21 |
5 files changed, 43 insertions, 15 deletions
diff --git a/src/core/SkDraw.cpp b/src/core/SkDraw.cpp index 39b684356a..5068fb0151 100644 --- a/src/core/SkDraw.cpp +++ b/src/core/SkDraw.cpp @@ -25,6 +25,7 @@ #include "SkPathEffect.h" #include "SkRasterClip.h" #include "SkRasterizer.h" +#include "SkRectPriv.h" #include "SkRRect.h" #include "SkScan.h" #include "SkShader.h" @@ -781,7 +782,7 @@ void SkDraw::drawRect(const SkRect& prePaintRect, const SkPaint& paint, } } - if (!SkRect::MakeLargestS32().contains(bbox)) { + if (!SkRectPriv::MakeLargestS32().contains(bbox)) { // bbox.roundOut() is undefined; use slow path. draw_rect_as_path(*this, prePaintRect, paint, matrix); return; diff --git a/src/core/SkMiniRecorder.cpp b/src/core/SkMiniRecorder.cpp index ec089373e1..6a2edf1f12 100644 --- a/src/core/SkMiniRecorder.cpp +++ b/src/core/SkMiniRecorder.cpp @@ -12,6 +12,7 @@ #include "SkPicture.h" #include "SkPictureCommon.h" #include "SkRecordDraw.h" +#include "SkRectPriv.h" #include "SkTextBlob.h" using namespace SkRecords; @@ -29,13 +30,13 @@ public: // These are fairly easy because we know they can't be affected by any matrix or saveLayers. static SkRect adjust_for_paint(SkRect bounds, const SkPaint& paint) { return paint.canComputeFastBounds() ? paint.computeFastBounds(bounds, &bounds) - : SkRect::MakeLargest(); + : SkRectPriv::MakeLargest(); } static SkRect bounds(const DrawRect& op) { return adjust_for_paint(op.rect, op.paint); } static SkRect bounds(const DrawPath& op) { - return op.path.isInverseFillType() ? SkRect::MakeLargest() + return op.path.isInverseFillType() ? SkRectPriv::MakeLargest() : adjust_for_paint(op.path.getBounds(), op.paint); } static SkRect bounds(const DrawTextBlob& op) { diff --git a/src/core/SkRectPriv.h b/src/core/SkRectPriv.h index 4dcc4c56ce..422037f4a1 100644 --- a/src/core/SkRectPriv.h +++ b/src/core/SkRectPriv.h @@ -19,6 +19,30 @@ public: static bool PositiveDimensions(const SkIRect& r) { return r.width() > 0 && r.height() > 0; } + + static SkRect MakeLargestS32() { + const int32_t ihalf = SK_MaxS32 >> 1; + const SkScalar half = SkIntToScalar(ihalf); + + return { -half, -half, half, half }; + } + + static SkRect MakeLargest() { + return { SK_ScalarMin, SK_ScalarMin, SK_ScalarMax, SK_ScalarMax }; + } + + static SkIRect MakeILargest() { + return { SK_MinS32, SK_MinS32, SK_MaxS32, SK_MaxS32 }; + } + + static SkRect MakeLargestInverted() { + return { SK_ScalarMax, SK_ScalarMax, SK_ScalarMin, SK_ScalarMin }; + } + + static SkIRect MakeILargestInverted() { + return { SK_MaxS32, SK_MaxS32, SK_MinS32, SK_MinS32 }; + } }; + #endif diff --git a/src/core/SkScan_Path.cpp b/src/core/SkScan_Path.cpp index 408815672c..21e2ecbf55 100644 --- a/src/core/SkScan_Path.cpp +++ b/src/core/SkScan_Path.cpp @@ -13,6 +13,7 @@ #include "SkPath.h" #include "SkQuadClipper.h" #include "SkRasterClip.h" +#include "SkRectPriv.h" #include "SkRegion.h" #include "SkTemplates.h" #include "SkTSort.h" @@ -643,8 +644,8 @@ void SkScan::FillPath(const SkPath& path, const SkRegion& origClip, SkRect bounds = path.getBounds(); bool irPreClipped = false; - if (!SkRect::MakeLargestS32().contains(bounds)) { - if (!bounds.intersect(SkRect::MakeLargestS32())) { + if (!SkRectPriv::MakeLargestS32().contains(bounds)) { + if (!bounds.intersect(SkRectPriv::MakeLargestS32())) { bounds.setEmpty(); } irPreClipped = true; diff --git a/src/core/SkThreadedBMPDevice.cpp b/src/core/SkThreadedBMPDevice.cpp index 098c7216e8..d0f427b64f 100644 --- a/src/core/SkThreadedBMPDevice.cpp +++ b/src/core/SkThreadedBMPDevice.cpp @@ -8,6 +8,7 @@ #include "SkThreadedBMPDevice.h" #include "SkPath.h" +#include "SkRectPriv.h" #include "SkTaskGroup.h" #include "SkVertices.h" @@ -89,11 +90,11 @@ struct SkThreadedBMPDevice::DrawState { }; SkIRect SkThreadedBMPDevice::transformDrawBounds(const SkRect& drawBounds) const { - if (drawBounds.isLargest()) { - return SkIRect::MakeLargest(); - } SkRect transformedBounds; this->ctm().mapRect(&transformedBounds, drawBounds); + if (!transformedBounds.isFinite()) { + transformedBounds = SkRectPriv::MakeLargestS32(); + } return transformedBounds.roundOut(); } @@ -116,19 +117,19 @@ static inline SkRect get_fast_bounds(const SkRect& r, const SkPaint& p) { if (p.canComputeFastBounds()) { result = p.computeFastBounds(r, &result); } else { - result = SkRect::MakeLargest(); + result = SkRectPriv::MakeLargest(); } return result; } void SkThreadedBMPDevice::drawPaint(const SkPaint& paint) { - THREADED_DRAW(SkRect::MakeLargest(), drawPaint(paint)); + THREADED_DRAW(SkRectPriv::MakeLargest(), drawPaint(paint)); } void SkThreadedBMPDevice::drawPoints(SkCanvas::PointMode mode, size_t count, const SkPoint pts[], const SkPaint& paint) { // TODO tighter drawBounds - SkRect drawBounds = SkRect::MakeLargest(); + SkRect drawBounds = SkRectPriv::MakeLargest(); THREADED_DRAW(drawBounds, drawPoints(mode, count, pts, paint, nullptr)); } @@ -153,7 +154,7 @@ void SkThreadedBMPDevice::drawRRect(const SkRRect& rrect, const SkPaint& paint) void SkThreadedBMPDevice::drawPath(const SkPath& path, const SkPaint& paint, const SkMatrix* prePathMatrix, bool pathIsMutable) { - SkRect drawBounds = path.isInverseFillType() ? SkRect::MakeLargest() + SkRect drawBounds = path.isInverseFillType() ? SkRectPriv::MakeLargest() : get_fast_bounds(path.getBounds(), paint); // For thread safety, make path imutable THREADED_DRAW(drawBounds, drawPath(path, paint, prePathMatrix, false)); @@ -175,20 +176,20 @@ void SkThreadedBMPDevice::drawSprite(const SkBitmap& bitmap, int x, int y, const void SkThreadedBMPDevice::drawText(const void* text, size_t len, SkScalar x, SkScalar y, const SkPaint& paint) { - SkRect drawBounds = SkRect::MakeLargest(); // TODO tighter drawBounds + SkRect drawBounds = SkRectPriv::MakeLargest(); // TODO tighter drawBounds THREADED_DRAW(drawBounds, drawText((const char*)text, len, x, y, paint, &this->surfaceProps())); } void SkThreadedBMPDevice::drawPosText(const void* text, size_t len, const SkScalar xpos[], int scalarsPerPos, const SkPoint& offset, const SkPaint& paint) { - SkRect drawBounds = SkRect::MakeLargest(); // TODO tighter drawBounds + SkRect drawBounds = SkRectPriv::MakeLargest(); // TODO tighter drawBounds THREADED_DRAW(drawBounds, drawPosText((const char*)text, len, xpos, scalarsPerPos, offset, paint, &surfaceProps())); } void SkThreadedBMPDevice::drawVertices(const SkVertices* vertices, SkBlendMode bmode, const SkPaint& paint) { - SkRect drawBounds = SkRect::MakeLargest(); // TODO tighter drawBounds + SkRect drawBounds = SkRectPriv::MakeLargest(); // TODO tighter drawBounds THREADED_DRAW(drawBounds, drawVertices(vertices->mode(), vertices->vertexCount(), vertices->positions(), vertices->texCoords(), vertices->colors(), bmode, vertices->indices(), |