Reversible axes can easily be implemented by relaxing the restriction Minimum < Maximum for the Range and RangeAxis classes. This has the additional benefit of not throwing exceptions if the user tries to set a range with Minimum > Maximum. In particular, if one binds with NumericAxis.Minimum or NumericAxis.Maximum, it is very easy to accidentally invert these quantities, since they are not being changed atomically. For example,
axis.Minimum = 0;
axis.Maximum = 10;
throws when axis.Maximum < 10, even though the invalid state is transient.
Personally, I think this is the most natural way to support reversible axes, since it naturally works with the coordinate transformation. However, if you prefer to implement reversible axes with a Boolean IsReversed property, please consider modifying NumericAxis to gracefully handle the situation where Minimum < Maximum.
axis.Minimum = 0;
axis.Maximum = 10;
throws when axis.Maximum < 10, even though the invalid state is transient.
Personally, I think this is the most natural way to support reversible axes, since it naturally works with the coordinate transformation. However, if you prefer to implement reversible axes with a Boolean IsReversed property, please consider modifying NumericAxis to gracefully handle the situation where Minimum < Maximum.