mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-13 23:17:57 +00:00
a0307d1e46
The viewport wasn't being recalculated when the viewport margins changed, and was also subject to some rounding errors. Round off the values before comparing them (as they're screen pixels), and make sure to update the viewport when the margins change. Margins were also not correctly being altered when in overscroll, which could cause bottom-aligned fixed position content to be incorrectly offset.
44 lines
1.5 KiB
Java
44 lines
1.5 KiB
Java
/* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*-
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
package org.mozilla.gecko.util;
|
|
|
|
import android.graphics.PointF;
|
|
|
|
import java.lang.IllegalArgumentException;
|
|
|
|
public final class FloatUtils {
|
|
private FloatUtils() {}
|
|
|
|
public static boolean fuzzyEquals(float a, float b) {
|
|
return (Math.abs(a - b) < 1e-6);
|
|
}
|
|
|
|
public static boolean fuzzyEquals(PointF a, PointF b) {
|
|
return fuzzyEquals(a.x, b.x) && fuzzyEquals(a.y, b.y);
|
|
}
|
|
|
|
/*
|
|
* Returns the value that represents a linear transition between `from` and `to` at time `t`,
|
|
* which is on the scale [0, 1). Thus with t = 0.0f, this returns `from`; with t = 1.0f, this
|
|
* returns `to`; with t = 0.5f, this returns the value halfway from `from` to `to`.
|
|
*/
|
|
public static float interpolate(float from, float to, float t) {
|
|
return from + (to - from) * t;
|
|
}
|
|
|
|
/**
|
|
* Returns 'value', clamped so that it isn't any lower than 'low', and it
|
|
* isn't any higher than 'high'.
|
|
*/
|
|
public static float clamp(float value, float low, float high) {
|
|
if (high < low) {
|
|
throw new IllegalArgumentException(
|
|
"clamp called with invalid parameters (" + high + " < " + low + ")" );
|
|
}
|
|
return Math.max(low, Math.min(high, value));
|
|
}
|
|
}
|