1 /* 2 * Copyright (C) 2013 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.gallery3d.filtershow.pipeline; 18 19 import android.content.Context; 20 import android.graphics.Bitmap; 21 import android.graphics.Rect; 22 import com.android.gallery3d.app.Log; 23 import com.android.gallery3d.filtershow.FilterShowActivity; 24 import com.android.gallery3d.filtershow.cache.BitmapCache; 25 import com.android.gallery3d.filtershow.filters.FiltersManager; 26 import com.android.gallery3d.filtershow.imageshow.PrimaryImage; 27 28 public class RenderingRequest { 29 private static final String LOGTAG = "RenderingRequest"; 30 private boolean mIsDirect = false; 31 private Bitmap mBitmap = null; 32 private ImagePreset mImagePreset = null; 33 private ImagePreset mOriginalImagePreset = null; 34 private RenderingRequestCaller mCaller = null; 35 private float mScaleFactor = 1.0f; 36 private Rect mBounds = null; 37 private Rect mDestination = null; 38 private Rect mIconBounds = null; 39 private int mType = FULL_RENDERING; 40 public static final int FULL_RENDERING = 0; 41 public static final int FILTERS_RENDERING = 1; 42 public static final int GEOMETRY_RENDERING = 2; 43 public static final int ICON_RENDERING = 3; 44 public static final int PARTIAL_RENDERING = 4; 45 public static final int HIGHRES_RENDERING = 5; 46 public static final int STYLE_ICON_RENDERING = 6; 47 48 private static final Bitmap.Config mConfig = Bitmap.Config.ARGB_8888; 49 post(Context context, Bitmap source, ImagePreset preset, int type, RenderingRequestCaller caller)50 public static void post(Context context, Bitmap source, ImagePreset preset, 51 int type, RenderingRequestCaller caller) { 52 RenderingRequest.post(context, source, preset, type, caller, null, null); 53 } 54 post(Context context, Bitmap source, ImagePreset preset, int type, RenderingRequestCaller caller, Rect bounds, Rect destination)55 public static void post(Context context, Bitmap source, ImagePreset preset, int type, 56 RenderingRequestCaller caller, Rect bounds, Rect destination) { 57 if (((type != PARTIAL_RENDERING && type != HIGHRES_RENDERING 58 && type != GEOMETRY_RENDERING && type != FILTERS_RENDERING) && source == null) 59 || preset == null || caller == null) { 60 Log.v(LOGTAG, "something null: source: " + source 61 + " or preset: " + preset + " or caller: " + caller); 62 return; 63 } 64 RenderingRequest request = new RenderingRequest(); 65 Bitmap bitmap = null; 66 if (type == FULL_RENDERING 67 || type == ICON_RENDERING 68 || type == STYLE_ICON_RENDERING) { 69 CachingPipeline pipeline = new CachingPipeline( 70 FiltersManager.getManager(), "Icon"); 71 bitmap = pipeline.renderGeometryIcon(source, preset); 72 } else if (type != PARTIAL_RENDERING && type != HIGHRES_RENDERING 73 && type != GEOMETRY_RENDERING && type != FILTERS_RENDERING) { 74 bitmap = PrimaryImage.getImage().getBitmapCache().getBitmap( 75 source.getWidth(), source.getHeight(), BitmapCache.RENDERING_REQUEST); 76 } 77 78 request.setBitmap(bitmap); 79 ImagePreset passedPreset = new ImagePreset(preset); 80 request.setOriginalImagePreset(preset); 81 request.setScaleFactor(PrimaryImage.getImage().getScaleFactor()); 82 83 if (type == PARTIAL_RENDERING) { 84 request.setBounds(bounds); 85 request.setDestination(destination); 86 passedPreset.setPartialRendering(true, bounds); 87 } 88 89 request.setImagePreset(passedPreset); 90 request.setType(type); 91 request.setCaller(caller); 92 request.post(context); 93 } 94 postIconRequest(Context context, int w, int h, ImagePreset preset, RenderingRequestCaller caller)95 public static void postIconRequest(Context context, int w, int h, 96 ImagePreset preset, 97 RenderingRequestCaller caller) { 98 if (preset == null || caller == null) { 99 Log.v(LOGTAG, "something null, preset: " 100 + preset + " or caller: " + caller); 101 return; 102 } 103 RenderingRequest request = new RenderingRequest(); 104 ImagePreset passedPreset = new ImagePreset(preset); 105 request.setOriginalImagePreset(preset); 106 request.setScaleFactor(PrimaryImage.getImage().getScaleFactor()); 107 request.setImagePreset(passedPreset); 108 request.setType(RenderingRequest.ICON_RENDERING); 109 request.setCaller(caller); 110 request.setIconBounds(new Rect(0, 0, w, h)); 111 request.post(context); 112 } 113 post(Context context)114 public void post(Context context) { 115 if (context instanceof FilterShowActivity) { 116 FilterShowActivity activity = (FilterShowActivity) context; 117 ProcessingService service = activity.getProcessingService(); 118 service.postRenderingRequest(this); 119 } 120 } 121 markAvailable()122 public void markAvailable() { 123 if (mBitmap == null || mImagePreset == null 124 || mCaller == null) { 125 return; 126 } 127 mCaller.available(this); 128 } 129 isDirect()130 public boolean isDirect() { 131 return mIsDirect; 132 } 133 setDirect(boolean isDirect)134 public void setDirect(boolean isDirect) { 135 mIsDirect = isDirect; 136 } 137 getBitmap()138 public Bitmap getBitmap() { 139 return mBitmap; 140 } 141 setBitmap(Bitmap bitmap)142 public void setBitmap(Bitmap bitmap) { 143 mBitmap = bitmap; 144 } 145 getImagePreset()146 public ImagePreset getImagePreset() { 147 return mImagePreset; 148 } 149 setImagePreset(ImagePreset imagePreset)150 public void setImagePreset(ImagePreset imagePreset) { 151 mImagePreset = imagePreset; 152 } 153 getType()154 public int getType() { 155 return mType; 156 } 157 setType(int type)158 public void setType(int type) { 159 mType = type; 160 } 161 setCaller(RenderingRequestCaller caller)162 public void setCaller(RenderingRequestCaller caller) { 163 mCaller = caller; 164 } 165 getBounds()166 public Rect getBounds() { 167 return mBounds; 168 } 169 setBounds(Rect bounds)170 public void setBounds(Rect bounds) { 171 mBounds = bounds; 172 } 173 setScaleFactor(float scaleFactor)174 public void setScaleFactor(float scaleFactor) { 175 mScaleFactor = scaleFactor; 176 } 177 getScaleFactor()178 public float getScaleFactor() { 179 return mScaleFactor; 180 } 181 getDestination()182 public Rect getDestination() { 183 return mDestination; 184 } 185 setDestination(Rect destination)186 public void setDestination(Rect destination) { 187 mDestination = destination; 188 } 189 setIconBounds(Rect bounds)190 public void setIconBounds(Rect bounds) { 191 mIconBounds = bounds; 192 } 193 getIconBounds()194 public Rect getIconBounds() { 195 return mIconBounds; 196 } 197 getOriginalImagePreset()198 public ImagePreset getOriginalImagePreset() { 199 return mOriginalImagePreset; 200 } 201 setOriginalImagePreset(ImagePreset originalImagePreset)202 public void setOriginalImagePreset(ImagePreset originalImagePreset) { 203 mOriginalImagePreset = originalImagePreset; 204 } 205 } 206