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