Example #1
0
        void UpdateAxes(bool recalculateAll)
        {
            if (drawables.Count != xAxisPositions.Count || drawables.Count != yAxisPositions.Count)
            {
                throw new XwPlotException("plots and axis position arrays our of sync");
            }

            int position = 0;

            // if we're not recalculating axes using all iplots then set
            // position to last one in list.
            if (!recalculateAll)
            {
                position = drawables.Count - 1;
                if (position < 0)
                {
                    position = 0;
                }
            }

            if (recalculateAll)
            {
                XAxis1 = null;
                YAxis1 = null;
                XAxis2 = null;
                YAxis2 = null;
            }

            for (int i = position; i < drawables.Count; ++i)
            {
                // only update axes if this drawable is an IPlot.
                if (!(drawables[i] is IPlot))
                {
                    continue;
                }

                IPlot         p   = (IPlot)drawables[i];
                XAxisPosition xap = (XAxisPosition)xAxisPositions[i];
                YAxisPosition yap = (YAxisPosition)yAxisPositions[i];

                if (xap == XAxisPosition.Bottom)
                {
                    if (XAxis1 == null)
                    {
                        XAxis1 = p.SuggestXAxis();
                        if (XAxis1 != null)
                        {
                            XAxis1.TicksAngle = -Math.PI / 2.0;
                        }
                    }
                    else
                    {
                        XAxis1.LUB(p.SuggestXAxis());
                    }

                    if (XAxis1 != null)
                    {
                        XAxis1.MinPhysicalLargeTickStep = 50;

                        if (AutoScaleAutoGeneratedAxes)
                        {
                            XAxis1.AutoScaleText  = true;
                            XAxis1.AutoScaleTicks = true;
                            XAxis1.TicksIndependentOfPhysicalExtent = true;
                        }
                        else
                        {
                            XAxis1.AutoScaleText  = false;
                            XAxis1.AutoScaleTicks = false;
                            XAxis1.TicksIndependentOfPhysicalExtent = false;
                        }
                    }
                }

                if (xap == XAxisPosition.Top)
                {
                    if (XAxis2 == null)
                    {
                        XAxis2 = p.SuggestXAxis();
                        if (XAxis2 != null)
                        {
                            XAxis2.TicksAngle = Math.PI / 2.0;
                        }
                    }
                    else
                    {
                        XAxis2.LUB(p.SuggestXAxis());
                    }

                    if (XAxis2 != null)
                    {
                        XAxis2.MinPhysicalLargeTickStep = 50;

                        if (AutoScaleAutoGeneratedAxes)
                        {
                            XAxis2.AutoScaleText  = true;
                            XAxis2.AutoScaleTicks = true;
                            XAxis2.TicksIndependentOfPhysicalExtent = true;
                        }
                        else
                        {
                            XAxis2.AutoScaleText  = false;
                            XAxis2.AutoScaleTicks = false;
                            XAxis2.TicksIndependentOfPhysicalExtent = false;
                        }
                    }
                }

                if (yap == YAxisPosition.Left)
                {
                    if (YAxis1 == null)
                    {
                        YAxis1 = p.SuggestYAxis();
                        if (YAxis1 != null)
                        {
                            YAxis1.TicksAngle = Math.PI / 2.0;
                        }
                    }
                    else
                    {
                        YAxis1.LUB(p.SuggestYAxis());
                    }

                    if (YAxis1 != null)
                    {
                        if (AutoScaleAutoGeneratedAxes)
                        {
                            YAxis1.AutoScaleText  = true;
                            YAxis1.AutoScaleTicks = true;
                            YAxis1.TicksIndependentOfPhysicalExtent = true;
                        }
                        else
                        {
                            YAxis1.AutoScaleText  = false;
                            YAxis1.AutoScaleTicks = false;
                            YAxis1.TicksIndependentOfPhysicalExtent = false;
                        }
                    }
                }

                if (yap == YAxisPosition.Right)
                {
                    if (YAxis2 == null)
                    {
                        YAxis2 = p.SuggestYAxis();
                        if (YAxis2 != null)
                        {
                            YAxis2.TicksAngle = -Math.PI / 2.0;
                        }
                    }
                    else
                    {
                        YAxis2.LUB(p.SuggestYAxis());
                    }

                    if (YAxis2 != null)
                    {
                        if (AutoScaleAutoGeneratedAxes)
                        {
                            YAxis2.AutoScaleText  = true;
                            YAxis2.AutoScaleTicks = true;
                            YAxis2.TicksIndependentOfPhysicalExtent = true;
                        }
                        else
                        {
                            YAxis2.AutoScaleText  = false;
                            YAxis2.AutoScaleTicks = false;
                            YAxis2.TicksIndependentOfPhysicalExtent = false;
                        }
                    }
                }
            }
        }