//
//  SCManagedCaptureDevice.h
//  Snapchat
//
//  Created by Liu Liu on 4/22/15.
//  Copyright (c) 2015 Liu Liu. All rights reserved.
//

#import <SCCameraFoundation/SCManagedCaptureDevicePosition.h>
#import <SCCameraFoundation/SCManagedCaptureDeviceProtocol.h>

#import <AVFoundation/AVFoundation.h>
#import <Foundation/Foundation.h>

extern CGFloat const kSCMaxVideoZoomFactor;
extern CGFloat const kSCMinVideoZoomFactor;

@class SCManagedCaptureDevice;

@protocol SCManagedCaptureDeviceDelegate <NSObject>

@optional
- (void)managedCaptureDevice:(SCManagedCaptureDevice *)device didChangeAdjustingExposure:(BOOL)adjustingExposure;
- (void)managedCaptureDevice:(SCManagedCaptureDevice *)device didChangeExposurePoint:(CGPoint)exposurePoint;
- (void)managedCaptureDevice:(SCManagedCaptureDevice *)device didChangeFocusPoint:(CGPoint)focusPoint;

@end

@interface SCManagedCaptureDevice : NSObject <SCManagedCaptureDeviceProtocol>

@property (nonatomic, weak) id<SCManagedCaptureDeviceDelegate> delegate;

// These two class methods are thread safe
+ (instancetype)front;

+ (instancetype)back;

+ (instancetype)dualCamera;

+ (instancetype)deviceWithPosition:(SCManagedCaptureDevicePosition)position;

+ (BOOL)is1080pSupported;

+ (BOOL)isMixCaptureSupported;

+ (BOOL)isNightModeSupported;

+ (BOOL)isEnhancedNightModeSupported;

+ (CGSize)defaultActiveFormatResolution;

+ (CGSize)nightModeActiveFormatResolution;

- (BOOL)softwareZoom;

- (SCManagedCaptureDevicePosition)position;

- (BOOL)isAvailable;

@end