Search in sources :

Example 1 with Size

use of com.journeyapps.barcodescanner.Size in project zxing-android-embedded by journeyapps.

the class FitCenterStrategy method scalePreview.

/**
     * Scale the preview to cover the viewfinder, then center it.
     *
     * Aspect ratio is preserved.
     *
     * @param previewSize the size of the preview (camera), in current display orientation
     * @param viewfinderSize the size of the viewfinder (display), in current display orientation
     * @return a rect placing the preview
     */
public Rect scalePreview(Size previewSize, Size viewfinderSize) {
    // We avoid scaling if feasible.
    Size scaledPreview = previewSize.scaleFit(viewfinderSize);
    Log.i(TAG, "Preview: " + previewSize + "; Scaled: " + scaledPreview + "; Want: " + viewfinderSize);
    int dx = (scaledPreview.width - viewfinderSize.width) / 2;
    int dy = (scaledPreview.height - viewfinderSize.height) / 2;
    return new Rect(-dx, -dy, scaledPreview.width - dx, scaledPreview.height - dy);
}
Also used : Rect(android.graphics.Rect) Size(com.journeyapps.barcodescanner.Size)

Example 2 with Size

use of com.journeyapps.barcodescanner.Size in project zxing-android-embedded by journeyapps.

the class LegacyPreviewScalingStrategy method scale.

/**
     * Scale from so that to.fitsIn(size). Tries to scale by powers of two, or by 3/2. Aspect ratio
     * is preserved.
     *
     * These scaling factors will theoretically result in fast scaling with minimal quality loss.
     *
     * TODO: confirm whether or not this is the case in practice.
     *
     * @param from the start size
     * @param to   the minimum desired size
     * @return the scaled size
     */
public static Size scale(Size from, Size to) {
    Size current = from;
    if (!to.fitsIn(current)) {
        // Scale up
        while (true) {
            Size scaled150 = current.scale(3, 2);
            Size scaled200 = current.scale(2, 1);
            if (to.fitsIn(scaled150)) {
                // Scale by 3/2
                return scaled150;
            } else if (to.fitsIn(scaled200)) {
                // Scale by 2/1
                return scaled200;
            } else {
                // Scale by 2/1 and continue
                current = scaled200;
            }
        }
    } else {
        // Scale down
        while (true) {
            Size scaled66 = current.scale(2, 3);
            Size scaled50 = current.scale(1, 2);
            if (!to.fitsIn(scaled50)) {
                if (to.fitsIn(scaled66)) {
                    // Scale by 2/3
                    return scaled66;
                } else {
                    // No more downscaling
                    return current;
                }
            } else {
                // Scale by 1/2
                current = scaled50;
            }
        }
    }
}
Also used : Size(com.journeyapps.barcodescanner.Size)

Example 3 with Size

use of com.journeyapps.barcodescanner.Size in project zxing-android-embedded by journeyapps.

the class LegacyPreviewScalingStrategy method scalePreview.

/**
     * Scale the preview to cover the viewfinder, then center it.
     *
     * Aspect ratio is preserved.
     *
     * @param previewSize the size of the preview (camera), in current display orientation
     * @param viewfinderSize the size of the viewfinder (display), in current display orientation
     * @return a rect placing the preview
     */
public Rect scalePreview(Size previewSize, Size viewfinderSize) {
    // We avoid scaling if feasible.
    Size scaledPreview = scale(previewSize, viewfinderSize);
    Log.i(TAG, "Preview: " + previewSize + "; Scaled: " + scaledPreview + "; Want: " + viewfinderSize);
    int dx = (scaledPreview.width - viewfinderSize.width) / 2;
    int dy = (scaledPreview.height - viewfinderSize.height) / 2;
    return new Rect(-dx, -dy, scaledPreview.width - dx, scaledPreview.height - dy);
}
Also used : Rect(android.graphics.Rect) Size(com.journeyapps.barcodescanner.Size)

Example 4 with Size

use of com.journeyapps.barcodescanner.Size in project zxing-android-embedded by journeyapps.

the class CameraManager method getPreviewSizes.

private static List<Size> getPreviewSizes(Camera.Parameters parameters) {
    List<Camera.Size> rawSupportedSizes = parameters.getSupportedPreviewSizes();
    List<Size> previewSizes = new ArrayList<>();
    if (rawSupportedSizes == null) {
        Camera.Size defaultSize = parameters.getPreviewSize();
        if (defaultSize != null) {
            // Work around potential platform bugs
            previewSizes.add(new Size(defaultSize.width, defaultSize.height));
        }
        return previewSizes;
    }
    for (Camera.Size size : rawSupportedSizes) {
        previewSizes.add(new Size(size.width, size.height));
    }
    return previewSizes;
}
Also used : Size(com.journeyapps.barcodescanner.Size) ArrayList(java.util.ArrayList) Camera(android.hardware.Camera)

Example 5 with Size

use of com.journeyapps.barcodescanner.Size in project zxing-android-embedded by journeyapps.

the class CameraManager method setParameters.

private void setParameters() {
    try {
        this.rotationDegrees = calculateDisplayRotation();
        setCameraDisplayOrientation(rotationDegrees);
    } catch (Exception e) {
        Log.w(TAG, "Failed to set rotation.");
    }
    try {
        setDesiredParameters(false);
    } catch (Exception e) {
        // Failed, use safe mode
        try {
            setDesiredParameters(true);
        } catch (Exception e2) {
            // Well, darn. Give up
            Log.w(TAG, "Camera rejected even safe-mode parameters! No configuration");
        }
    }
    Camera.Size realPreviewSize = camera.getParameters().getPreviewSize();
    if (realPreviewSize == null) {
        previewSize = requestedPreviewSize;
    } else {
        previewSize = new Size(realPreviewSize.width, realPreviewSize.height);
    }
    cameraPreviewCallback.setResolution(previewSize);
}
Also used : Size(com.journeyapps.barcodescanner.Size) Camera(android.hardware.Camera) IOException(java.io.IOException)

Aggregations

Size (com.journeyapps.barcodescanner.Size)8 Rect (android.graphics.Rect)3 Camera (android.hardware.Camera)2 IOException (java.io.IOException)1 ArrayList (java.util.ArrayList)1