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