OLD | NEW |
(Empty) | |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 package org.chromium.chrome.browser.compositor.overlays.strip; |
| 6 |
| 7 import org.chromium.chrome.browser.util.MathUtils; |
| 8 |
| 9 /** |
| 10 * A stacker that tells the {@link StripHelper} how to layer the tabs for the |
| 11 * {@link StaticLayout}. This will basically be focused tab in front with tabs
cascading |
| 12 * back to each side. |
| 13 */ |
| 14 public class StaticStripStacker implements StripStacker { |
| 15 @Override |
| 16 public boolean canShowCloseButton() { |
| 17 return true; |
| 18 } |
| 19 |
| 20 @Override |
| 21 public boolean canSlideTitleText() { |
| 22 return true; |
| 23 } |
| 24 |
| 25 @Override |
| 26 public void createVisualOrdering(int selectedIndex, StripLayoutTab[] indexOr
deredTabs, |
| 27 StripLayoutTab[] outVisualOrderedTabs) { |
| 28 assert indexOrderedTabs.length == outVisualOrderedTabs.length; |
| 29 |
| 30 selectedIndex = MathUtils.clamp(selectedIndex, 0, indexOrderedTabs.lengt
h); |
| 31 |
| 32 int outIndex = 0; |
| 33 for (int i = 0; i < selectedIndex; i++) { |
| 34 outVisualOrderedTabs[outIndex++] = indexOrderedTabs[i]; |
| 35 } |
| 36 |
| 37 for (int i = indexOrderedTabs.length - 1; i >= selectedIndex; --i) { |
| 38 outVisualOrderedTabs[outIndex++] = indexOrderedTabs[i]; |
| 39 } |
| 40 } |
| 41 |
| 42 @Override |
| 43 public void performOcclusionPass(int selectedIndex, StripLayoutTab[] indexOr
deredTabs) { |
| 44 for (int i = 1; i < indexOrderedTabs.length; i++) { |
| 45 StripLayoutTab prevTab = indexOrderedTabs[i - 1]; |
| 46 StripLayoutTab currTab = indexOrderedTabs[i]; |
| 47 |
| 48 if ((int) prevTab.getDrawY() == (int) currTab.getDrawY() |
| 49 && (int) prevTab.getDrawX() == (int) currTab.getDrawX()) { |
| 50 if (i <= selectedIndex) { |
| 51 prevTab.setVisible(false); |
| 52 } else if (i > selectedIndex) { |
| 53 currTab.setVisible(false); |
| 54 } |
| 55 } else if ((int) prevTab.getDrawX() != (int) currTab.getDrawX()) { |
| 56 if (i <= selectedIndex) { |
| 57 prevTab.setVisible(true); |
| 58 } else if (i > selectedIndex) { |
| 59 currTab.setVisible(true); |
| 60 } |
| 61 } |
| 62 |
| 63 if (i == selectedIndex) currTab.setVisible(true); |
| 64 } |
| 65 } |
| 66 } |
OLD | NEW |