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));
        }
Exemple #4
0
 internal override AbcSize MeasureOverride(AbcMeasureContext context)
 {
     if (this.TryEnsureFormattedText())
     {
         return(new AbcSize(this.nativeFormattedText.Width, this.nativeFormattedText.Height));
     }
     else
     {
         return(AbcSize.Zero);
     }
 }
Exemple #5
0
        void IAbcVisual.Measure(AbcMeasureContext context)
        {
            if (!this.isVisible)
            {
                return;
            }

            this.isMeasurePhase = true;
            this.desiredMeasure = this.MeasureOverride(context);
            this.isMeasurePhase = false;
            this.isMeasureValid = true;
        }
Exemple #6
0
        void IAbcVisual.Measure(AbcMeasureContext context)
        {
            IAbcVisual abcVisual = this;

            if (!abcVisual.IsVisible)
            {
                return;
            }

            this.isMeasurePhase = true;
            this.MeasureOverride(context);
            this.isMeasurePhase = false;
            this.isMeasureValid = true;
        }
Exemple #7
0
        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));
        }
Exemple #9
0
        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);
        }
Exemple #10
0
 internal virtual void MeasureOverride(AbcMeasureContext context)
 {
     this.uiElement.Measure(new Size(context.availableSize.width, context.availableSize.height));
 }
Exemple #11
0
 protected abstract AbcSize MeasureOverride(AbcMeasureContext context);
Exemple #12
0
 internal virtual AbcSize MeasureOverride(AbcMeasureContext context)
 {
     return(AbcSize.Zero);
 }
Exemple #13
0
 internal virtual void MeasureOverride(AbcMeasureContext context)
 {
     this.view.Measure((int)context.availableSize.width, (int)context.availableSize.height);
 }
Exemple #14
0
 internal AbcMeasureContext(AbcMeasureContext owner)
     : base(owner)
 {
 }
 void IAbcControl.Measure(AbcMeasureContext context)
 {
     this.Measure(context);
 }
Exemple #16
0
 internal virtual void MeasureOverride(AbcMeasureContext context)
 {
     this.control?.GetPreferredSize(new Size((int)context.availableSize.width, (int)context.availableSize.height));
 }