aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core
diff options
context:
space:
mode:
authorGravatar Mike Reed <reed@google.com>2018-01-08 15:05:02 -0500
committerGravatar Mike Reed <reed@google.com>2018-01-08 20:42:27 +0000
commit274218ef0173ff6046f2258c703c1c83ea37c02f (patch)
tree5d0077217a7b3e42a6fcacb8a12e95a6323746a9 /src/core
parent7ff6ca525454e9dfbabbec2f6bf66d6b290ac195 (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.cpp3
-rw-r--r--src/core/SkMiniRecorder.cpp5
-rw-r--r--src/core/SkRectPriv.h24
-rw-r--r--src/core/SkScan_Path.cpp5
-rw-r--r--src/core/SkThreadedBMPDevice.cpp21
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(),