Change POINTER_ICON_STYLE enum to a type safe enum class
Test: Current tests all pass, this is a static type change, not a functional change. Change-Id: I8f0e8e43ea64f5abab163e4ef5444a8cb3d4fa78
This commit is contained in:
@@ -44,7 +44,8 @@ static struct {
|
||||
|
||||
// --- Global Functions ---
|
||||
|
||||
jobject android_view_PointerIcon_getSystemIcon(JNIEnv* env, jobject contextObj, int32_t style) {
|
||||
jobject android_view_PointerIcon_getSystemIcon(JNIEnv* env, jobject contextObj,
|
||||
PointerIconStyle style) {
|
||||
jobject pointerIconObj = env->CallStaticObjectMethod(gPointerIconClassInfo.clazz,
|
||||
gPointerIconClassInfo.getSystemIcon, contextObj, style);
|
||||
if (env->ExceptionCheck()) {
|
||||
@@ -80,7 +81,8 @@ status_t android_view_PointerIcon_getLoadedIcon(JNIEnv* env, jobject pointerIcon
|
||||
if (!pointerIconObj) {
|
||||
return BAD_VALUE;
|
||||
}
|
||||
outPointerIcon->style = env->GetIntField(pointerIconObj, gPointerIconClassInfo.mType);
|
||||
outPointerIcon->style = static_cast<PointerIconStyle>(
|
||||
env->GetIntField(pointerIconObj, gPointerIconClassInfo.mType));
|
||||
outPointerIcon->hotSpotX = env->GetFloatField(pointerIconObj, gPointerIconClassInfo.mHotSpotX);
|
||||
outPointerIcon->hotSpotY = env->GetFloatField(pointerIconObj, gPointerIconClassInfo.mHotSpotY);
|
||||
|
||||
@@ -107,7 +109,8 @@ status_t android_view_PointerIcon_getLoadedIcon(JNIEnv* env, jobject pointerIcon
|
||||
}
|
||||
|
||||
status_t android_view_PointerIcon_loadSystemIcon(JNIEnv* env, jobject contextObj,
|
||||
int32_t style, PointerIcon* outPointerIcon) {
|
||||
PointerIconStyle style,
|
||||
PointerIcon* outPointerIcon) {
|
||||
jobject pointerIconObj = android_view_PointerIcon_getSystemIcon(env, contextObj, style);
|
||||
if (!pointerIconObj) {
|
||||
outPointerIcon->reset();
|
||||
@@ -120,7 +123,6 @@ status_t android_view_PointerIcon_loadSystemIcon(JNIEnv* env, jobject contextObj
|
||||
return status;
|
||||
}
|
||||
|
||||
|
||||
// --- JNI Registration ---
|
||||
|
||||
int register_android_view_PointerIcon(JNIEnv* env) {
|
||||
|
||||
@@ -33,17 +33,17 @@ namespace android {
|
||||
struct PointerIcon {
|
||||
inline PointerIcon() { reset(); }
|
||||
|
||||
int32_t style;
|
||||
PointerIconStyle style;
|
||||
graphics::Bitmap bitmap;
|
||||
float hotSpotX;
|
||||
float hotSpotY;
|
||||
std::vector<graphics::Bitmap> bitmapFrames;
|
||||
int32_t durationPerFrame;
|
||||
|
||||
inline bool isNullIcon() { return style == POINTER_ICON_STYLE_NULL; }
|
||||
inline bool isNullIcon() { return style == PointerIconStyle::TYPE_NULL; }
|
||||
|
||||
inline void reset() {
|
||||
style = POINTER_ICON_STYLE_NULL;
|
||||
style = PointerIconStyle::TYPE_NULL;
|
||||
bitmap.reset();
|
||||
hotSpotX = 0;
|
||||
hotSpotY = 0;
|
||||
@@ -54,7 +54,7 @@ struct PointerIcon {
|
||||
|
||||
/* Gets a system pointer icon with the specified style. */
|
||||
extern jobject android_view_PointerIcon_getSystemIcon(JNIEnv* env, jobject contextObj,
|
||||
int32_t style);
|
||||
PointerIconStyle style);
|
||||
|
||||
/* Loads the bitmap associated with a pointer icon.
|
||||
* If pointerIconObj is NULL, returns OK and a pointer icon with POINTER_ICON_STYLE_NULL. */
|
||||
@@ -68,7 +68,8 @@ extern status_t android_view_PointerIcon_getLoadedIcon(JNIEnv* env, jobject poin
|
||||
/* Loads the bitmap associated with a pointer icon by style.
|
||||
* If pointerIconObj is NULL, returns OK and a pointer icon with POINTER_ICON_STYLE_NULL. */
|
||||
extern status_t android_view_PointerIcon_loadSystemIcon(JNIEnv* env, jobject contextObj,
|
||||
int32_t style, PointerIcon* outPointerIcon);
|
||||
PointerIconStyle style,
|
||||
PointerIcon* outPointerIcon);
|
||||
|
||||
} // namespace android
|
||||
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
|
||||
#include "MouseCursorController.h"
|
||||
|
||||
#include <input/Input.h>
|
||||
#include <log/log.h>
|
||||
|
||||
namespace {
|
||||
@@ -286,7 +287,7 @@ void MouseCursorController::setDisplayViewport(const DisplayViewport& viewport,
|
||||
updatePointerLocked();
|
||||
}
|
||||
|
||||
void MouseCursorController::updatePointerIcon(int32_t iconId) {
|
||||
void MouseCursorController::updatePointerIcon(PointerIconStyle iconId) {
|
||||
std::scoped_lock lock(mLock);
|
||||
|
||||
if (mLocked.requestedPointerType != iconId) {
|
||||
@@ -299,7 +300,7 @@ void MouseCursorController::updatePointerIcon(int32_t iconId) {
|
||||
void MouseCursorController::setCustomPointerIcon(const SpriteIcon& icon) {
|
||||
std::scoped_lock lock(mLock);
|
||||
|
||||
const int32_t iconId = mContext.getPolicy()->getCustomPointerIconId();
|
||||
const PointerIconStyle iconId = mContext.getPolicy()->getCustomPointerIconId();
|
||||
mLocked.additionalMouseResources[iconId] = icon;
|
||||
mLocked.requestedPointerType = iconId;
|
||||
mLocked.updatePointerIcon = true;
|
||||
@@ -334,7 +335,7 @@ bool MouseCursorController::doFadingAnimationLocked(nsecs_t timestamp) REQUIRES(
|
||||
}
|
||||
|
||||
bool MouseCursorController::doBitmapAnimationLocked(nsecs_t timestamp) REQUIRES(mLock) {
|
||||
std::map<int32_t, PointerAnimation>::const_iterator iter =
|
||||
std::map<PointerIconStyle, PointerAnimation>::const_iterator iter =
|
||||
mLocked.animationResources.find(mLocked.requestedPointerType);
|
||||
if (iter == mLocked.animationResources.end()) {
|
||||
return false;
|
||||
@@ -380,10 +381,10 @@ void MouseCursorController::updatePointerLocked() REQUIRES(mLock) {
|
||||
if (mLocked.requestedPointerType == mContext.getPolicy()->getDefaultPointerIconId()) {
|
||||
mLocked.pointerSprite->setIcon(mLocked.pointerIcon);
|
||||
} else {
|
||||
std::map<int32_t, SpriteIcon>::const_iterator iter =
|
||||
std::map<PointerIconStyle, SpriteIcon>::const_iterator iter =
|
||||
mLocked.additionalMouseResources.find(mLocked.requestedPointerType);
|
||||
if (iter != mLocked.additionalMouseResources.end()) {
|
||||
std::map<int32_t, PointerAnimation>::const_iterator anim_iter =
|
||||
std::map<PointerIconStyle, PointerAnimation>::const_iterator anim_iter =
|
||||
mLocked.animationResources.find(mLocked.requestedPointerType);
|
||||
if (anim_iter != mLocked.animationResources.end()) {
|
||||
mLocked.animationFrameIndex = 0;
|
||||
|
||||
@@ -54,7 +54,7 @@ public:
|
||||
void unfade(PointerControllerInterface::Transition transition);
|
||||
void setDisplayViewport(const DisplayViewport& viewport, bool getAdditionalMouseResources);
|
||||
|
||||
void updatePointerIcon(int32_t iconId);
|
||||
void updatePointerIcon(PointerIconStyle iconId);
|
||||
void setCustomPointerIcon(const SpriteIcon& icon);
|
||||
void reloadPointerResources(bool getAdditionalMouseResources);
|
||||
|
||||
@@ -88,10 +88,10 @@ private:
|
||||
|
||||
bool resourcesLoaded;
|
||||
|
||||
std::map<int32_t, SpriteIcon> additionalMouseResources;
|
||||
std::map<int32_t, PointerAnimation> animationResources;
|
||||
std::map<PointerIconStyle, SpriteIcon> additionalMouseResources;
|
||||
std::map<PointerIconStyle, PointerAnimation> animationResources;
|
||||
|
||||
int32_t requestedPointerType;
|
||||
PointerIconStyle requestedPointerType;
|
||||
|
||||
int32_t buttonState;
|
||||
|
||||
|
||||
@@ -264,7 +264,7 @@ void PointerController::setDisplayViewport(const DisplayViewport& viewport) {
|
||||
}
|
||||
}
|
||||
|
||||
void PointerController::updatePointerIcon(int32_t iconId) {
|
||||
void PointerController::updatePointerIcon(PointerIconStyle iconId) {
|
||||
std::scoped_lock lock(getLock());
|
||||
mCursorController.updatePointerIcon(iconId);
|
||||
}
|
||||
|
||||
@@ -65,7 +65,7 @@ public:
|
||||
BitSet32 spotIdBits, int32_t displayId);
|
||||
virtual void clearSpots();
|
||||
|
||||
void updatePointerIcon(int32_t iconId);
|
||||
void updatePointerIcon(PointerIconStyle iconId);
|
||||
void setCustomPointerIcon(const SpriteIcon& icon);
|
||||
void setInactivityTimeout(InactivityTimeout inactivityTimeout);
|
||||
void doInactivityTimeout();
|
||||
|
||||
@@ -75,10 +75,11 @@ public:
|
||||
virtual void loadPointerIcon(SpriteIcon* icon, int32_t displayId) = 0;
|
||||
virtual void loadPointerResources(PointerResources* outResources, int32_t displayId) = 0;
|
||||
virtual void loadAdditionalMouseResources(
|
||||
std::map<int32_t, SpriteIcon>* outResources,
|
||||
std::map<int32_t, PointerAnimation>* outAnimationResources, int32_t displayId) = 0;
|
||||
virtual int32_t getDefaultPointerIconId() = 0;
|
||||
virtual int32_t getCustomPointerIconId() = 0;
|
||||
std::map<PointerIconStyle, SpriteIcon>* outResources,
|
||||
std::map<PointerIconStyle, PointerAnimation>* outAnimationResources,
|
||||
int32_t displayId) = 0;
|
||||
virtual PointerIconStyle getDefaultPointerIconId() = 0;
|
||||
virtual PointerIconStyle getCustomPointerIconId() = 0;
|
||||
virtual void onPointerDisplayIdChanged(int32_t displayId, float xPos, float yPos) = 0;
|
||||
};
|
||||
|
||||
|
||||
@@ -242,7 +242,7 @@ void SpriteController::doUpdateSprites() {
|
||||
&& (becomingVisible
|
||||
|| (update.state.dirty & (DIRTY_HOTSPOT | DIRTY_ICON_STYLE)))) {
|
||||
Parcel p;
|
||||
p.writeInt32(update.state.icon.style);
|
||||
p.writeInt32(static_cast<int32_t>(update.state.icon.style));
|
||||
p.writeFloat(update.state.icon.hotSpotX);
|
||||
p.writeFloat(update.state.icon.hotSpotY);
|
||||
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
|
||||
#include <android/graphics/bitmap.h>
|
||||
#include <gui/Surface.h>
|
||||
#include <input/Input.h>
|
||||
|
||||
namespace android {
|
||||
|
||||
@@ -26,12 +27,13 @@ namespace android {
|
||||
* Icon that a sprite displays, including its hotspot.
|
||||
*/
|
||||
struct SpriteIcon {
|
||||
inline SpriteIcon() : style(0), hotSpotX(0), hotSpotY(0) {}
|
||||
inline SpriteIcon(const graphics::Bitmap& bitmap, int32_t style, float hotSpotX, float hotSpotY)
|
||||
inline SpriteIcon() : style(PointerIconStyle::TYPE_NULL), hotSpotX(0), hotSpotY(0) {}
|
||||
inline SpriteIcon(const graphics::Bitmap& bitmap, PointerIconStyle style, float hotSpotX,
|
||||
float hotSpotY)
|
||||
: bitmap(bitmap), style(style), hotSpotX(hotSpotX), hotSpotY(hotSpotY) {}
|
||||
|
||||
graphics::Bitmap bitmap;
|
||||
int32_t style;
|
||||
PointerIconStyle style;
|
||||
float hotSpotX;
|
||||
float hotSpotY;
|
||||
|
||||
@@ -41,7 +43,7 @@ struct SpriteIcon {
|
||||
|
||||
inline void reset() {
|
||||
bitmap.reset();
|
||||
style = 0;
|
||||
style = PointerIconStyle::TYPE_NULL;
|
||||
hotSpotX = 0;
|
||||
hotSpotY = 0;
|
||||
}
|
||||
|
||||
@@ -14,17 +14,18 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "mocks/MockSprite.h"
|
||||
#include "mocks/MockSpriteController.h"
|
||||
|
||||
#include <gmock/gmock.h>
|
||||
#include <gtest/gtest.h>
|
||||
#include <input/PointerController.h>
|
||||
#include <input/SpriteController.h>
|
||||
|
||||
#include <atomic>
|
||||
#include <gmock/gmock.h>
|
||||
#include <gtest/gtest.h>
|
||||
#include <thread>
|
||||
|
||||
#include "input/Input.h"
|
||||
#include "mocks/MockSprite.h"
|
||||
#include "mocks/MockSpriteController.h"
|
||||
|
||||
namespace android {
|
||||
|
||||
enum TestCursorType {
|
||||
@@ -39,7 +40,6 @@ enum TestCursorType {
|
||||
|
||||
using ::testing::AllOf;
|
||||
using ::testing::Field;
|
||||
using ::testing::Mock;
|
||||
using ::testing::NiceMock;
|
||||
using ::testing::Return;
|
||||
using ::testing::Test;
|
||||
@@ -52,10 +52,12 @@ class MockPointerControllerPolicyInterface : public PointerControllerPolicyInter
|
||||
public:
|
||||
virtual void loadPointerIcon(SpriteIcon* icon, int32_t displayId) override;
|
||||
virtual void loadPointerResources(PointerResources* outResources, int32_t displayId) override;
|
||||
virtual void loadAdditionalMouseResources(std::map<int32_t, SpriteIcon>* outResources,
|
||||
std::map<int32_t, PointerAnimation>* outAnimationResources, int32_t displayId) override;
|
||||
virtual int32_t getDefaultPointerIconId() override;
|
||||
virtual int32_t getCustomPointerIconId() override;
|
||||
virtual void loadAdditionalMouseResources(
|
||||
std::map<PointerIconStyle, SpriteIcon>* outResources,
|
||||
std::map<PointerIconStyle, PointerAnimation>* outAnimationResources,
|
||||
int32_t displayId) override;
|
||||
virtual PointerIconStyle getDefaultPointerIconId() override;
|
||||
virtual PointerIconStyle getCustomPointerIconId() override;
|
||||
virtual void onPointerDisplayIdChanged(int32_t displayId, float xPos, float yPos) override;
|
||||
|
||||
bool allResourcesAreLoaded();
|
||||
@@ -85,34 +87,33 @@ void MockPointerControllerPolicyInterface::loadPointerResources(PointerResources
|
||||
}
|
||||
|
||||
void MockPointerControllerPolicyInterface::loadAdditionalMouseResources(
|
||||
std::map<int32_t, SpriteIcon>* outResources,
|
||||
std::map<int32_t, PointerAnimation>* outAnimationResources,
|
||||
int32_t) {
|
||||
std::map<PointerIconStyle, SpriteIcon>* outResources,
|
||||
std::map<PointerIconStyle, PointerAnimation>* outAnimationResources, int32_t) {
|
||||
SpriteIcon icon;
|
||||
PointerAnimation anim;
|
||||
|
||||
// CURSOR_TYPE_ADDITIONAL doesn't have animation resource.
|
||||
int32_t cursorType = CURSOR_TYPE_ADDITIONAL;
|
||||
loadPointerIconForType(&icon, cursorType);
|
||||
(*outResources)[cursorType] = icon;
|
||||
(*outResources)[static_cast<PointerIconStyle>(cursorType)] = icon;
|
||||
|
||||
// CURSOR_TYPE_ADDITIONAL_ANIM has animation resource.
|
||||
cursorType = CURSOR_TYPE_ADDITIONAL_ANIM;
|
||||
loadPointerIconForType(&icon, cursorType);
|
||||
anim.animationFrames.push_back(icon);
|
||||
anim.durationPerFrame = 10;
|
||||
(*outResources)[cursorType] = icon;
|
||||
(*outAnimationResources)[cursorType] = anim;
|
||||
(*outResources)[static_cast<PointerIconStyle>(cursorType)] = icon;
|
||||
(*outAnimationResources)[static_cast<PointerIconStyle>(cursorType)] = anim;
|
||||
|
||||
additionalMouseResourcesLoaded = true;
|
||||
}
|
||||
|
||||
int32_t MockPointerControllerPolicyInterface::getDefaultPointerIconId() {
|
||||
return CURSOR_TYPE_DEFAULT;
|
||||
PointerIconStyle MockPointerControllerPolicyInterface::getDefaultPointerIconId() {
|
||||
return static_cast<PointerIconStyle>(CURSOR_TYPE_DEFAULT);
|
||||
}
|
||||
|
||||
int32_t MockPointerControllerPolicyInterface::getCustomPointerIconId() {
|
||||
return CURSOR_TYPE_CUSTOM;
|
||||
PointerIconStyle MockPointerControllerPolicyInterface::getCustomPointerIconId() {
|
||||
return static_cast<PointerIconStyle>(CURSOR_TYPE_CUSTOM);
|
||||
}
|
||||
|
||||
bool MockPointerControllerPolicyInterface::allResourcesAreLoaded() {
|
||||
@@ -124,7 +125,7 @@ bool MockPointerControllerPolicyInterface::noResourcesAreLoaded() {
|
||||
}
|
||||
|
||||
void MockPointerControllerPolicyInterface::loadPointerIconForType(SpriteIcon* icon, int32_t type) {
|
||||
icon->style = type;
|
||||
icon->style = static_cast<PointerIconStyle>(type);
|
||||
std::pair<float, float> hotSpot = getHotSpotCoordinatesForType(type);
|
||||
icon->hotSpotX = hotSpot.first;
|
||||
icon->hotSpotY = hotSpot.second;
|
||||
@@ -205,11 +206,11 @@ TEST_F(PointerControllerTest, useDefaultCursorTypeByDefault) {
|
||||
std::pair<float, float> hotspot = getHotSpotCoordinatesForType(CURSOR_TYPE_DEFAULT);
|
||||
EXPECT_CALL(*mPointerSprite, setVisible(true));
|
||||
EXPECT_CALL(*mPointerSprite, setAlpha(1.0f));
|
||||
EXPECT_CALL(*mPointerSprite, setIcon(
|
||||
AllOf(
|
||||
Field(&SpriteIcon::style, CURSOR_TYPE_DEFAULT),
|
||||
Field(&SpriteIcon::hotSpotX, hotspot.first),
|
||||
Field(&SpriteIcon::hotSpotY, hotspot.second))));
|
||||
EXPECT_CALL(*mPointerSprite,
|
||||
setIcon(AllOf(Field(&SpriteIcon::style,
|
||||
static_cast<PointerIconStyle>(CURSOR_TYPE_DEFAULT)),
|
||||
Field(&SpriteIcon::hotSpotX, hotspot.first),
|
||||
Field(&SpriteIcon::hotSpotY, hotspot.second))));
|
||||
mPointerController->reloadPointerResources();
|
||||
}
|
||||
|
||||
@@ -222,12 +223,11 @@ TEST_F(PointerControllerTest, updatePointerIcon) {
|
||||
std::pair<float, float> hotspot = getHotSpotCoordinatesForType(type);
|
||||
EXPECT_CALL(*mPointerSprite, setVisible(true));
|
||||
EXPECT_CALL(*mPointerSprite, setAlpha(1.0f));
|
||||
EXPECT_CALL(*mPointerSprite, setIcon(
|
||||
AllOf(
|
||||
Field(&SpriteIcon::style, type),
|
||||
Field(&SpriteIcon::hotSpotX, hotspot.first),
|
||||
Field(&SpriteIcon::hotSpotY, hotspot.second))));
|
||||
mPointerController->updatePointerIcon(type);
|
||||
EXPECT_CALL(*mPointerSprite,
|
||||
setIcon(AllOf(Field(&SpriteIcon::style, static_cast<PointerIconStyle>(type)),
|
||||
Field(&SpriteIcon::hotSpotX, hotspot.first),
|
||||
Field(&SpriteIcon::hotSpotY, hotspot.second))));
|
||||
mPointerController->updatePointerIcon(static_cast<PointerIconStyle>(type));
|
||||
}
|
||||
|
||||
TEST_F(PointerControllerTest, setCustomPointerIcon) {
|
||||
@@ -239,17 +239,16 @@ TEST_F(PointerControllerTest, setCustomPointerIcon) {
|
||||
float hotSpotY = 20;
|
||||
|
||||
SpriteIcon icon;
|
||||
icon.style = style;
|
||||
icon.style = static_cast<PointerIconStyle>(style);
|
||||
icon.hotSpotX = hotSpotX;
|
||||
icon.hotSpotY = hotSpotY;
|
||||
|
||||
EXPECT_CALL(*mPointerSprite, setVisible(true));
|
||||
EXPECT_CALL(*mPointerSprite, setAlpha(1.0f));
|
||||
EXPECT_CALL(*mPointerSprite, setIcon(
|
||||
AllOf(
|
||||
Field(&SpriteIcon::style, style),
|
||||
Field(&SpriteIcon::hotSpotX, hotSpotX),
|
||||
Field(&SpriteIcon::hotSpotY, hotSpotY))));
|
||||
EXPECT_CALL(*mPointerSprite,
|
||||
setIcon(AllOf(Field(&SpriteIcon::style, static_cast<PointerIconStyle>(style)),
|
||||
Field(&SpriteIcon::hotSpotX, hotSpotX),
|
||||
Field(&SpriteIcon::hotSpotY, hotSpotY))));
|
||||
mPointerController->setCustomPointerIcon(icon);
|
||||
}
|
||||
|
||||
|
||||
@@ -224,8 +224,10 @@ static inline const char* toString(bool value) {
|
||||
return value ? "true" : "false";
|
||||
}
|
||||
|
||||
static void loadSystemIconAsSpriteWithPointerIcon(JNIEnv* env, jobject contextObj, int32_t style,
|
||||
PointerIcon* outPointerIcon, SpriteIcon* outSpriteIcon) {
|
||||
static void loadSystemIconAsSpriteWithPointerIcon(JNIEnv* env, jobject contextObj,
|
||||
PointerIconStyle style,
|
||||
PointerIcon* outPointerIcon,
|
||||
SpriteIcon* outSpriteIcon) {
|
||||
status_t status = android_view_PointerIcon_loadSystemIcon(env,
|
||||
contextObj, style, outPointerIcon);
|
||||
if (!status) {
|
||||
@@ -236,7 +238,7 @@ static void loadSystemIconAsSpriteWithPointerIcon(JNIEnv* env, jobject contextOb
|
||||
}
|
||||
}
|
||||
|
||||
static void loadSystemIconAsSprite(JNIEnv* env, jobject contextObj, int32_t style,
|
||||
static void loadSystemIconAsSprite(JNIEnv* env, jobject contextObj, PointerIconStyle style,
|
||||
SpriteIcon* outSpriteIcon) {
|
||||
PointerIcon pointerIcon;
|
||||
loadSystemIconAsSpriteWithPointerIcon(env, contextObj, style, &pointerIcon, outSpriteIcon);
|
||||
@@ -290,7 +292,7 @@ public:
|
||||
void setShowTouches(bool enabled);
|
||||
void setInteractive(bool interactive);
|
||||
void reloadCalibration();
|
||||
void setPointerIconType(int32_t iconId);
|
||||
void setPointerIconType(PointerIconStyle iconId);
|
||||
void reloadPointerIcons();
|
||||
void requestPointerCapture(const sp<IBinder>& windowToken, bool enabled);
|
||||
void setCustomPointerIcon(const SpriteIcon& icon);
|
||||
@@ -346,10 +348,11 @@ public:
|
||||
|
||||
virtual void loadPointerIcon(SpriteIcon* icon, int32_t displayId);
|
||||
virtual void loadPointerResources(PointerResources* outResources, int32_t displayId);
|
||||
virtual void loadAdditionalMouseResources(std::map<int32_t, SpriteIcon>* outResources,
|
||||
std::map<int32_t, PointerAnimation>* outAnimationResources, int32_t displayId);
|
||||
virtual int32_t getDefaultPointerIconId();
|
||||
virtual int32_t getCustomPointerIconId();
|
||||
virtual void loadAdditionalMouseResources(
|
||||
std::map<PointerIconStyle, SpriteIcon>* outResources,
|
||||
std::map<PointerIconStyle, PointerAnimation>* outAnimationResources, int32_t displayId);
|
||||
virtual PointerIconStyle getDefaultPointerIconId();
|
||||
virtual PointerIconStyle getCustomPointerIconId();
|
||||
virtual void onPointerDisplayIdChanged(int32_t displayId, float xPos, float yPos);
|
||||
|
||||
private:
|
||||
@@ -1113,7 +1116,7 @@ void NativeInputManager::reloadCalibration() {
|
||||
InputReaderConfiguration::CHANGE_TOUCH_AFFINE_TRANSFORMATION);
|
||||
}
|
||||
|
||||
void NativeInputManager::setPointerIconType(int32_t iconId) {
|
||||
void NativeInputManager::setPointerIconType(PointerIconStyle iconId) {
|
||||
AutoMutex _l(mLock);
|
||||
std::shared_ptr<PointerController> controller = mLocked.pointerController.lock();
|
||||
if (controller != nullptr) {
|
||||
@@ -1430,29 +1433,31 @@ void NativeInputManager::loadPointerResources(PointerResources* outResources, in
|
||||
ScopedLocalRef<jobject> displayContext(env, env->CallObjectMethod(
|
||||
mServiceObj, gServiceClassInfo.getContextForDisplay, displayId));
|
||||
|
||||
loadSystemIconAsSprite(env, displayContext.get(), POINTER_ICON_STYLE_SPOT_HOVER,
|
||||
&outResources->spotHover);
|
||||
loadSystemIconAsSprite(env, displayContext.get(), POINTER_ICON_STYLE_SPOT_TOUCH,
|
||||
&outResources->spotTouch);
|
||||
loadSystemIconAsSprite(env, displayContext.get(), POINTER_ICON_STYLE_SPOT_ANCHOR,
|
||||
&outResources->spotAnchor);
|
||||
loadSystemIconAsSprite(env, displayContext.get(), PointerIconStyle::TYPE_SPOT_HOVER,
|
||||
&outResources->spotHover);
|
||||
loadSystemIconAsSprite(env, displayContext.get(), PointerIconStyle::TYPE_SPOT_TOUCH,
|
||||
&outResources->spotTouch);
|
||||
loadSystemIconAsSprite(env, displayContext.get(), PointerIconStyle::TYPE_SPOT_ANCHOR,
|
||||
&outResources->spotAnchor);
|
||||
}
|
||||
|
||||
void NativeInputManager::loadAdditionalMouseResources(std::map<int32_t, SpriteIcon>* outResources,
|
||||
std::map<int32_t, PointerAnimation>* outAnimationResources, int32_t displayId) {
|
||||
void NativeInputManager::loadAdditionalMouseResources(
|
||||
std::map<PointerIconStyle, SpriteIcon>* outResources,
|
||||
std::map<PointerIconStyle, PointerAnimation>* outAnimationResources, int32_t displayId) {
|
||||
ATRACE_CALL();
|
||||
JNIEnv* env = jniEnv();
|
||||
|
||||
ScopedLocalRef<jobject> displayContext(env, env->CallObjectMethod(
|
||||
mServiceObj, gServiceClassInfo.getContextForDisplay, displayId));
|
||||
|
||||
for (int iconId = POINTER_ICON_STYLE_CONTEXT_MENU; iconId <= POINTER_ICON_STYLE_GRABBING;
|
||||
++iconId) {
|
||||
for (int32_t iconId = static_cast<int32_t>(PointerIconStyle::TYPE_CONTEXT_MENU);
|
||||
iconId <= static_cast<int32_t>(PointerIconStyle::TYPE_GRABBING); ++iconId) {
|
||||
const PointerIconStyle pointerIconStyle = static_cast<PointerIconStyle>(iconId);
|
||||
PointerIcon pointerIcon;
|
||||
loadSystemIconAsSpriteWithPointerIcon(
|
||||
env, displayContext.get(), iconId, &pointerIcon, &((*outResources)[iconId]));
|
||||
loadSystemIconAsSpriteWithPointerIcon(env, displayContext.get(), pointerIconStyle,
|
||||
&pointerIcon, &((*outResources)[pointerIconStyle]));
|
||||
if (!pointerIcon.bitmapFrames.empty()) {
|
||||
PointerAnimation& animationData = (*outAnimationResources)[iconId];
|
||||
PointerAnimation& animationData = (*outAnimationResources)[pointerIconStyle];
|
||||
size_t numFrames = pointerIcon.bitmapFrames.size() + 1;
|
||||
animationData.durationPerFrame =
|
||||
milliseconds_to_nanoseconds(pointerIcon.durationPerFrame);
|
||||
@@ -1467,16 +1472,16 @@ void NativeInputManager::loadAdditionalMouseResources(std::map<int32_t, SpriteIc
|
||||
}
|
||||
}
|
||||
}
|
||||
loadSystemIconAsSprite(env, displayContext.get(), POINTER_ICON_STYLE_NULL,
|
||||
&((*outResources)[POINTER_ICON_STYLE_NULL]));
|
||||
loadSystemIconAsSprite(env, displayContext.get(), PointerIconStyle::TYPE_NULL,
|
||||
&((*outResources)[PointerIconStyle::TYPE_NULL]));
|
||||
}
|
||||
|
||||
int32_t NativeInputManager::getDefaultPointerIconId() {
|
||||
return POINTER_ICON_STYLE_ARROW;
|
||||
PointerIconStyle NativeInputManager::getDefaultPointerIconId() {
|
||||
return PointerIconStyle::TYPE_ARROW;
|
||||
}
|
||||
|
||||
int32_t NativeInputManager::getCustomPointerIconId() {
|
||||
return POINTER_ICON_STYLE_CUSTOM;
|
||||
PointerIconStyle NativeInputManager::getCustomPointerIconId() {
|
||||
return PointerIconStyle::TYPE_CUSTOM;
|
||||
}
|
||||
|
||||
void NativeInputManager::setMotionClassifierEnabled(bool enabled) {
|
||||
@@ -2133,9 +2138,13 @@ static void nativeDisableInputDevice(JNIEnv* env, jobject nativeImplObj, jint de
|
||||
}
|
||||
|
||||
static void nativeSetPointerIconType(JNIEnv* env, jobject nativeImplObj, jint iconId) {
|
||||
// iconId is set in java from from frameworks/base/core/java/android/view/PointerIcon.java,
|
||||
// where the definition in <input/Input.h> is duplicated as a sealed class (type safe enum
|
||||
// equivalent in Java).
|
||||
|
||||
NativeInputManager* im = getNativeInputManager(env, nativeImplObj);
|
||||
|
||||
im->setPointerIconType(iconId);
|
||||
im->setPointerIconType(static_cast<PointerIconStyle>(iconId));
|
||||
}
|
||||
|
||||
static void nativeReloadPointerIcons(JNIEnv* env, jobject nativeImplObj) {
|
||||
|
||||
Reference in New Issue
Block a user