diff options
author | Jeff Brown <jeffbrown@google.com> | 2010-12-23 17:50:18 -0800 |
---|---|---|
committer | Jeff Brown <jeffbrown@google.com> | 2010-12-29 13:19:53 -0800 |
commit | 83c09685f2e62bc3cf7e71bc61d903f4b9ccaeb4 (patch) | |
tree | c8bc2824e0d2e2b353b3d16ecf5836ab8fd9e67c /include | |
parent | dd830c21149c336139b28560c0e6fba9f3d0e0fc (diff) | |
download | frameworks_base-83c09685f2e62bc3cf7e71bc61d903f4b9ccaeb4.zip frameworks_base-83c09685f2e62bc3cf7e71bc61d903f4b9ccaeb4.tar.gz frameworks_base-83c09685f2e62bc3cf7e71bc61d903f4b9ccaeb4.tar.bz2 |
Add initial support for cursor-based pointing devices.
Some parts stubbed out but you can plug in a mouse and move
a green cursor around to interact with the UI.
Change-Id: I80d597a7f11d3bd92041890f74b3c77326975e6e
Diffstat (limited to 'include')
-rw-r--r-- | include/ui/EventHub.h | 4 | ||||
-rw-r--r-- | include/ui/InputReader.h | 21 | ||||
-rw-r--r-- | include/ui/PointerController.h | 63 | ||||
-rw-r--r-- | include/utils/PropertyMap.h | 6 |
4 files changed, 89 insertions, 5 deletions
diff --git a/include/ui/EventHub.h b/include/ui/EventHub.h index 6c6c297..8f922a5 100644 --- a/include/ui/EventHub.h +++ b/include/ui/EventHub.h @@ -109,8 +109,8 @@ enum { /* The input device is a touchscreen (either single-touch or multi-touch). */ INPUT_DEVICE_CLASS_TOUCHSCREEN = 0x00000004, - /* The input device is a trackball. */ - INPUT_DEVICE_CLASS_TRACKBALL = 0x00000008, + /* The input device is a cursor device such as a trackball or mouse. */ + INPUT_DEVICE_CLASS_CURSOR = 0x00000008, /* The input device is a multi-touch touchscreen. */ INPUT_DEVICE_CLASS_TOUCHSCREEN_MT= 0x00000010, diff --git a/include/ui/InputReader.h b/include/ui/InputReader.h index b466ff1..00a06be 100644 --- a/include/ui/InputReader.h +++ b/include/ui/InputReader.h @@ -20,6 +20,7 @@ #include <ui/EventHub.h> #include <ui/Input.h> #include <ui/InputDispatcher.h> +#include <ui/PointerController.h> #include <utils/KeyedVector.h> #include <utils/threads.h> #include <utils/Timers.h> @@ -77,6 +78,9 @@ public: /* Gets the excluded device names for the platform. */ virtual void getExcludedDeviceNames(Vector<String8>& outExcludedDeviceNames) = 0; + + /* Gets a pointer controller associated with the specified cursor device (ie. a mouse). */ + virtual sp<PointerControllerInterface> obtainPointerController(int32_t deviceId) = 0; }; @@ -421,10 +425,10 @@ private: }; -class TrackballInputMapper : public InputMapper { +class CursorInputMapper : public InputMapper { public: - TrackballInputMapper(InputDevice* device); - virtual ~TrackballInputMapper(); + CursorInputMapper(InputDevice* device); + virtual ~CursorInputMapper(); virtual uint32_t getSources(); virtual void populateDeviceInfo(InputDeviceInfo* deviceInfo); @@ -443,6 +447,12 @@ private: // Immutable configuration parameters. struct Parameters { + enum Mode { + MODE_POINTER, + MODE_NAVIGATION, + }; + + Mode mode; int32_t associatedDisplayId; bool orientationAware; } mParameters; @@ -465,10 +475,12 @@ private: } } mAccumulator; + int32_t mSources; float mXScale; float mYScale; float mXPrecision; float mYPrecision; + sp<PointerControllerInterface> mPointerController; struct LockedState { bool down; @@ -572,6 +584,9 @@ protected: } }; + // Input sources supported by the device. + int32_t mSources; + // Immutable configuration parameters. struct Parameters { enum DeviceType { diff --git a/include/ui/PointerController.h b/include/ui/PointerController.h new file mode 100644 index 0000000..4db24e5 --- /dev/null +++ b/include/ui/PointerController.h @@ -0,0 +1,63 @@ +/* + * Copyright (C) 2010 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _UI_POINTER_CONTROLLER_H +#define _UI_POINTER_CONTROLLER_H + +#include <utils/RefBase.h> + +namespace android { + +enum { + POINTER_BUTTON_1 = 1 << 0, +}; + +/** + * Interface for tracking a single (mouse) pointer. + * + * The pointer controller is responsible for providing synchronization and for tracking + * display orientation changes if needed. + */ +class PointerControllerInterface : public virtual RefBase { +protected: + PointerControllerInterface() { } + virtual ~PointerControllerInterface() { } + +public: + /* Gets the bounds of the region that the pointer can traverse. + * Returns true if the bounds are available. */ + virtual bool getBounds(float* outMinX, float* outMinY, + float* outMaxX, float* outMaxY) const = 0; + + /* Move the pointer. */ + virtual void move(float deltaX, float deltaY) = 0; + + /* Sets a mask that indicates which buttons are pressed. */ + virtual void setButtonState(uint32_t buttonState) = 0; + + /* Gets a mask that indicates which buttons are pressed. */ + virtual uint32_t getButtonState() const = 0; + + /* Sets the absolute location of the pointer. */ + virtual void setPosition(float x, float y) = 0; + + /* Gets the absolute location of the pointer. */ + virtual void getPosition(float* outX, float* outY) const = 0; +}; + +} // namespace android + +#endif // _UI_POINTER_CONTROLLER_H diff --git a/include/utils/PropertyMap.h b/include/utils/PropertyMap.h index a54f819..a9e674f 100644 --- a/include/utils/PropertyMap.h +++ b/include/utils/PropertyMap.h @@ -71,6 +71,12 @@ public: bool tryGetProperty(const String8& key, int32_t& outValue) const; bool tryGetProperty(const String8& key, float& outValue) const; + /* Adds all values from the specified property map. */ + void addAll(const PropertyMap* map); + + /* Gets the underlying property map. */ + inline const KeyedVector<String8, String8>& getProperties() const { return mProperties; } + /* Loads a property map from a file. */ static status_t load(const String8& filename, PropertyMap** outMap); |