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

Side by Side Diff: athena/wm/bezel_controller.h

Issue 420603011: Split Screen mode implementation (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@split_view
Patch Set: Addressing review feedback + Rebase. Created 6 years, 4 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 #ifndef ATHENA_WM_BEZEL_CONTROLLER_H_ 5 #ifndef ATHENA_WM_BEZEL_CONTROLLER_H_
6 #define ATHENA_WM_BEZEL_CONTROLLER_H_ 6 #define ATHENA_WM_BEZEL_CONTROLLER_H_
7 7
8 #include "ui/events/event_handler.h" 8 #include "ui/events/event_handler.h"
9 9
10 namespace aura { 10 namespace aura {
(...skipping 17 matching lines...) Expand all
28 enum Bezel { BEZEL_NONE, BEZEL_LEFT, BEZEL_RIGHT, BEZEL_TOP, BEZEL_BOTTOM }; 28 enum Bezel { BEZEL_NONE, BEZEL_LEFT, BEZEL_RIGHT, BEZEL_TOP, BEZEL_BOTTOM };
29 29
30 // Responsible for handling scroll gestures initiated from the bezel. 30 // Responsible for handling scroll gestures initiated from the bezel.
31 // Two touch points are need to perform the bezel scroll gesture from 31 // Two touch points are need to perform the bezel scroll gesture from
32 // the left and right bezel. 32 // the left and right bezel.
33 class ScrollDelegate { 33 class ScrollDelegate {
34 public: 34 public:
35 virtual ~ScrollDelegate() {} 35 virtual ~ScrollDelegate() {}
36 36
37 // Beginning of a bezel scroll gesture started from the |bezel|. 37 // Beginning of a bezel scroll gesture started from the |bezel|.
38 // |delta| is the difference between the x-coordinate of the current scroll
39 // position and the bezel. It will be zero or negative for the right bezel.
38 virtual void ScrollBegin(Bezel bezel, float delta) = 0; 40 virtual void ScrollBegin(Bezel bezel, float delta) = 0;
39 41
40 // End of the current bezel scroll 42 // End of the current bezel scroll
41 virtual void ScrollEnd() = 0; 43 virtual void ScrollEnd() = 0;
42 44
43 // Update of the scroll position for the currently active bezel scroll. 45 // Update of the scroll position for the currently active bezel scroll.
46 // |delta| is the difference between the x-coordinate of the current scroll
47 // position and the bezel. It will be zero or negative for the right bezel.
oshima 2014/08/08 16:45:34 nit: you may refer to the comment in ScrollBegin f
mfomitchev 2014/08/08 17:40:50 Done.
44 virtual void ScrollUpdate(float delta) = 0; 48 virtual void ScrollUpdate(float delta) = 0;
45 49
46 // Should return false if the delegate isn't going to react to the scroll 50 // Should return false if the delegate isn't going to react to the scroll
47 // events. 51 // events.
48 virtual bool CanScroll() = 0; 52 virtual bool CanScroll() = 0;
49 }; 53 };
50 54
51 explicit BezelController(aura::Window* container); 55 explicit BezelController(aura::Window* container);
52 virtual ~BezelController() {} 56 virtual ~BezelController() {}
53 57
54 // Set the delegate to handle the gestures from left and right bezels. 58 // Set the delegate to handle the gestures from left and right bezels.
55 // Two touch points are need to perform the bezel scroll gesture from 59 // Two touch points are need to perform the bezel scroll gesture from
56 // the left and right bezel. 60 // the left and right bezel.
57 void set_left_right_delegate(ScrollDelegate* delegate) { 61 void set_left_right_delegate(ScrollDelegate* delegate) {
58 left_right_delegate_ = delegate; 62 left_right_delegate_ = delegate;
59 } 63 }
60 64
61 private: 65 private:
62 enum State { 66 enum State {
63 NONE, 67 NONE,
64 IGNORE_CURRENT_SCROLL, 68 IGNORE_CURRENT_SCROLL,
65 BEZEL_GESTURE_STARTED, 69 BEZEL_GESTURE_STARTED,
66 BEZEL_SCROLLING_ONE_FINGER, 70 BEZEL_SCROLLING_ONE_FINGER,
67 BEZEL_SCROLLING_TWO_FINGERS, 71 BEZEL_SCROLLING_TWO_FINGERS,
68 }; 72 };
69 73
70 // Calculates the distance from |position| to the |bezel|. 74 void SetState(State state);
71 float GetDistance(const gfx::PointF& position, Bezel bezel); 75 // |scroll_delta| only needs to be passed when |state| is one of the
72 76 // BEZEL_SROLLING states.
73 // |scroll_position| only needs to be passed in the scrolling state 77 void SetState(State state, float scroll_delta);
74 void SetState(State state, const gfx::PointF& scroll_position);
75 78
76 // Returns the bezel corresponding to the |location| or BEZEL_NONE if the 79 // Returns the bezel corresponding to the |location| or BEZEL_NONE if the
77 // location is outside of the bezel area. 80 // location is outside of the bezel area.
78 Bezel GetBezel(const gfx::PointF& location); 81 Bezel GetBezel(const gfx::PointF& location);
79 82
80 // ui::EventHandler overrides 83 // ui::EventHandler overrides
81 virtual void OnGestureEvent(ui::GestureEvent* event) OVERRIDE; 84 virtual void OnGestureEvent(ui::GestureEvent* event) OVERRIDE;
82 85
83 aura::Window* container_; 86 aura::Window* container_;
84 87
85 State state_; 88 State state_;
86 89
87 // The bezel where the currently active scroll was started. 90 // The bezel where the currently active scroll was started.
88 Bezel scroll_bezel_; 91 Bezel scroll_bezel_;
89 92
90 // The target of the bezel scroll gesture. Used to filter out other gestures 93 // The target of the bezel scroll gesture. Used to filter out other gestures
91 // when the bezel scroll is in progress. 94 // when the bezel scroll is in progress.
92 ui::EventTarget* scroll_target_; 95 ui::EventTarget* scroll_target_;
93 96
94 // Responsible for handling gestures started from the left and right bezels. 97 // Responsible for handling gestures started from the left and right bezels.
95 // Not owned. 98 // Not owned.
96 ScrollDelegate* left_right_delegate_; 99 ScrollDelegate* left_right_delegate_;
97 100
98 DISALLOW_COPY_AND_ASSIGN(BezelController); 101 DISALLOW_COPY_AND_ASSIGN(BezelController);
99 }; 102 };
100 103
101 } // namespace athena 104 } // namespace athena
102 105
103 #endif // ATHENA_WM_BEZEL_CONTROLLER_H_ 106 #endif // ATHENA_WM_BEZEL_CONTROLLER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698