Index: chrome/android/java_staging/src/org/chromium/chrome/browser/compositor/layouts/phone/stack/StackTab.java |
diff --git a/chrome/android/java_staging/src/org/chromium/chrome/browser/compositor/layouts/phone/stack/StackTab.java b/chrome/android/java_staging/src/org/chromium/chrome/browser/compositor/layouts/phone/stack/StackTab.java |
deleted file mode 100644 |
index 7cdf28408b5ec07481faebefbd3c645a72900ef7..0000000000000000000000000000000000000000 |
--- a/chrome/android/java_staging/src/org/chromium/chrome/browser/compositor/layouts/phone/stack/StackTab.java |
+++ /dev/null |
@@ -1,521 +0,0 @@ |
-// 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.chrome.browser.compositor.layouts.phone.stack; |
- |
-import android.content.Context; |
-import android.content.res.Resources; |
- |
-import org.chromium.base.annotations.SuppressFBWarnings; |
-import org.chromium.chrome.R; |
-import org.chromium.chrome.browser.compositor.layouts.ChromeAnimation; |
-import org.chromium.chrome.browser.compositor.layouts.Layout.Orientation; |
-import org.chromium.chrome.browser.compositor.layouts.components.LayoutTab; |
- |
-/** |
- * StackTab is used to keep track of a thumbnail's bitmap and position and to |
- * draw itself onto the GL canvas at the desired Y Offset. |
- * @VisibleForTesting |
- */ |
-@SuppressFBWarnings("MS_PKGPROTECT") |
-public class StackTab implements ChromeAnimation.Animatable<StackTab.Property> { |
- /** |
- * Properties that can be animated by using a |
- * {@link org.chromium.chrome.browser.compositor.layouts.ChromeAnimation.Animatable}. |
- */ |
- enum Property { |
- SCALE, |
- SCROLL_OFFSET, |
- ALPHA, |
- X_IN_STACK_INFLUENCE, |
- X_IN_STACK_OFFSET, |
- X_OUT_OF_STACK, |
- Y_IN_STACK_INFLUENCE, |
- Y_IN_STACK_OFFSET, |
- Y_OUT_OF_STACK, |
- DISCARD_AMOUNT |
- } |
- |
- // Cached values from values/dimens.xml |
- public static float sStackedTabVisibleSize; // stacked_tab_visible_size |
- public static float sStackBufferWidth; // stack_buffer_width |
- public static float sStackBufferHeight; // stack_buffer_height |
- |
- // Positioner selector |
- private float mXInStackInfluence = 1.0f; |
- private float mYInStackInfluence = 1.0f; |
- |
- // In stack positioner |
- private float mScrollOffset = 0.0f; |
- private float mXInStackOffset = 0.0f; |
- private float mYInStackOffset = 0.0f; |
- |
- // Out of stack positioner |
- private float mXOutOfStack = 0.0f; |
- private float mYOutOfStack = 0.0f; |
- |
- // Values that get animated |
- private float mAlpha = 1.0f; |
- private float mScale = 1.0f; |
- private float mDiscardAmount = 0.0f; // This might alter position, rotation and alpha |
- |
- // Discard states |
- private float mDiscardOriginX; |
- private float mDiscardOriginY; |
- private boolean mDiscardFromClick; |
- |
- // The index of the tab in the stack |
- private int mIndex; |
- |
- // True if the tab is currently being removed (while animating). |
- protected boolean mDying = false; |
- |
- // The visibility sorting value is used to determine the importance of the tab for |
- // texture allocation. It is computed from the area and its position in the stack. |
- // Larger values will have more priority for acquiring texture. Negative values "often" |
- // means that the tab is not visible at all (but there are no guaranty and it's fine). |
- private float mCachedVisibleArea = 0; // Intermediate value |
- private float mCachedIndexDistance = 0; // Intermediate value |
- private float mCacheStackVisibility = 1.0f; // Intermediate value |
- private long mVisiblitySortingValue = 0; // Sorting value based on visible area. |
- private int mOrderSortingValue = 0; // Sorting value based on distance to selection. |
- |
- private LayoutTab mLayoutTab; |
- |
- /** |
- * @param tab The tab this instance is supposed to draw. |
- */ |
- public StackTab(LayoutTab tab) { |
- mLayoutTab = tab; |
- } |
- |
- /** |
- * @param index The new index in the stack layout. |
- */ |
- public void setNewIndex(int index) { |
- mIndex = index; |
- } |
- |
- /** |
- * @return The index in the stack layout. |
- */ |
- public int getIndex() { |
- return mIndex; |
- } |
- |
- /** |
- * @return The {@link LayoutTab} this instance is supposed to draw. |
- */ |
- public LayoutTab getLayoutTab() { |
- return mLayoutTab; |
- } |
- |
- /** |
- * Set the {@link LayoutTab} this instance is supposed to draw. |
- */ |
- public void setLayoutTab(LayoutTab tab) { |
- mLayoutTab = tab; |
- } |
- |
- /** |
- * @return The id of the tab, same as the id from the Tab in TabModel. |
- */ |
- public int getId() { |
- return mLayoutTab.getId(); |
- } |
- |
- /** |
- * @param y The vertical translation to be applied after the placement in the stack. |
- */ |
- public void setYInStackOffset(float y) { |
- mYInStackOffset = y; |
- } |
- |
- /** |
- * @return The vertical translation applied after the placement in the stack. |
- */ |
- public float getYInStackOffset() { |
- return mYInStackOffset; |
- } |
- |
- /** |
- * @param x The horizontal translation to be applied after the placement in the stack. |
- */ |
- public void setXInStackOffset(float x) { |
- mXInStackOffset = x; |
- } |
- |
- /** |
- * @return The horizontal translation applied after the placement in the stack. |
- */ |
- public float getXInStackOffset() { |
- return mXInStackOffset; |
- } |
- |
- /** |
- * @param y The vertical absolute position when out of stack. |
- */ |
- public void setYOutOfStack(float y) { |
- mYOutOfStack = y; |
- } |
- |
- /** |
- * @return The vertical absolute position when out of stack. |
- */ |
- public float getYOutOfStack() { |
- return mYOutOfStack; |
- } |
- |
- /** |
- * @param x The horizontal absolute position when out of stack. |
- */ |
- public void setXOutOfStack(float x) { |
- mXOutOfStack = x; |
- } |
- |
- /** |
- * @return The horizontal absolute position when out of stack. |
- */ |
- public float getXOutOfStack() { |
- return mXOutOfStack; |
- } |
- |
- /** |
- * Set the transparency value for all of the tab (the contents, |
- * border, etc...). For components that allow specifying |
- * their own alpha values, it will use the min of these two fields. |
- * |
- * @param f The transparency value for the tab. |
- */ |
- public void setAlpha(float f) { |
- mAlpha = f; |
- } |
- |
- /** |
- * @return The transparency value for all of the tab components. |
- */ |
- public float getAlpha() { |
- return mAlpha; |
- } |
- |
- /** |
- * @param xInStackInfluence The horizontal blend value between instack |
- * and out of stack pacement [0 .. 1]. |
- */ |
- public void setXInStackInfluence(float xInStackInfluence) { |
- mXInStackInfluence = xInStackInfluence; |
- } |
- |
- /** |
- * @return The horizontal blend value between instack and out of stack pacement [0 .. 1]. |
- */ |
- public float getXInStackInfluence() { |
- return mXInStackInfluence; |
- } |
- |
- /** |
- * @param yInStackInfluence The vertical blend value between instack |
- * and out of stack pacement [0 .. 1]. |
- */ |
- public void setYInStackInfluence(float yInStackInfluence) { |
- mYInStackInfluence = yInStackInfluence; |
- } |
- |
- /** |
- * @return The verical blend value between instack and out of stack pacement [0 .. 1]. |
- */ |
- public float getYInStackInfluence() { |
- return mYInStackInfluence; |
- } |
- |
- /** |
- * @param scale The scale to apply to the tab, compared to the parent. |
- */ |
- public void setScale(float scale) { |
- mScale = scale; |
- } |
- |
- /** |
- * @return The scale to apply to the tab, compared to the parent. |
- */ |
- public float getScale() { |
- return mScale; |
- } |
- |
- /** |
- * @param offset The offset of the tab along the scrolling direction in scroll space. |
- */ |
- public void setScrollOffset(float offset) { |
- mScrollOffset = offset; |
- } |
- |
- /** |
- * @return The offset of the tab along the scrolling direction in scroll space. |
- */ |
- public float getScrollOffset() { |
- return mScrollOffset; |
- } |
- |
- /** |
- * @param amount The amount of discard displacement. 0 is no discard. Negative is discard |
- * on the left. Positive is discard on the right. |
- */ |
- public void setDiscardAmount(float amount) { |
- mDiscardAmount = amount; |
- } |
- |
- /** |
- * @param deltaAmount The amount of delta discard to be added to the current discard amount. |
- */ |
- public void addToDiscardAmount(float deltaAmount) { |
- mDiscardAmount += deltaAmount; |
- } |
- |
- /** |
- * @return The amount of discard displacement. 0 is no discard. Negative is discard |
- * on the left. Positive is discard on the right. |
- */ |
- public float getDiscardAmount() { |
- return mDiscardAmount; |
- } |
- |
- /** |
- * @param x The x coordinate in tab space of where the discard transforms should originate. |
- */ |
- public void setDiscardOriginX(float x) { |
- mDiscardOriginX = x; |
- } |
- |
- /** |
- * @param y The y coordinate in tab space of where the discard transforms should originate. |
- */ |
- public void setDiscardOriginY(float y) { |
- mDiscardOriginY = y; |
- } |
- |
- /** |
- * @return The x coordinate in tab space of where the discard transforms should originate. |
- */ |
- public float getDiscardOriginX() { |
- return mDiscardOriginX; |
- } |
- |
- /** |
- * @return The y coordinate in tab space of where the discard transforms should originate. |
- */ |
- public float getDiscardOriginY() { |
- return mDiscardOriginY; |
- } |
- |
- /** |
- * @param fromClick Whether or not this discard was from a click event. |
- */ |
- public void setDiscardFromClick(boolean fromClick) { |
- mDiscardFromClick = fromClick; |
- } |
- |
- /** |
- * @return Whether or not this discard was from a click event. |
- */ |
- public boolean getDiscardFromClick() { |
- return mDiscardFromClick; |
- } |
- |
- /** |
- * @param dying True if the Tab/ContentView will be destroyed, and we are still animating its |
- * visible representation. |
- */ |
- public void setDying(boolean dying) { |
- mDying = dying; |
- } |
- |
- /** |
- * @return True if the Tab/ContentView is destroyed, but we are still animating its |
- * visible representation. |
- */ |
- public boolean isDying() { |
- return mDying; |
- } |
- |
- /** |
- * The scroll space does not map linearly to the screen so it creates a nice slow down |
- * effect at the top of the screen while scrolling. |
- * Warps x so it matches y(x) = x - warpSize on the positive side and 0 on the negative side |
- * with a smooth transition between [0, 2 * warpSize]. |
- * @see #screenToScroll(float, float) |
- * |
- * [-oo, 0] -> 0 |
- * [0, 2 * warpSize] -> warpSize * ((x-warpSize) / 2 * warpSize + 0.5) ^ 2. |
- * [2 * warpSize, +oo] -> x |
- * @param x The offset in scroll space. |
- * @param warpSize The size in scroll space of the slow down effect. |
- * @return The offset on screen corresponding to the scroll space offset. |
- */ |
- public static float scrollToScreen(float x, float warpSize) { |
- if (x <= 0) return 0; |
- if (x >= 2 * warpSize) return x - warpSize; |
- x = (x - warpSize) / (2.0f * warpSize) + 0.5f; |
- return x * x * warpSize; |
- } |
- |
- /** |
- * Unwarps x so it matches the above warp function. |
- * @see #scrollToScreen(float, float) |
- * |
- * [-oo, 0] -> -warpSize |
- * [0, warpSize] -> 2 * warpSize * sqrt(x / warpSize). |
- * [warpSize, +oo] -> x + warpSize |
- * @param x The screen space offset. |
- * @param warpSize The size in scroll space of the slow down effect. |
- * @return The offset in scroll space corresponding to the offset on screen. |
- */ |
- public static float screenToScroll(float x, float warpSize) { |
- if (x <= 0) return 0; |
- if (x >= warpSize) return x + warpSize; |
- return (float) Math.sqrt(x * warpSize) * 2; |
- } |
- |
- /** |
- * @param orientation The orientation to choose to get the size. |
- * @return The size of the content along the provided orientation. |
- */ |
- public float getSizeInScrollDirection(int orientation) { |
- if (orientation == Orientation.PORTRAIT) { |
- return mLayoutTab.getScaledContentHeight(); |
- } else { |
- return mLayoutTab.getScaledContentWidth(); |
- } |
- } |
- |
- /** |
- * Helper function that gather the static constants from values/dimens.xml. |
- * @param context The Android Context. |
- */ |
- public static void resetDimensionConstants(Context context) { |
- Resources res = context.getResources(); |
- final float pxToDp = 1.0f / res.getDisplayMetrics().density; |
- sStackedTabVisibleSize = |
- res.getDimensionPixelOffset(R.dimen.stacked_tab_visible_size) * pxToDp; |
- sStackBufferWidth = res.getDimensionPixelOffset(R.dimen.stack_buffer_width) * pxToDp; |
- sStackBufferHeight = res.getDimensionPixelOffset(R.dimen.stack_buffer_height) * pxToDp; |
- } |
- |
- /** |
- * Reset the offset to factory default. |
- */ |
- public void resetOffset() { |
- mXInStackInfluence = 1.0f; |
- mYInStackInfluence = 1.0f; |
- mScrollOffset = 0.0f; |
- mXInStackOffset = 0.0f; |
- mYInStackOffset = 0.0f; |
- mXOutOfStack = 0.0f; |
- mYOutOfStack = 0.0f; |
- mDiscardOriginX = 0.f; |
- mDiscardOriginY = 0.f; |
- mDiscardFromClick = false; |
- } |
- |
- /** |
- * Updates the cached visible area value to be used to sort tabs by visibility. |
- * @param referenceIndex The index that has the highest priority. |
- */ |
- public void updateVisiblityValue(int referenceIndex) { |
- mCachedVisibleArea = mLayoutTab.computeVisibleArea(); |
- mCachedIndexDistance = Math.abs(mIndex - referenceIndex); |
- mOrderSortingValue = computeOrderSortingValue(mCachedIndexDistance, mCacheStackVisibility); |
- mVisiblitySortingValue = computeVisibilitySortingValue( |
- mCachedVisibleArea, mOrderSortingValue, mCacheStackVisibility); |
- } |
- |
- /** |
- * Updates the cached visible area value to be used to sort tabs by visibility. |
- * @param stackVisibility Multiplier that represents how much the stack fills the screen. |
- */ |
- public void updateStackVisiblityValue(float stackVisibility) { |
- mCacheStackVisibility = stackVisibility; |
- mOrderSortingValue = computeOrderSortingValue(mCachedIndexDistance, mCacheStackVisibility); |
- mVisiblitySortingValue = computeVisibilitySortingValue( |
- mCachedVisibleArea, mOrderSortingValue, mCacheStackVisibility); |
- } |
- |
- /** |
- * Computes the visibility sorting value based on the tab visible area, its distance to the |
- * central index and the overall visibility of the stack. |
- * The '-index' index factor need to be smaller for stack that have small visibility. |
- * Multiplying by a small stackVisibility makes it bigger (because it is negative), hence the |
- * division. To avoid dividing by 0 it need to be offset a bit. 0.1f is the 'a bit' part of |
- * the explanation. |
- */ |
- private static long computeVisibilitySortingValue( |
- float area, float orderSortingValue, float stackVisibility) { |
- return (long) (area * stackVisibility - orderSortingValue); |
- } |
- |
- /** |
- * @return The cached visible sorting value. Call updateCachedVisibleArea to update it. |
- */ |
- public long getVisiblitySortingValue() { |
- return mVisiblitySortingValue; |
- } |
- |
- /** |
- * Computes the ordering value only based on the distance of the tab to the center one. |
- * Low values have higher priority. |
- */ |
- private static int computeOrderSortingValue(float indexDistance, float stackVisibility) { |
- return (int) ((indexDistance + 1) / (0.1f + 0.9f * stackVisibility)); |
- } |
- |
- /** |
- * @return The cached order sorting value. Used to sort based on the tab ordering rather than |
- * visible area. |
- */ |
- public int getOrderSortingValue() { |
- return mOrderSortingValue; |
- } |
- |
- /** |
- * Callback for |
- * {@link org.chromium.chrome.browser.compositor.layouts.ChromeAnimation.Animatable} |
- * |
- * @param prop The property to set |
- * @param val The value to set it to |
- */ |
- @Override |
- public void setProperty(Property prop, float val) { |
- switch (prop) { |
- case SCALE: |
- setScale(val); |
- break; |
- case SCROLL_OFFSET: |
- setScrollOffset(val); |
- break; |
- case ALPHA: |
- setAlpha(val); |
- break; |
- case X_IN_STACK_INFLUENCE: |
- setXInStackInfluence(val); |
- break; |
- case X_IN_STACK_OFFSET: |
- setXInStackOffset(val); |
- break; |
- case X_OUT_OF_STACK: |
- setXOutOfStack(val); |
- break; |
- case Y_IN_STACK_INFLUENCE: |
- setYInStackInfluence(val); |
- break; |
- case Y_IN_STACK_OFFSET: |
- setYInStackOffset(val); |
- break; |
- case Y_OUT_OF_STACK: |
- setYOutOfStack(val); |
- break; |
- case DISCARD_AMOUNT: |
- setDiscardAmount(val); |
- break; |
- } |
- } |
-} |