/// <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>();
 }
Example #2
0
        /// <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);
 }
Example #4
0
        /// <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);
            }
        }
Example #9
0
 /// <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);
 }