// Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef FLUTTER_FLOW_STOPWATCH_SK_H_ #define FLUTTER_FLOW_STOPWATCH_SK_H_ #include "flow/stopwatch.h" #include "include/core/SkSurface.h" namespace flutter { //------------------------------------------------------------------------------ /// A stopwatch visualizer that uses Skia (|SkCanvas|) to draw the stopwatch. /// /// @see DlStopwatchVisualizer for the newer non-backend specific version. class SkStopwatchVisualizer : public StopwatchVisualizer { public: explicit SkStopwatchVisualizer(const Stopwatch& stopwatch) : StopwatchVisualizer(stopwatch) {} void Visualize(DlCanvas* canvas, const SkRect& rect) const override; private: /// Initializes the |SkSurface| used for drawing the stopwatch. /// /// Draws the base background and any timing data from before the initial /// call to |Visualize|. void InitVisualizeSurface(SkISize size) const; // Mutable data cache for performance optimization of the graphs. // Prevents expensive redrawing of old data. mutable bool cache_dirty_ = true; mutable sk_sp visualize_cache_surface_; mutable size_t prev_drawn_sample_index_ = 0; }; } // namespace flutter #endif // FLUTTER_FLOW_STOPWATCH_SK_H_