1666ea1b28a76aeba74744148b15099254d918671Owen Lin/* 2666ea1b28a76aeba74744148b15099254d918671Owen Lin * Copyright (C) 2009 The Android Open Source Project 3666ea1b28a76aeba74744148b15099254d918671Owen Lin * 4666ea1b28a76aeba74744148b15099254d918671Owen Lin * Licensed under the Apache License, Version 2.0 (the "License"); 5666ea1b28a76aeba74744148b15099254d918671Owen Lin * you may not use this file except in compliance with the License. 6666ea1b28a76aeba74744148b15099254d918671Owen Lin * You may obtain a copy of the License at 7666ea1b28a76aeba74744148b15099254d918671Owen Lin * 8666ea1b28a76aeba74744148b15099254d918671Owen Lin * http://www.apache.org/licenses/LICENSE-2.0 9666ea1b28a76aeba74744148b15099254d918671Owen Lin * 10666ea1b28a76aeba74744148b15099254d918671Owen Lin * Unless required by applicable law or agreed to in writing, software 11666ea1b28a76aeba74744148b15099254d918671Owen Lin * distributed under the License is distributed on an "AS IS" BASIS, 12666ea1b28a76aeba74744148b15099254d918671Owen Lin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13666ea1b28a76aeba74744148b15099254d918671Owen Lin * See the License for the specific language governing permissions and 14666ea1b28a76aeba74744148b15099254d918671Owen Lin * limitations under the License. 15666ea1b28a76aeba74744148b15099254d918671Owen Lin */ 16666ea1b28a76aeba74744148b15099254d918671Owen Lin 17666ea1b28a76aeba74744148b15099254d918671Owen Linpackage com.android.camera.gallery; 18666ea1b28a76aeba74744148b15099254d918671Owen Lin 19666ea1b28a76aeba74744148b15099254d918671Owen Linimport android.graphics.Bitmap; 20666ea1b28a76aeba74744148b15099254d918671Owen Linimport android.net.Uri; 21666ea1b28a76aeba74744148b15099254d918671Owen Lin 22666ea1b28a76aeba74744148b15099254d918671Owen Linimport java.io.InputStream; 23666ea1b28a76aeba74744148b15099254d918671Owen Lin 24666ea1b28a76aeba74744148b15099254d918671Owen Lin/** 25666ea1b28a76aeba74744148b15099254d918671Owen Lin * The interface of all images used in gallery. 26666ea1b28a76aeba74744148b15099254d918671Owen Lin */ 27666ea1b28a76aeba74744148b15099254d918671Owen Linpublic interface IImage { 28666ea1b28a76aeba74744148b15099254d918671Owen Lin static final int THUMBNAIL_TARGET_SIZE = 320; 29666ea1b28a76aeba74744148b15099254d918671Owen Lin static final int MINI_THUMB_TARGET_SIZE = 96; 30666ea1b28a76aeba74744148b15099254d918671Owen Lin static final int THUMBNAIL_MAX_NUM_PIXELS = 512 * 384; 31666ea1b28a76aeba74744148b15099254d918671Owen Lin static final int MINI_THUMB_MAX_NUM_PIXELS = 128 * 128; 32666ea1b28a76aeba74744148b15099254d918671Owen Lin static final int UNCONSTRAINED = -1; 33666ea1b28a76aeba74744148b15099254d918671Owen Lin 34666ea1b28a76aeba74744148b15099254d918671Owen Lin /** Get the image list which contains this image. */ 35666ea1b28a76aeba74744148b15099254d918671Owen Lin public abstract IImageList getContainer(); 36666ea1b28a76aeba74744148b15099254d918671Owen Lin 37666ea1b28a76aeba74744148b15099254d918671Owen Lin /** Get the bitmap for the full size image. */ 38666ea1b28a76aeba74744148b15099254d918671Owen Lin public abstract Bitmap fullSizeBitmap(int minSideLength, 39666ea1b28a76aeba74744148b15099254d918671Owen Lin int maxNumberOfPixels); 40666ea1b28a76aeba74744148b15099254d918671Owen Lin public abstract Bitmap fullSizeBitmap(int minSideLength, 41666ea1b28a76aeba74744148b15099254d918671Owen Lin int maxNumberOfPixels, boolean rotateAsNeeded, boolean useNative); 42666ea1b28a76aeba74744148b15099254d918671Owen Lin public abstract int getDegreesRotated(); 43666ea1b28a76aeba74744148b15099254d918671Owen Lin public static final boolean ROTATE_AS_NEEDED = true; 44666ea1b28a76aeba74744148b15099254d918671Owen Lin public static final boolean NO_ROTATE = false; 45666ea1b28a76aeba74744148b15099254d918671Owen Lin public static final boolean USE_NATIVE = true; 46666ea1b28a76aeba74744148b15099254d918671Owen Lin public static final boolean NO_NATIVE = false; 47666ea1b28a76aeba74744148b15099254d918671Owen Lin 48666ea1b28a76aeba74744148b15099254d918671Owen Lin /** Get the input stream associated with a given full size image. */ 49666ea1b28a76aeba74744148b15099254d918671Owen Lin public abstract InputStream fullSizeImageData(); 50666ea1b28a76aeba74744148b15099254d918671Owen Lin public abstract Uri fullSizeImageUri(); 51666ea1b28a76aeba74744148b15099254d918671Owen Lin 52666ea1b28a76aeba74744148b15099254d918671Owen Lin /** Get the path of the (full size) image data. */ 53666ea1b28a76aeba74744148b15099254d918671Owen Lin public abstract String getDataPath(); 54666ea1b28a76aeba74744148b15099254d918671Owen Lin 55666ea1b28a76aeba74744148b15099254d918671Owen Lin // Get the title of the image 56666ea1b28a76aeba74744148b15099254d918671Owen Lin public abstract String getTitle(); 57666ea1b28a76aeba74744148b15099254d918671Owen Lin 58666ea1b28a76aeba74744148b15099254d918671Owen Lin // Get metadata of the image 59666ea1b28a76aeba74744148b15099254d918671Owen Lin public abstract long getDateTaken(); 60666ea1b28a76aeba74744148b15099254d918671Owen Lin 61666ea1b28a76aeba74744148b15099254d918671Owen Lin public abstract String getMimeType(); 62666ea1b28a76aeba74744148b15099254d918671Owen Lin 63666ea1b28a76aeba74744148b15099254d918671Owen Lin public abstract int getWidth(); 64666ea1b28a76aeba74744148b15099254d918671Owen Lin 65666ea1b28a76aeba74744148b15099254d918671Owen Lin public abstract int getHeight(); 66666ea1b28a76aeba74744148b15099254d918671Owen Lin 67666ea1b28a76aeba74744148b15099254d918671Owen Lin // Get property of the image 68666ea1b28a76aeba74744148b15099254d918671Owen Lin public abstract boolean isReadonly(); 69666ea1b28a76aeba74744148b15099254d918671Owen Lin public abstract boolean isDrm(); 70666ea1b28a76aeba74744148b15099254d918671Owen Lin 71666ea1b28a76aeba74744148b15099254d918671Owen Lin // Get the bitmap of the medium thumbnail 72666ea1b28a76aeba74744148b15099254d918671Owen Lin public abstract Bitmap thumbBitmap(boolean rotateAsNeeded); 73666ea1b28a76aeba74744148b15099254d918671Owen Lin 74666ea1b28a76aeba74744148b15099254d918671Owen Lin // Get the bitmap of the mini thumbnail. 75666ea1b28a76aeba74744148b15099254d918671Owen Lin public abstract Bitmap miniThumbBitmap(); 76666ea1b28a76aeba74744148b15099254d918671Owen Lin 77666ea1b28a76aeba74744148b15099254d918671Owen Lin // Rotate the image 78666ea1b28a76aeba74744148b15099254d918671Owen Lin public abstract boolean rotateImageBy(int degrees); 79666ea1b28a76aeba74744148b15099254d918671Owen Lin 80666ea1b28a76aeba74744148b15099254d918671Owen Lin} 81