diff --git a/CocoaSplit/InputSource.h b/CocoaSplit/InputSource.h index 28a89e89..761dab59 100644 --- a/CocoaSplit/InputSource.h +++ b/CocoaSplit/InputSource.h @@ -165,6 +165,11 @@ typedef enum resize_style_t { @property (strong) NSMutableDictionary *constraintMap; +@property (strong) CIFilter *advancedTransition; +@property (strong) NSString *advancedTransitionName; + + + -(void) updateOrigin:(CGFloat)x y:(CGFloat)y; diff --git a/CocoaSplit/InputSource.m b/CocoaSplit/InputSource.m index 8725bb86..0d4b01af 100644 --- a/CocoaSplit/InputSource.m +++ b/CocoaSplit/InputSource.m @@ -526,7 +526,6 @@ static NSArray *_sourceTypes = nil; self.transitionDirection = kCATransitionFromRight; self.transitionDuration = 2.0f; - self.availableEffectNames = [CIFilter filterNamesInCategories:nil]; self.doChromaKey = NO; self.chromaKeyThreshold = 0.1005f; self.chromaKeySmoothing = 0.1344f; @@ -656,6 +655,8 @@ static NSArray *_sourceTypes = nil; return ret; } + + -(void)deleteLayerFilter:(NSString *)filteruuid { self.layer.filters = [self newFilterArray:self.layer.filters withoutName:filteruuid]; @@ -1027,6 +1028,26 @@ static NSArray *_sourceTypes = nil; } +-(void) setAdvancedTransitionName:(NSString *)advancedTransitionName +{ + CIFilter *newTransition = [CIFilter filterWithName:advancedTransitionName]; + [newTransition setDefaults]; + self.advancedTransition = newTransition; + +} + + +-(NSString *)advancedTransitionName +{ + if (self.advancedTransition) + { + return self.advancedTransition.className; + } + + return nil; +} + + -(void) setTransitionFilterName:(NSString *)transitionFilterName { _transitionFilterName = transitionFilterName; @@ -1041,6 +1062,7 @@ static NSArray *_sourceTypes = nil; + -(void)multiChange { @@ -1088,6 +1110,7 @@ static NSArray *_sourceTypes = nil; _multiTransition.type = self.transitionFilterName; _multiTransition.duration = self.transitionDuration; _multiTransition.subtype = self.transitionDirection; + _multiTransition.filter = self.advancedTransition.copy; [self.layer transitionToLayer:_nextInput.layer fromLayer:_currentInput.layer withTransition:_multiTransition]; _currentInput = _nextInput; diff --git a/CocoaSplit/Interface/InputPopupControllerViewController.xib b/CocoaSplit/Interface/InputPopupControllerViewController.xib index 0cbd5504..5768e39e 100644 --- a/CocoaSplit/Interface/InputPopupControllerViewController.xib +++ b/CocoaSplit/Interface/InputPopupControllerViewController.xib @@ -507,13 +507,7 @@ - - - - - - - + @@ -553,6 +547,12 @@ + + + + + + @@ -854,6 +854,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1823,11 +1861,6 @@ - - - - - @@ -1844,6 +1877,11 @@ + + + + + diff --git a/InputPopupControllerViewController.h b/InputPopupControllerViewController.h index 02aece94..ec74fbaa 100644 --- a/InputPopupControllerViewController.h +++ b/InputPopupControllerViewController.h @@ -32,6 +32,9 @@ @property (assign) bool backgroundTableHasSelection; @property (assign) bool layerTableHasSelection; +@property (strong) NSMutableDictionary *availableTransitions; + + - (IBAction)configureFilter:(NSButton *)sender; - (IBAction)resetConstraints:(id)sender; @@ -42,7 +45,8 @@ - (IBAction)deleteMultiSource:(id)sender; -(void)openTransitionFilterPanel:(CIFilter *)forFilter; --(void)openUserFilterPanel:(CIFilter *)forFilter; +-(IBAction) configureInputTransition:(NSButton *)sender; + - (IBAction)addFilterAction:(NSButton *)sender; diff --git a/InputPopupControllerViewController.m b/InputPopupControllerViewController.m index d471e27b..310b044d 100644 --- a/InputPopupControllerViewController.m +++ b/InputPopupControllerViewController.m @@ -35,7 +35,15 @@ }; self.constraintSortDescriptors = @[[[NSSortDescriptor alloc] initWithKey:@"value" ascending:YES]]; + self.availableTransitions = [NSMutableDictionary dictionary]; + NSArray *ciTransitionNames = [CIFilter filterNamesInCategory:kCICategoryTransition]; + for (NSString *ciName in ciTransitionNames) + { + NSString *niceName = [CIFilter localizedNameForFilterName:ciName]; + [self.availableTransitions setObject:niceName forKey:ciName]; + } + //self = [super initWithNibName:@"TestView" bundle:nil]; @@ -71,6 +79,15 @@ return self.inputSource.selectedVideoType; } +-(IBAction) configureInputTransition:(NSButton *)sender +{ + if (self.inputSource.advancedTransition) + { + [self openTransitionFilterPanel:self.inputSource.advancedTransition]; + } +} + + - (IBAction)configureFilter:(NSButton *)sender { CIFilter *selectedFilter; @@ -306,7 +323,16 @@ - [self rebindViewControls:filterView withProxy:filterProxy]; + if (forLayer) + { + CSCIFilterConfigProxy *filterProxy = [[CSCIFilterConfigProxy alloc] init]; + filterProxy.baseLayer = forLayer; + filterProxy.layerFilterName = forFilter.name; + filterProxy.filterType = withType; + + [self rebindViewControls:filterView withProxy:filterProxy]; + } + self.userFilterWindow = [[NSWindow alloc] init];