Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3eb68556 authored by Chris Craik's avatar Chris Craik Committed by android-build-merger
Browse files

Merge "Unrounded round rects are just rects" into nyc-dev am: d06fa51e

am: e8e17bac

* commit 'e8e17bac':
  Unrounded round rects are just rects
parents 2ad5af84 e8e17bac
Loading
Loading
Loading
Loading
+9 −5
Original line number Original line Diff line number Diff line
@@ -356,11 +356,15 @@ void RecordingCanvas::drawRegion(const SkRegion& region, const SkPaint& paint) {
}
}
void RecordingCanvas::drawRoundRect(float left, float top, float right, float bottom,
void RecordingCanvas::drawRoundRect(float left, float top, float right, float bottom,
            float rx, float ry, const SkPaint& paint) {
            float rx, float ry, const SkPaint& paint) {
    if (CC_LIKELY(MathUtils::isPositive(rx) || MathUtils::isPositive(ry))) {
        addOp(alloc().create_trivial<RoundRectOp>(
        addOp(alloc().create_trivial<RoundRectOp>(
                Rect(left, top, right, bottom),
                Rect(left, top, right, bottom),
                *(mState.currentSnapshot()->transform),
                *(mState.currentSnapshot()->transform),
                getRecordedClip(),
                getRecordedClip(),
                refPaint(&paint), rx, ry));
                refPaint(&paint), rx, ry));
    } else {
        drawRect(left, top, right, bottom, paint);
    }
}
}


void RecordingCanvas::drawRoundRect(
void RecordingCanvas::drawRoundRect(
+17 −0
Original line number Original line Diff line number Diff line
@@ -114,6 +114,23 @@ TEST(RecordingCanvas, drawRect) {
    EXPECT_EQ(Rect(10, 20, 90, 180), op.unmappedBounds);
    EXPECT_EQ(Rect(10, 20, 90, 180), op.unmappedBounds);
}
}


TEST(RecordingCanvas, drawRoundRect) {
    // Round case - stays rounded
    auto dl = TestUtils::createDisplayList<RecordingCanvas>(100, 200, [](RecordingCanvas& canvas) {
        canvas.drawRoundRect(0, 0, 100, 100, 10, 10, SkPaint());
    });
    ASSERT_EQ(1u, dl->getOps().size()) << "Must be exactly one op";
    ASSERT_EQ(RecordedOpId::RoundRectOp, dl->getOps()[0]->opId);

    // Non-rounded case - turned into drawRect
    dl = TestUtils::createDisplayList<RecordingCanvas>(100, 200, [](RecordingCanvas& canvas) {
        canvas.drawRoundRect(0, 0, 100, 100, 0, -1, SkPaint());
    });
    ASSERT_EQ(1u, dl->getOps().size()) << "Must be exactly one op";
    ASSERT_EQ(RecordedOpId::RectOp, dl->getOps()[0]->opId)
        << "Non-rounded rects should be converted";
}

TEST(RecordingCanvas, drawText) {
TEST(RecordingCanvas, drawText) {
    auto dl = TestUtils::createDisplayList<RecordingCanvas>(200, 200, [](RecordingCanvas& canvas) {
    auto dl = TestUtils::createDisplayList<RecordingCanvas>(200, 200, [](RecordingCanvas& canvas) {
        SkPaint paint;
        SkPaint paint;