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; } } } } }