1e0dac50fSopenharmony_ci/* 2e0dac50fSopenharmony_ci * Copyright (c) 2021-2024 Huawei Device Co., Ltd. 3e0dac50fSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4e0dac50fSopenharmony_ci * you may not use this file except in compliance with the License. 5e0dac50fSopenharmony_ci * You may obtain a copy of the License at 6e0dac50fSopenharmony_ci * 7e0dac50fSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8e0dac50fSopenharmony_ci * 9e0dac50fSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10e0dac50fSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11e0dac50fSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12e0dac50fSopenharmony_ci * See the License for the specific language governing permissions and 13e0dac50fSopenharmony_ci * limitations under the License. 14e0dac50fSopenharmony_ci */ 15e0dac50fSopenharmony_ci 16e0dac50fSopenharmony_ci#ifndef DISPLAY_H 17e0dac50fSopenharmony_ci#define DISPLAY_H 18e0dac50fSopenharmony_ci 19e0dac50fSopenharmony_ci#include <string> 20e0dac50fSopenharmony_ci#include "dm_common.h" 21e0dac50fSopenharmony_ci#include "noncopyable.h" 22e0dac50fSopenharmony_ci 23e0dac50fSopenharmony_cinamespace OHOS::Rosen { 24e0dac50fSopenharmony_ciclass DisplayInfo; 25e0dac50fSopenharmony_ciclass CutoutInfo; 26e0dac50fSopenharmony_ci 27e0dac50fSopenharmony_ciclass Display : public RefBase { 28e0dac50fSopenharmony_cifriend class DisplayManager; 29e0dac50fSopenharmony_cipublic: 30e0dac50fSopenharmony_ci ~Display(); 31e0dac50fSopenharmony_ci Display(const Display&) = delete; 32e0dac50fSopenharmony_ci Display(Display&&) = delete; 33e0dac50fSopenharmony_ci Display& operator=(const Display&) = delete; 34e0dac50fSopenharmony_ci Display& operator=(Display&&) = delete; 35e0dac50fSopenharmony_ci 36e0dac50fSopenharmony_ci /** 37e0dac50fSopenharmony_ci * @brief Get id of the display. 38e0dac50fSopenharmony_ci * 39e0dac50fSopenharmony_ci * @return Display id. 40e0dac50fSopenharmony_ci */ 41e0dac50fSopenharmony_ci DisplayId GetId() const; 42e0dac50fSopenharmony_ci 43e0dac50fSopenharmony_ci /** 44e0dac50fSopenharmony_ci * @brief Get name of the display. 45e0dac50fSopenharmony_ci * 46e0dac50fSopenharmony_ci * @return Display name. 47e0dac50fSopenharmony_ci */ 48e0dac50fSopenharmony_ci std::string GetName() const; 49e0dac50fSopenharmony_ci 50e0dac50fSopenharmony_ci /** 51e0dac50fSopenharmony_ci * @brief Get width of the display. 52e0dac50fSopenharmony_ci * 53e0dac50fSopenharmony_ci * @return Width of the display. 54e0dac50fSopenharmony_ci */ 55e0dac50fSopenharmony_ci int32_t GetWidth() const; 56e0dac50fSopenharmony_ci 57e0dac50fSopenharmony_ci /** 58e0dac50fSopenharmony_ci * @brief Get height of the display. 59e0dac50fSopenharmony_ci * 60e0dac50fSopenharmony_ci * @return Height of the display. 61e0dac50fSopenharmony_ci */ 62e0dac50fSopenharmony_ci int32_t GetHeight() const; 63e0dac50fSopenharmony_ci 64e0dac50fSopenharmony_ci /** 65e0dac50fSopenharmony_ci * @brief Get physical width of the display. 66e0dac50fSopenharmony_ci * 67e0dac50fSopenharmony_ci * @return Physical width of the display. 68e0dac50fSopenharmony_ci */ 69e0dac50fSopenharmony_ci int32_t GetPhysicalWidth() const; 70e0dac50fSopenharmony_ci 71e0dac50fSopenharmony_ci /** 72e0dac50fSopenharmony_ci * @brief Get physical height of the display. 73e0dac50fSopenharmony_ci * 74e0dac50fSopenharmony_ci * @return Physical height of the display. 75e0dac50fSopenharmony_ci */ 76e0dac50fSopenharmony_ci int32_t GetPhysicalHeight() const; 77e0dac50fSopenharmony_ci 78e0dac50fSopenharmony_ci /** 79e0dac50fSopenharmony_ci * @brief Get the refresh rate of the display. 80e0dac50fSopenharmony_ci * 81e0dac50fSopenharmony_ci * @return Refresh rate of the display. 82e0dac50fSopenharmony_ci */ 83e0dac50fSopenharmony_ci uint32_t GetRefreshRate() const; 84e0dac50fSopenharmony_ci 85e0dac50fSopenharmony_ci /** 86e0dac50fSopenharmony_ci * @brief Get screen id. 87e0dac50fSopenharmony_ci * 88e0dac50fSopenharmony_ci * @return The screen id. 89e0dac50fSopenharmony_ci */ 90e0dac50fSopenharmony_ci ScreenId GetScreenId() const; 91e0dac50fSopenharmony_ci 92e0dac50fSopenharmony_ci /** 93e0dac50fSopenharmony_ci * @brief Get the virtual pixel ratio of the display. 94e0dac50fSopenharmony_ci * 95e0dac50fSopenharmony_ci * @return Virtual pixel ratio of the display. 96e0dac50fSopenharmony_ci */ 97e0dac50fSopenharmony_ci float GetVirtualPixelRatio() const; 98e0dac50fSopenharmony_ci 99e0dac50fSopenharmony_ci /** 100e0dac50fSopenharmony_ci * @brief Get the Dpi of the display. 101e0dac50fSopenharmony_ci * 102e0dac50fSopenharmony_ci * @return Dpi of the display. 103e0dac50fSopenharmony_ci */ 104e0dac50fSopenharmony_ci int GetDpi() const; 105e0dac50fSopenharmony_ci 106e0dac50fSopenharmony_ci /** 107e0dac50fSopenharmony_ci * @brief Get the rotation of the display. 108e0dac50fSopenharmony_ci * 109e0dac50fSopenharmony_ci * @return Rotation of the display.. 110e0dac50fSopenharmony_ci */ 111e0dac50fSopenharmony_ci Rotation GetRotation() const; 112e0dac50fSopenharmony_ci 113e0dac50fSopenharmony_ci /** 114e0dac50fSopenharmony_ci * @brief Get the Orientation of the display. 115e0dac50fSopenharmony_ci * 116e0dac50fSopenharmony_ci * @return Orientation indicates the direction of the display content. 117e0dac50fSopenharmony_ci */ 118e0dac50fSopenharmony_ci Orientation GetOrientation() const; 119e0dac50fSopenharmony_ci 120e0dac50fSopenharmony_ci /** 121e0dac50fSopenharmony_ci * @brief Get info of the display. 122e0dac50fSopenharmony_ci * 123e0dac50fSopenharmony_ci * @return Info of the display. 124e0dac50fSopenharmony_ci */ 125e0dac50fSopenharmony_ci sptr<DisplayInfo> GetDisplayInfo() const; 126e0dac50fSopenharmony_ci 127e0dac50fSopenharmony_ci /** 128e0dac50fSopenharmony_ci * @brief Get cutout info of the display. 129e0dac50fSopenharmony_ci * 130e0dac50fSopenharmony_ci * @return Cutout info of the display. 131e0dac50fSopenharmony_ci */ 132e0dac50fSopenharmony_ci sptr<CutoutInfo> GetCutoutInfo() const; 133e0dac50fSopenharmony_ci 134e0dac50fSopenharmony_ci /** 135e0dac50fSopenharmony_ci * @brief Judge if current display has immersive window. 136e0dac50fSopenharmony_ci * @param immersive The flag to represent if current display has immersive window. 137e0dac50fSopenharmony_ci * 138e0dac50fSopenharmony_ci * @return DM error codes. 139e0dac50fSopenharmony_ci */ 140e0dac50fSopenharmony_ci DMError HasImmersiveWindow(bool& immersive); 141e0dac50fSopenharmony_ci 142e0dac50fSopenharmony_ci /** 143e0dac50fSopenharmony_ci * @brief Get the supported HDR format of the screen. 144e0dac50fSopenharmony_ci * 145e0dac50fSopenharmony_ci * @param colorSpaces Supported HDR format of the screen. 146e0dac50fSopenharmony_ci * @return DM_OK means get success, others means get failed. 147e0dac50fSopenharmony_ci */ 148e0dac50fSopenharmony_ci DMError GetSupportedHDRFormats(std::vector<uint32_t>& hdrFormats) const; 149e0dac50fSopenharmony_ci 150e0dac50fSopenharmony_ci /** 151e0dac50fSopenharmony_ci * @brief Get the supported color space of the screen. 152e0dac50fSopenharmony_ci * 153e0dac50fSopenharmony_ci * @param colorSpaces Supported color space of the screen. 154e0dac50fSopenharmony_ci * @return DM_OK means get success, others means get failed. 155e0dac50fSopenharmony_ci */ 156e0dac50fSopenharmony_ci DMError GetSupportedColorSpaces(std::vector<uint32_t>& colorSpaces) const; 157e0dac50fSopenharmony_ci 158e0dac50fSopenharmony_ci /** 159e0dac50fSopenharmony_ci * @brief get available area of the display.(the screen area without dock and statusbar) 160e0dac50fSopenharmony_ci * @param area available area of the screen. 161e0dac50fSopenharmony_ci * @return DMError 162e0dac50fSopenharmony_ci */ 163e0dac50fSopenharmony_ci DMError GetAvailableArea(DMRect& area) const; 164e0dac50fSopenharmony_ci 165e0dac50fSopenharmony_ciprotected: 166e0dac50fSopenharmony_ci // No more methods or variables can be defined here. 167e0dac50fSopenharmony_ci Display(const std::string& name, sptr<DisplayInfo> info); 168e0dac50fSopenharmony_ciprivate: 169e0dac50fSopenharmony_ci // No more methods or variables can be defined here. 170e0dac50fSopenharmony_ci void UpdateDisplayInfo(sptr<DisplayInfo>) const; 171e0dac50fSopenharmony_ci void UpdateDisplayInfo() const; 172e0dac50fSopenharmony_ci class Impl; 173e0dac50fSopenharmony_ci sptr<Impl> pImpl_; 174e0dac50fSopenharmony_ci}; 175e0dac50fSopenharmony_ci} // namespace OHOS::Rosen 176e0dac50fSopenharmony_ci 177e0dac50fSopenharmony_ci#endif // DISPLAY_H