summaryrefslogtreecommitdiffstats
path: root/ash/touch/touch_hud_debug.h
diff options
context:
space:
mode:
authormohsen@chromium.org <mohsen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-07-01 22:43:40 +0000
committermohsen@chromium.org <mohsen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-07-01 22:43:40 +0000
commit2b8a9bb937870c2274d091e29be7762ce1049b6b (patch)
treeaba4c2e2235445df8e25c2dec9d8224adea6f8c6 /ash/touch/touch_hud_debug.h
parent18ee9f9651d653c8f983e5f3929293bd0265f3ea (diff)
downloadchromium_src-2b8a9bb937870c2274d091e29be7762ce1049b6b.zip
chromium_src-2b8a9bb937870c2274d091e29be7762ce1049b6b.tar.gz
chromium_src-2b8a9bb937870c2274d091e29be7762ce1049b6b.tar.bz2
Separate projection mode from rest of touch HUD
Projection mode is separated from the rest of the touch HUD. It now can be toggled on/off using Ctrl+Alt+9 key combination and no command line flag is needed. The rest of the touch HUD is still behind the --ash-touch-log flag. BUG=233567 Review URL: https://chromiumcodereview.appspot.com/17063013 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@209523 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ash/touch/touch_hud_debug.h')
-rw-r--r--ash/touch/touch_hud_debug.h87
1 files changed, 87 insertions, 0 deletions
diff --git a/ash/touch/touch_hud_debug.h b/ash/touch/touch_hud_debug.h
new file mode 100644
index 0000000..a02a888
--- /dev/null
+++ b/ash/touch/touch_hud_debug.h
@@ -0,0 +1,87 @@
+// Copyright 2013 The Chromium 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 ASH_TOUCH_TOUCH_HUD_DEBUG_H_
+#define ASH_TOUCH_TOUCH_HUD_DEBUG_H_
+
+#include <map>
+
+#include "ash/ash_export.h"
+#include "ash/touch/touch_observer_hud.h"
+#include "base/memory/scoped_ptr.h"
+#include "base/values.h"
+
+namespace views {
+class Label;
+class View;
+}
+
+namespace ash {
+namespace internal {
+
+class TouchHudCanvas;
+class TouchLog;
+
+// A heads-up display to show touch traces on the screen and log touch events.
+// As a derivative of TouchObserverHUD, objects of this class manage their own
+// lifetime.
+class ASH_EXPORT TouchHudDebug : public TouchObserverHUD {
+ public:
+ enum Mode {
+ FULLSCREEN,
+ REDUCED_SCALE,
+ INVISIBLE,
+ };
+
+ explicit TouchHudDebug(aura::RootWindow* initial_root);
+
+ // Returns the log of touch events for all displays as a dictionary mapping id
+ // of each display to its touch log.
+ static scoped_ptr<DictionaryValue> GetAllAsDictionary();
+
+ // Changes the display mode (e.g. scale, visibility). Calling this repeatedly
+ // cycles between a fixed number of display modes.
+ void ChangeToNextMode();
+
+ // Returns log of touch events as a list value. Each item in the list is a
+ // trace of one touch point.
+ scoped_ptr<ListValue> GetLogAsList() const;
+
+ Mode mode() const { return mode_; }
+
+ // Overriden from TouchObserverHUD.
+ virtual void Clear() OVERRIDE;
+
+ private:
+ virtual ~TouchHudDebug();
+
+ void SetMode(Mode mode);
+
+ void UpdateTouchPointLabel(int index);
+
+ // Overriden from TouchObserverHUD.
+ virtual void OnTouchEvent(ui::TouchEvent* event) OVERRIDE;
+ virtual void OnDisplayBoundsChanged(const gfx::Display& display) OVERRIDE;
+ virtual void SetHudForRootWindowController(
+ RootWindowController* controller) OVERRIDE;
+ virtual void UnsetHudForRootWindowController(
+ RootWindowController* controller) OVERRIDE;
+
+ static const int kMaxTouchPoints = 32;
+
+ Mode mode_;
+
+ scoped_ptr<TouchLog> touch_log_;
+
+ TouchHudCanvas* canvas_;
+ views::View* label_container_;
+ views::Label* touch_labels_[kMaxTouchPoints];
+
+ DISALLOW_COPY_AND_ASSIGN(TouchHudDebug);
+};
+
+} // namespace internal
+} // namespace ash
+
+#endif // ASH_TOUCH_TOUCH_HUD_DEBUG_H_