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