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 16e0dac50fSopenharmony_ci#ifndef OHOS_ROSEN_WINDOW_SYSTEM_EFFECT_H 17e0dac50fSopenharmony_ci#define OHOS_ROSEN_WINDOW_SYSTEM_EFFECT_H 18e0dac50fSopenharmony_ci 19e0dac50fSopenharmony_ci#include <refbase.h> 20e0dac50fSopenharmony_ci#include "wm_common.h" 21e0dac50fSopenharmony_ci#include "window_node.h" 22e0dac50fSopenharmony_ci#include "window_root.h" 23e0dac50fSopenharmony_ci 24e0dac50fSopenharmony_cinamespace OHOS { 25e0dac50fSopenharmony_cinamespace Rosen { 26e0dac50fSopenharmony_cistruct WindowShadowParameters { 27e0dac50fSopenharmony_ci float elevation_; 28e0dac50fSopenharmony_ci std::string color_; 29e0dac50fSopenharmony_ci float offsetX_; 30e0dac50fSopenharmony_ci float offsetY_; 31e0dac50fSopenharmony_ci float alpha_; 32e0dac50fSopenharmony_ci float radius_; 33e0dac50fSopenharmony_ci}; 34e0dac50fSopenharmony_cistruct AppWindowEffectConfig { 35e0dac50fSopenharmony_ci float fullScreenCornerRadius_; 36e0dac50fSopenharmony_ci float splitCornerRadius_; 37e0dac50fSopenharmony_ci float floatCornerRadius_; 38e0dac50fSopenharmony_ci 39e0dac50fSopenharmony_ci WindowShadowParameters focusedShadow_; 40e0dac50fSopenharmony_ci WindowShadowParameters unfocusedShadow_; 41e0dac50fSopenharmony_ci 42e0dac50fSopenharmony_ci // defaultCornerRadiusL = 16.0vp 43e0dac50fSopenharmony_ci AppWindowEffectConfig() : fullScreenCornerRadius_(0.0), splitCornerRadius_(0.0), floatCornerRadius_(0.0) 44e0dac50fSopenharmony_ci { 45e0dac50fSopenharmony_ci focusedShadow_ = {0, "#000000", 0, 0, 0}; 46e0dac50fSopenharmony_ci unfocusedShadow_ = {0, "#000000", 0, 0, 0}; 47e0dac50fSopenharmony_ci } 48e0dac50fSopenharmony_ci}; 49e0dac50fSopenharmony_ciclass WindowSystemEffect : public RefBase { 50e0dac50fSopenharmony_cipublic: 51e0dac50fSopenharmony_ci WindowSystemEffect() = delete; 52e0dac50fSopenharmony_ci ~WindowSystemEffect() = default; 53e0dac50fSopenharmony_ci 54e0dac50fSopenharmony_ci static void SetWindowSystemEffectConfig(AppWindowEffectConfig config); 55e0dac50fSopenharmony_ci static void SetWindowRoot(const sptr<WindowRoot>& windowRoot); 56e0dac50fSopenharmony_ci 57e0dac50fSopenharmony_ci static WMError SetWindowEffect(const sptr<WindowNode>& node, bool needCheckAnimation = true); 58e0dac50fSopenharmony_ci static WMError SetWindowShadow(const sptr<WindowNode>& node); 59e0dac50fSopenharmony_ci static WMError SetCornerRadius(const sptr<WindowNode>& node, bool needCheckAnimation = true); 60e0dac50fSopenharmony_ci 61e0dac50fSopenharmony_ciprivate: 62e0dac50fSopenharmony_ci static float ConvertRadiusToSigma(float radius) 63e0dac50fSopenharmony_ci { 64e0dac50fSopenharmony_ci constexpr float BlurSigmaScale = 0.57735f; 65e0dac50fSopenharmony_ci return radius > 0.0f ? BlurSigmaScale * radius + SK_ScalarHalf : 0.0f; 66e0dac50fSopenharmony_ci } 67e0dac50fSopenharmony_ci static bool IsAppMainOrSubOrFloatingWindow(const sptr<WindowNode>& node); 68e0dac50fSopenharmony_ci static AppWindowEffectConfig windowSystemEffectConfig_; 69e0dac50fSopenharmony_ci static wptr<WindowRoot> windowRoot_; 70e0dac50fSopenharmony_ci}; 71e0dac50fSopenharmony_ci} // Rosen 72e0dac50fSopenharmony_ci} // OHOS 73e0dac50fSopenharmony_ci#endif // OHOS_ROSEN_WINDOW_SYSTEM_EFFECT_H 74