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