|  | // 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<SkSurface> visualize_cache_surface_; | 
|  | mutable size_t prev_drawn_sample_index_ = 0; | 
|  | }; | 
|  |  | 
|  | }  // namespace flutter | 
|  |  | 
|  | #endif  // FLUTTER_FLOW_STOPWATCH_SK_H_ |