345 lines
9.3 KiB
Objective-C
345 lines
9.3 KiB
Objective-C
#import "VVUVCUIController.h"
|
|
#import "VVUVCController.h"
|
|
|
|
|
|
|
|
|
|
@implementation VVUVCUIController
|
|
|
|
|
|
- (id) init {
|
|
//NSLog(@"%s",__func__);
|
|
if (self = [super init]) {
|
|
return self;
|
|
}
|
|
[self release];
|
|
return nil;
|
|
}
|
|
- (void) awakeFromNib {
|
|
[expElement setTitle:@"Exposure Time"];
|
|
[irisElement setTitle:@"Iris"];
|
|
[focusElement setTitle:@"Focus"];
|
|
[zoomElement setTitle:@"Zoom"];
|
|
|
|
[backlightElement setTitle:@"Backlight Compensation"];
|
|
[brightElement setTitle:@"Brightness"];
|
|
[contrastElement setTitle:@"Contrast"];
|
|
[gainElement setTitle:@"Gain"];
|
|
[powerElement setTitle:@"Power Line Frequency"];
|
|
[hueElement setTitle:@"Hue"];
|
|
[satElement setTitle:@"Saturation"];
|
|
[sharpElement setTitle:@"Sharpness"];
|
|
[gammaElement setTitle:@"Gamma"];
|
|
[wbElement setTitle:@"White Balance"];
|
|
}
|
|
- (void) dealloc {
|
|
[super dealloc];
|
|
}
|
|
|
|
|
|
- (void) controlElementChanged:(id)sender {
|
|
//NSLog(@"%s",__func__);
|
|
if (sender == expElement) {
|
|
[device setExposureTime:[sender val]];
|
|
}
|
|
else if (sender == irisElement) {
|
|
[device setIris:[sender val]];
|
|
}
|
|
else if (sender == focusElement) {
|
|
[device setFocus:[sender val]];
|
|
}
|
|
else if (sender == zoomElement) {
|
|
[device setZoom:[sender val]];
|
|
}
|
|
else if (sender == backlightElement) {
|
|
[device setBacklight:[sender val]];
|
|
}
|
|
else if (sender == brightElement) {
|
|
[device setBright:[sender val]];
|
|
}
|
|
else if (sender == contrastElement) {
|
|
[device setContrast:[sender val]];
|
|
}
|
|
else if (sender == gainElement) {
|
|
[device setGain:[sender val]];
|
|
}
|
|
else if (sender == powerElement) {
|
|
[device setPowerLine:[sender val]];
|
|
}
|
|
else if (sender == hueElement) {
|
|
[device setHue:[sender val]];
|
|
}
|
|
else if (sender == satElement) {
|
|
[device setSaturation:[sender val]];
|
|
}
|
|
else if (sender == sharpElement) {
|
|
[device setSharpness:[sender val]];
|
|
}
|
|
else if (sender == gammaElement) {
|
|
[device setGamma:[sender val]];
|
|
}
|
|
else if (sender == wbElement) {
|
|
[device setWhiteBalance:[sender val]];
|
|
}
|
|
[self _pushCameraControlStateToUI];
|
|
}
|
|
- (IBAction) buttonUsed:(id)sender {
|
|
if (sender == expPriorityButton) {
|
|
[device setAutoExposurePriority:([sender intValue]==NSOnState) ? YES : NO];
|
|
}
|
|
else if (sender == autoFocusButton) {
|
|
if ([sender intValue] == NSOnState) {
|
|
[device setAutoFocus:YES];
|
|
}
|
|
else {
|
|
[device setAutoFocus:NO];
|
|
}
|
|
[self _pushCameraControlStateToUI];
|
|
}
|
|
else if (sender == autoHueButton) {
|
|
if ([sender intValue] == NSOnState) {
|
|
[device setAutoHue:YES];
|
|
}
|
|
else {
|
|
[device setAutoHue:NO];
|
|
}
|
|
[self _pushCameraControlStateToUI];
|
|
}
|
|
else if (sender == autoWBButton) {
|
|
if ([sender intValue] == NSOnState) {
|
|
[device setAutoWhiteBalance:YES];
|
|
}
|
|
else {
|
|
[device setAutoWhiteBalance:NO];
|
|
}
|
|
[self _pushCameraControlStateToUI];
|
|
}
|
|
}
|
|
- (IBAction) popUpButtonUsed:(id)sender {
|
|
//NSLog(@"%s ... %d",__func__,[sender indexOfSelectedItem]);
|
|
if (sender == autoExpButton) {
|
|
int selectedIndex = (int)[sender indexOfSelectedItem];
|
|
if (selectedIndex == 0) {
|
|
[device setAutoExposureMode:UVC_AEMode_Manual];
|
|
}
|
|
else if (selectedIndex == 1) {
|
|
[device setAutoExposureMode:UVC_AEMode_Auto];
|
|
}
|
|
else if (selectedIndex == 2) {
|
|
[device setAutoExposureMode:UVC_AEMode_ShutterPriority];
|
|
}
|
|
else if (selectedIndex == 3) {
|
|
[device setAutoExposureMode:UVC_AEMode_AperturePriority];
|
|
}
|
|
[self _pushCameraControlStateToUI];
|
|
}
|
|
}
|
|
|
|
|
|
- (IBAction) resetToDefaults:(id)sender {
|
|
//NSLog(@"%s",__func__);
|
|
[device resetParamsToDefaults];
|
|
[self _pushCameraControlStateToUI];
|
|
}
|
|
|
|
|
|
- (void) _pushCameraControlStateToUI {
|
|
//NSLog(@"%s",__func__);
|
|
|
|
|
|
if ([device exposureTimeSupported]) {
|
|
[expElement setMin:(int)[device minExposureTime]];
|
|
[expElement setMax:(int)[device maxExposureTime]];
|
|
[expElement setVal:(int)[device exposureTime]];
|
|
}
|
|
[expElement setEnabled:[device exposureTimeSupported]];
|
|
|
|
if ([device irisSupported]) {
|
|
[irisElement setMin:(int)[device minIris]];
|
|
[irisElement setMax:(int)[device maxIris]];
|
|
[irisElement setVal:(int)[device iris]];
|
|
}
|
|
[irisElement setEnabled:[device irisSupported]];
|
|
|
|
if ([device zoomSupported]) {
|
|
[zoomElement setMin:(int)[device minZoom]];
|
|
[zoomElement setMax:(int)[device maxZoom]];
|
|
[zoomElement setVal:(int)[device zoom]];
|
|
}
|
|
[zoomElement setEnabled:[device zoomSupported]];
|
|
|
|
if ([device backlightSupported]) {
|
|
[backlightElement setMin:(int)[device minBacklight]];
|
|
[backlightElement setMax:(int)[device maxBacklight]];
|
|
[backlightElement setVal:(int)[device backlight]];
|
|
}
|
|
[backlightElement setEnabled:[device backlightSupported]];
|
|
|
|
if ([device brightSupported]) {
|
|
[brightElement setMin:(int)[device minBright]];
|
|
[brightElement setMax:(int)[device maxBright]];
|
|
[brightElement setVal:(int)[device bright]];
|
|
}
|
|
[brightElement setEnabled:[device brightSupported]];
|
|
|
|
if ([device contrastSupported]) {
|
|
[contrastElement setMin:(int)[device minContrast]];
|
|
[contrastElement setMax:(int)[device maxContrast]];
|
|
[contrastElement setVal:(int)[device contrast]];
|
|
}
|
|
[contrastElement setEnabled:[device contrastSupported]];
|
|
|
|
if ([device gainSupported]) {
|
|
[gainElement setMin:(int)[device minGain]];
|
|
[gainElement setMax:(int)[device maxGain]];
|
|
[gainElement setVal:(int)[device gain]];
|
|
}
|
|
[gainElement setEnabled:[device gainSupported]];
|
|
|
|
if ([device powerLineSupported]) {
|
|
[powerElement setMin:(int)[device minPowerLine]];
|
|
[powerElement setMax:(int)[device maxPowerLine]];
|
|
[powerElement setVal:(int)[device powerLine]];
|
|
}
|
|
[powerElement setEnabled:[device powerLineSupported]];
|
|
|
|
if ([device saturationSupported]) {
|
|
[satElement setMin:(int)[device minSaturation]];
|
|
[satElement setMax:(int)[device maxSaturation]];
|
|
[satElement setVal:(int)[device saturation]];
|
|
}
|
|
[satElement setEnabled:[device saturationSupported]];
|
|
|
|
if ([device sharpnessSupported]) {
|
|
[sharpElement setMin:(int)[device minSharpness]];
|
|
[sharpElement setMax:(int)[device maxSharpness]];
|
|
[sharpElement setVal:(int)[device sharpness]];
|
|
}
|
|
[sharpElement setEnabled:[device sharpnessSupported]];
|
|
|
|
if ([device gammaSupported]) {
|
|
[gammaElement setMin:(int)[device minGamma]];
|
|
[gammaElement setMax:(int)[device maxGamma]];
|
|
[gammaElement setVal:(int)[device gamma]];
|
|
}
|
|
|
|
[expPriorityButton setEnabled:[device autoExposurePrioritySupported]];
|
|
[expPriorityButton setIntValue:([device autoExposurePriority]) ? NSOnState : NSOffState];
|
|
|
|
[autoFocusButton setEnabled:([device autoFocusSupported]) ? YES : NO];
|
|
[autoFocusButton setIntValue:([device autoFocus]) ? NSOnState : NSOffState];
|
|
|
|
|
|
BOOL enableFocusElement = NO;
|
|
if ([device autoFocusSupported]) {
|
|
[autoFocusButton setEnabled:YES];
|
|
if ([device autoFocus]) {
|
|
[autoFocusButton setIntValue:NSOnState];
|
|
}
|
|
else {
|
|
[autoFocusButton setIntValue:NSOffState];
|
|
if ([device focusSupported])
|
|
enableFocusElement = YES;
|
|
}
|
|
}
|
|
else {
|
|
[autoFocusButton setEnabled:NO];
|
|
[autoFocusButton setIntValue:NSOffState];
|
|
if ([device focusSupported])
|
|
enableFocusElement = YES;
|
|
}
|
|
[focusElement setEnabled:enableFocusElement];
|
|
if (enableFocusElement) {
|
|
[focusElement setMin:(int)[device minFocus]];
|
|
[focusElement setMax:(int)[device maxFocus]];
|
|
[focusElement setVal:(int)[device focus]];
|
|
} else [focusElement setVal:0];
|
|
|
|
|
|
BOOL enableHueElement = NO;
|
|
if ([device autoHueSupported]) {
|
|
[autoHueButton setEnabled:YES];
|
|
if ([device autoHue]) {
|
|
[autoHueButton setIntValue:NSOnState];
|
|
}
|
|
else {
|
|
[autoHueButton setIntValue:NSOffState];
|
|
if ([device hueSupported])
|
|
enableHueElement = YES;
|
|
}
|
|
}
|
|
else {
|
|
[autoHueButton setEnabled:NO];
|
|
[autoHueButton setIntValue:NSOffState];
|
|
if ([device hueSupported])
|
|
enableHueElement = YES;
|
|
}
|
|
[hueElement setEnabled:enableHueElement];
|
|
if (enableHueElement) {
|
|
[hueElement setMin:(int)[device minHue]];
|
|
[hueElement setMax:(int)[device maxHue]];
|
|
[hueElement setVal:(int)[device hue]];
|
|
} else [hueElement setVal:0];
|
|
|
|
|
|
BOOL enableWBElement = NO;
|
|
if ([device autoWhiteBalanceSupported]) {
|
|
[autoWBButton setEnabled:YES];
|
|
if ([device autoWhiteBalance]) {
|
|
[autoWBButton setIntValue:NSOnState];
|
|
}
|
|
else {
|
|
[autoWBButton setIntValue:NSOffState];
|
|
if ([device whiteBalanceSupported])
|
|
enableWBElement = YES;
|
|
}
|
|
}
|
|
else {
|
|
[autoWBButton setEnabled:NO];
|
|
[autoWBButton setIntValue:NSOffState];
|
|
if ([device whiteBalanceSupported])
|
|
enableWBElement = YES;
|
|
}
|
|
[wbElement setEnabled:enableWBElement];
|
|
if (enableWBElement) {
|
|
[wbElement setMin:(int)[device minWhiteBalance]];
|
|
[wbElement setMax:(int)[device maxWhiteBalance]];
|
|
[wbElement setVal:(int)[device whiteBalance]];
|
|
} else [wbElement setVal:0];
|
|
|
|
|
|
UVC_AEMode aeMode = [device autoExposureMode];
|
|
switch (aeMode) {
|
|
case UVC_AEMode_Undefined: // hide both
|
|
[autoExpButton selectItemAtIndex:0];
|
|
[expElement setEnabled:NO];
|
|
[irisElement setEnabled:NO];
|
|
break;
|
|
case UVC_AEMode_Manual: // show both
|
|
[autoExpButton selectItemAtIndex:0];
|
|
[expElement setEnabled:(YES && [device exposureTimeSupported])];
|
|
[irisElement setEnabled:(YES && [device irisSupported])];
|
|
break;
|
|
case UVC_AEMode_Auto: // hide both
|
|
[autoExpButton selectItemAtIndex:1];
|
|
[expElement setEnabled:NO];
|
|
[irisElement setEnabled:NO];
|
|
[expElement setVal:0];
|
|
break;
|
|
case UVC_AEMode_ShutterPriority:
|
|
[autoExpButton selectItemAtIndex:2];
|
|
[expElement setEnabled:(YES && [device exposureTimeSupported])];
|
|
[irisElement setEnabled:NO];
|
|
break;
|
|
case UVC_AEMode_AperturePriority:
|
|
[autoExpButton selectItemAtIndex:3];
|
|
[expElement setEnabled:NO];
|
|
[irisElement setEnabled:(YES && [device irisSupported])];
|
|
[expElement setVal:0];
|
|
break;
|
|
}
|
|
}
|
|
|
|
|
|
@end
|