• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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