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); }
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]); }
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); }
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]); }
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; }
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)); }
public virtual double GetMeasuredLength(ContainerView containerView, GridTrack gridTrack) { return(gridTrack.MeasuredLength); }