Class AxisScalePolicyManualTicks

  • All Implemented Interfaces:
    IAxisScalePolicy

    public class AxisScalePolicyManualTicks
    extends java.lang.Object
    implements IAxisScalePolicy
    Scale policy implementation that ensures the following:
    • No label will overwrite the following label.
    • No two labels will have the same value.
    • Every tick will exactly show the value without rounding errors.
    • Always the closest next possible tick is chosen regardless whether it is a major tick or a minor tick (subject to change in favor of major ticks)

    While this strategy is quite comfortable and prevents visual oddities there are some consequences to it:

    • Major ticks are not guaranteed to be shown. This is because a label of a minor tick label may need so much space that the following major tick has to be skipped (subject to change)
    • Detailed control is not easy. E.g. if you want to enforce more ticks to show up you could:
    • Performance is not the best. This is because the space for a label has to be computed and pixels have to be transformed from and to the value domain.

    Author:
    Achim Westermann
    • Constructor Detail

      • AxisScalePolicyManualTicks

        public AxisScalePolicyManualTicks()
    • Method Detail

      • createLabeledValue

        protected LabeledValue createLabeledValue​(double value,
                                                  double majorTickSpacing,
                                                  IAxis<?> axis)
        Just a helper to create a labeled value instance.

        Parameters:
        value - the value use.
        majorTickSpacing - if value % majorTickSpacing is zero then the resulting LabeledValue will be judged as a major tick.
        axis - needed to re-parse the value into the label string by using the formatter of it.
        Returns:
        the value rounded to minor or major ticks.
      • getLabels

        protected java.util.List<LabeledValue> getLabels​(IAxis<?> axis)
        Returns the labels for this axis.

        Returns:
        the labels for the axis.
      • initPaintIteration

        public void initPaintIteration​(IAxis<?> axis)
        Description copied from interface: IAxisScalePolicy
        Performs expensive calculations for various values that are used by many calls throughout a paint iterations.

        These values are constant throughout a paint iteration by the contract that no point is added removed or changed in this period. Because these values are used from many methods it is impossible to calculate them at a "transparent" method that may perform this caching over a paint period without knowledge from outside. The first method called in a paint iteration is called several further times in the iteration. So this is the common hook to invoke before painting a chart.

        Specified by:
        initPaintIteration in interface IAxisScalePolicy
        Parameters:
        axis - the axis to read data from.
        See Also:
        IAxisScalePolicy.initPaintIteration(info.monitorenter.gui.chart.IAxis)