diff options
author | Florin Malita <fmalita@chromium.org> | 2018-04-30 10:32:18 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-04-30 15:19:03 +0000 |
commit | 6eb85a1cf1b0829a16859f0e4b5b3f2064f38120 (patch) | |
tree | 17dd1c8b3e5467fe900697075d107e6d3e204459 /tools/viewer | |
parent | ba36572d1c681c50066be6a19542b12cb434c59b (diff) |
[skottie] Show load stats in SkottieSlide
TBR=
Change-Id: Ie3a1036d9a90cb16d2795134c453759aeff06e3c
Reviewed-on: https://skia-review.googlesource.com/124461
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Florin Malita <fmalita@chromium.org>
Diffstat (limited to 'tools/viewer')
-rw-r--r-- | tools/viewer/SkottieSlide.cpp | 50 | ||||
-rw-r--r-- | tools/viewer/SkottieSlide.h | 6 |
2 files changed, 49 insertions, 7 deletions
diff --git a/tools/viewer/SkottieSlide.cpp b/tools/viewer/SkottieSlide.cpp index 77501d8a9f..78cda5cbda 100644 --- a/tools/viewer/SkottieSlide.cpp +++ b/tools/viewer/SkottieSlide.cpp @@ -11,13 +11,51 @@ #include "SkCanvas.h" #include "Skottie.h" +static void draw_stats_box(SkCanvas* canvas, const skottie::Animation::Stats& stats) { + static constexpr SkRect kR = { 10, 10, 280, 120 }; + static constexpr SkScalar kTextSize = 20; + + SkPaint paint; + paint.setAntiAlias(true); + paint.setColor(0xffeeeeee); + paint.setTextSize(kTextSize); + + canvas->drawRect(kR, paint); + + paint.setColor(SK_ColorBLACK); + + const auto json_size = SkStringPrintf("Json size: %lu bytes", + stats.fJsonSize); + canvas->drawText(json_size.c_str(), + json_size.size(), kR.x() + 10, kR.y() + kTextSize * 1, paint); + const auto animator_count = SkStringPrintf("Animator count: %lu", + stats.fAnimatorCount); + canvas->drawText(animator_count.c_str(), + animator_count.size(), kR.x() + 10, kR.y() + kTextSize * 2, paint); + const auto json_parse_time = SkStringPrintf("Json parse time: %.3f ms", + stats.fJsonParseTimeMS); + canvas->drawText(json_parse_time.c_str(), + json_parse_time.size(), kR.x() + 10, kR.y() + kTextSize * 3, paint); + const auto scene_parse_time = SkStringPrintf("Scene build time: %.3f ms", + stats.fSceneParseTimeMS); + canvas->drawText(scene_parse_time.c_str(), + scene_parse_time.size(), kR.x() + 10, kR.y() + kTextSize * 4, paint); + const auto total_load_time = SkStringPrintf("Total load time: %.3f ms", + stats.fTotalLoadTimeMS); + canvas->drawText(total_load_time.c_str(), + total_load_time.size(), kR.x() + 10, kR.y() + kTextSize * 5, paint); + + paint.setStyle(SkPaint::kStroke_Style); + canvas->drawRect(kR, paint); +} + SkottieSlide::SkottieSlide(const SkString& name, const SkString& path) : fPath(path) { fName = name; } void SkottieSlide::load(SkScalar w, SkScalar h) { - fAnimation = skottie::Animation::MakeFromFile(fPath.c_str()); + fAnimation = skottie::Animation::MakeFromFile(fPath.c_str(), nullptr, &fAnimationStats); fWinSize = SkSize::Make(w, h); fTimeBase = 0; // force a time reset @@ -47,6 +85,10 @@ void SkottieSlide::draw(SkCanvas* canvas) { SkAutoCanvasRestore acr(canvas, true); const auto dstR = SkRect::MakeSize(fWinSize); fAnimation->render(canvas, &dstR); + + if (fShowAnimationStats) { + draw_stats_box(canvas, fAnimationStats); + } } } @@ -66,10 +108,7 @@ bool SkottieSlide::animate(const SkAnimTimer& timer) { bool SkottieSlide::onChar(SkUnichar c) { switch (c) { case 'I': - if (fAnimation) { - fShowAnimationInval = !fShowAnimationInval; - fAnimation->setShowInval(fShowAnimationInval); - } + fShowAnimationStats = !fShowAnimationStats; break; default: break; @@ -82,6 +121,7 @@ bool SkottieSlide::onMouse(SkScalar x, SkScalar y, sk_app::Window::InputState st switch (state) { case sk_app::Window::kUp_InputState: fShowAnimationInval = !fShowAnimationInval; + fShowAnimationStats = !fShowAnimationStats; fAnimation->setShowInval(fShowAnimationInval); break; default: diff --git a/tools/viewer/SkottieSlide.h b/tools/viewer/SkottieSlide.h index b5770a0cf8..0bfe66eef4 100644 --- a/tools/viewer/SkottieSlide.h +++ b/tools/viewer/SkottieSlide.h @@ -9,8 +9,8 @@ #define SkottieSlide_DEFINED #include "Slide.h" +#include "Skottie.h" -namespace skottie { class Animation; } namespace sksg { class Scene; } class SkottieSlide : public Slide { @@ -32,9 +32,11 @@ public: private: SkString fPath; sk_sp<skottie::Animation> fAnimation; + skottie::Animation::Stats fAnimationStats; SkSize fWinSize = SkSize::MakeEmpty(); SkMSec fTimeBase = 0; - bool fShowAnimationInval = false; + bool fShowAnimationInval = false, + fShowAnimationStats = false; typedef Slide INHERITED; }; |