diff options
Diffstat (limited to 'src')
5 files changed, 63 insertions, 19 deletions
diff --git a/src/com/android/gallery3d/app/PhotoPageBottomControls.java b/src/com/android/gallery3d/app/PhotoPageBottomControls.java index 415111fb9..24b8ceb7e 100644 --- a/src/com/android/gallery3d/app/PhotoPageBottomControls.java +++ b/src/com/android/gallery3d/app/PhotoPageBottomControls.java @@ -116,10 +116,11 @@ public class PhotoPageBottomControls implements OnClickListener { control.startAnimation(getControlAnimForVisibility(curVisibility)); } control.setVisibility(curVisibility ? View.VISIBLE : View.INVISIBLE); - control.requestLayout(); // Kick framework to draw the control. mControlsVisible.put(control, curVisibility); } } + // Force a layout change + mContainer.requestLayout(); // Kick framework to draw the control. } public void cleanup() { diff --git a/src/com/android/gallery3d/filtershow/FilterShowActivity.java b/src/com/android/gallery3d/filtershow/FilterShowActivity.java index 02acaeab1..1ed45eda2 100644 --- a/src/com/android/gallery3d/filtershow/FilterShowActivity.java +++ b/src/com/android/gallery3d/filtershow/FilterShowActivity.java @@ -145,6 +145,8 @@ public class FilterShowActivity extends Activity implements OnItemClickListener, private static final int SEEK_BAR_MAX = 600; private LoadBitmapTask mLoadBitmapTask; + private ImageSmallFilter mNullFxFilter; + private ImageSmallFilter mNullBorderFilter; @Override public void onCreate(Bundle savedInstanceState) { @@ -663,17 +665,17 @@ public class FilterShowActivity extends Activity implements OnItemClickListener, ImagePreset preset = new ImagePreset(getString(R.string.history_original)); // empty preset.setImageLoader(mImageLoader); - ImageSmallFilter filter = new ImageSmallFilter(this); + mNullFxFilter = new ImageSmallFilter(this); - filter.setSelected(true); - mCurrentImageSmallFilter = filter; + mNullFxFilter.setSelected(true); + mCurrentImageSmallFilter = mNullFxFilter; - filter.setImageFilter(new ImageFilterFx(null, getString(R.string.none))); + mNullFxFilter.setImageFilter(new ImageFilterFx(null, getString(R.string.none))); - filter.setController(this); - filter.setImageLoader(mImageLoader); - listFilters.addView(filter); - ImageSmallFilter previousFilter = filter; + mNullFxFilter.setController(this); + mNullFxFilter.setImageLoader(mImageLoader); + listFilters.addView(mNullFxFilter); + ImageSmallFilter previousFilter = mNullFxFilter; BitmapFactory.Options o = new BitmapFactory.Options(); o.inScaled = false; @@ -682,11 +684,12 @@ public class FilterShowActivity extends Activity implements OnItemClickListener, Bitmap b = BitmapFactory.decodeResource(getResources(), drawid[i], o); fxArray[p++] = new ImageFilterFx(b, getString(fxNameid[i])); } - + ImageSmallFilter filter; for (int i = 0; i < p; i++) { filter = new ImageSmallFilter(this); filter.setImageFilter(fxArray[i]); filter.setController(this); + filter.setNulfilter(mNullFxFilter); filter.setImageLoader(mImageLoader); listFilters.addView(filter); previousFilter = filter; @@ -717,6 +720,11 @@ public class FilterShowActivity extends Activity implements OnItemClickListener, ImageSmallFilter previousFilter = null; for (int i = 0; i < p; i++) { ImageSmallBorder filter = new ImageSmallBorder(this); + if (i == 0) { // save the first to reset it + mNullBorderFilter = filter; + } else { + filter.setNulfilter(mNullBorderFilter); + } borders[i].setName(getString(R.string.borders)); filter.setImageFilter(borders[i]); filter.setController(this); @@ -852,6 +860,9 @@ public class FilterShowActivity extends Activity implements OnItemClickListener, } private void resetHistory() { + mNullFxFilter.onClick(mNullFxFilter); + mNullBorderFilter.onClick(mNullBorderFilter); + HistoryAdapter adapter = mImageShow.getHistory(); adapter.reset(); ImagePreset original = new ImagePreset(adapter.getItem(0)); @@ -865,6 +876,7 @@ public class FilterShowActivity extends Activity implements OnItemClickListener, return new View.OnClickListener() { @Override public void onClick(View v) { + resetHistory(); } }; diff --git a/src/com/android/gallery3d/filtershow/imageshow/ImageSmallFilter.java b/src/com/android/gallery3d/filtershow/imageshow/ImageSmallFilter.java index 71a69c3f8..6a79e18a1 100644 --- a/src/com/android/gallery3d/filtershow/imageshow/ImageSmallFilter.java +++ b/src/com/android/gallery3d/filtershow/imageshow/ImageSmallFilter.java @@ -45,6 +45,7 @@ public class ImageSmallFilter extends ImageShow implements View.OnClickListener protected static int mBackgroundColor = Color.BLUE; protected final int mSelectedBackgroundColor = Color.WHITE; protected final int mTextColor = Color.WHITE; + private ImageSmallFilter mNullFilter; public static void setMargin(int value) { mMargin = value; @@ -100,13 +101,32 @@ public class ImageSmallFilter extends ImageShow implements View.OnClickListener setMeasuredDimension(parentHeight - h, parentHeight); } + /** + * Setting the nullFilter implies that the behavior of the button is toggle + * + * @param nullFilter + */ + public void setNulfilter(ImageSmallFilter nullFilter) { + mNullFilter = nullFilter; + } + @Override public void onClick(View v) { if (mController != null) { if (mImageFilter != null) { - mController.useImageFilter(this, mImageFilter, mSetBorder); + if (mIsSelected && mNullFilter != null) { + mNullFilter.onClick(v); + } + else { + mController.useImageFilter(this, mImageFilter, mSetBorder); + } } else if (mImagePreset != null) { - mController.useImagePreset(this, mImagePreset); + if (mIsSelected && mNullFilter != null) { + mNullFilter.onClick(v); + } + else { + mController.useImagePreset(this, mImagePreset); + } } } } diff --git a/src/com/android/gallery3d/ui/SurfaceTextureScreenNail.java b/src/com/android/gallery3d/ui/SurfaceTextureScreenNail.java index 7cb894845..ceed71abe 100644 --- a/src/com/android/gallery3d/ui/SurfaceTextureScreenNail.java +++ b/src/com/android/gallery3d/ui/SurfaceTextureScreenNail.java @@ -85,6 +85,13 @@ public abstract class SurfaceTextureScreenNail implements ScreenNail, mHeight = height; } + public void resizeTexture() { + if (mExtTexture != null) { + mExtTexture.setSize(mWidth, mHeight); + setDefaultBufferSize(mSurfaceTexture, mWidth, mHeight); + } + } + @Override public int getWidth() { return mWidth; diff --git a/src/com/android/gallery3d/ui/TiledTexture.java b/src/com/android/gallery3d/ui/TiledTexture.java index 8e26221bc..ce3fcc617 100644 --- a/src/com/android/gallery3d/ui/TiledTexture.java +++ b/src/com/android/gallery3d/ui/TiledTexture.java @@ -36,8 +36,8 @@ import java.util.ArrayList; // upload the whole bitmap but we reduce the time of uploading each tile // so it make the animation more smooth and prevents jank. public class TiledTexture implements Texture { - private static final int CONTENT_SIZE = 256; - private static final int BORDER_SIZE = 0; + private static final int CONTENT_SIZE = 254; + private static final int BORDER_SIZE = 1; private static final int TILE_SIZE = CONTENT_SIZE + 2 * BORDER_SIZE; private static final int INIT_CAPACITY = 8; @@ -50,6 +50,7 @@ public class TiledTexture implements Texture { private static Bitmap sUploadBitmap; private static Canvas sCanvas; + private static Paint sBitmapPaint; private static Paint sPaint; private int mUploadIndex = 0; @@ -128,9 +129,9 @@ public class TiledTexture implements Texture { protected Bitmap onGetBitmap() { int x = BORDER_SIZE - offsetX; int y = BORDER_SIZE - offsetY; - int r = bitmap.getWidth() - x; - int b = bitmap.getHeight() - y ; - sCanvas.drawBitmap(bitmap, x, y, null); + int r = bitmap.getWidth() + x; + int b = bitmap.getHeight() + y ; + sCanvas.drawBitmap(bitmap, x, y, sBitmapPaint); bitmap = null; // draw borders if need @@ -220,15 +221,18 @@ public class TiledTexture implements Texture { public static void freeResources() { sUploadBitmap = null; sCanvas = null; + sBitmapPaint = null; sPaint = null; } public static void prepareResources() { sUploadBitmap = Bitmap.createBitmap(TILE_SIZE, TILE_SIZE, Config.ARGB_8888); sCanvas = new Canvas(sUploadBitmap); - sPaint = new Paint(Paint.FILTER_BITMAP_FLAG); + sBitmapPaint = new Paint(Paint.FILTER_BITMAP_FLAG); + sBitmapPaint.setXfermode(new PorterDuffXfermode(Mode.SRC)); + sPaint = new Paint(); + sPaint.setXfermode(new PorterDuffXfermode(Mode.SRC)); sPaint.setColor(Color.TRANSPARENT); - sPaint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN)); } // We want to draw the "source" on the "target". |