FastBitmapDrawable.java revision 268f1c563f4179ee2fb6c87b662679451e23a7c8
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; 30eecf02da58adef5486bf0c9ff7127ea891f457a4Winson Chung private final Paint mPaint = new Paint(Paint.FILTER_BITMAP_FLAG); 3131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 3231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project FastBitmapDrawable(Bitmap b) { 33eeb5bbc9409978cc2ae52d48380399fcde3d9f85Winson Chung mAlpha = 255; 3431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project mBitmap = b; 35268f1c563f4179ee2fb6c87b662679451e23a7c8Winson Chung setBounds(0, 0, b.getWidth(), b.getHeight()); 3631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project } 3731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 3831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project @Override 3931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project public void draw(Canvas canvas) { 4045e1d6ec0a213a444d01466c3d4f1ded5508ed63Winson Chung final Rect r = getBounds(); 418a196351ef7e100857e6c6d5b344d1d780584887Winson Chung // Draw the bitmap into the bounding rect 428a196351ef7e100857e6c6d5b344d1d780584887Winson Chung canvas.drawBitmap(mBitmap, null, r, mPaint); 4331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project } 4431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 4531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project @Override 46badf71e11fba2d6efa1d1bcca9542001f90a3777Adam Cohen public void setColorFilter(ColorFilter cf) { 47badf71e11fba2d6efa1d1bcca9542001f90a3777Adam Cohen mPaint.setColorFilter(cf); 48badf71e11fba2d6efa1d1bcca9542001f90a3777Adam Cohen } 49badf71e11fba2d6efa1d1bcca9542001f90a3777Adam Cohen 50badf71e11fba2d6efa1d1bcca9542001f90a3777Adam Cohen @Override 5131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project public int getOpacity() { 5231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project return PixelFormat.TRANSLUCENT; 5331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project } 5431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 5531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project @Override 5631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project public void setAlpha(int alpha) { 5729d6fea296ebecb607525c8245a54696ad7c5db7Winson Chung mAlpha = alpha; 58b3347bb9f4ccf41fb7043bca66c3a565bde1083bWinson Chung mPaint.setAlpha(alpha); 5931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project } 6031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 6176fc085d28178a5d4fb3787ede956281a2cc3179Adam Cohen public void setFilterBitmap(boolean filterBitmap) { 6276fc085d28178a5d4fb3787ede956281a2cc3179Adam Cohen mPaint.setFilterBitmap(filterBitmap); 636e1c0d34bb31cacc24c57c89ab01deaa8985814fWinson Chung mPaint.setAntiAlias(filterBitmap); 6476fc085d28178a5d4fb3787ede956281a2cc3179Adam Cohen } 6576fc085d28178a5d4fb3787ede956281a2cc3179Adam Cohen 6629d6fea296ebecb607525c8245a54696ad7c5db7Winson Chung public int getAlpha() { 6729d6fea296ebecb607525c8245a54696ad7c5db7Winson Chung return mAlpha; 6829d6fea296ebecb607525c8245a54696ad7c5db7Winson Chung } 6929d6fea296ebecb607525c8245a54696ad7c5db7Winson Chung 7031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project @Override 7131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project public int getIntrinsicWidth() { 72eeb5bbc9409978cc2ae52d48380399fcde3d9f85Winson Chung return getBounds().width(); 7331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project } 7431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 7531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project @Override 7631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project public int getIntrinsicHeight() { 77eeb5bbc9409978cc2ae52d48380399fcde3d9f85Winson Chung return getBounds().height(); 7831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project } 7931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 8031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project @Override 8131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project public int getMinimumWidth() { 82eeb5bbc9409978cc2ae52d48380399fcde3d9f85Winson Chung return getBounds().width(); 8331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project } 8431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 8531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project @Override 8631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project public int getMinimumHeight() { 87eeb5bbc9409978cc2ae52d48380399fcde3d9f85Winson Chung return getBounds().height(); 880589f0f66ce498512c6ee47482c649d88294c9d0Joe Onorato } 890589f0f66ce498512c6ee47482c649d88294c9d0Joe Onorato 9031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project public Bitmap getBitmap() { 9131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project return mBitmap; 9231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project } 9331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project} 94