diff options
author | mohsen@chromium.org <mohsen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-07-01 22:43:40 +0000 |
---|---|---|
committer | mohsen@chromium.org <mohsen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-07-01 22:43:40 +0000 |
commit | 2b8a9bb937870c2274d091e29be7762ce1049b6b (patch) | |
tree | aba4c2e2235445df8e25c2dec9d8224adea6f8c6 /ash/touch/touch_hud_debug.h | |
parent | 18ee9f9651d653c8f983e5f3929293bd0265f3ea (diff) | |
download | chromium_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.h | 87 |
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_ |