mirror of
https://github.com/zxing/zxing.git
synced 2024-11-09 20:44:03 -08:00
More rational sizing of reticle (max size 50% of screen dimension) but also allow larger reticles to accomodate very high res new devices like the S4
git-svn-id: https://zxing.googlecode.com/svn/trunk@2709 59b500cc-1b3d-0410-9834-0bbf25fbcc57
This commit is contained in:
parent
8fbcb53126
commit
4cbc515401
|
@ -41,8 +41,8 @@ public final class CameraManager {
|
|||
|
||||
private static final int MIN_FRAME_WIDTH = 240;
|
||||
private static final int MIN_FRAME_HEIGHT = 240;
|
||||
private static final int MAX_FRAME_WIDTH = 600;
|
||||
private static final int MAX_FRAME_HEIGHT = 400;
|
||||
private static final int MAX_FRAME_WIDTH = 960; // = 1920/2
|
||||
private static final int MAX_FRAME_HEIGHT = 540; // = 1080/2
|
||||
|
||||
private final Context context;
|
||||
private final CameraConfigurationManager configManager;
|
||||
|
@ -212,18 +212,10 @@ public final class CameraManager {
|
|||
// Called early, before init even finished
|
||||
return null;
|
||||
}
|
||||
int width = screenResolution.x * 3 / 4;
|
||||
if (width < MIN_FRAME_WIDTH) {
|
||||
width = MIN_FRAME_WIDTH;
|
||||
} else if (width > MAX_FRAME_WIDTH) {
|
||||
width = MAX_FRAME_WIDTH;
|
||||
}
|
||||
int height = screenResolution.y * 3 / 4;
|
||||
if (height < MIN_FRAME_HEIGHT) {
|
||||
height = MIN_FRAME_HEIGHT;
|
||||
} else if (height > MAX_FRAME_HEIGHT) {
|
||||
height = MAX_FRAME_HEIGHT;
|
||||
}
|
||||
|
||||
int width = findDesiredDimensionInRange(screenResolution.x, MIN_FRAME_WIDTH, MAX_FRAME_WIDTH);
|
||||
int height = findDesiredDimensionInRange(screenResolution.y, MIN_FRAME_HEIGHT, MAX_FRAME_HEIGHT);
|
||||
|
||||
int leftOffset = (screenResolution.x - width) / 2;
|
||||
int topOffset = (screenResolution.y - height) / 2;
|
||||
framingRect = new Rect(leftOffset, topOffset, leftOffset + width, topOffset + height);
|
||||
|
@ -231,6 +223,17 @@ public final class CameraManager {
|
|||
}
|
||||
return framingRect;
|
||||
}
|
||||
|
||||
private static int findDesiredDimensionInRange(int resolution, int hardMin, int hardMax) {
|
||||
int dim = resolution / 2; // Target 50% of each dimension
|
||||
if (dim < hardMin) {
|
||||
return hardMin;
|
||||
}
|
||||
if (dim > hardMax) {
|
||||
return hardMax;
|
||||
}
|
||||
return dim;
|
||||
}
|
||||
|
||||
/**
|
||||
* Like {@link #getFramingRect} but coordinates are in terms of the preview frame,
|
||||
|
|
Loading…
Reference in a new issue