mirror of
https://github.com/zakk4223/CocoaSplit.git
synced 2026-05-15 14:15:50 -06:00
Changed CSInputLayer to a subclass of CAGradientLayer. Added simple gradient configuration in the settings dialog. A configured gradient is drawn OVER the background color. If you set the opacity of gradient colors to less than 1 the configured background color will bleed through appropriately.
This commit is contained in:
parent
9275b7bca3
commit
d5ec017120
8 changed files with 294 additions and 7 deletions
|
|
@ -7,10 +7,10 @@
|
|||
//
|
||||
|
||||
#import <QuartzCore/QuartzCore.h>
|
||||
|
||||
#import <AppKit/AppKit.h>
|
||||
@class InputSource;
|
||||
|
||||
@interface CSInputLayer : CALayer
|
||||
@interface CSInputLayer : CAGradientLayer
|
||||
{
|
||||
//CAReplicatorLayer *_xLayer;
|
||||
CAReplicatorLayer *_yLayer;
|
||||
|
|
@ -33,9 +33,21 @@
|
|||
@property (nonatomic, assign) CGFloat fakeWidth;
|
||||
@property (nonatomic, assign) CGFloat fakeHeight;
|
||||
|
||||
|
||||
@property (strong) NSColor *startColor;
|
||||
@property (strong) NSColor *stopColor;
|
||||
|
||||
@property (assign) CGFloat gradientStartX;
|
||||
@property (assign) CGFloat gradientStartY;
|
||||
@property (assign) CGFloat gradientStopX;
|
||||
@property (assign) CGFloat gradientStopY;
|
||||
|
||||
|
||||
-(void)setSourceLayer:(CALayer *)sourceLayer withTransition:(CATransition *)transition;
|
||||
-(void)frameTick;
|
||||
-(void)transitionToLayer:(CALayer *)toLayer fromLayer:(CALayer *)fromLayer withTransition:(CATransition *)transition;
|
||||
-(void)transitionsDisabled;
|
||||
-(void)clearGradient;
|
||||
|
||||
|
||||
@end
|
||||
|
|
|
|||
|
|
@ -17,6 +17,9 @@
|
|||
@synthesize scrollXSpeed = _scrollXSpeed;
|
||||
@synthesize scrollYSpeed = _scrollYSpeed;
|
||||
@synthesize cropRect = _cropRect;
|
||||
@synthesize startColor = _startColor;
|
||||
@synthesize stopColor = _stopColor;
|
||||
|
||||
@dynamic fakeHeight;
|
||||
@dynamic fakeWidth;
|
||||
|
||||
|
|
@ -113,6 +116,129 @@
|
|||
}
|
||||
|
||||
|
||||
-(void)clearGradient
|
||||
{
|
||||
self.colors = @[];
|
||||
self.startColor = nil;
|
||||
self.stopColor = nil;
|
||||
}
|
||||
|
||||
|
||||
-(void)setGradientStartX:(CGFloat)gradientStartX
|
||||
{
|
||||
CGPoint cBounds = self.startPoint;
|
||||
cBounds.x = gradientStartX;
|
||||
self.startPoint = cBounds;
|
||||
}
|
||||
|
||||
-(CGFloat)gradientStartX
|
||||
{
|
||||
return self.startPoint.x;
|
||||
}
|
||||
|
||||
|
||||
-(void)setGradientStartY:(CGFloat)gradientStartY
|
||||
{
|
||||
CGPoint cBounds = self.startPoint;
|
||||
cBounds.y = gradientStartY;
|
||||
self.startPoint = cBounds;
|
||||
}
|
||||
|
||||
-(CGFloat)gradientStartY
|
||||
{
|
||||
return self.startPoint.y;
|
||||
}
|
||||
|
||||
-(void)setGradientStopX:(CGFloat)gradientStopX
|
||||
{
|
||||
CGPoint cBounds = self.endPoint;
|
||||
cBounds.x = gradientStopX;
|
||||
self.endPoint = cBounds;
|
||||
}
|
||||
|
||||
-(CGFloat)gradientStopX
|
||||
{
|
||||
return self.endPoint.x;
|
||||
}
|
||||
|
||||
-(void)setGradientStopY:(CGFloat)gradientStopY
|
||||
{
|
||||
CGPoint cBounds = self.endPoint;
|
||||
cBounds.y = gradientStopY;
|
||||
self.endPoint = cBounds;
|
||||
}
|
||||
|
||||
-(CGFloat)gradientStopY
|
||||
{
|
||||
return self.endPoint.y;
|
||||
}
|
||||
|
||||
|
||||
|
||||
-(void)setStartColor:(NSColor *)startColor
|
||||
{
|
||||
|
||||
|
||||
if (!startColor)
|
||||
{
|
||||
return;
|
||||
}
|
||||
CGColorRef newStart = CGColorRetain(startColor.CGColor);
|
||||
|
||||
|
||||
_startColor = startColor;
|
||||
|
||||
NSMutableArray *newColors = [NSMutableArray array];
|
||||
|
||||
[newColors addObject:(id)CFBridgingRelease(newStart)];
|
||||
id lastColor = self.colors.lastObject;
|
||||
|
||||
if (lastColor)
|
||||
{
|
||||
[newColors addObject:lastColor];
|
||||
}
|
||||
|
||||
|
||||
self.colors = newColors;
|
||||
}
|
||||
|
||||
-(NSColor *)startColor
|
||||
{
|
||||
return _startColor;
|
||||
}
|
||||
|
||||
|
||||
-(void)setStopColor:(NSColor *)stopColor
|
||||
{
|
||||
|
||||
if (!stopColor)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
CGColorRef newStop = CGColorRetain(stopColor.CGColor);
|
||||
|
||||
_stopColor = stopColor;
|
||||
|
||||
NSMutableArray *newColors = [NSMutableArray array];
|
||||
|
||||
id startColor = self.colors.firstObject;
|
||||
if (startColor)
|
||||
{
|
||||
[newColors addObject:startColor];
|
||||
}
|
||||
|
||||
|
||||
[newColors addObject:(id)CFBridgingRelease(newStop)];
|
||||
self.colors = newColors;
|
||||
}
|
||||
|
||||
-(NSColor *)stopColor
|
||||
{
|
||||
return _stopColor;
|
||||
}
|
||||
|
||||
|
||||
-(void)frameTick
|
||||
{
|
||||
|
|
|
|||
|
|
@ -162,6 +162,16 @@ static NSArray *_sourceTypes = nil;
|
|||
|
||||
[aCoder encodeObject:self.constraintMap forKey:@"constraintMap"];
|
||||
|
||||
|
||||
[aCoder encodeObject:self.layer.startColor forKey:@"gradientStartColor"];
|
||||
[aCoder encodeObject:self.layer.stopColor forKey:@"gradientStopColor"];
|
||||
[aCoder encodeFloat: self.layer.startPoint.x forKey:@"gradientStartPointX"];
|
||||
[aCoder encodeFloat: self.layer.startPoint.y forKey:@"gradientStartPointY"];
|
||||
[aCoder encodeFloat: self.layer.endPoint.x forKey:@"gradientEndPointX"];
|
||||
[aCoder encodeFloat: self.layer.endPoint.y forKey:@"gradientEndPointY"];
|
||||
|
||||
|
||||
|
||||
[aCoder encodeObject:self.layer.filters forKey:@"layerFilters"];
|
||||
|
||||
if (_userBackground)
|
||||
|
|
@ -381,6 +391,20 @@ static NSArray *_sourceTypes = nil;
|
|||
[self buildLayerConstraints];
|
||||
}
|
||||
|
||||
self.layer.startColor = [aDecoder decodeObjectForKey:@"gradientStartColor"];
|
||||
self.layer.stopColor = [aDecoder decodeObjectForKey:@"gradientStopColor"];
|
||||
|
||||
|
||||
self.layer.gradientStartX = [aDecoder decodeFloatForKey:@"gradientStartPointX"];
|
||||
self.layer.gradientStartY = [aDecoder decodeFloatForKey:@"gradientStartPointY"];
|
||||
|
||||
self.layer.gradientStopX = [aDecoder decodeFloatForKey:@"gradientEndPointX"];
|
||||
self.layer.gradientStopY = [aDecoder decodeFloatForKey:@"gradientEndPointY"];
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
self.layer.filters = [aDecoder decodeObjectForKey:@"layerFilters"];
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -519,7 +519,7 @@
|
|||
<font key="titleFont" metaFont="system"/>
|
||||
</box>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="m45-gD-fqn">
|
||||
<rect key="frame" x="254" y="152" width="100" height="14"/>
|
||||
<rect key="frame" x="15" y="117" width="100" height="14"/>
|
||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Background Color" id="cMD-l0-1zH">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
|
|
@ -527,14 +527,14 @@
|
|||
</textFieldCell>
|
||||
</textField>
|
||||
<colorWell fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="MYi-0Z-X4u">
|
||||
<rect key="frame" x="360" y="148" width="44" height="23"/>
|
||||
<rect key="frame" x="132" y="113" width="44" height="23"/>
|
||||
<color key="color" red="0.05813049898" green="0.055541899059999997" blue="1" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<connections>
|
||||
<binding destination="Gdf-y2-DdF" name="value" keyPath="selection.backgroundColor" id="xWM-uT-IWE"/>
|
||||
</connections>
|
||||
</colorWell>
|
||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="NTl-Bn-3Hq">
|
||||
<rect key="frame" x="407" y="144" width="59" height="28"/>
|
||||
<rect key="frame" x="179" y="109" width="59" height="28"/>
|
||||
<buttonCell key="cell" type="push" title="Clear" bezelStyle="rounded" alignment="center" controlSize="small" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="9Wg-xZ-gwB">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
|
|
@ -553,6 +553,122 @@
|
|||
<color key="fillColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||
<font key="titleFont" metaFont="system"/>
|
||||
</box>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="N2b-0k-tTo">
|
||||
<rect key="frame" x="15" y="90" width="111" height="14"/>
|
||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Gradient Start Color" id="SdE-Kn-dVn">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="HMn-kV-Oei">
|
||||
<rect key="frame" x="15" y="63" width="110" height="14"/>
|
||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Gradient Stop Color" id="kZU-hO-1xs">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<colorWell fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="QUu-H4-Sr4">
|
||||
<rect key="frame" x="132" y="86" width="44" height="23"/>
|
||||
<color key="color" red="0.05813049898" green="0.055541899059999997" blue="1" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<connections>
|
||||
<binding destination="Gdf-y2-DdF" name="value" keyPath="selection.layer.startColor" id="PM0-Cc-yOr"/>
|
||||
</connections>
|
||||
</colorWell>
|
||||
<colorWell fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="CVI-Ly-scM">
|
||||
<rect key="frame" x="132" y="59" width="44" height="23"/>
|
||||
<color key="color" red="0.05813049898" green="0.055541899059999997" blue="1" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<connections>
|
||||
<binding destination="Gdf-y2-DdF" name="value" keyPath="selection.layer.stopColor" id="Rs8-J6-xhW"/>
|
||||
</connections>
|
||||
</colorWell>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="PbG-mI-o0s">
|
||||
<rect key="frame" x="182" y="63" width="12" height="14"/>
|
||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="X" id="UTo-Zi-3hP">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="HuF-R3-4tW">
|
||||
<rect key="frame" x="245" y="90" width="12" height="14"/>
|
||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Y" id="Nto-Bf-P1V">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="hCF-Fy-wvw">
|
||||
<rect key="frame" x="245" y="63" width="12" height="14"/>
|
||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Y" id="9hw-uJ-Dar">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="sdx-pu-hBR">
|
||||
<rect key="frame" x="182" y="90" width="12" height="14"/>
|
||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="X" id="sw9-mt-Iqh">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="inZ-TA-S78">
|
||||
<rect key="frame" x="200" y="61" width="39" height="19"/>
|
||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="lae-8f-a9F">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
<binding destination="Gdf-y2-DdF" name="value" keyPath="selection.layer.gradientStopX" id="0k6-4t-EdZ"/>
|
||||
</connections>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="wMU-lB-vGu">
|
||||
<rect key="frame" x="200" y="88" width="39" height="19"/>
|
||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="WuV-JZ-XbZ">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
<binding destination="Gdf-y2-DdF" name="value" keyPath="selection.layer.gradientStartX" id="JqZ-4m-NEe"/>
|
||||
</connections>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="7U4-ln-Kcs">
|
||||
<rect key="frame" x="263" y="88" width="39" height="19"/>
|
||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="1Xo-ub-15U">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
<binding destination="Gdf-y2-DdF" name="value" keyPath="selection.layer.gradientStartY" id="wyu-8P-fVi"/>
|
||||
</connections>
|
||||
</textField>
|
||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="oFb-MA-BZO">
|
||||
<rect key="frame" x="17" y="26" width="103" height="28"/>
|
||||
<buttonCell key="cell" type="push" title="Clear Gradient" bezelStyle="rounded" alignment="center" controlSize="small" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="RVy-wt-Hfx">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="clearGradient:" target="-2" id="rhJ-sR-ZNA"/>
|
||||
</connections>
|
||||
</button>
|
||||
<textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="8AQ-Bm-xvX">
|
||||
<rect key="frame" x="263" y="61" width="39" height="19"/>
|
||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="1CO-0V-sK1">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
<binding destination="Gdf-y2-DdF" name="value" keyPath="selection.layer.gradientStopY" id="Qft-de-Fiy"/>
|
||||
</connections>
|
||||
</textField>
|
||||
</subviews>
|
||||
</view>
|
||||
</tabViewItem>
|
||||
|
|
|
|||
|
|
@ -175,6 +175,7 @@
|
|||
{
|
||||
[self.rootLayer replaceSublayer:self.layout.rootLayer with:saveLayer];
|
||||
|
||||
|
||||
} else {
|
||||
[self.rootLayer addSublayer:self.layout.rootLayer];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2010,7 +2010,7 @@
|
|||
<constraint firstItem="2368" firstAttribute="top" secondItem="372" secondAttribute="top" id="t3R-20-X4J"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<point key="canvasLocation" x="358.5" y="220"/>
|
||||
<point key="canvasLocation" x="339.5" y="110"/>
|
||||
</window>
|
||||
<dictionaryController objectClassName="_NSControllerKeyValuePair" id="gSI-N4-DsK" userLabel="CompressorDictionaryController">
|
||||
<connections>
|
||||
|
|
@ -2241,7 +2241,7 @@ MgA3AEEARwBQAFcAXABkAHkAewB9AH8AgQCLAJAAlQCgAKMApQCnAKkArgC5AMIAygDNANYA2wDoAOwA
|
|||
</connections>
|
||||
</segmentedControl>
|
||||
</subviews>
|
||||
<point key="canvasLocation" x="885.5" y="194.5"/>
|
||||
<point key="canvasLocation" x="872.5" y="291.5"/>
|
||||
</view>
|
||||
<view id="bRh-Lo-mbG">
|
||||
<rect key="frame" x="0.0" y="0.0" width="100" height="100"/>
|
||||
|
|
|
|||
|
|
@ -50,6 +50,8 @@
|
|||
|
||||
- (IBAction)addFilterAction:(NSButton *)sender;
|
||||
|
||||
-(IBAction) clearGradient:(NSButton *)sender;
|
||||
|
||||
@property (weak) IBOutlet NSArrayController *multiSourceController;
|
||||
@property (weak) IBOutlet NSArrayController *currentEffectsController;
|
||||
@property (weak) IBOutlet NSWindow *cropSelectionWindow;
|
||||
|
|
|
|||
|
|
@ -422,6 +422,12 @@
|
|||
|
||||
|
||||
|
||||
-(IBAction) clearGradient:(NSButton *)sender
|
||||
{
|
||||
|
||||
[self.inputSource.layer clearGradient];
|
||||
}
|
||||
|
||||
|
||||
|
||||
- (IBAction)resetConstraints:(id)sender
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue