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