1e0dac50fSopenharmony_ci/* 2e0dac50fSopenharmony_ci * Copyright (c) 2023-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 16e0dac50fSopenharmony_ci#include "picture_in_picture_option.h" 17e0dac50fSopenharmony_ci#include "window_manager_hilog.h" 18e0dac50fSopenharmony_ci 19e0dac50fSopenharmony_cinamespace OHOS { 20e0dac50fSopenharmony_cinamespace Rosen { 21e0dac50fSopenharmony_ciPipOption::PipOption() 22e0dac50fSopenharmony_ci{ 23e0dac50fSopenharmony_ci} 24e0dac50fSopenharmony_ci 25e0dac50fSopenharmony_civoid PipOption::SetContext(void* contextPtr) 26e0dac50fSopenharmony_ci{ 27e0dac50fSopenharmony_ci contextPtr_ = contextPtr; 28e0dac50fSopenharmony_ci} 29e0dac50fSopenharmony_ci 30e0dac50fSopenharmony_civoid PipOption::SetNavigationId(const std::string& navigationId) 31e0dac50fSopenharmony_ci{ 32e0dac50fSopenharmony_ci navigationId_ = navigationId; 33e0dac50fSopenharmony_ci} 34e0dac50fSopenharmony_ci 35e0dac50fSopenharmony_civoid PipOption::SetPipTemplate(uint32_t templateType) 36e0dac50fSopenharmony_ci{ 37e0dac50fSopenharmony_ci templateType_ = templateType; 38e0dac50fSopenharmony_ci} 39e0dac50fSopenharmony_ci 40e0dac50fSopenharmony_civoid PipOption::SetPiPControlStatus(PiPControlType controlType, PiPControlStatus status) 41e0dac50fSopenharmony_ci{ 42e0dac50fSopenharmony_ci for (auto& controlStatusInfo : pipControlStatusInfoList_) { 43e0dac50fSopenharmony_ci if (controlType == controlStatusInfo.controlType) { 44e0dac50fSopenharmony_ci controlStatusInfo.status = status; 45e0dac50fSopenharmony_ci return; 46e0dac50fSopenharmony_ci } 47e0dac50fSopenharmony_ci } 48e0dac50fSopenharmony_ci PiPControlStatusInfo newPiPControlStatusInfo {controlType, status}; 49e0dac50fSopenharmony_ci pipControlStatusInfoList_.push_back(newPiPControlStatusInfo); 50e0dac50fSopenharmony_ci} 51e0dac50fSopenharmony_ci 52e0dac50fSopenharmony_civoid PipOption::SetPiPControlEnabled(PiPControlType controlType, PiPControlStatus enabled) 53e0dac50fSopenharmony_ci{ 54e0dac50fSopenharmony_ci for (auto& controlEnableInfo : pipControlEnableInfoList_) { 55e0dac50fSopenharmony_ci if (controlType == controlEnableInfo.controlType) { 56e0dac50fSopenharmony_ci controlEnableInfo.enabled = enabled; 57e0dac50fSopenharmony_ci return; 58e0dac50fSopenharmony_ci } 59e0dac50fSopenharmony_ci } 60e0dac50fSopenharmony_ci PiPControlEnableInfo newPiPControlEnableInfo {controlType, enabled}; 61e0dac50fSopenharmony_ci pipControlEnableInfoList_.push_back(newPiPControlEnableInfo); 62e0dac50fSopenharmony_ci} 63e0dac50fSopenharmony_ci 64e0dac50fSopenharmony_civoid PipOption::SetContentSize(uint32_t width, uint32_t height) 65e0dac50fSopenharmony_ci{ 66e0dac50fSopenharmony_ci contentWidth_ = width; 67e0dac50fSopenharmony_ci contentHeight_ = height; 68e0dac50fSopenharmony_ci} 69e0dac50fSopenharmony_ci 70e0dac50fSopenharmony_civoid PipOption::SetControlGroup(std::vector<std::uint32_t> controlGroup) 71e0dac50fSopenharmony_ci{ 72e0dac50fSopenharmony_ci controlGroup_ = controlGroup; 73e0dac50fSopenharmony_ci} 74e0dac50fSopenharmony_ci 75e0dac50fSopenharmony_civoid PipOption::SetNodeControllerRef(napi_ref ref) 76e0dac50fSopenharmony_ci{ 77e0dac50fSopenharmony_ci customNodeController_ = ref; 78e0dac50fSopenharmony_ci} 79e0dac50fSopenharmony_ci 80e0dac50fSopenharmony_cinapi_ref PipOption::GetNodeControllerRef() const 81e0dac50fSopenharmony_ci{ 82e0dac50fSopenharmony_ci return customNodeController_; 83e0dac50fSopenharmony_ci} 84e0dac50fSopenharmony_ci 85e0dac50fSopenharmony_civoid PipOption::SetTypeNodeRef(napi_ref ref) 86e0dac50fSopenharmony_ci{ 87e0dac50fSopenharmony_ci typeNode_ = ref; 88e0dac50fSopenharmony_ci} 89e0dac50fSopenharmony_ci 90e0dac50fSopenharmony_cinapi_ref PipOption::GetTypeNodeRef() const 91e0dac50fSopenharmony_ci{ 92e0dac50fSopenharmony_ci return typeNode_; 93e0dac50fSopenharmony_ci} 94e0dac50fSopenharmony_ci 95e0dac50fSopenharmony_civoid* PipOption::GetContext() const 96e0dac50fSopenharmony_ci{ 97e0dac50fSopenharmony_ci return contextPtr_; 98e0dac50fSopenharmony_ci} 99e0dac50fSopenharmony_ci 100e0dac50fSopenharmony_cistd::string PipOption::GetNavigationId() const 101e0dac50fSopenharmony_ci{ 102e0dac50fSopenharmony_ci return navigationId_; 103e0dac50fSopenharmony_ci} 104e0dac50fSopenharmony_ci 105e0dac50fSopenharmony_ciuint32_t PipOption::GetPipTemplate() 106e0dac50fSopenharmony_ci{ 107e0dac50fSopenharmony_ci return templateType_; 108e0dac50fSopenharmony_ci} 109e0dac50fSopenharmony_ci 110e0dac50fSopenharmony_civoid PipOption::GetContentSize(uint32_t& width, uint32_t& height) 111e0dac50fSopenharmony_ci{ 112e0dac50fSopenharmony_ci width = contentWidth_; 113e0dac50fSopenharmony_ci height = contentHeight_; 114e0dac50fSopenharmony_ci} 115e0dac50fSopenharmony_ci 116e0dac50fSopenharmony_cistd::vector<std::uint32_t> PipOption::GetControlGroup() 117e0dac50fSopenharmony_ci{ 118e0dac50fSopenharmony_ci return controlGroup_; 119e0dac50fSopenharmony_ci} 120e0dac50fSopenharmony_ci 121e0dac50fSopenharmony_cistd::vector<PiPControlStatusInfo> PipOption::GetControlStatus() 122e0dac50fSopenharmony_ci{ 123e0dac50fSopenharmony_ci return pipControlStatusInfoList_; 124e0dac50fSopenharmony_ci} 125e0dac50fSopenharmony_ci 126e0dac50fSopenharmony_cistd::vector<PiPControlEnableInfo> PipOption::GetControlEnable() 127e0dac50fSopenharmony_ci{ 128e0dac50fSopenharmony_ci return pipControlEnableInfoList_; 129e0dac50fSopenharmony_ci} 130e0dac50fSopenharmony_ci 131e0dac50fSopenharmony_civoid PipOption::SetXComponentController(std::shared_ptr<XComponentController> xComponentController) 132e0dac50fSopenharmony_ci{ 133e0dac50fSopenharmony_ci xComponentController_ = xComponentController; 134e0dac50fSopenharmony_ci} 135e0dac50fSopenharmony_ci 136e0dac50fSopenharmony_cistd::shared_ptr<XComponentController> PipOption::GetXComponentController() 137e0dac50fSopenharmony_ci{ 138e0dac50fSopenharmony_ci return xComponentController_; 139e0dac50fSopenharmony_ci} 140e0dac50fSopenharmony_ci 141e0dac50fSopenharmony_civoid PipOption::SetTypeNodeEnabled(bool enable) 142e0dac50fSopenharmony_ci{ 143e0dac50fSopenharmony_ci useTypeNode_ = enable; 144e0dac50fSopenharmony_ci} 145e0dac50fSopenharmony_ci 146e0dac50fSopenharmony_cibool PipOption::IsTypeNodeEnabled() const 147e0dac50fSopenharmony_ci{ 148e0dac50fSopenharmony_ci return useTypeNode_; 149e0dac50fSopenharmony_ci} 150e0dac50fSopenharmony_ci} // namespace Rosen 151e0dac50fSopenharmony_ci} // namespace OHOS