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);
}
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;
}
}
}
}
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);
}
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;
}
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);
}
Aggregations