1 /* 2 * Copyright (c) 2022-2023 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 FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PAINTS_ADAPTER_ROSEN_RENDER_CONTEXT_H 17 #define FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PAINTS_ADAPTER_ROSEN_RENDER_CONTEXT_H 18 19 #include <cstdint> 20 #include <memory> 21 #include <optional> 22 #include <utility> 23 24 #include "include/core/SkCanvas.h" 25 #include "include/core/SkPictureRecorder.h" 26 #include "include/core/SkRefCnt.h" 27 #include "render_service_client/core/animation/rs_particle_params.h" 28 #include "render_service_client/core/modifier_ng/appearance/rs_alpha_modifier.h" 29 #include "render_service_client/core/modifier_ng/appearance/rs_behind_window_filter_modifier.h" 30 #include "render_service_client/core/modifier_ng/appearance/rs_mask_modifier.h" 31 #include "render_service_client/core/modifier_ng/geometry/rs_bounds_clip_modifier.h" 32 #include "render_service_client/core/modifier_ng/geometry/rs_frame_clip_modifier.h" 33 #include "render_service_client/core/modifier_ng/geometry/rs_transform_modifier.h" 34 #include "render_service_client/core/ui/rs_canvas_node.h" 35 #include "render_service_client/core/ui/rs_node.h" 36 #include "render_service_client/core/ui/rs_texture_export.h" 37 #include "render_service_client/core/ui/rs_ui_context.h" 38 39 #include "base/geometry/dimension_offset.h" 40 #include "base/geometry/ng/offset_t.h" 41 #include "base/geometry/ng/rect_t.h" 42 #include "base/utils/noncopyable.h" 43 #include "core/components/common/layout/position_param.h" 44 #include "core/components/common/properties/color.h" 45 #include "core/components_ng/event/event_hub.h" 46 #include "core/components_ng/image_provider/image_loading_context.h" 47 #include "core/components_ng/property/measure_property.h" 48 #include "core/components_ng/property/progress_mask_property.h" 49 #include "core/components_ng/render/adapter/focus_animation_modifier.h" 50 #include "core/components_ng/render/adapter/graphic_modifier.h" 51 #include "core/components_ng/render/adapter/moon_progress_modifier.h" 52 #include "core/components_ng/render/adapter/rosen_transition_effect.h" 53 #include "core/components_ng/render/render_context.h" 54 55 namespace OHOS::Ace::NG { 56 class BackgroundModifier; 57 class TransitionModifier; 58 class BorderImageModifier; 59 class DebugBoundaryModifier; 60 class MouseSelectModifier; 61 class FocusStateModifier; 62 class PageTransitionEffect; 63 class OverlayTextModifier; 64 class GradientStyleModifier; 65 class PipelineContext; 66 class RosenRenderContext : public RenderContext { 67 DECLARE_ACE_TYPE(RosenRenderContext, NG::RenderContext); 68 public: 69 RosenRenderContext() = default; 70 ~RosenRenderContext() override; 71 72 void SetSurfaceChangedCallBack(const std::function<void(float, float, float, float)>& callback) override; 73 74 void RemoveSurfaceChangedCallBack() override; 75 76 void MarkNewFrameAvailable(void* nativeWindow) override; 77 void AddAttachCallBack(const std::function<void(int64_t, bool)>& attachCallback) override; 78 void AddUpdateCallBack(const std::function<void(std::vector<float>&)>& updateCallback) override; 79 void AddInitTypeCallBack(const std::function<void(int32_t&)>& initTypeCallback) override; 80 81 void InitContext(bool isRoot, const std::optional<ContextParam>& param) override; 82 83 void InitContext(bool isRoot, const std::optional<ContextParam>& param, bool isLayoutNode) override; 84 85 void SyncGeometryFrame(const RectF& paintRect); 86 87 void SyncGeometryProperties(GeometryNode* geometryNode, bool isRound = true, uint8_t flag = 0) override; 88 89 void SyncGeometryProperties(const RectF& paintRect) override; 90 91 void SetBorderRadius(const BorderRadiusProperty& value) override; 92 93 void SetBorderStyle(const BorderStyleProperty& value) override; 94 95 void SetBorderColor(const BorderColorProperty& value) override; 96 97 void SetBorderWidth(const BorderWidthProperty& value) override; 98 99 void SetDashGap(const BorderWidthProperty& value) override; 100 101 void SetDashWidth(const BorderWidthProperty& value) override; 102 103 void SetOuterBorderRadius(const BorderRadiusProperty& value) override; 104 105 void SetOuterBorderStyle(const BorderStyleProperty& value) override; 106 107 void SetOuterBorderColor(const BorderColorProperty& value) override; 108 109 void SetOuterBorderWidth(const BorderWidthProperty& value) override; 110 111 void SetExtraOffset(const std::optional<OffsetF>& offset) override; 112 113 void SetSandBox(const std::optional<OffsetF>& parentPosition, bool force = false) override; 114 HasSandBox()115 bool HasSandBox() const override 116 { 117 return sandBoxCount_ > 0; 118 } 119 GetAnimationsCount()120 size_t GetAnimationsCount() const override 121 { 122 if (rsNode_) { 123 return rsNode_->GetAnimationsCount(); 124 } 125 return 0; 126 } 127 128 void SetFrameWithoutAnimation(const RectF& paintRect) override; 129 130 void RebuildFrame(FrameNode* self, const std::list<RefPtr<FrameNode>>& children) override; 131 132 void AddFrameChildren(FrameNode* self, const std::list<RefPtr<FrameNode>>& children) override; 133 134 void RemoveFrameChildren(FrameNode* self, const std::list<RefPtr<FrameNode>>& children) override; 135 136 void MoveFrame(FrameNode* self, const RefPtr<FrameNode>& child, int32_t index) override; 137 138 void OnModifyDone() override; 139 140 void ResetBlendBgColor() override; 141 142 void BlendBgColor(const Color& color) override; 143 144 void ResetBlendBorderColor() override; 145 146 void BlendBorderColor(const Color& color) override; 147 148 // Paint focus state by component's setting. It will paint along the paintRect 149 void PaintFocusState(const RoundRect& paintRect, const Color& paintColor, const Dimension& paintWidth, 150 bool isAccessibilityFocus = false, bool isFocusBoxGlow = false) override; 151 // Paint focus state by component's setting. It will paint along the frameRect(padding: focusPaddingVp) 152 void PaintFocusState(const RoundRect& paintRect, const Dimension& focusPaddingVp, const Color& paintColor, 153 const Dimension& paintWidth, const PaintFocusExtraInfo& paintFocusExtraInfo) override; 154 // Paint focus state by default. It will paint along the component rect(padding: focusPaddingVp) 155 void PaintFocusState(const Dimension& focusPaddingVp, const Color& paintColor, const Dimension& paintWidth, 156 bool isFocusBoxGlow = false) override; 157 158 void ClearFocusState() override; 159 160 const std::shared_ptr<Rosen::RSNode>& GetRSNode(); 161 162 void SetRSNode(const std::shared_ptr<Rosen::RSNode>& rsNode); 163 GetNodeId()164 uint64_t GetNodeId() const override 165 { 166 CHECK_NULL_RETURN(rsNode_, 0); 167 return static_cast<uint64_t>(rsNode_->GetId()); 168 } 169 170 void StartRecording() override; 171 172 void StopRecordingIfNeeded() override; 173 SetDrawContentAtLast(bool useDrawContentLastOrder)174 void SetDrawContentAtLast(bool useDrawContentLastOrder) override 175 { 176 CHECK_NULL_VOID(rsNode_); 177 rsNode_->SetPaintOrder(useDrawContentLastOrder); 178 } 179 SetClipToFrame(bool useClip)180 void SetClipToFrame(bool useClip) override 181 { 182 CHECK_NULL_VOID(rsNode_); 183 rsNode_->SetClipToFrame(useClip); 184 } 185 SetClipToBounds(bool useClip)186 void SetClipToBounds(bool useClip) override 187 { 188 CHECK_NULL_VOID(rsNode_); 189 rsNode_->SetClipToBounds(useClip); 190 } 191 SetVisible(bool visible)192 void SetVisible(bool visible) override 193 { 194 CHECK_NULL_VOID(rsNode_); 195 rsNode_->SetVisible(visible); 196 } 197 198 template<typename ModifierName, auto Setter, typename T> 199 void AddOrUpdateModifier(std::shared_ptr<ModifierName>& modifier, const T& value); 200 201 void FlushContentDrawFunction(CanvasDrawFunction&& contentDraw) override; 202 203 void FlushForegroundDrawFunction(CanvasDrawFunction&& foregroundDraw) override; 204 205 void FlushOverlayDrawFunction(CanvasDrawFunction&& overlayDraw) override; 206 207 void AnimateHoverEffectScale(bool isHovered) override; 208 void AnimateHoverEffectBoard(bool isHovered) override; 209 void AnimateHoverEffectScaleMultiThread(bool isHovered); 210 void AnimateHoverEffectBoardMultiThread(bool isHovered); 211 void UpdateBackBlurRadius(const Dimension& radius) override; 212 void UpdateBackBlurStyle( 213 const std::optional<BlurStyleOption>& bgBlurStyle, const SysOptions& sysOptions = SysOptions()) override; 214 void UpdateBackgroundEffect( 215 const std::optional<EffectOption>& effectOption, const SysOptions& sysOptions = SysOptions()) override; 216 void UpdateMotionBlur(const MotionBlurOption& motionBlurOption) override; 217 void UpdateBackBlur( 218 const Dimension& radius, const BlurOption& blurOption, const SysOptions& sysOptions = SysOptions()) override; 219 void UpdateNodeBackBlur(const Dimension& radius, const BlurOption& blurOption) override; 220 void UpdateFrontBlur( 221 const Dimension& radius, const BlurOption& blurOption, const SysOptions& sysOptions = SysOptions()) override; 222 void UpdateFrontBlurRadius(const Dimension& radius) override; 223 void UpdateFrontBlurStyle( 224 const std::optional<BlurStyleOption>& fgBlurStyle, const SysOptions& sysOptions = SysOptions()) override; 225 void OnForegroundEffectUpdate(float radius) override; 226 void ResetBackBlurStyle() override; 227 void OnSphericalEffectUpdate(double radio) override; 228 void OnPixelStretchEffectUpdate(const PixStretchEffectOption& option) override; 229 void OnLightUpEffectUpdate(double radio) override; 230 void OnParticleOptionArrayUpdate(const std::list<ParticleOption>& optionList) override; 231 void OnClickEffectLevelUpdate(const ClickEffectInfo& info) override; 232 233 void UpdateVisualEffect(const OHOS::Rosen::VisualEffect* visualEffect) override; 234 void UpdateBackgroundFilter(const OHOS::Rosen::Filter* backgroundFilter) override; 235 void UpdateForegroundFilter(const OHOS::Rosen::Filter* foregroundFilter) override; 236 void UpdateCompositingFilter(const OHOS::Rosen::Filter* compositingFilter) override; 237 void UpdateBlender(const OHOS::Rosen::Blender* blender) override; 238 239 Rosen::SHADOW_COLOR_STRATEGY ToShadowColorStrategy(ShadowColorStrategy shadowColorStrategy); 240 void OnBackShadowUpdate(const Shadow& shadow) override; 241 void OnBackBlendModeUpdate(BlendMode blendMode) override; 242 void OnBackBlendApplyTypeUpdate(BlendApplyType applyType) override; 243 void UpdateBorderWidthF(const BorderWidthPropertyF& value) override; 244 245 void OnTransformMatrixUpdate(const Matrix4& matrix) override; 246 void OnTransform3DMatrixUpdate(const Matrix4& matrix) override; 247 248 void UpdateTransition(const TransitionOptions& options) override; 249 void CleanTransition() override; 250 void UpdateChainedTransition(const RefPtr<NG::ChainedTransitionEffect>& effect) override; HasAppearingTransition()251 bool HasAppearingTransition() const 252 { 253 return propTransitionAppearing_ != nullptr; 254 } HasDisappearingTransition()255 bool HasDisappearingTransition() const 256 { 257 return propTransitionDisappearing_ != nullptr; 258 } 259 void ClearModifiers(); 260 void OnNodeAppear(bool recursive) override; 261 void OnNodeDisappear(bool recursive) override; 262 void SetTransitionOutCallback(std::function<void()>&& callback) override; 263 void SetTransitionInCallback(std::function<void()>&& callback) override; 264 void SetTransitionUserCallback(TransitionFinishCallback&& callback) override; 265 void ClipWithRect(const RectF& rectF) override; 266 void ClipWithRRect(const RectF& rectF, const RadiusF& radiusF) override; 267 void ClipWithRoundRect(const RoundRect& roundRect) override; 268 void ClipWithOval(const RectF& rectF) override; 269 void ClipWithCircle(const Circle& circle) override; 270 void RemoveClipWithRRect() override; 271 void UpdateWindowFocusState(bool isFocused) override; 272 void UpdateWindowActiveState(bool isActive) override; 273 void SetContentClip(const std::variant<RectF, RefPtr<ShapeRect>>& rect) override; 274 void ResetContentClip() override; 275 276 void SetSharedTranslate(float xTranslate, float yTranslate) override; 277 void ResetSharedTranslate() override; 278 279 static std::vector<std::shared_ptr<Rosen::RSNode>> GetChildrenRSNodes( 280 const std::list<RefPtr<FrameNode>>& frameChildren, std::unordered_map<Rosen::RSNode::SharedPtr, bool>& nodeMap); 281 282 // if translate params use percent dimension, frameSize should be given correctly 283 static std::shared_ptr<Rosen::RSTransitionEffect> GetRSTransitionWithoutType( 284 const std::unique_ptr<TransitionOptions>& options, const SizeF& frameSize = SizeF()); 285 286 static float ConvertDimensionToScaleBySize(const Dimension& dimension, float size); 287 288 static SizeF GetPercentReference(const RefPtr<FrameNode>& frameNode); 289 290 void FlushContentModifier(const RefPtr<Modifier>& modifier) override; 291 void FlushKitContentModifier(const RefPtr<Kit::Modifier>& modifier) override; 292 void FlushOverlayModifier(const RefPtr<Modifier>& modifier) override; 293 void FlushForegroundModifier(const RefPtr<Modifier>& modifier) override; 294 295 void AddChild(const RefPtr<RenderContext>& renderContext, int index) override; 296 void RemoveChild(const RefPtr<RenderContext>& renderContext) override; 297 void ClearChildren() override; 298 void SetBounds(float positionX, float positionY, float width, float height) override; 299 void SetSecurityLayer(bool isSecure) override; 300 void SetHDRBrightness(float hdrBrightness) override; 301 void SetImageHDRBrightness(float hdrBrightness) override; 302 void SetImageHDRPresent(bool hdrPresent) override; 303 void SetTransparentLayer(bool isTransparentLayer) override; 304 void SetScreenId(uint64_t screenId) override; 305 void SetAlwaysSnapshot(bool enable) override; 306 void OnTransformTranslateUpdate(const TranslateOptions& value) override; 307 Vector3F MarshallTranslate(const TranslateOptions& translate); 308 bool DoTextureExport(uint64_t surfaceId) override; 309 bool StopTextureExport() override; 310 void SetSurfaceRotation(bool isLock) override; 311 void SetRenderFit(RenderFit renderFit) override; 312 PipelineContext* GetPipelineContext() const; 313 314 RectF GetPaintRectWithTransform() override; 315 316 std::pair<RectF, bool> GetPaintRectWithTranslate() override; 317 318 RectF GetPaintRectWithoutTransform() override; 319 320 RectF GetPaintRectWithTransformWithoutDegree() override; 321 322 // get position property 323 RectF GetPropertyOfPosition() override; 324 325 // append translate value and return origin value. 326 void UpdateTranslateInXY(const OffsetF& offset) override; 327 OffsetF GetShowingTranslateProperty() override; 328 329 void CancelTranslateXYAnimation() override; 330 331 OffsetF GetTranslateXYProperty() override; 332 333 Matrix4 GetLocalTransformMatrix() override; 334 335 void GetPointWithRevert(PointF& point) override; 336 337 void GetPointTransform(PointF& point) override; 338 339 void GetPointTransformRotate(PointF& point) override; 340 341 Matrix4 GetMatrixWithTransformRotate() override; 342 343 void GetPointWithTransform(PointF& point) override; 344 345 void ClearDrawCommands() override; 346 347 void RemoveOverlayModifier(const RefPtr<OverlayModifier>& modifier) override; 348 void RemoveContentModifier(const RefPtr<ContentModifier>& modifier) override; 349 350 void OpacityAnimation(const AnimationOption& option, double begin, double end) override; 351 void ScaleAnimation(const AnimationOption& option, double begin, double end) override; 352 353 void PaintAccessibilityFocus() override; 354 355 void UpdateAccessibilityRoundRect() override; 356 357 void ClearAccessibilityFocus() override; 358 359 void OnAccessibilityFocusUpdate( 360 bool isAccessibilityFocus, const int64_t accessibilityIdForVirtualNode = INVALID_PARENT_ID) override; 361 void OnAccessibilityFocusRectUpdate(RectT<int32_t> accessibilityFocusRect) override; 362 363 void OnMouseSelectUpdate(bool isSelected, const Color& fillColor, const Color& strokeColor) override; 364 void UpdateMouseSelectWithRect(const RectF& rect, const Color& fillColor, const Color& strokeColor) override; 365 366 void OnPositionUpdate(const OffsetT<Dimension>& value) override; 367 void OnPositionEdgesUpdate(const EdgesParam& value) override; 368 void RecalculatePosition() override; 369 void OnZIndexUpdate(int32_t value) override; 370 void DumpInfo() override; 371 void DumpInfo(std::unique_ptr<JsonValue>& json) override; 372 void DumpSimplifyStagingProperties(std::unique_ptr<JsonValue>& json); 373 void DumpAdvanceInfo() override; 374 void DumpAdvanceInfo(std::unique_ptr<JsonValue>& json) override; 375 void SetAdvanceInfo(std::unique_ptr<JsonValue>& json); 376 void BuildStagingInfo(std::unique_ptr<JsonValue>& json); 377 void BuildPositionInfo(std::unique_ptr<JsonValue>& json); 378 void BuildShadowInfo(std::unique_ptr<JsonValue>& json); 379 void SetClipBoundsWithCommands(const std::string& commands) override; SetNeedDebugBoundary(bool flag)380 void SetNeedDebugBoundary(bool flag) override 381 { 382 needDebugBoundary_ = flag; 383 } 384 NeedDebugBoundary()385 bool NeedDebugBoundary() const override 386 { 387 return needDebugBoundary_; 388 } 389 390 void OnBackgroundAlignUpdate(const Alignment& align) override; 391 void OnBackgroundPixelMapUpdate(const RefPtr<PixelMap>& value) override; 392 void OnCustomBackgroundColorUpdate(const Color& color) override; 393 void CreateBackgroundPixelMap(const RefPtr<FrameNode>& customNode) override; OnIsTransitionBackgroundUpdate(bool isTransitionBackground)394 void OnIsTransitionBackgroundUpdate(bool isTransitionBackground) override {} 395 void OnBuilderBackgroundFlagUpdate(bool isBuilderBackground) override; GetCurrentBackgroundTaskId()396 uint32_t GetCurrentBackgroundTaskId() const override 397 { 398 return backgroundTaskId_; 399 } 400 401 void ColorToRSColor(const Color& color, OHOS::Rosen::RSColor& rsColor); 402 void OnBackgroundColorUpdate(const Color& value) override; 403 void OnOpacityUpdate(double opacity) override; 404 void OnDynamicRangeModeUpdate(DynamicRangeMode dynamicRangeMode) override; 405 void SetColorGamut(uint32_t colorGamut) override; 406 void SetAlphaOffscreen(bool isOffScreen) override; 407 void MarkContentChanged(bool isChanged) override; 408 void MarkDrivenRender(bool flag) override; 409 void MarkDrivenRenderItemIndex(int32_t index) override; 410 void MarkDrivenRenderFramePaintState(bool flag) override; 411 RefPtr<PixelMap> GetThumbnailPixelMap(bool needScale = false, bool isOffline = true) override; 412 void UpdateThumbnailPixelMapScale(float& scaleX, float& scaleY) override; 413 bool CreateThumbnailPixelMapAsyncTask( 414 bool needScale, std::function<void(const RefPtr<PixelMap>)> &&callback) override; 415 bool GetBitmap(RSBitmap& bitmap, std::shared_ptr<RSDrawCmdList> drawCmdList = nullptr); 416 bool GetPixelMap(const std::shared_ptr<Media::PixelMap>& pixelMap, 417 std::shared_ptr<RSDrawCmdList> drawCmdList = nullptr, Rosen::Drawing::Rect* rect = nullptr); 418 void SetActualForegroundColor(const Color& value) override; 419 void AttachNodeAnimatableProperty(RefPtr<NodeAnimatablePropertyBase> property) override; 420 void DetachNodeAnimatableProperty(const RefPtr<NodeAnimatablePropertyBase>& property) override; 421 422 void RegisterSharedTransition(const RefPtr<RenderContext>& other, const bool isInSameWindow) override; 423 void UnregisterSharedTransition(const RefPtr<RenderContext>& other) override; 424 425 void SetUsingContentRectForRenderFrame(bool value, bool adjustRSFrameByContentRect = false) override; 426 void SetFrameGravity(OHOS::Rosen::Gravity gravity) override; 427 void SetUIFirstSwitch(OHOS::Rosen::RSUIFirstSwitch uiFirstSwitch); 428 429 int32_t CalcExpectedFrameRate(const std::string& scene, float speed) override; 430 431 void SetBackgroundShader(const std::shared_ptr<Rosen::RSShader>& shader); 432 433 // used in arkts_native_render_node_modifier set property directly to rsNode 434 void SetRotation(float rotationX, float rotationY, float rotationZ) override; 435 void SetShadowColor(uint32_t color) override; 436 void SetShadowOffset(float offsetX, float offsetY) override; 437 void SetShadowAlpha(float alpha) override; 438 void SetShadowElevation(float elevation) override; 439 void SetShadowRadius(float radius) override; 440 void SetRenderFrameOffset(const OffsetF& offset) override; 441 void SetScale(float scaleX, float scaleY) override; 442 void SetScrollScale(float scale) override; 443 void ResetScrollScale() override; 444 void SetBackgroundColor(uint32_t colorValue) override; 445 void SetRenderPivot(float pivotX, float pivotY) override; 446 void SetFrame(float positionX, float positionY, float width, float height) override; 447 void SetOpacity(float opacity) override; 448 void SetTranslate(float translateX, float translateY, float translateZ) override; 449 void SetHostNode(const WeakPtr<FrameNode>& host) override; 450 451 OffsetF GetBaseTransalteInXY() const override; 452 void SetBaseTranslateInXY(const OffsetF& offset) override; 453 float GetBaseRotateInZ() const override; 454 void SetBaseRotateInZ(float degree) override; 455 456 void SetRectMask(const RectF& rect, const ShapeMaskProperty& property) override; 457 void SetCircleMask(const Circle& circle, const ShapeMaskProperty& property) override; 458 void SetRoundRectMask(const RoundRect& roundRect, const ShapeMaskProperty& property) override; 459 void SetOvalMask(const RectF& rect, const ShapeMaskProperty& property) override; 460 void SetCommandPathMask(const std::string& commands, const ShapeMaskProperty& property) override; 461 void ResetSurface(int width, int height) override; 462 void SetMarkNodeGroup(bool isNodeGroup) override; 463 int32_t GetRotateDegree() override; 464 void PaintDebugBoundary(bool flag) override; 465 void UpdateRenderGroup(bool isRenderGroup, bool isForced, bool includeProperty) override; 466 void SavePaintRect(bool isRound = true, uint16_t flag = 0) override; 467 void SyncPartialRsProperties() override; 468 void UpdatePaintRect(const RectF& paintRect) override; 469 Matrix4 GetRevertMatrix() override; 470 void SuggestOpIncNode(bool isOpincNode, bool isNeedCalculate) override; 471 void SetOpacityMultiplier(float opacity) override; 472 void UpdateOcclusionCullingStatus(bool enable) override; IsDisappearing()473 bool IsDisappearing() const override 474 { 475 return isDisappearing_; 476 } 477 void UpdateWindowBlur() override; 478 void MarkUiFirstNode(bool isUiFirstNode) override; 479 480 void SetRSUIContext(PipelineContext* context) override; 481 482 void SetDrawNode() override; 483 bool AddNodeToRsTree() override; 484 static std::shared_ptr<Rosen::RSNode> GetRsNodeByFrame(const RefPtr<FrameNode>& frameNode); 485 RefPtr<FrameNode> GetFrameNodeById(int32_t frameNodeId); 486 bool CanNodeBeDeleted(const RefPtr<FrameNode>& node) const; 487 void GetLiveChildren(const RefPtr<FrameNode>& node, std::list<RefPtr<FrameNode>>& childNodes); 488 void AddRsNodeForCapture(); 489 static bool initDrawNodeChangeCallback_; 490 static bool initPropertyNodeChangeCallback_; 491 492 void FreezeCanvasNode(bool freezeFlag = false); 493 void RemoveCanvasNode(); 494 void CheckAnimationParametersValid(int32_t& animationParam); 495 bool SetCanvasNodeOpacityAnimation(int32_t duration, int32_t delay, bool isDragEnd = false); 496 void LinkCanvasNodeToRootNode(const RefPtr<FrameNode>& rootNode); 497 void CreateCanvasNode(); 498 std::shared_ptr<Rosen::RSCanvasNode> GetCanvasNode() const; 499 AddKeyFrameAnimateEndCallback(const std::function<void ()> & callback)500 void AddKeyFrameAnimateEndCallback(const std::function<void()>& callback) 501 { 502 callbackAnimateEnd_ = callback; 503 } 504 AddKeyFrameCachedAnimateActionCallback(const std::function<void ()> & callback)505 void AddKeyFrameCachedAnimateActionCallback(const std::function<void()>& callback) 506 { 507 callbackCachedAnimateAction_ = callback; 508 } 509 GetIsDraggingFlag()510 bool GetIsDraggingFlag() const 511 { 512 return isDraggingFlag_; 513 } 514 SetIsDraggingFlag(bool isDraggingFlag)515 void SetIsDraggingFlag(bool isDraggingFlag) 516 { 517 isDraggingFlag_ = isDraggingFlag; 518 } 519 GetReDraggingFlag()520 bool GetReDraggingFlag() const 521 { 522 return reDraggingFlag_; 523 } 524 SetReDraggingFlag(bool reDraggingFlag)525 void SetReDraggingFlag(bool reDraggingFlag) 526 { 527 reDraggingFlag_ = reDraggingFlag; 528 } 529 530 void SetAnimationPropertyValue(AnimationPropertyType property, const std::vector<float>& value) override; 531 void CancelPropertyAnimation(AnimationPropertyType property) override; 532 std::vector<float> GetRenderNodePropertyValue(AnimationPropertyType property) override; 533 void SyncRSPropertyToRenderContext(AnimationPropertyType property) override; 534 void RemoveFromTree() override; 535 536 void SetNeedUseCmdlistDrawRegion(bool needUseCmdlistDrawRegion) override; 537 538 void UpdateCustomBackground() override; 539 540 protected: 541 void OnBackgroundImageUpdate(const ImageSourceInfo& src) override; 542 void OnBackgroundImageRepeatUpdate(const ImageRepeat& imageRepeat) override; 543 void OnBackgroundImageSyncModeUpdate(bool imageRepeat) override; 544 545 void OnBackgroundImageSizeUpdate(const BackgroundImageSize& bgImgSize) override; 546 void OnBackgroundImagePositionUpdate(const BackgroundImagePosition& bgImgPosition) override; 547 void OnBackgroundImageResizableSliceUpdate(const ImageResizableSlice& slice) override; 548 549 void OnForegroundColorUpdate(const Color& value) override; 550 void OnForegroundColorStrategyUpdate(const ForegroundColorStrategy& value) override; 551 552 void OnBorderImageUpdate(const RefPtr<BorderImage>& borderImage) override; 553 void OnBorderImageSourceUpdate(const ImageSourceInfo& borderImageSourceInfo) override; OnHasBorderImageSliceUpdate(bool tag)554 void OnHasBorderImageSliceUpdate(bool tag) override {} OnHasBorderImageWidthUpdate(bool tag)555 void OnHasBorderImageWidthUpdate(bool tag) override {} OnHasBorderImageOutsetUpdate(bool tag)556 void OnHasBorderImageOutsetUpdate(bool tag) override {} OnHasBorderImageRepeatUpdate(bool tag)557 void OnHasBorderImageRepeatUpdate(bool tag) override {} 558 void OnBorderImageGradientUpdate(const Gradient& gradient) override; 559 560 void OnBorderRadiusUpdate(const BorderRadiusProperty& value) override; 561 void OnBorderColorUpdate(const BorderColorProperty& value) override; 562 void OnBorderStyleUpdate(const BorderStyleProperty& value) override; 563 void OnDashGapUpdate(const BorderWidthProperty& value) override; 564 void OnDashWidthUpdate(const BorderWidthProperty& value) override; 565 566 void OnOuterBorderRadiusUpdate(const BorderRadiusProperty& value) override; 567 void OnOuterBorderColorUpdate(const BorderColorProperty& value) override; 568 void OnOuterBorderStyleUpdate(const BorderStyleProperty& value) override; 569 void OnOuterBorderWidthUpdate(const BorderWidthProperty& value) override; 570 571 void OnTransformScaleUpdate(const VectorF& value) override; 572 void OnTransformCenterUpdate(const DimensionOffset& value) override; 573 void OnTransformRotateUpdate(const Vector5F& value) override; 574 void OnTransformRotateAngleUpdate(const Vector4F& value) override; 575 576 void OnOffsetUpdate(const OffsetT<Dimension>& value) override; 577 void OnOffsetEdgesUpdate(const EdgesParam& value) override; 578 void OnAnchorUpdate(const OffsetT<Dimension>& value) override; 579 580 void OnClipShapeUpdate(const RefPtr<BasicShape>& basicShape) override; 581 void OnClipEdgeUpdate(bool isClip) override; 582 void OnClipMaskUpdate(const RefPtr<BasicShape>& basicShape) override; 583 584 void OnProgressMaskUpdate(const RefPtr<ProgressMaskProperty>& progress) override; 585 586 void OnLinearGradientUpdate(const NG::Gradient& value) override; 587 void OnSweepGradientUpdate(const NG::Gradient& value) override; 588 void OnRadialGradientUpdate(const NG::Gradient& value) override; 589 590 void OnFrontBrightnessUpdate(const Dimension& brightness) override; 591 void OnFrontGrayScaleUpdate(const Dimension& grayScale) override; 592 void OnFrontContrastUpdate(const Dimension& contrast) override; 593 void OnFrontSaturateUpdate(const Dimension& saturate) override; 594 void OnFrontSepiaUpdate(const Dimension& sepia) override; 595 void OnFrontInvertUpdate(const InvertVariant& invert) override; 596 void OnSystemBarEffectUpdate(bool systemBarEffect) override; 597 void OnFrontHueRotateUpdate(float hueRotate) override; 598 void OnFrontColorBlendUpdate(const Color& colorBlend) override; 599 void OnLinearGradientBlurUpdate(const NG::LinearGradientBlurPara& blurPara) override; 600 void OnMagnifierUpdate(const MagnifierParams& magnifierParams) override; 601 void OnDynamicLightUpRateUpdate(const float rate) override; 602 void OnDynamicDimDegreeUpdate(const float degree) override; 603 void OnDynamicLightUpDegreeUpdate(const float degree) override; 604 void OnBgDynamicBrightnessOptionUpdate(const std::optional<BrightnessOption>& brightnessOption) override; 605 void OnFgDynamicBrightnessOptionUpdate(const std::optional<BrightnessOption>& brightnessOption) override; 606 607 void OnOverlayTextUpdate(const OverlayOptions& overlay) override; 608 void OnMotionPathUpdate(const MotionPathOption& motionPath) override; 609 610 void OnLightPositionUpdate(const TranslateOptions& position) override; 611 void OnLightIntensityUpdate(const float lightIntensity) override; 612 void OnLightColorUpdate(const Color& lightColor) override; 613 void OnLightIlluminatedUpdate(const uint32_t lightIlluminated) override; 614 void OnIlluminatedBorderWidthUpdate(const Dimension& illuminatedBorderWidth) override; 615 void OnBloomUpdate(const float bloomIntensity) override; 616 617 void OnUseEffectUpdate(bool useEffect) override; 618 void OnUseEffectTypeUpdate(EffectType effectType) override; 619 bool GetStatusByEffectTypeAndWindow() override; 620 void OnUseShadowBatchingUpdate(bool useShadowBatching) override; 621 void OnFreezeUpdate(bool isFreezed) override; 622 void OnRenderGroupUpdate(bool isRenderGroup) override; 623 void OnSuggestedRenderGroupUpdate(bool isRenderGroup) override; 624 void OnRenderFitUpdate(RenderFit renderFit) override; 625 void OnNodeNameUpdate(const std::string& id) override; 626 void OnAttractionEffectUpdate(const AttractionEffect& effect) override; 627 void ReCreateRsNodeTree(const std::list<RefPtr<FrameNode>>& children); 628 629 void SyncAdditionalGeometryProperties(const RectF& paintRect); 630 void SetChildBounds(const RectF& paintRect) const; 631 void NotifyTransitionInner(const SizeF& frameSize, bool isTransitionIn); 632 void NotifyTransition(bool isTransitionIn); HasTransitionOutAnimation()633 bool HasTransitionOutAnimation() const override 634 { 635 return disappearingTransitionCount_ > 0; 636 } HasDisappearTransition()637 bool HasDisappearTransition() const override 638 { 639 return transitionEffect_ != nullptr && transitionEffect_->HasDisappearTransition(); 640 } 641 bool HasValidBgImageResizable(); 642 void OnTransitionInFinish(); 643 void OnTransitionOutFinish(); 644 void RemoveDefaultTransition(); 645 void FireTransitionUserCallback(bool isTransitionIn); 646 void PostTransitionUserOutCallback(); 647 void SetTransitionPivot(const SizeF& frameSize, bool transitionIn); 648 void SetPivot(float xPivot, float yPivot, float zPivot = 0.0f); 649 void SetPositionToRSNode(); 650 std::shared_ptr<Rosen::RSUIContext> GetRSUIContext(PipelineContext* pipeline); 651 652 // Convert BorderRadiusProperty to Rosen::Vector4f 653 static inline void ConvertRadius(const BorderRadiusProperty& value, Rosen::Vector4f& cornerRadius); 654 655 void PaintBackground(); 656 void PaintClipShape(const std::unique_ptr<ClipProperty>& clip, const SizeF& frameSize); 657 void PaintClipMask(const std::unique_ptr<ClipProperty>& clip, const SizeF& frameSize); 658 void PaintClip(const SizeF& frameSize); 659 void PaintProgressMask(); 660 void PaintGradient(const SizeF& frameSize); 661 void PaintGraphics(); 662 void PaintOverlayText(); 663 void PaintBorderImage(); 664 float ConvertDimensionToPx(Dimension& src, float size); 665 Rosen::ParticleParams ConvertParticleOptionToParams(const ParticleOption& particleOption, const RectF& rect); 666 Rosen::EmitterConfig ConvertParticleEmitterOption(const EmitterOption& emitterOption, const RectF& rect); 667 Rosen::ParticleVelocity ConvertParticleVelocityOption(const VelocityProperty& velocity); 668 Rosen::ParticleVelocity ConvertParticleDefaultVelocityOption(); 669 Rosen::ParticleAcceleration ConvertParticleAccelerationOption(const AccelerationProperty& acceleration); 670 Rosen::ParticleAcceleration ConvertParticleDefaultAccelerationOption(); 671 Rosen::ParticleColorParaType ConvertParticleColorOption(const ParticleColorPropertyOption& colorOption); 672 Rosen::ParticleColorParaType ConvertParticleDefaultColorOption( 673 std::optional<OHOS::Rosen::Range<OHOS::Rosen::RSColor>> rsInitRangeOpt); 674 Rosen::ParticleParaType<float> ConvertParticleFloatOption(const ParticleFloatPropertyOption& floatOption); 675 Rosen::ParticleParaType<float> ConvertParticleDefaultFloatOption(OHOS::Rosen::Range<float>& rsInitRange); 676 bool NeedPreloadImage(const std::list<ParticleOption>& optionList, RectF& rect); 677 void LoadParticleImage(const std::string& src, Dimension& width, Dimension& height); 678 void OnParticleImageLoaded(const std::string& src, const RefPtr<CanvasImage> canvas); 679 void SetRsParticleImage(std::shared_ptr<Rosen::RSImage>& rsImagePtr, std::string& imageSource); 680 void PaintRSBgImage(); 681 void PaintPixmapBgImage(); 682 void PaintBorderImageGradient(); 683 void PaintMouseSelectRect(const RectF& rect, const Color& fillColor, const Color& strokeColor); 684 void UpdateForeBlurStyleForColorMode(const std::optional<BlurStyleOption>& fgBlurStyle, 685 const SysOptions& sysOptions); 686 void SetBackBlurFilter(); 687 void SetFrontBlurFilter(); 688 bool UpdateBlurBackgroundColor(const std::optional<BlurStyleOption>& bgBlurStyle); 689 bool UpdateBlurBackgroundColor(const std::optional<EffectOption>& efffectOption); 690 void GetPaddingOfFirstFrameNodeParent(Dimension& parentPaddingLeft, Dimension& parentPaddingTop); 691 void CombineMarginAndPosition(Dimension& resultX, Dimension& resultY, const Dimension& parentPaddingLeft, 692 const Dimension& parentPaddingTop, float widthPercentReference, float heightPercentReference); 693 OffsetF GetRectOffsetWithOffsetEdges( 694 const EdgesParam& offsetEdges, float widthPercentReference, float heightPercentReference); 695 OffsetF GetRectOffsetWithPositionEdges( 696 const EdgesParam& positionEdges, float widthPercentReference, float heightPercentReference); 697 698 void InitEventClickEffect(); 699 RefPtr<Curve> UpdatePlayAnimationValue(const ClickEffectLevel& level, float& scaleValue); 700 void ClickEffectPlayAnimation(const TouchType& touchType); 701 702 void SetSkipCheckInMultiInstance(); 703 704 // helper function to check if paint rect is valid 705 bool RectIsNull(); 706 707 /** Set data to the modifier and bind it to rsNode_ 708 * If [modifier] not initialized, initialize it and add it to rsNode 709 * 710 * @param modifier shared_ptr to a member modifier 711 * @param data passed to SetCustomData, set to the modifier 712 */ 713 template<typename T, typename D> 714 void SetGraphicModifier(std::shared_ptr<T>& modifier, D data); 715 716 void AddModifier(const std::shared_ptr<Rosen::ModifierNG::RSModifier>& modifier); 717 void RemoveModifier(const std::shared_ptr<Rosen::ModifierNG::RSModifier>& modifier); 718 719 // helper function to update one of the graphic effects 720 template<typename T, typename D> 721 void UpdateGraphic(std::shared_ptr<T>& modifier, D data); 722 723 RectF AdjustPaintRect(); 724 725 DataReadyNotifyTask CreateBgImageDataReadyCallback(); 726 LoadSuccessNotifyTask CreateBgImageLoadSuccessCallback(); 727 DataReadyNotifyTask CreateBorderImageDataReadyCallback(); 728 LoadSuccessNotifyTask CreateBorderImageLoadSuccessCallback(); 729 void BdImagePaintTask(RSCanvas& canvas); 730 731 void FlushImplicitTransaction(); 732 733 void RegisterDensityChangedCallback(); 734 735 bool IsUsingPosition(const RefPtr<FrameNode>& frameNode); 736 737 void SetContentRectToFrame(RectF rect) override; 738 739 float RoundValueToPixelGrid(float value); 740 float RoundValueToPixelGrid(float value, bool isRound, bool forceCeil, bool forceFloor); 741 float OnePixelValueRounding(float value); 742 float OnePixelValueRounding(float value, bool isRound, bool forceCeil, bool forceFloor); 743 void RoundToPixelGrid(); 744 void RoundToPixelGrid(bool isRound, uint16_t flag); 745 void OnePixelRounding(); 746 void OnePixelRounding(uint16_t flag = 0); 747 Matrix4 GetMatrix(); 748 bool IsUniRenderEnabled() override; 749 void AddFrameNodeInfoToRsNode(); 750 // Use rect to update the drawRegion rect at index. 751 void UpdateDrawRegion(uint32_t index, const std::shared_ptr<Rosen::RectF>& rect); 752 void NotifyHostTransformUpdated(bool changed = true); 753 void NotifyHostTransformUpdatedMultiThread(bool changed = true); 754 void SetFrontBlurFilterMultiThread(); 755 void InitAccessibilityFocusModidifer(const RoundRect&, const Color&, float); 756 void InitFocusStateModidifer(const RoundRect&, const Color&, float); 757 void InitFocusAnimationModidifer(const RoundRect&, const Color&, float); 758 std::shared_ptr<TransitionModifier> GetOrCreateTransitionModifier(); 759 std::shared_ptr<BackgroundModifier> GetOrCreateBackgroundModifier(); 760 761 std::shared_ptr<Rosen::RSNode> CreateHardwareSurface(const std::optional<ContextParam>& param, 762 bool isTextureExportNode, std::shared_ptr<Rosen::RSUIContext>& rsUIContext); 763 #ifdef RENDER_EXTRACT_SUPPORTED 764 std::shared_ptr<Rosen::RSNode> CreateHardwareTexture( 765 const std::optional<ContextParam>& param, bool isTextureExportNode); 766 #endif 767 void DetachModifiers(); 768 void MarkNeedDrawNode(bool condition); 769 770 void OnEmitterPropertyUpdate(); 771 772 RefPtr<ImageLoadingContext> bgLoadingCtx_; 773 RefPtr<CanvasImage> bgImage_; 774 RefPtr<ImageLoadingContext> bdImageLoadingCtx_; 775 RefPtr<CanvasImage> bdImage_; 776 777 PatternType patternType_ = PatternType::DEFAULT; 778 std::shared_ptr<Rosen::RSNode> rsNode_; 779 bool isHdr_ = false; 780 bool isHoveredScale_ = false; 781 bool isHoveredBoard_ = false; 782 bool firstTransitionIn_ = false; 783 bool isBreakingPoint_ = false; 784 bool isBackBlurChanged_ = false; 785 bool needDebugBoundary_ = true; 786 bool isDisappearing_ = false; 787 bool hasDefaultTransition_ = false; 788 bool measureTriggered_ = false; 789 bool particleAnimationPlaying_ = false; 790 bool hasScales_ = false; 791 int appearingTransitionCount_ = 0; 792 int disappearingTransitionCount_ = 0; 793 int sandBoxCount_ = 0; 794 uint32_t colorGamut_ = 0; 795 static constexpr int32_t INVALID_PARENT_ID = -2100000; 796 static constexpr uint32_t DRAW_REGION_RECT_COUNT = 8; 797 std::map<std::string, RefPtr<ImageLoadingContext>> particleImageContextMap_; 798 std::map<std::string, RefPtr<CanvasImage>> particleImageMap_; 799 Color blendColor_ = Color::TRANSPARENT; 800 Color hoveredColor_ = Color::TRANSPARENT; 801 802 RefPtr<RosenTransitionEffect> transitionEffect_; 803 std::function<void()> transitionOutCallback_; 804 std::function<void()> transitionInCallback_; 805 TransitionFinishCallback transitionUserCallback_; 806 807 std::optional<OffsetF> frameOffset_; 808 std::shared_ptr<Rosen::RectF> drawRegionRects_[DRAW_REGION_RECT_COUNT] = { nullptr }; 809 810 std::shared_ptr<DebugBoundaryModifier> debugBoundaryModifier_; 811 std::shared_ptr<BackgroundModifier> backgroundModifier_; 812 std::shared_ptr<TransitionModifier> transitionModifier_; 813 std::shared_ptr<BorderImageModifier> borderImageModifier_; 814 std::shared_ptr<MouseSelectModifier> mouseSelectModifier_; 815 RefPtr<MoonProgressModifier> moonProgressModifier_; 816 RefPtr<FocusAnimationModifier> focusAnimationModifier_; 817 818 std::shared_ptr<FocusStateModifier> focusStateModifier_; 819 std::shared_ptr<FocusStateModifier> accessibilityFocusStateModifier_; 820 std::shared_ptr<OverlayTextModifier> overlayTextModifier_ = nullptr; 821 std::shared_ptr<GradientStyleModifier> gradientStyleModifier_; 822 823 std::shared_ptr<Rosen::ModifierNG::RSBoundsClipModifier> clipBoundModifier_; 824 std::shared_ptr<Rosen::ModifierNG::RSFrameClipModifier> customClipToFrameModifier_; 825 std::shared_ptr<Rosen::ModifierNG::RSMaskModifier> clipMaskModifier_; 826 std::shared_ptr<Rosen::ModifierNG::RSTransformModifier> transformModifier_; 827 std::shared_ptr<Rosen::ModifierNG::RSTransformModifier> pivotModifier_; 828 std::shared_ptr<Rosen::ModifierNG::RSTransformModifier> sharedTransitionModifier_; 829 std::shared_ptr<Rosen::ModifierNG::RSBehindWindowFilterModifier> windowBlurModifier_; 830 // translate, rotation, scale, alpha modifier for developer 831 std::shared_ptr<Rosen::ModifierNG::RSTransformModifier> translateXYUserModifier_; 832 std::shared_ptr<Rosen::ModifierNG::RSTransformModifier> translateZUserModifier_; 833 std::shared_ptr<Rosen::ModifierNG::RSTransformModifier> rotationXUserModifier_; 834 std::shared_ptr<Rosen::ModifierNG::RSTransformModifier> rotationYUserModifier_; 835 std::shared_ptr<Rosen::ModifierNG::RSTransformModifier> rotationZUserModifier_; 836 std::shared_ptr<Rosen::ModifierNG::RSTransformModifier> cameraDistanceUserModifier_; 837 std::shared_ptr<Rosen::ModifierNG::RSTransformModifier> scaleXYUserModifier_; 838 std::shared_ptr<Rosen::ModifierNG::RSTransformModifier> scrollScaleModifier_; 839 std::shared_ptr<Rosen::ModifierNG::RSAlphaModifier> alphaUserModifier_; 840 std::shared_ptr<Rosen::ModifierNG::RSAlphaModifier> alphaModifier_; 841 // translate modifiers for interruption 842 std::shared_ptr<Rosen::ModifierNG::RSTransformModifier> translateXYModifier_; 843 // for page orientation feature. 844 std::shared_ptr<Rosen::ModifierNG::RSTransformModifier> baseTranslateInXYModifier_; 845 std::shared_ptr<Rosen::ModifierNG::RSTransformModifier> baseRotateInZModifier_; 846 // graphics modifiers 847 struct GraphicModifiers { 848 std::shared_ptr<GrayScaleModifier> grayScale; 849 std::shared_ptr<BrightnessModifier> brightness; 850 std::shared_ptr<ContrastModifier> contrast; 851 std::shared_ptr<SaturateModifier> saturate; 852 std::shared_ptr<SepiaModifier> sepia; 853 std::shared_ptr<InvertModifier> invert; 854 std::shared_ptr<HueRotateModifier> hueRotate; 855 std::shared_ptr<ColorBlendModifier> colorBlend; 856 }; 857 std::unique_ptr<GraphicModifiers> graphics_; 858 859 RefPtr<TouchEventImpl> touchListener_; 860 VectorF currentScale_ = VectorF(1.0f, 1.0f); 861 // borderLeft borderTop borderRight borderBottom 862 Rosen::Vector4f borderWidth_ = Rosen::Vector4f(0.0f, 0.0f, 0.0f, 0.0f); 863 bool isTouchUpFinished_ = true; 864 865 bool useContentRectForRSFrame_; 866 bool adjustRSFrameByContentRect_ = false; 867 bool isFocusBoxGlow_ = false; 868 std::shared_ptr<Rosen::RSUIDirector> rsUIDirector_; 869 870 RectF paintRect_; 871 // offset generated by layout node 872 std::optional<OffsetF> extraOffset_; 873 std::unique_ptr<RectF> contentClip_; 874 875 std::shared_ptr<Rosen::RSTextureExport> rsTextureExport_; 876 877 std::shared_ptr<Rosen::RSCanvasNode> canvasNode_; 878 std::function<void()> callbackAnimateEnd_ = nullptr; 879 std::function<void()> callbackCachedAnimateAction_ = nullptr; 880 bool isDraggingFlag_ = false; 881 bool reDraggingFlag_ = false; 882 PipelineContext* pipeline_; 883 884 template <typename Modifier, RSPropertyType PropertyType, typename ValueType> 885 friend class PropertyTransitionEffectTemplate; 886 887 friend class RosenPivotTransitionEffect; 888 889 ACE_DISALLOW_COPY_AND_MOVE(RosenRenderContext); 890 891 private: 892 void ModifyCustomBackground(); 893 bool ShouldSkipAffineTransformation(std::shared_ptr<RSNode> rsNode); 894 895 uint32_t backgroundTaskId_ = 0; 896 }; 897 } // namespace OHOS::Ace::NG 898 899 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PAINTS_ADAPTER_ROSEN_RENDER_CONTEXT_H 900