Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(103)

Unified Diff: base/android/java/src/org/chromium/base/AndroidMathUtils.java

Issue 987883002: Upstream Layout.java and associated files (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | chrome/android/java/res/values/dimens.xml » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/android/java/src/org/chromium/base/AndroidMathUtils.java
diff --git a/base/android/java/src/org/chromium/base/AndroidMathUtils.java b/base/android/java/src/org/chromium/base/AndroidMathUtils.java
new file mode 100644
index 0000000000000000000000000000000000000000..54f2c852eb8a6fd9627fb9588496550e76995add
--- /dev/null
+++ b/base/android/java/src/org/chromium/base/AndroidMathUtils.java
@@ -0,0 +1,80 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.base;
+
+/**
+ * Contains various math utilities used throughout Android.
+ */
+public class AndroidMathUtils {
Yaron 2015/03/06 22:57:08 There's already a MathUtils class in org.chromium.
David Trainor- moved to gerrit 2015/03/09 20:02:42 Done.
+
+ private AndroidMathUtils() {}
+
+ /**
+ * Moves {@code value} forward to {@code target} based on {@code speed}.
+ * @param value The current value.
+ * @param target The target value.
+ * @param speed How far to move {@code value} to {@code target}. 0 doesn't move it at all. 1
+ * moves it to {@code target}.
+ * @return The new interpolated value.
+ */
+ public static float interpolate(float value, float target, float speed) {
+ return (value + (target - value) * speed);
+ }
+
+ /**
+ * Smooth a value between 0 and 1.
+ * @param t The value to smooth.
+ * @return The smoothed value between 0 and 1.
+ */
+ public static float smoothstep(float t) {
+ return t * t * (3.0f - 2.0f * t);
+ }
+
+ /**
+ * Scales the provided dimension such that it is just large enough to fit
+ * the target width and height.
+ *
+ * @param dimensions The dimensions to scale
+ * @param targetWidth The target width
+ * @param targetHeight The target height
+ * @return The scale factor applied to dimensions
+ */
+ public static float scaleToFitTargetSize(
+ int [] dimensions, int targetWidth, int targetHeight) {
+ if (dimensions.length < 2 || dimensions[0] <= 0 || dimensions[1] <= 0) {
+ throw new IllegalArgumentException(
+ "Expected dimensions to have length >= 2 && dimensions[0] > 0 && "
+ + "dimensions[1] > 0");
+ }
+ float scale = Math.max(
+ (float) targetWidth / dimensions[0],
+ (float) targetHeight / dimensions[1]);
+ dimensions[0] *= scale;
+ dimensions[1] *= scale;
+ return scale;
+ }
+
+ /**
+ * Flips {@code value} iff {@code flipSign} is {@code true}.
+ * @param value The value to flip.
+ * @param flipSign Whether or not to flip the value.
+ * @return {@code value} iff {@code flipSign} is {@code false}, otherwise negative
+ * {@code value}.
+ */
+ public static int flipSignIf(int value, boolean flipSign) {
+ return flipSign ? -value : value;
+ }
+
+ /**
+ * Flips {@code value} iff {@code flipSign} is {@code true}.
+ * @param value The value to flip.
+ * @param flipSign Whether or not to flip the value.
+ * @return {@code value} iff {@code flipSign} is {@code false}, otherwise negative
+ * {@code value}.
+ */
+ public static float flipSignIf(float value, boolean flipSign) {
+ return flipSign ? -value : value;
+ }
+}
« no previous file with comments | « no previous file | chrome/android/java/res/values/dimens.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698