1// Copyright 2013 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.
4
5#ifndef ASH_TOUCH_TOUCH_HUD_PROJECTION_H_
6#define ASH_TOUCH_TOUCH_HUD_PROJECTION_H_
7
8#include <map>
9
10#include "ash/touch/touch_observer_hud.h"
11
12namespace ash {
13class TouchPointView;
14
15// A heads-up display to show active touch points on the screen. As a derivative
16// of TouchObserverHUD, objects of this class manage their own lifetime.
17class TouchHudProjection : public TouchObserverHUD {
18 public:
19  explicit TouchHudProjection(aura::Window* initial_root);
20
21  // Overriden from TouchObserverHUD.
22  virtual void Clear() OVERRIDE;
23
24 private:
25  friend class TouchHudProjectionTest;
26
27  virtual ~TouchHudProjection();
28
29  // Overriden from TouchObserverHUD.
30  virtual void OnTouchEvent(ui::TouchEvent* event) OVERRIDE;
31  virtual void SetHudForRootWindowController(
32      RootWindowController* controller) OVERRIDE;
33  virtual void UnsetHudForRootWindowController(
34      RootWindowController* controller) OVERRIDE;
35
36  std::map<int, TouchPointView*> points_;
37
38  DISALLOW_COPY_AND_ASSIGN(TouchHudProjection);
39};
40
41}  // namespace ash
42
43#endif  // ASH_TOUCH_TOUCH_HUD_PROJECTION_H_
44