1 /*
2 * Copyright (c) 2025 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 "modifier_ng/appearance/rs_shadow_modifier.h"
17
18 namespace OHOS::Rosen::ModifierNG {
SetShadowColor(Color color)19 void RSShadowModifier::SetShadowColor(Color color)
20 {
21 Setter(RSPropertyType::SHADOW_COLOR, color);
22 }
23
GetShadowColor() const24 Color RSShadowModifier::GetShadowColor() const
25 {
26 return Getter(RSPropertyType::SHADOW_COLOR, Color::FromArgbInt(DEFAULT_SPOT_COLOR));
27 }
28
SetShadowOffsetX(float offsetX)29 void RSShadowModifier::SetShadowOffsetX(float offsetX)
30 {
31 Setter(RSPropertyType::SHADOW_OFFSET_X, offsetX);
32 }
33
GetShadowOffsetX() const34 float RSShadowModifier::GetShadowOffsetX() const
35 {
36 return Getter(RSPropertyType::SHADOW_OFFSET_X, 0.f);
37 }
38
SetShadowOffsetY(float offsetY)39 void RSShadowModifier::SetShadowOffsetY(float offsetY)
40 {
41 Setter(RSPropertyType::SHADOW_OFFSET_Y, offsetY);
42 }
43
GetShadowOffsetY() const44 float RSShadowModifier::GetShadowOffsetY() const
45 {
46 return Getter(RSPropertyType::SHADOW_OFFSET_Y, 0.f);
47 }
48
SetShadowAlpha(float alpha)49 void RSShadowModifier::SetShadowAlpha(float alpha)
50 {
51 Setter(RSPropertyType::SHADOW_ALPHA, alpha);
52 }
53
GetShadowAlpha() const54 float RSShadowModifier::GetShadowAlpha() const
55 {
56 return Getter(RSPropertyType::SHADOW_ALPHA, 1.f);
57 }
58
SetShadowElevation(float elevation)59 void RSShadowModifier::SetShadowElevation(float elevation)
60 {
61 Setter(RSPropertyType::SHADOW_ELEVATION, elevation);
62 }
63
GetShadowElevation() const64 float RSShadowModifier::GetShadowElevation() const
65 {
66 return Getter(RSPropertyType::SHADOW_ELEVATION, 0.f);
67 }
68
SetShadowRadius(float radius)69 void RSShadowModifier::SetShadowRadius(float radius)
70 {
71 Setter(RSPropertyType::SHADOW_RADIUS, radius);
72 }
73
GetShadowRadius() const74 float RSShadowModifier::GetShadowRadius() const
75 {
76 return Getter(RSPropertyType::SHADOW_RADIUS, 0.f);
77 }
78
SetShadowPath(const std::shared_ptr<RSPath> & shadowPath)79 void RSShadowModifier::SetShadowPath(const std::shared_ptr<RSPath>& shadowPath)
80 {
81 Setter<RSProperty, std::shared_ptr<RSPath>>(RSPropertyType::SHADOW_PATH, shadowPath);
82 }
83
GetShadowPath() const84 std::shared_ptr<RSPath> RSShadowModifier::GetShadowPath() const
85 {
86 return Getter(RSPropertyType::SHADOW_PATH, std::shared_ptr<RSPath>(nullptr));
87 }
88
SetShadowMask(int shadowMask)89 void RSShadowModifier::SetShadowMask(int shadowMask)
90 {
91 Setter<RSProperty>(RSPropertyType::SHADOW_MASK, shadowMask);
92 }
93
GetShadowMask() const94 int RSShadowModifier::GetShadowMask() const
95 {
96 return Getter(RSPropertyType::SHADOW_MASK, SHADOW_MASK_STRATEGY::MASK_NONE);
97 }
98
SetShadowColorStrategy(int shadowColorStrategy)99 void RSShadowModifier::SetShadowColorStrategy(int shadowColorStrategy)
100 {
101 Setter<RSProperty>(RSPropertyType::SHADOW_COLOR_STRATEGY, shadowColorStrategy);
102 }
103
GetShadowColorStrategy() const104 int RSShadowModifier::GetShadowColorStrategy() const
105 {
106 return Getter(RSPropertyType::SHADOW_COLOR_STRATEGY, 0);
107 }
108
SetShadowIsFilled(bool shadowIsFilled)109 void RSShadowModifier::SetShadowIsFilled(bool shadowIsFilled)
110 {
111 Setter<RSProperty>(RSPropertyType::SHADOW_IS_FILLED, shadowIsFilled);
112 }
113
GetShadowIsFilled() const114 bool RSShadowModifier::GetShadowIsFilled() const
115 {
116 return Getter(RSPropertyType::SHADOW_IS_FILLED, false);
117 }
118
SetUseShadowBatching(bool useShadowBatching)119 void RSShadowModifier::SetUseShadowBatching(bool useShadowBatching)
120 {
121 Setter<RSProperty>(RSPropertyType::USE_SHADOW_BATCHING, useShadowBatching);
122 }
123
GetUseShadowBatching() const124 bool RSShadowModifier::GetUseShadowBatching() const
125 {
126 return Getter(RSPropertyType::USE_SHADOW_BATCHING, false);
127 }
128 } // namespace OHOS::Rosen::ModifierNG
129