summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xAndroidManifest.xml9
-rw-r--r--src/com/android/gallery3d/filtershow/category/TruePortraitMaskEditorPanel.java25
-rw-r--r--src/com/android/gallery3d/filtershow/editors/EditorTruePortraitFusion.java44
-rw-r--r--src/com/android/gallery3d/filtershow/tools/SaveImage.java53
-rw-r--r--src/com/android/gallery3d/filtershow/ui/AlertMsgDialog.java2
-rw-r--r--src/com/android/gallery3d/filtershow/ui/DoNotShowAgainDialog.java9
6 files changed, 93 insertions, 49 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 9d5aecb39..429488fe4 100755
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -167,14 +167,7 @@
<data android:scheme="https" />
<data android:scheme="content" />
<data android:scheme="file" />
- <data android:mimeType="image/bmp" />
- <data android:mimeType="image/jpeg" />
- <data android:mimeType="image/gif" />
- <data android:mimeType="image/png" />
- <data android:mimeType="image/webp" />
- <data android:mimeType="image/x-ms-bmp" />
- <data android:mimeType="image/x-MS-bmp" />
- <data android:mimeType="image/vnd.wap.wbmp" />
+ <data android:mimeType="image/*" />
<data android:mimeType="application/vnd.google.panorama360+jpg" />
</intent-filter>
<intent-filter>
diff --git a/src/com/android/gallery3d/filtershow/category/TruePortraitMaskEditorPanel.java b/src/com/android/gallery3d/filtershow/category/TruePortraitMaskEditorPanel.java
index 03935edc0..4390b90a7 100644
--- a/src/com/android/gallery3d/filtershow/category/TruePortraitMaskEditorPanel.java
+++ b/src/com/android/gallery3d/filtershow/category/TruePortraitMaskEditorPanel.java
@@ -33,6 +33,8 @@ package com.android.gallery3d.filtershow.category;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
+import android.support.v4.app.FragmentManager;
+import android.support.v4.app.FragmentTransaction;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -69,11 +71,24 @@ public class TruePortraitMaskEditorPanel extends Fragment {
boolean skipIntro = GalleryUtils.getBooleanPref(context,
context.getString(R.string.pref_trueportrait_edit_intro_show_key), false);
if(!skipIntro) {
- DoNotShowAgainDialog dialog = new DoNotShowAgainDialog(
- R.string.trueportrait_touch_up, R.string.trueportrait_edit_intro,
- R.string.pref_trueportrait_edit_intro_show_key);
- dialog.setCancelable(false);
- dialog.show(getFragmentManager(), "trueportrait_edit_intro");
+ FragmentManager fm = getFragmentManager();
+ DoNotShowAgainDialog dialog =
+ (DoNotShowAgainDialog) fm.findFragmentByTag("trueportrait_edit_intro");
+ if(dialog == null) {
+ dialog = new DoNotShowAgainDialog(
+ R.string.trueportrait_touch_up, R.string.trueportrait_edit_intro,
+ R.string.pref_trueportrait_edit_intro_show_key);
+ dialog.setCancelable(false);
+ dialog.show(fm, "trueportrait_edit_intro");
+ } else if (dialog.isDetached()) {
+ FragmentTransaction ft = fm.beginTransaction();
+ ft.attach(dialog);
+ ft.commit();
+ } else if (dialog.isHidden()) {
+ FragmentTransaction ft = fm.beginTransaction();
+ ft.show(dialog);
+ ft.commit();
+ }
}
}
diff --git a/src/com/android/gallery3d/filtershow/editors/EditorTruePortraitFusion.java b/src/com/android/gallery3d/filtershow/editors/EditorTruePortraitFusion.java
index cfeea1375..da6118c63 100644
--- a/src/com/android/gallery3d/filtershow/editors/EditorTruePortraitFusion.java
+++ b/src/com/android/gallery3d/filtershow/editors/EditorTruePortraitFusion.java
@@ -37,6 +37,7 @@ import android.content.Context;
import android.content.DialogInterface;
import android.net.Uri;
import android.support.v4.app.FragmentManager;
+import android.support.v4.app.FragmentTransaction;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
@@ -46,6 +47,7 @@ import android.widget.FrameLayout;
import android.widget.LinearLayout;
import org.codeaurora.gallery.R;
+
import com.android.gallery3d.filtershow.FilterShowActivity;
import com.android.gallery3d.filtershow.filters.FilterRepresentation;
import com.android.gallery3d.filtershow.filters.FilterTruePortraitFusionRepresentation;
@@ -171,18 +173,38 @@ public class EditorTruePortraitFusion extends Editor {
boolean skipIntro = GalleryUtils.getBooleanPref(mContext,
mContext.getString(R.string.pref_trueportrait_fusion_intro_show_key), false);
if(!skipIntro) {
- DoNotShowAgainDialog dialog = new DoNotShowAgainDialog(
- R.string.fusion_pick_background, R.string.trueportrait_fusion_intro,
- R.string.pref_trueportrait_fusion_intro_show_key) {
- @Override
- public void onDismiss(DialogInterface dialog) {
- super.onDismiss(dialog);
- MasterImage.getImage().getActivity().pickImage(FilterShowActivity.SELECT_FUSION_UNDERLAY);
- }
- };
FragmentManager fm = ((FilterShowActivity)mContext).getSupportFragmentManager();
- dialog.setCancelable(false);
- dialog.show(fm, "trueportrait_fusion_intro");
+ DoNotShowAgainDialog dialog =
+ (DoNotShowAgainDialog) fm.findFragmentByTag("trueportrait_fusion_intro");
+ if(dialog == null) {
+ dialog = new DoNotShowAgainDialog(
+ R.string.fusion_pick_background, R.string.trueportrait_fusion_intro,
+ R.string.pref_trueportrait_fusion_intro_show_key) {
+ @Override
+ public void onCancel(DialogInterface dialog) {
+ super.onCancel(dialog);
+ FilterShowActivity activity = (FilterShowActivity) mContext;
+ activity.cancelCurrentFilter();
+ activity.leaveSeekBarPanel();
+ }
+ };
+ dialog.setOnOkButtonClickListener(new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int id) {
+ MasterImage.getImage().getActivity().pickImage(FilterShowActivity.SELECT_FUSION_UNDERLAY);
+ }
+ });
+ dialog.setCancelable(true);
+ dialog.show(fm, "trueportrait_fusion_intro");
+ } else if (dialog.isDetached()) {
+ FragmentTransaction ft = fm.beginTransaction();
+ ft.attach(dialog);
+ ft.commit();
+ } else if (dialog.isHidden()) {
+ FragmentTransaction ft = fm.beginTransaction();
+ ft.show(dialog);
+ ft.commit();
+ }
}
}
}
diff --git a/src/com/android/gallery3d/filtershow/tools/SaveImage.java b/src/com/android/gallery3d/filtershow/tools/SaveImage.java
index 87492a335..073aca4cd 100644
--- a/src/com/android/gallery3d/filtershow/tools/SaveImage.java
+++ b/src/com/android/gallery3d/filtershow/tools/SaveImage.java
@@ -368,6 +368,11 @@ public class SaveImage {
if(hasFusion) {
previewBmp = flattenFusion(Uri.parse(fusionRep.getUnderlay()), mPreviewImage,
Math.max(mPreviewImage.getWidth(), mPreviewImage.getHeight()), 0);
+ // If we fail to flatten, save original image
+ if(previewBmp == null) {
+ previewBmp = mPreviewImage;
+ hasFusion = false;
+ }
} else {
previewBmp = mPreviewImage;
}
@@ -447,9 +452,10 @@ public class SaveImage {
if(hasFusion) {
Bitmap underlay = flattenFusion(
Uri.parse(fusionRep.getUnderlay()), bitmap, 0, sampleSize);
-
- bitmap.recycle();
- bitmap = underlay;
+ if(underlay != null) {
+ bitmap.recycle();
+ bitmap = underlay;
+ }
}
updateProgress();
@@ -820,26 +826,27 @@ public class SaveImage {
underlay = ImageLoader.loadBitmapWithBackouts(mContext, underlayUri, sampleSize);
}
- RectF destRect = new RectF();
- Rect imageBounds = MasterImage.getImage().getImageBounds();
- Rect underlayBounds = MasterImage.getImage().getFusionBounds();
- float underlayScaleFactor = (float)underlay.getWidth()
- / (float)underlayBounds.width();
-
- destRect.left = (imageBounds.left - underlayBounds.left) * underlayScaleFactor;
- destRect.right = (imageBounds.right - underlayBounds.left) * underlayScaleFactor;
- destRect.top = (imageBounds.top - underlayBounds.top) * underlayScaleFactor;
- destRect.bottom = (imageBounds.bottom - underlayBounds.top) * underlayScaleFactor;
-
- Canvas canvas = new Canvas(underlay);
- Paint paint = new Paint();
- paint.reset();
- paint.setAntiAlias(true);
- paint.setFilterBitmap(true);
- paint.setDither(true);
-
- canvas.drawBitmap(bitmap, null, destRect, paint);
-
+ if(underlay != null) {
+ RectF destRect = new RectF();
+ Rect imageBounds = MasterImage.getImage().getImageBounds();
+ Rect underlayBounds = MasterImage.getImage().getFusionBounds();
+ float underlayScaleFactor = (float)underlay.getWidth()
+ / (float)underlayBounds.width();
+
+ destRect.left = (imageBounds.left - underlayBounds.left) * underlayScaleFactor;
+ destRect.right = (imageBounds.right - underlayBounds.left) * underlayScaleFactor;
+ destRect.top = (imageBounds.top - underlayBounds.top) * underlayScaleFactor;
+ destRect.bottom = (imageBounds.bottom - underlayBounds.top) * underlayScaleFactor;
+
+ Canvas canvas = new Canvas(underlay);
+ Paint paint = new Paint();
+ paint.reset();
+ paint.setAntiAlias(true);
+ paint.setFilterBitmap(true);
+ paint.setDither(true);
+
+ canvas.drawBitmap(bitmap, null, destRect, paint);
+ }
return underlay;
}
}
diff --git a/src/com/android/gallery3d/filtershow/ui/AlertMsgDialog.java b/src/com/android/gallery3d/filtershow/ui/AlertMsgDialog.java
index 2041eb2ce..252e32ca7 100644
--- a/src/com/android/gallery3d/filtershow/ui/AlertMsgDialog.java
+++ b/src/com/android/gallery3d/filtershow/ui/AlertMsgDialog.java
@@ -51,7 +51,7 @@ public class AlertMsgDialog extends DialogFragment {
ab.setTitle(mTitleId);
ab.setMessage(mMessageId);
ab.setCancelable(false);
- ab.setNeutralButton(R.string.ok, null);
+ ab.setPositiveButton(R.string.ok, null);
return ab.create();
}
}
diff --git a/src/com/android/gallery3d/filtershow/ui/DoNotShowAgainDialog.java b/src/com/android/gallery3d/filtershow/ui/DoNotShowAgainDialog.java
index aad403bd1..e9245d540 100644
--- a/src/com/android/gallery3d/filtershow/ui/DoNotShowAgainDialog.java
+++ b/src/com/android/gallery3d/filtershow/ui/DoNotShowAgainDialog.java
@@ -48,11 +48,13 @@ public class DoNotShowAgainDialog extends DialogFragment {
private int mTitleId;
private int mMessageId;
private CheckBox mDoNotShowAgainChk;
+ private DialogInterface.OnClickListener mButtonClickListener;
public DoNotShowAgainDialog(int titleId, int msgId, int sharedPrefKeyId) {
mTitleId = titleId;
mMessageId = msgId;
mSharedPrefKeyId = sharedPrefKeyId;
+ mButtonClickListener = null;
}
@Override
@@ -67,13 +69,18 @@ public class DoNotShowAgainDialog extends DialogFragment {
ab.setTitle(mTitleId);
ab.setView(view);
ab.setCancelable(false);
- ab.setNeutralButton(R.string.ok, new DialogInterface.OnClickListener() {
+ ab.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Context context = getActivity();
GalleryUtils.setBooleanPref(context,
context.getString(mSharedPrefKeyId), mDoNotShowAgainChk.isChecked());
+ if(mButtonClickListener != null) mButtonClickListener.onClick(dialog, id);
}
});
return ab.create();
}
+
+ public void setOnOkButtonClickListener(DialogInterface.OnClickListener listener) {
+ mButtonClickListener = listener;
+ }
}