///|
// Axis._set_lim validates finite inputs before the locator and actual scale.
// The scale's domain predicate must not preempt its endpoint clamp.
fn Axis::logit_limit_bounds_checked(
self : Axis,
lower : Double,
upper : Double,
) -> @core.Limits raise @core.DataError {
if lower.is_nan() || lower.is_inf() || upper.is_nan() || upper.is_inf() {
raise @core.DataError::NonFiniteLimit(axis="logit view")
}
let descending = lower > upper
let bounds = self.numeric_nonsingular_bounds_checked(lower, upper)
let minpos = self.get_minpos()
let (first, last) = self.scale.limit_range_for_scale(
bounds.lower(),
bounds.upper(),
minpos,
)
let (first, last) = if last < first { (last, first) } else { (first, last) }
if descending {
@core.limits(last, first)
} else {
@core.limits(first, last)
}
}