summaryrefslogtreecommitdiff
path: root/frontends/cocoa/ArrowBox.m
diff options
context:
space:
mode:
Diffstat (limited to 'frontends/cocoa/ArrowBox.m')
-rw-r--r--frontends/cocoa/ArrowBox.m211
1 files changed, 104 insertions, 107 deletions
diff --git a/frontends/cocoa/ArrowBox.m b/frontends/cocoa/ArrowBox.m
index 3eb7411a2..258a58cda 100644
--- a/frontends/cocoa/ArrowBox.m
+++ b/frontends/cocoa/ArrowBox.m
@@ -30,134 +30,131 @@
@synthesize arrowEdge;
@synthesize cornerRadius;
-- (void) setArrowEdge: (ArrowEdge)newEdge
+- (void)setArrowEdge:(ArrowEdge)newEdge
{
- if (arrowEdge == newEdge) {
- return;
- }
+ if (arrowEdge == newEdge) {
+ return;
+ }
- arrowEdge = newEdge;
+ arrowEdge = newEdge;
- [self setNeedsDisplay: YES];
- updateShadow = YES;
+ [self setNeedsDisplay:YES];
+ updateShadow = YES;
}
-
-- (void) setArrowSize: (CGFloat)newSize
+- (void)setArrowSize:(CGFloat)newSize
{
- arrowSize = newSize;
- [self setNeedsDisplay: YES];
- updateShadow = YES;
+ arrowSize = newSize;
+ [self setNeedsDisplay:YES];
+ updateShadow = YES;
}
-
-- (void) setCornerRadius: (CGFloat)newRadius
+- (void)setCornerRadius:(CGFloat)newRadius
{
- cornerRadius = newRadius;
- [self setNeedsDisplay: YES];
- updateShadow = YES;
+ cornerRadius = newRadius;
+ [self setNeedsDisplay:YES];
+ updateShadow = YES;
}
-- (void) setArrowPosition: (CGFloat)newPosition
+- (void)setArrowPosition:(CGFloat)newPosition
{
- arrowPosition = newPosition;
+ arrowPosition = newPosition;
- [self setNeedsDisplay: YES];
- updateShadow = YES;
+ [self setNeedsDisplay:YES];
+ updateShadow = YES;
}
-
- (id)initWithFrame:(NSRect)frame
{
- self = [super initWithFrame:frame];
- if (self) {
- arrowPosition = 50;
- cornerRadius = 10;
- arrowSize = 15;
- }
- return self;
+ self = [super initWithFrame:frame];
+ if (self) {
+ arrowPosition = 50;
+ cornerRadius = 10;
+ arrowSize = 15;
+ }
+ return self;
}
- (void)drawRect:(NSRect)dirtyRect
{
- [[NSColor clearColor] set];
- [NSBezierPath fillRect: dirtyRect];
-
- NSBezierPath *path = [NSBezierPath bezierPath];
-
- NSRect bounds = [self.window convertRectToScreen: NSInsetRect( [self bounds], 2, 2 )];
- bounds.origin.x = floor( bounds.origin.x );
- bounds.origin.y = floor( bounds.origin.y );
- bounds.size.width = floor( bounds.size.width );
- bounds.size.height = floor( bounds.size.height );
- bounds = [self.window convertRectFromScreen: bounds];
-
- const CGFloat right = bounds.size.width - arrowSize;
- const CGFloat top = bounds.size.height - arrowSize;
- const CGFloat left = arrowSize;
- const CGFloat bottom = arrowSize;
-
- [path setLineJoinStyle:NSRoundLineJoinStyle];
-
- [path moveToPoint: NSMakePoint( right - cornerRadius, top )];
-
- if (arrowEdge == ArrowTopEdge) {
- [path lineToPoint: NSMakePoint( arrowPosition + arrowSize, top )];
- [path lineToPoint: NSMakePoint( arrowPosition, top + arrowSize )];
- [path lineToPoint: NSMakePoint( arrowPosition - arrowSize, top )];
- }
-
- [path appendBezierPathWithArcFromPoint: NSMakePoint( left, top )
- toPoint: NSMakePoint( left, top - cornerRadius )
- radius: cornerRadius];
-
- if (arrowEdge == ArrowLeftEdge) {
- [path lineToPoint: NSMakePoint( left, bottom + arrowPosition + arrowSize )];
- [path lineToPoint: NSMakePoint( left - arrowSize, bottom + arrowPosition )];
- [path lineToPoint: NSMakePoint( left, bottom + arrowPosition - arrowSize )];
- }
-
- [path appendBezierPathWithArcFromPoint: NSMakePoint( left, bottom )
- toPoint: NSMakePoint( left + cornerRadius, bottom )
- radius: cornerRadius];
-
- if (arrowEdge == ArrowBottomEdge) {
- [path lineToPoint: NSMakePoint( arrowPosition - arrowSize, bottom )];
- [path lineToPoint: NSMakePoint( arrowPosition, bottom - arrowSize )];
- [path lineToPoint: NSMakePoint( arrowPosition + arrowSize, bottom )];
- }
-
- [path appendBezierPathWithArcFromPoint: NSMakePoint( right, bottom )
- toPoint: NSMakePoint( right, bottom + cornerRadius )
- radius: cornerRadius];
-
- if (arrowEdge == ArrowRightEdge) {
- [path lineToPoint: NSMakePoint( right, bottom + arrowPosition - arrowSize )];
- [path lineToPoint: NSMakePoint( right + arrowSize, bottom + arrowPosition )];
- [path lineToPoint: NSMakePoint( right, bottom + arrowPosition + arrowSize )];
- }
-
- [path appendBezierPathWithArcFromPoint: NSMakePoint( right, top )
- toPoint: NSMakePoint( right - cornerRadius, top )
- radius: cornerRadius];
- [path closePath];
-
- [[NSColor colorWithDeviceWhite: 1.0 alpha: 0.4] set];
- [[NSColor colorWithDeviceWhite: 0.0 alpha: 0.75] setFill];
-
- NSAffineTransform *transform = [NSAffineTransform transform];
- [transform translateXBy: bounds.origin.x yBy: bounds.origin.y];
- [transform concat];
-
- [path setLineWidth: 2.0];
- [path fill];
- [path stroke];
-
- if (updateShadow) {
- [[self window] invalidateShadow];
- [[self window] update];
- updateShadow = NO;
- }
+ [[NSColor clearColor] set];
+ [NSBezierPath fillRect:dirtyRect];
+
+ NSBezierPath *path = [NSBezierPath bezierPath];
+
+ NSRect bounds = [self.window convertRectToScreen:NSInsetRect([self bounds], 2, 2)];
+ bounds.origin.x = floor(bounds.origin.x);
+ bounds.origin.y = floor(bounds.origin.y);
+ bounds.size.width = floor(bounds.size.width);
+ bounds.size.height = floor(bounds.size.height);
+ bounds = [self.window convertRectFromScreen:bounds];
+
+ const CGFloat right = bounds.size.width - arrowSize;
+ const CGFloat top = bounds.size.height - arrowSize;
+ const CGFloat left = arrowSize;
+ const CGFloat bottom = arrowSize;
+
+ [path setLineJoinStyle:NSRoundLineJoinStyle];
+
+ [path moveToPoint:NSMakePoint(right - cornerRadius, top)];
+
+ if (arrowEdge == ArrowTopEdge) {
+ [path lineToPoint:NSMakePoint(arrowPosition + arrowSize, top)];
+ [path lineToPoint:NSMakePoint(arrowPosition, top + arrowSize)];
+ [path lineToPoint:NSMakePoint(arrowPosition - arrowSize, top)];
+ }
+
+ [path appendBezierPathWithArcFromPoint:NSMakePoint(left, top)
+ toPoint:NSMakePoint(left, top - cornerRadius)
+ radius:cornerRadius];
+
+ if (arrowEdge == ArrowLeftEdge) {
+ [path lineToPoint:NSMakePoint(left, bottom + arrowPosition + arrowSize)];
+ [path lineToPoint:NSMakePoint(left - arrowSize, bottom + arrowPosition)];
+ [path lineToPoint:NSMakePoint(left, bottom + arrowPosition - arrowSize)];
+ }
+
+ [path appendBezierPathWithArcFromPoint:NSMakePoint(left, bottom)
+ toPoint:NSMakePoint(left + cornerRadius, bottom)
+ radius:cornerRadius];
+
+ if (arrowEdge == ArrowBottomEdge) {
+ [path lineToPoint:NSMakePoint(arrowPosition - arrowSize, bottom)];
+ [path lineToPoint:NSMakePoint(arrowPosition, bottom - arrowSize)];
+ [path lineToPoint:NSMakePoint(arrowPosition + arrowSize, bottom)];
+ }
+
+ [path appendBezierPathWithArcFromPoint:NSMakePoint(right, bottom)
+ toPoint:NSMakePoint(right, bottom + cornerRadius)
+ radius:cornerRadius];
+
+ if (arrowEdge == ArrowRightEdge) {
+ [path lineToPoint:NSMakePoint(right, bottom + arrowPosition - arrowSize)];
+ [path lineToPoint:NSMakePoint(right + arrowSize, bottom + arrowPosition)];
+ [path lineToPoint:NSMakePoint(right, bottom + arrowPosition + arrowSize)];
+ }
+
+ [path appendBezierPathWithArcFromPoint:NSMakePoint(right, top)
+ toPoint:NSMakePoint(right - cornerRadius, top)
+ radius:cornerRadius];
+ [path closePath];
+
+ [[NSColor colorWithDeviceWhite:1.0 alpha:0.4] set];
+ [[NSColor colorWithDeviceWhite:0.0 alpha:0.75] setFill];
+
+ NSAffineTransform *transform = [NSAffineTransform transform];
+ [transform translateXBy:bounds.origin.x yBy:bounds.origin.y];
+ [transform concat];
+
+ [path setLineWidth:2.0];
+ [path fill];
+ [path stroke];
+
+ if (updateShadow) {
+ [[self window] invalidateShadow];
+ [[self window] update];
+ updateShadow = NO;
+ }
}
@end