aboutsummaryrefslogtreecommitdiffhomepage
path: root/dm
diff options
context:
space:
mode:
authorGravatar Florin Malita <fmalita@chromium.org>2018-01-27 12:43:24 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-01-27 18:02:15 +0000
commitd3c1b84a6e26d9f6acd09c221048c4f5ddbd9bbb (patch)
tree68f6719b1c254b5f4f3b8ef0efc42e9862f292cf /dm
parent88d90714fad0fed2739fb8c5f90fe814c8a274ef (diff)
[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 <fmalita@chromium.org> Commit-Queue: Florin Malita <fmalita@chromium.org>
Diffstat (limited to 'dm')
-rw-r--r--dm/DMSrcSink.cpp23
1 files changed, 16 insertions, 7 deletions
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 "";