void DrawAxis(Gdk.Window win, Gdk.GC gc, Axis ax)
        {
            double minStep = GetMinTickStep (ax.Dimension);

            TickEnumerator enumSmall = ax.GetTickEnumerator (minStep);
            if (enumSmall == null)
                return;

            TickEnumerator enumBig = ax.GetTickEnumerator (minStep * 2);

            if (enumBig == null) {
                DrawTicks (win, gc, enumSmall, ax.Position, ax.Dimension, ax.TickSize, ax.ShowLabels);
            } else {
                DrawTicks (win, gc, enumSmall, ax.Position, ax.Dimension, ax.TickSize / 2, false);
                DrawTicks (win, gc, enumBig, ax.Position, ax.Dimension, ax.TickSize, ax.ShowLabels);
            }
        }
        int MeasureAxisSize(Axis ax)
        {
            double minStep = GetMinTickStep (ax.Dimension);

            TickEnumerator enumSmall = ax.GetTickEnumerator (minStep);
            if (enumSmall == null)
                return 0;

            TickEnumerator enumBig = ax.GetTickEnumerator (minStep * 2);

            if (enumBig == null)
                return MeasureTicksSize (enumSmall, ax.Dimension);
            else
                return MeasureTicksSize (enumBig, ax.Dimension);
        }
 public void AddAxis(Axis ax, AxisPosition position)
 {
     ax.Owner = this;
     ax.Position = position;
     axis.Add (ax);
     QueueDraw ();
 }