centerOn static method

double centerOn(
  1. double position,
  2. double width,
  3. double max
)

Return the distance from zero that centers width as closely as possible to position from zero while fitting between zero and max.

Implementation

static double centerOn(double position, double width, double max) {
  // If it overflows on the left, put it as far left as possible.
  if (position - width / 2.0 < 0.0) {
    return 0.0;
  }

  // If it overflows on the right, put it as far right as possible.
  if (position + width / 2.0 > max) {
    return max - width;
  }

  // Otherwise it fits while perfectly centered.
  return position - width / 2.0;
}