• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022 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_CLIENT_CORE_ANIMATION_RS_MODIFIER_TYPE_H
17 #define RENDER_SERVICE_CLIENT_CORE_ANIMATION_RS_MODIFIER_TYPE_H
18 
19 #include <bitset>
20 #include <cstdint>
21 #include <map>
22 
23 namespace OHOS {
24 namespace Rosen {
25 // NOTE:
26 // 1. Following LUTs must be updated according when this enum is updated :
27 //    a. g_propertyResetterLUT in rs_properties.cpp
28 //    b. g_propertyToDrawableLut in rs_drawable_content.cpp
29 // 2. Property modifier(i.e. to be applied to RSProperties) MUST be added before CUSTOM enum, elsewise it will not work
30 enum class RSModifierType : int16_t {
31     INVALID = 0,
32     BOUNDS,
33     FRAME,
34     POSITION_Z,
35     POSITION_Z_APPLICABLE_CAMERA3D,
36     PIVOT,
37     PIVOT_Z,
38     QUATERNION,
39     ROTATION,
40     ROTATION_X,
41     ROTATION_Y,
42     CAMERA_DISTANCE,
43     SCALE,
44     SCALE_Z,
45     SKEW,
46     PERSP,
47     TRANSLATE,
48     TRANSLATE_Z,
49     SUBLAYER_TRANSFORM,
50     CORNER_RADIUS,
51     ALPHA,
52     ALPHA_OFFSCREEN,
53     FOREGROUND_COLOR,
54     BACKGROUND_COLOR,
55     BACKGROUND_SHADER,
56     BACKGROUND_SHADER_PROGRESS,
57     BG_IMAGE,
58     BG_IMAGE_INNER_RECT,
59     BG_IMAGE_WIDTH,
60     BG_IMAGE_HEIGHT,
61     BG_IMAGE_POSITION_X,
62     BG_IMAGE_POSITION_Y,
63     SURFACE_BG_COLOR,
64     BORDER_COLOR,
65     BORDER_WIDTH,
66     BORDER_STYLE,
67     BORDER_DASH_WIDTH,
68     BORDER_DASH_GAP,
69     FILTER,
70     BACKGROUND_FILTER,
71     LINEAR_GRADIENT_BLUR_PARA,
72     DYNAMIC_LIGHT_UP_RATE,
73     DYNAMIC_LIGHT_UP_DEGREE,
74     FG_BRIGHTNESS_RATES,
75     FG_BRIGHTNESS_SATURATION,
76     FG_BRIGHTNESS_POSCOEFF,
77     FG_BRIGHTNESS_NEGCOEFF,
78     FG_BRIGHTNESS_FRACTION,
79     BG_BRIGHTNESS_RATES,
80     BG_BRIGHTNESS_SATURATION,
81     BG_BRIGHTNESS_POSCOEFF,
82     BG_BRIGHTNESS_NEGCOEFF,
83     BG_BRIGHTNESS_FRACTION,
84     FRAME_GRAVITY,
85     CLIP_RRECT,
86     CLIP_BOUNDS,
87     CLIP_TO_BOUNDS,
88     CLIP_TO_FRAME,
89     VISIBLE,
90     SHADOW_COLOR,
91     SHADOW_OFFSET_X,
92     SHADOW_OFFSET_Y,
93     SHADOW_ALPHA,
94     SHADOW_ELEVATION,
95     SHADOW_RADIUS,
96     SHADOW_PATH,
97     SHADOW_MASK,
98     SHADOW_COLOR_STRATEGY,
99     MASK,
100     SPHERIZE,
101     LIGHT_UP_EFFECT,
102     PIXEL_STRETCH,
103     PIXEL_STRETCH_PERCENT,
104     PIXEL_STRETCH_TILE_MODE,
105     USE_EFFECT,
106     USE_EFFECT_TYPE,
107     COLOR_BLEND_MODE,
108     COLOR_BLEND_APPLY_TYPE,
109     SANDBOX,
110     GRAY_SCALE,
111     BRIGHTNESS,
112     CONTRAST,
113     SATURATE,
114     SEPIA,
115     INVERT,
116     AIINVERT,
117     SYSTEMBAREFFECT,
118     WATER_RIPPLE_PROGRESS,
119     WATER_RIPPLE_PARAMS,
120     HUE_ROTATE,
121     COLOR_BLEND,
122     PARTICLE,
123     SHADOW_IS_FILLED,
124     OUTLINE_COLOR,
125     OUTLINE_WIDTH,
126     OUTLINE_STYLE,
127     OUTLINE_DASH_WIDTH,
128     OUTLINE_DASH_GAP,
129     OUTLINE_RADIUS,
130     GREY_COEF,
131     LIGHT_INTENSITY,
132     LIGHT_COLOR,
133     LIGHT_POSITION,
134     ILLUMINATED_BORDER_WIDTH,
135     ILLUMINATED_TYPE,
136     BLOOM,
137     FOREGROUND_EFFECT_RADIUS,
138     USE_SHADOW_BATCHING,
139     MOTION_BLUR_PARA,
140     PARTICLE_EMITTER_UPDATER,
141     PARTICLE_NOISE_FIELD,
142     FLY_OUT_DEGREE,
143     FLY_OUT_PARAMS,
144     DISTORTION_K,
145     DYNAMIC_DIM_DEGREE,
146     MAGNIFIER_PARA,
147     BACKGROUND_BLUR_RADIUS,
148     BACKGROUND_BLUR_SATURATION,
149     BACKGROUND_BLUR_BRIGHTNESS,
150     BACKGROUND_BLUR_MASK_COLOR,
151     BACKGROUND_BLUR_COLOR_MODE,
152     BACKGROUND_BLUR_RADIUS_X,
153     BACKGROUND_BLUR_RADIUS_Y,
154     FOREGROUND_BLUR_RADIUS,
155     FOREGROUND_BLUR_SATURATION,
156     FOREGROUND_BLUR_BRIGHTNESS,
157     FOREGROUND_BLUR_MASK_COLOR,
158     FOREGROUND_BLUR_COLOR_MODE,
159     FOREGROUND_BLUR_RADIUS_X,
160     FOREGROUND_BLUR_RADIUS_Y,
161     ATTRACTION_FRACTION,
162     ATTRACTION_DSTPOINT,
163     CUSTOM,
164     EXTENDED,
165     TRANSITION,
166     BACKGROUND_STYLE,
167     CONTENT_STYLE,
168     FOREGROUND_STYLE,
169     OVERLAY_STYLE,
170     NODE_MODIFIER,
171     ENV_FOREGROUND_COLOR,
172     ENV_FOREGROUND_COLOR_STRATEGY,
173     GEOMETRYTRANS,
174     CUSTOM_CLIP_TO_FRAME,
175     HDR_BRIGHTNESS,
176     BEHIND_WINDOW_FILTER_ENABLED,
177     BEHIND_WINDOW_FILTER_RADIUS,
178     BEHIND_WINDOW_FILTER_SATURATION,
179     BEHIND_WINDOW_FILTER_BRIGHTNESS,
180     BEHIND_WINDOW_FILTER_MASK_COLOR,
181     CHILDREN, // PLACEHOLDER, no such modifier, but we need a dirty flag
182     MAX_RS_MODIFIER_TYPE,
183 };
184 
185 enum class RSPropertyModifierType : uint8_t {
186     GEOMETRY = 0,
187     BACKGROUND,
188     CONTENT,
189     FOREGROUND,
190     OVERLAY,
191     APPEARANCE,
192     CUSTOM,
193 };
194 
195 using ModifierDirtyTypes = std::bitset<static_cast<int>(RSModifierType::MAX_RS_MODIFIER_TYPE)>;
196 
197 enum class RSRenderPropertyType : int16_t {
198     INVALID = 0,
199     PROPERTY_FLOAT,
200     PROPERTY_COLOR,
201     PROPERTY_MATRIX3F,
202     PROPERTY_QUATERNION,
203     PROPERTY_FILTER,
204     PROPERTY_VECTOR2F,
205     PROPERTY_VECTOR3F,
206     PROPERTY_VECTOR4F,
207     PROPERTY_VECTOR4_COLOR,
208     PROPERTY_SKMATRIX,
209     PROPERTY_RRECT,
210 };
211 
212 enum class RSPropertyUnit : int16_t {
213     UNKNOWN = 0,
214     PIXEL_POSITION,
215     PIXEL_SIZE,
216     RATIO_SCALE,
217     ANGLE_ROTATION,
218 };
219 
220 class RSModifierTypeString {
221 public:
GetModifierTypeString(RSModifierType type)222     std::string GetModifierTypeString(RSModifierType type) const
223     {
224         switch (type) {
225             case RSModifierType::INVALID: return "Invalid";
226             case RSModifierType::BOUNDS: return "Bounds";
227             case RSModifierType::FRAME: return "Frame";
228             case RSModifierType::POSITION_Z: return "PositionZ";
229             case RSModifierType::POSITION_Z_APPLICABLE_CAMERA3D: return "PositionZApplicableCamera3D";
230             case RSModifierType::PIVOT: return "Pivot";
231             case RSModifierType::PIVOT_Z: return "PivotZ";
232             case RSModifierType::QUATERNION: return "Quaternion";
233             case RSModifierType::ROTATION: return "Rotation";
234             case RSModifierType::ROTATION_X: return "RotationX";
235             case RSModifierType::ROTATION_Y: return "RotationY";
236             case RSModifierType::CAMERA_DISTANCE: return "CameraDistance";
237             case RSModifierType::SCALE: return "Scale";
238             case RSModifierType::SCALE_Z: return "ScaleZ";
239             case RSModifierType::SKEW: return "Skew";
240             case RSModifierType::PERSP: return "Persp";
241             case RSModifierType::TRANSLATE: return "Translate";
242             case RSModifierType::TRANSLATE_Z: return "TranslateZ";
243             case RSModifierType::SUBLAYER_TRANSFORM: return "SublayerTransform";
244             case RSModifierType::CORNER_RADIUS: return "CornerRadius";
245             case RSModifierType::ALPHA: return "Alpha";
246             case RSModifierType::ALPHA_OFFSCREEN: return "AlphaOffscreen";
247             case RSModifierType::FOREGROUND_COLOR: return "ForegroundColor";
248             case RSModifierType::BACKGROUND_COLOR: return "BackgroundColor";
249             case RSModifierType::BACKGROUND_SHADER: return "BackgroundShader";
250             case RSModifierType::BACKGROUND_SHADER_PROGRESS: return "BackgroundShaderProgress";
251             case RSModifierType::BG_IMAGE: return "BgImage";
252             case RSModifierType::BG_IMAGE_INNER_RECT: return "BgImageInnerRect";
253             case RSModifierType::BG_IMAGE_WIDTH: return "BgImageWidth";
254             case RSModifierType::BG_IMAGE_HEIGHT: return "BgImageHeight";
255             case RSModifierType::BG_IMAGE_POSITION_X: return "BgImagePositionX";
256             case RSModifierType::BG_IMAGE_POSITION_Y: return "BgImagePositionY";
257             case RSModifierType::SURFACE_BG_COLOR: return "SurfaceBgColor";
258             case RSModifierType::BORDER_COLOR: return "BorderColor";
259             case RSModifierType::BORDER_WIDTH: return "BorderWidth";
260             case RSModifierType::BORDER_STYLE: return "BorderStyle";
261             case RSModifierType::BORDER_DASH_WIDTH: return "BorderDashWidth";
262             case RSModifierType::BORDER_DASH_GAP: return "BorderDashGap";
263             case RSModifierType::FILTER: return "Filter";
264             case RSModifierType::BACKGROUND_FILTER: return "BackgroundFilter";
265             case RSModifierType::LINEAR_GRADIENT_BLUR_PARA: return "LinearGradientBlurPara";
266             case RSModifierType::DYNAMIC_LIGHT_UP_RATE: return "DynamicLightUpRate";
267             case RSModifierType::DYNAMIC_LIGHT_UP_DEGREE: return "DynamicLightUpDegree";
268             case RSModifierType::FG_BRIGHTNESS_RATES: return "FgBrightnessRates";
269             case RSModifierType::FG_BRIGHTNESS_SATURATION: return "FgBrightnessSaturation";
270             case RSModifierType::FG_BRIGHTNESS_POSCOEFF: return "FgBrightnessPoscoeff";
271             case RSModifierType::FG_BRIGHTNESS_NEGCOEFF: return "FgBrightnessNegcoeff";
272             case RSModifierType::FG_BRIGHTNESS_FRACTION: return "FgBrightnessFraction";
273             case RSModifierType::BG_BRIGHTNESS_RATES: return "BgBrightnessRates";
274             case RSModifierType::BG_BRIGHTNESS_SATURATION: return "BgBrightnessSaturation";
275             case RSModifierType::BG_BRIGHTNESS_POSCOEFF: return "BgBrightnessPoscoeff";
276             case RSModifierType::BG_BRIGHTNESS_NEGCOEFF: return "BgBrightnessNegcoeff";
277             case RSModifierType::BG_BRIGHTNESS_FRACTION: return "BgBrightnessFraction";
278             case RSModifierType::FRAME_GRAVITY: return "FrameGravity";
279             case RSModifierType::CLIP_RRECT: return "ClipRrect";
280             case RSModifierType::CLIP_BOUNDS: return "ClipBounds";
281             case RSModifierType::CLIP_TO_BOUNDS: return "ClipToBounds";
282             case RSModifierType::CLIP_TO_FRAME: return "ClipToFrame";
283             case RSModifierType::VISIBLE: return "Visible";
284             case RSModifierType::SHADOW_COLOR: return "ShadowColor";
285             case RSModifierType::SHADOW_OFFSET_X: return "ShadowOffsetX";
286             case RSModifierType::SHADOW_OFFSET_Y: return "ShadowOffsetY";
287             case RSModifierType::SHADOW_ALPHA: return "ShadowAlpha";
288             case RSModifierType::SHADOW_ELEVATION: return "ShadowElevation";
289             case RSModifierType::SHADOW_RADIUS: return "ShadowRadius";
290             case RSModifierType::SHADOW_PATH: return "ShadowPath";
291             case RSModifierType::SHADOW_MASK: return "ShadowMask";
292             case RSModifierType::SHADOW_COLOR_STRATEGY: return "ShadowColorStrategy";
293             case RSModifierType::MASK: return "Mask";
294             case RSModifierType::SPHERIZE: return "Spherize";
295             case RSModifierType::LIGHT_UP_EFFECT: return "LightUpEffect";
296             case RSModifierType::PIXEL_STRETCH: return "PixelStretch";
297             case RSModifierType::PIXEL_STRETCH_PERCENT: return "PixelStretchPercent";
298             case RSModifierType::PIXEL_STRETCH_TILE_MODE: return "PixelStretchTileMode";
299             case RSModifierType::USE_EFFECT: return "UseEffect";
300             case RSModifierType::USE_EFFECT_TYPE: return "UseEffectType";
301             case RSModifierType::COLOR_BLEND_MODE: return "ColorBlendMode";
302             case RSModifierType::COLOR_BLEND_APPLY_TYPE: return "ColorBlendApplyType";
303             case RSModifierType::SANDBOX: return "Sandbox";
304             case RSModifierType::GRAY_SCALE: return "GrayScale";
305             case RSModifierType::BRIGHTNESS: return "Brightness";
306             case RSModifierType::CONTRAST: return "Contrast";
307             case RSModifierType::SATURATE: return "Saturate";
308             case RSModifierType::SEPIA: return "Sepia";
309             case RSModifierType::INVERT: return "Invert";
310             case RSModifierType::AIINVERT: return "Aiinvert";
311             case RSModifierType::SYSTEMBAREFFECT: return "Systembareffect";
312             case RSModifierType::HUE_ROTATE: return "HueRotate";
313             case RSModifierType::COLOR_BLEND: return "ColorBlend";
314             case RSModifierType::PARTICLE: return "Particle";
315             case RSModifierType::SHADOW_IS_FILLED: return "ShadowIsFilled";
316             case RSModifierType::OUTLINE_COLOR: return "OutlineColor";
317             case RSModifierType::OUTLINE_WIDTH: return "OutlineWidth";
318             case RSModifierType::OUTLINE_STYLE: return "OutlineStyle";
319             case RSModifierType::OUTLINE_DASH_WIDTH: return "OutlineDashWidth";
320             case RSModifierType::OUTLINE_DASH_GAP: return "OutlineDashGap";
321             case RSModifierType::OUTLINE_RADIUS: return "OutlineRadius";
322             case RSModifierType::GREY_COEF: return "GreyCoef";
323             case RSModifierType::LIGHT_INTENSITY: return "LightIntensity";
324             case RSModifierType::LIGHT_COLOR: return "LightColor";
325             case RSModifierType::LIGHT_POSITION: return "LightPosition";
326             case RSModifierType::ILLUMINATED_BORDER_WIDTH: return "IlluminatedBorderWidth";
327             case RSModifierType::ILLUMINATED_TYPE: return "IlluminatedType";
328             case RSModifierType::BLOOM: return "Bloom";
329             case RSModifierType::FOREGROUND_EFFECT_RADIUS: return "ForegroundEffectRadius";
330             case RSModifierType::USE_SHADOW_BATCHING: return "UseShadowBatching";
331             case RSModifierType::MOTION_BLUR_PARA: return "MotionBlurPara";
332             case RSModifierType::PARTICLE_EMITTER_UPDATER: return "ParticleEmitterUpdater";
333             case RSModifierType::PARTICLE_NOISE_FIELD: return "ParticleNoiseField";
334             case RSModifierType::DYNAMIC_DIM_DEGREE: return "DynamicDimDegree";
335             case RSModifierType::MAGNIFIER_PARA: return "MagnifierPara";
336             case RSModifierType::BACKGROUND_BLUR_RADIUS: return "BackgroundBlurRadius";
337             case RSModifierType::BACKGROUND_BLUR_SATURATION: return "BackgroundBlurSaturation";
338             case RSModifierType::BACKGROUND_BLUR_BRIGHTNESS: return "BackgroundBlurBrightness";
339             case RSModifierType::BACKGROUND_BLUR_MASK_COLOR: return "BackgroundBlurMaskColor";
340             case RSModifierType::BACKGROUND_BLUR_COLOR_MODE: return "BackgroundBlurColorMode";
341             case RSModifierType::BACKGROUND_BLUR_RADIUS_X: return "BackgroundBlurRadiusX";
342             case RSModifierType::BACKGROUND_BLUR_RADIUS_Y: return "BackgroundBlurRadiusY";
343             case RSModifierType::FOREGROUND_BLUR_RADIUS: return "ForegroundBlurRadius";
344             case RSModifierType::FOREGROUND_BLUR_SATURATION: return "ForegroundBlurSaturation";
345             case RSModifierType::FOREGROUND_BLUR_BRIGHTNESS: return "ForegroundBlurBrightness";
346             case RSModifierType::FOREGROUND_BLUR_MASK_COLOR: return "ForegroundBlurMaskColor";
347             case RSModifierType::FOREGROUND_BLUR_COLOR_MODE: return "ForegroundBlurColorMode";
348             case RSModifierType::FOREGROUND_BLUR_RADIUS_X: return "ForegroundBlurRadiusX";
349             case RSModifierType::FOREGROUND_BLUR_RADIUS_Y: return "ForegroundBlurRadiusY";
350             case RSModifierType::CUSTOM: return "Custom";
351             case RSModifierType::EXTENDED: return "Extended";
352             case RSModifierType::TRANSITION: return "Transition";
353             case RSModifierType::BACKGROUND_STYLE: return "BackgroundStyle";
354             case RSModifierType::CONTENT_STYLE: return "ContentStyle";
355             case RSModifierType::FOREGROUND_STYLE: return "ForegroundStyle";
356             case RSModifierType::OVERLAY_STYLE: return "OverlayStyle";
357             case RSModifierType::NODE_MODIFIER: return "NodeModifier";
358             case RSModifierType::ENV_FOREGROUND_COLOR: return "EnvForegroundColor";
359             case RSModifierType::ENV_FOREGROUND_COLOR_STRATEGY: return "EnvForegroundColorStrategy";
360             case RSModifierType::GEOMETRYTRANS: return "Geometrytrans";
361             case RSModifierType::CUSTOM_CLIP_TO_FRAME: return "CustomClipToFrame";
362             case RSModifierType::HDR_BRIGHTNESS: return "HDRBrightness";
363             case RSModifierType::BEHIND_WINDOW_FILTER_ENABLED: return "BehindWindowFilterEnabled";
364             case RSModifierType::BEHIND_WINDOW_FILTER_RADIUS: return "BehindWindowFilterRadius";
365             case RSModifierType::BEHIND_WINDOW_FILTER_SATURATION: return "BehindWindowFilterSaturation";
366             case RSModifierType::BEHIND_WINDOW_FILTER_BRIGHTNESS: return "BehindWindowFilterBrightness";
367             case RSModifierType::BEHIND_WINDOW_FILTER_MASK_COLOR: return "BehindWindowFilterMaskColor";
368             case RSModifierType::CHILDREN: return "Children";
369             case RSModifierType::MAX_RS_MODIFIER_TYPE: return "MaxRsModifierType";
370             default:
371                 return "UNKNOWN";
372         }
373         return "UNKNOWN";
374     }
375 };
376 
377 } // namespace Rosen
378 } // namespace OHOS
379 
380 #endif // RENDER_SERVICE_CLIENT_CORE_ANIMATION_RS_MODIFIER_TYPE_H
381