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 "fold_screen_info.h" 27 #include "screen.h" 28 #include "screen_info.h" 29 #include "screen_group_info.h" 30 #include "zidl/display_manager_agent_interface.h" 31 32 namespace OHOS::Rosen { 33 class IDisplayManager : public IRemoteBroker { 34 public: 35 DECLARE_INTERFACE_DESCRIPTOR(u"OHOS.IDisplayManager"); 36 37 enum class DisplayManagerMessage : uint32_t { 38 TRANS_ID_GET_DEFAULT_DISPLAY_INFO = 0, 39 TRANS_ID_GET_DISPLAY_BY_ID, 40 TRANS_ID_GET_DISPLAY_BY_SCREEN, 41 TRANS_ID_GET_DISPLAY_SNAPSHOT, 42 TRANS_ID_DISABLE_DISPLAY_SNAPSHOT, 43 TRANS_ID_REGISTER_DISPLAY_MANAGER_AGENT, 44 TRANS_ID_UNREGISTER_DISPLAY_MANAGER_AGENT, 45 TRANS_ID_WAKE_UP_BEGIN, 46 TRANS_ID_WAKE_UP_END, 47 TRANS_ID_SUSPEND_BEGIN, 48 TRANS_ID_SUSPEND_END, 49 TRANS_ID_SET_SPECIFIED_SCREEN_POWER, 50 TRANS_ID_SET_SCREEN_POWER_FOR_ALL, 51 TRANS_ID_GET_SCREEN_POWER, 52 TRANS_ID_SET_DISPLAY_STATE, 53 TRANS_ID_GET_DISPLAY_STATE, 54 TRANS_ID_GET_ALL_DISPLAYIDS, 55 TRANS_ID_NOTIFY_DISPLAY_EVENT, 56 TRANS_ID_SET_FREEZE_EVENT, 57 TRANS_ID_SCREEN_BASE = 1000, 58 TRANS_ID_CREATE_VIRTUAL_SCREEN = TRANS_ID_SCREEN_BASE, 59 TRANS_ID_DESTROY_VIRTUAL_SCREEN, 60 TRANS_ID_SET_VIRTUAL_SCREEN_SURFACE, 61 TRANS_ID_SET_VIRTUAL_SCREEN_CANVAS_ROTATION, 62 TRANS_ID_GET_SCREEN_INFO_BY_ID, 63 TRANS_ID_GET_SCREEN_GROUP_INFO_BY_ID, 64 TRANS_ID_SET_SCREEN_ACTIVE_MODE, 65 TRANS_ID_GET_ALL_SCREEN_INFOS, 66 TRANS_ID_SET_ORIENTATION, 67 TRANS_ID_SET_VIRTUAL_PIXEL_RATIO, 68 TRANS_ID_SET_RESOLUTION, 69 TRANS_ID_GET_DENSITY_IN_CURRENT_RESOLUTION, 70 TRANS_ID_SCREENGROUP_BASE = 1100, 71 TRANS_ID_SCREEN_MAKE_MIRROR = TRANS_ID_SCREENGROUP_BASE, 72 TRANS_ID_SCREEN_MAKE_EXPAND, 73 TRANS_ID_REMOVE_VIRTUAL_SCREEN_FROM_SCREEN_GROUP, 74 TRANS_ID_SCREEN_GAMUT_BASE = 1200, 75 TRANS_ID_SCREEN_GET_SUPPORTED_COLOR_GAMUTS = TRANS_ID_SCREEN_GAMUT_BASE, 76 TRANS_ID_SCREEN_GET_COLOR_GAMUT, 77 TRANS_ID_SCREEN_SET_COLOR_GAMUT, 78 TRANS_ID_SCREEN_GET_GAMUT_MAP, 79 TRANS_ID_SCREEN_SET_GAMUT_MAP, 80 TRANS_ID_SCREEN_SET_COLOR_TRANSFORM, 81 TRANS_ID_SCREEN_GET_PIXEL_FORMAT, 82 TRANS_ID_SCREEN_SET_PIXEL_FORMAT, 83 TRANS_ID_SCREEN_GET_SUPPORTED_HDR_FORMAT, 84 TRANS_ID_SCREEN_GET_HDR_FORMAT, 85 TRANS_ID_SCREEN_SET_HDR_FORMAT, 86 TRANS_ID_SCREEN_GET_SUPPORTED_COLOR_SPACE, 87 TRANS_ID_SCREEN_GET_COLOR_SPACE, 88 TRANS_ID_SCREEN_SET_COLOR_SPACE, 89 TRANS_ID_IS_SCREEN_ROTATION_LOCKED, 90 TRANS_ID_SET_SCREEN_ROTATION_LOCKED, 91 TRANS_ID_HAS_PRIVATE_WINDOW, 92 TRANS_ID_GET_CUTOUT_INFO, 93 TRANS_ID_HAS_IMMERSIVE_WINDOW, 94 TRANS_ID_ADD_SURFACE_NODE, 95 TRANS_ID_REMOVE_SURFACE_NODE, 96 TRANS_ID_SCREEN_STOP_MIRROR, 97 TRANS_ID_SCREEN_STOP_EXPAND, 98 TRANS_ID_SCREEN_DISABLE_MIRROR, 99 TRANS_ID_SCENE_BOARD_SCREEN_BASE = 2000, 100 TRANS_ID_SCENE_BOARD_DUMP_ALL_SCREEN, 101 TRANS_ID_SCENE_BOARD_DUMP_SPECIAL_SCREEN, 102 TRANS_ID_SCENE_BOARD_SET_FOLD_DISPLAY_MODE, 103 TRANS_ID_SCENE_BOARD_GET_FOLD_DISPLAY_MODE, 104 TRANS_ID_SCENE_BOARD_IS_FOLDABLE, 105 TRANS_ID_SCENE_BOARD_GET_FOLD_STATUS, 106 TRANS_ID_SCENE_BOARD_GET_CURRENT_FOLD_CREASE_REGION, 107 TRANS_ID_SCENE_BOARD_MAKE_UNIQUE_SCREEN, 108 TRANS_ID_SCENE_BOARD_LOCK_FOLD_DISPLAY_STATUS, 109 TRANS_ID_SET_CLIENT = 2500, 110 TRANS_ID_GET_SCREEN_PROPERTY, 111 TRANS_ID_GET_DISPLAY_NODE, 112 TRANS_ID_UPDATE_SCREEN_ROTATION_PROPERTY, 113 TRANS_ID_UPDATE_AVAILABLE_AREA, 114 TRANS_ID_GET_CURVED_SCREEN_COMPRESSION_AREA, 115 TRANS_ID_GET_PHY_SCREEN_PROPERTY, 116 TRANS_ID_NOTIFY_DISPLAY_CHANGE_INFO, 117 TRANS_ID_SET_SCREEN_PRIVACY_STATE, 118 TRANS_ID_RESIZE_VIRTUAL_SCREEN, 119 TRANS_ID_GET_AVAILABLE_AREA, 120 TRANS_ID_NOTIFY_FOLD_TO_EXPAND_COMPLETION, 121 TRANS_ID_CONVERT_SCREENID_TO_RSSCREENID, 122 }; 123 124 virtual sptr<DisplayInfo> GetDefaultDisplayInfo() = 0; 125 virtual sptr<DisplayInfo> GetDisplayInfoById(DisplayId displayId) = 0; 126 virtual sptr<DisplayInfo> GetDisplayInfoByScreen(ScreenId screenId) = 0; 127 virtual DMError HasPrivateWindow(DisplayId displayId, bool& hasPrivateWindow) = 0; ConvertScreenIdToRsScreenId(ScreenId screenId,ScreenId & rsScreenId)128 virtual bool ConvertScreenIdToRsScreenId(ScreenId screenId, ScreenId& rsScreenId) { return false; }; 129 130 virtual ScreenId CreateVirtualScreen(VirtualScreenOption option, 131 const sptr<IRemoteObject>& displayManagerAgent) = 0; 132 virtual DMError DestroyVirtualScreen(ScreenId screenId) = 0; 133 virtual DMError SetVirtualScreenSurface(ScreenId screenId, sptr<IBufferProducer> surface) = 0; SetVirtualMirrorScreenCanvasRotation(ScreenId screenId,bool rotate)134 virtual DMError SetVirtualMirrorScreenCanvasRotation(ScreenId screenId, bool rotate) { return DMError::DM_OK; } 135 virtual DMError SetOrientation(ScreenId screenId, Orientation orientation) = 0; 136 virtual std::shared_ptr<Media::PixelMap> GetDisplaySnapshot(DisplayId displayId, 137 DmErrorCode* errorCode = nullptr) = 0; 138 virtual DMError SetScreenRotationLocked(bool isLocked) = 0; 139 virtual DMError IsScreenRotationLocked(bool& isLocked) = 0; 140 141 // colorspace, gamut 142 virtual DMError GetScreenSupportedColorGamuts(ScreenId screenId, std::vector<ScreenColorGamut>& colorGamuts) = 0; 143 virtual DMError GetScreenColorGamut(ScreenId screenId, ScreenColorGamut& colorGamut) = 0; 144 virtual DMError SetScreenColorGamut(ScreenId screenId, int32_t colorGamutIdx) = 0; 145 virtual DMError GetScreenGamutMap(ScreenId screenId, ScreenGamutMap& gamutMap) = 0; 146 virtual DMError SetScreenGamutMap(ScreenId screenId, ScreenGamutMap gamutMap) = 0; 147 virtual DMError SetScreenColorTransform(ScreenId screenId) = 0; 148 GetPixelFormat(ScreenId screenId,GraphicPixelFormat & pixelFormat)149 virtual DMError GetPixelFormat(ScreenId screenId, GraphicPixelFormat& pixelFormat) 150 { 151 return DMError::DM_ERROR_DEVICE_NOT_SUPPORT; 152 } SetPixelFormat(ScreenId screenId,GraphicPixelFormat pixelFormat)153 virtual DMError SetPixelFormat(ScreenId screenId, GraphicPixelFormat pixelFormat) 154 { 155 return DMError::DM_ERROR_DEVICE_NOT_SUPPORT; 156 } GetSupportedHDRFormats(ScreenId screenId,std::vector<ScreenHDRFormat> & hdrFormats)157 virtual DMError GetSupportedHDRFormats(ScreenId screenId, 158 std::vector<ScreenHDRFormat>& hdrFormats) 159 { 160 return DMError::DM_ERROR_DEVICE_NOT_SUPPORT; 161 } GetScreenHDRFormat(ScreenId screenId,ScreenHDRFormat & hdrFormat)162 virtual DMError GetScreenHDRFormat(ScreenId screenId, ScreenHDRFormat& hdrFormat) 163 { 164 return DMError::DM_ERROR_DEVICE_NOT_SUPPORT; 165 } SetScreenHDRFormat(ScreenId screenId,int32_t modeIdx)166 virtual DMError SetScreenHDRFormat(ScreenId screenId, int32_t modeIdx) 167 { 168 return DMError::DM_ERROR_DEVICE_NOT_SUPPORT; 169 } GetSupportedColorSpaces(ScreenId screenId,std::vector<GraphicCM_ColorSpaceType> & colorSpaces)170 virtual DMError GetSupportedColorSpaces(ScreenId screenId, 171 std::vector<GraphicCM_ColorSpaceType>& colorSpaces) 172 { 173 return DMError::DM_ERROR_DEVICE_NOT_SUPPORT; 174 } GetScreenColorSpace(ScreenId screenId,GraphicCM_ColorSpaceType & colorSpace)175 virtual DMError GetScreenColorSpace(ScreenId screenId, GraphicCM_ColorSpaceType& colorSpace) 176 { 177 return DMError::DM_ERROR_DEVICE_NOT_SUPPORT; 178 } SetScreenColorSpace(ScreenId screenId,GraphicCM_ColorSpaceType colorSpace)179 virtual DMError SetScreenColorSpace(ScreenId screenId, GraphicCM_ColorSpaceType colorSpace) 180 { 181 return DMError::DM_ERROR_DEVICE_NOT_SUPPORT; 182 } 183 184 virtual DMError RegisterDisplayManagerAgent(const sptr<IDisplayManagerAgent>& displayManagerAgent, 185 DisplayManagerAgentType type) = 0; 186 virtual DMError UnregisterDisplayManagerAgent(const sptr<IDisplayManagerAgent>& displayManagerAgent, 187 DisplayManagerAgentType type) = 0; 188 virtual bool WakeUpBegin(PowerStateChangeReason reason) = 0; 189 virtual bool WakeUpEnd() = 0; 190 virtual bool SuspendBegin(PowerStateChangeReason reason) = 0; 191 virtual bool SuspendEnd() = 0; 192 virtual bool SetSpecifiedScreenPower(ScreenId screenId, ScreenPowerState state, PowerStateChangeReason reason) = 0; 193 virtual bool SetScreenPowerForAll(ScreenPowerState state, PowerStateChangeReason reason) = 0; 194 virtual ScreenPowerState GetScreenPower(ScreenId dmsScreenId) = 0; 195 virtual bool SetDisplayState(DisplayState state) = 0; 196 virtual DisplayState GetDisplayState(DisplayId displayId) = 0; 197 virtual std::vector<DisplayId> GetAllDisplayIds() = 0; 198 virtual sptr<CutoutInfo> GetCutoutInfo(DisplayId displayId) = 0; 199 virtual void NotifyDisplayEvent(DisplayEvent event) = 0; 200 virtual bool SetFreeze(std::vector<DisplayId> displayIds, bool isFreeze) = 0; 201 virtual sptr<ScreenInfo> GetScreenInfoById(ScreenId screenId) = 0; 202 virtual sptr<ScreenGroupInfo> GetScreenGroupInfoById(ScreenId screenId) = 0; 203 virtual DMError GetAllScreenInfos(std::vector<sptr<ScreenInfo>>& screenInfos) = 0; 204 virtual DMError MakeMirror(ScreenId mainScreenId, std::vector<ScreenId> mirrorScreenIds, 205 ScreenId& screenGroupId) = 0; 206 virtual DMError MakeExpand(std::vector<ScreenId> screenId, std::vector<Point> startPoints, 207 ScreenId& screenGroupId) = 0; 208 virtual DMError StopMirror(const std::vector<ScreenId>& mirrorScreenIds) = 0; 209 virtual DMError StopExpand(const std::vector<ScreenId>& expandScreenIds) = 0; DisableMirror(bool disableOrNot)210 virtual DMError DisableMirror(bool disableOrNot) { return DMError::DM_ERROR_INVALID_PERMISSION; } 211 virtual void RemoveVirtualScreenFromGroup(std::vector<ScreenId> screens) = 0; 212 virtual DMError SetScreenActiveMode(ScreenId screenId, uint32_t modeId) = 0; 213 virtual DMError SetVirtualPixelRatio(ScreenId screenId, float virtualPixelRatio) = 0; 214 virtual DMError SetResolution(ScreenId screenId, uint32_t width, uint32_t height, float virtualPixelRatio) = 0; 215 virtual DMError GetDensityInCurResolution(ScreenId screenId, float& virtualPixelRatio) = 0; ResizeVirtualScreen(ScreenId screenId,uint32_t width,uint32_t height)216 virtual DMError ResizeVirtualScreen(ScreenId screenId, uint32_t width, uint32_t height) { return DMError::DM_OK; } 217 virtual DMError AddSurfaceNodeToDisplay(DisplayId displayId, 218 std::shared_ptr<class RSSurfaceNode>& surfaceNode, bool onTop = true) = 0; 219 virtual DMError RemoveSurfaceNodeFromDisplay(DisplayId displayId, 220 std::shared_ptr<class RSSurfaceNode>& surfaceNode) = 0; GetAvailableArea(DisplayId displayId,DMRect & area)221 virtual DMError GetAvailableArea(DisplayId displayId, DMRect& area) { return DMError::DM_ERROR_DEVICE_NOT_SUPPORT; } IsFoldable()222 virtual bool IsFoldable() { return false; } 223 GetFoldStatus()224 virtual FoldStatus GetFoldStatus() { return FoldStatus::UNKNOWN; } 225 GetFoldDisplayMode()226 virtual FoldDisplayMode GetFoldDisplayMode() { return FoldDisplayMode::UNKNOWN; } 227 SetFoldDisplayMode(const FoldDisplayMode)228 virtual void SetFoldDisplayMode(const FoldDisplayMode) {} 229 SetFoldStatusLocked(bool locked)230 virtual void SetFoldStatusLocked(bool locked) {} 231 GetCurrentFoldCreaseRegion()232 virtual sptr<FoldCreaseRegion> GetCurrentFoldCreaseRegion() { return nullptr; } 233 HasImmersiveWindow(bool & immersive)234 virtual DMError HasImmersiveWindow(bool& immersive) { return DMError::DM_ERROR_DEVICE_NOT_SUPPORT; } 235 236 // unique screen MakeUniqueScreen(const std::vector<ScreenId> & screenIds)237 virtual DMError MakeUniqueScreen(const std::vector<ScreenId>& screenIds) { return DMError::DM_OK; } 238 }; 239 } // namespace OHOS::Rosen 240 241 #endif // FOUNDATION_DMSERVER_DISPLAY_MANAGER_INTERFACE_H