package com.android.wallpaperpicker.tileinfo; import android.content.Context; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.Matrix; import android.graphics.Point; import android.graphics.RectF; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.android.gallery3d.common.Utils; import com.android.wallpaperpicker.R; import com.android.wallpaperpicker.WallpaperPickerActivity; import com.android.wallpaperpicker.common.InputStreamProvider; public abstract class WallpaperTileInfo { protected View mView; public void onClick(WallpaperPickerActivity a) {} public void onSave(WallpaperPickerActivity a) {} public void onDelete(WallpaperPickerActivity a) {} public boolean isSelectable() { return false; } public boolean isNamelessWallpaper() { return false; } public void onIndexUpdated(CharSequence label) { if (isNamelessWallpaper()) { mView.setContentDescription(label); } } public abstract View createView(Context context, LayoutInflater inflator, ViewGroup parent); protected static Point getDefaultThumbSize(Resources res) { return new Point(res.getDimensionPixelSize(R.dimen.wallpaperThumbnailWidth), res.getDimensionPixelSize(R.dimen.wallpaperThumbnailHeight)); } protected static Bitmap createThumbnail(InputStreamProvider streamProvider, Context context, int rotation, boolean leftAligned) { Point size = getDefaultThumbSize(context.getResources()); int width = size.x; int height = size.y; Point bounds = streamProvider.getImageBounds(); if (bounds == null) { return null; } Matrix rotateMatrix = new Matrix(); rotateMatrix.setRotate(rotation); float[] rotatedBounds = new float[] { bounds.x, bounds.y }; rotateMatrix.mapPoints(rotatedBounds); rotatedBounds[0] = Math.abs(rotatedBounds[0]); rotatedBounds[1] = Math.abs(rotatedBounds[1]); RectF cropRect = Utils.getMaxCropRect( (int) rotatedBounds[0], (int) rotatedBounds[1], width, height, leftAligned); return streamProvider.readCroppedBitmap(cropRect, width, height, rotation); } }