aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--gm/shapes.cpp18
-rw-r--r--samplecode/SampleAARects.cpp10
-rw-r--r--samplecode/SampleColorFilter.cpp12
-rw-r--r--samplecode/SampleDither.cpp8
-rw-r--r--src/core/SkPath.cpp7
-rw-r--r--tests/PathTest.cpp7
6 files changed, 35 insertions, 27 deletions
diff --git a/gm/shapes.cpp b/gm/shapes.cpp
index c746a493df..0b01390796 100644
--- a/gm/shapes.cpp
+++ b/gm/shapes.cpp
@@ -19,6 +19,15 @@ namespace skiagm {
class ShapesGM : public GM {
protected:
ShapesGM(const char* name, bool antialias) : fName(name), fAntialias(antialias) {
+ if (!antialias) {
+ fName.append("_bw");
+ }
+ }
+
+ SkString onShortName() override final { return fName; }
+ SkISize onISize() override { return SkISize::Make(500, 500); }
+
+ void onOnceBeforeDraw() override {
fShapes.push_back().setOval(SkRect::MakeXYWH(-5, 25, 200, 100));
fRotations.push_back(21);
@@ -50,15 +59,6 @@ protected:
fShapes.push_back().setRectRadii(SkRect::MakeXYWH(180, -30, 80, 60), radii2);
fRotations.push_back(295);
- if (!antialias) {
- fName.append("_bw");
- }
- }
-
- SkString onShortName() override final { return fName; }
- SkISize onISize() override { return SkISize::Make(500, 500); }
-
- void onOnceBeforeDraw() override {
fPaint.setAntiAlias(fAntialias);
}
diff --git a/samplecode/SampleAARects.cpp b/samplecode/SampleAARects.cpp
index 3676240ba8..f83ab31f55 100644
--- a/samplecode/SampleAARects.cpp
+++ b/samplecode/SampleAARects.cpp
@@ -38,16 +38,16 @@ class AARectView : public SampleView {
enum {
N = 64
};
-public:
- AARectView() {
+
+protected:
+ void onOnceBeforeDraw() override {
fBitmap = createBitmap(N);
fWidth = N;
}
-protected:
// overrides from SkEventSink
- virtual bool onQuery(SkEvent* evt) {
+ bool onQuery(SkEvent* evt) override {
if (SampleCode::TitleQ(*evt)) {
SampleCode::TitleR(evt, "AA Rects");
return true;
@@ -55,7 +55,7 @@ protected:
return this->INHERITED::onQuery(evt);
}
- virtual void onDrawContent(SkCanvas* canvas) {
+ void onDrawContent(SkCanvas* canvas) override {
canvas->translate(SkIntToScalar(10), SkIntToScalar(10));
SkPaint bluePaint;
diff --git a/samplecode/SampleColorFilter.cpp b/samplecode/SampleColorFilter.cpp
index 60ab0134ef..efda5e9199 100644
--- a/samplecode/SampleColorFilter.cpp
+++ b/samplecode/SampleColorFilter.cpp
@@ -113,8 +113,9 @@ class ColorFilterView : public SampleView {
enum {
N = 64
};
-public:
- ColorFilterView() {
+
+protected:
+ void onOnceBeforeDraw() override {
fBitmap = createBitmap(N);
fShader = sk_tool_utils::create_checkerboard_shader(
0xFFCCCCCC, 0xFFFFFFFF, 12);
@@ -124,9 +125,8 @@ public:
}
}
-protected:
// overrides from SkEventSink
- virtual bool onQuery(SkEvent* evt) {
+ bool onQuery(SkEvent* evt) override {
if (SampleCode::TitleQ(*evt)) {
SampleCode::TitleR(evt, "ColorFilter");
return true;
@@ -134,13 +134,13 @@ protected:
return this->INHERITED::onQuery(evt);
}
- virtual void onDrawBackground(SkCanvas* canvas) {
+ void onDrawBackground(SkCanvas* canvas) override {
SkPaint paint;
paint.setShader(fShader);
canvas->drawPaint(paint);
}
- virtual void onDrawContent(SkCanvas* canvas) {
+ void onDrawContent(SkCanvas* canvas) override {
if (false) {
SkPaint p;
p.setAntiAlias(true);
diff --git a/samplecode/SampleDither.cpp b/samplecode/SampleDither.cpp
index fbe25ddcaa..1dd42710ce 100644
--- a/samplecode/SampleDither.cpp
+++ b/samplecode/SampleDither.cpp
@@ -108,7 +108,8 @@ public:
SkBitmap fBM, fBMPreDither, fBM16;
SkScalar fAngle;
- DitherView() {
+protected:
+ void onOnceBeforeDraw() override {
make_bm(&fBM);
make_bm(&fBMPreDither);
pre_dither(fBMPreDither);
@@ -119,9 +120,8 @@ public:
this->setBGColor(0xFF181818);
}
-protected:
// overrides from SkEventSink
- virtual bool onQuery(SkEvent* evt) {
+ bool onQuery(SkEvent* evt) override {
if (SampleCode::TitleQ(*evt)) {
SampleCode::TitleR(evt, "Dither");
return true;
@@ -129,7 +129,7 @@ protected:
return this->INHERITED::onQuery(evt);
}
- virtual void onDrawContent(SkCanvas* canvas) {
+ void onDrawContent(SkCanvas* canvas) override {
SkPaint paint;
SkScalar x = SkIntToScalar(10);
SkScalar y = SkIntToScalar(10);
diff --git a/src/core/SkPath.cpp b/src/core/SkPath.cpp
index 57192e8f9e..284a6a716c 100644
--- a/src/core/SkPath.cpp
+++ b/src/core/SkPath.cpp
@@ -539,7 +539,10 @@ addMissingClose:
;
}
// Success if 4 corners and first point equals last
- bool result = 4 == corners && (first == last || autoClose);
+ SkScalar closeX = first.x() - last.x();
+ SkScalar closeY = first.y() - last.y();
+ // If autoClose, check if close generates diagonal
+ bool result = 4 == corners && (first == last || (autoClose && (!closeX || !closeY)));
if (!result) {
// check if we are just an incomplete rectangle, in which case we can
// return true, but not claim to be closed.
@@ -547,8 +550,6 @@ addMissingClose:
// 3 sided rectangle
// 4 sided but the last edge is not long enough to reach the start
//
- SkScalar closeX = first.x() - last.x();
- SkScalar closeY = first.y() - last.y();
if (closeX && closeY) {
return false; // we're diagonal, abort (can we ever reach this?)
}
diff --git a/tests/PathTest.cpp b/tests/PathTest.cpp
index c3c023d6a6..85b307a903 100644
--- a/tests/PathTest.cpp
+++ b/tests/PathTest.cpp
@@ -4911,4 +4911,11 @@ DEF_TEST(Path_isRect, reporter) {
SkRect compare;
compare.set(&points[1], SK_ARRAY_COUNT(points) - 1);
REPORTER_ASSERT(reporter, rect == compare);
+ path.reset();
+ SkPoint points2[] = { {75, 50}, {100, 75}, {150, 75}, {150, 150}, {75, 150}, {75, 50} };
+ for (size_t index = 0; index < SK_ARRAY_COUNT(points); ++index) {
+ index < 2 ? path.moveTo(points2[index]) : path.lineTo(points2[index]);
+ }
+ path.close();
+ REPORTER_ASSERT(reporter, !path.isRect(&rect, nullptr, nullptr));
}