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