/*
* Artcodes recognises a different marker scheme that allows the
* creation of aesthetically pleasing, even beautiful, codes.
* Copyright (C) 2013-2016 The University of Nottingham
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package uk.ac.horizon.artcodes.camera;
import android.graphics.ImageFormat;
import android.hardware.Camera;
public class CameraInfo
{
private final int rotation;
private final int imageWidth;
private final int imageHeight;
private final int imageDepth;
private final boolean frontFacing;
@SuppressWarnings("deprecation")
public CameraInfo(final Camera.CameraInfo cameraInfo, final Camera.Parameters parameters, final int deviceRotation)
{
frontFacing = cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT;
imageWidth = parameters.getPreviewSize().width;
imageHeight = parameters.getPreviewSize().height;
imageDepth = ImageFormat.getBitsPerPixel(parameters.getPreviewFormat());
rotation = getRotation(cameraInfo, deviceRotation);
}
@SuppressWarnings("deprecation")
private int getRotation(Camera.CameraInfo info, int deviceRotation)
{
int rotation;
if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT)
{
rotation = (info.orientation + deviceRotation) % 360;
rotation = (360 - rotation) % 360; // compensate the mirror
}
else
{ // back-facing
rotation = (info.orientation - deviceRotation + 360) % 360;
}
return rotation;
}
public int getImageWidth()
{
return imageWidth;
}
public int getImageHeight()
{
return imageHeight;
}
public int getImageDepth()
{
return imageDepth;
}
public int getRotation()
{
return rotation;
}
public boolean isFrontFacing()
{
return frontFacing;
}
}