diff options
author | Jack Yoo <jyoo@codeaurora.org> | 2016-06-30 14:16:44 -0700 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2016-08-16 16:10:18 -0700 |
commit | 2fceef1ed0dfb3cb35062b6f6ebe8ca68e7bf87c (patch) | |
tree | 86a0cfd7ddb6ddde91dfb310d47d8f6e289f9d78 /src/com/android/camera/ui/DotsView.java | |
parent | 039e6e3a2baa4c510306d32683cf258eb8e00e10 (diff) | |
download | android_packages_apps_Snap-2fceef1ed0dfb3cb35062b6f6ebe8ca68e7bf87c.tar.gz android_packages_apps_Snap-2fceef1ed0dfb3cb35062b6f6ebe8ca68e7bf87c.tar.bz2 android_packages_apps_Snap-2fceef1ed0dfb3cb35062b6f6ebe8ca68e7bf87c.zip |
SnapdragonCamera: Bestpicture scene filter
Adding best picture selection scene filter
Change-Id: Ifa0f544e80d161eaef743d611c712d8db48e5631
CRs-Fixed: 1050663
Diffstat (limited to 'src/com/android/camera/ui/DotsView.java')
-rw-r--r-- | src/com/android/camera/ui/DotsView.java | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/src/com/android/camera/ui/DotsView.java b/src/com/android/camera/ui/DotsView.java new file mode 100644 index 000000000..f08b96713 --- /dev/null +++ b/src/com/android/camera/ui/DotsView.java @@ -0,0 +1,98 @@ +/* + * Copyright (c) 2016, The Linux Foundation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of The Linux Foundation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.android.camera.ui; + +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; +import android.util.AttributeSet; +import android.view.View; + +public class DotsView extends View { + private Paint mTargetPaint; + private int mPosition; + private float mPositionOffset; + private DotsViewItem mItems; + + public DotsView(Context context, AttributeSet attrs) { + super(context, attrs); + mTargetPaint = new Paint(); + mTargetPaint.setColor(Color.WHITE); + mTargetPaint.setStyle(Paint.Style.FILL_AND_STROKE); + } + + public void update(int position, float positionOffest) { + mPosition = position; + mPositionOffset = positionOffest; + invalidate(); + } + + public void setItems(DotsViewItem item) { + mItems = item; + } + + public void update() { + invalidate(); + } + + @Override + public void onDraw(Canvas canvas) { + if(mItems == null) { + return; + } + + int dx = canvas.getWidth()/(mItems.getTotalItemNums()+1); + int dy = canvas.getHeight()/(mItems.getTotalItemNums()+1); + int y = canvas.getHeight()/2; + float radius = Math.min(dx, dy)/2f; + for(int i=0; i < mItems.getTotalItemNums(); i++) { + if(i-1 == mPosition && mPositionOffset > 0f) { + drawDot(canvas, (i + 1) * dx, y, radius + radius * mPositionOffset, mItems.isChosen(i)); + } else if(i+1 == mPosition && mPositionOffset < 0f) { + drawDot(canvas, (i + 1) * dx, y, radius - radius*mPositionOffset, mItems.isChosen(i)); + } else if(i == mPosition) { + drawDot(canvas, (i + 1) * dx, y, radius + radius * (1 - Math.abs(mPositionOffset)), mItems.isChosen(i)); + } else { + drawDot(canvas, (i + 1) * dx, y, radius, mItems.isChosen(i)); + } + } + } + + private void drawDot(Canvas canvas, float cx, float cy, float radius, boolean isChosen) { + if(isChosen) { + mTargetPaint.setStyle(Paint.Style.FILL_AND_STROKE); + canvas.drawCircle(cx, cy, radius, mTargetPaint); + } else { + mTargetPaint.setStyle(Paint.Style.STROKE); + canvas.drawCircle(cx, cy, radius, mTargetPaint); + } + } +} |