/// <summary> /// Instantiates a <see cref="NativeViewHierarchyOptimizer"/>. /// </summary> /// <param name="uiViewOperationQueue">The UI view operation queue.</param> /// <param name="shadowNodeRegistry">The shadow node registry.</param> public NativeViewHierarchyOptimizer( UIViewOperationQueue uiViewOperationQueue, ShadowNodeRegistry shadowNodeRegistry) { _uiViewOperationQueue = uiViewOperationQueue; _shadowNodeRegistry = shadowNodeRegistry; _tagsWithLayoutVisited = new Dictionary<int, bool>(); }
/// <summary> /// Called to aggregate the current text and event counter. /// </summary> /// <param name="uiViewOperationQueue">The UI operation queue.</param> public override void OnCollectExtraUpdates(UIViewOperationQueue uiViewOperationQueue) { base.OnCollectExtraUpdates(uiViewOperationQueue); if (_computedPadding != null) { uiViewOperationQueue.EnqueueUpdateExtraData(ReactTag, _computedPadding); _computedPadding = null; } }
/// <summary> /// Instantiates the <see cref="UIImplementation"/>. /// </summary> /// <param name="viewManagers">The view managers.</param> /// <param name="operationsQueue">The operations queue.</param> protected UIImplementation( ViewManagerRegistry viewManagers, UIViewOperationQueue operationsQueue) { _viewManagers = viewManagers; _operationsQueue = operationsQueue; _shadowNodeRegistry = new ShadowNodeRegistry(); _nativeViewHierarchyOptimizer = new NativeViewHierarchyOptimizer( _operationsQueue, _shadowNodeRegistry); }
/// <summary> /// Called to aggregate all the changes to the image nodes. /// </summary> /// <param name="uiViewOperationQueue">The UI operation queue.</param> public override void OnCollectExtraUpdates(UIViewOperationQueue uiViewOperationQueue) { base.OnCollectExtraUpdates(uiViewOperationQueue); var args = Tuple.Create( _imageSources, _imageTintColor, _imageBackgroundColor); uiViewOperationQueue.EnqueueUpdateExtraData(ReactTag, args); }
/// <summary> /// Called to aggregate the current text and event counter. /// </summary> /// <param name="uiViewOperationQueue">The UI operation queue.</param> public override void OnCollectExtraUpdates(UIViewOperationQueue uiViewOperationQueue) { base.OnCollectExtraUpdates(uiViewOperationQueue); if (_computedPadding != null) { uiViewOperationQueue.EnqueueUpdateExtraData(ReactTag, _computedPadding); _computedPadding = null; } if (_jsEventCount != Unset) { uiViewOperationQueue.EnqueueUpdateExtraData(ReactTag, Tuple.Create(_jsEventCount, _text)); } }
/// <summary> /// Called to aggregate the current text and event counter. /// </summary> /// <param name="uiViewOperationQueue">The UI operation queue.</param> public override void OnCollectExtraUpdates(UIViewOperationQueue uiViewOperationQueue) { Log.Info(ReactConstants.Tag, "### Look, OnCollectExtraUpdates invoked ~ "); base.OnCollectExtraUpdates(uiViewOperationQueue); if (_computedPadding != null) { uiViewOperationQueue.EnqueueUpdateExtraData(ReactTag, _computedPadding); _computedPadding = null; } if (_jsEventCount != Unset) { uiViewOperationQueue.EnqueueUpdateExtraData(ReactTag, Tuple.Create(_jsEventCount, _text)); } }
/// <summary> /// Called after a layout step at the end of a UI batch from /// <see cref="UIManagerModule"/>. May be used to enqueue additional UI /// operations for the native view. Will only be called on nodes marked /// as updated. /// </summary> /// <param name="uiViewOperationQueue"> /// Interface for enqueueing UI operations. /// </param> public override void OnCollectExtraUpdates(UIViewOperationQueue uiViewOperationQueue) { base.OnCollectExtraUpdates(uiViewOperationQueue); if (_preparedSpannableText != null) { ReactButtonUpdate reactTextUpdate = new ReactButtonUpdate( _preparedSpannableText, 0, false, 0, 0, 0, 0, 0 ); uiViewOperationQueue.EnqueueUpdateExtraData(ReactTag, reactTextUpdate); } }
/// <summary> /// Called to aggregate all the changes to the virtual text nodes. /// </summary> /// <param name="uiViewOperationQueue">The UI operation queue.</param> public override void OnCollectExtraUpdates(UIViewOperationQueue uiViewOperationQueue) { if (_isVirtual) { return; } base.OnCollectExtraUpdates(uiViewOperationQueue); if (_inline != null) { var _paddings = new Thickness() { Left = float.IsNaN(GetPadding(CSSSpacingType.Left)) ? float.IsNaN(GetPadding(CSSSpacingType.Horizontal)) ? float.IsNaN(GetPadding(CSSSpacingType.All)) ? 0 : GetPadding(CSSSpacingType.All) : GetPadding(CSSSpacingType.Horizontal) : GetPadding(CSSSpacingType.Left), Top = float.IsNaN(GetPadding(CSSSpacingType.Top)) ? float.IsNaN(GetPadding(CSSSpacingType.Vertical)) ? float.IsNaN(GetPadding(CSSSpacingType.All)) ? 0 : GetPadding(CSSSpacingType.All) : GetPadding(CSSSpacingType.Vertical) : GetPadding(CSSSpacingType.Top), }; var args = Tuple.Create( _inline, _textAlignment, _lineHeight, _numberOfLines, _letterSpacing, _paddings); uiViewOperationQueue.EnqueueUpdateExtraData(ReactTag, args); } }
/// <summary> /// Called after a layout step at the end of a UI batch from /// <see cref="UIManagerModule"/>. May be used to enqueue additional UI /// operations for the native view. Will only be called on nodes marked /// as updated. /// </summary> /// <param name="uiViewOperationQueue"> /// Interface for enqueueing UI operations. /// </param> public override void OnCollectExtraUpdates(UIViewOperationQueue uiViewOperationQueue) { if (_isVirtual) { return; } base.OnCollectExtraUpdates(uiViewOperationQueue); if (_preparedSpannableText != null) { ReactTextUpdate reactTextUpdate = new ReactTextUpdate( _preparedSpannableText, 0, false, 0, 0, 0, 0, 0, _textVAignScale ); uiViewOperationQueue.EnqueueUpdateExtraData(ReactTag, reactTextUpdate); } }
/// <summary> /// Called after a layout step at the end of a UI batch from /// <see cref="UIManagerModule"/>. May be used to enqueue additional UI /// operations for the native view. Will only be called on nodes marked /// as updated. /// </summary> /// <param name="uiViewOperationQueue"> /// Interface for enqueueing UI operations. /// </param> public override void OnCollectExtraUpdates(UIViewOperationQueue uiViewOperationQueue) { base.OnCollectExtraUpdates(uiViewOperationQueue); uiViewOperationQueue.EnqueueUpdateExtraData(ReactTag, this); }
/// <summary> /// Called after a layout step at the end of a UI batch from /// <see cref="UIManagerModule"/>. May be used to enqueue additional UI /// operations for the native view. Will only be called on nodes marked /// as updated. /// </summary> /// <param name="uiViewOperationQueue"> /// Interface for enqueueing UI operations. /// </param> public sealed override void OnCollectExtraUpdates(UIViewOperationQueue uiViewOperationQueue) { base.OnCollectExtraUpdates(uiViewOperationQueue); uiViewOperationQueue.EnqueueUpdateExtraData(ReactTag, this); }