1430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroardpackage com.android.gallery3d.filtershow.pipeline; 2430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard 3430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroardimport android.graphics.Bitmap; 4430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroardimport com.android.gallery3d.filtershow.filters.FiltersManager; 5430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard 6430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroardpublic class FullresRenderingRequestTask extends ProcessingTask { 7430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard 8430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard private CachingPipeline mFullresPipeline = null; 9430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard private boolean mPipelineIsOn = false; 10430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard 11430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard public void setPreviewScaleFactor(float previewScale) { 12430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard mFullresPipeline.setPreviewScaleFactor(previewScale); 13430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard } 14430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard 15430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard static class Render implements Request { 16430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard RenderingRequest request; 17430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard } 18430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard 19430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard static class RenderResult implements Result { 20430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard RenderingRequest request; 21430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard } 22430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard 23430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard public FullresRenderingRequestTask() { 24430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard mFullresPipeline = new CachingPipeline( 25430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard FiltersManager.getHighresManager(), "Fullres"); 26430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard } 27430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard 28430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard public void setOriginal(Bitmap bitmap) { 29430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard mFullresPipeline.setOriginal(bitmap); 30430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard mPipelineIsOn = true; 31430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard } 32430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard 33430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard public void stop() { 34430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard mFullresPipeline.stop(); 35430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard } 36430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard 37430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard public void postRenderingRequest(RenderingRequest request) { 38430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard if (!mPipelineIsOn) { 39430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard return; 40430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard } 41430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard Render render = new Render(); 42430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard render.request = request; 43430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard postRequest(render); 44430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard } 45430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard 46430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard @Override 47430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard public Result doInBackground(Request message) { 48430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard RenderingRequest request = ((Render) message).request; 49430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard RenderResult result = null; 50430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard mFullresPipeline.render(request); 51430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard result = new RenderResult(); 52430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard result.request = request; 53430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard return result; 54430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard } 55430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard 56430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard @Override 57430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard public void onResult(Result message) { 58430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard if (message == null) { 59430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard return; 60430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard } 61430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard RenderingRequest request = ((RenderResult) message).request; 62430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard request.markAvailable(); 63430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard } 64430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard 65430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard @Override 66430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard public boolean isDelayedTask() { return true; } 67430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard} 68