summaryrefslogtreecommitdiffstats
path: root/src/com/android/gallery3d/filtershow/pipeline/ProcessingService.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/gallery3d/filtershow/pipeline/ProcessingService.java')
-rw-r--r--src/com/android/gallery3d/filtershow/pipeline/ProcessingService.java283
1 files changed, 0 insertions, 283 deletions
diff --git a/src/com/android/gallery3d/filtershow/pipeline/ProcessingService.java b/src/com/android/gallery3d/filtershow/pipeline/ProcessingService.java
deleted file mode 100644
index d0504d11f..000000000
--- a/src/com/android/gallery3d/filtershow/pipeline/ProcessingService.java
+++ /dev/null
@@ -1,283 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.gallery3d.filtershow.pipeline;
-
-import android.app.Notification;
-import android.app.NotificationManager;
-import android.app.Service;
-import android.content.Context;
-import android.content.Intent;
-import android.content.res.Resources;
-import android.graphics.Bitmap;
-import android.net.Uri;
-import android.os.Binder;
-import android.os.IBinder;
-import android.util.Log;
-import com.android.gallery3d.R;
-import com.android.gallery3d.filtershow.FilterShowActivity;
-import com.android.gallery3d.filtershow.filters.FiltersManager;
-import com.android.gallery3d.filtershow.filters.ImageFilter;
-import com.android.gallery3d.filtershow.imageshow.MasterImage;
-import com.android.gallery3d.filtershow.tools.SaveImage;
-
-import java.io.File;
-
-public class ProcessingService extends Service {
- private static final String LOGTAG = "ProcessingService";
- private static final boolean SHOW_IMAGE = false;
- private int mNotificationId;
- private NotificationManager mNotifyMgr = null;
- private Notification.Builder mBuilder = null;
-
- private static final String PRESET = "preset";
- private static final String QUALITY = "quality";
- private static final String SOURCE_URI = "sourceUri";
- private static final String SELECTED_URI = "selectedUri";
- private static final String DESTINATION_FILE = "destinationFile";
- private static final String SAVING = "saving";
- private static final String FLATTEN = "flatten";
-
- private ProcessingTaskController mProcessingTaskController;
- private ImageSavingTask mImageSavingTask;
- private UpdatePreviewTask mUpdatePreviewTask;
- private HighresRenderingRequestTask mHighresRenderingRequestTask;
- private RenderingRequestTask mRenderingRequestTask;
-
- private final IBinder mBinder = new LocalBinder();
- private FilterShowActivity mFiltershowActivity;
-
- private boolean mSaving = false;
- private boolean mNeedsAlive = false;
-
- public void setFiltershowActivity(FilterShowActivity filtershowActivity) {
- mFiltershowActivity = filtershowActivity;
- }
-
- public void setOriginalBitmap(Bitmap originalBitmap) {
- if (mUpdatePreviewTask == null) {
- return;
- }
- mUpdatePreviewTask.setOriginal(originalBitmap);
- mHighresRenderingRequestTask.setOriginal(originalBitmap);
- mRenderingRequestTask.setOriginal(originalBitmap);
- }
-
- public void updatePreviewBuffer() {
- mHighresRenderingRequestTask.stop();
- mUpdatePreviewTask.updatePreview();
- }
-
- public void postRenderingRequest(RenderingRequest request) {
- mRenderingRequestTask.postRenderingRequest(request);
- }
-
- public void postHighresRenderingRequest(ImagePreset preset, float scaleFactor,
- RenderingRequestCaller caller) {
- RenderingRequest request = new RenderingRequest();
- // TODO: use the triple buffer preset as UpdatePreviewTask does instead of creating a copy
- ImagePreset passedPreset = new ImagePreset(preset);
- request.setOriginalImagePreset(preset);
- request.setScaleFactor(scaleFactor);
- request.setImagePreset(passedPreset);
- request.setType(RenderingRequest.HIGHRES_RENDERING);
- request.setCaller(caller);
- mHighresRenderingRequestTask.postRenderingRequest(request);
- }
-
- public void setHighresPreviewScaleFactor(float highResPreviewScale) {
- mHighresRenderingRequestTask.setHighresPreviewScaleFactor(highResPreviewScale);
- }
-
- public void setPreviewScaleFactor(float previewScale) {
- mHighresRenderingRequestTask.setPreviewScaleFactor(previewScale);
- mRenderingRequestTask.setPreviewScaleFactor(previewScale);
- }
-
- public void setOriginalBitmapHighres(Bitmap originalHires) {
- mHighresRenderingRequestTask.setOriginalBitmapHighres(originalHires);
- }
-
- public class LocalBinder extends Binder {
- public ProcessingService getService() {
- return ProcessingService.this;
- }
- }
-
- public static Intent getSaveIntent(Context context, ImagePreset preset, File destination,
- Uri selectedImageUri, Uri sourceImageUri, boolean doFlatten, int quality) {
- Intent processIntent = new Intent(context, ProcessingService.class);
- processIntent.putExtra(ProcessingService.SOURCE_URI,
- sourceImageUri.toString());
- processIntent.putExtra(ProcessingService.SELECTED_URI,
- selectedImageUri.toString());
- processIntent.putExtra(ProcessingService.QUALITY, quality);
- if (destination != null) {
- processIntent.putExtra(ProcessingService.DESTINATION_FILE, destination.toString());
- }
- processIntent.putExtra(ProcessingService.PRESET,
- preset.getJsonString(context.getString(R.string.saved)));
- processIntent.putExtra(ProcessingService.SAVING, true);
- if (doFlatten) {
- processIntent.putExtra(ProcessingService.FLATTEN, true);
- }
- return processIntent;
- }
-
-
- @Override
- public void onCreate() {
- mProcessingTaskController = new ProcessingTaskController(this);
- mImageSavingTask = new ImageSavingTask(this);
- mUpdatePreviewTask = new UpdatePreviewTask();
- mHighresRenderingRequestTask = new HighresRenderingRequestTask();
- mRenderingRequestTask = new RenderingRequestTask();
- mProcessingTaskController.add(mImageSavingTask);
- mProcessingTaskController.add(mUpdatePreviewTask);
- mProcessingTaskController.add(mHighresRenderingRequestTask);
- mProcessingTaskController.add(mRenderingRequestTask);
- setupPipeline();
- }
-
- @Override
- public void onDestroy() {
- tearDownPipeline();
- mProcessingTaskController.quit();
- }
-
- @Override
- public int onStartCommand(Intent intent, int flags, int startId) {
- mNeedsAlive = true;
- if (intent != null && intent.getBooleanExtra(SAVING, false)) {
- // we save using an intent to keep the service around after the
- // activity has been destroyed.
- String presetJson = intent.getStringExtra(PRESET);
- String source = intent.getStringExtra(SOURCE_URI);
- String selected = intent.getStringExtra(SELECTED_URI);
- String destination = intent.getStringExtra(DESTINATION_FILE);
- int quality = intent.getIntExtra(QUALITY, 100);
- boolean flatten = intent.getBooleanExtra(FLATTEN, false);
- Uri sourceUri = Uri.parse(source);
- Uri selectedUri = null;
- if (selected != null) {
- selectedUri = Uri.parse(selected);
- }
- File destinationFile = null;
- if (destination != null) {
- destinationFile = new File(destination);
- }
- ImagePreset preset = new ImagePreset();
- preset.readJsonFromString(presetJson);
- mNeedsAlive = false;
- mSaving = true;
- handleSaveRequest(sourceUri, selectedUri, destinationFile, preset, flatten, quality);
- }
- return START_REDELIVER_INTENT;
- }
-
- @Override
- public IBinder onBind(Intent intent) {
- return mBinder;
- }
-
- public void onStart() {
- mNeedsAlive = true;
- if (!mSaving && mFiltershowActivity != null) {
- mFiltershowActivity.updateUIAfterServiceStarted();
- }
- }
-
- public void handleSaveRequest(Uri sourceUri, Uri selectedUri,
- File destinationFile, ImagePreset preset, boolean flatten, int quality) {
- mNotifyMgr = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
-
- mNotificationId++;
-
- mBuilder =
- new Notification.Builder(this)
- .setSmallIcon(R.drawable.filtershow_button_fx)
- .setContentTitle(getString(R.string.filtershow_notification_label))
- .setContentText(getString(R.string.filtershow_notification_message));
-
- startForeground(mNotificationId, mBuilder.build());
-
- updateProgress(SaveImage.MAX_PROCESSING_STEPS, 0);
-
- // Process the image
-
- mImageSavingTask.saveImage(sourceUri, selectedUri, destinationFile,
- preset, flatten, quality);
- }
-
- public void updateNotificationWithBitmap(Bitmap bitmap) {
- mBuilder.setLargeIcon(bitmap);
- mNotifyMgr.notify(mNotificationId, mBuilder.build());
- }
-
- public void updateProgress(int max, int current) {
- mBuilder.setProgress(max, current, false);
- mNotifyMgr.notify(mNotificationId, mBuilder.build());
- }
-
- public void completeSaveImage(Uri result) {
- if (SHOW_IMAGE) {
- // TODO: we should update the existing image in Gallery instead
- Intent viewImage = new Intent(Intent.ACTION_VIEW, result);
- viewImage.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- startActivity(viewImage);
- }
- stopForeground(true);
- stopSelf();
- if (mNeedsAlive) {
- // If the app has been restarted while we were saving...
- mFiltershowActivity.updateUIAfterServiceStarted();
- } else if (mFiltershowActivity.isSimpleEditAction()) {
- // terminate now
- mFiltershowActivity.completeSaveImage(result);
- }
- }
-
- private void setupPipeline() {
- Resources res = getResources();
- FiltersManager.setResources(res);
- CachingPipeline.createRenderscriptContext(this);
-
- FiltersManager filtersManager = FiltersManager.getManager();
- filtersManager.addLooks(this);
- filtersManager.addBorders(this);
- filtersManager.addTools(this);
- filtersManager.addEffects();
-
- FiltersManager highresFiltersManager = FiltersManager.getHighresManager();
- highresFiltersManager.addLooks(this);
- highresFiltersManager.addBorders(this);
- highresFiltersManager.addTools(this);
- highresFiltersManager.addEffects();
- }
-
- private void tearDownPipeline() {
- ImageFilter.resetStatics();
- FiltersManager.getPreviewManager().freeRSFilterScripts();
- FiltersManager.getManager().freeRSFilterScripts();
- FiltersManager.getHighresManager().freeRSFilterScripts();
- FiltersManager.reset();
- CachingPipeline.destroyRenderScriptContext();
- }
-
- static {
- System.loadLibrary("jni_filtershow_filters");
- }
-}