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