1261c3ad7fde95748da92550735decc949dc73bf2joshualitt/*
2261c3ad7fde95748da92550735decc949dc73bf2joshualitt * Copyright 2015 Google Inc.
3261c3ad7fde95748da92550735decc949dc73bf2joshualitt *
4261c3ad7fde95748da92550735decc949dc73bf2joshualitt * Use of this source code is governed by a BSD-style license that can be
5261c3ad7fde95748da92550735decc949dc73bf2joshualitt * found in the LICENSE file.
6261c3ad7fde95748da92550735decc949dc73bf2joshualitt */
7261c3ad7fde95748da92550735decc949dc73bf2joshualitt
8261c3ad7fde95748da92550735decc949dc73bf2joshualitt#ifndef SKPAnimationBench_DEFINED
9261c3ad7fde95748da92550735decc949dc73bf2joshualitt#define SKPAnimationBench_DEFINED
10261c3ad7fde95748da92550735decc949dc73bf2joshualitt
11261c3ad7fde95748da92550735decc949dc73bf2joshualitt#include "SKPBench.h"
12261c3ad7fde95748da92550735decc949dc73bf2joshualitt
13261c3ad7fde95748da92550735decc949dc73bf2joshualitt/**
14261c3ad7fde95748da92550735decc949dc73bf2joshualitt * Runs an SkPicture as a benchmark by repeatedly drawing it, first centering the picture and
15261c3ad7fde95748da92550735decc949dc73bf2joshualitt * for each step it concats the passed in matrix
16261c3ad7fde95748da92550735decc949dc73bf2joshualitt */
17261c3ad7fde95748da92550735decc949dc73bf2joshualittclass SKPAnimationBench : public SKPBench {
18261c3ad7fde95748da92550735decc949dc73bf2joshualittpublic:
19261c3ad7fde95748da92550735decc949dc73bf2joshualitt    SKPAnimationBench(const char* name, const SkPicture*, const SkIRect& devClip,
20261c3ad7fde95748da92550735decc949dc73bf2joshualitt                      SkMatrix viewMatrix, int steps);
21261c3ad7fde95748da92550735decc949dc73bf2joshualitt
22261c3ad7fde95748da92550735decc949dc73bf2joshualittprotected:
23261c3ad7fde95748da92550735decc949dc73bf2joshualitt    const char* onGetName() override;
24261c3ad7fde95748da92550735decc949dc73bf2joshualitt    const char* onGetUniqueName() override;
25261c3ad7fde95748da92550735decc949dc73bf2joshualitt    void onPerCanvasPreDraw(SkCanvas* canvas) override;
26261c3ad7fde95748da92550735decc949dc73bf2joshualitt
27261c3ad7fde95748da92550735decc949dc73bf2joshualitt    void drawMPDPicture() override {
28261c3ad7fde95748da92550735decc949dc73bf2joshualitt        SkFAIL("MPD not supported\n");
29261c3ad7fde95748da92550735decc949dc73bf2joshualitt    }
30261c3ad7fde95748da92550735decc949dc73bf2joshualitt    void drawPicture() override;
31261c3ad7fde95748da92550735decc949dc73bf2joshualitt
32261c3ad7fde95748da92550735decc949dc73bf2joshualittprivate:
33261c3ad7fde95748da92550735decc949dc73bf2joshualitt    int fSteps;
34261c3ad7fde95748da92550735decc949dc73bf2joshualitt    SkMatrix fAnimationMatrix;
35261c3ad7fde95748da92550735decc949dc73bf2joshualitt    SkString fName;
36261c3ad7fde95748da92550735decc949dc73bf2joshualitt    SkString fUniqueName;
37261c3ad7fde95748da92550735decc949dc73bf2joshualitt    SkPoint fCenter;
38261c3ad7fde95748da92550735decc949dc73bf2joshualitt
39261c3ad7fde95748da92550735decc949dc73bf2joshualitt    typedef SKPBench INHERITED;
40261c3ad7fde95748da92550735decc949dc73bf2joshualitt};
41261c3ad7fde95748da92550735decc949dc73bf2joshualitt
42261c3ad7fde95748da92550735decc949dc73bf2joshualitt#endif
43