1e0dac50fSopenharmony_ci/* 2e0dac50fSopenharmony_ci * Copyright (c) 2023 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#include "display_lite.h" 16e0dac50fSopenharmony_ci 17e0dac50fSopenharmony_ci#include <cstdint> 18e0dac50fSopenharmony_ci#include <new> 19e0dac50fSopenharmony_ci#include <refbase.h> 20e0dac50fSopenharmony_ci 21e0dac50fSopenharmony_ci#include "class_var_definition.h" 22e0dac50fSopenharmony_ci#include "display_info.h" 23e0dac50fSopenharmony_ci#include "display_manager_adapter_lite.h" 24e0dac50fSopenharmony_ci#include "dm_common.h" 25e0dac50fSopenharmony_ci#include "singleton_container.h" 26e0dac50fSopenharmony_ci#include "window_manager_hilog.h" 27e0dac50fSopenharmony_ci 28e0dac50fSopenharmony_cinamespace OHOS::Rosen { 29e0dac50fSopenharmony_cinamespace { 30e0dac50fSopenharmony_ciconstexpr HiviewDFX::HiLogLabel LABEL = {LOG_CORE, HILOG_DOMAIN_DISPLAY, "DisplayLite"}; 31e0dac50fSopenharmony_ci} 32e0dac50fSopenharmony_ciclass DisplayLite::Impl : public RefBase { 33e0dac50fSopenharmony_cipublic: 34e0dac50fSopenharmony_ci Impl(const std::string& name, sptr<DisplayInfo> info) 35e0dac50fSopenharmony_ci { 36e0dac50fSopenharmony_ci displayInfo_ = info; 37e0dac50fSopenharmony_ci name_= name; 38e0dac50fSopenharmony_ci } 39e0dac50fSopenharmony_ci ~Impl() = default; 40e0dac50fSopenharmony_ci DEFINE_VAR_FUNC_GET_SET_WITH_LOCK(sptr<DisplayInfo>, DisplayInfo, displayInfo); 41e0dac50fSopenharmony_ci DEFINE_VAR_FUNC_GET_SET(std::string, Name, name); 42e0dac50fSopenharmony_ci}; 43e0dac50fSopenharmony_ci 44e0dac50fSopenharmony_ciDisplayLite::DisplayLite(const std::string& name, sptr<DisplayInfo> info) 45e0dac50fSopenharmony_ci : pImpl_(new Impl(name, info)) 46e0dac50fSopenharmony_ci{ 47e0dac50fSopenharmony_ci} 48e0dac50fSopenharmony_ci 49e0dac50fSopenharmony_ciDisplayLite::~DisplayLite() 50e0dac50fSopenharmony_ci{ 51e0dac50fSopenharmony_ci} 52e0dac50fSopenharmony_ci 53e0dac50fSopenharmony_ciDisplayId DisplayLite::GetId() const 54e0dac50fSopenharmony_ci{ 55e0dac50fSopenharmony_ci if (pImpl_ == nullptr || pImpl_->GetDisplayInfo() == nullptr) { 56e0dac50fSopenharmony_ci WLOGFE("pImpl_ or pImpl_->GetDisplayInfo is nullptr"); 57e0dac50fSopenharmony_ci return DisplayId(0); 58e0dac50fSopenharmony_ci } 59e0dac50fSopenharmony_ci return pImpl_->GetDisplayInfo()->GetDisplayId(); 60e0dac50fSopenharmony_ci} 61e0dac50fSopenharmony_ci 62e0dac50fSopenharmony_cisptr<DisplayInfo> DisplayLite::GetDisplayInfo() const 63e0dac50fSopenharmony_ci{ 64e0dac50fSopenharmony_ci UpdateDisplayInfo(); 65e0dac50fSopenharmony_ci if (pImpl_ == nullptr || pImpl_->GetDisplayInfo() == nullptr) { 66e0dac50fSopenharmony_ci WLOGFE("pImpl_ or pImpl_->GetDisplayInfo is nullptr"); 67e0dac50fSopenharmony_ci return nullptr; 68e0dac50fSopenharmony_ci } 69e0dac50fSopenharmony_ci return pImpl_->GetDisplayInfo(); 70e0dac50fSopenharmony_ci} 71e0dac50fSopenharmony_ci 72e0dac50fSopenharmony_ciint32_t DisplayLite::GetWidth() const 73e0dac50fSopenharmony_ci{ 74e0dac50fSopenharmony_ci UpdateDisplayInfo(); 75e0dac50fSopenharmony_ci if (pImpl_ == nullptr || pImpl_->GetDisplayInfo() == nullptr) { 76e0dac50fSopenharmony_ci WLOGFE("pImpl_ or pImpl_->GetDisplayInfo is nullptr"); 77e0dac50fSopenharmony_ci return 0; 78e0dac50fSopenharmony_ci } 79e0dac50fSopenharmony_ci return pImpl_->GetDisplayInfo()->GetWidth(); 80e0dac50fSopenharmony_ci} 81e0dac50fSopenharmony_ci 82e0dac50fSopenharmony_ciint32_t DisplayLite::GetHeight() const 83e0dac50fSopenharmony_ci{ 84e0dac50fSopenharmony_ci UpdateDisplayInfo(); 85e0dac50fSopenharmony_ci if (pImpl_ == nullptr || pImpl_->GetDisplayInfo() == nullptr) { 86e0dac50fSopenharmony_ci WLOGFE("pImpl_ or pImpl_->GetDisplayInfo is nullptr"); 87e0dac50fSopenharmony_ci return 0; 88e0dac50fSopenharmony_ci } 89e0dac50fSopenharmony_ci return pImpl_->GetDisplayInfo()->GetHeight(); 90e0dac50fSopenharmony_ci} 91e0dac50fSopenharmony_ci 92e0dac50fSopenharmony_cisptr<CutoutInfo> DisplayLite::GetCutoutInfo() const 93e0dac50fSopenharmony_ci{ 94e0dac50fSopenharmony_ci return SingletonContainer::Get<DisplayManagerAdapterLite>().GetCutoutInfo(GetId()); 95e0dac50fSopenharmony_ci} 96e0dac50fSopenharmony_ci 97e0dac50fSopenharmony_civoid DisplayLite::UpdateDisplayInfo() const 98e0dac50fSopenharmony_ci{ 99e0dac50fSopenharmony_ci auto displayInfo = SingletonContainer::Get<DisplayManagerAdapterLite>().GetDisplayInfo(GetId()); 100e0dac50fSopenharmony_ci UpdateDisplayInfo(displayInfo); 101e0dac50fSopenharmony_ci} 102e0dac50fSopenharmony_ci 103e0dac50fSopenharmony_civoid DisplayLite::UpdateDisplayInfo(sptr<DisplayInfo> displayInfo) const 104e0dac50fSopenharmony_ci{ 105e0dac50fSopenharmony_ci if (displayInfo == nullptr) { 106e0dac50fSopenharmony_ci WLOGFE("displayInfo is nullptr"); 107e0dac50fSopenharmony_ci return; 108e0dac50fSopenharmony_ci } 109e0dac50fSopenharmony_ci if (pImpl_ == nullptr) { 110e0dac50fSopenharmony_ci WLOGFE("pImpl_ is nullptr"); 111e0dac50fSopenharmony_ci return; 112e0dac50fSopenharmony_ci } 113e0dac50fSopenharmony_ci pImpl_->SetDisplayInfo(displayInfo); 114e0dac50fSopenharmony_ci} 115e0dac50fSopenharmony_ci 116e0dac50fSopenharmony_ciRotation DisplayLite::GetRotation() const 117e0dac50fSopenharmony_ci{ 118e0dac50fSopenharmony_ci UpdateDisplayInfo(); 119e0dac50fSopenharmony_ci if (pImpl_ == nullptr || pImpl_->GetDisplayInfo() == nullptr) { 120e0dac50fSopenharmony_ci WLOGFE("pImpl_ or pImpl_->GetDisplayInfo is nullptr"); 121e0dac50fSopenharmony_ci return Rotation::ROTATION_0; 122e0dac50fSopenharmony_ci } 123e0dac50fSopenharmony_ci return pImpl_->GetDisplayInfo()->GetRotation(); 124e0dac50fSopenharmony_ci} 125e0dac50fSopenharmony_ci} // namespace OHOS::Rosen 126