• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022-2024 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_BASE_VIEW_ABSTRACT_MODEL_H
17 #define FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_BASE_VIEW_ABSTRACT_MODEL_H
18 
19 #include <cstdint>
20 #include <functional>
21 #include <memory>
22 #include <mutex>
23 #include <optional>
24 #include <vector>
25 
26 #include "base/geometry/dimension.h"
27 #include "base/memory/ace_type.h"
28 #include "base/utils/macros.h"
29 #include "core/components/common/layout/position_param.h"
30 #include "core/components/common/properties/alignment.h"
31 #include "core/components/common/properties/popup_param.h"
32 #include "core/components/common/properties/shared_transition_option.h"
33 #include "core/components/common/properties/blend_mode.h"
34 #include "core/components_ng/base/modifier.h"
35 #include "core/components_ng/base/view_abstract.h"
36 #include "core/components_ng/event/focus_box.h"
37 #include "core/components_ng/event/gesture_event_hub.h"
38 #include "core/components_ng/pattern/menu/menu_pattern.h"
39 #include "core/components_ng/pattern/overlay/content_cover_param.h"
40 #include "core/components_ng/pattern/overlay/modal_style.h"
41 #include "core/components_ng/pattern/overlay/sheet_style.h"
42 #include "core/components_ng/property/gradient_property.h"
43 #include "core/components_ng/property/progress_mask_property.h"
44 #include "core/components_ng/property/transition_property.h"
45 #include "core/event/ace_events.h"
46 #include "core/event/key_event.h"
47 #include "core/event/mouse_event.h"
48 #include "core/event/touch_event.h"
49 #include "core/gestures/gesture_info.h"
50 #include "core/image/image_source_info.h"
51 
52 namespace OHOS::Ace {
53 
54 using ClickEventFunc = std::function<void(const ClickInfo* info)>;
55 using RemoteCallback = std::function<void(const BaseEventInfo* info)>;
56 using OnNewDragFunc = std::function<void(const RefPtr<OHOS::Ace::DragEvent>&)>;
57 using BiasPair = std::pair<float, float>;
58 enum class ResponseType : int32_t {
59     RIGHT_CLICK = 0,
60     LONG_PRESS,
61 };
62 
63 class ACE_FORCE_EXPORT ViewAbstractModel {
64 public:
65     static ViewAbstractModel* GetInstance();
66     virtual ~ViewAbstractModel() = default;
67 
68     // basic size
69     virtual void SetWidth(const CalcDimension& width) = 0;
70     virtual void SetHeight(const CalcDimension& height) = 0;
71     virtual void ClearWidthOrHeight(bool isWidth) = 0;
72     virtual void SetMinWidth(const CalcDimension& minWidth) = 0;
73     virtual void SetMinHeight(const CalcDimension& minHeight) = 0;
74     virtual void SetMaxWidth(const CalcDimension& maxWidth) = 0;
75     virtual void SetMaxHeight(const CalcDimension& maxHeight) = 0;
76     virtual void ResetMinSize(bool resetWidth) = 0;
77     virtual void ResetMaxSize(bool resetWidth) = 0;
78 
79     // box props
80     virtual void SetBackgroundColor(const Color& color) = 0;
81     virtual void SetBackgroundImage(const ImageSourceInfo& src, RefPtr<ThemeConstants> themeConstant) = 0;
82     virtual void SetBackgroundImageRepeat(const ImageRepeat& imageRepeat) = 0;
83     virtual void SetBackgroundImageSize(const BackgroundImageSize& bgImgSize) = 0;
84     virtual void SetBackgroundImagePosition(const BackgroundImagePosition& bgImgPosition) = 0;
85     virtual void SetBackgroundBlurStyle(const BlurStyleOption& bgBlurStyle) = 0;
SetBackgroundEffect(const EffectOption & effectOption)86     virtual void SetBackgroundEffect(const EffectOption& effectOption) {}
87     virtual void SetBackgroundImageResizableSlice(const ImageResizableSlice& slice) = 0;
SetForegroundBlurStyle(const BlurStyleOption & fgBlurStyle)88     virtual void SetForegroundBlurStyle(const BlurStyleOption& fgBlurStyle) {}
SetForegroundEffect(float radius)89     virtual void SetForegroundEffect(float radius) {}
SetSphericalEffect(double radio)90     virtual void SetSphericalEffect(double radio) {}
SetPixelStretchEffect(PixStretchEffectOption & option)91     virtual void SetPixelStretchEffect(PixStretchEffectOption& option) {}
SetLightUpEffect(double radio)92     virtual void SetLightUpEffect(double radio) {}
93 
94     virtual void SetPadding(const CalcDimension& value) = 0;
95     virtual void SetPaddings(const std::optional<CalcDimension>& top, const std::optional<CalcDimension>& bottom,
96         const std::optional<CalcDimension>& left, const std::optional<CalcDimension>& right) = 0;
97     virtual void SetPaddings(const NG::PaddingProperty& paddings) = 0;
98     virtual void SetMargin(const CalcDimension& value) = 0;
99     virtual void SetMargins(const std::optional<CalcDimension>& top, const std::optional<CalcDimension>& bottom,
100         const std::optional<CalcDimension>& left, const std::optional<CalcDimension>& right) = 0;
101     virtual void SetMargins(const NG::MarginProperty& margins) = 0;
102     virtual void SetBorderRadius(const Dimension& value) = 0;
103     virtual void SetBorderRadius(const std::optional<Dimension>& radiusTopLeft,
104         const std::optional<Dimension>& radiusTopRight, const std::optional<Dimension>& radiusBottomLeft,
105         const std::optional<Dimension>& radiusBottomRight) = 0;
106     virtual void SetBorderRadius(const NG::BorderRadiusProperty& borderRadius) = 0;
107     virtual void SetBorderColor(const Color& value) = 0;
108     virtual void SetBorderColor(const std::optional<Color>& colorLeft, const std::optional<Color>& colorRight,
109         const std::optional<Color>& colorTop, const std::optional<Color>& colorBottom) = 0;
110     virtual void SetBorderColor(const NG::BorderColorProperty& borderColors) = 0;
111     virtual void SetBorderWidth(const Dimension& value) = 0;
112     virtual void SetBorderWidth(const std::optional<Dimension>& left, const std::optional<Dimension>& right,
113         const std::optional<Dimension>& top, const std::optional<Dimension>& bottom) = 0;
114     virtual void SetBorderWidth(const std::optional<Dimension>& left, const std::optional<Dimension>& right,
115         const std::optional<Dimension>& top, const std::optional<Dimension>& bottom, bool isLocalized) = 0;
116     virtual void SetBorderStyle(const BorderStyle& value) = 0;
117     virtual void SetBorderStyle(const std::optional<BorderStyle>& styleLeft,
118         const std::optional<BorderStyle>& styleRight, const std::optional<BorderStyle>& styleTop,
119         const std::optional<BorderStyle>& styleBottom) = 0;
SetDashGap(const Dimension & value)120     virtual void SetDashGap(const Dimension& value) {}
SetDashGap(const std::optional<Dimension> & left,const std::optional<Dimension> & right,const std::optional<Dimension> & top,const std::optional<Dimension> & bottom)121     virtual void SetDashGap(const std::optional<Dimension>& left, const std::optional<Dimension>& right,
122         const std::optional<Dimension>& top, const std::optional<Dimension>& bottom) {}
SetDashWidth(const Dimension & value)123     virtual void SetDashWidth(const Dimension& value) {}
SetDashWidth(const std::optional<Dimension> & left,const std::optional<Dimension> & right,const std::optional<Dimension> & top,const std::optional<Dimension> & bottom)124     virtual void SetDashWidth(const std::optional<Dimension>& left, const std::optional<Dimension>& right,
125         const std::optional<Dimension>& top, const std::optional<Dimension>& bottom) {}
126     virtual void SetBorderImage(const RefPtr<BorderImage>& borderImage, uint8_t bitset) = 0;
127     virtual void SetBorderImageGradient(const NG::Gradient& gradient) = 0;
128 
129     // visual
SetVisualEffect(const OHOS::Rosen::VisualEffect * visualEffect)130     virtual void SetVisualEffect(const OHOS::Rosen::VisualEffect* visualEffect) {};
SetBackgroundFilter(const OHOS::Rosen::Filter * backgroundFilter)131     virtual void SetBackgroundFilter(const OHOS::Rosen::Filter* backgroundFilter) {};
SetForegroundFilter(const OHOS::Rosen::Filter * foregroundFilter)132     virtual void SetForegroundFilter(const OHOS::Rosen::Filter* foregroundFilter) {};
SetCompositingFilter(const OHOS::Rosen::Filter * compositingFilter)133     virtual void SetCompositingFilter(const OHOS::Rosen::Filter* compositingFilter) {};
SetBrightnessBlender(const OHOS::Rosen::BrightnessBlender * brightnessBlender)134     virtual void SetBrightnessBlender(const OHOS::Rosen::BrightnessBlender* brightnessBlender) {};
135 
136     // outerBorder
137     virtual void SetOuterBorderRadius(const Dimension& value) = 0;
138     virtual void SetOuterBorderRadius(const std::optional<Dimension>& radiusTopLeft,
139         const std::optional<Dimension>& radiusTopRight, const std::optional<Dimension>& radiusBottomLeft,
140         const std::optional<Dimension>& radiusBottomRight) = 0;
141     virtual void SetOuterBorderRadius(const NG::BorderRadiusProperty& borderRadius) = 0;
142     virtual void SetOuterBorderColor(const Color& value) = 0;
143     virtual void SetOuterBorderColor(const std::optional<Color>& colorLeft, const std::optional<Color>& colorRight,
144         const std::optional<Color>& colorTop, const std::optional<Color>& colorBottom) = 0;
145     virtual void SetOuterBorderColor(const NG::BorderColorProperty& borderColors) = 0;
146     virtual void SetOuterBorderWidth(const Dimension& value) = 0;
147     virtual void SetOuterBorderWidth(const std::optional<Dimension>& left, const std::optional<Dimension>& right,
148         const std::optional<Dimension>& top, const std::optional<Dimension>& bottom) = 0;
149     virtual void SetOuterBorderStyle(const BorderStyle& value) = 0;
150     virtual void SetOuterBorderStyle(const std::optional<BorderStyle>& styleLeft,
151         const std::optional<BorderStyle>& styleRight, const std::optional<BorderStyle>& styleTop,
152         const std::optional<BorderStyle>& styleBottom) = 0;
153 
154     // layout
155     virtual void SetLayoutPriority(int32_t priority) = 0;
156     virtual void SetLayoutWeight(float value) = 0;
157     virtual void SetPixelRound(uint8_t value) = 0;
158     virtual void SetLayoutDirection(TextDirection value) = 0;
159     virtual void SetAspectRatio(float ratio) = 0;
160     virtual void ResetAspectRatio() = 0;
161     virtual void SetAlign(const Alignment& alignment) = 0;
162     virtual void SetAlignRules(const std::map<AlignDirection, AlignRule>& alignRules) = 0;
163     virtual void SetChainStyle(const ChainInfo& chainInfo) = 0;
164     virtual void SetBias(const BiasPair& biasPair) = 0;
165     virtual void SetUseAlign(
166         AlignDeclarationPtr declaration, AlignDeclaration::Edge edge, const std::optional<Dimension>& offset) = 0;
167     virtual void SetGrid(
168         std::optional<uint32_t> span, std::optional<int32_t> offset, GridSizeType type = GridSizeType::UNDEFINED) = 0;
169     virtual void SetZIndex(int32_t value) = 0;
170 
171     // position
172     virtual void SetPosition(const Dimension& x, const Dimension& y) = 0;
173     virtual void SetOffset(const Dimension& x, const Dimension& y) = 0;
SetPositionEdges(const EdgesParam & value)174     virtual void SetPositionEdges(const EdgesParam& value) {};
SetOffsetEdges(const EdgesParam & value)175     virtual void SetOffsetEdges(const EdgesParam& value) {};
176     virtual void MarkAnchor(const Dimension& x, const Dimension& y) = 0;
ResetPosition()177     virtual void ResetPosition() {};
178 
179     // transforms
180     virtual void SetScale(float x, float y, float z) = 0;
181     virtual void SetPivot(const Dimension& x, const Dimension& y, const Dimension& z) = 0;
182     virtual void SetTranslate(const Dimension& x, const Dimension& y, const Dimension& z) = 0;
183     virtual void SetRotate(float x, float y, float z, float angle, float perspective = 0.0f) = 0;
184     virtual void SetTransformMatrix(const std::vector<float>& matrix) = 0;
185 
186     // display props
187     virtual void SetOpacity(double opacity, bool passThrough = false) = 0;
188     virtual void SetTransition(const NG::TransitionOptions& transitionOptions, bool passThrough = false) = 0;
CleanTransition()189     virtual void CleanTransition() {};
190     virtual void SetChainedTransition(
191         const RefPtr<NG::ChainedTransitionEffect>& effect, NG::TransitionFinishCallback&& finishCallback = nullptr) = 0;
192     virtual void SetOverlay(const std::string& text, std::function<void()>&& buildFunc,
193         const RefPtr<NG::FrameNode>& contentNode, const std::optional<Alignment>& align,
194         const std::optional<Dimension>& offsetX, const std::optional<Dimension>& offsetY, NG::OverlayType type) = 0;
195     virtual void SetVisibility(VisibleType visible, std::function<void(int32_t)>&& changeEventFunc) = 0;
196     virtual void SetSharedTransition(
197         const std::string& shareId, const std::shared_ptr<SharedTransitionOption>& option) = 0;
198     virtual void SetGeometryTransition(const std::string& id,
199         bool followWithoutTransition = false, bool doRegisterSharedTransition = true) = 0;
200     virtual void SetMotionPath(const MotionPathOption& option) = 0;
201     virtual void SetRenderGroup(bool isRenderGroup) = 0;
202     virtual void SetRenderFit(RenderFit renderFit) = 0;
203 
204     // flex props
205     virtual void SetFlexBasis(const Dimension& value) = 0;
206     virtual void SetAlignSelf(FlexAlign value) = 0;
207     virtual void SetFlexShrink(float value) = 0;
208     virtual void SetFlexGrow(float value) = 0;
209     virtual void SetDisplayIndex(int32_t value) = 0;
210     virtual void ResetFlexShrink() = 0;
211 
212     // gradient
213     virtual void SetLinearGradient(const NG::Gradient& gradient) = 0;
214     virtual void SetSweepGradient(const NG::Gradient& gradient) = 0;
215     virtual void SetRadialGradient(const NG::Gradient& gradient) = 0;
216 
217     // clip
218     virtual void SetClipShape(const RefPtr<BasicShape>& shape) = 0;
219     virtual void SetClipEdge(bool isClip) = 0;
220 
221     // effects
222     virtual void SetMask(const RefPtr<BasicShape>& shape) = 0;
223     virtual void SetBackdropBlur(const Dimension& radius, const BlurOption& blurOption) = 0;
224     virtual void SetLinearGradientBlur(NG::LinearGradientBlurPara blurPara) = 0;
225 
226     virtual void SetDynamicDim(float DimDegree) = 0;
227     virtual void SetDynamicLightUp(float rate, float lightUpDegree) = 0;
228     virtual void SetBgDynamicBrightness(const BrightnessOption& brightnessOption) = 0;
229     virtual void SetFgDynamicBrightness(const BrightnessOption& brightnessOption) = 0;
230 
231     virtual void SetFrontBlur(const Dimension& radius, const BlurOption& blurOption) = 0;
SetMotionBlur(const MotionBlurOption & motionBlurOption)232     virtual void SetMotionBlur(const MotionBlurOption& motionBlurOption) {}
233     virtual void SetBackShadow(const std::vector<Shadow>& shadows) = 0;
234     virtual void SetBlendMode(BlendMode blendMode) = 0;
235     virtual void SetBlendApplyType(BlendApplyType blendApplyType) = 0;
236     virtual void SetColorBlend(const Color& value) = 0;
237     virtual void SetWindowBlur(float progress, WindowBlurStyle blurStyle) = 0;
238     virtual void SetBrightness(const Dimension& value) = 0;
239     virtual void SetGrayScale(const Dimension& value) = 0;
240     virtual void SetContrast(const Dimension& value) = 0;
241     virtual void SetSaturate(const Dimension& value) = 0;
242     virtual void SetSepia(const Dimension& value) = 0;
243     virtual void SetInvert(const InvertVariant& value) = 0;
244     virtual void SetSystemBarEffect(bool systemBarEffect) = 0;
245     virtual void SetHueRotate(float value) = 0;
246     virtual void SetClickEffectLevel(const ClickEffectLevel& level, float scaleValue) = 0;
247     virtual void SetUseEffect(bool useEffect) = 0;
248     virtual void SetUseShadowBatching(bool useShadowBatching) = 0;
249     virtual void SetFreeze(bool freeze) = 0;
250 
251     // event
252     virtual void SetOnClick(GestureEventFunc&& tapEventFunc, ClickEventFunc&& clickEventFunc,
253         double distanceThreshold = std::numeric_limits<double>::infinity()) = 0;
254     virtual void SetOnGestureJudgeBegin(NG::GestureJudgeFunc&& gestureJudgeFunc) = 0;
255     virtual void SetOnTouchIntercept(NG::TouchInterceptFunc&& touchInterceptFunc) = 0;
256     virtual void SetShouldBuiltInRecognizerParallelWith(
257         NG::ShouldBuiltInRecognizerParallelWithFunc&& shouldBuiltInRecognizerParallelWithFunc) = 0;
258     virtual void SetOnGestureRecognizerJudgeBegin(
259         NG::GestureRecognizerJudgeFunc&& gestureRecognizerJudgeFunc, bool exposeInnerGestureFlag) = 0;
260     virtual void SetOnTouch(TouchEventFunc&& touchEventFunc) = 0;
261     virtual void SetOnKeyEvent(OnKeyCallbackFunc&& onKeyCallback) = 0;
SetOnKeyPreIme(OnKeyPreImeFunc && onKeyCallback)262     virtual void SetOnKeyPreIme(OnKeyPreImeFunc&& onKeyCallback) {}
263     virtual void SetOnMouse(OnMouseEventFunc&& onMouseEventFunc) = 0;
264     virtual void SetOnHover(OnHoverFunc&& onHoverEventFunc) = 0;
265     virtual void SetOnAccessibilityHover(OnAccessibilityHoverFunc&& onAccessibilityHoverEventFunc) = 0;
266     virtual void SetOnDelete(std::function<void()>&& onDeleteCallback) = 0;
267     virtual void SetOnAppear(std::function<void()>&& onAppearCallback) = 0;
268     virtual void SetOnAttach(std::function<void()>&& onAttachCallback) = 0;
269     virtual void SetOnDisAppear(std::function<void()>&& onDisAppearCallback) = 0;
270     virtual void SetOnDetach(std::function<void()>&& onDetachCallback) = 0;
271     virtual void SetOnAccessibility(std::function<void(const std::string&)>&& onAccessibilityCallback) = 0;
272     virtual void SetOnRemoteMessage(RemoteCallback&& onRemoteCallback) = 0;
273     virtual void SetOnFocusMove(std::function<void(int32_t)>&& onFocusMoveCallback) = 0;
274     virtual void SetOnFocus(OnFocusFunc&& onFocusCallback) = 0;
275     virtual void SetOnBlur(OnBlurFunc&& onBlurCallback) = 0;
276     virtual void SetDraggable(bool draggable) = 0;
277     virtual void SetDragPreviewOptions(const NG::DragPreviewOption& previewOption) = 0;
278     virtual void SetOnDragStart(NG::OnDragStartFunc&& onDragStart) = 0;
279     virtual void SetOnPreDrag(NG::OnPreDragFunc&& onPreDrag) = 0;
280     virtual void SetOnDragEnter(NG::OnDragDropFunc&& onDragEnter) = 0;
281     virtual void SetOnDragEnd(OnNewDragFunc&& onDragEnd) = 0;
282     virtual void SetOnDragLeave(NG::OnDragDropFunc&& onDragLeave) = 0;
283     virtual void SetOnDragMove(NG::OnDragDropFunc&& onDragMove) = 0;
284     virtual void SetOnDrop(NG::OnDragDropFunc&& onDrop) = 0;
285     virtual void SetAllowDrop(const std::set<std::string>& allowDrop) = 0;
286     virtual void SetDrawModifier(const RefPtr<NG::DrawModifier>& drawModifier) = 0;
287     virtual void SetDragPreview(const NG::DragDropInfo& info) = 0;
288     virtual void SetOnVisibleChange(
289         std::function<void(bool, double)>&& onVisibleChange, const std::vector<double>& ratios) = 0;
290     virtual void SetOnAreaChanged(
291         std::function<void(const Rect& oldRect, const Offset& oldOrigin, const Rect& rect, const Offset& origin)>&&
292             onAreaChanged) = 0;
293     virtual void SetOnSizeChanged(
294         std::function<void(const NG::RectF& oldRect, const NG::RectF& rect)>&& onSizeChanged) = 0;
295     virtual void* GetFrameNode() = 0;
296 
297     // Disable event when the param is undefined.
298     virtual void DisableOnClick() = 0;
299     virtual void DisableOnTouch() = 0;
300     virtual void DisableOnKeyEvent() = 0;
DisableOnKeyPreIme()301     virtual void DisableOnKeyPreIme() {}
302     virtual void DisableOnHover() = 0;
303     virtual void DisableOnAccessibilityHover() = 0;
304     virtual void DisableOnMouse() = 0;
305     virtual void DisableOnAppear() = 0;
306     virtual void DisableOnDisAppear() = 0;
307     virtual void DisableOnAttach() = 0;
308     virtual void DisableOnDetach() = 0;
309     virtual void DisableOnAreaChange() = 0;
310     virtual void DisableOnFocus() = 0;
311     virtual void DisableOnBlur() = 0;
312 
313     // interact
314     virtual void SetResponseRegion(const std::vector<DimensionRect>& responseRegion) = 0;
SetMouseResponseRegion(const std::vector<DimensionRect> & responseRegion)315     virtual void SetMouseResponseRegion(const std::vector<DimensionRect>& responseRegion) {}
316     virtual void SetEnabled(bool enabled) = 0;
317     virtual void SetTouchable(bool touchable) = 0;
318     virtual void SetFocusable(bool focusable) = 0;
319     virtual void SetFocusNode(bool focus) = 0;
320     virtual void SetTabIndex(int32_t index) = 0;
321     virtual void SetFocusOnTouch(bool isSet) = 0;
322     virtual void SetDefaultFocus(bool isSet) = 0;
323     virtual void SetGroupDefaultFocus(bool isSet) = 0;
SetFocusBoxStyle(const NG::FocusBoxStyle & style)324     virtual void SetFocusBoxStyle(const NG::FocusBoxStyle& style) {}
SetFocusScopeId(const std::string & focusScopeId,bool isGroup)325     virtual void SetFocusScopeId(const std::string& focusScopeId, bool isGroup) {}
SetFocusScopePriority(const std::string & focusScopeId,const uint32_t focusPriority)326     virtual void SetFocusScopePriority(const std::string& focusScopeId, const uint32_t focusPriority) {}
327     virtual void SetInspectorId(const std::string& inspectorId) = 0;
SetAutoEventParam(const std::string & param)328     virtual void SetAutoEventParam(const std::string& param) {}
329     virtual void SetRestoreId(int32_t restoreId) = 0;
330     virtual void SetDebugLine(const std::string& line) = 0;
331     virtual void SetHoverEffect(HoverEffectType hoverEffect) = 0;
332     virtual void SetHitTestMode(NG::HitTestMode hitTestMode) = 0;
333     virtual void SetOnTouchTestFunc(NG::OnChildTouchTestFunc&& onChildTouchTest) = 0;
334     virtual void SetKeyboardShortcut(const std::string& value, const std::vector<ModifierKey>& keys,
335         std::function<void()>&& onKeyboardShortcutAction) = 0;
336     virtual void SetMonopolizeEvents(bool monopolizeEvents) = 0;
337     virtual void SetDragEventStrictReportingEnabled(bool dragEventStrictReportingEnabled) = 0;
SetDisallowDropForcedly(bool isDisallowDropForcedly)338     virtual void SetDisallowDropForcedly(bool isDisallowDropForcedly) {}
339     // obscured
340     virtual void SetObscured(const std::vector<ObscuredReasons>& reasons) = 0;
341     virtual void SetPrivacySensitive(bool flag) = 0;
342 
343     // background
344     virtual void BindBackground(std::function<void()>&& buildFunc, const Alignment& align) = 0;
345 
346     // popup and menu
347     virtual void BindPopup(const RefPtr<PopupParam>& param, const RefPtr<AceType>& customNode) = 0;
348     virtual void DismissPopup() = 0;
349     virtual void BindMenu(
350         std::vector<NG::OptionParam>&& params, std::function<void()>&& buildFunc, const NG::MenuParam& menuParam) = 0;
351     virtual void BindContextMenu(ResponseType type, std::function<void()>& buildFunc, const NG::MenuParam& menuParam,
352         std::function<void()>& previewBuildFunc) = 0;
353     virtual void BindDragWithContextMenuParams(const NG::MenuParam& menuParam) = 0;
354     virtual void BindContentCover(bool isShow, std::function<void(const std::string&)>&& callback,
355         std::function<void()>&& buildFunc, NG::ModalStyle& modalStyle, std::function<void()>&& onAppear,
356         std::function<void()>&& onDisappear, std::function<void()>&& onWillAppear,
357         std::function<void()>&& onWillDisappear, const NG::ContentCoverParam& contentCoverParam) = 0;
358     virtual void BindSheet(bool isShow, std::function<void(const std::string&)>&& callback,
359         std::function<void()>&& buildFunc, std::function<void()>&& titleBuildFunc, NG::SheetStyle& sheetStyle,
360         std::function<void()>&& onAppear, std::function<void()>&& onDisappear, std::function<void()>&& shouldDismiss,
361         std::function<void(const int32_t info)>&& onWillDismiss, std::function<void()>&& onWillAppear,
362         std::function<void()>&& onWillDisappear, std::function<void(const float)>&& onHeightDidChange,
363         std::function<void(const float)>&& onDetentsDidChange,
364         std::function<void(const float)>&& onWidthDidChange,
365         std::function<void(const float)>&& onTypeDidChange,
366         std::function<void()>&& sheetSpringBack) = 0;
367     virtual void DismissContentCover() = 0;
368     virtual void DismissSheet() = 0;
369     virtual void SheetSpringBack() = 0;
DismissDialog()370     virtual void DismissDialog() {};
371 
372     // accessibility
373     virtual void SetAccessibilityGroup(bool accessible) = 0;
374     virtual void SetAccessibilityText(const std::string& text) = 0;
375     virtual void SetAccessibilityTextHint(const std::string& text) = 0;
376     virtual void SetAccessibilityDescription(const std::string& description) = 0;
377     virtual void SetAccessibilityImportance(const std::string& importance) = 0;
378     virtual void SetAccessibilityVirtualNode(std::function<void()>&& buildFunc) = 0;
379     virtual void SetAccessibilitySelected(bool selected, bool resetValue) = 0;
380     virtual void SetAccessibilityChecked(bool checked, bool resetValue) = 0;
381 
382     // progress mask
383     virtual void SetProgressMask(const RefPtr<NG::ProgressMaskProperty>& progress) = 0;
384     // foregroundColor
385     virtual void SetForegroundColor(const Color& color) = 0;
386     virtual void SetForegroundColorStrategy(const ForegroundColorStrategy& strategy) = 0;
387 
388     // custom animation properties
389     virtual void CreateAnimatablePropertyFloat(
390         const std::string& propertyName, float value, const std::function<void(float)>& onCallbackEvent) = 0;
391     virtual void UpdateAnimatablePropertyFloat(const std::string& propertyName, float value) = 0;
392 
393     virtual void CreateAnimatableArithmeticProperty(const std::string& propertyName,
394         RefPtr<NG::CustomAnimatableArithmetic>& value,
395         std::function<void(const RefPtr<NG::CustomAnimatableArithmetic>&)>& onCallbackEvent) = 0;
396     virtual void UpdateAnimatableArithmeticProperty(
397         const std::string& propertyName, RefPtr<NG::CustomAnimatableArithmetic>& value) = 0;
398     virtual void UpdateSafeAreaExpandOpts(const NG::SafeAreaExpandOpts& opts) = 0;
399 
400     // global light
401     virtual void SetLightPosition(
402         const CalcDimension& positionX, const CalcDimension& positionY, const CalcDimension& positionZ) = 0;
403     virtual void SetLightIntensity(const float value) = 0;
404     virtual void SetLightColor(const Color& value) = 0;
405     virtual void SetLightIlluminated(const uint32_t value) = 0;
406     virtual void SetIlluminatedBorderWidth(const Dimension& value) = 0;
407     virtual void SetBloom(const float value) = 0;
408     virtual void SetPositionLocalizedEdges(bool needLocalized) = 0;
409     virtual void SetLocalizedMarkAnchor(bool needLocalized) = 0;
410     virtual void SetOffsetLocalizedEdges(bool needLocalized) = 0;
411 
412 private:
413     static std::unique_ptr<ViewAbstractModel> instance_;
414     static std::mutex mutex_;
415 };
416 } // namespace OHOS::Ace
417 
418 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_BASE_VIEW_ABSTRACT_MODEL_H
419