1 /* 2 * Copyright (c) 2024-2025 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_INTERFACES_INNER_API_ACE_KIT_SRC_VIEW_FRAME_NODE_IMPL_H 17 #define FOUNDATION_ACE_INTERFACES_INNER_API_ACE_KIT_SRC_VIEW_FRAME_NODE_IMPL_H 18 19 #include "interfaces/inner_api/ace_kit/include/ui/view/frame_node.h" 20 21 #include "core/components_ng/base/frame_node.h" 22 #include "core/components_ng/layout/layout_wrapper.h" 23 24 namespace OHOS::Ace::Kit { 25 using AceNode = NG::FrameNode; 26 27 class FrameNodeImpl : public FrameNode { 28 DECLARE_ACE_TYPE(FrameNodeImpl, FrameNode); 29 30 public: 31 FrameNodeImpl(const RefPtr<AceNode>& node, const RefPtr<Pattern>& pattern); 32 explicit FrameNodeImpl(const RefPtr<AceNode>& node); 33 explicit FrameNodeImpl(AceNode* node); 34 ~FrameNodeImpl(); 35 36 void Reset() override; 37 38 void Measure(const Kit::LayoutConstraintInfo& parentContraint) override; 39 void Layout() override; 40 41 void InitializePatternAndContext() override; 42 43 RefPtr<NG::LayoutProperty> GetLayoutProperty() override; 44 RefPtr<Pattern> GetPattern() override; 45 RefPtr<AceNode> MoveOwnershipAndGetAceNode(); 46 RefPtr<AceNode> GetAceNode() const; 47 NG::LayoutWrapper* GetLayoutWrapper(); 48 RefPtr<UIContext> GetUIContext() const override; 49 AceNode* GetAceNodePtr(); 50 RefPtr<Property> GetProperty() override; 51 52 void AddChild(const RefPtr<FrameNode>& child) override; 53 std::list<RefPtr<FrameNode>> GetChildren() override; 54 void MarkDirtyNode(NG::PropertyChangeFlag flag) override; 55 void RemoveChild(const RefPtr<FrameNode>& child) override; 56 57 std::string GetTag() const override; 58 int32_t GetId() const override; 59 60 void MeasureChildren() override; 61 void LayoutChildren() override; 62 NodeHandle GetHandle() override; 63 64 void SetOnNodeDestroyCallback(const std::function<void(RefPtr<FrameNode>)>& destroyCallback) override; 65 void SetConfigurationUpdateCallback( 66 const std::function<void(const ConfigurationChange& configurationChange)>&& callback) override; 67 void AddExtraCustomProperty(const std::string& key, void* extraData) override; 68 void* GetExtraCustomProperty(const std::string& key) const override; 69 void SetClipEdge(bool isClip) override; 70 void SetPadding(const NG::PaddingPropertyT<NG::CalcLength>& value) override; 71 void SetSafeAreaPadding(const NG::CalcLength& value) override; 72 void ResetSafeAreaPadding() override; 73 void SetLinearGradient(const NG::Gradient& gradient) override; 74 void SetLinearGradientBlur(const NG::LinearGradientBlurPara& blurPara) override; 75 void SetCompositingFilter(const OHOS::Rosen::Filter* compositingFilter) override; 76 void ResetCompositingFilter() override; 77 bool NeedAvoidContainerModal() override; 78 NG::OffsetF GetParentGlobalOffsetDuringLayout() override; 79 int32_t GetContainerModalTitleHeight() override; 80 NG::OffsetF GetContainerModalButtonsOffset() override; 81 NG::SizeF GetContainerModalButtonsSize() override; 82 83 void SetMeasureCallback(const std::function<void(RefPtr<FrameNode>)>& callback) override; 84 int32_t GetMeasureWidth() override; 85 int32_t GetMeasureHeight() override; 86 NodeHandle GetParentHandle() override; 87 88 void SetAICallerHelper(const std::shared_ptr<AICallerHelper>& aiCallerHelper) override; 89 90 private: 91 void PushAceNode(const RefPtr<AceNode>& node); 92 RefPtr<AceNode> PopAceNode(); 93 94 AceNode* frameNode_; 95 RefPtr<AceNode> nodeTempRef_; 96 RefPtr<Pattern> pattern_; 97 RefPtr<Property> property_; 98 }; 99 } // namespace OHOS::Ace::Kit 100 101 #endif // FOUNDATION_ACE_INTERFACES_INNER_API_ACE_KIT_SRC_VIEW_FRAME_NODE_IMPL_H 102