• 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_RENDER_CONTEXT_H
17 #define FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PAINTS_RENDER_CONTEXT_H
18 
19 #include <cstdint>
20 #include <functional>
21 
22 #include "base/geometry/dimension.h"
23 #include "base/geometry/matrix4.h"
24 #include "base/geometry/ng/offset_t.h"
25 #include "base/geometry/ng/rect_t.h"
26 #include "base/geometry/ng/vector.h"
27 #include "base/memory/ace_type.h"
28 #include "base/memory/referenced.h"
29 #include "base/utils/noncopyable.h"
30 #include "core/animation/page_transition_common.h"
31 #include "core/components/common/layout/constants.h"
32 #include "core/components/common/layout/position_param.h"
33 #include "core/components/common/properties/color.h"
34 #include "core/components/common/properties/effect_option.h"
35 #include "core/components_ng/base/modifier.h"
36 #include "core/components_ng/pattern/render_node/render_node_properties.h"
37 #include "core/components_ng/property/attraction_effect.h"
38 #include "core/components_ng/property/border_property.h"
39 #include "core/components_ng/property/overlay_property.h"
40 #include "core/components_ng/property/particle_property.h"
41 #include "core/components_ng/property/particle_property_animation.h"
42 #include "core/components_ng/property/progress_mask_property.h"
43 #include "core/components_ng/property/property.h"
44 #include "core/components_ng/property/transition_property.h"
45 #include "core/components_ng/render/animation_utils.h"
46 #include "core/components_ng/render/drawing_forward.h"
47 #include "core/components_ng/render/render_property.h"
48 
49 namespace OHOS::Rosen {
50 class DrawCmdList;
51 class VisualEffect;
52 class Filter;
53 enum class Gravity;
54 class Blender;
55 } // namespace OHOS::Rosen
56 
57 namespace OHOS::Ace {
58 struct SharedTransitionOption;
59 }
60 
61 namespace OHOS::Ace::Kit {
62 class Modifier;
63 }
64 
65 namespace OHOS::Ace::NG {
66 
67 typedef enum {
68     OPINC_INVALID,
69     OPINC_NODE,
70     OPINC_SUGGESTED_OR_EXCLUDED,
71     OPINC_PARENT_POSSIBLE,
72     OPINC_NODE_POSSIBLE,
73 } OPINC_TYPE_E;
74 
75 class GeometryNode;
76 class RenderPropertyNode;
77 class FrameNode;
78 class InspectorFilter;
79 class Modifier;
80 class PipelineContext;
81 
82 struct PaintFocusExtraInfo final {
83     PaintFocusExtraInfo() = default;
PaintFocusExtraInfofinal84     PaintFocusExtraInfo(bool isAccessibilityFocus, bool isFocusBoxGlow)
85         : isAccessibilityFocus(isAccessibilityFocus), isFocusBoxGlow(isFocusBoxGlow)
86     {}
87     ~PaintFocusExtraInfo() = default;
88     bool isAccessibilityFocus { false };
89     bool isFocusBoxGlow { false };
90 };
91 
92 using CanvasDrawFunction = std::function<void(RSCanvas& canvas)>;
93 using TransitionFinishCallback = std::function<void(bool)>;
94 
95 inline constexpr int32_t ZINDEX_DEFAULT_VALUE = 0;
96 
97 // RenderContext is used for render node to paint.
98 class ACE_FORCE_EXPORT RenderContext : public virtual AceType {
99     DECLARE_ACE_TYPE(NG::RenderContext, AceType);
100 
101 public:
102     ~RenderContext() override = default;
103 
104     static RefPtr<RenderContext> Create();
105 
106     void SetRequestFrame(const std::function<void()>& requestFrame);
107     void RequestNextFrame() const;
108 
109     virtual void SetHostNode(const WeakPtr<FrameNode>& host);
110     RefPtr<FrameNode> GetHost() const;
111 
SetNeedDebugBoundary(bool flag)112     virtual void SetNeedDebugBoundary(bool flag) {}
NeedDebugBoundary()113     virtual bool NeedDebugBoundary() const
114     {
115         return false;
116     }
117 
FlushContentDrawFunction(CanvasDrawFunction && contentDraw)118     virtual void FlushContentDrawFunction(CanvasDrawFunction&& contentDraw) {}
119 
FlushForegroundDrawFunction(CanvasDrawFunction && foregroundDraw)120     virtual void FlushForegroundDrawFunction(CanvasDrawFunction&& foregroundDraw) {}
121 
FlushOverlayDrawFunction(CanvasDrawFunction && overlayDraw)122     virtual void FlushOverlayDrawFunction(CanvasDrawFunction&& overlayDraw) {}
123 
FlushContentModifier(const RefPtr<Modifier> & modifier)124     virtual void FlushContentModifier(const RefPtr<Modifier>& modifier) {}
FlushKitContentModifier(const RefPtr<Kit::Modifier> & modifier)125     virtual void FlushKitContentModifier(const RefPtr<Kit::Modifier>& modifier) {}
FlushForegroundModifier(const RefPtr<Modifier> & modifier)126     virtual void FlushForegroundModifier(const RefPtr<Modifier>& modifier) {}
FlushOverlayModifier(const RefPtr<Modifier> & modifier)127     virtual void FlushOverlayModifier(const RefPtr<Modifier>& modifier) {}
128 
RebuildFrame(FrameNode * self,const std::list<RefPtr<FrameNode>> & children)129     virtual void RebuildFrame(FrameNode* self, const std::list<RefPtr<FrameNode>>& children) {};
130 
AddFrameChildren(FrameNode * self,const std::list<RefPtr<FrameNode>> & children)131     virtual void AddFrameChildren(FrameNode* self, const std::list<RefPtr<FrameNode>>& children) {};
132 
RemoveFrameChildren(FrameNode * self,const std::list<RefPtr<FrameNode>> & children)133     virtual void RemoveFrameChildren(FrameNode* self, const std::list<RefPtr<FrameNode>>& children) {};
134 
MoveFrame(FrameNode * self,const RefPtr<FrameNode> & child,int32_t index)135     virtual void MoveFrame(FrameNode* self, const RefPtr<FrameNode>& child, int32_t index) {}
136 
137     virtual void SyncGeometryProperties(GeometryNode* geometryNode, bool isRound = true, uint8_t flag = 0) {}
138 
SyncGeometryProperties(const RectF & rectF)139     virtual void SyncGeometryProperties(const RectF& rectF) {}
140 
SetBorderRadius(const BorderRadiusProperty & value)141     virtual void SetBorderRadius(const BorderRadiusProperty& value) {}
142 
SetBorderStyle(const BorderStyleProperty & value)143     virtual void SetBorderStyle(const BorderStyleProperty& value) {};
144 
SetBorderColor(const BorderColorProperty & value)145     virtual void SetBorderColor(const BorderColorProperty& value) {};
146 
SetBorderWidth(const BorderWidthProperty & value)147     virtual void SetBorderWidth(const BorderWidthProperty& value) {};
148 
SetDashGap(const BorderWidthProperty & value)149     virtual void SetDashGap(const BorderWidthProperty& value) {};
150 
SetDashWidth(const BorderWidthProperty & value)151     virtual void SetDashWidth(const BorderWidthProperty& value) {};
152 
SetOuterBorderRadius(const BorderRadiusProperty & value)153     virtual void SetOuterBorderRadius(const BorderRadiusProperty& value) {};
154 
SetOuterBorderStyle(const BorderStyleProperty & value)155     virtual void SetOuterBorderStyle(const BorderStyleProperty& value) {};
156 
SetOuterBorderColor(const BorderColorProperty & value)157     virtual void SetOuterBorderColor(const BorderColorProperty& value) {};
158 
SetOuterBorderWidth(const BorderWidthProperty & value)159     virtual void SetOuterBorderWidth(const BorderWidthProperty& value) {};
160 
SetExtraOffset(const std::optional<OffsetF> & offset)161     virtual void SetExtraOffset(const std::optional<OffsetF>& offset) {};
162 
163     // draw self and children in sandbox origin at parent's absolute position in root, drawing in sandbox
164     // will be unaffected by parent's transition.
165     virtual void SetSandBox(const std::optional<OffsetF>& parentPosition, bool force = false) {};
166 
HasSandBox()167     virtual bool HasSandBox() const
168     {
169         return false;
170     }
171 
SetFrameWithoutAnimation(const RectF & paintRect)172     virtual void SetFrameWithoutAnimation(const RectF& paintRect) {};
173 
RegisterSharedTransition(const RefPtr<RenderContext> & other,const bool isInSameWindow)174     virtual void RegisterSharedTransition(const RefPtr<RenderContext>& other, const bool isInSameWindow) {}
UnregisterSharedTransition(const RefPtr<RenderContext> & other)175     virtual void UnregisterSharedTransition(const RefPtr<RenderContext>& other) {}
176 
OnModifyDone()177     virtual void OnModifyDone() {}
178 
179     enum class ContextType : int8_t {
180         CANVAS,
181         ROOT,
182         SURFACE,
183         EFFECT,
184         EXTERNAL,
185         INCREMENTAL_CANVAS,
186         HARDWARE_SURFACE,
187 #ifdef RENDER_EXTRACT_SUPPORTED
188         HARDWARE_TEXTURE,
189 #endif
190     };
191 
192     enum class PatternType : int8_t {
193         DEFAULT,
194         VIDEO,
195         XCOM,
196 #ifdef PLATFORM_VIEW_SUPPORTED
197         PLATFORM_VIEW,
198 #endif
199     };
200     struct ContextParam {
201         ContextType type;
202         std::optional<std::string> surfaceName;
203         PatternType patternType = PatternType::DEFAULT;
204     };
205 
InitContext(bool isRoot,const std::optional<ContextParam> & param)206     virtual void InitContext(bool isRoot, const std::optional<ContextParam>& param) {}
207 
InitContext(bool isRoot,const std::optional<ContextParam> & param,bool isLayoutNode)208     virtual void InitContext(bool isRoot, const std::optional<ContextParam>& param, bool isLayoutNode) {}
209 
SetSurfaceChangedCallBack(const std::function<void (float,float,float,float)> & callback)210     virtual void SetSurfaceChangedCallBack(
211         const std::function<void(float, float, float, float)>& callback) {}
RemoveSurfaceChangedCallBack()212     virtual void RemoveSurfaceChangedCallBack() {}
213 
MarkNewFrameAvailable(void * nativeWindow)214     virtual void MarkNewFrameAvailable(void* nativeWindow) {}
AddAttachCallBack(const std::function<void (int64_t,bool)> & attachCallback)215     virtual void AddAttachCallBack(const std::function<void(int64_t, bool)>& attachCallback) {}
AddUpdateCallBack(const std::function<void (std::vector<float> &)> & updateCallback)216     virtual void AddUpdateCallBack(const std::function<void(std::vector<float>&)>& updateCallback) {}
AddInitTypeCallBack(const std::function<void (int32_t &)> & initTypeCallback)217     virtual void AddInitTypeCallBack(const std::function<void(int32_t&)>& initTypeCallback) {}
218 
StartRecording()219     virtual void StartRecording() {}
StopRecordingIfNeeded()220     virtual void StopRecordingIfNeeded() {}
221 
SetDrawContentAtLast(bool useDrawContentLastOrder)222     virtual void SetDrawContentAtLast(bool useDrawContentLastOrder) {}
223 
ResetBlendBgColor()224     virtual void ResetBlendBgColor() {}
225 
BlendBgColor(const Color & color)226     virtual void BlendBgColor(const Color& color) {}
227 
ResetBlendBorderColor()228     virtual void ResetBlendBorderColor() {}
229 
BlendBorderColor(const Color & color)230     virtual void BlendBorderColor(const Color& color) {}
231 
SetRSUIContext(PipelineContext * context)232     virtual void SetRSUIContext(PipelineContext* context) {}
233 
234     // Paint focus state by component's setting. It will paint along the paintRect
235     virtual void PaintFocusState(const RoundRect& paintRect, const Color& paintColor, const Dimension& paintWidth,
236         bool isAccessibilityFocus = false, bool isFocusBoxGlow = false)
237     {}
238     // Paint focus state by component's setting. It will paint along the frameRect(padding: focusPaddingVp)
PaintFocusState(const RoundRect & paintRect,const Dimension & focusPaddingVp,const Color & paintColor,const Dimension & paintWidth,const PaintFocusExtraInfo & paintFocusExtraInfo)239     virtual void PaintFocusState(const RoundRect& paintRect, const Dimension& focusPaddingVp, const Color& paintColor,
240         const Dimension& paintWidth, const PaintFocusExtraInfo& paintFocusExtraInfo)
241     {}
242     // Paint focus state by default. It will paint along the component rect(padding: focusPaddingVp)
243     virtual void PaintFocusState(const Dimension& focusPaddingVp, const Color& paintColor, const Dimension& paintWidth,
244         bool isFocusBoxGlow = false)
245     {}
246 
ClearFocusState()247     virtual void ClearFocusState() {}
248 
CreateBackgroundPixelMap(const RefPtr<FrameNode> & value)249     virtual void CreateBackgroundPixelMap(const RefPtr<FrameNode>& value) {}
GetCurrentBackgroundTaskId()250     virtual uint32_t GetCurrentBackgroundTaskId() const { return 0; }
251 
UpdateBorderWidthF(const BorderWidthPropertyF & value)252     virtual void UpdateBorderWidthF(const BorderWidthPropertyF& value) {}
253 
254     // clip node without padding
SetClipToFrame(bool useClip)255     virtual void SetClipToFrame(bool useClip) {}
256 
257     // clip node with padding
SetClipToBounds(bool useClip)258     virtual void SetClipToBounds(bool useClip) {}
SetClipBoundsWithCommands(const std::string & commands)259     virtual void SetClipBoundsWithCommands(const std::string& commands) {};
SetVisible(bool visible)260     virtual void SetVisible(bool visible) {}
261 
MarkContentChanged(bool isChanged)262     virtual void MarkContentChanged(bool isChanged) {}
MarkDrivenRender(bool flag)263     virtual void MarkDrivenRender(bool flag) {}
MarkDrivenRenderItemIndex(int32_t index)264     virtual void MarkDrivenRenderItemIndex(int32_t index) {}
MarkDrivenRenderFramePaintState(bool flag)265     virtual void MarkDrivenRenderFramePaintState(bool flag) {}
266 
AnimateHoverEffectScale(bool isHovered)267     virtual void AnimateHoverEffectScale(bool isHovered) {}
AnimateHoverEffectBoard(bool isHovered)268     virtual void AnimateHoverEffectBoard(bool isHovered) {}
269 
UpdateTransition(const TransitionOptions & options)270     virtual void UpdateTransition(const TransitionOptions& options) {}
UpdateChainedTransition(const RefPtr<NG::ChainedTransitionEffect> & effect)271     virtual void UpdateChainedTransition(const RefPtr<NG::ChainedTransitionEffect>& effect) {}
GetOneCenterTransitionOption()272     const RefPtr<OneCenterTransitionOptionType>& GetOneCenterTransitionOption()
273     {
274         return oneCenterTransition_;
275     }
UpdateOneCenterTransitionOption(const RefPtr<OneCenterTransitionOptionType> & value)276     void UpdateOneCenterTransitionOption(const RefPtr<OneCenterTransitionOptionType>& value)
277     {
278         oneCenterTransition_ = value;
279     }
OnNodeDisappear(bool recursive)280     virtual void OnNodeDisappear(bool recursive) {}
OnNodeAppear(bool recursive)281     virtual void OnNodeAppear(bool recursive) {}
HasTransitionOutAnimation()282     virtual bool HasTransitionOutAnimation() const
283     {
284         return false;
285     }
286 
HasDisappearTransition()287     virtual bool HasDisappearTransition() const
288     {
289         return false;
290     }
291 
IsSynced()292     virtual bool IsSynced() const
293     {
294         return isSynced_;
295     }
296 
SetSharedTranslate(float xTranslate,float yTranslate)297     virtual void SetSharedTranslate(float xTranslate, float yTranslate) {}
ResetSharedTranslate()298     virtual void ResetSharedTranslate() {}
299 
AddChild(const RefPtr<RenderContext> & renderContext,int index)300     virtual void AddChild(const RefPtr<RenderContext>& renderContext, int index) {}
RemoveChild(const RefPtr<RenderContext> & renderContext)301     virtual void RemoveChild(const RefPtr<RenderContext>& renderContext) {}
ClearChildren()302     virtual void ClearChildren() {}
SetBounds(float positionX,float positionY,float width,float height)303     virtual void SetBounds(float positionX, float positionY, float width, float height) {}
SetContentRectToFrame(RectF rect)304     virtual void SetContentRectToFrame(RectF rect) {}
SetSecurityLayer(bool isSecure)305     virtual void SetSecurityLayer(bool isSecure) {}
SetHDRBrightness(float hdrBrightness)306     virtual void SetHDRBrightness(float hdrBrightness) {}
SetImageHDRBrightness(float hdrBrightness)307     virtual void SetImageHDRBrightness(float hdrBrightness) {}
SetImageHDRPresent(bool hdrPresent)308     virtual void SetImageHDRPresent(bool hdrPresent) {}
SetTransparentLayer(bool isTransparentLayer)309     virtual void SetTransparentLayer(bool isTransparentLayer) {}
SetScreenId(uint64_t screenId)310     virtual void SetScreenId(uint64_t screenId) {}
SetAlwaysSnapshot(bool enable)311     virtual void SetAlwaysSnapshot(bool enable) {}
UpdateBackBlurRadius(const Dimension & radius)312     virtual void UpdateBackBlurRadius(const Dimension& radius) {}
313     virtual void UpdateBackBlurStyle(
314         const std::optional<BlurStyleOption>& bgBlurStyle, const SysOptions& sysOptions = SysOptions())
315     {}
316     virtual void UpdateBackgroundEffect(
317         const std::optional<EffectOption>& effectOption, const SysOptions& sysOptions = SysOptions())
318     {}
319     virtual void UpdateBackBlur(
320         const Dimension& radius, const BlurOption& blurOption, const SysOptions& sysOptions = SysOptions())
321     {}
UpdateNodeBackBlur(const Dimension & radius,const BlurOption & blurOption)322     virtual void UpdateNodeBackBlur(const Dimension& radius, const BlurOption& blurOption) {}
UpdateMotionBlur(const MotionBlurOption & motionBlurOption)323     virtual void UpdateMotionBlur(const MotionBlurOption& motionBlurOption) {}
324     virtual void UpdateFrontBlur(
325         const Dimension& radius, const BlurOption& blurOption, const SysOptions& sysOptions = SysOptions())
326     {}
327     virtual void UpdateFrontBlurStyle(
328         const std::optional<BlurStyleOption>& fgBlurStyle, const SysOptions& sysOptions = SysOptions())
329     {}
UpdateFrontBlurRadius(const Dimension & radius)330     virtual void UpdateFrontBlurRadius(const Dimension& radius) {}
ResetBackBlurStyle()331     virtual void ResetBackBlurStyle() {}
ClipWithRect(const RectF & rectF)332     virtual void ClipWithRect(const RectF& rectF) {}
ClipWithRoundRect(const RoundRect & roundRect)333     virtual void ClipWithRoundRect(const RoundRect& roundRect) {}
ClipWithOval(const RectF & rectF)334     virtual void ClipWithOval(const RectF& rectF) {}
ClipWithCircle(const Circle & circle)335     virtual void ClipWithCircle(const Circle& circle) {}
ClipWithRRect(const RectF & rectF,const RadiusF & radiusF)336     virtual void ClipWithRRect(const RectF& rectF, const RadiusF& radiusF) {}
RemoveClipWithRRect()337     virtual void RemoveClipWithRRect() {}
UpdateWindowFocusState(bool isFocused)338     virtual void UpdateWindowFocusState(bool isFocused) {}
UpdateWindowActiveState(bool isActive)339     virtual void UpdateWindowActiveState(bool isActive) {}
340     /**
341      * @brief Only clip the content & foreground layer by @c rect.
342      * @param rect - offset of @c rect is relative to FrameRect.
343      */
SetContentClip(const std::variant<RectF,RefPtr<ShapeRect>> & rect)344     virtual void SetContentClip(const std::variant<RectF, RefPtr<ShapeRect>>& rect) {}
ResetContentClip()345     virtual void ResetContentClip() {}
346 
347     // visual
UpdateVisualEffect(const OHOS::Rosen::VisualEffect * visualEffect)348     virtual void UpdateVisualEffect(const OHOS::Rosen::VisualEffect* visualEffect) {}
UpdateBackgroundFilter(const OHOS::Rosen::Filter * backgroundFilter)349     virtual void UpdateBackgroundFilter(const OHOS::Rosen::Filter* backgroundFilter) {}
UpdateForegroundFilter(const OHOS::Rosen::Filter * foregroundFilter)350     virtual void UpdateForegroundFilter(const OHOS::Rosen::Filter* foregroundFilter) {}
UpdateCompositingFilter(const OHOS::Rosen::Filter * compositingFilter)351     virtual void UpdateCompositingFilter(const OHOS::Rosen::Filter* compositingFilter) {}
UpdateBlender(const OHOS::Rosen::Blender * blender)352     virtual void UpdateBlender(const OHOS::Rosen::Blender* blender) {}
353 
OpacityAnimation(const AnimationOption & option,double begin,double end)354     virtual void OpacityAnimation(const AnimationOption& option, double begin, double end) {}
ScaleAnimation(const AnimationOption & option,double begin,double end)355     virtual void ScaleAnimation(const AnimationOption& option, double begin, double end) {}
356 
OnTransformTranslateUpdate(const TranslateOptions & value)357     virtual void OnTransformTranslateUpdate(const TranslateOptions& value) {}
OnTransformScaleUpdate(const VectorF & value)358     virtual void OnTransformScaleUpdate(const VectorF& value) {}
OnTransformCenterUpdate(const DimensionOffset & value)359     virtual void OnTransformCenterUpdate(const DimensionOffset& value) {}
OnOffsetUpdate(const OffsetT<Dimension> & value)360     virtual void OnOffsetUpdate(const OffsetT<Dimension>& value) {}
OnOffsetEdgesUpdate(const EdgesParam & value)361     virtual void OnOffsetEdgesUpdate(const EdgesParam& value) {}
362 
363     // used in arkts_native_render_node_modifier set property directly to rsNode
SetRotation(float rotationX,float rotationY,float rotationZ)364     virtual void SetRotation(float rotationX, float rotationY, float rotationZ) {}
SetShadowColor(uint32_t color)365     virtual void SetShadowColor(uint32_t color) {}
SetShadowOffset(float offsetX,float offsetY)366     virtual void SetShadowOffset(float offsetX, float offsetY) {}
SetShadowAlpha(float alpha)367     virtual void SetShadowAlpha(float alpha) {}
SetShadowElevation(float elevation)368     virtual void SetShadowElevation(float elevation) {}
SetShadowRadius(float radius)369     virtual void SetShadowRadius(float radius) {}
SetScale(float scaleX,float scaleY)370     virtual void SetScale(float scaleX, float scaleY) {}
SetScrollScale(float scale)371     virtual void SetScrollScale(float scale) {}
ResetScrollScale()372     virtual void ResetScrollScale() {}
SetBackgroundColor(uint32_t colorValue)373     virtual void SetBackgroundColor(uint32_t colorValue) {}
SetRenderPivot(float pivotX,float pivotY)374     virtual void SetRenderPivot(float pivotX, float pivotY) {}
SetFrame(float positionX,float positionY,float width,float height)375     virtual void SetFrame(float positionX, float positionY, float width, float height) {}
SetOpacity(float opacity)376     virtual void SetOpacity(float opacity) {}
SetTranslate(float translateX,float translateY,float translateZ)377     virtual void SetTranslate(float translateX, float translateY, float translateZ) {}
CleanTransition()378     virtual void CleanTransition() {}
SetRectMask(const RectF & rect,const ShapeMaskProperty & property)379     virtual void SetRectMask(const RectF& rect, const ShapeMaskProperty& property) {}
SetCircleMask(const Circle & circle,const ShapeMaskProperty & property)380     virtual void SetCircleMask(const Circle& circle, const ShapeMaskProperty& property) {}
SetRoundRectMask(const RoundRect & roundRect,const ShapeMaskProperty & property)381     virtual void SetRoundRectMask(const RoundRect& roundRect, const ShapeMaskProperty& property) {}
SetOvalMask(const RectF & rect,const ShapeMaskProperty & property)382     virtual void SetOvalMask(const RectF& rect, const ShapeMaskProperty& property) {}
SetCommandPathMask(const std::string & commands,const ShapeMaskProperty & property)383     virtual void SetCommandPathMask(const std::string& commands, const ShapeMaskProperty& property) {}
SetMarkNodeGroup(bool isNodeGroup)384     virtual void SetMarkNodeGroup(bool isNodeGroup) {}
385 
GetPaintRectWithTransform()386     virtual RectF GetPaintRectWithTransform()
387     {
388         return {};
389     }
GetRotateDegree()390     virtual int32_t GetRotateDegree() { return 0; }
391     virtual void SavePaintRect(bool isRound = true, uint16_t flag = 0) {}
SyncPartialRsProperties()392     virtual void SyncPartialRsProperties() {}
UpdatePaintRect(const RectF & paintRect)393     virtual void UpdatePaintRect(const RectF& paintRect) {}
394 
GetPaintRectWithTranslate()395     virtual std::pair<RectF, bool> GetPaintRectWithTranslate()
396     {
397         return {};
398     }
399 
GetLocalTransformMatrix()400     virtual Matrix4 GetLocalTransformMatrix()
401     {
402         return Matrix4();
403     }
404 
GetPointWithRevert(PointF & point)405     virtual void GetPointWithRevert(PointF& point) {}
406 
GetPointWithTransform(PointF & point)407     virtual void GetPointWithTransform(PointF& point) {}
408 
GetPointTransform(PointF & point)409     virtual void GetPointTransform(PointF& point) {}
410 
GetPointTransformRotate(PointF & point)411     virtual void GetPointTransformRotate(PointF& point) {}
412 
GetMatrixWithTransformRotate()413     virtual Matrix4 GetMatrixWithTransformRotate()
414     {
415         return {};
416     }
417 
GetPaintRectWithoutTransform()418     virtual RectF GetPaintRectWithoutTransform()
419     {
420         return {};
421     }
422 
GetPaintRectWithTransformWithoutDegree()423     virtual RectF GetPaintRectWithTransformWithoutDegree()
424     {
425         return {};
426     }
427 
428     // get position property
GetPropertyOfPosition()429     virtual RectF GetPropertyOfPosition()
430     {
431         return {};
432     }
433 
434     // stop the property animation and get the current paint rect.
GetShowingTranslateProperty()435     virtual OffsetF GetShowingTranslateProperty()
436     {
437         return OffsetF();
438     }
439 
CancelTranslateXYAnimation()440     virtual void CancelTranslateXYAnimation() {}
441 
GetTranslateXYProperty()442     virtual OffsetF GetTranslateXYProperty()
443     {
444         return OffsetF();
445     }
446 
447     // update translateXY in backend.
UpdateTranslateInXY(const OffsetF & offset)448     virtual void UpdateTranslateInXY(const OffsetF& offset) {}
449 
SetTransitionOutCallback(std::function<void ()> && callback)450     virtual void SetTransitionOutCallback(std::function<void()>&& callback) {}
451 
SetTransitionInCallback(std::function<void ()> && callback)452     virtual void SetTransitionInCallback(std::function<void()>&& callback) {}
453 
SetTransitionUserCallback(TransitionFinishCallback && callback)454     virtual void SetTransitionUserCallback(TransitionFinishCallback&& callback) {}
455 
456     virtual void ToJsonValue(std::unique_ptr<JsonValue>& json, const InspectorFilter& filter) const;
457 
458     virtual void FromJson(const std::unique_ptr<JsonValue>& json);
459 
ClearDrawCommands()460     virtual void ClearDrawCommands() {}
461 
RemoveOverlayModifier(const RefPtr<OverlayModifier> & modifier)462     virtual void RemoveOverlayModifier(const RefPtr<OverlayModifier>& modifier) {}
RemoveContentModifier(const RefPtr<ContentModifier> & ContentModifier)463     virtual void RemoveContentModifier(const RefPtr<ContentModifier>& ContentModifier) {}
464 
DumpInfo()465     virtual void DumpInfo() {}
DumpInfo(std::unique_ptr<JsonValue> & json)466     virtual void DumpInfo(std::unique_ptr<JsonValue>& json) {}
DumpSimplifyInfo(std::shared_ptr<JsonValue> & json)467     virtual void DumpSimplifyInfo(std::shared_ptr<JsonValue>& json) {}
DumpAdvanceInfo()468     virtual void DumpAdvanceInfo() {}
DumpAdvanceInfo(std::unique_ptr<JsonValue> & json)469     virtual void DumpAdvanceInfo(std::unique_ptr<JsonValue>& json) {}
470 
471     void ObscuredToJsonValue(std::unique_ptr<JsonValue>& json, const InspectorFilter& filter) const;
472 
473     void SetSharedTransitionOptions(const std::shared_ptr<SharedTransitionOption>& option);
474     const std::shared_ptr<SharedTransitionOption>& GetSharedTransitionOption() const;
475     void SetShareId(const ShareId& shareId);
476     const ShareId& GetShareId() const;
477     bool HasSharedTransition() const;
478     bool HasSharedTransitionOption() const;
479 
SetIsModalRootNode(bool isModalRootNode)480     void SetIsModalRootNode(bool isModalRootNode)
481     {
482         isModalRootNode_ = isModalRootNode;
483     }
484 
SetIsNeedRebuildRSTree(bool isNeedRebuildRSTree)485     void SetIsNeedRebuildRSTree(bool isNeedRebuildRSTree)
486     {
487         isNeedRebuildRSTree_ = isNeedRebuildRSTree;
488     }
489 
GetBackBlurStyle()490     std::optional<BlurStyleOption> GetBackBlurStyle() const
491     {
492         return GetBackground() ? GetBackground()->propBlurStyleOption : std::nullopt;
493     }
GetBackBlurRadius()494     std::optional<Dimension> GetBackBlurRadius() const
495     {
496         return GetBackground() ? GetBackground()->propBlurRadius : std::nullopt;
497     }
GetBackgroundEffect()498     std::optional<EffectOption> GetBackgroundEffect() const
499     {
500         return GetBackground() ? GetBackground()->propEffectOption : std::nullopt;
501     }
GetBackdropBlurOption()502     std::optional<BlurOption> GetBackdropBlurOption() const
503     {
504         return GetBackground() ? GetBackground()->propBackdropBlurOption : std::nullopt;
505     }
GetFrontBlurStyle()506     std::optional<BlurStyleOption> GetFrontBlurStyle() const
507     {
508         return GetForeground() ? GetForeground()->propBlurStyleOption : std::nullopt;
509     }
GetFrontBlurRadius()510     std::optional<Dimension> GetFrontBlurRadius() const
511     {
512         return GetForeground() ? GetForeground()->propBlurRadius : std::nullopt;
513     }
514 
AttachNodeAnimatableProperty(RefPtr<NodeAnimatablePropertyBase> modifier)515     virtual void AttachNodeAnimatableProperty(RefPtr<NodeAnimatablePropertyBase> modifier) {};
516 
DetachNodeAnimatableProperty(const RefPtr<NodeAnimatablePropertyBase> & modifier)517     virtual void DetachNodeAnimatableProperty(const RefPtr<NodeAnimatablePropertyBase>& modifier) {};
518 
PaintAccessibilityFocus()519     virtual void PaintAccessibilityFocus() {};
520 
UpdateAccessibilityRoundRect()521     virtual void UpdateAccessibilityRoundRect() {};
522 
ClearAccessibilityFocus()523     virtual void ClearAccessibilityFocus() {};
524 
525     virtual void OnAccessibilityFocusUpdate(
526         bool isAccessibilityFocus, const int64_t accessibilityIdForVirtualNode = -2100000) {};
OnAccessibilityFocusRectUpdate(RectT<int32_t> accessibilityFocusRect)527     virtual void OnAccessibilityFocusRectUpdate(RectT<int32_t> accessibilityFocusRect) {};
528 
OnMouseSelectUpdate(bool isSelected,const Color & fillColor,const Color & strokeColor)529     virtual void OnMouseSelectUpdate(bool isSelected, const Color& fillColor, const Color& strokeColor) {}
UpdateMouseSelectWithRect(const RectF & rect,const Color & fillColor,const Color & strokeColor)530     virtual void UpdateMouseSelectWithRect(const RectF& rect, const Color& fillColor, const Color& strokeColor) {}
531 
OnPositionUpdate(const OffsetT<Dimension> & value)532     virtual void OnPositionUpdate(const OffsetT<Dimension>& value) {}
OnPositionEdgesUpdate(const EdgesParam & value)533     virtual void OnPositionEdgesUpdate(const EdgesParam& value) {}
RecalculatePosition()534     virtual void RecalculatePosition() {}
OnZIndexUpdate(int32_t value)535     virtual void OnZIndexUpdate(int32_t value) {}
536 
OnBackgroundColorUpdate(const Color & value)537     virtual void OnBackgroundColorUpdate(const Color& value) {}
OnOpacityUpdate(double opacity)538     virtual void OnOpacityUpdate(double opacity) {}
OnDynamicRangeModeUpdate(DynamicRangeMode dynamicRangeMode)539     virtual void OnDynamicRangeModeUpdate(DynamicRangeMode dynamicRangeMode) {}
SetColorGamut(uint32_t colorGamut)540     virtual void SetColorGamut(uint32_t colorGamut) {}
SetAlphaOffscreen(bool isOffScreen)541     virtual void SetAlphaOffscreen(bool isOffScreen) {}
OnSphericalEffectUpdate(double radio)542     virtual void OnSphericalEffectUpdate(double radio) {}
OnPixelStretchEffectUpdate(const PixStretchEffectOption & option)543     virtual void OnPixelStretchEffectUpdate(const PixStretchEffectOption& option) {}
OnLightUpEffectUpdate(double radio)544     virtual void OnLightUpEffectUpdate(double radio) {}
OnClickEffectLevelUpdate(const ClickEffectInfo & info)545     virtual void OnClickEffectLevelUpdate(const ClickEffectInfo& info) {}
OnRenderGroupUpdate(bool isRenderGroup)546     virtual void OnRenderGroupUpdate(bool isRenderGroup) {}
UpdateRenderGroup(bool isRenderGroup,bool isForced,bool includeProperty)547     virtual void UpdateRenderGroup(bool isRenderGroup, bool isForced, bool includeProperty) {}
OnSuggestedRenderGroupUpdate(bool isRenderGroup)548     virtual void OnSuggestedRenderGroupUpdate(bool isRenderGroup) {}
OnDynamicDimDegreeUpdate(const float degree)549     virtual void OnDynamicDimDegreeUpdate(const float degree) {}
OnRenderFitUpdate(RenderFit renderFit)550     virtual void OnRenderFitUpdate(RenderFit renderFit) {}
OnNodeNameUpdate(const std::string & id)551     virtual void OnNodeNameUpdate(const std::string& id) {}
OnParticleOptionArrayUpdate(const std::list<ParticleOption> & optionArray)552     virtual void OnParticleOptionArrayUpdate(const std::list<ParticleOption>& optionArray) {}
553     ACE_DEFINE_PROPERTY_ITEM_FUNC_WITHOUT_GROUP(SphericalEffect, double);
554     ACE_DEFINE_PROPERTY_ITEM_FUNC_WITHOUT_GROUP(PixelStretchEffect, PixStretchEffectOption);
555     ACE_DEFINE_PROPERTY_ITEM_FUNC_WITHOUT_GROUP(LightUpEffect, double);
556     ACE_DEFINE_PROPERTY_ITEM_FUNC_WITHOUT_GROUP(DynamicDimDegree, float);
557     ACE_DEFINE_PROPERTY_ITEM_FUNC_WITHOUT_GROUP(ParticleOptionArray, std::list<ParticleOption>);
558     ACE_DEFINE_PROPERTY_ITEM_FUNC_WITHOUT_GROUP(ClickEffectLevel, ClickEffectInfo);
559     virtual RefPtr<PixelMap> GetThumbnailPixelMap(bool needScale = false, bool isOffline = true)
560     {
561         return nullptr;
562     }
UpdateThumbnailPixelMapScale(float & scaleX,float & scaleY)563     virtual void UpdateThumbnailPixelMapScale(float& scaleX, float& scaleY) {}
564 
CreateThumbnailPixelMapAsyncTask(bool needScale,std::function<void (const RefPtr<PixelMap>)> && callback)565     virtual bool CreateThumbnailPixelMapAsyncTask(
566         bool needScale, std::function<void(const RefPtr<PixelMap>)>&& callback)
567     {
568         return false;
569     }
570 
SetActualForegroundColor(const Color & value)571     virtual void SetActualForegroundColor(const Color& value) {}
572 
ResetSurface(int width,int height)573     virtual void ResetSurface(int width, int height) {}
PaintDebugBoundary(bool flag)574     virtual void PaintDebugBoundary(bool flag) {}
575     // transform matrix
576     ACE_DEFINE_PROPERTY_ITEM_FUNC_WITHOUT_GROUP(TransformMatrix, Matrix4);
577     ACE_DEFINE_PROPERTY_ITEM_FUNC_WITHOUT_GROUP(Transform3DMatrix, Matrix4);
578 
579     // Transform
580     ACE_DEFINE_PROPERTY_GROUP(Transform, TransformProperty);
581     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Transform, TransformScale, VectorF);
582     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Transform, TransformCenter, DimensionOffset);
583     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Transform, TransformTranslate, TranslateOptions);
584     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Transform, TransformRotate, Vector5F);
585     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Transform, TransformRotateAngle, Vector4F);
586 
587     // Foreground
588     ACE_DEFINE_PROPERTY_GROUP(Foreground, ForegroundProperty);
589     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Foreground, ForegroundEffect, float);
590 
591     // Background
592     ACE_DEFINE_PROPERTY_GROUP(Background, BackgroundProperty);
593     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Background, BackgroundImage, ImageSourceInfo);
594     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Background, BackgroundImageRepeat, ImageRepeat);
595     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Background, BackgroundImageSyncMode, bool);
596     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Background, BackgroundImageSize, BackgroundImageSize);
597     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Background, BackgroundImagePosition, BackgroundImagePosition);
598     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Background, BackgroundImageResizableSlice, ImageResizableSlice);
599 
600     // BorderImage
601     ACE_DEFINE_PROPERTY_GROUP(BdImage, BorderImageProperty);
602     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(BdImage, BorderImage, RefPtr<BorderImage>);
603     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(BdImage, BorderImageSource, ImageSourceInfo);
604     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(BdImage, HasBorderImageSlice, bool);
605     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(BdImage, HasBorderImageWidth, bool);
606     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(BdImage, HasBorderImageOutset, bool);
607     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(BdImage, HasBorderImageRepeat, bool);
608     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(BdImage, BorderImageGradient, Gradient);
609     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(BdImage, BorderSourceFromImage, bool);
610 
611     ACE_DEFINE_PROPERTY_ITEM_FUNC_WITHOUT_GROUP(BackgroundColor, Color);
612     ACE_DEFINE_PROPERTY_ITEM_FUNC_WITHOUT_GROUP(Opacity, double);
613     ACE_DEFINE_PROPERTY_ITEM_FUNC_WITHOUT_GROUP(RenderGroup, bool);
614     ACE_DEFINE_PROPERTY_ITEM_FUNC_WITHOUT_GROUP(NodeName, std::string);
615     ACE_DEFINE_PROPERTY_ITEM_FUNC_WITHOUT_GROUP(SuggestedRenderGroup, bool);
616     ACE_DEFINE_PROPERTY_ITEM_FUNC_WITHOUT_GROUP(ForegroundColor, Color);
617     ACE_DEFINE_PROPERTY_ITEM_FUNC_WITHOUT_GROUP(ForegroundColorStrategy, ForegroundColorStrategy);
618     ACE_DEFINE_PROPERTY_ITEM_FUNC_WITHOUT_GROUP(DynamicRangeMode, DynamicRangeMode);
619     ACE_DEFINE_PROPERTY_GROUP_ITEM(ForegroundColorFlag, bool);
620 
621     // CustomBackground
622     ACE_DEFINE_PROPERTY_GROUP(CustomBackground, CustomBackgroundProperty);
623     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(CustomBackground, BackgroundPixelMap, RefPtr<PixelMap>);
624     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(CustomBackground, BackgroundAlign, Alignment);
625     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(CustomBackground, CustomBackgroundColor, Color);
626     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(CustomBackground, IsTransitionBackground, bool);
627     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(CustomBackground, BuilderBackgroundFlag, bool);
628 
629     // Graphics
630     ACE_DEFINE_PROPERTY_GROUP(Graphics, GraphicsProperty);
631     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Graphics, FrontBrightness, Dimension);
632     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Graphics, FrontGrayScale, Dimension);
633     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Graphics, FrontContrast, Dimension);
634     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Graphics, FrontSaturate, Dimension);
635     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Graphics, FrontSepia, Dimension);
636     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Graphics, FrontInvert, InvertVariant);
637     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Graphics, SystemBarEffect, bool);
638     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Graphics, FrontHueRotate, float);
639     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Graphics, FrontColorBlend, Color);
640     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Graphics, LinearGradientBlur, NG::LinearGradientBlurPara);
641     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Graphics, Magnifier, MagnifierParams);
642     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Graphics, DynamicLightUpRate, float);
643     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Graphics, DynamicLightUpDegree, float);
644     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Graphics, BgDynamicBrightnessOption, BrightnessOption);
645     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Graphics, FgDynamicBrightnessOption, BrightnessOption);
646     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Graphics, BackShadow, Shadow);
647     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Graphics, BackBlendMode, BlendMode);
648     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Graphics, BackBlendApplyType, BlendApplyType);
649 
650     // BorderRadius.
651     ACE_DEFINE_PROPERTY_GROUP(Border, BorderProperty);
652     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Border, BorderRadius, BorderRadiusProperty);
653     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Border, BorderWidth, BorderWidthProperty);
654     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Border, BorderColor, BorderColorProperty);
655     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Border, BorderStyle, BorderStyleProperty);
656     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Border, DashGap, BorderWidthProperty);
657     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Border, DashWidth, BorderWidthProperty);
658 
659     // Outer Border
660     ACE_DEFINE_PROPERTY_GROUP(OuterBorder, OuterBorderProperty);
661     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(OuterBorder, OuterBorderRadius, BorderRadiusProperty);
662     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(OuterBorder, OuterBorderWidth, BorderWidthProperty);
663     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(OuterBorder, OuterBorderColor, BorderColorProperty);
664     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(OuterBorder, OuterBorderStyle, BorderStyleProperty);
665 
666     // PointLight
667     ACE_DEFINE_PROPERTY_GROUP(PointLight, PointLightProperty);
668     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(PointLight, LightPosition, TranslateOptions);
669     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(PointLight, LightIntensity, float);
670     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(PointLight, LightColor, Color);
671     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(PointLight, LightIlluminated, uint32_t);
672     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(PointLight, IlluminatedBorderWidth, Dimension);
673     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(PointLight, Bloom, float);
674 
675     // Transition Options
676     ACE_DEFINE_PROPERTY_GROUP(TransitionAppearing, TransitionOptions);
677     ACE_DEFINE_PROPERTY_GROUP(TransitionDisappearing, TransitionOptions);
678 
679     // Position
680     ACE_DEFINE_PROPERTY_GROUP(PositionProperty, RenderPositionProperty);
681     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(PositionProperty, Position, OffsetT<Dimension>);
682     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(PositionProperty, Offset, OffsetT<Dimension>);
683     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(PositionProperty, PositionEdges, EdgesParam);
684     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(PositionProperty, OffsetEdges, EdgesParam);
685     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(PositionProperty, Anchor, OffsetT<Dimension>);
686 
687     // zIndex
688     ACE_DEFINE_PROPERTY_ITEM_FUNC_WITHOUT_GROUP(ZIndex, int32_t);
689 
690     // Clip
691     ACE_DEFINE_PROPERTY_GROUP(Clip, ClipProperty);
692     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Clip, ClipShape, RefPtr<BasicShape>);
693     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Clip, ClipEdge, bool);
694     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Clip, ClipMask, RefPtr<BasicShape>);
695 
696     // ProgressMask
697     ACE_DEFINE_PROPERTY_ITEM_FUNC_WITHOUT_GROUP(ProgressMask, RefPtr<ProgressMaskProperty>);
698 
699     // Gradient
700     ACE_DEFINE_PROPERTY_GROUP(Gradient, GradientProperty);
701     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Gradient, LinearGradient, NG::Gradient);
702     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Gradient, SweepGradient, NG::Gradient);
703     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Gradient, RadialGradient, NG::Gradient);
704     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Gradient, LastGradientType, NG::GradientType);
705 
706     // Overlay
707     ACE_DEFINE_PROPERTY_GROUP(Overlay, OverlayProperty);
708     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Overlay, OverlayText, OverlayOptions)
709 
710     // MotionPath
711     ACE_DEFINE_PROPERTY_GROUP(Motion, MotionPathProperty);
712     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Motion, MotionPath, MotionPathOption)
713 
714     // accessibility
715     ACE_DEFINE_PROPERTY_ITEM_FUNC_WITHOUT_GROUP_FOR_VIRTUAL_NODE(AccessibilityFocus, bool);
716     ACE_DEFINE_PROPERTY_ITEM_FUNC_WITHOUT_GROUP(AccessibilityFocusRect, RectT<int32_t>);
717 
718     // useEffect
719     ACE_DEFINE_PROPERTY_ITEM_FUNC_WITHOUT_GROUP(UseEffect, bool);
720     ACE_DEFINE_PROPERTY_ITEM_FUNC_WITHOUT_GROUP(UseEffectType, EffectType);
721 
722     // useShadowBatching
723     ACE_DEFINE_PROPERTY_ITEM_FUNC_WITHOUT_GROUP(UseShadowBatching, bool);
724 
725     // freeze
726     ACE_DEFINE_PROPERTY_ITEM_FUNC_WITHOUT_GROUP(Freeze, bool);
727 
728     // obscured
729     ACE_DEFINE_PROPERTY_ITEM_FUNC_WITHOUT_GROUP(Obscured, std::vector<ObscuredReasons>);
730 
731     // renderFit
732     ACE_DEFINE_PROPERTY_ITEM_FUNC_WITHOUT_GROUP(RenderFit, RenderFit);
733 
734     // AttractionEffect
735     ACE_DEFINE_PROPERTY_ITEM_FUNC_WITHOUT_GROUP(AttractionEffect, AttractionEffect);
736 
737     virtual void SetUsingContentRectForRenderFrame(bool value, bool adjustRSFrameByContentRect = false) {}
SetFrameGravity(OHOS::Rosen::Gravity gravity)738     virtual void SetFrameGravity(OHOS::Rosen::Gravity gravity) {}
739 
CalcExpectedFrameRate(const std::string & scene,float speed)740     virtual int32_t CalcExpectedFrameRate(const std::string& scene, float speed)
741     {
742         return 0;
743     }
744 
IsUniRenderEnabled()745     virtual bool IsUniRenderEnabled()
746     {
747         return true;
748     }
SetRenderFrameOffset(const OffsetF & offset)749     virtual void SetRenderFrameOffset(const OffsetF& offset) {}
750 
DoTextureExport(uint64_t)751     virtual bool DoTextureExport(uint64_t /* surfaceId */)
752     {
753         return false;
754     }
755 
StopTextureExport()756     virtual bool StopTextureExport()
757     {
758         return false;
759     }
760 
SetSurfaceRotation(bool isLock)761     virtual void SetSurfaceRotation(bool isLock) {}
762 
SetHandleChildBounds(bool value)763     void SetHandleChildBounds(bool value) {
764         handleChildBounds_ = value;
765     }
766 
GetRevertMatrix()767     virtual Matrix4 GetRevertMatrix()
768     {
769         return Matrix4();
770     }
771 
SuggestOpIncNode(bool isOpincNode,bool isNeedCalculate)772     virtual void SuggestOpIncNode(bool isOpincNode, bool isNeedCalculate) {}
773 
774     // The additional opacity will be multiplied with the base opacity.
SetOpacityMultiplier(float opacity)775     virtual void SetOpacityMultiplier(float opacity) {}
776 
SetNeedAnimateFlag(bool isNeedAnimate)777     void SetNeedAnimateFlag(bool isNeedAnimate)
778     {
779         isNeedAnimate_ = isNeedAnimate;
780     }
781 
GetNodeId()782     virtual uint64_t GetNodeId() const
783     {
784         return 0;
785     }
786 
IsDisappearing()787     virtual bool IsDisappearing() const
788     {
789         return false;
790     }
791 
SetRenderFit(RenderFit renderFit)792     virtual void SetRenderFit(RenderFit renderFit) {}
793 
GetBaseTransalteInXY()794     virtual OffsetF GetBaseTransalteInXY() const
795     {
796         return OffsetF{0.0f, 0.0f};
797     }
SetBaseTranslateInXY(const OffsetF & offset)798     virtual void SetBaseTranslateInXY(const OffsetF& offset) {}
GetBaseRotateInZ()799     virtual float GetBaseRotateInZ() const
800     {
801         return 0.0f;
802     }
SetBaseRotateInZ(float degree)803     virtual void SetBaseRotateInZ(float degree) {}
804 
UpdateWindowBlur()805     virtual void UpdateWindowBlur() {}
GetAnimationsCount()806     virtual size_t GetAnimationsCount() const
807     {
808         return 0;
809     }
MarkUiFirstNode(bool isUiFirstNode)810     virtual void MarkUiFirstNode(bool isUiFirstNode) {}
811 
AddNodeToRsTree()812     virtual bool AddNodeToRsTree()
813     {
814         return false;
815     }
816 
SetDrawNode()817     virtual void SetDrawNode() {}
818 
819     static void SetNeedCallbackNodeChange(bool needCallback);
820 
UpdateOcclusionCullingStatus(bool enable)821     virtual void UpdateOcclusionCullingStatus(bool enable) {}
822 
SetAnimationPropertyValue(AnimationPropertyType property,const std::vector<float> & value)823     virtual void SetAnimationPropertyValue(AnimationPropertyType property, const std::vector<float>& value) {}
824 
CancelPropertyAnimation(AnimationPropertyType property)825     virtual void CancelPropertyAnimation(AnimationPropertyType property) {}
826 
GetRenderNodePropertyValue(AnimationPropertyType property)827     virtual std::vector<float> GetRenderNodePropertyValue(AnimationPropertyType property)
828     {
829         return {};
830     }
831 
SyncRSPropertyToRenderContext(AnimationPropertyType property)832     virtual void SyncRSPropertyToRenderContext(AnimationPropertyType property) {}
833 
RemoveFromTree()834     virtual void RemoveFromTree() {}
835 
SetNeedUseCmdlistDrawRegion(bool needUseCmdlistDrawRegion)836     virtual void SetNeedUseCmdlistDrawRegion(bool needUseCmdlistDrawRegion) {}
837 
UpdateCustomBackground()838     virtual void UpdateCustomBackground() {}
839 
840 protected:
841     RenderContext() = default;
842     std::shared_ptr<SharedTransitionOption> sharedTransitionOption_;
843     ShareId shareId_;
844     bool isModalRootNode_ = false;
845     bool isSynced_ = false;
846     bool isNeedRebuildRSTree_ = true;
847     bool handleChildBounds_ = false;
848     bool isNeedAnimate_ = true;
849 
OnBackgroundImageUpdate(const ImageSourceInfo & imageSourceInfo)850     virtual void OnBackgroundImageUpdate(const ImageSourceInfo& imageSourceInfo) {}
OnBackgroundImageRepeatUpdate(const ImageRepeat & imageRepeat)851     virtual void OnBackgroundImageRepeatUpdate(const ImageRepeat& imageRepeat) {}
OnBackgroundImageSyncModeUpdate(bool syncMode)852     virtual void OnBackgroundImageSyncModeUpdate(bool syncMode) {}
OnBackgroundImageSizeUpdate(const BackgroundImageSize & bgImgSize)853     virtual void OnBackgroundImageSizeUpdate(const BackgroundImageSize& bgImgSize) {}
OnBackgroundImagePositionUpdate(const BackgroundImagePosition & bgImgPosition)854     virtual void OnBackgroundImagePositionUpdate(const BackgroundImagePosition& bgImgPosition) {}
OnBackgroundImageResizableSliceUpdate(const ImageResizableSlice & slice)855     virtual void OnBackgroundImageResizableSliceUpdate(const ImageResizableSlice& slice) {}
856 
OnForegroundColorUpdate(const Color & value)857     virtual void OnForegroundColorUpdate(const Color& value) {}
OnForegroundColorStrategyUpdate(const ForegroundColorStrategy & value)858     virtual void OnForegroundColorStrategyUpdate(const ForegroundColorStrategy& value) {}
OnForegroundEffectUpdate(float radius)859     virtual void OnForegroundEffectUpdate(float radius) {};
860 
OnBackgroundPixelMapUpdate(const RefPtr<PixelMap> & value)861     virtual void OnBackgroundPixelMapUpdate(const RefPtr<PixelMap>& value) {}
OnBackgroundAlignUpdate(const Alignment & align)862     virtual void OnBackgroundAlignUpdate(const Alignment& align) {}
OnCustomBackgroundColorUpdate(const Color & color)863     virtual void OnCustomBackgroundColorUpdate(const Color& color) {}
OnIsTransitionBackgroundUpdate(bool isTransitionBackground)864     virtual void OnIsTransitionBackgroundUpdate(bool isTransitionBackground) {}
OnBuilderBackgroundFlagUpdate(bool isBuilderBackground)865     virtual void OnBuilderBackgroundFlagUpdate(bool isBuilderBackground) {}
866 
OnBorderImageUpdate(const RefPtr<BorderImage> & borderImage)867     virtual void OnBorderImageUpdate(const RefPtr<BorderImage>& borderImage) {}
OnBorderImageSourceUpdate(const ImageSourceInfo & borderImageSourceInfo)868     virtual void OnBorderImageSourceUpdate(const ImageSourceInfo& borderImageSourceInfo) {}
OnHasBorderImageSliceUpdate(bool tag)869     virtual void OnHasBorderImageSliceUpdate(bool tag) {}
OnHasBorderImageWidthUpdate(bool tag)870     virtual void OnHasBorderImageWidthUpdate(bool tag) {}
OnHasBorderImageOutsetUpdate(bool tag)871     virtual void OnHasBorderImageOutsetUpdate(bool tag) {}
OnHasBorderImageRepeatUpdate(bool tag)872     virtual void OnHasBorderImageRepeatUpdate(bool tag) {}
OnBorderImageGradientUpdate(const Gradient & gradient)873     virtual void OnBorderImageGradientUpdate(const Gradient& gradient) {}
OnBorderSourceFromImageUpdate(bool sourceFromImage)874     virtual void OnBorderSourceFromImageUpdate(bool sourceFromImage) {}
875 
OnBorderWidthUpdate(const BorderWidthProperty & value)876     virtual void OnBorderWidthUpdate(const BorderWidthProperty& value) {}
OnBorderRadiusUpdate(const BorderRadiusProperty & value)877     virtual void OnBorderRadiusUpdate(const BorderRadiusProperty& value) {}
OnBorderColorUpdate(const BorderColorProperty & value)878     virtual void OnBorderColorUpdate(const BorderColorProperty& value) {}
OnBorderStyleUpdate(const BorderStyleProperty & value)879     virtual void OnBorderStyleUpdate(const BorderStyleProperty& value) {}
OnDashGapUpdate(const BorderWidthProperty & value)880     virtual void OnDashGapUpdate(const BorderWidthProperty& value) {}
OnDashWidthUpdate(const BorderWidthProperty & value)881     virtual void OnDashWidthUpdate(const BorderWidthProperty& value) {}
882 
OnOuterBorderWidthUpdate(const BorderWidthProperty & value)883     virtual void OnOuterBorderWidthUpdate(const BorderWidthProperty& value) {}
OnOuterBorderRadiusUpdate(const BorderRadiusProperty & value)884     virtual void OnOuterBorderRadiusUpdate(const BorderRadiusProperty& value) {}
OnOuterBorderColorUpdate(const BorderColorProperty & value)885     virtual void OnOuterBorderColorUpdate(const BorderColorProperty& value) {}
OnOuterBorderStyleUpdate(const BorderStyleProperty & value)886     virtual void OnOuterBorderStyleUpdate(const BorderStyleProperty& value) {}
887 
OnLightPositionUpdate(const TranslateOptions & value)888     virtual void OnLightPositionUpdate(const TranslateOptions& value) {}
OnLightIntensityUpdate(const float value)889     virtual void OnLightIntensityUpdate(const float value) {}
OnLightColorUpdate(const Color & value)890     virtual void OnLightColorUpdate(const Color& value) {}
OnLightIlluminatedUpdate(const uint32_t value)891     virtual void OnLightIlluminatedUpdate(const uint32_t value) {}
OnIlluminatedBorderWidthUpdate(const Dimension & value)892     virtual void OnIlluminatedBorderWidthUpdate(const Dimension& value) {}
OnBloomUpdate(const float value)893     virtual void OnBloomUpdate(const float value) {}
894 
OnTransformRotateUpdate(const Vector5F & value)895     virtual void OnTransformRotateUpdate(const Vector5F& value) {}
OnTransformRotateAngleUpdate(const Vector4F & value)896     virtual void OnTransformRotateAngleUpdate(const Vector4F& value) {}
OnTransformMatrixUpdate(const Matrix4 & matrix)897     virtual void OnTransformMatrixUpdate(const Matrix4& matrix) {}
OnTransform3DMatrixUpdate(const Matrix4 & matrix)898     virtual void OnTransform3DMatrixUpdate(const Matrix4& matrix) {}
899 
OnAnchorUpdate(const OffsetT<Dimension> & value)900     virtual void OnAnchorUpdate(const OffsetT<Dimension>& value) {}
901 
OnClipShapeUpdate(const RefPtr<BasicShape> & basicShape)902     virtual void OnClipShapeUpdate(const RefPtr<BasicShape>& basicShape) {}
OnClipEdgeUpdate(bool isClip)903     virtual void OnClipEdgeUpdate(bool isClip) {}
OnClipMaskUpdate(const RefPtr<BasicShape> & basicShape)904     virtual void OnClipMaskUpdate(const RefPtr<BasicShape>& basicShape) {}
905 
OnProgressMaskUpdate(const RefPtr<ProgressMaskProperty> & progress)906     virtual void OnProgressMaskUpdate(const RefPtr<ProgressMaskProperty>& progress) {}
907 
OnLinearGradientUpdate(const NG::Gradient & value)908     virtual void OnLinearGradientUpdate(const NG::Gradient& value) {}
OnSweepGradientUpdate(const NG::Gradient & value)909     virtual void OnSweepGradientUpdate(const NG::Gradient& value) {}
OnRadialGradientUpdate(const NG::Gradient & value)910     virtual void OnRadialGradientUpdate(const NG::Gradient& value) {}
OnLastGradientTypeUpdate(const NG::GradientType & value)911     virtual void OnLastGradientTypeUpdate(const NG::GradientType& value) {}
912 
OnFrontBrightnessUpdate(const Dimension & value)913     virtual void OnFrontBrightnessUpdate(const Dimension& value) {}
OnFrontGrayScaleUpdate(const Dimension & value)914     virtual void OnFrontGrayScaleUpdate(const Dimension& value) {}
OnFrontContrastUpdate(const Dimension & value)915     virtual void OnFrontContrastUpdate(const Dimension& value) {}
OnFrontSaturateUpdate(const Dimension & value)916     virtual void OnFrontSaturateUpdate(const Dimension& value) {}
OnFrontSepiaUpdate(const Dimension & value)917     virtual void OnFrontSepiaUpdate(const Dimension& value) {}
OnFrontInvertUpdate(const InvertVariant & value)918     virtual void OnFrontInvertUpdate(const InvertVariant& value) {}
OnSystemBarEffectUpdate(bool systemBarEffect)919     virtual void OnSystemBarEffectUpdate(bool systemBarEffect) {}
OnFrontHueRotateUpdate(float value)920     virtual void OnFrontHueRotateUpdate(float value) {}
OnFrontColorBlendUpdate(const Color & value)921     virtual void OnFrontColorBlendUpdate(const Color& value) {}
OnLinearGradientBlurUpdate(const NG::LinearGradientBlurPara & blurPara)922     virtual void OnLinearGradientBlurUpdate(const NG::LinearGradientBlurPara& blurPara) {}
OnMagnifierUpdate(const MagnifierParams & magnifierParams)923     virtual void OnMagnifierUpdate(const MagnifierParams& magnifierParams) {}
OnDynamicLightUpRateUpdate(const float rate)924     virtual void OnDynamicLightUpRateUpdate(const float rate) {}
OnDynamicLightUpDegreeUpdate(const float degree)925     virtual void OnDynamicLightUpDegreeUpdate(const float degree) {}
OnBgDynamicBrightnessOptionUpdate(const std::optional<BrightnessOption> & brightnessOption)926     virtual void OnBgDynamicBrightnessOptionUpdate(const std::optional<BrightnessOption>& brightnessOption) {}
OnFgDynamicBrightnessOptionUpdate(const std::optional<BrightnessOption> & brightnessOption)927     virtual void OnFgDynamicBrightnessOptionUpdate(const std::optional<BrightnessOption>& brightnessOption) {}
OnBackShadowUpdate(const Shadow & shadow)928     virtual void OnBackShadowUpdate(const Shadow& shadow) {}
OnBackBlendModeUpdate(BlendMode blendMode)929     virtual void OnBackBlendModeUpdate(BlendMode blendMode) {}
OnBackBlendApplyTypeUpdate(BlendApplyType blendApplyType)930     virtual void OnBackBlendApplyTypeUpdate(BlendApplyType blendApplyType) {}
931 
OnOverlayTextUpdate(const OverlayOptions & overlay)932     virtual void OnOverlayTextUpdate(const OverlayOptions& overlay) {}
OnMotionPathUpdate(const MotionPathOption & motionPath)933     virtual void OnMotionPathUpdate(const MotionPathOption& motionPath) {}
OnUseEffectUpdate(bool useEffect)934     virtual void OnUseEffectUpdate(bool useEffect) {}
OnUseEffectTypeUpdate(EffectType effectType)935     virtual void OnUseEffectTypeUpdate(EffectType effectType) {}
GetStatusByEffectTypeAndWindow()936     virtual bool GetStatusByEffectTypeAndWindow() { return false; }
OnUseShadowBatchingUpdate(bool useShadowBatching)937     virtual void OnUseShadowBatchingUpdate(bool useShadowBatching) {}
OnFreezeUpdate(bool isFreezed)938     virtual void OnFreezeUpdate(bool isFreezed) {}
OnObscuredUpdate(const std::vector<ObscuredReasons> & reasons)939     virtual void OnObscuredUpdate(const std::vector<ObscuredReasons>& reasons) {}
OnAttractionEffectUpdate(const AttractionEffect & effect)940     virtual void OnAttractionEffectUpdate(const AttractionEffect& effect) {}
941 
942 private:
943     void RequestNextFrameMultiThread() const;
944     friend class ViewAbstract;
945     friend class ViewAbstractModelStatic;
946     std::function<void()> requestFrame_;
947     WeakPtr<FrameNode> host_;
948     RefPtr<OneCenterTransitionOptionType> oneCenterTransition_;
949     ACE_DISALLOW_COPY_AND_MOVE(RenderContext);
950 };
951 } // namespace OHOS::Ace::NG
952 
953 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PAINTS_RENDER_CONTEXT_H
954