RenderingRequest.java revision 6ee7feeefec9e99ea6b98408323a416214d0e817
13df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard/*
23df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard * Copyright (C) 2013 The Android Open Source Project
33df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard *
43df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard * Licensed under the Apache License, Version 2.0 (the "License");
53df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard * you may not use this file except in compliance with the License.
63df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard * You may obtain a copy of the License at
73df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard *
83df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard *      http://www.apache.org/licenses/LICENSE-2.0
93df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard *
103df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard * Unless required by applicable law or agreed to in writing, software
113df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard * distributed under the License is distributed on an "AS IS" BASIS,
123df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
133df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard * See the License for the specific language governing permissions and
143df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard * limitations under the License.
153df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard */
163df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard
173df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroardpackage com.android.gallery3d.filtershow.cache;
183df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard
193df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroardimport android.graphics.Bitmap;
20e5498da0262fc836738aad63ea30286d8afa643cnicolasroardimport android.graphics.Rect;
213df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroardimport com.android.gallery3d.app.Log;
22ecdda817f112286ac6bab2ac4bf508e7dd8609acJohn Hofordimport com.android.gallery3d.filtershow.imageshow.MasterImage;
233df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroardimport com.android.gallery3d.filtershow.presets.ImagePreset;
243df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard
253df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroardpublic class RenderingRequest {
263df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard    private static final String LOGTAG = "RenderingRequest";
273df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard    private boolean mIsDirect = false;
283df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard    private Bitmap mBitmap = null;
293df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard    private ImagePreset mImagePreset = null;
306ee7feeefec9e99ea6b98408323a416214d0e817nicolasroard    private ImagePreset mOriginalImagePreset = null;
313df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard    private RenderingRequestCaller mCaller = null;
32e5498da0262fc836738aad63ea30286d8afa643cnicolasroard    private Rect mBounds = null;
33e5498da0262fc836738aad63ea30286d8afa643cnicolasroard    private Rect mDestination = null;
343df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard    private int mType = FULL_RENDERING;
35e5498da0262fc836738aad63ea30286d8afa643cnicolasroard    public static final int FULL_RENDERING = 0;
36e5498da0262fc836738aad63ea30286d8afa643cnicolasroard    public static final int FILTERS_RENDERING = 1;
37e5498da0262fc836738aad63ea30286d8afa643cnicolasroard    public static final int GEOMETRY_RENDERING = 2;
38e5498da0262fc836738aad63ea30286d8afa643cnicolasroard    public static final int ICON_RENDERING = 3;
39e5498da0262fc836738aad63ea30286d8afa643cnicolasroard    public static final int PARTIAL_RENDERING = 4;
403df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard    private static final Bitmap.Config mConfig = Bitmap.Config.ARGB_8888;
413df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard
42e5498da0262fc836738aad63ea30286d8afa643cnicolasroard    public static void post(Bitmap source, ImagePreset preset, int type, RenderingRequestCaller caller) {
43e5498da0262fc836738aad63ea30286d8afa643cnicolasroard        RenderingRequest.post(source, preset, type, caller, null, null);
44e5498da0262fc836738aad63ea30286d8afa643cnicolasroard    }
45e5498da0262fc836738aad63ea30286d8afa643cnicolasroard
463df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard    public static void post(Bitmap source, ImagePreset preset, int type,
47e5498da0262fc836738aad63ea30286d8afa643cnicolasroard                            RenderingRequestCaller caller, Rect bounds, Rect destination) {
48e5498da0262fc836738aad63ea30286d8afa643cnicolasroard        if ((type != PARTIAL_RENDERING && source == null) || preset == null || caller == null) {
493df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard            Log.v(LOGTAG, "something null: source: " + source + " or preset: " + preset + " or caller: " + caller);
503df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard            return;
513df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard        }
523df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard        RenderingRequest request = new RenderingRequest();
533df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard        Bitmap bitmap = null;
54e5498da0262fc836738aad63ea30286d8afa643cnicolasroard        if (type == FULL_RENDERING
55e5498da0262fc836738aad63ea30286d8afa643cnicolasroard                || type == GEOMETRY_RENDERING
56e5498da0262fc836738aad63ea30286d8afa643cnicolasroard                || type == ICON_RENDERING) {
573df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard            bitmap = preset.applyGeometry(source);
58e5498da0262fc836738aad63ea30286d8afa643cnicolasroard        } else if (type != PARTIAL_RENDERING) {
593df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard            bitmap = Bitmap.createBitmap(source.getWidth(), source.getHeight(), mConfig);
603df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard        }
61e5498da0262fc836738aad63ea30286d8afa643cnicolasroard
623df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard        request.setBitmap(bitmap);
63ecdda817f112286ac6bab2ac4bf508e7dd8609acJohn Hoford        ImagePreset passedPreset = new ImagePreset(preset);
64ecdda817f112286ac6bab2ac4bf508e7dd8609acJohn Hoford        passedPreset.setImageLoader(MasterImage.getImage().getImageLoader());
656ee7feeefec9e99ea6b98408323a416214d0e817nicolasroard        request.setOriginalImagePreset(preset);
66e5498da0262fc836738aad63ea30286d8afa643cnicolasroard
67e5498da0262fc836738aad63ea30286d8afa643cnicolasroard        if (type == PARTIAL_RENDERING) {
68e5498da0262fc836738aad63ea30286d8afa643cnicolasroard            request.setBounds(bounds);
69e5498da0262fc836738aad63ea30286d8afa643cnicolasroard            request.setDestination(destination);
70e5498da0262fc836738aad63ea30286d8afa643cnicolasroard            passedPreset.setPartialRendering(true, bounds);
71e5498da0262fc836738aad63ea30286d8afa643cnicolasroard        }
72e5498da0262fc836738aad63ea30286d8afa643cnicolasroard
73ecdda817f112286ac6bab2ac4bf508e7dd8609acJohn Hoford        request.setImagePreset(passedPreset);
743df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard        request.setType(type);
753df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard        request.setCaller(caller);
763df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard        request.post();
773df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard    }
783df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard
793df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard    public void post() {
803df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard        FilteringPipeline.getPipeline().postRenderingRequest(this);
813df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard    }
823df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard
833df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard    public void markAvailable() {
843df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard        if (mBitmap == null || mImagePreset == null
853df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard                || mCaller == null) {
863df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard            return;
873df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard        }
883df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard        mCaller.available(this);
893df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard    }
903df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard
913df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard    public boolean isDirect() {
923df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard        return mIsDirect;
933df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard    }
943df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard
953df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard    public void setDirect(boolean isDirect) {
963df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard        mIsDirect = isDirect;
973df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard    }
983df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard
993df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard    public Bitmap getBitmap() {
1003df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard        return mBitmap;
1013df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard    }
1023df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard
1033df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard    public void setBitmap(Bitmap bitmap) {
1043df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard        mBitmap = bitmap;
1053df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard    }
1063df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard
1073df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard    public ImagePreset getImagePreset() {
1083df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard        return mImagePreset;
1093df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard    }
1103df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard
1113df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard    public void setImagePreset(ImagePreset imagePreset) {
1123df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard        mImagePreset = imagePreset;
1133df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard    }
1143df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard
1153df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard    public int getType() {
1163df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard        return mType;
1173df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard    }
1183df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard
1193df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard    public void setType(int type) {
1203df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard        mType = type;
1213df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard    }
1223df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard
1233df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard    public void setCaller(RenderingRequestCaller caller) {
1243df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard        mCaller = caller;
1253df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard    }
126e5498da0262fc836738aad63ea30286d8afa643cnicolasroard
127e5498da0262fc836738aad63ea30286d8afa643cnicolasroard    public Rect getBounds() {
128e5498da0262fc836738aad63ea30286d8afa643cnicolasroard        return mBounds;
129e5498da0262fc836738aad63ea30286d8afa643cnicolasroard    }
130e5498da0262fc836738aad63ea30286d8afa643cnicolasroard
131e5498da0262fc836738aad63ea30286d8afa643cnicolasroard    public void setBounds(Rect bounds) {
132e5498da0262fc836738aad63ea30286d8afa643cnicolasroard        mBounds = bounds;
133e5498da0262fc836738aad63ea30286d8afa643cnicolasroard    }
134e5498da0262fc836738aad63ea30286d8afa643cnicolasroard
135e5498da0262fc836738aad63ea30286d8afa643cnicolasroard    public Rect getDestination() {
136e5498da0262fc836738aad63ea30286d8afa643cnicolasroard        return mDestination;
137e5498da0262fc836738aad63ea30286d8afa643cnicolasroard    }
138e5498da0262fc836738aad63ea30286d8afa643cnicolasroard
139e5498da0262fc836738aad63ea30286d8afa643cnicolasroard    public void setDestination(Rect destination) {
140e5498da0262fc836738aad63ea30286d8afa643cnicolasroard        mDestination = destination;
141e5498da0262fc836738aad63ea30286d8afa643cnicolasroard    }
1426ee7feeefec9e99ea6b98408323a416214d0e817nicolasroard
1436ee7feeefec9e99ea6b98408323a416214d0e817nicolasroard    public ImagePreset getOriginalImagePreset() {
1446ee7feeefec9e99ea6b98408323a416214d0e817nicolasroard        return mOriginalImagePreset;
1456ee7feeefec9e99ea6b98408323a416214d0e817nicolasroard    }
1466ee7feeefec9e99ea6b98408323a416214d0e817nicolasroard
1476ee7feeefec9e99ea6b98408323a416214d0e817nicolasroard    public void setOriginalImagePreset(ImagePreset originalImagePreset) {
1486ee7feeefec9e99ea6b98408323a416214d0e817nicolasroard        mOriginalImagePreset = originalImagePreset;
1496ee7feeefec9e99ea6b98408323a416214d0e817nicolasroard    }
1503df4f831396ffbc11e4bbee0b6150794e8e44e0bnicolasroard}
151