public double GetContainerViewsLength(GridTrack gridTrack, int count)
            {
                Debug.Assert(count >= 0 && count <= ContainerViewList.MaxCount);
                if (count == 0)
                {
                    return(0);
                }

                var owner = gridTrack.Owner;

                var unrealized = ContainerViewList.Count == 0 ? 0 : ContainerViewList.First.ContainerOrdinal;

                if (count <= unrealized)
                {
                    return(count * AvgLength);
                }

                var realized = ContainerViewList.Count == 0 ? 0 : ContainerViewList.Last.ContainerOrdinal - ContainerViewList.First.ContainerOrdinal + 1;

                if (count <= unrealized + realized)
                {
                    return(unrealized * AvgLength + GetRealizedContainersLength(count - unrealized));
                }

                return(GetRealizedContainersLength(realized) + (count - realized) * AvgLength);
            }
 public LogicalCrossTrack(GridTrack gridTrack, int flowIndex = 0)
 {
     Debug.Assert(gridTrack != null && flowIndex >= 0);
     Debug.Assert(gridTrack.IsContainer || flowIndex == 0);
     GridTrack = gridTrack;
     FlowIndex = flowIndex;
 }
            private double GetInitialMeasuredLength(ContainerView containerView, GridTrack gridTrack)
            {
                var rowView = containerView as RowView;
                var length  = rowView == null ? gridTrack.Length : _scrollableManager.GetLength(gridTrack, rowView.RowPresenter);

                return(length.IsAuto ? 0 : length.Value);
            }
Exemple #4
0
        protected virtual double SetMeasuredAutoLength(ContainerView containerView, GridTrack gridTrack, double value)
        {
            Debug.Assert(value - gridTrack.MeasuredLength > 0);
            var delta = gridTrack.SetMeasuredLength(value);

            gridTrack.Owner.TotalAutoLength += delta;
            return(delta);
        }
            public Span GetRelativeSpan(GridTrack gridTrack, int ordinal)
            {
                Debug.Assert(ordinal >= 0 && ordinal < ContainerViewList.MaxCount);

                var containerView = ContainerViewList.GetContainerView(ordinal);

                return(containerView != null?GetRelativeSpan(containerView, gridTrack) : new Span(GetStartOffset(gridTrack), GetEndOffset(gridTrack)));
            }
            public double GetMeasuredLength(ContainerView containerView, GridTrack gridTrack)
            {
                Debug.Assert(gridTrack != null && gridTrack.VariantByContainer);
                int index = gridTrack.VariantByContainerIndex;
                var cumulativeMeasuredLengths = GetCumulativeMeasuredLengths(containerView);

                return(index == 0 ? cumulativeMeasuredLengths[0] : cumulativeMeasuredLengths[index] - cumulativeMeasuredLengths[index - 1]);
            }
Exemple #7
0
        private double GetRelativePositionMain(ContainerView containerView, GridTrack gridTrack, double fraction)
        {
            Debug.Assert(gridTrack.IsContainer);
            Debug.Assert(fraction >= 0 && fraction <= 1);

            var result = GetRelativePositionMain(containerView, gridTrack);

            if (fraction > 0)
            {
                result += new LogicalMainTrack(gridTrack, containerView).Length *fraction;
            }
            return(result);
        }
        private LogicalMainTrack GetEndLogicalMainTrack(GridTrack gridTrack)
        {
            Debug.Assert(gridTrack.Owner == GridTracksMain);
            if (!gridTrack.IsContainer)
            {
                return(new LogicalMainTrack(gridTrack));
            }

            if (MaxContainerCount > 0)
            {
                return(new LogicalMainTrack(gridTrack, MaxContainerCount - 1));
            }
            else
            {
                return(TailStartLogicalMainTrack);
            }
        }
            public double SetMeasuredLength(ContainerView containerView, GridTrack gridTrack, double value)
            {
                Debug.Assert(gridTrack != null && gridTrack.VariantByContainer);
                value = Math.Max(gridTrack.MinLength, value);
                value = Math.Min(gridTrack.MaxLength, value);
                var oldValue = GetMeasuredLength(containerView, gridTrack);
                var delta    = value - oldValue;

                if (delta == 0)
                {
                    return(0);
                }

                var index = gridTrack.VariantByContainerIndex;
                var cumulativeMeasuredLengths = GetCumulativeMeasuredLengths(containerView);

                for (int i = index; i < cumulativeMeasuredLengths.Length; i++)
                {
                    cumulativeMeasuredLengths[i] += delta;
                }
                InvalidateContainerLengths();
                return(delta);
            }
 public override void OnResized(GridTrack gridTrack, GridLength oldValue)
 {
     base.OnResized(gridTrack, oldValue);
     Template.InvalidateGridRows();
 }
 public virtual void OnResized(GridTrack gridTrack, GridLength oldValue)
 {
     Debug.Assert(gridTrack.Owner == this);
     RemoveLength(oldValue);
     AddLength(gridTrack.Length);
 }
Exemple #12
0
 private void VerifyGridTrack(GridTrack gridTrack, GridLength expectedLength, double expectedMinLength, double expectedMaxLength)
 {
     Assert.AreEqual(gridTrack.Length, expectedLength);
     Assert.AreEqual(gridTrack.MinLength, expectedMinLength);
     Assert.AreEqual(gridTrack.MaxLength, expectedMaxLength);
 }
 private double GetStartPositionCross(GridTrack gridTrack, int flowIndex)
 {
     return(new LogicalCrossTrack(gridTrack, flowIndex).StartPosition);
 }
 private double GetEndOffset(GridTrack gridTrack)
 {
     return(GetStartOffset(gridTrack) + gridTrack.VariantByContainerAvgLength);
 }
 private double GetStartOffset(GridTrack gridTrack)
 {
     RefreshContainerLengths();
     return(gridTrack.VariantByContainerStartOffset);
 }
 private double GetEndPositionCross(GridTrack gridTrack, int flowIndex)
 {
     return(GetStartPositionCross(gridTrack, flowIndex) + gridTrack.MeasuredLength);
 }
 private double GetRelativeEndOffset(ContainerView containerView, GridTrack gridTrack)
 {
     Debug.Assert(gridTrack != null && gridTrack.VariantByContainer);
     return(GetCumulativeMeasuredLengths(containerView)[gridTrack.VariantByContainerIndex]);
 }
Exemple #18
0
 internal GridSpan(GridTrack startTrack, GridTrack endTrack)
 {
     StartTrack = startTrack;
     EndTrack   = endTrack;
 }
 public LogicalMainTrack(GridTrack gridTrack, int containerOrdinal)
 {
     Debug.Assert(gridTrack.IsContainer && containerOrdinal >= 0);
     GridTrack         = gridTrack;
     _containerOrdinal = containerOrdinal;
 }
 public LogicalMainTrack(GridTrack gridTrack)
 {
     Debug.Assert(!gridTrack.IsContainer);
     GridTrack         = gridTrack;
     _containerOrdinal = -1;
 }
Exemple #21
0
        public bool Contains(GridTrack gridTrack)
        {
            Debug.Assert(StartTrack.Owner == gridTrack.Owner);

            return(gridTrack.Ordinal >= StartTrack.Ordinal && gridTrack.Ordinal <= EndTrack.Ordinal);
        }
 public LogicalMainTrack(GridTrack gridTrack, ContainerView containerView)
     : this(gridTrack, containerView.ContainerOrdinal)
 {
 }
 private Span GetRelativeSpan(ContainerView containerView, GridTrack gridTrack)
 {
     Debug.Assert(gridTrack != null && gridTrack.VariantByContainer);
     return(new Span(GetRelativeStartOffset(containerView, gridTrack), GetRelativeEndOffset(containerView, gridTrack)));
 }
 private double GetRelativeStartOffset(ContainerView containerView, GridTrack gridTrack)
 {
     Debug.Assert(gridTrack != null && gridTrack.VariantByContainer);
     return(GetRelativeEndOffset(containerView, gridTrack) - GetMeasuredLength(containerView, gridTrack));
 }
Exemple #25
0
 public virtual double GetMeasuredLength(ContainerView containerView, GridTrack gridTrack)
 {
     return(gridTrack.MeasuredLength);
 }