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