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