1 /* 2 * Copyright (c) 2021-2022 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef FOUNDATION_DMSERVER_DISPLAY_MANAGER_INTERFACE_H 17 #define FOUNDATION_DMSERVER_DISPLAY_MANAGER_INTERFACE_H 18 19 #include <iremote_broker.h> 20 #include <pixel_map.h> 21 #include <surface.h> 22 23 #include "display_cutout_controller.h" 24 #include "display_info.h" 25 #include "dm_common.h" 26 #include "screen.h" 27 #include "screen_info.h" 28 #include "screen_group_info.h" 29 #include "zidl/display_manager_agent_interface.h" 30 31 namespace OHOS::Rosen { 32 class IDisplayManager : public IRemoteBroker { 33 public: 34 DECLARE_INTERFACE_DESCRIPTOR(u"OHOS.IDisplayManager"); 35 36 enum class DisplayManagerMessage : uint32_t { 37 TRANS_ID_GET_DEFAULT_DISPLAY_INFO = 0, 38 TRANS_ID_GET_DISPLAY_BY_ID, 39 TRANS_ID_GET_DISPLAY_BY_SCREEN, 40 TRANS_ID_GET_DISPLAY_SNAPSHOT, 41 TRANS_ID_REGISTER_DISPLAY_MANAGER_AGENT, 42 TRANS_ID_UNREGISTER_DISPLAY_MANAGER_AGENT, 43 TRANS_ID_WAKE_UP_BEGIN, 44 TRANS_ID_WAKE_UP_END, 45 TRANS_ID_SUSPEND_BEGIN, 46 TRANS_ID_SUSPEND_END, 47 TRANS_ID_SET_SCREEN_POWER_FOR_ALL, 48 TRANS_ID_GET_SCREEN_POWER, 49 TRANS_ID_SET_DISPLAY_STATE, 50 TRANS_ID_GET_DISPLAY_STATE, 51 TRANS_ID_GET_ALL_DISPLAYIDS, 52 TRANS_ID_NOTIFY_DISPLAY_EVENT, 53 TRANS_ID_SET_FREEZE_EVENT, 54 TRANS_ID_SCREEN_BASE = 1000, 55 TRANS_ID_CREATE_VIRTUAL_SCREEN = TRANS_ID_SCREEN_BASE, 56 TRANS_ID_DESTROY_VIRTUAL_SCREEN, 57 TRANS_ID_SET_VIRTUAL_SCREEN_SURFACE, 58 TRANS_ID_GET_SCREEN_INFO_BY_ID, 59 TRANS_ID_GET_SCREEN_GROUP_INFO_BY_ID, 60 TRANS_ID_SET_SCREEN_ACTIVE_MODE, 61 TRANS_ID_GET_ALL_SCREEN_INFOS, 62 TRANS_ID_SET_ORIENTATION, 63 TRANS_ID_SET_VIRTUAL_PIXEL_RATIO, 64 TRANS_ID_SCREENGROUP_BASE = 1100, 65 TRANS_ID_SCREEN_MAKE_MIRROR = TRANS_ID_SCREENGROUP_BASE, 66 TRANS_ID_SCREEN_MAKE_EXPAND, 67 TRANS_ID_REMOVE_VIRTUAL_SCREEN_FROM_SCREEN_GROUP, 68 TRANS_ID_SCREEN_GAMUT_BASE = 1200, 69 TRANS_ID_SCREEN_GET_SUPPORTED_COLOR_GAMUTS = TRANS_ID_SCREEN_GAMUT_BASE, 70 TRANS_ID_SCREEN_GET_COLOR_GAMUT, 71 TRANS_ID_SCREEN_SET_COLOR_GAMUT, 72 TRANS_ID_SCREEN_GET_GAMUT_MAP, 73 TRANS_ID_SCREEN_SET_GAMUT_MAP, 74 TRANS_ID_SCREEN_SET_COLOR_TRANSFORM, 75 TRANS_ID_IS_SCREEN_ROTATION_LOCKED, 76 TRANS_ID_SET_SCREEN_ROTATION_LOCKED, 77 TRANS_ID_HAS_PRIVATE_WINDOW, 78 TRANS_ID_GET_CUTOUT_INFO, 79 }; 80 81 virtual sptr<DisplayInfo> GetDefaultDisplayInfo() = 0; 82 virtual sptr<DisplayInfo> GetDisplayInfoById(DisplayId displayId) = 0; 83 virtual sptr<DisplayInfo> GetDisplayInfoByScreen(ScreenId screenId) = 0; 84 virtual DMError HasPrivateWindow(DisplayId displayId, bool& hasPrivateWindow) = 0; 85 86 virtual ScreenId CreateVirtualScreen(VirtualScreenOption option, 87 const sptr<IRemoteObject>& displayManagerAgent) = 0; 88 virtual DMError DestroyVirtualScreen(ScreenId screenId) = 0; 89 virtual DMError SetVirtualScreenSurface(ScreenId screenId, sptr<Surface> surface) = 0; 90 virtual bool SetOrientation(ScreenId screenId, Orientation orientation) = 0; 91 virtual std::shared_ptr<Media::PixelMap> GetDisplaySnapshot(DisplayId displayId) = 0; 92 virtual void SetScreenRotationLocked(bool isLocked) = 0; 93 virtual bool IsScreenRotationLocked() = 0; 94 95 // colorspace, gamut 96 virtual DMError GetScreenSupportedColorGamuts(ScreenId screenId, std::vector<ScreenColorGamut>& colorGamuts) = 0; 97 virtual DMError GetScreenColorGamut(ScreenId screenId, ScreenColorGamut& colorGamut) = 0; 98 virtual DMError SetScreenColorGamut(ScreenId screenId, int32_t colorGamutIdx) = 0; 99 virtual DMError GetScreenGamutMap(ScreenId screenId, ScreenGamutMap& gamutMap) = 0; 100 virtual DMError SetScreenGamutMap(ScreenId screenId, ScreenGamutMap gamutMap) = 0; 101 virtual DMError SetScreenColorTransform(ScreenId screenId) = 0; 102 103 virtual bool RegisterDisplayManagerAgent(const sptr<IDisplayManagerAgent>& displayManagerAgent, 104 DisplayManagerAgentType type) = 0; 105 virtual bool UnregisterDisplayManagerAgent(const sptr<IDisplayManagerAgent>& displayManagerAgent, 106 DisplayManagerAgentType type) = 0; 107 virtual bool WakeUpBegin(PowerStateChangeReason reason) = 0; 108 virtual bool WakeUpEnd() = 0; 109 virtual bool SuspendBegin(PowerStateChangeReason reason) = 0; 110 virtual bool SuspendEnd() = 0; 111 virtual bool SetScreenPowerForAll(ScreenPowerState state, PowerStateChangeReason reason) = 0; 112 virtual ScreenPowerState GetScreenPower(ScreenId dmsScreenId) = 0; 113 virtual bool SetDisplayState(DisplayState state) = 0; 114 virtual DisplayState GetDisplayState(DisplayId displayId) = 0; 115 virtual std::vector<DisplayId> GetAllDisplayIds() = 0; 116 virtual sptr<CutoutInfo> GetCutoutInfo(DisplayId displayId) = 0; 117 virtual void NotifyDisplayEvent(DisplayEvent event) = 0; 118 virtual bool SetFreeze(std::vector<DisplayId> displayIds, bool isFreeze) = 0; 119 virtual sptr<ScreenInfo> GetScreenInfoById(ScreenId screenId) = 0; 120 virtual sptr<ScreenGroupInfo> GetScreenGroupInfoById(ScreenId screenId) = 0; 121 virtual std::vector<sptr<ScreenInfo>> GetAllScreenInfos() = 0; 122 virtual ScreenId MakeMirror(ScreenId mainScreenId, std::vector<ScreenId> mirrorScreenId) = 0; 123 virtual ScreenId MakeExpand(std::vector<ScreenId> screenId, std::vector<Point> startPoint) = 0; 124 virtual void RemoveVirtualScreenFromGroup(std::vector<ScreenId> screens) = 0; 125 virtual bool SetScreenActiveMode(ScreenId screenId, uint32_t modeId) = 0; 126 virtual bool SetVirtualPixelRatio(ScreenId screenId, float virtualPixelRatio) = 0; 127 }; 128 } // namespace OHOS::Rosen 129 130 #endif // FOUNDATION_DMSERVER_DISPLAY_MANAGER_INTERFACE_H