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

Reply via email to