• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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