1*38e8c45fSAndroid Build Coastguard Worker /* 2*38e8c45fSAndroid Build Coastguard Worker * Copyright 2022 The Android Open Source Project 3*38e8c45fSAndroid Build Coastguard Worker * 4*38e8c45fSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*38e8c45fSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*38e8c45fSAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*38e8c45fSAndroid Build Coastguard Worker * 8*38e8c45fSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*38e8c45fSAndroid Build Coastguard Worker * 10*38e8c45fSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*38e8c45fSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*38e8c45fSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*38e8c45fSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*38e8c45fSAndroid Build Coastguard Worker * limitations under the License. 15*38e8c45fSAndroid Build Coastguard Worker */ 16*38e8c45fSAndroid Build Coastguard Worker 17*38e8c45fSAndroid Build Coastguard Worker #pragma once 18*38e8c45fSAndroid Build Coastguard Worker 19*38e8c45fSAndroid Build Coastguard Worker #include <PointerControllerInterface.h> 20*38e8c45fSAndroid Build Coastguard Worker #include <input/DisplayViewport.h> 21*38e8c45fSAndroid Build Coastguard Worker #include <input/Input.h> 22*38e8c45fSAndroid Build Coastguard Worker #include <utils/BitSet.h> 23*38e8c45fSAndroid Build Coastguard Worker #include <unordered_set> 24*38e8c45fSAndroid Build Coastguard Worker 25*38e8c45fSAndroid Build Coastguard Worker namespace android { 26*38e8c45fSAndroid Build Coastguard Worker 27*38e8c45fSAndroid Build Coastguard Worker struct SpriteIcon { 28*38e8c45fSAndroid Build Coastguard Worker PointerIconStyle style; 29*38e8c45fSAndroid Build Coastguard Worker }; 30*38e8c45fSAndroid Build Coastguard Worker 31*38e8c45fSAndroid Build Coastguard Worker class FakePointerController : public PointerControllerInterface { 32*38e8c45fSAndroid Build Coastguard Worker public: FakePointerController()33*38e8c45fSAndroid Build Coastguard Worker FakePointerController() : FakePointerController(/*enabled=*/true) {} FakePointerController(bool enabled)34*38e8c45fSAndroid Build Coastguard Worker FakePointerController(bool enabled) : mEnabled(enabled) {} 35*38e8c45fSAndroid Build Coastguard Worker ~FakePointerController()36*38e8c45fSAndroid Build Coastguard Worker virtual ~FakePointerController() {} 37*38e8c45fSAndroid Build Coastguard Worker 38*38e8c45fSAndroid Build Coastguard Worker void setBounds(float minX, float minY, float maxX, float maxY); 39*38e8c45fSAndroid Build Coastguard Worker void clearBounds(); 40*38e8c45fSAndroid Build Coastguard Worker const std::map<ui::LogicalDisplayId, std::vector<int32_t>>& getSpots(); 41*38e8c45fSAndroid Build Coastguard Worker 42*38e8c45fSAndroid Build Coastguard Worker void setPosition(float x, float y) override; 43*38e8c45fSAndroid Build Coastguard Worker vec2 getPosition() const override; 44*38e8c45fSAndroid Build Coastguard Worker ui::LogicalDisplayId getDisplayId() const override; 45*38e8c45fSAndroid Build Coastguard Worker void setDisplayViewport(const DisplayViewport& viewport) override; 46*38e8c45fSAndroid Build Coastguard Worker void updatePointerIcon(PointerIconStyle iconId) override; 47*38e8c45fSAndroid Build Coastguard Worker void setCustomPointerIcon(const SpriteIcon& icon) override; 48*38e8c45fSAndroid Build Coastguard Worker void setSkipScreenshotFlagForDisplay(ui::LogicalDisplayId displayId) override; 49*38e8c45fSAndroid Build Coastguard Worker void clearSkipScreenshotFlags() override; 50*38e8c45fSAndroid Build Coastguard Worker void fade(Transition) override; 51*38e8c45fSAndroid Build Coastguard Worker ui::Transform getDisplayTransform() const override; 52*38e8c45fSAndroid Build Coastguard Worker 53*38e8c45fSAndroid Build Coastguard Worker void assertViewportSet(ui::LogicalDisplayId displayId); 54*38e8c45fSAndroid Build Coastguard Worker void assertViewportNotSet(); 55*38e8c45fSAndroid Build Coastguard Worker void assertPosition(float x, float y); 56*38e8c45fSAndroid Build Coastguard Worker void assertSpotCount(ui::LogicalDisplayId displayId, int32_t count); 57*38e8c45fSAndroid Build Coastguard Worker void assertPointerIconSet(PointerIconStyle iconId); 58*38e8c45fSAndroid Build Coastguard Worker void assertPointerIconNotSet(); 59*38e8c45fSAndroid Build Coastguard Worker void assertCustomPointerIconSet(PointerIconStyle iconId); 60*38e8c45fSAndroid Build Coastguard Worker void assertCustomPointerIconNotSet(); 61*38e8c45fSAndroid Build Coastguard Worker void assertIsSkipScreenshotFlagSet(ui::LogicalDisplayId displayId); 62*38e8c45fSAndroid Build Coastguard Worker void assertIsSkipScreenshotFlagNotSet(ui::LogicalDisplayId displayId); 63*38e8c45fSAndroid Build Coastguard Worker void assertSkipScreenshotFlagChanged(); 64*38e8c45fSAndroid Build Coastguard Worker void assertSkipScreenshotFlagNotChanged(); 65*38e8c45fSAndroid Build Coastguard Worker bool isPointerShown(); 66*38e8c45fSAndroid Build Coastguard Worker 67*38e8c45fSAndroid Build Coastguard Worker private: dump()68*38e8c45fSAndroid Build Coastguard Worker std::string dump() override { return ""; } 69*38e8c45fSAndroid Build Coastguard Worker vec2 move(float deltaX, float deltaY) override; 70*38e8c45fSAndroid Build Coastguard Worker void unfade(Transition) override; setPresentation(Presentation)71*38e8c45fSAndroid Build Coastguard Worker void setPresentation(Presentation) override {} 72*38e8c45fSAndroid Build Coastguard Worker void setSpots(const PointerCoords*, const uint32_t*, BitSet32 spotIdBits, 73*38e8c45fSAndroid Build Coastguard Worker ui::LogicalDisplayId displayId) override; 74*38e8c45fSAndroid Build Coastguard Worker void clearSpots() override; 75*38e8c45fSAndroid Build Coastguard Worker 76*38e8c45fSAndroid Build Coastguard Worker const bool mEnabled; 77*38e8c45fSAndroid Build Coastguard Worker bool mHaveBounds{false}; 78*38e8c45fSAndroid Build Coastguard Worker float mMinX{0}, mMinY{0}, mMaxX{0}, mMaxY{0}; 79*38e8c45fSAndroid Build Coastguard Worker float mX{0}, mY{0}; 80*38e8c45fSAndroid Build Coastguard Worker std::optional<ui::LogicalDisplayId> mDisplayId; 81*38e8c45fSAndroid Build Coastguard Worker bool mIsPointerShown{false}; 82*38e8c45fSAndroid Build Coastguard Worker std::optional<PointerIconStyle> mIconStyle; 83*38e8c45fSAndroid Build Coastguard Worker std::optional<PointerIconStyle> mCustomIconStyle; 84*38e8c45fSAndroid Build Coastguard Worker 85*38e8c45fSAndroid Build Coastguard Worker std::map<ui::LogicalDisplayId, std::vector<int32_t>> mSpotsByDisplay; 86*38e8c45fSAndroid Build Coastguard Worker std::unordered_set<ui::LogicalDisplayId> mDisplaysToSkipScreenshot; 87*38e8c45fSAndroid Build Coastguard Worker bool mDisplaysToSkipScreenshotFlagChanged{false}; 88*38e8c45fSAndroid Build Coastguard Worker }; 89*38e8c45fSAndroid Build Coastguard Worker 90*38e8c45fSAndroid Build Coastguard Worker } // namespace android 91