public override Size GetPreferredSize(Size proposedSize) { AbcMeasureContext context = new AbcMeasureContext(new AbcSize(proposedSize.Width, proposedSize.Height)); this.controlCoordinator.abcControl.Measure(context); return(new Size((int)this.controlCoordinator.abcControl.DesiredMeasure.width, (int)this.controlCoordinator.abcControl.DesiredMeasure.height)); }
private AbcSize MeasureLabels(AbcMeasureContext context) { int count = this.labelInfos.Count; //double desiredWidth = 0; //double desiredHeight = 0; for (int i = 0; i < count; i++) { AxisLabelInfo labelInfo = this.labelInfos[i]; IAbcLabel labelVisual = this.labelsPool.GetOrCreate(i); labelVisual.Text = labelInfo.labelContent; labelVisual.Measure(context); //desiredWidth += labelVisual.DesiredMeasure.width; //desiredHeight = Math.Max(0, labelVisual.DesiredMeasure.height); } this.labelsPool.HideAfter(count); if (count > 0) { IAbcLabel firstLabel = this.labelsPool.GetOrCreate(0); IAbcLabel lastLabel = this.labelsPool.GetOrCreate(count - 1); double desiredWidth = firstLabel.DesiredMeasure.width + lastLabel.DesiredMeasure.width; double desiredHeight = Math.Max(firstLabel.DesiredMeasure.height, lastLabel.DesiredMeasure.height); return(new AbcSize(desiredWidth, desiredHeight)); } else { return(AbcSize.Zero); } }
protected override Size MeasureOverride(Size constraint) { base.MeasureOverride(constraint); AbcMeasureContext context = new AbcMeasureContext(new AbcSize(constraint.Width, constraint.Height)); this.controlCoordinator.abcControl.Measure(context); return(new Size(this.controlCoordinator.abcControl.DesiredMeasure.width, this.controlCoordinator.abcControl.DesiredMeasure.height)); }
internal override AbcSize MeasureOverride(AbcMeasureContext context) { if (this.TryEnsureFormattedText()) { return(new AbcSize(this.nativeFormattedText.Width, this.nativeFormattedText.Height)); } else { return(AbcSize.Zero); } }
void IAbcVisual.Measure(AbcMeasureContext context) { if (!this.isVisible) { return; } this.isMeasurePhase = true; this.desiredMeasure = this.MeasureOverride(context); this.isMeasurePhase = false; this.isMeasureValid = true; }
void IAbcVisual.Measure(AbcMeasureContext context) { IAbcVisual abcVisual = this; if (!abcVisual.IsVisible) { return; } this.isMeasurePhase = true; this.MeasureOverride(context); this.isMeasurePhase = false; this.isMeasureValid = true; }
internal void Measure(AbcMeasureContext context) { if (this.isMeasureValid) { return; } this.isMeasurePhase = true; AbcSize availableSize = context.availableSize; this.desiredMeasure = this.MeasureOverride(context); context.availableSize = availableSize; this.isMeasurePhase = false; this.isMeasureValid = true; }
protected override AbcSize MeasureOverride(AbcMeasureContext context) { if (this.axisLine == null) { this.axisLine = (IAbcRectangle)this.VisualTree.CreateVisual(typeof(IAbcRectangle)); this.canvas.Children.Add(this.axisLine); } this.EnsureLabelInfos(); AbcSize labelsDesiredSize = this.MeasureLabels(context); double desiredWidth = labelsDesiredSize.width; double desiredHeight = this.axisLineThickness + this.axisTickThickness + labelsDesiredSize.height; return(new AbcSize(desiredWidth, desiredHeight)); }
protected override void OnMeasure(int widthMeasureSpec, int heightMeasureSpec) { MeasureSpecMode widthMode = MeasureSpec.GetMode(widthMeasureSpec); MeasureSpecMode heightMode = MeasureSpec.GetMode(heightMeasureSpec); double availableWidth = widthMode == MeasureSpecMode.Unspecified ? double.PositiveInfinity : MeasureSpec.GetSize(widthMeasureSpec); double availableHeight = heightMode == MeasureSpecMode.Unspecified ? double.PositiveInfinity : MeasureSpec.GetSize(heightMeasureSpec); AbcMeasureContext context = new AbcMeasureContext(new AbcSize(availableWidth, availableHeight)); this.controlCoordinator.abcControl.Measure(context); AbcSize desiredMeasure = this.controlCoordinator.abcControl.DesiredMeasure; int measuredWidth = widthMode == MeasureSpecMode.Exactly ? (int)availableWidth : AbcMath.Round(desiredMeasure.width); int measuredHeight = heightMode == MeasureSpecMode.Exactly ? (int)availableHeight : AbcMath.Round(desiredMeasure.height); this.SetMeasuredDimension(measuredWidth, measuredHeight); }
internal virtual void MeasureOverride(AbcMeasureContext context) { this.uiElement.Measure(new Size(context.availableSize.width, context.availableSize.height)); }
protected abstract AbcSize MeasureOverride(AbcMeasureContext context);
internal virtual AbcSize MeasureOverride(AbcMeasureContext context) { return(AbcSize.Zero); }
internal virtual void MeasureOverride(AbcMeasureContext context) { this.view.Measure((int)context.availableSize.width, (int)context.availableSize.height); }
internal AbcMeasureContext(AbcMeasureContext owner) : base(owner) { }
void IAbcControl.Measure(AbcMeasureContext context) { this.Measure(context); }
internal virtual void MeasureOverride(AbcMeasureContext context) { this.control?.GetPreferredSize(new Size((int)context.availableSize.width, (int)context.availableSize.height)); }