/*
|
* Copyright (C) 2015 The Android Open Source Project
|
*
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
* you may not use this file except in compliance with the License.
|
* You may obtain a copy of the License at
|
*
|
* http://www.apache.org/licenses/LICENSE-2.0
|
*
|
* Unless required by applicable law or agreed to in writing, software
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
* See the License for the specific language governing permissions and
|
* limitations under the License.
|
*/
|
|
package com.android.camera.one;
|
|
import com.android.camera.async.Observable;
|
import com.android.camera.async.Observables;
|
import com.android.camera.device.CameraId;
|
import com.android.camera.hardware.HardwareSpec;
|
import com.android.camera.one.OneCamera.Facing;
|
import com.android.camera.settings.Keys;
|
import com.android.camera.settings.ResolutionSetting;
|
import com.android.camera.settings.SettingObserver;
|
import com.android.camera.settings.SettingsManager;
|
import com.android.camera.util.Size;
|
import com.google.common.base.Function;
|
|
/**
|
* Contains related settings to configure a camera for a particular type of
|
* capture.
|
*/
|
public class OneCameraCaptureSetting {
|
private final Size mCaptureSize;
|
private final Observable<OneCamera.PhotoCaptureParameters.Flash> mFlashSetting;
|
private final Observable<Integer> mExposureSetting;
|
private final Observable<Boolean> mHdrSceneSetting;
|
private final boolean mIsHdrPlusEnabled;
|
|
public static OneCameraCaptureSetting create(
|
Size pictureSize,
|
SettingsManager settingsManager,
|
final HardwareSpec hardwareSpec,
|
String cameraSettingScope,
|
boolean isHdrPlusEnabled) {
|
Observable<OneCamera.PhotoCaptureParameters.Flash> flashSetting;
|
if (hardwareSpec.isFlashSupported()) {
|
flashSetting = new FlashSetting(SettingObserver.ofString(
|
settingsManager, cameraSettingScope, Keys.KEY_FLASH_MODE));
|
} else {
|
flashSetting = new FlashSetting(Observables.of("off"));
|
}
|
Observable<Integer> exposureSetting = SettingObserver.ofInteger(
|
settingsManager, cameraSettingScope, Keys.KEY_EXPOSURE);
|
Observable<Boolean> hdrSceneSetting;
|
if (hardwareSpec.isHdrSupported()) {
|
hdrSceneSetting = SettingObserver.ofBoolean(settingsManager,
|
SettingsManager.SCOPE_GLOBAL, Keys.KEY_CAMERA_HDR);
|
} else {
|
hdrSceneSetting = Observables.of(false);
|
}
|
return new OneCameraCaptureSetting(
|
pictureSize,
|
flashSetting,
|
exposureSetting,
|
hdrSceneSetting,
|
isHdrPlusEnabled);
|
}
|
|
private OneCameraCaptureSetting(
|
Size captureSize,
|
Observable<OneCamera.PhotoCaptureParameters.Flash> flashSetting,
|
Observable<Integer> exposureSetting,
|
Observable<Boolean> hdrSceneSetting,
|
boolean isHdrPlusEnabled) {
|
mCaptureSize = captureSize;
|
mFlashSetting = flashSetting;
|
mExposureSetting = exposureSetting;
|
mHdrSceneSetting = hdrSceneSetting;
|
mIsHdrPlusEnabled = isHdrPlusEnabled;
|
}
|
|
public Size getCaptureSize() {
|
return mCaptureSize;
|
}
|
|
public Observable<OneCamera.PhotoCaptureParameters.Flash> getFlashSetting() {
|
return mFlashSetting;
|
}
|
|
public Observable<Integer> getExposureSetting() {
|
return mExposureSetting;
|
}
|
|
public Observable<Boolean> getHdrSceneSetting() {
|
return mHdrSceneSetting;
|
}
|
|
public boolean isHdrPlusEnabled() {
|
return mIsHdrPlusEnabled;
|
}
|
}
|