/* * Copyright (C) 2014 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.systemui.recents.views; import android.graphics.Rect; import com.android.systemui.recents.RecentsConfiguration; import com.android.systemui.recents.model.TaskStack; import java.util.ArrayList; import java.util.List; /* The layout logic for the RecentsView. */ public class RecentsViewLayoutAlgorithm { RecentsConfiguration mConfig; public RecentsViewLayoutAlgorithm(RecentsConfiguration config) { mConfig = config; } /** Return the relative coordinate given coordinates in another size. */ private int getRelativeCoordinate(int availableOffset, int availableSize, int otherCoord, int otherSize) { float relPos = (float) otherCoord / otherSize; return availableOffset + (int) (relPos * availableSize); } /** * Computes and returns the bounds that each of the stack views should take up. */ List<Rect> computeStackRects(List<TaskStackView> stackViews, Rect availableBounds) { ArrayList<Rect> bounds = new ArrayList<Rect>(stackViews.size()); int stackViewsCount = stackViews.size(); for (int i = 0; i < stackViewsCount; i++) { TaskStack stack = stackViews.get(i).getStack(); Rect sb = stack.stackBounds; Rect db = stack.displayBounds; Rect ab = availableBounds; bounds.add(new Rect(getRelativeCoordinate(ab.left, ab.width(), sb.left, db.width()), getRelativeCoordinate(ab.top, ab.height(), sb.top, db.height()), getRelativeCoordinate(ab.left, ab.width(), sb.right, db.width()), getRelativeCoordinate(ab.top, ab.height(), sb.bottom, db.height()))); } return bounds; } }