| /* |
| * Copyright 2015 Google Inc. |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #ifndef SKPAnimationBench_DEFINED |
| #define SKPAnimationBench_DEFINED |
| |
| #include "bench/SKPBench.h" |
| #include "src/base/SkRandom.h" |
| #include "tools/timer/Timer.h" |
| |
| /** |
| * Runs an SkPicture as a benchmark by repeatedly drawing it, first centering the picture and |
| * for each step it concats the passed in matrix |
| */ |
| class SKPAnimationBench : public SKPBench { |
| public: |
| class Animation : public SkRefCnt { |
| public: |
| virtual const char* getTag() = 0; |
| virtual void preConcatFrameMatrix(double animationTimeMs, const SkIRect& devBounds, |
| SkMatrix* drawMatrix) = 0; |
| }; |
| |
| SKPAnimationBench(const char* name, const SkPicture*, const SkIRect& devClip, sk_sp<Animation>, |
| bool doLooping); |
| |
| static sk_sp<Animation> MakeZoomAnimation(SkScalar zoomMax, double zoomPeriodMs); |
| |
| protected: |
| const char* onGetUniqueName() override; |
| void onPerCanvasPreDraw(SkCanvas* canvas) override; |
| |
| void drawMPDPicture() override { |
| SK_ABORT("MPD not supported\n"); |
| } |
| void drawPicture() override; |
| |
| private: |
| sk_sp<Animation> fAnimation; |
| SkRandom fAnimationTime; |
| SkString fUniqueName; |
| SkIRect fDevBounds; |
| |
| using INHERITED = SKPBench; |
| }; |
| |
| #endif |