summaryrefslogtreecommitdiffstats
path: root/src/com/android/gallery3d/filtershow/presets
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/gallery3d/filtershow/presets')
-rw-r--r--src/com/android/gallery3d/filtershow/presets/FilterEnvironment.java68
-rw-r--r--src/com/android/gallery3d/filtershow/presets/ImagePreset.java43
2 files changed, 98 insertions, 13 deletions
diff --git a/src/com/android/gallery3d/filtershow/presets/FilterEnvironment.java b/src/com/android/gallery3d/filtershow/presets/FilterEnvironment.java
new file mode 100644
index 000000000..c20502290
--- /dev/null
+++ b/src/com/android/gallery3d/filtershow/presets/FilterEnvironment.java
@@ -0,0 +1,68 @@
+/*
+ * 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.presets;
+
+import android.graphics.Bitmap;
+import com.android.gallery3d.filtershow.filters.FilterRepresentation;
+import com.android.gallery3d.filtershow.filters.FiltersManager;
+import com.android.gallery3d.filtershow.filters.ImageFilter;
+
+public class FilterEnvironment {
+ private ImagePreset mImagePreset;
+ private float mScaleFactor;
+ private int mQuality;
+ private FiltersManager mFiltersManager;
+
+ public void setImagePreset(ImagePreset imagePreset) {
+ mImagePreset = imagePreset;
+ }
+
+ public ImagePreset getImagePreset() {
+ return mImagePreset;
+ }
+
+ public void setScaleFactor(float scaleFactor) {
+ mScaleFactor = scaleFactor;
+ }
+
+ public float getScaleFactor() {
+ return mScaleFactor;
+ }
+
+ public void setQuality(int quality) {
+ mQuality = quality;
+ }
+
+ public int getQuality() {
+ return mQuality;
+ }
+
+ public void setFiltersManager(FiltersManager filtersManager) {
+ mFiltersManager = filtersManager;
+ }
+
+ public FiltersManager getFiltersManager() {
+ return mFiltersManager;
+ }
+
+ public Bitmap applyRepresentation(FilterRepresentation representation, Bitmap bitmap) {
+ ImageFilter filter = mFiltersManager.getFilterForRepresentation(representation);
+ filter.useRepresentation(representation);
+ filter.setImagePreset(mImagePreset);
+ return filter.apply(bitmap, mScaleFactor, mQuality);
+ }
+}
diff --git a/src/com/android/gallery3d/filtershow/presets/ImagePreset.java b/src/com/android/gallery3d/filtershow/presets/ImagePreset.java
index ca74a8729..87d9c8183 100644
--- a/src/com/android/gallery3d/filtershow/presets/ImagePreset.java
+++ b/src/com/android/gallery3d/filtershow/presets/ImagePreset.java
@@ -56,6 +56,8 @@ public class ImagePreset {
private Rect mPartialRenderingBounds;
private Bitmap mPreviewImage;
+ private FilterEnvironment mEnvironment = new FilterEnvironment();
+
public ImagePreset() {
setup();
}
@@ -407,6 +409,17 @@ public class ImagePreset {
// do nothing here
}
+ public void setupEnvironment() {
+ setupEnvironment(FiltersManager.getManager());
+ }
+
+ public void setupEnvironment(FiltersManager filtersManager) {
+ getEnvironment().setImagePreset(this);
+ getEnvironment().setScaleFactor(mScaleFactor);
+ getEnvironment().setQuality(mQuality);
+ getEnvironment().setFiltersManager(filtersManager);
+ }
+
public Bitmap apply(Bitmap original) {
Bitmap bitmap = original;
bitmap = applyFilters(bitmap, -1, -1);
@@ -417,28 +430,21 @@ public class ImagePreset {
// Apply any transform -- 90 rotate, flip, straighten, crop
// Returns a new bitmap.
if (mDoApplyGeometry) {
- ImageFilter filter = FiltersManager.getManager().getFilterForRepresentation(mGeoData);
mGeoData.synchronizeRepresentation();
- filter.useRepresentation(mGeoData);
- filter.setImagePreset(this);
- bitmap = filter.apply(bitmap, mScaleFactor, mQuality);
+ bitmap = mEnvironment.applyRepresentation(mGeoData, bitmap);
}
return bitmap;
}
public Bitmap applyBorder(Bitmap bitmap) {
if (mBorder != null && mDoApplyGeometry) {
- ImageFilter filter = FiltersManager.getManager().getFilterForRepresentation(mBorder);
mBorder.synchronizeRepresentation();
- filter.useRepresentation(mBorder);
- filter.setImagePreset(this);
- bitmap = filter.apply(bitmap, mScaleFactor, mQuality);
+ bitmap = mEnvironment.applyRepresentation(mBorder, bitmap);
}
return bitmap;
}
public Bitmap applyFilters(Bitmap bitmap, int from, int to) {
-
if (mDoApplyFilters) {
if (from < 0) {
from = 0;
@@ -452,10 +458,7 @@ public class ImagePreset {
representation = mFilters.elementAt(i);
representation.synchronizeRepresentation();
}
- ImageFilter filter = FiltersManager.getManager().getFilterForRepresentation(representation);
- filter.useRepresentation(representation);
- filter.setImagePreset(this);
- bitmap = filter.apply(bitmap, mScaleFactor, mQuality);
+ bitmap = mEnvironment.applyRepresentation(representation, bitmap);
}
}
@@ -531,4 +534,18 @@ public class ImagePreset {
mPreviewImage = previewImage;
}
+ public Vector<ImageFilter> getUsedFilters() {
+ Vector<ImageFilter> usedFilters = new Vector<ImageFilter>();
+ for (int i = 0; i < mFilters.size(); i++) {
+ FilterRepresentation representation = mFilters.elementAt(i);
+ FiltersManager filtersManager = getEnvironment().getFiltersManager();
+ ImageFilter filter = filtersManager.getFilterForRepresentation(representation);
+ usedFilters.add(filter);
+ }
+ return usedFilters;
+ }
+
+ public FilterEnvironment getEnvironment() {
+ return mEnvironment;
+ }
}