1f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard/*
2f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard * Copyright (C) 2013 The Android Open Source Project
3f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard *
4f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard * Licensed under the Apache License, Version 2.0 (the "License");
5f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard * you may not use this file except in compliance with the License.
6f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard * You may obtain a copy of the License at
7f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard *
8f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard *      http://www.apache.org/licenses/LICENSE-2.0
9f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard *
10f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard * Unless required by applicable law or agreed to in writing, software
11f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard * distributed under the License is distributed on an "AS IS" BASIS,
12f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard * See the License for the specific language governing permissions and
14f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard * limitations under the License.
15f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard */
16f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard
17f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroardpackage com.android.gallery3d.filtershow.category;
18f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard
19f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroardimport android.content.Context;
20f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroardimport android.graphics.Bitmap;
21f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroardimport android.graphics.BitmapFactory;
22f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroardimport android.graphics.Canvas;
23f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroardimport android.graphics.Matrix;
24f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroardimport android.graphics.Paint;
25f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroardimport android.graphics.Rect;
26f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroardimport android.graphics.RectF;
2732cc4dd751569721aa19218b4d947145577060d0nicolasroardimport android.util.Log;
28fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroardimport android.widget.ArrayAdapter;
29fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroardimport android.widget.ListAdapter;
3032cc4dd751569721aa19218b4d947145577060d0nicolasroard
3132cc4dd751569721aa19218b4d947145577060d0nicolasroardimport com.android.gallery3d.R;
3232cc4dd751569721aa19218b4d947145577060d0nicolasroardimport com.android.gallery3d.filtershow.FilterShowActivity;
33edf4b095a1d904df6c02d49e3ec575c5c3c9c749nicolasroardimport com.android.gallery3d.filtershow.filters.FilterDrawRepresentation;
34fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroardimport com.android.gallery3d.filtershow.filters.FilterUserPresetRepresentation;
35ce9ceff5776a9b0479c30cbeb2a9388b44df1865nicolasroardimport com.android.gallery3d.filtershow.pipeline.RenderingRequest;
36ce9ceff5776a9b0479c30cbeb2a9388b44df1865nicolasroardimport com.android.gallery3d.filtershow.pipeline.RenderingRequestCaller;
37f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroardimport com.android.gallery3d.filtershow.filters.FilterRepresentation;
38f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroardimport com.android.gallery3d.filtershow.imageshow.MasterImage;
39ce9ceff5776a9b0479c30cbeb2a9388b44df1865nicolasroardimport com.android.gallery3d.filtershow.pipeline.ImagePreset;
40f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard
41f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroardpublic class Action implements RenderingRequestCaller {
42f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard
43f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    private static final String LOGTAG = "Action";
44f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    private FilterRepresentation mRepresentation;
45f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    private String mName;
46f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    private Rect mImageFrame;
47f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    private Bitmap mImage;
48fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard    private ArrayAdapter mAdapter;
49f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    public static final int FULL_VIEW = 0;
50f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    public static final int CROP_VIEW = 1;
5155a0279ee420c649606edd7815403d3ca1820c07nicolasroard    public static final int ADD_ACTION = 2;
5255a0279ee420c649606edd7815403d3ca1820c07nicolasroard    public static final int SPACER = 3;
53f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    private int mType = CROP_VIEW;
54f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    private Bitmap mPortraitImage;
55f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    private Bitmap mOverlayBitmap;
5632cc4dd751569721aa19218b4d947145577060d0nicolasroard    private FilterShowActivity mContext;
5755a0279ee420c649606edd7815403d3ca1820c07nicolasroard    private boolean mCanBeRemoved = false;
5832cc4dd751569721aa19218b4d947145577060d0nicolasroard    private int mTextSize = 32;
59edf4b095a1d904df6c02d49e3ec575c5c3c9c749nicolasroard    private boolean mIsDoubleAction = false;
6055a0279ee420c649606edd7815403d3ca1820c07nicolasroard
6132cc4dd751569721aa19218b4d947145577060d0nicolasroard    public Action(FilterShowActivity context, FilterRepresentation representation, int type,
6255a0279ee420c649606edd7815403d3ca1820c07nicolasroard                  boolean canBeRemoved) {
6355a0279ee420c649606edd7815403d3ca1820c07nicolasroard        this(context, representation, type);
6455a0279ee420c649606edd7815403d3ca1820c07nicolasroard        mCanBeRemoved = canBeRemoved;
6532cc4dd751569721aa19218b4d947145577060d0nicolasroard        mTextSize = context.getResources().getDimensionPixelSize(
6632cc4dd751569721aa19218b4d947145577060d0nicolasroard                R.dimen.category_panel_text_size);
6755a0279ee420c649606edd7815403d3ca1820c07nicolasroard    }
68f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard
6932cc4dd751569721aa19218b4d947145577060d0nicolasroard    public Action(FilterShowActivity context, FilterRepresentation representation, int type) {
7055a0279ee420c649606edd7815403d3ca1820c07nicolasroard        this(context, type);
71f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        setRepresentation(representation);
7255a0279ee420c649606edd7815403d3ca1820c07nicolasroard    }
7355a0279ee420c649606edd7815403d3ca1820c07nicolasroard
7432cc4dd751569721aa19218b4d947145577060d0nicolasroard    public Action(FilterShowActivity context, int type) {
7555a0279ee420c649606edd7815403d3ca1820c07nicolasroard        mContext = context;
76f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        setType(type);
7732cc4dd751569721aa19218b4d947145577060d0nicolasroard        mContext.registerAction(this);
78f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    }
79f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard
8032cc4dd751569721aa19218b4d947145577060d0nicolasroard    public Action(FilterShowActivity context, FilterRepresentation representation) {
81f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        this(context, representation, CROP_VIEW);
82f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    }
83f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard
84edf4b095a1d904df6c02d49e3ec575c5c3c9c749nicolasroard    public boolean isDoubleAction() {
85edf4b095a1d904df6c02d49e3ec575c5c3c9c749nicolasroard        return mIsDoubleAction;
86edf4b095a1d904df6c02d49e3ec575c5c3c9c749nicolasroard    }
87edf4b095a1d904df6c02d49e3ec575c5c3c9c749nicolasroard
88edf4b095a1d904df6c02d49e3ec575c5c3c9c749nicolasroard    public void setIsDoubleAction(boolean value) {
89edf4b095a1d904df6c02d49e3ec575c5c3c9c749nicolasroard        mIsDoubleAction = value;
90edf4b095a1d904df6c02d49e3ec575c5c3c9c749nicolasroard    }
91edf4b095a1d904df6c02d49e3ec575c5c3c9c749nicolasroard
9255a0279ee420c649606edd7815403d3ca1820c07nicolasroard    public boolean canBeRemoved() {
9355a0279ee420c649606edd7815403d3ca1820c07nicolasroard        return mCanBeRemoved;
9455a0279ee420c649606edd7815403d3ca1820c07nicolasroard    }
9555a0279ee420c649606edd7815403d3ca1820c07nicolasroard
96a0cd22d21474c112ad78b011fbd6f0be977400e6nicolasroard    public int getType() {
97a0cd22d21474c112ad78b011fbd6f0be977400e6nicolasroard        return mType;
98a0cd22d21474c112ad78b011fbd6f0be977400e6nicolasroard    }
99a0cd22d21474c112ad78b011fbd6f0be977400e6nicolasroard
100f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    public FilterRepresentation getRepresentation() {
101f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        return mRepresentation;
102f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    }
103f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard
104f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    public void setRepresentation(FilterRepresentation representation) {
105f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        mRepresentation = representation;
106f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        mName = representation.getName();
107f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    }
108f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard
109f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    public String getName() {
110f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        return mName;
111f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    }
112f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard
113f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    public void setName(String name) {
114f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        mName = name;
115f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    }
116f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard
1172332f652d86e98887996505002d34b4f7940c34anicolasroard    public void setImageFrame(Rect imageFrame, int orientation) {
118f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        if (mImageFrame != null && mImageFrame.equals(imageFrame)) {
119f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard            return;
120f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        }
12132cc4dd751569721aa19218b4d947145577060d0nicolasroard        if (getType() == Action.ADD_ACTION) {
12232cc4dd751569721aa19218b4d947145577060d0nicolasroard            return;
12332cc4dd751569721aa19218b4d947145577060d0nicolasroard        }
12432cc4dd751569721aa19218b4d947145577060d0nicolasroard        Bitmap temp = MasterImage.getImage().getTemporaryThumbnailBitmap();
12532cc4dd751569721aa19218b4d947145577060d0nicolasroard        if (temp != null) {
12632cc4dd751569721aa19218b4d947145577060d0nicolasroard            mImage = temp;
12732cc4dd751569721aa19218b4d947145577060d0nicolasroard        }
12832cc4dd751569721aa19218b4d947145577060d0nicolasroard        Bitmap bitmap = MasterImage.getImage().getThumbnailBitmap();
129f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        if (bitmap != null) {
130f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard            mImageFrame = imageFrame;
131f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard            int w = mImageFrame.width();
132f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard            int h = mImageFrame.height();
13332cc4dd751569721aa19218b4d947145577060d0nicolasroard            postNewIconRenderRequest(w, h);
134f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        }
135f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    }
136f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard
137f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    public Bitmap getImage() {
138f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        return mImage;
139f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    }
140f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard
141f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    public void setImage(Bitmap image) {
142f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        mImage = image;
143f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    }
144f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard
145fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard    public void setAdapter(ArrayAdapter adapter) {
146f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        mAdapter = adapter;
147f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    }
148f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard
149f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    public void setType(int type) {
150f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        mType = type;
151f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    }
152f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard
15332cc4dd751569721aa19218b4d947145577060d0nicolasroard    private void postNewIconRenderRequest(int w, int h) {
15432cc4dd751569721aa19218b4d947145577060d0nicolasroard        if (mRepresentation != null) {
155f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard            ImagePreset preset = new ImagePreset();
156f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard            preset.addFilter(mRepresentation);
15732cc4dd751569721aa19218b4d947145577060d0nicolasroard            RenderingRequest.postIconRequest(mContext, w, h, preset, this);
158f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        }
159f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    }
160f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard
161f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    private void drawCenteredImage(Bitmap source, Bitmap destination, boolean scale) {
16232cc4dd751569721aa19218b4d947145577060d0nicolasroard        int minSide = Math.min(destination.getWidth(), destination.getHeight());
163f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        Matrix m = new Matrix();
16432cc4dd751569721aa19218b4d947145577060d0nicolasroard        float scaleFactor = minSide / (float) Math.min(source.getWidth(), source.getHeight());
16532cc4dd751569721aa19218b4d947145577060d0nicolasroard
16632cc4dd751569721aa19218b4d947145577060d0nicolasroard        float dx = (destination.getWidth() - source.getWidth() * scaleFactor) / 2.0f;
16732cc4dd751569721aa19218b4d947145577060d0nicolasroard        float dy = (destination.getHeight() - source.getHeight() * scaleFactor) / 2.0f;
16832cc4dd751569721aa19218b4d947145577060d0nicolasroard        if (mImageFrame.height() > mImageFrame.width()) {
16932cc4dd751569721aa19218b4d947145577060d0nicolasroard            // if portrait
17032cc4dd751569721aa19218b4d947145577060d0nicolasroard            dy -= mTextSize;
17132cc4dd751569721aa19218b4d947145577060d0nicolasroard        }
17232cc4dd751569721aa19218b4d947145577060d0nicolasroard        m.setScale(scaleFactor, scaleFactor);
17332cc4dd751569721aa19218b4d947145577060d0nicolasroard        m.postTranslate(dx, dy);
174f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        Canvas canvas = new Canvas(destination);
1755c57134ef2636f452bd6ec907d6510840390d982nicolasroard        canvas.drawBitmap(source, m, new Paint(Paint.FILTER_BITMAP_FLAG));
176f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    }
177f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard
178f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    @Override
179f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    public void available(RenderingRequest request) {
18032cc4dd751569721aa19218b4d947145577060d0nicolasroard        clearBitmap();
181f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        mImage = request.getBitmap();
182f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        if (mImage == null) {
18332cc4dd751569721aa19218b4d947145577060d0nicolasroard            mImageFrame = null;
184f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard            return;
185f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        }
186f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        if (mRepresentation.getOverlayId() != 0 && mOverlayBitmap == null) {
187f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard            mOverlayBitmap = BitmapFactory.decodeResource(
188f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard                    mContext.getResources(),
189f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard                    mRepresentation.getOverlayId());
190f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        }
191f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        if (mOverlayBitmap != null) {
1923cb106ddd7ad0f8494ac9c7a33660831c1694295Ruben Brunk            if (getRepresentation().getFilterType() == FilterRepresentation.TYPE_BORDER) {
19300259461be82e601b58d3e970afbf0c012c5f3e7nicolasroard                Canvas canvas = new Canvas(mImage);
19400259461be82e601b58d3e970afbf0c012c5f3e7nicolasroard                canvas.drawBitmap(mOverlayBitmap, new Rect(0, 0, mOverlayBitmap.getWidth(), mOverlayBitmap.getHeight()),
19500259461be82e601b58d3e970afbf0c012c5f3e7nicolasroard                        new Rect(0, 0, mImage.getWidth(), mImage.getHeight()), new Paint());
19600259461be82e601b58d3e970afbf0c012c5f3e7nicolasroard            } else {
19700259461be82e601b58d3e970afbf0c012c5f3e7nicolasroard                Canvas canvas = new Canvas(mImage);
19800259461be82e601b58d3e970afbf0c012c5f3e7nicolasroard                canvas.drawARGB(128, 0, 0, 0);
19900259461be82e601b58d3e970afbf0c012c5f3e7nicolasroard                drawCenteredImage(mOverlayBitmap, mImage, false);
20000259461be82e601b58d3e970afbf0c012c5f3e7nicolasroard            }
201f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        }
202f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        if (mAdapter != null) {
203f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard            mAdapter.notifyDataSetChanged();
204f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        }
205f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    }
206f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard
207f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    public void setPortraitImage(Bitmap portraitImage) {
208f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        mPortraitImage = portraitImage;
209f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    }
210f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard
211f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    public Bitmap getPortraitImage() {
212f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        return mPortraitImage;
213f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    }
214f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard
215f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    public Bitmap getOverlayBitmap() {
216f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        return mOverlayBitmap;
217f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    }
218f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard
219f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    public void setOverlayBitmap(Bitmap overlayBitmap) {
220f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        mOverlayBitmap = overlayBitmap;
221f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    }
22232cc4dd751569721aa19218b4d947145577060d0nicolasroard
22332cc4dd751569721aa19218b4d947145577060d0nicolasroard    public void clearBitmap() {
22432cc4dd751569721aa19218b4d947145577060d0nicolasroard        if (mImage != null
22532cc4dd751569721aa19218b4d947145577060d0nicolasroard                && mImage != MasterImage.getImage().getTemporaryThumbnailBitmap()) {
22632cc4dd751569721aa19218b4d947145577060d0nicolasroard            MasterImage.getImage().getBitmapCache().cache(mImage);
22732cc4dd751569721aa19218b4d947145577060d0nicolasroard        }
22832cc4dd751569721aa19218b4d947145577060d0nicolasroard        mImage = null;
22932cc4dd751569721aa19218b4d947145577060d0nicolasroard    }
230f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard}
231