1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef CC_LAYERS_HEADS_UP_DISPLAY_LAYER_IMPL_H_
6 #define CC_LAYERS_HEADS_UP_DISPLAY_LAYER_IMPL_H_
11 #include "base/memory/scoped_ptr.h"
12 #include "base/time/time.h"
13 #include "cc/base/cc_export.h"
14 #include "cc/debug/debug_rect_history.h"
15 #include "cc/layers/layer_impl.h"
16 #include "cc/resources/memory_history.h"
17 #include "cc/resources/scoped_resource.h"
26 class FrameRateCounter
;
27 class PaintTimeCounter
;
29 class CC_EXPORT HeadsUpDisplayLayerImpl
: public LayerImpl
{
31 static scoped_ptr
<HeadsUpDisplayLayerImpl
> Create(LayerTreeImpl
* tree_impl
,
33 return make_scoped_ptr(new HeadsUpDisplayLayerImpl(tree_impl
, id
));
35 ~HeadsUpDisplayLayerImpl() override
;
37 scoped_ptr
<LayerImpl
> CreateLayerImpl(LayerTreeImpl
* tree_impl
) override
;
39 bool WillDraw(DrawMode draw_mode
,
40 ResourceProvider
* resource_provider
) override
;
41 void AppendQuads(RenderPass
* render_pass
,
42 AppendQuadsData
* append_quads_data
) override
;
43 void UpdateHudTexture(DrawMode draw_mode
,
44 ResourceProvider
* resource_provider
);
46 void ReleaseResources() override
;
48 gfx::Rect
GetEnclosingRectInTargetSpace() const override
;
50 bool IsAnimatingHUDContents() const { return fade_step_
> 0; }
55 Graph(double indicator_value
, double start_upper_bound
);
57 // Eases the upper bound, which limits what is currently visible in the
58 // graph, so that the graph always scales to either it's max or
59 // default_upper_bound.
60 double UpdateUpperBound();
66 double current_upper_bound
;
67 const double default_upper_bound
;
68 const double indicator
;
71 HeadsUpDisplayLayerImpl(LayerTreeImpl
* tree_impl
, int id
);
73 const char* LayerTypeAsString() const override
;
75 void AsValueInto(base::trace_event::TracedValue
* dict
) const override
;
77 void UpdateHudContents();
78 void DrawHudContents(SkCanvas
* canvas
);
80 void DrawText(SkCanvas
* canvas
,
82 const std::string
& text
,
87 void DrawText(SkCanvas
* canvas
,
89 const std::string
& text
,
92 const SkPoint
& pos
) const;
93 void DrawGraphBackground(SkCanvas
* canvas
,
95 const SkRect
& bounds
) const;
96 void DrawGraphLines(SkCanvas
* canvas
,
99 const Graph
& graph
) const;
101 SkRect
DrawFPSDisplay(SkCanvas
* canvas
,
102 const FrameRateCounter
* fps_counter
,
105 SkRect
DrawMemoryDisplay(SkCanvas
* canvas
,
109 SkRect
DrawGpuRasterizationStatus(SkCanvas
* canvas
,
113 SkRect
DrawPaintTimeDisplay(SkCanvas
* canvas
,
114 const PaintTimeCounter
* paint_time_counter
,
117 void DrawDebugRect(SkCanvas
* canvas
,
119 const DebugRect
& rect
,
120 SkColor stroke_color
,
123 const std::string
& label_text
) const;
124 void DrawDebugRects(SkCanvas
* canvas
, DebugRectHistory
* debug_rect_history
);
126 void AcquireResource(ResourceProvider
* resource_provider
);
127 void ReleaseUnmatchedSizeResources(ResourceProvider
* resource_provider
);
129 ScopedPtrVector
<ScopedResource
> resources_
;
130 skia::RefPtr
<SkSurface
> hud_surface_
;
132 skia::RefPtr
<SkTypeface
> typeface_
;
134 float internal_contents_scale_
;
135 gfx::Size internal_content_bounds_
;
138 Graph paint_time_graph_
;
139 MemoryHistory::Entry memory_entry_
;
141 std::vector
<DebugRect
> paint_rects_
;
143 base::TimeTicks time_of_last_graph_update_
;
145 DISALLOW_COPY_AND_ASSIGN(HeadsUpDisplayLayerImpl
);
150 #endif // CC_LAYERS_HEADS_UP_DISPLAY_LAYER_IMPL_H_