• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #ifndef RENDER_SERVICE_BASE_MODIFIER_NG_RS_MODIFIER_NG_TYPE_H
17 #define RENDER_SERVICE_BASE_MODIFIER_NG_RS_MODIFIER_NG_TYPE_H
18 
19 #include <bitset>
20 #include <string>
21 #include <unordered_map>
22 
23 namespace OHOS::Rosen::ModifierNG {
24 enum class RSModifierType : uint16_t {
25     INVALID = 0,
26 
27     BOUNDS = 1,
28     FRAME = 2,
29     TRANSFORM = 3,
30     ALPHA = 4,
31 
32     FOREGROUND_COLOR = 5,
33     BACKGROUND_COLOR = 6,
34     BACKGROUND_SHADER = 7,
35     BACKGROUND_IMAGE = 8,
36 
37     BORDER = 9,
38     OUTLINE = 10,
39     CLIP_TO_BOUNDS = 11,
40     CLIP_TO_FRAME = 12,
41     VISIBILITY = 13,
42 
43     DYNAMIC_LIGHT_UP = 14,
44     SHADOW = 15,
45     MASK = 16,
46     PIXEL_STRETCH = 17,
47     USE_EFFECT = 18,
48     BLENDER = 19,
49 
50     POINT_LIGHT = 20,
51     PARTICLE_EFFECT = 21,
52     COMPOSITING_FILTER = 22,
53     BACKGROUND_FILTER = 23,
54     FOREGROUND_FILTER = 24,
55 
56     TRANSITION_STYLE = 25,
57     BACKGROUND_STYLE = 26,
58     CONTENT_STYLE = 27,
59     FOREGROUND_STYLE = 28,
60     OVERLAY_STYLE = 29,
61     NODE_MODIFIER = 30,
62 
63     ENV_FOREGROUND_COLOR = 31,
64     HDR_BRIGHTNESS = 32,
65     BEHIND_WINDOW_FILTER = 33,
66     BACKGROUND_NG_SHADER = 34,
67     FOREGROUND_SHADER = 35,
68 
69     CHILDREN, // PLACEHOLDER, no such modifier, but we need a dirty flag
70 
71     MAX = CHILDREN + 1,
72 };
73 
74 enum class RSPropertyType : uint16_t {
75 #define X(name) name,
76 #include "modifier_ng/rs_property_ng_type.in"
77 #undef X
78 };
79 
80 class ModifierTypeConvertor {
81 public:
GetPropertyType(RSModifierType modifierTypeNG)82     static RSPropertyType GetPropertyType(RSModifierType modifierTypeNG)
83     {
84         auto it = modifierToPropertyMap_.find(modifierTypeNG);
85         if (it != modifierToPropertyMap_.end()) {
86             return it->second;
87         }
88         return RSPropertyType::INVALID;
89     }
90 
91 private:
92     static inline std::unordered_map<RSModifierType, RSPropertyType> modifierToPropertyMap_ = {
93         { RSModifierType::TRANSITION_STYLE, RSPropertyType::TRANSITION_STYLE },
94         { RSModifierType::BACKGROUND_STYLE, RSPropertyType::BACKGROUND_STYLE },
95         { RSModifierType::CONTENT_STYLE, RSPropertyType::CONTENT_STYLE },
96         { RSModifierType::FOREGROUND_STYLE, RSPropertyType::FOREGROUND_STYLE },
97         { RSModifierType::OVERLAY_STYLE, RSPropertyType::OVERLAY_STYLE },
98         { RSModifierType::NODE_MODIFIER, RSPropertyType::NODE_MODIFIER },
99     };
100 };
101 
102 class RSModifierTypeString {
103 public:
GetModifierTypeString(RSModifierType type)104     static std::string GetModifierTypeString(RSModifierType type)
105     {
106         switch (type) {
107             case RSModifierType::INVALID: return "Invalid";
108             case RSModifierType::BOUNDS: return "Bounds";
109             case RSModifierType::FRAME: return "Frame";
110             case RSModifierType::TRANSFORM: return "Transform";
111             case RSModifierType::ALPHA: return "Alpha";
112             case RSModifierType::FOREGROUND_COLOR: return "ForegroundColor";
113             case RSModifierType::BACKGROUND_COLOR: return "BackgroundColor";
114             case RSModifierType::BACKGROUND_SHADER: return "BackgroundShader";
115             case RSModifierType::BACKGROUND_IMAGE: return "BackgroundImage";
116             case RSModifierType::BORDER: return "Border";
117             case RSModifierType::OUTLINE: return "Outline";
118             case RSModifierType::CLIP_TO_BOUNDS: return "ClipToBounds";
119             case RSModifierType::CLIP_TO_FRAME: return "ClipToFrame";
120             case RSModifierType::VISIBILITY: return "Visibility";
121             case RSModifierType::DYNAMIC_LIGHT_UP: return "DynamicLightUp";
122             case RSModifierType::SHADOW: return "Shadow";
123             case RSModifierType::MASK: return "Mask";
124             case RSModifierType::PIXEL_STRETCH: return "PixelStretch";
125             case RSModifierType::USE_EFFECT: return "UseEffect";
126             case RSModifierType::BLENDER: return "Blender";
127             case RSModifierType::POINT_LIGHT: return "PointLight";
128             case RSModifierType::PARTICLE_EFFECT: return "ParticleEffect";
129             case RSModifierType::COMPOSITING_FILTER: return "CompositingFilter";
130             case RSModifierType::BACKGROUND_FILTER: return "BackgroundFilter";
131             case RSModifierType::FOREGROUND_FILTER: return "ForegroundFilter";
132             case RSModifierType::TRANSITION_STYLE: return "TransitionStyle";
133             case RSModifierType::BACKGROUND_STYLE: return "BackgroundStyle";
134             case RSModifierType::CONTENT_STYLE: return "ContentStyle";
135             case RSModifierType::FOREGROUND_STYLE: return "ForegroundStyle";
136             case RSModifierType::OVERLAY_STYLE: return "OverlayStyle";
137             case RSModifierType::NODE_MODIFIER: return "NodeModifier";
138             case RSModifierType::ENV_FOREGROUND_COLOR: return "EnvForegroundColor";
139             case RSModifierType::HDR_BRIGHTNESS: return "HdrBrightness";
140             case RSModifierType::BEHIND_WINDOW_FILTER: return "BehindWindowFilter";
141             case RSModifierType::BACKGROUND_NG_SHADER: return "BackgroundNgShader";
142             case RSModifierType::FOREGROUND_SHADER: return "ForegroundShader";
143             case RSModifierType::CHILDREN: return "Children";
144             default: return "Invalid";
145         }
146     }
147 
GetPropertyTypeString(RSPropertyType type)148     static std::string GetPropertyTypeString(RSPropertyType type)
149     {
150         switch (type) {
151             case RSPropertyType::INVALID: return "Invalid";
152             case RSPropertyType::BOUNDS: return "Bounds";
153             case RSPropertyType::FRAME: return "Frame";
154             case RSPropertyType::POSITION_Z: return "PositionZ";
155             case RSPropertyType::POSITION_Z_APPLICABLE_CAMERA3D: return "PositionZApplicableCamera3d";
156             case RSPropertyType::PIVOT: return "Pivot";
157             case RSPropertyType::PIVOT_Z: return "PivotZ";
158             case RSPropertyType::QUATERNION: return "Quaternion";
159             case RSPropertyType::ROTATION: return "Rotation";
160             case RSPropertyType::ROTATION_X: return "RotationX";
161             case RSPropertyType::ROTATION_Y: return "RotationY";
162             case RSPropertyType::CAMERA_DISTANCE: return "CameraDistance";
163             case RSPropertyType::SCALE: return "Scale";
164             case RSPropertyType::SCALE_Z: return "ScaleZ";
165             case RSPropertyType::SKEW: return "Skew";
166             case RSPropertyType::PERSP: return "Persp";
167             case RSPropertyType::TRANSLATE: return "Translate";
168             case RSPropertyType::TRANSLATE_Z: return "TranslateZ";
169             case RSPropertyType::SUBLAYER_TRANSFORM: return "SublayerTransform";
170             case RSPropertyType::CORNER_RADIUS: return "CornerRadius";
171             case RSPropertyType::ALPHA: return "Alpha";
172             case RSPropertyType::ALPHA_OFFSCREEN: return "AlphaOffscreen";
173             case RSPropertyType::FOREGROUND_COLOR: return "ForegroundColor";
174             case RSPropertyType::BACKGROUND_COLOR: return "BackgroundColor";
175             case RSPropertyType::BACKGROUND_SHADER: return "BackgroundShader";
176             case RSPropertyType::BACKGROUND_SHADER_PROGRESS: return "BackgroundShaderProgress";
177             case RSPropertyType::BACKGROUND_NG_SHADER: return "BackgroundNGShader";
178             case RSPropertyType::BG_IMAGE: return "BgImage";
179             case RSPropertyType::BG_IMAGE_INNER_RECT: return "BgImageInnerRect";
180             case RSPropertyType::BG_IMAGE_WIDTH: return "BgImageWidth";
181             case RSPropertyType::BG_IMAGE_HEIGHT: return "BgImageHeight";
182             case RSPropertyType::BG_IMAGE_POSITION_X: return "BgImagePositionX";
183             case RSPropertyType::BG_IMAGE_POSITION_Y: return "BgImagePositionY";
184             case RSPropertyType::BG_IMAGE_RECT: return "BgImageRect";
185             case RSPropertyType::BORDER_COLOR: return "BorderColor";
186             case RSPropertyType::BORDER_WIDTH: return "BorderWidth";
187             case RSPropertyType::BORDER_STYLE: return "BorderStyle";
188             case RSPropertyType::BORDER_DASH_WIDTH: return "BorderDashWidth";
189             case RSPropertyType::BORDER_DASH_GAP: return "BorderDashGap";
190             case RSPropertyType::BACKGROUND_FILTER: return "BackgroundFilter";
191             case RSPropertyType::LINEAR_GRADIENT_BLUR_PARA: return "LinearGradientBlurPara";
192             case RSPropertyType::DYNAMIC_LIGHT_UP_RATE: return "DynamicLightUpRate";
193             case RSPropertyType::DYNAMIC_LIGHT_UP_DEGREE: return "DynamicLightUpDegree";
194             case RSPropertyType::FG_BRIGHTNESS_RATES: return "FgBrightnessRates";
195             case RSPropertyType::FG_BRIGHTNESS_SATURATION: return "FgBrightnessSaturation";
196             case RSPropertyType::FG_BRIGHTNESS_POSCOEFF: return "FgBrightnessPoscoeff";
197             case RSPropertyType::FG_BRIGHTNESS_NEGCOEFF: return "FgBrightnessNegcoeff";
198             case RSPropertyType::FG_BRIGHTNESS_FRACTION: return "FgBrightnessFraction";
199             case RSPropertyType::FG_BRIGHTNESS_HDR: return "FgBrightnessHdr";
200             case RSPropertyType::BG_BRIGHTNESS_RATES: return "BgBrightnessRates";
201             case RSPropertyType::BG_BRIGHTNESS_SATURATION: return "BgBrightnessSaturation";
202             case RSPropertyType::BG_BRIGHTNESS_POSCOEFF: return "BgBrightnessPoscoeff";
203             case RSPropertyType::BG_BRIGHTNESS_NEGCOEFF: return "BgBrightnessNegcoeff";
204             case RSPropertyType::BG_BRIGHTNESS_FRACTION: return "BgBrightnessFraction";
205             case RSPropertyType::SHADOW_BLENDER_PARAMS: return "ShadowBlenderParams";
206             case RSPropertyType::FRAME_GRAVITY: return "FrameGravity";
207             case RSPropertyType::CLIP_RRECT: return "ClipRrect";
208             case RSPropertyType::CLIP_BOUNDS: return "ClipBounds";
209             case RSPropertyType::CLIP_TO_BOUNDS: return "ClipToBounds";
210             case RSPropertyType::CLIP_TO_FRAME: return "ClipToFrame";
211             case RSPropertyType::VISIBLE: return "Visible";
212             case RSPropertyType::SHADOW_COLOR: return "ShadowColor";
213             case RSPropertyType::SHADOW_OFFSET_X: return "ShadowOffsetX";
214             case RSPropertyType::SHADOW_OFFSET_Y: return "ShadowOffsetY";
215             case RSPropertyType::SHADOW_ALPHA: return "ShadowAlpha";
216             case RSPropertyType::SHADOW_ELEVATION: return "ShadowElevation";
217             case RSPropertyType::SHADOW_RADIUS: return "ShadowRadius";
218             case RSPropertyType::SHADOW_PATH: return "ShadowPath";
219             case RSPropertyType::SHADOW_MASK: return "ShadowMask";
220             case RSPropertyType::SHADOW_COLOR_STRATEGY: return "ShadowColorStrategy";
221             case RSPropertyType::MASK: return "Mask";
222             case RSPropertyType::SPHERIZE: return "Spherize";
223             case RSPropertyType::LIGHT_UP_EFFECT_DEGREE: return "LightUpEffectDegree";
224             case RSPropertyType::PIXEL_STRETCH_SIZE: return "PixelStretchSize";
225             case RSPropertyType::PIXEL_STRETCH_PERCENT: return "PixelStretchPercent";
226             case RSPropertyType::PIXEL_STRETCH_TILE_MODE: return "PixelStretchTileMode";
227             case RSPropertyType::USE_EFFECT: return "UseEffect";
228             case RSPropertyType::USE_EFFECT_TYPE: return "UseEffectType";
229             case RSPropertyType::COLOR_BLEND_MODE: return "ColorBlendMode";
230             case RSPropertyType::COLOR_BLEND_APPLY_TYPE: return "ColorBlendApplyType";
231             case RSPropertyType::SANDBOX: return "Sandbox";
232             case RSPropertyType::GRAY_SCALE: return "GrayScale";
233             case RSPropertyType::BRIGHTNESS: return "Brightness";
234             case RSPropertyType::CONTRAST: return "Contrast";
235             case RSPropertyType::SATURATE: return "Saturate";
236             case RSPropertyType::SEPIA: return "Sepia";
237             case RSPropertyType::INVERT: return "Invert";
238             case RSPropertyType::AIINVERT: return "Aiinvert";
239             case RSPropertyType::SYSTEMBAREFFECT: return "Systembareffect";
240             case RSPropertyType::WATER_RIPPLE_PROGRESS: return "WaterRippleProgress";
241             case RSPropertyType::WATER_RIPPLE_PARAMS: return "WaterRippleParams";
242             case RSPropertyType::HUE_ROTATE: return "HueRotate";
243             case RSPropertyType::COLOR_BLEND: return "ColorBlend";
244             case RSPropertyType::PARTICLE: return "Particle";
245             case RSPropertyType::SHADOW_IS_FILLED: return "ShadowIsFilled";
246             case RSPropertyType::OUTLINE_COLOR: return "OutlineColor";
247             case RSPropertyType::OUTLINE_WIDTH: return "OutlineWidth";
248             case RSPropertyType::OUTLINE_STYLE: return "OutlineStyle";
249             case RSPropertyType::OUTLINE_DASH_WIDTH: return "OutlineDashWidth";
250             case RSPropertyType::OUTLINE_DASH_GAP: return "OutlineDashGap";
251             case RSPropertyType::OUTLINE_RADIUS: return "OutlineRadius";
252             case RSPropertyType::GREY_COEF: return "GreyCoef";
253             case RSPropertyType::LIGHT_INTENSITY: return "LightIntensity";
254             case RSPropertyType::LIGHT_COLOR: return "LightColor";
255             case RSPropertyType::LIGHT_POSITION: return "LightPosition";
256             case RSPropertyType::ILLUMINATED_BORDER_WIDTH: return "IlluminatedBorderWidth";
257             case RSPropertyType::ILLUMINATED_TYPE: return "IlluminatedType";
258             case RSPropertyType::BLOOM: return "Bloom";
259             case RSPropertyType::FOREGROUND_EFFECT_RADIUS: return "ForegroundEffectRadius";
260             case RSPropertyType::USE_SHADOW_BATCHING: return "UseShadowBatching";
261             case RSPropertyType::MOTION_BLUR_PARA: return "MotionBlurPara";
262             case RSPropertyType::PARTICLE_EMITTER_UPDATER: return "ParticleEmitterUpdater";
263             case RSPropertyType::PARTICLE_NOISE_FIELD: return "ParticleNoiseField";
264             case RSPropertyType::FLY_OUT_DEGREE: return "FlyOutDegree";
265             case RSPropertyType::FLY_OUT_PARAMS: return "FlyOutParams";
266             case RSPropertyType::DISTORTION_K: return "DistortionK";
267             case RSPropertyType::DYNAMIC_DIM_DEGREE: return "DynamicDimDegree";
268             case RSPropertyType::MAGNIFIER_PARA: return "MagnifierPara";
269             case RSPropertyType::BACKGROUND_BLUR_RADIUS: return "BackgroundBlurRadius";
270             case RSPropertyType::BACKGROUND_BLUR_SATURATION: return "BackgroundBlurSaturation";
271             case RSPropertyType::BACKGROUND_BLUR_BRIGHTNESS: return "BackgroundBlurBrightness";
272             case RSPropertyType::BACKGROUND_BLUR_MASK_COLOR: return "BackgroundBlurMaskColor";
273             case RSPropertyType::BACKGROUND_BLUR_COLOR_MODE: return "BackgroundBlurColorMode";
274             case RSPropertyType::BACKGROUND_BLUR_RADIUS_X: return "BackgroundBlurRadiusX";
275             case RSPropertyType::BACKGROUND_BLUR_RADIUS_Y: return "BackgroundBlurRadiusY";
276             case RSPropertyType::BG_BLUR_DISABLE_SYSTEM_ADAPTATION: return "BgBlurDisableSystemAdaptation";
277             case RSPropertyType::ALWAYS_SNAPSHOT: return "AlwaysSnapshot";
278             case RSPropertyType::COMPLEX_SHADER_PARAM: return "ComplexShaderParam";
279             case RSPropertyType::FOREGROUND_BLUR_RADIUS: return "ForegroundBlurRadius";
280             case RSPropertyType::FOREGROUND_BLUR_SATURATION: return "ForegroundBlurSaturation";
281             case RSPropertyType::FOREGROUND_BLUR_BRIGHTNESS: return "ForegroundBlurBrightness";
282             case RSPropertyType::FOREGROUND_BLUR_MASK_COLOR: return "ForegroundBlurMaskColor";
283             case RSPropertyType::FOREGROUND_BLUR_COLOR_MODE: return "ForegroundBlurColorMode";
284             case RSPropertyType::FOREGROUND_BLUR_RADIUS_X: return "ForegroundBlurRadiusX";
285             case RSPropertyType::FOREGROUND_BLUR_RADIUS_Y: return "ForegroundBlurRadiusY";
286             case RSPropertyType::FG_BLUR_DISABLE_SYSTEM_ADAPTATION: return "FgBlurDisableSystemAdaptation";
287             case RSPropertyType::ATTRACTION_FRACTION: return "AttractionFraction";
288             case RSPropertyType::ATTRACTION_DSTPOINT: return "AttractionDstpoint";
289             case RSPropertyType::CUSTOM: return "Custom";
290             case RSPropertyType::CUSTOM_INDEX: return "CustomIndex";
291             case RSPropertyType::TRANSITION_STYLE: return "TransitionStyle";
292             case RSPropertyType::BACKGROUND_STYLE: return "BackgroundStyle";
293             case RSPropertyType::CONTENT_STYLE: return "ContentStyle";
294             case RSPropertyType::FOREGROUND_STYLE: return "ForegroundStyle";
295             case RSPropertyType::OVERLAY_STYLE: return "OverlayStyle";
296             case RSPropertyType::NODE_MODIFIER: return "NodeModifier";
297             case RSPropertyType::ENV_FOREGROUND_COLOR: return "EnvForegroundColor";
298             case RSPropertyType::ENV_FOREGROUND_COLOR_STRATEGY: return "EnvForegroundColorStrategy";
299             case RSPropertyType::CUSTOM_CLIP_TO_FRAME: return "CustomClipToFrame";
300             case RSPropertyType::HDR_BRIGHTNESS: return "HdrBrightness";
301             case RSPropertyType::HDR_UI_BRIGHTNESS: return "HDRUIBrightness";
302             case RSPropertyType::HDR_BRIGHTNESS_FACTOR: return "HdrBrightnessFactor";
303             case RSPropertyType::BEHIND_WINDOW_FILTER_RADIUS: return "BehindWindowFilterRadius";
304             case RSPropertyType::BEHIND_WINDOW_FILTER_SATURATION: return "BehindWindowFilterSaturation";
305             case RSPropertyType::BEHIND_WINDOW_FILTER_BRIGHTNESS: return "BehindWindowFilterBrightness";
306             case RSPropertyType::BEHIND_WINDOW_FILTER_MASK_COLOR: return "BehindWindowFilterMaskColor";
307             case RSPropertyType::FOREGROUND_SHADER: return "ForegroundShader";
308             case RSPropertyType::CHILDREN: return "Children";
309             default: return "Unknown";
310         }
311         return "Unknown";
312     }
313 };
314 
315 static constexpr uint16_t MODIFIER_TYPE_COUNT = static_cast<uint16_t>(RSModifierType::MAX);
316 using ModifierDirtyTypes = std::bitset<static_cast<int>(MODIFIER_TYPE_COUNT)>;
317 } // namespace OHOS::Rosen::ModifierNG
318 #endif // RENDER_SERVICE_BASE_MODIFIER_NG_RS_MODIFIER_NG_TYPE_H
319