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