• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2021 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package android.hardware.input;
18 
19 import android.annotation.FloatRange;
20 import android.annotation.NonNull;
21 import android.annotation.SystemApi;
22 import android.os.Parcel;
23 import android.os.Parcelable;
24 
25 import com.android.internal.util.Preconditions;
26 
27 /**
28  * An event describing a mouse scroll interaction originating from a remote device.
29  *
30  * See {@link android.view.MotionEvent}.
31  *
32  * @hide
33  */
34 @SystemApi
35 public final class VirtualMouseScrollEvent implements Parcelable {
36 
37     private final float mXAxisMovement;
38     private final float mYAxisMovement;
39 
VirtualMouseScrollEvent(float xAxisMovement, float yAxisMovement)40     private VirtualMouseScrollEvent(float xAxisMovement, float yAxisMovement) {
41         mXAxisMovement = xAxisMovement;
42         mYAxisMovement = yAxisMovement;
43     }
44 
VirtualMouseScrollEvent(@onNull Parcel parcel)45     private VirtualMouseScrollEvent(@NonNull Parcel parcel) {
46         mXAxisMovement = parcel.readFloat();
47         mYAxisMovement = parcel.readFloat();
48     }
49 
50     @Override
writeToParcel(@onNull Parcel parcel, int parcelableFlags)51     public void writeToParcel(@NonNull Parcel parcel, int parcelableFlags) {
52         parcel.writeFloat(mXAxisMovement);
53         parcel.writeFloat(mYAxisMovement);
54     }
55 
56     @Override
describeContents()57     public int describeContents() {
58         return 0;
59     }
60 
61     /**
62      * Returns the x-axis scroll movement, normalized from -1.0 to 1.0, inclusive. Positive values
63      * indicate scrolling upward; negative values, downward.
64      */
getXAxisMovement()65     public float getXAxisMovement() {
66         return mXAxisMovement;
67     }
68 
69     /**
70      * Returns the y-axis scroll movement, normalized from -1.0 to 1.0, inclusive. Positive values
71      * indicate scrolling towards the right; negative values, to the left.
72      */
getYAxisMovement()73     public float getYAxisMovement() {
74         return mYAxisMovement;
75     }
76 
77     /**
78      * Builder for {@link VirtualMouseScrollEvent}.
79      */
80     public static final class Builder {
81 
82         private float mXAxisMovement;
83         private float mYAxisMovement;
84 
85         /**
86          * Creates a {@link VirtualMouseScrollEvent} object with the current builder configuration.
87          */
build()88         public @NonNull VirtualMouseScrollEvent build() {
89             return new VirtualMouseScrollEvent(mXAxisMovement, mYAxisMovement);
90         }
91 
92         /**
93          * Sets the x-axis scroll movement, normalized from -1.0 to 1.0, inclusive. Positive values
94          * indicate scrolling upward; negative values, downward.
95          *
96          * @return this builder, to allow for chaining of calls
97          */
setXAxisMovement( @loatRangefrom = -1.0f, to = 1.0f) float xAxisMovement)98         public @NonNull Builder setXAxisMovement(
99                 @FloatRange(from = -1.0f, to = 1.0f) float xAxisMovement) {
100             Preconditions.checkArgumentInRange(xAxisMovement, -1f, 1f, "xAxisMovement");
101             mXAxisMovement = xAxisMovement;
102             return this;
103         }
104 
105         /**
106          * Sets the y-axis scroll movement, normalized from -1.0 to 1.0, inclusive. Positive values
107          * indicate scrolling towards the right; negative values, to the left.
108          *
109          * @return this builder, to allow for chaining of calls
110          */
setYAxisMovement( @loatRangefrom = -1.0f, to = 1.0f) float yAxisMovement)111         public @NonNull Builder setYAxisMovement(
112                 @FloatRange(from = -1.0f, to = 1.0f) float yAxisMovement) {
113             Preconditions.checkArgumentInRange(yAxisMovement, -1f, 1f, "yAxisMovement");
114             mYAxisMovement = yAxisMovement;
115             return this;
116         }
117     }
118 
119     public static final @NonNull Parcelable.Creator<VirtualMouseScrollEvent> CREATOR =
120             new Parcelable.Creator<VirtualMouseScrollEvent>() {
121                 public VirtualMouseScrollEvent createFromParcel(Parcel source) {
122                     return new VirtualMouseScrollEvent(source);
123                 }
124 
125                 public VirtualMouseScrollEvent[] newArray(int size) {
126                     return new VirtualMouseScrollEvent[size];
127                 }
128             };
129 }
130