summaryrefslogtreecommitdiffstats
path: root/src/com/android/gallery3d/filtershow/ui/FilterIconButton.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/gallery3d/filtershow/ui/FilterIconButton.java')
-rw-r--r--src/com/android/gallery3d/filtershow/ui/FilterIconButton.java89
1 files changed, 66 insertions, 23 deletions
diff --git a/src/com/android/gallery3d/filtershow/ui/FilterIconButton.java b/src/com/android/gallery3d/filtershow/ui/FilterIconButton.java
index 089b24118..de2e1e5dc 100644
--- a/src/com/android/gallery3d/filtershow/ui/FilterIconButton.java
+++ b/src/com/android/gallery3d/filtershow/ui/FilterIconButton.java
@@ -24,15 +24,26 @@ import android.util.AttributeSet;
import android.view.View;
import android.widget.LinearLayout;
-import com.android.gallery3d.filtershow.FilterShowActivity;
-import com.android.gallery3d.filtershow.filters.ImageFilter;
+import com.android.gallery3d.filtershow.PanelController;
+import com.android.gallery3d.filtershow.cache.ImageLoader;
+import com.android.gallery3d.filtershow.cache.RenderingRequest;
+import com.android.gallery3d.filtershow.cache.RenderingRequestCaller;
+import com.android.gallery3d.filtershow.filters.FilterRepresentation;
+import com.android.gallery3d.filtershow.imageshow.GeometryListener;
+import com.android.gallery3d.filtershow.imageshow.MasterImage;
+import com.android.gallery3d.filtershow.presets.ImagePreset;
-public class FilterIconButton extends IconButton implements View.OnClickListener {
+public class FilterIconButton extends IconButton implements View.OnClickListener,
+ RenderingRequestCaller, GeometryListener {
+ private static final String LOGTAG = "FilterIconButton";
private Bitmap mOverlayBitmap = null;
- private FilterShowActivity mController = null;
- private ImageFilter mImageFilter = null;
+ private PanelController mController = null;
+ private FilterRepresentation mFilterRepresentation = null;
private LinearLayout mParentContainer = null;
private View.OnClickListener mListener = null;
+ private Bitmap mIconBitmap = null;
+ private ImagePreset mPreset = null;
+ private Rect mDestination = null;
public FilterIconButton(Context context) {
super(context);
@@ -46,30 +57,32 @@ public class FilterIconButton extends IconButton implements View.OnClickListener
super(context, attrs, defStyle);
}
- public void setup(String text, ImageFilter filter, FilterShowActivity controller,
- LinearLayout parent) {
- mImageFilter = filter;
+ public void setup(String text, PanelController controller, LinearLayout parent) {
mController = controller;
setText(text);
-
- if (mImageFilter.getOverlayBitmaps() != 0) {
- mOverlayBitmap = BitmapFactory.decodeResource(getResources(),
- mImageFilter.getOverlayBitmaps());
- }
-
mParentContainer = parent;
super.setOnClickListener(this);
+ MasterImage.getImage().addGeometryListener(this);
invalidate();
}
@Override
protected Bitmap drawImage(Bitmap dst, Bitmap image, Rect destination) {
- dst = super.drawImage(dst, image, destination);
- dst = mImageFilter.iconApply(dst, 1.0f, false);
- if (mOverlayBitmap != null) {
- dst = super.drawImage(dst, mOverlayBitmap, destination);
+ if (mIconBitmap == null && mPreset == null) {
+ ImageLoader loader = MasterImage.getImage().getLoader();
+ if (loader != null) {
+ ImagePreset geoPreset = new ImagePreset(MasterImage.getImage().getGeometryPreset());
+ image = geoPreset.applyGeometry(image);
+ dst = super.drawImage(dst, image, destination);
+ ImagePreset mPreset = new ImagePreset();
+ mPreset.addFilter(mFilterRepresentation);
+ mDestination = destination;
+ RenderingRequest.post(dst.copy(Bitmap.Config.ARGB_8888, true), mPreset, RenderingRequest.ICON_RENDERING, this);
+ }
+ return dst;
+ } else {
+ return mIconBitmap;
}
- return dst;
}
@Override
@@ -79,8 +92,8 @@ public class FilterIconButton extends IconButton implements View.OnClickListener
@Override
public void onClick(View v) {
- if (mController != null && mImageFilter != null) {
- mController.useFilter(mImageFilter);
+ if (mController != null) {
+ mController.useFilterRepresentation(mFilterRepresentation);
mParentContainer.dispatchSetSelected(false);
setSelected(true);
}
@@ -89,7 +102,37 @@ public class FilterIconButton extends IconButton implements View.OnClickListener
}
}
- public ImageFilter getImageFilter() {
- return mImageFilter;
+ public FilterRepresentation getFilterRepresentation() {
+ return mFilterRepresentation;
+ }
+
+ public void setFilterRepresentation(FilterRepresentation filterRepresentation) {
+ mFilterRepresentation = filterRepresentation;
+ if (mFilterRepresentation != null && mFilterRepresentation.getOverlayId() != 0) {
+ mOverlayBitmap = BitmapFactory.decodeResource(getResources(),
+ mFilterRepresentation.getOverlayId());
+ }
+ invalidate();
+ }
+
+ @Override
+ public void available(RenderingRequest request) {
+ if (request.getBitmap() == null) {
+ return;
+ }
+ mIconBitmap = request.getBitmap();
+ if (mOverlayBitmap != null) {
+ mIconBitmap = super.drawImage(mIconBitmap, mOverlayBitmap, mDestination);
+ }
+ invalidate();
+ stale_icon = true;
+ }
+
+ @Override
+ public void geometryChanged() {
+ stale_icon = true;
+ mIconBitmap = null;
+ mPreset = null;
+ invalidate();
}
}