1eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Copyright 2013 The Chromium Authors. All rights reserved. 2eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// found in the LICENSE file. 4eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 5eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#ifndef ASH_TOUCH_TOUCH_HUD_DEBUG_H_ 6eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#define ASH_TOUCH_TOUCH_HUD_DEBUG_H_ 7eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 8eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include <map> 9eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 10eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ash/ash_export.h" 11eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ash/touch/touch_observer_hud.h" 12eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/memory/scoped_ptr.h" 13eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/values.h" 14eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 15eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochnamespace views { 16eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass Label; 17eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass View; 18eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 19eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 20eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochnamespace ash { 21eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochnamespace internal { 22eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 23eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass TouchHudCanvas; 24eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass TouchLog; 25eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 26eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// A heads-up display to show touch traces on the screen and log touch events. 27eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// As a derivative of TouchObserverHUD, objects of this class manage their own 28eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// lifetime. 29eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass ASH_EXPORT TouchHudDebug : public TouchObserverHUD { 30eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch public: 31eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch enum Mode { 32eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch FULLSCREEN, 33eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch REDUCED_SCALE, 34eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch INVISIBLE, 35eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch }; 36eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 37eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch explicit TouchHudDebug(aura::RootWindow* initial_root); 38eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 39eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Returns the log of touch events for all displays as a dictionary mapping id 40eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // of each display to its touch log. 41eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch static scoped_ptr<DictionaryValue> GetAllAsDictionary(); 42eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 43eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Changes the display mode (e.g. scale, visibility). Calling this repeatedly 44eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // cycles between a fixed number of display modes. 45eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch void ChangeToNextMode(); 46eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 47eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Returns log of touch events as a list value. Each item in the list is a 48eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // trace of one touch point. 49eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch scoped_ptr<ListValue> GetLogAsList() const; 50eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 51eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch Mode mode() const { return mode_; } 52eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 53eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Overriden from TouchObserverHUD. 54eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual void Clear() OVERRIDE; 55eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 56eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch private: 57eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual ~TouchHudDebug(); 58eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 59eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch void SetMode(Mode mode); 60eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 61eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch void UpdateTouchPointLabel(int index); 62eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 63eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Overriden from TouchObserverHUD. 64eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual void OnTouchEvent(ui::TouchEvent* event) OVERRIDE; 65eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual void OnDisplayBoundsChanged(const gfx::Display& display) OVERRIDE; 66eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual void SetHudForRootWindowController( 67eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch RootWindowController* controller) OVERRIDE; 68eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual void UnsetHudForRootWindowController( 69eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch RootWindowController* controller) OVERRIDE; 70eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 71eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch static const int kMaxTouchPoints = 32; 72eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 73eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch Mode mode_; 74eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 75eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch scoped_ptr<TouchLog> touch_log_; 76eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 77eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch TouchHudCanvas* canvas_; 78eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch views::View* label_container_; 79eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch views::Label* touch_labels_[kMaxTouchPoints]; 80eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 81eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch DISALLOW_COPY_AND_ASSIGN(TouchHudDebug); 82eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}; 83eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 84eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} // namespace internal 85eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} // namespace ash 86eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 87eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#endif // ASH_TOUCH_TOUCH_HUD_DEBUG_H_ 88