• 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 <functional>
20 
21 #include "base/geometry/dimension.h"
22 #include "base/geometry/matrix4.h"
23 #include "base/geometry/ng/offset_t.h"
24 #include "base/geometry/ng/rect_t.h"
25 #include "base/geometry/ng/vector.h"
26 #include "base/memory/ace_type.h"
27 #include "base/utils/noncopyable.h"
28 #include "core/animation/page_transition_common.h"
29 #include "core/components/common/layout/constants.h"
30 #include "core/components/common/properties/color.h"
31 #include "core/components/common/properties/shared_transition_option.h"
32 #include "core/components_ng/base/modifier.h"
33 #include "core/components_ng/property/border_property.h"
34 #include "core/components_ng/property/overlay_property.h"
35 #include "core/components_ng/property/particle_property.h"
36 #include "core/components_ng/property/progress_mask_property.h"
37 #include "core/components_ng/property/property.h"
38 #include "core/components_ng/property/particle_property_animation.h"
39 #include "core/components_ng/property/transition_property.h"
40 #include "core/components_ng/render/animation_utils.h"
41 #include "core/components_ng/render/drawing_forward.h"
42 #include "core/components_ng/render/render_property.h"
43 #include "core/pipeline/base/constants.h"
44 
45 namespace OHOS::Rosen {
46 class DrawCmdList;
47 enum class Gravity;
48 }
49 
50 namespace OHOS::Ace::NG {
51 class GeometryNode;
52 class RenderPropertyNode;
53 class FrameNode;
54 class Modifier;
55 
56 using CanvasDrawFunction = std::function<void(RSCanvas& canvas)>;
57 
58 inline constexpr int32_t ZINDEX_DEFAULT_VALUE = 0;
59 
60 // RenderContext is used for render node to paint.
61 class RenderContext : public virtual AceType {
62     DECLARE_ACE_TYPE(NG::RenderContext, AceType)
63 
64 public:
65     ~RenderContext() override = default;
66 
67     static RefPtr<RenderContext> Create();
68 
69     void SetRequestFrame(const std::function<void()>& requestFrame);
70     void RequestNextFrame() const;
71 
72     void SetHostNode(const WeakPtr<FrameNode>& host);
73     RefPtr<FrameNode> GetHost() const;
74 
SetNeedDebugBoundary(bool flag)75     virtual void SetNeedDebugBoundary(bool flag) {}
NeedDebugBoundary()76     virtual bool NeedDebugBoundary() const
77     {
78         return false;
79     }
80 
FlushContentDrawFunction(CanvasDrawFunction && contentDraw)81     virtual void FlushContentDrawFunction(CanvasDrawFunction&& contentDraw) {}
82 
FlushForegroundDrawFunction(CanvasDrawFunction && foregroundDraw)83     virtual void FlushForegroundDrawFunction(CanvasDrawFunction&& foregroundDraw) {}
84 
FlushOverlayDrawFunction(CanvasDrawFunction && overlayDraw)85     virtual void FlushOverlayDrawFunction(CanvasDrawFunction&& overlayDraw) {}
86 
FlushContentModifier(const RefPtr<Modifier> & modifier)87     virtual void FlushContentModifier(const RefPtr<Modifier>& modifier) {}
FlushForegroundModifier(const RefPtr<Modifier> & modifier)88     virtual void FlushForegroundModifier(const RefPtr<Modifier>& modifier) {}
FlushOverlayModifier(const RefPtr<Modifier> & modifier)89     virtual void FlushOverlayModifier(const RefPtr<Modifier>& modifier) {}
90 
RebuildFrame(FrameNode * self,const std::list<RefPtr<FrameNode>> & children)91     virtual void RebuildFrame(FrameNode* self, const std::list<RefPtr<FrameNode>>& children) {};
92 
AddFrameChildren(FrameNode * self,const std::list<RefPtr<FrameNode>> & children)93     virtual void AddFrameChildren(FrameNode* self, const std::list<RefPtr<FrameNode>>& children) {};
94 
RemoveFrameChildren(FrameNode * self,const std::list<RefPtr<FrameNode>> & children)95     virtual void RemoveFrameChildren(FrameNode* self, const std::list<RefPtr<FrameNode>>& children) {};
96 
MoveFrame(FrameNode * self,const RefPtr<FrameNode> & child,int32_t index)97     virtual void MoveFrame(FrameNode* self, const RefPtr<FrameNode>& child, int32_t index) {}
98 
SyncGeometryProperties(GeometryNode * geometryNode)99     virtual void SyncGeometryProperties(GeometryNode* geometryNode) {}
100 
SyncGeometryProperties(const RectF & rectF)101     virtual void SyncGeometryProperties(const RectF& rectF) {}
102 
103     // draw self and children in sandbox origin at parent's absolute position in root, drawing in sandbox
104     // will be unaffected by parent's transition.
SetSandBox(const std::optional<OffsetF> & parentPosition)105     virtual void SetSandBox(const std::optional<OffsetF>& parentPosition) {};
106 
RegisterSharedTransition(const RefPtr<RenderContext> & other)107     virtual void RegisterSharedTransition(const RefPtr<RenderContext>& other) {}
UnregisterSharedTransition(const RefPtr<RenderContext> & other)108     virtual void UnregisterSharedTransition(const RefPtr<RenderContext>& other) {}
109 
OnModifyDone()110     virtual void OnModifyDone() {}
111 
112     enum class ContextType : int8_t { CANVAS, ROOT, SURFACE, EFFECT, EXTERNAL, INCREMENTAL_CANVAS, HARDWARE_SURFACE };
113     struct ContextParam {
114         ContextType type;
115         std::optional<std::string> surfaceName;
116     };
InitContext(bool isRoot,const std::optional<ContextParam> & param)117     virtual void InitContext(bool isRoot, const std::optional<ContextParam>& param)
118     {}
119 
SetSurfaceChangedCallBack(const std::function<void (float,float,float,float)> & callback)120     virtual void SetSurfaceChangedCallBack(
121         const std::function<void(float, float, float, float)>& callback) {}
RemoveSurfaceChangedCallBack()122     virtual void RemoveSurfaceChangedCallBack() {}
123 
StartRecording()124     virtual void StartRecording() {}
StopRecordingIfNeeded()125     virtual void StopRecordingIfNeeded() {}
126 
SetDrawContentAtLast(bool useDrawContentLastOrder)127     virtual void SetDrawContentAtLast(bool useDrawContentLastOrder) {}
128 
ResetBlendBgColor()129     virtual void ResetBlendBgColor() {}
130 
BlendBgColor(const Color & color)131     virtual void BlendBgColor(const Color& color) {}
132 
ResetBlendBorderColor()133     virtual void ResetBlendBorderColor() {}
134 
BlendBorderColor(const Color & color)135     virtual void BlendBorderColor(const Color& color) {}
136 
137     // Paint focus state by component's setting. It will paint along the paintRect
138     virtual void PaintFocusState(const RoundRect& paintRect, const Color& paintColor, const Dimension& paintWidth,
139         bool isAccessibilityFocus = false)
140     {}
141     // Paint focus state by component's setting. It will paint along the frameRect(padding: focusPaddingVp)
142     virtual void PaintFocusState(const RoundRect& paintRect, const Dimension& focusPaddingVp, const Color& paintColor,
143         const Dimension& paintWidth, bool isAccessibilityFocus = false)
144     {}
145     // Paint focus state by default. It will paint along the component rect(padding: focusPaddingVp)
PaintFocusState(const Dimension & focusPaddingVp,const Color & paintColor,const Dimension & paintWidth)146     virtual void PaintFocusState(const Dimension& focusPaddingVp, const Color& paintColor, const Dimension& paintWidth)
147     {}
148 
ClearFocusState()149     virtual void ClearFocusState() {}
150 
CreateBackgroundPixelMap(const RefPtr<FrameNode> & value)151     virtual void CreateBackgroundPixelMap(const RefPtr<FrameNode>& value) {}
152 
UpdateBorderWidthF(const BorderWidthPropertyF & value)153     virtual void UpdateBorderWidthF(const BorderWidthPropertyF& value) {}
154 
155     // clip node without padding
SetClipToFrame(bool useClip)156     virtual void SetClipToFrame(bool useClip) {}
157 
158     // clip node with padding
SetClipToBounds(bool useClip)159     virtual void SetClipToBounds(bool useClip) {}
SetClipBoundsWithCommands(const std::string & commands)160     virtual void SetClipBoundsWithCommands(const std::string& commands) {};
SetVisible(bool visible)161     virtual void SetVisible(bool visible) {}
162 
MarkContentChanged(bool isChanged)163     virtual void MarkContentChanged(bool isChanged) {}
MarkDrivenRender(bool flag)164     virtual void MarkDrivenRender(bool flag) {}
MarkDrivenRenderItemIndex(int32_t index)165     virtual void MarkDrivenRenderItemIndex(int32_t index) {}
MarkDrivenRenderFramePaintState(bool flag)166     virtual void MarkDrivenRenderFramePaintState(bool flag) {}
167 
AnimateHoverEffectScale(bool isHovered)168     virtual void AnimateHoverEffectScale(bool isHovered) {}
AnimateHoverEffectBoard(bool isHovered)169     virtual void AnimateHoverEffectBoard(bool isHovered) {}
170 
UpdateTransition(const TransitionOptions & options)171     virtual void UpdateTransition(const TransitionOptions& options) {}
UpdateChainedTransition(const RefPtr<NG::ChainedTransitionEffect> & effect)172     virtual void UpdateChainedTransition(const RefPtr<NG::ChainedTransitionEffect>& effect) {}
OnNodeDisappear(bool recursive)173     virtual void OnNodeDisappear(bool recursive) {}
OnNodeAppear(bool recursive)174     virtual void OnNodeAppear(bool recursive) {}
HasTransitionOutAnimation()175     virtual bool HasTransitionOutAnimation() const
176     {
177         return false;
178     }
179 
HasTransition()180     virtual bool HasTransition() const
181     {
182         return false;
183     }
184 
IsSynced()185     virtual bool IsSynced() const
186     {
187         return isSynced_;
188     }
189 
TriggerPageTransition(PageTransitionType type,const std::function<void ()> & onFinish)190     virtual bool TriggerPageTransition(PageTransitionType type, const std::function<void()>& onFinish)
191     {
192         return false;
193     }
194 
SetSharedTranslate(float xTranslate,float yTranslate)195     virtual void SetSharedTranslate(float xTranslate, float yTranslate) {}
ResetSharedTranslate()196     virtual void ResetSharedTranslate() {}
ResetPageTransitionEffect()197     virtual void ResetPageTransitionEffect() {}
198 
AddChild(const RefPtr<RenderContext> & renderContext,int index)199     virtual void AddChild(const RefPtr<RenderContext>& renderContext, int index) {}
RemoveChild(const RefPtr<RenderContext> & renderContext)200     virtual void RemoveChild(const RefPtr<RenderContext>& renderContext) {}
ClearChildren()201     virtual void ClearChildren() {}
SetBounds(float positionX,float positionY,float width,float height)202     virtual void SetBounds(float positionX, float positionY, float width, float height) {}
SetContentRectToFrame(RectF rect)203     virtual void SetContentRectToFrame(RectF rect) {}
204 
UpdateBackBlurRadius(const Dimension & radius)205     virtual void UpdateBackBlurRadius(const Dimension& radius) {}
UpdateBackBlurStyle(const std::optional<BlurStyleOption> & bgBlurStyle)206     virtual void UpdateBackBlurStyle(const std::optional<BlurStyleOption>& bgBlurStyle) {}
UpdateBackgroundEffect(const std::optional<EffectOption> & effectOption)207     virtual void UpdateBackgroundEffect(const std::optional<EffectOption>& effectOption) {}
UpdateFrontBlurStyle(const std::optional<BlurStyleOption> & fgBlurStyle)208     virtual void UpdateFrontBlurStyle(const std::optional<BlurStyleOption>& fgBlurStyle) {}
UpdateFrontBlurRadius(const Dimension & radius)209     virtual void UpdateFrontBlurRadius(const Dimension& radius) {}
ResetBackBlurStyle()210     virtual void ResetBackBlurStyle() {}
ClipWithRect(const RectF & rectF)211     virtual void ClipWithRect(const RectF& rectF) {}
ClipWithRRect(const RectF & rectF,const RadiusF & radiusF)212     virtual void ClipWithRRect(const RectF& rectF, const RadiusF& radiusF) {}
213 
OpacityAnimation(const AnimationOption & option,double begin,double end)214     virtual void OpacityAnimation(const AnimationOption& option, double begin, double end) {}
ScaleAnimation(const AnimationOption & option,double begin,double end)215     virtual void ScaleAnimation(const AnimationOption& option, double begin, double end) {}
216 
OnTransformTranslateUpdate(const TranslateOptions & value)217     virtual void OnTransformTranslateUpdate(const TranslateOptions& value) {}
OnTransformScaleUpdate(const VectorF & value)218     virtual void OnTransformScaleUpdate(const VectorF& value) {}
OnTransformCenterUpdate(const DimensionOffset & value)219     virtual void OnTransformCenterUpdate(const DimensionOffset& value) {}
OnOffsetUpdate(const OffsetT<Dimension> & value)220     virtual void OnOffsetUpdate(const OffsetT<Dimension>& value) {}
221 
GetPaintRectWithTransform()222     virtual RectF GetPaintRectWithTransform()
223     {
224         return {};
225     }
226 
GetPaintRectWithTranslate()227     virtual RectF GetPaintRectWithTranslate()
228     {
229         return {};
230     }
231 
GetPointWithRevert(PointF & point)232     virtual void GetPointWithRevert(PointF& point) {}
233 
GetPointWithTransform(PointF & point)234     virtual void GetPointWithTransform(PointF& point) {}
235 
GetPaintRectWithoutTransform()236     virtual RectF GetPaintRectWithoutTransform()
237     {
238         return {};
239     }
240 
241     // get position property
GetPropertyOfPosition()242     virtual RectF GetPropertyOfPosition()
243     {
244         return {};
245     }
246 
247     // stop the property animation and get the current paint rect.
GetShowingTranslateProperty()248     virtual OffsetF GetShowingTranslateProperty()
249     {
250         return OffsetF();
251     }
252     // update translateXY in backend.
UpdateTranslateInXY(const OffsetF & offset)253     virtual void UpdateTranslateInXY(const OffsetF& offset) {}
254 
255     virtual void ToJsonValue(std::unique_ptr<JsonValue>& json) const;
256 
257     virtual void FromJson(const std::unique_ptr<JsonValue>& json);
258 
ClearDrawCommands()259     virtual void ClearDrawCommands() {}
260 
DumpInfo()261     virtual void DumpInfo() const {}
262 
263     void ObscuredToJsonValue(std::unique_ptr<JsonValue>& json) const;
264 
SetSharedTransitionOptions(const std::shared_ptr<SharedTransitionOption> & option)265     void SetSharedTransitionOptions(const std::shared_ptr<SharedTransitionOption>& option)
266     {
267         sharedTransitionOption_ = option;
268     }
GetSharedTransitionOption()269     const std::shared_ptr<SharedTransitionOption>& GetSharedTransitionOption() const
270     {
271         return sharedTransitionOption_;
272     }
SetShareId(const ShareId & shareId)273     void SetShareId(const ShareId& shareId)
274     {
275         shareId_ = shareId;
276     }
GetShareId()277     const ShareId& GetShareId() const
278     {
279         return shareId_;
280     }
HasSharedTransition()281     bool HasSharedTransition() const
282     {
283         return !shareId_.empty();
284     }
HasSharedTransitionOption()285     bool HasSharedTransitionOption() const
286     {
287         return sharedTransitionOption_ != nullptr;
288     }
289 
SetIsModalRootNode(bool isModalRootNode)290     void SetIsModalRootNode(bool isModalRootNode)
291     {
292         isModalRootNode_ = isModalRootNode;
293     }
294 
GetBackBlurStyle()295     std::optional<BlurStyleOption> GetBackBlurStyle() const
296     {
297         return GetBackground() ? GetBackground()->propBlurStyleOption : std::nullopt;
298     }
GetBackBlurRadius()299     std::optional<Dimension> GetBackBlurRadius() const
300     {
301         return GetBackground() ? GetBackground()->propBlurRadius : std::nullopt;
302     }
GetBackgroundEffect()303     std::optional<EffectOption> GetBackgroundEffect() const
304     {
305         return GetBackground() ? GetBackground()->propEffectOption : std::nullopt;
306     }
GetFrontBlurStyle()307     std::optional<BlurStyleOption> GetFrontBlurStyle() const
308     {
309         return GetForeground() ? GetForeground()->propBlurStyleOption : std::nullopt;
310     }
GetFrontBlurRadius()311     std::optional<Dimension> GetFrontBlurRadius() const
312     {
313         return GetForeground() ? GetForeground()->propBlurRadius : std::nullopt;
314     }
315 
AttachNodeAnimatableProperty(RefPtr<NodeAnimatablePropertyBase> modifier)316     virtual void AttachNodeAnimatableProperty(RefPtr<NodeAnimatablePropertyBase> modifier) {};
317 
PaintAccessibilityFocus()318     virtual void PaintAccessibilityFocus() {};
319 
ClearAccessibilityFocus()320     virtual void ClearAccessibilityFocus() {};
321 
OnAccessibilityFocusUpdate(bool isAccessibilityFocus)322     virtual void OnAccessibilityFocusUpdate(bool isAccessibilityFocus) {};
323 
OnMouseSelectUpdate(bool isSelected,const Color & fillColor,const Color & strokeColor)324     virtual void OnMouseSelectUpdate(bool isSelected, const Color& fillColor, const Color& strokeColor) {}
UpdateMouseSelectWithRect(const RectF & rect,const Color & fillColor,const Color & strokeColor)325     virtual void UpdateMouseSelectWithRect(const RectF& rect, const Color& fillColor, const Color& strokeColor) {}
326 
OnPositionUpdate(const OffsetT<Dimension> & value)327     virtual void OnPositionUpdate(const OffsetT<Dimension>& value) {}
OnZIndexUpdate(int32_t value)328     virtual void OnZIndexUpdate(int32_t value) {}
329 
OnBackgroundColorUpdate(const Color & value)330     virtual void OnBackgroundColorUpdate(const Color& value) {}
OnOpacityUpdate(double opacity)331     virtual void OnOpacityUpdate(double opacity) {}
OnSphericalEffectUpdate(double radio)332     virtual void OnSphericalEffectUpdate(double radio) {}
OnPixelStretchEffectUpdate(const PixStretchEffectOption & option)333     virtual void OnPixelStretchEffectUpdate(const PixStretchEffectOption& option) {}
OnLightUpEffectUpdate(double radio)334     virtual void OnLightUpEffectUpdate(double radio) {}
OnClickEffectLevelUpdate(const ClickEffectInfo & info)335     virtual void OnClickEffectLevelUpdate(const ClickEffectInfo& info) {}
OnRenderGroupUpdate(bool isRenderGroup)336     virtual void OnRenderGroupUpdate(bool isRenderGroup) {}
OnRenderFitUpdate(RenderFit renderFit)337     virtual void OnRenderFitUpdate(RenderFit renderFit) {}
OnParticleOptionArrayUpdate(const std::list<ParticleOption> & optionArray)338     virtual void OnParticleOptionArrayUpdate(const std::list<ParticleOption>& optionArray) {}
339     ACE_DEFINE_PROPERTY_ITEM_FUNC_WITHOUT_GROUP(SphericalEffect, double);
340     ACE_DEFINE_PROPERTY_ITEM_FUNC_WITHOUT_GROUP(PixelStretchEffect, PixStretchEffectOption);
341     ACE_DEFINE_PROPERTY_ITEM_FUNC_WITHOUT_GROUP(LightUpEffect, double);
342     ACE_DEFINE_PROPERTY_ITEM_FUNC_WITHOUT_GROUP(ParticleOptionArray, std::list<ParticleOption>);
343     ACE_DEFINE_PROPERTY_ITEM_FUNC_WITHOUT_GROUP(ClickEffectLevel, ClickEffectInfo);
GetThumbnailPixelMap()344     virtual RefPtr<PixelMap> GetThumbnailPixelMap()
345     {
346         return nullptr;
347     }
348 
SetActualForegroundColor(const Color & value)349     virtual void SetActualForegroundColor(const Color& value) {}
350     // transform matrix
351     ACE_DEFINE_PROPERTY_ITEM_FUNC_WITHOUT_GROUP(TransformMatrix, Matrix4);
352 
353     // Transform
354     ACE_DEFINE_PROPERTY_GROUP(Transform, TransformProperty);
355     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Transform, TransformScale, VectorF);
356     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Transform, TransformCenter, DimensionOffset);
357     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Transform, TransformTranslate, TranslateOptions);
358     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Transform, TransformRotate, Vector5F);
359 
360     // Foreground
361     ACE_DEFINE_PROPERTY_GROUP(Foreground, ForegroundProperty);
362 
363     // Background
364     ACE_DEFINE_PROPERTY_GROUP(Background, BackgroundProperty);
365     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Background, BackgroundImage, ImageSourceInfo);
366     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Background, BackgroundImageRepeat, ImageRepeat);
367     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Background, BackgroundImageSize, BackgroundImageSize);
368     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Background, BackgroundImagePosition, BackgroundImagePosition);
369 
370     // BorderImage
371     ACE_DEFINE_PROPERTY_GROUP(BdImage, BorderImageProperty);
372     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(BdImage, BorderImage, RefPtr<BorderImage>);
373     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(BdImage, BorderImageSource, ImageSourceInfo);
374     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(BdImage, HasBorderImageSlice, bool);
375     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(BdImage, HasBorderImageWidth, bool);
376     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(BdImage, HasBorderImageOutset, bool);
377     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(BdImage, HasBorderImageRepeat, bool);
378     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(BdImage, BorderImageGradient, Gradient);
379 
380     ACE_DEFINE_PROPERTY_ITEM_FUNC_WITHOUT_GROUP(BackgroundColor, Color);
381     ACE_DEFINE_PROPERTY_ITEM_FUNC_WITHOUT_GROUP(Opacity, double);
382     ACE_DEFINE_PROPERTY_ITEM_FUNC_WITHOUT_GROUP(RenderGroup, bool);
383     ACE_DEFINE_PROPERTY_ITEM_FUNC_WITHOUT_GROUP(ForegroundColor, Color);
384     ACE_DEFINE_PROPERTY_ITEM_FUNC_WITHOUT_GROUP(ForegroundColorStrategy, ForegroundColorStrategy);
385     ACE_DEFINE_PROPERTY_GROUP_ITEM(ForegroundColorFlag, bool);
386 
387     // CustomBackground
388     ACE_DEFINE_PROPERTY_GROUP(CustomBackground, CustomBackgroundProperty);
389     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(CustomBackground, BackgroundPixelMap, RefPtr<PixelMap>);
390     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(CustomBackground, BackgroundAlign, Alignment);
391 
392     // Graphics
393     ACE_DEFINE_PROPERTY_GROUP(Graphics, GraphicsProperty);
394     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Graphics, FrontBrightness, Dimension);
395     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Graphics, FrontGrayScale, Dimension);
396     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Graphics, FrontContrast, Dimension);
397     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Graphics, FrontSaturate, Dimension);
398     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Graphics, FrontSepia, Dimension);
399     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Graphics, FrontInvert, Dimension);
400     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Graphics, FrontHueRotate, float);
401     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Graphics, FrontColorBlend, Color);
402     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Graphics, LinearGradientBlur, NG::LinearGradientBlurPara);
403     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Graphics, DynamicLightUpRate, float);
404     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Graphics, DynamicLightUpDegree, float);
405     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Graphics, BackShadow, Shadow);
406 
407     // BorderRadius.
408     ACE_DEFINE_PROPERTY_GROUP(Border, BorderProperty);
409     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Border, BorderRadius, BorderRadiusProperty);
410     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Border, BorderWidth, BorderWidthProperty);
411     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Border, BorderColor, BorderColorProperty);
412     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Border, BorderStyle, BorderStyleProperty);
413 
414     // Transition Options
415     ACE_DEFINE_PROPERTY_GROUP(TransitionAppearing, TransitionOptions);
416     ACE_DEFINE_PROPERTY_GROUP(TransitionDisappearing, TransitionOptions);
417 
418     // Position
419     ACE_DEFINE_PROPERTY_GROUP(PositionProperty, RenderPositionProperty);
420     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(PositionProperty, Position, OffsetT<Dimension>);
421     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(PositionProperty, Offset, OffsetT<Dimension>);
422     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(PositionProperty, Anchor, OffsetT<Dimension>);
423 
424     // zIndex
425     ACE_DEFINE_PROPERTY_ITEM_FUNC_WITHOUT_GROUP(ZIndex, int32_t);
426 
427     // Clip
428     ACE_DEFINE_PROPERTY_GROUP(Clip, ClipProperty);
429     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Clip, ClipShape, RefPtr<BasicShape>);
430     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Clip, ClipEdge, bool);
431     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Clip, ClipMask, RefPtr<BasicShape>);
432 
433     // ProgressMask
434     ACE_DEFINE_PROPERTY_ITEM_FUNC_WITHOUT_GROUP(ProgressMask, RefPtr<ProgressMaskProperty>);
435 
436     // Gradient
437     ACE_DEFINE_PROPERTY_GROUP(Gradient, GradientProperty);
438     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Gradient, LinearGradient, NG::Gradient);
439     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Gradient, SweepGradient, NG::Gradient);
440     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Gradient, RadialGradient, NG::Gradient);
441 
442     // Overlay
443     ACE_DEFINE_PROPERTY_GROUP(Overlay, OverlayProperty);
444     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Overlay, OverlayText, OverlayOptions)
445 
446     // MotionPath
447     ACE_DEFINE_PROPERTY_GROUP(Motion, MotionPathProperty);
448     ACE_DEFINE_PROPERTY_FUNC_WITH_GROUP(Motion, MotionPath, MotionPathOption)
449 
450     // accessibility
451     ACE_DEFINE_PROPERTY_ITEM_FUNC_WITHOUT_GROUP(AccessibilityFocus, bool);
452 
453     // useEffect
454     ACE_DEFINE_PROPERTY_ITEM_FUNC_WITHOUT_GROUP(UseEffect, bool);
455 
456     // freeze
457     ACE_DEFINE_PROPERTY_ITEM_FUNC_WITHOUT_GROUP(Freeze, bool);
458 
459     // obscured
460     ACE_DEFINE_PROPERTY_ITEM_FUNC_WITHOUT_GROUP(Obscured, std::vector<ObscuredReasons>);
461 
462     // renderFit
463     ACE_DEFINE_PROPERTY_ITEM_FUNC_WITHOUT_GROUP(RenderFit, RenderFit);
464 
SetUsingContentRectForRenderFrame(bool value)465     virtual void SetUsingContentRectForRenderFrame(bool value) {}
GetTrans()466     virtual std::vector<double> GetTrans()
467     {
468         return std::vector<double>();
469     }
SetFrameGravity(OHOS::Rosen::Gravity gravity)470     virtual void SetFrameGravity(OHOS::Rosen::Gravity gravity) {}
471 
472 protected:
473     RenderContext() = default;
474     std::shared_ptr<SharedTransitionOption> sharedTransitionOption_;
475     ShareId shareId_;
476     bool isModalRootNode_ = false;
477     bool isSynced_ = false;
478 
OnBackgroundImageUpdate(const ImageSourceInfo & imageSourceInfo)479     virtual void OnBackgroundImageUpdate(const ImageSourceInfo& imageSourceInfo) {}
OnBackgroundImageRepeatUpdate(const ImageRepeat & imageRepeat)480     virtual void OnBackgroundImageRepeatUpdate(const ImageRepeat& imageRepeat) {}
OnBackgroundImageSizeUpdate(const BackgroundImageSize & bgImgSize)481     virtual void OnBackgroundImageSizeUpdate(const BackgroundImageSize& bgImgSize) {}
OnBackgroundImagePositionUpdate(const BackgroundImagePosition & bgImgPosition)482     virtual void OnBackgroundImagePositionUpdate(const BackgroundImagePosition& bgImgPosition) {}
483 
OnForegroundColorUpdate(const Color & value)484     virtual void OnForegroundColorUpdate(const Color& value) {}
OnForegroundColorStrategyUpdate(const ForegroundColorStrategy & value)485     virtual void OnForegroundColorStrategyUpdate(const ForegroundColorStrategy& value) {}
486 
OnBackgroundPixelMapUpdate(const RefPtr<PixelMap> & value)487     virtual void OnBackgroundPixelMapUpdate(const RefPtr<PixelMap>& value) {}
OnBackgroundAlignUpdate(const Alignment & align)488     virtual void OnBackgroundAlignUpdate(const Alignment& align) {}
489 
OnBorderImageUpdate(const RefPtr<BorderImage> & borderImage)490     virtual void OnBorderImageUpdate(const RefPtr<BorderImage>& borderImage) {}
OnBorderImageSourceUpdate(const ImageSourceInfo & borderImageSourceInfo)491     virtual void OnBorderImageSourceUpdate(const ImageSourceInfo& borderImageSourceInfo) {}
OnHasBorderImageSliceUpdate(bool tag)492     virtual void OnHasBorderImageSliceUpdate(bool tag) {}
OnHasBorderImageWidthUpdate(bool tag)493     virtual void OnHasBorderImageWidthUpdate(bool tag) {}
OnHasBorderImageOutsetUpdate(bool tag)494     virtual void OnHasBorderImageOutsetUpdate(bool tag) {}
OnHasBorderImageRepeatUpdate(bool tag)495     virtual void OnHasBorderImageRepeatUpdate(bool tag) {}
OnBorderImageGradientUpdate(const Gradient & gradient)496     virtual void OnBorderImageGradientUpdate(const Gradient& gradient) {}
497 
OnBorderWidthUpdate(const BorderWidthProperty & value)498     virtual void OnBorderWidthUpdate(const BorderWidthProperty& value) {}
OnBorderRadiusUpdate(const BorderRadiusProperty & value)499     virtual void OnBorderRadiusUpdate(const BorderRadiusProperty& value) {}
OnBorderColorUpdate(const BorderColorProperty & value)500     virtual void OnBorderColorUpdate(const BorderColorProperty& value) {}
OnBorderStyleUpdate(const BorderStyleProperty & value)501     virtual void OnBorderStyleUpdate(const BorderStyleProperty& value) {}
502 
OnTransformRotateUpdate(const Vector5F & value)503     virtual void OnTransformRotateUpdate(const Vector5F& value) {}
OnTransformMatrixUpdate(const Matrix4 & matrix)504     virtual void OnTransformMatrixUpdate(const Matrix4& matrix) {}
505 
OnAnchorUpdate(const OffsetT<Dimension> & value)506     virtual void OnAnchorUpdate(const OffsetT<Dimension>& value) {}
507 
OnClipShapeUpdate(const RefPtr<BasicShape> & basicShape)508     virtual void OnClipShapeUpdate(const RefPtr<BasicShape>& basicShape) {}
OnClipEdgeUpdate(bool isClip)509     virtual void OnClipEdgeUpdate(bool isClip) {}
OnClipMaskUpdate(const RefPtr<BasicShape> & basicShape)510     virtual void OnClipMaskUpdate(const RefPtr<BasicShape>& basicShape) {}
511 
OnProgressMaskUpdate(const RefPtr<ProgressMaskProperty> & progress)512     virtual void OnProgressMaskUpdate(const RefPtr<ProgressMaskProperty>& progress) {}
513 
OnLinearGradientUpdate(const NG::Gradient & value)514     virtual void OnLinearGradientUpdate(const NG::Gradient& value) {}
OnSweepGradientUpdate(const NG::Gradient & value)515     virtual void OnSweepGradientUpdate(const NG::Gradient& value) {}
OnRadialGradientUpdate(const NG::Gradient & value)516     virtual void OnRadialGradientUpdate(const NG::Gradient& value) {}
517 
OnFrontBrightnessUpdate(const Dimension & value)518     virtual void OnFrontBrightnessUpdate(const Dimension& value) {}
OnFrontGrayScaleUpdate(const Dimension & value)519     virtual void OnFrontGrayScaleUpdate(const Dimension& value) {}
OnFrontContrastUpdate(const Dimension & value)520     virtual void OnFrontContrastUpdate(const Dimension& value) {}
OnFrontSaturateUpdate(const Dimension & value)521     virtual void OnFrontSaturateUpdate(const Dimension& value) {}
OnFrontSepiaUpdate(const Dimension & value)522     virtual void OnFrontSepiaUpdate(const Dimension& value) {}
OnFrontInvertUpdate(const Dimension & value)523     virtual void OnFrontInvertUpdate(const Dimension& value) {}
OnFrontHueRotateUpdate(float value)524     virtual void OnFrontHueRotateUpdate(float value) {}
OnFrontColorBlendUpdate(const Color & value)525     virtual void OnFrontColorBlendUpdate(const Color& value) {}
OnLinearGradientBlurUpdate(const NG::LinearGradientBlurPara & blurPara)526     virtual void OnLinearGradientBlurUpdate(const NG::LinearGradientBlurPara& blurPara) {}
OnDynamicLightUpRateUpdate(const float rate)527     virtual void OnDynamicLightUpRateUpdate(const float rate) {}
OnDynamicLightUpDegreeUpdate(const float degree)528     virtual void OnDynamicLightUpDegreeUpdate(const float degree) {}
OnBackShadowUpdate(const Shadow & shadow)529     virtual void OnBackShadowUpdate(const Shadow& shadow) {}
530 
OnOverlayTextUpdate(const OverlayOptions & overlay)531     virtual void OnOverlayTextUpdate(const OverlayOptions& overlay) {}
OnMotionPathUpdate(const MotionPathOption & motionPath)532     virtual void OnMotionPathUpdate(const MotionPathOption& motionPath) {}
OnUseEffectUpdate(bool useEffect)533     virtual void OnUseEffectUpdate(bool useEffect) {}
OnFreezeUpdate(bool isFreezed)534     virtual void OnFreezeUpdate(bool isFreezed) {}
OnObscuredUpdate(const std::vector<ObscuredReasons> & reasons)535     virtual void OnObscuredUpdate(const std::vector<ObscuredReasons>& reasons) {}
536 
537 private:
538     std::function<void()> requestFrame_;
539     WeakPtr<FrameNode> host_;
540 
541     ACE_DISALLOW_COPY_AND_MOVE(RenderContext);
542 };
543 } // namespace OHOS::Ace::NG
544 
545 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PAINTS_RENDER_CONTEXT_H
546