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#ifndef OHOS_PIP_OPTION_H 17e0dac50fSopenharmony_ci#define OHOS_PIP_OPTION_H 18e0dac50fSopenharmony_ci#include <refbase.h> 19e0dac50fSopenharmony_ci#include <string> 20e0dac50fSopenharmony_ci#include "xcomponent_controller.h" 21e0dac50fSopenharmony_ci#include "napi/native_api.h" 22e0dac50fSopenharmony_ci#include "wm_common.h" 23e0dac50fSopenharmony_ci 24e0dac50fSopenharmony_cinamespace OHOS { 25e0dac50fSopenharmony_cinamespace Rosen { 26e0dac50fSopenharmony_ciusing namespace Ace; 27e0dac50fSopenharmony_ciclass PipOption : virtual public RefBase { 28e0dac50fSopenharmony_cipublic: 29e0dac50fSopenharmony_ci explicit PipOption(); 30e0dac50fSopenharmony_ci virtual ~PipOption() = default; 31e0dac50fSopenharmony_ci void SetContext(void* contextPtr); 32e0dac50fSopenharmony_ci void SetNavigationId(const std::string& navigationId); 33e0dac50fSopenharmony_ci void SetPipTemplate(uint32_t templateType); 34e0dac50fSopenharmony_ci void SetContentSize(uint32_t width, uint32_t height); 35e0dac50fSopenharmony_ci void SetPiPControlStatus(PiPControlType controlType, PiPControlStatus status); 36e0dac50fSopenharmony_ci void SetPiPControlEnabled(PiPControlType controlType, PiPControlStatus enabled); 37e0dac50fSopenharmony_ci void SetXComponentController(std::shared_ptr<XComponentController> xComponentController); 38e0dac50fSopenharmony_ci void SetControlGroup(std::vector<std::uint32_t> controlGroup); 39e0dac50fSopenharmony_ci void* GetContext() const; 40e0dac50fSopenharmony_ci std::string GetNavigationId() const; 41e0dac50fSopenharmony_ci uint32_t GetPipTemplate(); 42e0dac50fSopenharmony_ci std::vector<std::uint32_t> GetControlGroup(); 43e0dac50fSopenharmony_ci std::vector<PiPControlStatusInfo> GetControlStatus(); 44e0dac50fSopenharmony_ci std::vector<PiPControlEnableInfo> GetControlEnable(); 45e0dac50fSopenharmony_ci void GetContentSize(uint32_t& width, uint32_t& height); 46e0dac50fSopenharmony_ci std::shared_ptr<XComponentController> GetXComponentController(); 47e0dac50fSopenharmony_ci void SetNodeControllerRef(napi_ref ref); 48e0dac50fSopenharmony_ci napi_ref GetNodeControllerRef() const; 49e0dac50fSopenharmony_ci void SetTypeNodeRef(napi_ref ref); 50e0dac50fSopenharmony_ci napi_ref GetTypeNodeRef() const; 51e0dac50fSopenharmony_ci void SetTypeNodeEnabled(bool enable); 52e0dac50fSopenharmony_ci bool IsTypeNodeEnabled() const; 53e0dac50fSopenharmony_ciprivate: 54e0dac50fSopenharmony_ci void* contextPtr_ = nullptr; 55e0dac50fSopenharmony_ci uint32_t templateType_ = 0; 56e0dac50fSopenharmony_ci std::string navigationId_ = ""; 57e0dac50fSopenharmony_ci uint32_t contentWidth_ = 0; 58e0dac50fSopenharmony_ci uint32_t contentHeight_ = 0; 59e0dac50fSopenharmony_ci std::vector<PiPControlStatusInfo> pipControlStatusInfoList_; 60e0dac50fSopenharmony_ci std::vector<PiPControlEnableInfo> pipControlEnableInfoList_; 61e0dac50fSopenharmony_ci std::vector<std::uint32_t> controlGroup_; 62e0dac50fSopenharmony_ci std::shared_ptr<XComponentController> xComponentController_ = nullptr; 63e0dac50fSopenharmony_ci napi_ref customNodeController_ = nullptr; 64e0dac50fSopenharmony_ci napi_ref typeNode_ = nullptr; 65e0dac50fSopenharmony_ci bool useTypeNode_ = false; 66e0dac50fSopenharmony_ci}; 67e0dac50fSopenharmony_ci} 68e0dac50fSopenharmony_ci} 69e0dac50fSopenharmony_ci#endif //OHOS_PIP_OPTION_H 70