1 /*
2 * Copyright (c) 2021 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include "core/components/common/properties/shadow.h"
17
18 #include "core/animation/evaluator.h"
19 #include "core/common/container.h"
20 #include "core/components/common/properties/shadow_config.h"
21
22 namespace OHOS::Ace {
23
Blend(const Shadow & to,const Shadow & from,float progress)24 Shadow Shadow::Blend(const Shadow& to, const Shadow& from, float progress)
25 {
26 auto offset = from.offset_ + (to.offset_ - from.offset_) * progress;
27 auto blurRadius = from.blurRadius_ + (to.blurRadius_ - from.blurRadius_) * progress;
28 auto spreadRadius = from.spreadRadius_ + (to.spreadRadius_ - from.spreadRadius_) * progress;
29 LinearEvaluator<Color> evaluator;
30 auto color = evaluator.Evaluate(from.color_, to.color_, progress);
31 return Shadow(blurRadius, spreadRadius, offset, color);
32 }
33
CreateShadow(ShadowStyle style)34 Shadow Shadow::CreateShadow(ShadowStyle style)
35 {
36 auto colorMode = Container::CurrentColorMode();
37 if (colorMode == ColorMode::DARK) {
38 switch (style) {
39 case ShadowStyle::OuterDefaultXS:
40 return ShadowConfig::DefaultShadowXSDark;
41 case ShadowStyle::OuterDefaultSM:
42 return ShadowConfig::DefaultShadowSDark;
43 case ShadowStyle::OuterDefaultMD:
44 return ShadowConfig::DefaultShadowMDark;
45 case ShadowStyle::OuterDefaultLG:
46 return ShadowConfig::DefaultShadowLDark;
47 case ShadowStyle::OuterFloatingSM:
48 return ShadowConfig::FloatingShadowSDark;
49 case ShadowStyle::OuterFloatingMD:
50 return ShadowConfig::FloatingShadowMDark;
51 default:
52 return ShadowConfig::NoneShadow;
53 }
54 }
55 switch (style) {
56 case ShadowStyle::OuterDefaultXS:
57 return ShadowConfig::DefaultShadowXS;
58 case ShadowStyle::OuterDefaultSM:
59 return ShadowConfig::DefaultShadowS;
60 case ShadowStyle::OuterDefaultMD:
61 return ShadowConfig::DefaultShadowM;
62 case ShadowStyle::OuterDefaultLG:
63 return ShadowConfig::DefaultShadowL;
64 case ShadowStyle::OuterFloatingSM:
65 return ShadowConfig::FloatingShadowS;
66 case ShadowStyle::OuterFloatingMD:
67 return ShadowConfig::FloatingShadowM;
68 default:
69 return ShadowConfig::NoneShadow;
70 }
71 return ShadowConfig::NoneShadow;
72 }
73 } // namespace OHOS::Ace