FastBitmapDrawable.java revision 6e1c0d34bb31cacc24c57c89ab01deaa8985814f
131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project/* 231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * Copyright (C) 2008 The Android Open Source Project 331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * 431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * you may not use this file except in compliance with the License. 631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * You may obtain a copy of the License at 731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * 831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * 1031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 1131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 1231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * See the License for the specific language governing permissions and 1431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * limitations under the License. 1531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project */ 1631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 17325dc23624160689e59fbac708cf6f222b20d025Daniel Sandlerpackage com.android.launcher3; 1831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 1931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Projectimport android.graphics.Bitmap; 2031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Projectimport android.graphics.Canvas; 2131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Projectimport android.graphics.ColorFilter; 2245e1d6ec0a213a444d01466c3d4f1ded5508ed63Winson Chungimport android.graphics.Paint; 2345e1d6ec0a213a444d01466c3d4f1ded5508ed63Winson Chungimport android.graphics.PixelFormat; 2445e1d6ec0a213a444d01466c3d4f1ded5508ed63Winson Chungimport android.graphics.Rect; 2545e1d6ec0a213a444d01466c3d4f1ded5508ed63Winson Chungimport android.graphics.drawable.Drawable; 2631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 2731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Projectclass FastBitmapDrawable extends Drawable { 2831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project private Bitmap mBitmap; 2929d6fea296ebecb607525c8245a54696ad7c5db7Winson Chung private int mAlpha; 30a28fd3fa7c82947d847c05ed11905f556b8dcfa2Romain Guy private int mWidth; 31a28fd3fa7c82947d847c05ed11905f556b8dcfa2Romain Guy private int mHeight; 32eecf02da58adef5486bf0c9ff7127ea891f457a4Winson Chung private final Paint mPaint = new Paint(Paint.FILTER_BITMAP_FLAG); 3331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 3431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project FastBitmapDrawable(Bitmap b) { 3529d6fea296ebecb607525c8245a54696ad7c5db7Winson Chung mAlpha = 255; 3631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project mBitmap = b; 37a28fd3fa7c82947d847c05ed11905f556b8dcfa2Romain Guy if (b != null) { 38a28fd3fa7c82947d847c05ed11905f556b8dcfa2Romain Guy mWidth = mBitmap.getWidth(); 39a28fd3fa7c82947d847c05ed11905f556b8dcfa2Romain Guy mHeight = mBitmap.getHeight(); 40a28fd3fa7c82947d847c05ed11905f556b8dcfa2Romain Guy } else { 41a28fd3fa7c82947d847c05ed11905f556b8dcfa2Romain Guy mWidth = mHeight = 0; 42a28fd3fa7c82947d847c05ed11905f556b8dcfa2Romain Guy } 4331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project } 4431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 4531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project @Override 4631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project public void draw(Canvas canvas) { 4745e1d6ec0a213a444d01466c3d4f1ded5508ed63Winson Chung final Rect r = getBounds(); 488a196351ef7e100857e6c6d5b344d1d780584887Winson Chung // Draw the bitmap into the bounding rect 498a196351ef7e100857e6c6d5b344d1d780584887Winson Chung canvas.drawBitmap(mBitmap, null, r, mPaint); 5031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project } 5131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 5231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project @Override 53badf71e11fba2d6efa1d1bcca9542001f90a3777Adam Cohen public void setColorFilter(ColorFilter cf) { 54badf71e11fba2d6efa1d1bcca9542001f90a3777Adam Cohen mPaint.setColorFilter(cf); 55badf71e11fba2d6efa1d1bcca9542001f90a3777Adam Cohen } 56badf71e11fba2d6efa1d1bcca9542001f90a3777Adam Cohen 57badf71e11fba2d6efa1d1bcca9542001f90a3777Adam Cohen @Override 5831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project public int getOpacity() { 5931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project return PixelFormat.TRANSLUCENT; 6031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project } 6131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 6231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project @Override 6331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project public void setAlpha(int alpha) { 6429d6fea296ebecb607525c8245a54696ad7c5db7Winson Chung mAlpha = alpha; 65b3347bb9f4ccf41fb7043bca66c3a565bde1083bWinson Chung mPaint.setAlpha(alpha); 6631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project } 6731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 6876fc085d28178a5d4fb3787ede956281a2cc3179Adam Cohen public void setFilterBitmap(boolean filterBitmap) { 6976fc085d28178a5d4fb3787ede956281a2cc3179Adam Cohen mPaint.setFilterBitmap(filterBitmap); 706e1c0d34bb31cacc24c57c89ab01deaa8985814fWinson Chung mPaint.setAntiAlias(filterBitmap); 7176fc085d28178a5d4fb3787ede956281a2cc3179Adam Cohen } 7276fc085d28178a5d4fb3787ede956281a2cc3179Adam Cohen 7329d6fea296ebecb607525c8245a54696ad7c5db7Winson Chung public int getAlpha() { 7429d6fea296ebecb607525c8245a54696ad7c5db7Winson Chung return mAlpha; 7529d6fea296ebecb607525c8245a54696ad7c5db7Winson Chung } 7629d6fea296ebecb607525c8245a54696ad7c5db7Winson Chung 7731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project @Override 7831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project public int getIntrinsicWidth() { 79a28fd3fa7c82947d847c05ed11905f556b8dcfa2Romain Guy return mWidth; 8031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project } 8131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 8231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project @Override 8331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project public int getIntrinsicHeight() { 84a28fd3fa7c82947d847c05ed11905f556b8dcfa2Romain Guy return mHeight; 8531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project } 8631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 8731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project @Override 8831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project public int getMinimumWidth() { 89a28fd3fa7c82947d847c05ed11905f556b8dcfa2Romain Guy return mWidth; 9031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project } 9131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 9231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project @Override 9331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project public int getMinimumHeight() { 94a28fd3fa7c82947d847c05ed11905f556b8dcfa2Romain Guy return mHeight; 9531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project } 9631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 970589f0f66ce498512c6ee47482c649d88294c9d0Joe Onorato public void setBitmap(Bitmap b) { 980589f0f66ce498512c6ee47482c649d88294c9d0Joe Onorato mBitmap = b; 99a28fd3fa7c82947d847c05ed11905f556b8dcfa2Romain Guy if (b != null) { 100a28fd3fa7c82947d847c05ed11905f556b8dcfa2Romain Guy mWidth = mBitmap.getWidth(); 101a28fd3fa7c82947d847c05ed11905f556b8dcfa2Romain Guy mHeight = mBitmap.getHeight(); 102a28fd3fa7c82947d847c05ed11905f556b8dcfa2Romain Guy } else { 103a28fd3fa7c82947d847c05ed11905f556b8dcfa2Romain Guy mWidth = mHeight = 0; 104a28fd3fa7c82947d847c05ed11905f556b8dcfa2Romain Guy } 1050589f0f66ce498512c6ee47482c649d88294c9d0Joe Onorato } 1060589f0f66ce498512c6ee47482c649d88294c9d0Joe Onorato 10731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project public Bitmap getBitmap() { 10831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project return mBitmap; 10931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project } 11031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project} 111