Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 466a2f28 authored by Matt Casey's avatar Matt Casey
Browse files

Set initial crop handles to original page location

Treat the image tile set's 0 coordinate as the top and use pageSize to
compute the bottom of the original screenshot.

Bug: 179907401
Test: Verify potisitioning when scrolling from the top, bottom and
middle.

Change-Id: I44fca11474221b5d4249483bf22a88ede5e8104e
parent 156864ee
Loading
Loading
Loading
Loading
+11 −8
Original line number Diff line number Diff line
@@ -136,7 +136,7 @@ public class CropView extends View {
            case MotionEvent.ACTION_UP:
                if (mCurrentDraggingBoundary != CropBoundary.NONE) {
                    // Commit the delta to the stored crop values.
                    commitDeltas();
                    commitDeltas(mCurrentDraggingBoundary);
                    updateListener(event);
                }
        }
@@ -184,12 +184,12 @@ public class CropView extends View {
        animator.addListener(new AnimatorListenerAdapter() {
            @Override
            public void onAnimationEnd(Animator animation) {
                commitDeltas();
                commitDeltas(boundary);
            }

            @Override
            public void onAnimationCancel(Animator animation) {
                commitDeltas();
                commitDeltas(boundary);
            }
        });
        animator.setFloatValues(0f, 1f);
@@ -228,12 +228,15 @@ public class CropView extends View {
        mCropInteractionListener = listener;
    }

    private void commitDeltas() {
    private void commitDeltas(CropBoundary boundary) {
        if (boundary == CropBoundary.TOP) {
            mTopCrop += mTopDelta;
        mBottomCrop += mBottomDelta;
            mTopDelta = 0;
        } else if (boundary == CropBoundary.BOTTOM) {
            mBottomCrop += mBottomDelta;
            mBottomDelta = 0;
        }
    }

    private void updateListener(MotionEvent event) {
        if (mCropInteractionListener != null) {
+10 −2
Original line number Diff line number Diff line
@@ -339,14 +339,22 @@ public class LongScreenshotActivity extends Activity {
                    }

                    @Override
                    public void onComplete(ImageTileSet imageTileSet) {
                    public void onComplete(ImageTileSet imageTileSet, int pageSize) {
                        Log.i(TAG, "Got tiles " + imageTileSet.getWidth() + " x "
                                + imageTileSet.getHeight());
                        mPreview.setImageDrawable(imageTileSet.getDrawable());
                        updateCropLocation();
                        mMagnifierView.setDrawable(imageTileSet.getDrawable(),
                                imageTileSet.getWidth(), imageTileSet.getHeight());
                        mCropView.animateBoundaryTo(CropView.CropBoundary.BOTTOM, 0.5f);
                        // Original boundaries go from the image tile set's y=0 to y=pageSize, so
                        // we animate to that as a starting crop position.
                        float topFraction = Math.max(0,
                                -imageTileSet.getTop() / (float) imageTileSet.getHeight());
                        float bottomFraction = Math.min(1f,
                                1 - (imageTileSet.getBottom() - pageSize)
                                        / (float) imageTileSet.getHeight());
                        mCropView.animateBoundaryTo(CropView.CropBoundary.TOP, topFraction);
                        mCropView.animateBoundaryTo(CropView.CropBoundary.BOTTOM, bottomFraction);
                        mBackgroundExecutor.execute(() -> saveCacheBitmap(imageTileSet));
                    }
                });
+2 −2
Original line number Diff line number Diff line
@@ -164,7 +164,7 @@ public class ScrollCaptureController {
        if (mImageTileSet.isEmpty()) {
            mCaptureCallback.onError();
        } else {
            mCaptureCallback.onComplete(mImageTileSet);
            mCaptureCallback.onComplete(mImageTileSet, session.getPageHeight());
        }
    }

@@ -172,7 +172,7 @@ public class ScrollCaptureController {
     * Callback for image capture completion or error.
     */
    public interface ScrollCaptureCallback {
        void onComplete(ImageTileSet imageTileSet);
        void onComplete(ImageTileSet imageTileSet, int pageHeight);
        void onError();
    }