blob: a99bd43a9960c5ee941878811c55cddcfb0b53bc [file] [log] [blame]
Brian Osman56a24812017-12-19 11:15:16 -05001/*
2* Copyright 2017 Google Inc.
3*
4* Use of this source code is governed by a BSD-style license that can be
5* found in the LICENSE file.
6*/
7
8#ifndef StatsLayer_DEFINED
9#define StatsLayer_DEFINED
10
11#include "SkColor.h"
12#include "SkString.h"
13#include "sk_app/Window.h"
14
15class StatsLayer : public sk_app::Window::Layer {
16public:
17 StatsLayer();
18 void resetMeasurements();
19
20 typedef int Timer;
21
22 Timer addTimer(const char* label, SkColor color, SkColor labelColor = 0);
23 void beginTiming(Timer);
24 void endTiming(Timer);
25 double getLastTime(Timer);
26
27 void onPaint(SkCanvas* canvas) override;
28
29private:
30 static const int kMeasurementCount = 1 << 6; // should be power of 2 for fast mod
31 struct TimerData {
32 double fTimes[kMeasurementCount];
33 SkString fLabel;
34 SkColor fColor;
35 SkColor fLabelColor;
36 };
37 SkTArray<TimerData> fTimers;
38 int fCurrentMeasurement;
39 double fCumulativeMeasurementTime;
40 int fCumulativeMeasurementCount;
41};
42
43#endif