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_REGISTER_DISPLAY_MANAGER_AGENT, 43 TRANS_ID_UNREGISTER_DISPLAY_MANAGER_AGENT, 44 TRANS_ID_WAKE_UP_BEGIN, 45 TRANS_ID_WAKE_UP_END, 46 TRANS_ID_SUSPEND_BEGIN, 47 TRANS_ID_SUSPEND_END, 48 TRANS_ID_SET_SCREEN_POWER_FOR_ALL, 49 TRANS_ID_GET_SCREEN_POWER, 50 TRANS_ID_SET_DISPLAY_STATE, 51 TRANS_ID_GET_DISPLAY_STATE, 52 TRANS_ID_GET_ALL_DISPLAYIDS, 53 TRANS_ID_NOTIFY_DISPLAY_EVENT, 54 TRANS_ID_SET_FREEZE_EVENT, 55 TRANS_ID_SCREEN_BASE = 1000, 56 TRANS_ID_CREATE_VIRTUAL_SCREEN = TRANS_ID_SCREEN_BASE, 57 TRANS_ID_DESTROY_VIRTUAL_SCREEN, 58 TRANS_ID_SET_VIRTUAL_SCREEN_SURFACE, 59 TRANS_ID_GET_SCREEN_INFO_BY_ID, 60 TRANS_ID_GET_SCREEN_GROUP_INFO_BY_ID, 61 TRANS_ID_SET_SCREEN_ACTIVE_MODE, 62 TRANS_ID_GET_ALL_SCREEN_INFOS, 63 TRANS_ID_SET_ORIENTATION, 64 TRANS_ID_SET_VIRTUAL_PIXEL_RATIO, 65 TRANS_ID_SCREENGROUP_BASE = 1100, 66 TRANS_ID_SCREEN_MAKE_MIRROR = TRANS_ID_SCREENGROUP_BASE, 67 TRANS_ID_SCREEN_MAKE_EXPAND, 68 TRANS_ID_REMOVE_VIRTUAL_SCREEN_FROM_SCREEN_GROUP, 69 TRANS_ID_SCREEN_GAMUT_BASE = 1200, 70 TRANS_ID_SCREEN_GET_SUPPORTED_COLOR_GAMUTS = TRANS_ID_SCREEN_GAMUT_BASE, 71 TRANS_ID_SCREEN_GET_COLOR_GAMUT, 72 TRANS_ID_SCREEN_SET_COLOR_GAMUT, 73 TRANS_ID_SCREEN_GET_GAMUT_MAP, 74 TRANS_ID_SCREEN_SET_GAMUT_MAP, 75 TRANS_ID_SCREEN_SET_COLOR_TRANSFORM, 76 TRANS_ID_IS_SCREEN_ROTATION_LOCKED, 77 TRANS_ID_SET_SCREEN_ROTATION_LOCKED, 78 TRANS_ID_HAS_PRIVATE_WINDOW, 79 TRANS_ID_GET_CUTOUT_INFO, 80 TRANS_ID_ADD_SURFACE_NODE, 81 TRANS_ID_REMOVE_SURFACE_NODE, 82 TRANS_ID_SCREEN_STOP_MIRROR, 83 TRANS_ID_SCREEN_STOP_EXPAND, 84 TRANS_ID_SCENE_BOARD_SCREEN_BASE = 2000, 85 TRANS_ID_SCENE_BOARD_DUMP_ALL_SCREEN, 86 TRANS_ID_SCENE_BOARD_DUMP_SPECIAL_SCREEN, 87 TRANS_ID_SCENE_BOARD_SET_FOLD_DISPLAY_MODE, 88 TRANS_ID_SCENE_BOARD_GET_FOLD_DISPLAY_MODE, 89 TRANS_ID_SCENE_BOARD_IS_FOLDABLE, 90 TRANS_ID_SCENE_BOARD_GET_FOLD_STATUS, 91 TRANS_ID_SCENE_BOARD_GET_CURRENT_FOLD_CREASE_REGION, 92 }; 93 94 virtual sptr<DisplayInfo> GetDefaultDisplayInfo() = 0; 95 virtual sptr<DisplayInfo> GetDisplayInfoById(DisplayId displayId) = 0; 96 virtual sptr<DisplayInfo> GetDisplayInfoByScreen(ScreenId screenId) = 0; 97 virtual DMError HasPrivateWindow(DisplayId displayId, bool& hasPrivateWindow) = 0; 98 99 virtual ScreenId CreateVirtualScreen(VirtualScreenOption option, 100 const sptr<IRemoteObject>& displayManagerAgent) = 0; 101 virtual DMError DestroyVirtualScreen(ScreenId screenId) = 0; 102 virtual DMError SetVirtualScreenSurface(ScreenId screenId, sptr<IBufferProducer> surface) = 0; 103 virtual DMError SetOrientation(ScreenId screenId, Orientation orientation) = 0; 104 virtual std::shared_ptr<Media::PixelMap> GetDisplaySnapshot(DisplayId displayId, 105 DmErrorCode* errorCode = nullptr) = 0; 106 virtual DMError SetScreenRotationLocked(bool isLocked) = 0; 107 virtual DMError IsScreenRotationLocked(bool& isLocked) = 0; 108 109 // colorspace, gamut 110 virtual DMError GetScreenSupportedColorGamuts(ScreenId screenId, std::vector<ScreenColorGamut>& colorGamuts) = 0; 111 virtual DMError GetScreenColorGamut(ScreenId screenId, ScreenColorGamut& colorGamut) = 0; 112 virtual DMError SetScreenColorGamut(ScreenId screenId, int32_t colorGamutIdx) = 0; 113 virtual DMError GetScreenGamutMap(ScreenId screenId, ScreenGamutMap& gamutMap) = 0; 114 virtual DMError SetScreenGamutMap(ScreenId screenId, ScreenGamutMap gamutMap) = 0; 115 virtual DMError SetScreenColorTransform(ScreenId screenId) = 0; 116 117 virtual DMError RegisterDisplayManagerAgent(const sptr<IDisplayManagerAgent>& displayManagerAgent, 118 DisplayManagerAgentType type) = 0; 119 virtual DMError UnregisterDisplayManagerAgent(const sptr<IDisplayManagerAgent>& displayManagerAgent, 120 DisplayManagerAgentType type) = 0; 121 virtual bool WakeUpBegin(PowerStateChangeReason reason) = 0; 122 virtual bool WakeUpEnd() = 0; 123 virtual bool SuspendBegin(PowerStateChangeReason reason) = 0; 124 virtual bool SuspendEnd() = 0; 125 virtual bool SetScreenPowerForAll(ScreenPowerState state, PowerStateChangeReason reason) = 0; 126 virtual ScreenPowerState GetScreenPower(ScreenId dmsScreenId) = 0; 127 virtual bool SetDisplayState(DisplayState state) = 0; 128 virtual DisplayState GetDisplayState(DisplayId displayId) = 0; 129 virtual std::vector<DisplayId> GetAllDisplayIds() = 0; 130 virtual sptr<CutoutInfo> GetCutoutInfo(DisplayId displayId) = 0; 131 virtual void NotifyDisplayEvent(DisplayEvent event) = 0; 132 virtual bool SetFreeze(std::vector<DisplayId> displayIds, bool isFreeze) = 0; 133 virtual sptr<ScreenInfo> GetScreenInfoById(ScreenId screenId) = 0; 134 virtual sptr<ScreenGroupInfo> GetScreenGroupInfoById(ScreenId screenId) = 0; 135 virtual DMError GetAllScreenInfos(std::vector<sptr<ScreenInfo>>& screenInfos) = 0; 136 virtual DMError MakeMirror(ScreenId mainScreenId, std::vector<ScreenId> mirrorScreenIds, 137 ScreenId& screenGroupId) = 0; 138 virtual DMError MakeExpand(std::vector<ScreenId> screenId, std::vector<Point> startPoints, 139 ScreenId& screenGroupId) = 0; 140 virtual DMError StopMirror(const std::vector<ScreenId>& mirrorScreenIds) = 0; 141 virtual DMError StopExpand(const std::vector<ScreenId>& expandScreenIds) = 0; 142 virtual void RemoveVirtualScreenFromGroup(std::vector<ScreenId> screens) = 0; 143 virtual DMError SetScreenActiveMode(ScreenId screenId, uint32_t modeId) = 0; 144 virtual DMError SetVirtualPixelRatio(ScreenId screenId, float virtualPixelRatio) = 0; 145 virtual DMError AddSurfaceNodeToDisplay(DisplayId displayId, 146 std::shared_ptr<class RSSurfaceNode>& surfaceNode, bool onTop = true) = 0; 147 virtual DMError RemoveSurfaceNodeFromDisplay(DisplayId displayId, 148 std::shared_ptr<class RSSurfaceNode>& surfaceNode) = 0; 149 IsFoldable()150 virtual bool IsFoldable() { return false; } 151 GetFoldStatus()152 virtual FoldStatus GetFoldStatus() { return FoldStatus::UNKNOWN; } 153 GetFoldDisplayMode()154 virtual FoldDisplayMode GetFoldDisplayMode() { return FoldDisplayMode::UNKNOWN; } 155 SetFoldDisplayMode(const FoldDisplayMode)156 virtual void SetFoldDisplayMode(const FoldDisplayMode) {} 157 GetCurrentFoldCreaseRegion()158 virtual sptr<FoldCreaseRegion> GetCurrentFoldCreaseRegion() { return nullptr; } 159 }; 160 } // namespace OHOS::Rosen 161 162 #endif // FOUNDATION_DMSERVER_DISPLAY_MANAGER_INTERFACE_H