88 lines
3.1 KiB
Objective-C
88 lines
3.1 KiB
Objective-C
//
|
|
// NowPlayingBarView.m
|
|
// Cog
|
|
//
|
|
// Created by Dmitry Promsky on 2/24/12.
|
|
// Copyright 2012 dmitry.promsky@gmail.com. All rights reserved.
|
|
//
|
|
|
|
#import "NowPlayingBarView.h"
|
|
|
|
@implementation NowPlayingBarView
|
|
|
|
- (id)initWithFrame:(NSRect)rect
|
|
{
|
|
if ((self = [super initWithFrame: rect]))
|
|
{
|
|
NSColor *lightColor = [NSColor colorWithCalibratedRed: 160.0/255.0 green: 160.0/255.0 blue: 160.0/255.0 alpha: 1.0];
|
|
NSColor *darkColor = [NSColor colorWithCalibratedRed: 155.0/255.0 green: 155.0/255.0 blue: 155.0/255.0 alpha: 1.0];
|
|
gradient_light = [[NSGradient alloc] initWithStartingColor: lightColor endingColor: darkColor];
|
|
|
|
lightColor = [NSColor colorWithCalibratedRed: 56.0/255.0 green: 56.0/255.0 blue: 56.0/255.0 alpha: 1.0];
|
|
darkColor = [NSColor colorWithCalibratedRed: 64.0/255.0 green: 64.0/255.0 blue: 64.0/255.0 alpha: 1.0];
|
|
gradient_dark = [[NSGradient alloc] initWithStartingColor: lightColor endingColor: darkColor];
|
|
}
|
|
return self;
|
|
}
|
|
|
|
- (void)drawRect:(NSRect)rect
|
|
{
|
|
const BOOL active = [[self window] isMainWindow];
|
|
|
|
NSInteger count = 0;
|
|
NSRect gridRects[2];
|
|
NSColor * colorRects[2];
|
|
|
|
NSRect lineBorderRect = NSMakeRect(NSMinX(rect), NSHeight([self bounds]) - 1.0, NSWidth(rect), 1.0);
|
|
|
|
Boolean isDarkMode = NO;
|
|
if (@available(macOS 10.14, *)) {
|
|
NSAppearance * appearance = [[NSApplication sharedApplication] effectiveAppearance];
|
|
NSAppearanceName basicAppearance = [appearance bestMatchFromAppearancesWithNames:@[NSAppearanceNameAqua, NSAppearanceNameDarkAqua]];
|
|
if ([basicAppearance isEqualToString:NSAppearanceNameDarkAqua]) {
|
|
isDarkMode = YES;
|
|
}
|
|
}
|
|
|
|
if (NSIntersectsRect(lineBorderRect, rect))
|
|
{
|
|
gridRects[count] = lineBorderRect;
|
|
if (isDarkMode)
|
|
colorRects[count] = [NSColor colorWithCalibratedWhite: 0.40 alpha: 1.0];
|
|
else
|
|
colorRects[count] = [NSColor colorWithCalibratedWhite: 0.75 alpha: 1.0];
|
|
++count;
|
|
|
|
rect.size.height -= 1.0;
|
|
}
|
|
|
|
lineBorderRect.origin.y = 0.0;
|
|
if (NSIntersectsRect(lineBorderRect, rect))
|
|
{
|
|
gridRects[count] = lineBorderRect;
|
|
if (isDarkMode)
|
|
colorRects[count] = active ? [NSColor colorWithCalibratedWhite: 0.60 alpha: 1.0] : [NSColor colorWithCalibratedWhite: 0.4 alpha: 1.0];
|
|
else
|
|
colorRects[count] = active ? [NSColor colorWithCalibratedWhite: 0.25 alpha: 1.0]
|
|
: [NSColor colorWithCalibratedWhite: 0.5 alpha: 1.0];
|
|
++count;
|
|
|
|
rect.origin.y += 1.0;
|
|
rect.size.height -= 1.0;
|
|
}
|
|
|
|
if (!NSIsEmptyRect(rect))
|
|
{
|
|
const NSRect gradientRect = NSMakeRect(NSMinX(rect), 1.0, NSWidth(rect), NSHeight([self bounds]) - 1.0 - 1.0); //proper gradient requires the full height of the bar
|
|
if (isDarkMode)
|
|
[gradient_dark drawInRect: gradientRect angle: 270.0];
|
|
else
|
|
[gradient_light drawInRect: gradientRect angle: 270.0];
|
|
}
|
|
|
|
NSRectFillListWithColors(gridRects, colorRects, count);
|
|
}
|
|
|
|
@end
|
|
|