Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(65)

Side by Side Diff: ash/laser/laser_pointer_controller.cc

Issue 2716223002: ash: Use floating point precision for laser pointer. (Closed)
Patch Set: rebase and fix unit test Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « ash/laser/laser_pointer_controller.h ('k') | ash/laser/laser_pointer_points.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ash/laser/laser_pointer_controller.h" 5 #include "ash/laser/laser_pointer_controller.h"
6 6
7 #include "ash/common/system/chromeos/palette/palette_utils.h" 7 #include "ash/common/system/chromeos/palette/palette_utils.h"
8 #include "ash/laser/laser_pointer_view.h" 8 #include "ash/laser/laser_pointer_view.h"
9 #include "ash/shell.h" 9 #include "ash/shell.h"
10 #include "ui/display/screen.h" 10 #include "ui/display/screen.h"
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 // to seamlessly drag a finger between two displays like it is with a mouse. 65 // to seamlessly drag a finger between two displays like it is with a mouse.
66 gfx::Point event_location = event->root_location(); 66 gfx::Point event_location = event->root_location();
67 aura::Window* current_window = 67 aura::Window* current_window =
68 static_cast<aura::Window*>(event->target())->GetRootWindow(); 68 static_cast<aura::Window*>(event->target())->GetRootWindow();
69 69
70 // Start a new laser session if the stylus is pressed but not pressed over the 70 // Start a new laser session if the stylus is pressed but not pressed over the
71 // palette. 71 // palette.
72 if (event->type() == ui::ET_TOUCH_PRESSED && 72 if (event->type() == ui::ET_TOUCH_PRESSED &&
73 !palette_utils::PaletteContainsPointInScreen(event_location)) { 73 !palette_utils::PaletteContainsPointInScreen(event_location)) {
74 DestroyLaserPointerView(); 74 DestroyLaserPointerView();
75 UpdateLaserPointerView(current_window, event_location, event); 75 UpdateLaserPointerView(current_window, event->root_location_f(), event);
76 } 76 }
77 77
78 // Do not update laser if it is in the process of fading away. 78 // Do not update laser if it is in the process of fading away.
79 if (event->type() == ui::ET_TOUCH_MOVED && laser_pointer_view_ && 79 if (event->type() == ui::ET_TOUCH_MOVED && laser_pointer_view_ &&
80 !is_fading_away_) { 80 !is_fading_away_) {
81 UpdateLaserPointerView(current_window, event_location, event); 81 UpdateLaserPointerView(current_window, event->root_location_f(), event);
82 RestartTimer(); 82 RestartTimer();
83 } 83 }
84 84
85 if (event->type() == ui::ET_TOUCH_RELEASED && laser_pointer_view_ && 85 if (event->type() == ui::ET_TOUCH_RELEASED && laser_pointer_view_ &&
86 !is_fading_away_) { 86 !is_fading_away_) {
87 is_fading_away_ = true; 87 is_fading_away_ = true;
88 UpdateLaserPointerView(current_window, event_location, event); 88 UpdateLaserPointerView(current_window, event->root_location_f(), event);
89 RestartTimer(); 89 RestartTimer();
90 } 90 }
91 } 91 }
92 92
93 void LaserPointerController::OnWindowDestroying(aura::Window* window) { 93 void LaserPointerController::OnWindowDestroying(aura::Window* window) {
94 SwitchTargetRootWindowIfNeeded(window); 94 SwitchTargetRootWindowIfNeeded(window);
95 } 95 }
96 96
97 void LaserPointerController::SwitchTargetRootWindowIfNeeded( 97 void LaserPointerController::SwitchTargetRootWindowIfNeeded(
98 aura::Window* root_window) { 98 aura::Window* root_window) {
99 if (!root_window) { 99 if (!root_window) {
100 DestroyLaserPointerView(); 100 DestroyLaserPointerView();
101 } 101 }
102 102
103 if (!laser_pointer_view_ && enabled_) { 103 if (!laser_pointer_view_ && enabled_) {
104 laser_pointer_view_.reset(new LaserPointerView( 104 laser_pointer_view_.reset(new LaserPointerView(
105 base::TimeDelta::FromMilliseconds(kPointLifeDurationMs), root_window)); 105 base::TimeDelta::FromMilliseconds(kPointLifeDurationMs), root_window));
106 } 106 }
107 } 107 }
108 108
109 void LaserPointerController::UpdateLaserPointerView( 109 void LaserPointerController::UpdateLaserPointerView(
110 aura::Window* current_window, 110 aura::Window* current_window,
111 const gfx::Point& event_location, 111 const gfx::PointF& event_location,
112 ui::Event* event) { 112 ui::Event* event) {
113 SwitchTargetRootWindowIfNeeded(current_window); 113 SwitchTargetRootWindowIfNeeded(current_window);
114 current_stylus_location_ = event_location; 114 current_stylus_location_ = event_location;
115 laser_pointer_view_->AddNewPoint(current_stylus_location_); 115 laser_pointer_view_->AddNewPoint(current_stylus_location_);
116 event->StopPropagation(); 116 event->StopPropagation();
117 } 117 }
118 118
119 void LaserPointerController::DestroyLaserPointerView() { 119 void LaserPointerController::DestroyLaserPointerView() {
120 // |stationary_timer_| should also be stopped so that it does not attempt to 120 // |stationary_timer_| should also be stopped so that it does not attempt to
121 // add points when |laser_pointer_view_| is null. 121 // add points when |laser_pointer_view_| is null.
(...skipping 22 matching lines...) Expand all
144 kPointLifeDurationMs) { 144 kPointLifeDurationMs) {
145 stationary_timer_->Stop(); 145 stationary_timer_->Stop();
146 // Reset the view if the timer expires and the view was in process of fading 146 // Reset the view if the timer expires and the view was in process of fading
147 // away. 147 // away.
148 if (is_fading_away_) 148 if (is_fading_away_)
149 DestroyLaserPointerView(); 149 DestroyLaserPointerView();
150 } 150 }
151 stationary_timer_repeat_count_++; 151 stationary_timer_repeat_count_++;
152 } 152 }
153 } // namespace ash 153 } // namespace ash
OLDNEW
« no previous file with comments | « ash/laser/laser_pointer_controller.h ('k') | ash/laser/laser_pointer_points.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698