@SuppressWarnings("DuplicateExpressions")
    private Point deriveCenter(@Gravity int gravity,
                               int orientation,
                               @Dimension int radius,
                               @Dimension int peekDistance,
                               Point out) {
        final int gravitySign = gravity == Gravity.START ? -1 : 1;
        final int distanceMultiplier = gravity == Gravity.START ? 0 : 1;
        int x, y;
        switch (orientation) {
            case Orientation.HORIZONTAL:
                y = (distanceMultiplier * getHeight()) + gravitySign * (Math.abs(radius - peekDistance));
                x = getWidth() / 2;
                break;
            case Orientation.VERTICAL:
            default:
                y = getHeight() / 2;
                x = (distanceMultiplier * getWidth()) + gravitySign * (Math.abs(radius - peekDistance));
                break;
        }
        out.set(x, y);
        return out;
    }
Accounting for the settings of {@link Gravity} and {@link Orientation}, find the center point
around which this layout manager should arrange list items.  Place the resulting coordinates
into {@code out}, to avoid reallocation.
turn/src/main/java/cdflynn/android/library/turn/TurnLayoutManager.java