1b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Chang/* 2b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Chang * Copyright (C) 2012 The Android Open Source Project 3b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Chang * 4b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Chang * Licensed under the Apache License, Version 2.0 (the "License"); 5b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Chang * you may not use this file except in compliance with the License. 6b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Chang * You may obtain a copy of the License at 7b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Chang * 8b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Chang * http://www.apache.org/licenses/LICENSE-2.0 9b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Chang * 10b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Chang * Unless required by applicable law or agreed to in writing, software 11b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Chang * distributed under the License is distributed on an "AS IS" BASIS, 12b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Chang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Chang * See the License for the specific language governing permissions and 14b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Chang * limitations under the License. 15b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Chang */ 16b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Chang 17b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Changpackage com.android.gallery3d.util; 18b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Chang 19b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Chang// This is an array whose index ranges from min to max (inclusive). 20b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Changpublic class RangeArray<T> { 21b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Chang private T[] mData; 22b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Chang private int mOffset; 23b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Chang 24b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Chang public RangeArray(int min, int max) { 25b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Chang mData = (T[]) new Object[max - min + 1]; 26b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Chang mOffset = min; 27b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Chang } 28b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Chang 29b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Chang // Wraps around an existing array 30b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Chang public RangeArray(T[] src, int min, int max) { 31b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Chang if (max - min + 1 != src.length) { 32b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Chang throw new AssertionError(); 33b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Chang } 34b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Chang mData = src; 35b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Chang mOffset = min; 36b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Chang } 37b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Chang 38b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Chang public void put(int i, T object) { 39b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Chang mData[i - mOffset] = object; 40b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Chang } 41b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Chang 42b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Chang public T get(int i) { 43b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Chang return mData[i - mOffset]; 44b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Chang } 45b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Chang 46b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Chang public int indexOf(T object) { 47b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Chang for (int i = 0; i < mData.length; i++) { 48b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Chang if (mData[i] == object) return i + mOffset; 49b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Chang } 50b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Chang return Integer.MAX_VALUE; 51b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Chang } 52b7ec5534c7b539be2397c27cfa5e8b992974c12dChih-Chung Chang} 53