parent
4facd60dfd
commit
314ae7f0fe
@ -0,0 +1,112 @@ |
||||
package com.otaliastudios.cameraview.engine.mappers; |
||||
|
||||
import android.hardware.Camera; |
||||
import android.os.Build; |
||||
|
||||
import com.otaliastudios.cameraview.controls.Control; |
||||
import com.otaliastudios.cameraview.controls.Facing; |
||||
import com.otaliastudios.cameraview.controls.Flash; |
||||
import com.otaliastudios.cameraview.controls.Hdr; |
||||
import com.otaliastudios.cameraview.controls.WhiteBalance; |
||||
|
||||
import java.util.HashMap; |
||||
import java.util.Map; |
||||
|
||||
import androidx.annotation.NonNull; |
||||
import androidx.annotation.Nullable; |
||||
|
||||
/** |
||||
* A Mapper maps camera engine constants to CameraView constants. |
||||
*/ |
||||
public class Camera1Mapper { |
||||
|
||||
private static Camera1Mapper sInstance; |
||||
|
||||
@NonNull |
||||
public static Camera1Mapper get() { |
||||
if (sInstance == null) { |
||||
sInstance = new Camera1Mapper(); |
||||
} |
||||
return sInstance; |
||||
} |
||||
|
||||
private static final Map<Flash, String> FLASH = new HashMap<>(); |
||||
private static final Map<WhiteBalance, String> WB = new HashMap<>(); |
||||
private static final Map<Facing, Integer> FACING = new HashMap<>(); |
||||
private static final Map<Hdr, String> HDR = new HashMap<>(); |
||||
|
||||
static { |
||||
FLASH.put(Flash.OFF, Camera.Parameters.FLASH_MODE_OFF); |
||||
FLASH.put(Flash.ON, Camera.Parameters.FLASH_MODE_ON); |
||||
FLASH.put(Flash.AUTO, Camera.Parameters.FLASH_MODE_AUTO); |
||||
FLASH.put(Flash.TORCH, Camera.Parameters.FLASH_MODE_TORCH); |
||||
FACING.put(Facing.BACK, Camera.CameraInfo.CAMERA_FACING_BACK); |
||||
FACING.put(Facing.FRONT, Camera.CameraInfo.CAMERA_FACING_FRONT); |
||||
WB.put(WhiteBalance.AUTO, Camera.Parameters.WHITE_BALANCE_AUTO); |
||||
WB.put(WhiteBalance.INCANDESCENT, Camera.Parameters.WHITE_BALANCE_INCANDESCENT); |
||||
WB.put(WhiteBalance.FLUORESCENT, Camera.Parameters.WHITE_BALANCE_FLUORESCENT); |
||||
WB.put(WhiteBalance.DAYLIGHT, Camera.Parameters.WHITE_BALANCE_DAYLIGHT); |
||||
WB.put(WhiteBalance.CLOUDY, Camera.Parameters.WHITE_BALANCE_CLOUDY_DAYLIGHT); |
||||
HDR.put(Hdr.OFF, Camera.Parameters.SCENE_MODE_AUTO); |
||||
if (Build.VERSION.SDK_INT >= 17) { |
||||
HDR.put(Hdr.ON, Camera.Parameters.SCENE_MODE_HDR); |
||||
} else { |
||||
HDR.put(Hdr.ON, "hdr"); |
||||
} |
||||
} |
||||
|
||||
private Camera1Mapper() {} |
||||
|
||||
@NonNull |
||||
public String map(@NonNull Flash flash) { |
||||
//noinspection ConstantConditions
|
||||
return FLASH.get(flash); |
||||
} |
||||
|
||||
public int map(@NonNull Facing facing) { |
||||
//noinspection ConstantConditions
|
||||
return FACING.get(facing); |
||||
} |
||||
|
||||
@NonNull |
||||
public String map(@NonNull WhiteBalance whiteBalance) { |
||||
//noinspection ConstantConditions
|
||||
return WB.get(whiteBalance); |
||||
} |
||||
|
||||
@NonNull |
||||
public String map(@NonNull Hdr hdr) { |
||||
//noinspection ConstantConditions
|
||||
return HDR.get(hdr); |
||||
} |
||||
|
||||
@Nullable |
||||
public Flash unmapFlash(@NonNull String cameraConstant) { |
||||
return reverseLookup(FLASH, cameraConstant); |
||||
} |
||||
|
||||
@Nullable |
||||
public Facing unmapFacing(int cameraConstant) { |
||||
return reverseLookup(FACING, cameraConstant); |
||||
} |
||||
|
||||
@Nullable |
||||
public WhiteBalance unmapWhiteBalance(@NonNull String cameraConstant) { |
||||
return reverseLookup(WB, cameraConstant); |
||||
} |
||||
|
||||
@Nullable |
||||
public Hdr unmapHdr(@NonNull String cameraConstant) { |
||||
return reverseLookup(HDR, cameraConstant); |
||||
} |
||||
|
||||
@Nullable |
||||
private <C extends Control, T> C reverseLookup(@NonNull Map<C, T> map, @NonNull T object) { |
||||
for (C value : map.keySet()) { |
||||
if (object.equals(map.get(value))) { |
||||
return value; |
||||
} |
||||
} |
||||
return null; |
||||
} |
||||
} |
Loading…
Reference in new issue