diff options
author | junjiez <junjiez@codeaurora.org> | 2017-07-13 17:35:49 +0800 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2017-07-26 00:29:59 -0700 |
commit | f18663eae3f80a46bdaa1a140abd2799577bb739 (patch) | |
tree | 490a263637642c89df6af2bccabc1deb0e20a434 | |
parent | ef407574ede2694755abbd5a872936623030c1d7 (diff) | |
download | android_packages_apps_Snap-f18663eae3f80a46bdaa1a140abd2799577bb739.tar.gz android_packages_apps_Snap-f18663eae3f80a46bdaa1a140abd2799577bb739.tar.bz2 android_packages_apps_Snap-f18663eae3f80a46bdaa1a140abd2799577bb739.zip |
SnapdragonCamera:modify RTB UI
1. reduce the size of the bokeh focus
circle.
2. hide bokeh focus circle and seekbar
when it's not needed.
3. update the location of the seekbar
according the location of the bokeh
focus circle
4. convert depth map buffer to rgb then
compress to jpeg
Change-Id: Ibfa4d1d90413939566129247a23325f941507691
-rwxr-xr-x | res/drawable-hdpi/bokeh_shutter_01.png | bin | 42999 -> 32188 bytes | |||
-rwxr-xr-x | res/drawable-hdpi/bokeh_shutter_02.png | bin | 43225 -> 32496 bytes | |||
-rwxr-xr-x | res/drawable-hdpi/bokeh_shutter_03.png | bin | 42931 -> 32437 bytes | |||
-rwxr-xr-x | res/drawable-hdpi/bokeh_shutter_04.png | bin | 42412 -> 32099 bytes | |||
-rwxr-xr-x | res/drawable-hdpi/bokeh_shutter_05.png | bin | 41767 -> 31629 bytes | |||
-rwxr-xr-x | res/drawable-hdpi/bokeh_shutter_06.png | bin | 41226 -> 31204 bytes | |||
-rwxr-xr-x | res/drawable-hdpi/bokeh_shutter_07.png | bin | 40408 -> 30857 bytes | |||
-rwxr-xr-x | src/com/android/camera/PhotoModule.java | 41 | ||||
-rw-r--r-- | src/com/android/camera/PhotoUI.java | 20 | ||||
-rwxr-xr-x | src/com/android/camera/ui/PieRenderer.java | 21 | ||||
-rwxr-xr-x | src/org/codeaurora/snapcam/filter/GDepth.java | 6 |
11 files changed, 62 insertions, 26 deletions
diff --git a/res/drawable-hdpi/bokeh_shutter_01.png b/res/drawable-hdpi/bokeh_shutter_01.png Binary files differindex 051bc372d..0baccbddf 100755 --- a/res/drawable-hdpi/bokeh_shutter_01.png +++ b/res/drawable-hdpi/bokeh_shutter_01.png diff --git a/res/drawable-hdpi/bokeh_shutter_02.png b/res/drawable-hdpi/bokeh_shutter_02.png Binary files differindex ccbf3361a..3d28bf7bb 100755 --- a/res/drawable-hdpi/bokeh_shutter_02.png +++ b/res/drawable-hdpi/bokeh_shutter_02.png diff --git a/res/drawable-hdpi/bokeh_shutter_03.png b/res/drawable-hdpi/bokeh_shutter_03.png Binary files differindex 861e07972..6970987e2 100755 --- a/res/drawable-hdpi/bokeh_shutter_03.png +++ b/res/drawable-hdpi/bokeh_shutter_03.png diff --git a/res/drawable-hdpi/bokeh_shutter_04.png b/res/drawable-hdpi/bokeh_shutter_04.png Binary files differindex dc9ff6864..c912d8639 100755 --- a/res/drawable-hdpi/bokeh_shutter_04.png +++ b/res/drawable-hdpi/bokeh_shutter_04.png diff --git a/res/drawable-hdpi/bokeh_shutter_05.png b/res/drawable-hdpi/bokeh_shutter_05.png Binary files differindex 89bd851ad..a34e09a52 100755 --- a/res/drawable-hdpi/bokeh_shutter_05.png +++ b/res/drawable-hdpi/bokeh_shutter_05.png diff --git a/res/drawable-hdpi/bokeh_shutter_06.png b/res/drawable-hdpi/bokeh_shutter_06.png Binary files differindex 66a6c7a94..759aa0783 100755 --- a/res/drawable-hdpi/bokeh_shutter_06.png +++ b/res/drawable-hdpi/bokeh_shutter_06.png diff --git a/res/drawable-hdpi/bokeh_shutter_07.png b/res/drawable-hdpi/bokeh_shutter_07.png Binary files differindex 021f32d18..69ffad8a0 100755 --- a/res/drawable-hdpi/bokeh_shutter_07.png +++ b/res/drawable-hdpi/bokeh_shutter_07.png diff --git a/src/com/android/camera/PhotoModule.java b/src/com/android/camera/PhotoModule.java index 292349e31..eb8a2f5e5 100755 --- a/src/com/android/camera/PhotoModule.java +++ b/src/com/android/camera/PhotoModule.java @@ -1586,18 +1586,37 @@ public class PhotoModule } String mPictureFormat = mParameters.get(KEY_PICTURE_FORMAT); Log.d(TAG, "capture:" + title + "." + mPictureFormat); - if (mIsBokehMode && !PERSIST_BOKEH_DEBUG_CHECK && mSaveBokehXmp) { - if (jpegData != null && mCallTime == 3) { - if (mOrigin != null && mBokeh != null) { - GImage gImage = new GImage(mOrigin, "image/jpeg"); - GDepth.DepthMap map= new GDepth.DepthMap(1280,960); - map.buffer = mDepth; - map.roi = new Rect(0,0,width,height); + if (mIsBokehMode) { + if (!PERSIST_BOKEH_DEBUG_CHECK && mSaveBokehXmp) { + if (jpegData != null && mCallTime == 3) { + if (mOrigin != null && mBokeh != null) { + GImage gImage = new GImage(mOrigin, "image/jpeg"); + GDepth.DepthMap map= new GDepth.DepthMap(1280,960); + map.buffer = mDepth; + map.roi = new Rect(0,0,width,height); + GDepth gDepth = GDepth.createGDepth(map); + mActivity.getMediaSaveService().addXmpImage(mBokeh,gImage, + gDepth,"bokeh_"+title,date,mLocation,width,height, + orientation,exif,mOnMediaSavedListener, + mContentResolver,mPictureFormat); + } + } + } else { + if (mCallTime == 3) { + GDepth.DepthMap map = new GDepth.DepthMap(1280, 960); + map.buffer = jpegData; + map.roi = new Rect(0, 0, width, height); GDepth gDepth = GDepth.createGDepth(map); - mActivity.getMediaSaveService().addXmpImage(mBokeh,gImage, - gDepth,"bokeh_"+title,date,mLocation,width,height, - orientation,exif,mOnMediaSavedListener, - mContentResolver,mPictureFormat); + byte[] depth = gDepth.getDepthJpeg(); + mActivity.getMediaSaveService().addImage(depth, + title, date, mLocation, width, height, + orientation, exif, mOnMediaSavedListener, + mContentResolver, mPictureFormat); + } else { + mActivity.getMediaSaveService().addImage( + jpegData, title, date, mLocation, width, height, + orientation, exif, mOnMediaSavedListener, + mContentResolver, mPictureFormat); } } } else { diff --git a/src/com/android/camera/PhotoUI.java b/src/com/android/camera/PhotoUI.java index 29d3c3df2..c4fd11aa3 100644 --- a/src/com/android/camera/PhotoUI.java +++ b/src/com/android/camera/PhotoUI.java @@ -162,6 +162,7 @@ public class PhotoUI implements PieListener, private int mOrientation; private float mScreenBrightness = 0.0f; + private boolean mIsBokehMode = false; public enum SURFACE_STATUS { HIDE, @@ -1130,6 +1131,9 @@ public class PhotoUI implements PieListener, } // Close module selection menu when pie menu is opened. mSwitcher.closePopup(); + if (mIsBokehMode && mBlurDegreeProgressBar != null) { + mBlurDegreeProgressBar.setVisibility(View.VISIBLE); + } } @Override @@ -1138,14 +1142,23 @@ public class PhotoUI implements PieListener, if (mFaceView != null) { mFaceView.setBlockDraw(false); } + if (mIsBokehMode && mBlurDegreeProgressBar != null) { + mBlurDegreeProgressBar.setVisibility(View.GONE); + } } @Override public void onPieMoved(int centerX, int centerY) { Size bokehCircle = mPieRenderer.getBokehFocusSize(); - mBlurDegreeProgressBar.setX(centerX - bokehCircle.getWidth()/2); - mBlurDegreeProgressBar.setY(centerY + bokehCircle.getHeight()/2); - if (mBlurDegreeProgressBar.getVisibility() != View.VISIBLE) { + int y; + if (centerY > mPieRenderer.getHeight()/2) { + y = centerY - bokehCircle.getHeight()/2 - mBlurDegreeProgressBar.getHeight(); + } else { + y = centerY + bokehCircle.getHeight()/2; + } + mBlurDegreeProgressBar.setX(centerX - mBlurDegreeProgressBar.getWidth() /2); + mBlurDegreeProgressBar.setY(y); + if (mBlurDegreeProgressBar.getVisibility() != View.VISIBLE && mPieRenderer.isVisible()) { mBlurDegreeProgressBar.setVisibility(View.VISIBLE); } } @@ -1153,6 +1166,7 @@ public class PhotoUI implements PieListener, public void enableBokehRender(boolean enable) { if (mPieRenderer != null) { mPieRenderer.setBokehMode(enable); + mIsBokehMode = enable; } } diff --git a/src/com/android/camera/ui/PieRenderer.java b/src/com/android/camera/ui/PieRenderer.java index 323973301..d97616975 100755 --- a/src/com/android/camera/ui/PieRenderer.java +++ b/src/com/android/camera/ui/PieRenderer.java @@ -288,12 +288,10 @@ public class PieRenderer extends OverlayRenderer public void setBokehDegree(int degree) { if (degree >=0 && degree <= 100) { int index = (int)degree/15; - Log.d("ZJJ","index="+index); if (mBokehFocusIndex == index) return; mBokehFocusIndex = index; int resid = mBokehFocusResId.getResourceId(mBokehFocusIndex,0); - Log.d("ZJJ","resid = "+resid ); if (mBokehFocusCircle != null) { mBokehFocusCircle.recycle(); } @@ -379,11 +377,7 @@ public class PieRenderer extends OverlayRenderer mLabel.setText(""); } } - if (mIsBokehMode) { - setVisible(true); - } else { - setVisible(show); - } + setVisible(show); mHandler.sendEmptyMessage(show ? MSG_OPEN : MSG_CLOSE); } @@ -625,10 +619,10 @@ public class PieRenderer extends OverlayRenderer float sf = 0.9f + alpha * 0.1f; canvas.scale(sf, sf, mPieCenterX, mPieCenterY); } - if (mIsBokehMode) { - drawBokehFocus(canvas); - } else { - if (mState != STATE_PIE) { + if (mState != STATE_PIE) { + if (mIsBokehMode) { + drawBokehFocus(canvas); + } else { drawFocus(canvas); } } @@ -1189,12 +1183,15 @@ public class PieRenderer extends OverlayRenderer private class Disappear implements Runnable { @Override public void run() { - if (mState == STATE_PIE || mIsBokehMode) return; + if (mState == STATE_PIE) return; setVisible(false); mFocusX = mCenterX; mFocusY = mCenterY; mState = STATE_IDLE; setCircle(mFocusX, mFocusY); + if (mIsBokehMode) { + mHandler.sendEmptyMessage(MSG_CLOSE); + } mFocused = false; } } diff --git a/src/org/codeaurora/snapcam/filter/GDepth.java b/src/org/codeaurora/snapcam/filter/GDepth.java index 92c0e07f5..d3a7cb19c 100755 --- a/src/org/codeaurora/snapcam/filter/GDepth.java +++ b/src/org/codeaurora/snapcam/filter/GDepth.java @@ -77,6 +77,7 @@ public class GDepth{ private String mData; private final String mFormat = FORMAT_8_BIT; private int[] mMap; + private byte[] mGdepthJpeg; static { try { @@ -139,6 +140,7 @@ public class GDepth{ ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outputStream); byte[] jpegBytes = outputStream.toByteArray(); + mGdepthJpeg = jpegBytes; if (jpegBytes != null ) { String base64String = serializeAsBase64Str(jpegBytes); result = true; @@ -179,6 +181,10 @@ public class GDepth{ return outputStream.toByteArray(); } + public byte[] getDepthJpeg() { + return mGdepthJpeg; + } + private String serializeAsBase64Str(byte[] image) { Log.d(TAG, "serializeAsBase64Str"); return Base64.encodeToString(image, Base64.DEFAULT); |