Revision: 22868 http://sourceforge.net/p/bibdesk/svn/22868 Author: hofman Date: 2018-10-26 09:30:16 +0000 (Fri, 26 Oct 2018) Log Message: ----------- Add class factory methods for dynamic colors
Modified Paths: -------------- trunk/bibdesk/NSColor_BDSKExtensions.h trunk/bibdesk/NSColor_BDSKExtensions.m Modified: trunk/bibdesk/NSColor_BDSKExtensions.h =================================================================== --- trunk/bibdesk/NSColor_BDSKExtensions.h 2018-10-26 09:24:59 UTC (rev 22867) +++ trunk/bibdesk/NSColor_BDSKExtensions.h 2018-10-26 09:30:16 UTC (rev 22868) @@ -39,8 +39,14 @@ #import <Cocoa/Cocoa.h> +extern BOOL BDSKHasDarkAppearance(id object); + @interface NSColor (BDSKExtensions) ++ (NSColor *)colorWithLightColor:(NSColor *)aLightColor darkColor:(NSColor *)aDarkColor; ++ (NSColor *)colorWithCalibratedLightWhite:(CGFloat)lightWhite darkWhite:(CGFloat)darkWhite alpha:(CGFloat)alpha; ++ (NSColor *)colorWithCalibratedLightRed:(CGFloat)lightRed lightGreen:(CGFloat)lightGreen lightBlue:(CGFloat)lightBlue darkRed:(CGFloat)darkRed darkGreen:(CGFloat)darkGreen darkBlue:(CGFloat)darkBlue alpha:(CGFloat)alpha; + + (NSArray *)alternateControlAlternatingRowBackgroundColors; + (NSColor *)keySourceListHighlightColor; Modified: trunk/bibdesk/NSColor_BDSKExtensions.m =================================================================== --- trunk/bibdesk/NSColor_BDSKExtensions.m 2018-10-26 09:24:59 UTC (rev 22867) +++ trunk/bibdesk/NSColor_BDSKExtensions.m 2018-10-26 09:30:16 UTC (rev 22868) @@ -73,26 +73,19 @@ id appearance = nil; if (object == nil) appearance = [NSClassFromString(@"NSAppearance") currentAppearance]; - else if ([object respondsToSelector:@selector(effectiveAppearance)]) { + else if ([object respondsToSelector:@selector(effectiveAppearance)]) appearance = [object effectiveAppearance]; return [appearance bestMatchFromAppearancesWithNames:[NSArray arrayWithObjects:@"NSAppearanceNameAqua", @"NSAppearanceNameDarkAqua"]] isEqualToString:@"NSAppearanceNameDarkAqua"]; - } -#endif - return NO; } - - void BDSKSetHasDarkAppearance(id object) { -#ifdef DARK_MODE - if (RUNNING_AFTER(10_13) && [object respondsToSelector:@selector(setAppearance:)]) { - [object setAppearance:[NSAppearance appearanceNamed:@"NSAppearanceNameDarkAqua"]; - } #endif - } + return NO; +} @interface BDSKDynamicColor : NSColor { NSColor *lightColor; NSColor *darkColor; } +- (id)initWithLightColor:(NSColor *)aLightColor darkColor:(NSColor *)aDarkColor; @end #pragma mark - @@ -99,6 +92,22 @@ @implementation NSColor (BDSKExtensions) ++ (NSColor *)colorWithLightColor:(NSColor *)aLightColor darkColor:(NSColor *)aDarkColor { +#ifdef DARK_MODE + return [[[BDSKDynamicColor alloc] initWithLightColor:aLightColor darkColor:aDarkColor] autorelease]; +#else + return aLightColor; +#endif +} + ++ (NSColor *)colorWithCalibratedLightWhite:(CGFloat)lightWhite darkWhite:(CGFloat)darkWhite alpha:(CGFloat)alpha { + return [self colorWithLightColor:[NSColor colorWithCalibratedWhite:lightWhite alpha:alpha] darkColor:[NSColor colorWithCalibratedWhite:darkWhite alpha:alpha]]; +} + ++ (NSColor *)colorWithCalibratedLightRed:(CGFloat)lightRed lightGreen:(CGFloat)lightGreen lightBlue:(CGFloat)lightBlue darkRed:(CGFloat)darkRed darkGreen:(CGFloat)darkGreen darkBlue:(CGFloat)darkBlue alpha:(CGFloat)alpha { + return [self colorWithLightColor:[NSColor colorWithCalibratedRed:lightRed green:lightGreen blue:lightBlue alpha:alpha] darkColor:[NSColor colorWithCalibratedRed:darkRed green:darkGreen blue:darkBlue alpha:alpha]]; +} + + (NSArray *)alternateControlAlternatingRowBackgroundColors { if ([NSColor currentControlTint] == NSGraphiteControlTint) return [self controlAlternatingRowBackgroundColors]; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. _______________________________________________ Bibdesk-commit mailing list Bibdesk-commit@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/bibdesk-commit