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