aboutsummaryrefslogtreecommitdiffstats
path: root/Frameworks/BWToolkitFramework.framework/BWSplitViewInspectorAutosizingButtonCell.m
diff options
context:
space:
mode:
authoravenjamin <avenjamin@gmail.com>2009-06-24 15:46:27 +0000
committeravenjamin <avenjamin@gmail.com>2009-06-24 15:46:27 +0000
commit5b05f3f15aa0676f91bc1d127d31f4fd95ef9f40 (patch)
treef0eaf423f2c13f2091fe9cfceaa2e0a6f2169723 /Frameworks/BWToolkitFramework.framework/BWSplitViewInspectorAutosizingButtonCell.m
parent37bd86b2879c107ebb026954693540979cf25e2a (diff)
downloadsequelpro-5b05f3f15aa0676f91bc1d127d31f4fd95ef9f40.tar.gz
sequelpro-5b05f3f15aa0676f91bc1d127d31f4fd95ef9f40.tar.bz2
sequelpro-5b05f3f15aa0676f91bc1d127d31f4fd95ef9f40.zip
- Changed the way the BWToolkit framework was included to allow modifications to be made easily.
- Fixed show/hide info pane toggle button image states to now show correctly
Diffstat (limited to 'Frameworks/BWToolkitFramework.framework/BWSplitViewInspectorAutosizingButtonCell.m')
-rw-r--r--Frameworks/BWToolkitFramework.framework/BWSplitViewInspectorAutosizingButtonCell.m158
1 files changed, 158 insertions, 0 deletions
diff --git a/Frameworks/BWToolkitFramework.framework/BWSplitViewInspectorAutosizingButtonCell.m b/Frameworks/BWToolkitFramework.framework/BWSplitViewInspectorAutosizingButtonCell.m
new file mode 100644
index 00000000..f40b187e
--- /dev/null
+++ b/Frameworks/BWToolkitFramework.framework/BWSplitViewInspectorAutosizingButtonCell.m
@@ -0,0 +1,158 @@
+//
+// BWSplitViewInspectorAutosizingButtonCell.m
+// BWToolkit
+//
+// Created by Brandon Walkin (www.brandonwalkin.com)
+// All code is provided under the New BSD license.
+//
+
+#import "BWSplitViewInspectorAutosizingButtonCell.h"
+#import "BWSplitViewInspectorAutosizingView.h"
+#import "NSColor+BWAdditions.h"
+#import "NSImage+BWAdditions.h"
+#import "NSApplication+BWAdditions.h"
+#import "IBColor.h"
+
+static NSColor *insetColor, *borderColor, *viewColor, *lineColor, *insetLineColor;
+static NSImage *blueArrowStart, *blueArrowEnd, *redArrowStart, *redArrowEnd, *redArrowFill;
+static float interiorInset = 7.0;
+
+@implementation BWSplitViewInspectorAutosizingButtonCell
+
++ (void)initialize
+{
+ insetColor = [IBColor customViewLightBorderColor];
+ borderColor = [IBColor customViewDarkBorderColor];
+
+ // Note: These two colors are reversed in IBColor in 10.5
+ if ([NSApplication isOnLeopard])
+ viewColor = [IBColor containerCustomViewBackgroundColor];
+ else
+ viewColor = [IBColor childlessCustomViewBackgroundColor];
+
+ lineColor = [[NSColor colorWithCalibratedRed:124.0/255.0 green:139.0/255.0 blue:159.0/255.0 alpha:1.0] retain];
+ insetLineColor = [[[NSColor whiteColor] colorWithAlphaComponent:0.19] retain];
+
+ NSBundle *bundle = [NSBundle bundleForClass:[BWSplitViewInspectorAutosizingButtonCell class]];
+ blueArrowStart = [[NSImage alloc] initWithContentsOfFile:[bundle pathForImageResource:@"Inspector-SplitViewArrowBlueLeft.tif"]];
+ blueArrowEnd = [[NSImage alloc] initWithContentsOfFile:[bundle pathForImageResource:@"Inspector-SplitViewArrowBlueRight.tif"]];
+ redArrowStart = [[NSImage alloc] initWithContentsOfFile:[bundle pathForImageResource:@"Inspector-SplitViewArrowRedLeft.tif"]];
+ redArrowFill = [[NSImage alloc] initWithContentsOfFile:[bundle pathForImageResource:@"Inspector-SplitViewArrowRedFill.tif"]];
+ redArrowEnd = [[NSImage alloc] initWithContentsOfFile:[bundle pathForImageResource:@"Inspector-SplitViewArrowRedRight.tif"]];
+}
+
+- (void)drawBezelWithFrame:(NSRect)frame inView:(NSView *)controlView
+{
+ [viewColor set];
+ NSRectFillUsingOperation(frame,NSCompositeSourceOver);
+
+ [insetColor drawPixelThickLineAtPosition:1 withInset:0 inRect:frame inView:controlView horizontal:NO flip:NO];
+ [insetColor drawPixelThickLineAtPosition:1 withInset:0 inRect:frame inView:controlView horizontal:NO flip:YES];
+ [insetColor drawPixelThickLineAtPosition:1 withInset:0 inRect:frame inView:controlView horizontal:YES flip:YES];
+ [insetColor drawPixelThickLineAtPosition:1 withInset:0 inRect:frame inView:controlView horizontal:YES flip:NO];
+
+ [borderColor drawPixelThickLineAtPosition:0 withInset:0 inRect:frame inView:controlView horizontal:NO flip:NO];
+ [borderColor drawPixelThickLineAtPosition:0 withInset:0 inRect:frame inView:controlView horizontal:NO flip:YES];
+ [borderColor drawPixelThickLineAtPosition:0 withInset:0 inRect:frame inView:controlView horizontal:YES flip:YES];
+ [borderColor drawPixelThickLineAtPosition:0 withInset:0 inRect:frame inView:controlView horizontal:YES flip:NO];
+}
+
+- (void)drawInteriorWithFrame:(NSRect)cellFrame inView:(NSView *)controlView
+{
+ BOOL isVertical = [(BWSplitViewInspectorAutosizingView *)[controlView superview] isVertical];
+ NSImage *blueArrowStartCap, *blueArrowEndCap, *redArrowStartCap, *redArrowFillSlice, *redArrowEndCap;
+
+ if (isVertical)
+ {
+ blueArrowStartCap = blueArrowStart;
+ blueArrowEndCap = blueArrowEnd;
+ redArrowStartCap = redArrowStart;
+ redArrowFillSlice = redArrowFill;
+ redArrowEndCap = redArrowEnd;
+
+ [blueArrowStartCap setFlipped:YES];
+ [blueArrowEndCap setFlipped:YES];
+ }
+ else
+ {
+ blueArrowStartCap = [blueArrowStart rotateImage90DegreesClockwise:NO];
+ blueArrowEndCap = [blueArrowEnd rotateImage90DegreesClockwise:NO];
+ redArrowStartCap = [redArrowEnd rotateImage90DegreesClockwise:NO];
+ redArrowFillSlice = [redArrowFill rotateImage90DegreesClockwise:NO];
+ redArrowEndCap = [redArrowStart rotateImage90DegreesClockwise:NO];
+ }
+
+ float arrowHeight = [blueArrowStartCap size].height;
+ float arrowWidth = [blueArrowStartCap size].width;
+
+ NSRect arrowRect = NSZeroRect;
+
+ if (isVertical)
+ arrowRect = NSMakeRect(interiorInset, roundf(cellFrame.size.height / 2 - 0.5 * arrowHeight), roundf(cellFrame.size.width - interiorInset * 2), arrowHeight);
+ else
+ arrowRect = NSMakeRect(roundf(cellFrame.size.width / 2 - 0.5 * arrowWidth), interiorInset - 1, arrowWidth, roundf(cellFrame.size.height - (interiorInset - 1) * 2));
+
+ if ([self intValue] == 0)
+ {
+ NSPoint startArrowOrigin = arrowRect.origin;
+ NSPoint endArrowOrigin;
+
+ if (isVertical)
+ endArrowOrigin = NSMakePoint(NSMaxX(arrowRect) - arrowWidth, arrowRect.origin.y);
+ else
+ endArrowOrigin = NSMakePoint(arrowRect.origin.x,NSMaxY(arrowRect) - arrowHeight);
+
+ [blueArrowStartCap drawAtPoint:startArrowOrigin fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1.0];
+ [blueArrowEndCap drawAtPoint:endArrowOrigin fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1.0];
+
+ NSPoint startPoint, endPoint;
+
+ if (isVertical)
+ {
+ startPoint = NSMakePoint(arrowRect.origin.x + arrowWidth, arrowRect.origin.y + floorf(arrowHeight / 2) + 0.5);
+ endPoint = NSMakePoint(arrowRect.origin.x + arrowRect.size.width - arrowWidth, arrowRect.origin.y + floorf(arrowHeight / 2) + 0.5);
+ }
+ else
+ {
+ startPoint = NSMakePoint(arrowRect.origin.x + floorf(arrowWidth / 2) + 0.5, arrowRect.origin.y + arrowHeight);
+ endPoint = NSMakePoint(arrowRect.origin.x + floorf(arrowWidth / 2) + 0.5, NSMaxY(arrowRect) - arrowHeight);
+ }
+
+ CGFloat array[2] = {3.0, 1.0};
+
+ // Draw dashed line
+ NSBezierPath *dashedLine = [NSBezierPath bezierPath];
+ [dashedLine setLineWidth:1.0];
+ [dashedLine setLineDash:array count:2 phase:3.0];
+ [dashedLine moveToPoint:startPoint];
+ [dashedLine lineToPoint:endPoint];
+ [lineColor set];
+ [dashedLine stroke];
+
+ // Draw white dashed inset line
+ NSBezierPath *dashedInsetLine = [NSBezierPath bezierPath];
+ [dashedInsetLine setLineWidth:1.0];
+ [dashedInsetLine setLineDash:array count:2 phase:3.0];
+ if (isVertical)
+ {
+ [dashedInsetLine moveToPoint:NSMakePoint(startPoint.x, startPoint.y + 1)];
+ [dashedInsetLine lineToPoint:NSMakePoint(endPoint.x, endPoint.y + 1)];
+ }
+ else
+ {
+ [dashedInsetLine moveToPoint:NSMakePoint(startPoint.x + 1, startPoint.y)];
+ [dashedInsetLine lineToPoint:NSMakePoint(endPoint.x + 1, endPoint.y)];
+ }
+ [insetLineColor set];
+ [dashedInsetLine stroke];
+ }
+ else
+ {
+ if (isVertical)
+ NSDrawThreePartImage(arrowRect, redArrowStartCap, redArrowFillSlice, redArrowEndCap, NO, NSCompositeSourceOver, 1, YES);
+ else
+ NSDrawThreePartImage(arrowRect, redArrowStartCap, redArrowFillSlice, redArrowEndCap, YES, NSCompositeSourceOver, 1, YES);
+ }
+}
+
+@end