From d3c1b84a6e26d9f6acd09c221048c4f5ddbd9bbb Mon Sep 17 00:00:00 2001 From: Florin Malita Date: Sat, 27 Jan 2018 12:43:24 -0500 Subject: [skottie] Render DM frames out-of-order To exercise non-monotonic animator progrssions. TBR= Change-Id: I53aead5b11adf59d33c9ca4065976996bd09a1e2 Reviewed-on: https://skia-review.googlesource.com/100900 Reviewed-by: Florin Malita Commit-Queue: Florin Malita --- dm/DMSrcSink.cpp | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) (limited to 'dm') diff --git a/dm/DMSrcSink.cpp b/dm/DMSrcSink.cpp index 618064e8a3..f2efbad7ac 100644 --- a/dm/DMSrcSink.cpp +++ b/dm/DMSrcSink.cpp @@ -1344,28 +1344,32 @@ Error SkottieSrc::draw(SkCanvas* canvas) const { SkPaint paint, clockPaint; paint.setColor(0xffa0a0a0); paint.setStyle(SkPaint::kStroke_Style); - paint.setStrokeWidth(0); + paint.setStrokeWidth(1); + paint.setAntiAlias(true); clockPaint.setTextSize(12); + clockPaint.setAntiAlias(true); const auto ip = fAnimation->inPoint() * 1000 / fAnimation->frameRate(), op = fAnimation->outPoint() * 1000 / fAnimation->frameRate(), fr = (op - ip) / (kTileCount * kTileCount - 1); + // Shuffled order to exercise non-linear frame progression. + static constexpr int frames[] = { 4, 0, 3, 1, 2 }; + static_assert(SK_ARRAY_COUNT(frames) == kTileCount, ""); + const auto canvas_size = this->size(); for (int i = 0; i < kTileCount; ++i) { - const SkScalar y = i * (fTileSize.height() + 1); - canvas->drawLine(0, .5f + y, canvas_size.width(), .5f + y, paint); + const SkScalar y = frames[i] * (fTileSize.height() + 1); for (int j = 0; j < kTileCount; ++j) { - const SkScalar x = j * (fTileSize.width() + 1); - canvas->drawLine(x + .5f, 0, x + .5f, canvas_size.height(), paint); + const SkScalar x = frames[j] * (fTileSize.width() + 1); SkRect dest = SkRect::MakeXYWH(x, y, fTileSize.width(), fTileSize.height()); - const auto t = fr * (i * kTileCount + j); + const auto t = fr * (frames[i] * kTileCount + frames[j]); { SkAutoCanvasRestore acr(canvas, true); - canvas->clipRect(dest); + canvas->clipRect(dest, true); canvas->concat(SkMatrix::MakeRectToRect(SkRect::MakeSize(fAnimation->size()), dest, SkMatrix::kFill_ScaleToFit)); @@ -1374,10 +1378,15 @@ Error SkottieSrc::draw(SkCanvas* canvas) const { fAnimation->render(canvas); } + canvas->drawLine(x + fTileSize.width() + .5f, 0, + x + fTileSize.width() + .5f, canvas_size.height(), paint); const auto label = SkStringPrintf("%.3f", t); canvas->drawText(label.c_str(), label.size(), dest.x(), dest.bottom(), clockPaint); } + + canvas->drawLine(0 , y + fTileSize.height() + .5f, + canvas_size.width(), y + fTileSize.height() + .5f, paint); } return ""; -- cgit v1.2.3