Revision: 12454
          http://sourceforge.net/p/skim-app/code/12454
Author:   hofman
Date:     2021-10-05 14:56:48 +0000 (Tue, 05 Oct 2021)
Log Message:
-----------
Make sepia tone hidden pref accessible through AppleScript. Observe changes to 
the preference.

Modified Paths:
--------------
    trunk/NSGraphics_SKExtensions.m
    trunk/SKApplicationController.h
    trunk/SKApplicationController.m
    trunk/SKBasePDFView.h
    trunk/SKBasePDFView.m
    trunk/SKPDFView.m
    trunk/SKStringConstants.h
    trunk/SKStringConstants.m
    trunk/SKThumbnailImageView.m
    trunk/Skim.sdef

Modified: trunk/NSGraphics_SKExtensions.m
===================================================================
--- trunk/NSGraphics_SKExtensions.m     2021-10-04 15:47:30 UTC (rev 12453)
+++ trunk/NSGraphics_SKExtensions.m     2021-10-05 14:56:48 UTC (rev 12454)
@@ -186,7 +186,7 @@
 
 extern NSArray *SKColorEffectFilters(void) {
     NSMutableArray *filters = [NSMutableArray array];
-    CGFloat sepia = [[NSUserDefaults standardUserDefaults] 
doubleForKey:@"SKSepiaTone"];
+    CGFloat sepia = [[NSUserDefaults standardUserDefaults] 
doubleForKey:SKSepiaToneKey];
     if (sepia > 0.0)
         [filters addObject:[CIFilter filterWithName:@"CISepiaTone" 
keysAndValues:@"inputIntensity", [NSNumber numberWithDouble:fmin(sepia, 1.0)], 
nil]];
     if (SKHasDarkAppearance(NSApp) && [[NSUserDefaults standardUserDefaults] 
boolForKey:SKInvertColorsInDarkModeKey]) {

Modified: trunk/SKApplicationController.h
===================================================================
--- trunk/SKApplicationController.h     2021-10-04 15:47:30 UTC (rev 12453)
+++ trunk/SKApplicationController.h     2021-10-05 14:56:48 UTC (rev 12454)
@@ -68,6 +68,7 @@
 @property (nonatomic, copy) NSColor *backgroundColor, 
*fullScreenBackgroundColor, *pageBackgroundColor, *defaultTextNoteFontColor;
 @property (nonatomic, copy) NSDictionary *defaultNoteColors, 
*defaultLineWidths, *defaultLineStyles, *defaultDashPatterns, 
*defaultFontNames, *defaultFontSizes;
 @property (nonatomic, copy) NSArray *favoriteColors;
+@property (nonatomic) CGFloat sepiaTone;
 @property (nonatomic) PDFLineStyle defaultStartLineStyle, defaultEndLineStyle;
 @property (nonatomic) NSTextAlignment defaultAlignment;
 @property (nonatomic) PDFTextAnnotationIconType defaultIconType;

Modified: trunk/SKApplicationController.m
===================================================================
--- trunk/SKApplicationController.m     2021-10-04 15:47:30 UTC (rev 12453)
+++ trunk/SKApplicationController.m     2021-10-05 14:56:48 UTC (rev 12454)
@@ -476,7 +476,7 @@
         applicationScriptingKeys = [[NSSet alloc] 
initWithObjects:@"bookmarks", @"downloads", 
             @"defaultPdfViewSettings", @"defaultFullScreenPdfViewSettings", 
@"backgroundColor", @"fullScreenBackgroundColor", @"pageBackgroundColor", 
             @"defaultNoteColors", @"defaultLineWidths", @"defaultLineStyles", 
@"defaultDashPatterns", @"defaultStartLineStyle", @"defaultEndLineStyle", 
@"defaultFontNames", @"defaultFontSizes", @"defaultTextNoteFontColor", 
@"defaultAlignment", @"defaultIconType", 
-            @"favoriteColors", nil];
+            @"favoriteColors", @"sepiaTone", nil];
        return [applicationScriptingKeys containsObject:key];
 }
 
@@ -814,4 +814,15 @@
     [[NSUserDefaults standardUserDefaults] setObject:[transformer 
reverseTransformedValue:array] forKey:SKSwatchColorsKey];
 }
 
+- (CGFloat)sepiaTone {
+    return [[NSUserDefaults standardUserDefaults] doubleForKey:SKSepiaToneKey];
+}
+
+- (void)setSepiaTone:(CGFloat)sepiaTone {
+    if (sepiaTone <= 0.0)
+        [[NSUserDefaults standardUserDefaults] 
removeObjectForKey:SKSepiaToneKey];
+    else
+        [[NSUserDefaults standardUserDefaults] setDouble:fmin(sepiaTone, 1.0) 
forKey:SKSepiaToneKey];
+}
+
 @end

Modified: trunk/SKBasePDFView.h
===================================================================
--- trunk/SKBasePDFView.h       2021-10-04 15:47:30 UTC (rev 12453)
+++ trunk/SKBasePDFView.h       2021-10-05 14:56:48 UTC (rev 12454)
@@ -42,6 +42,6 @@
 
 @interface SKBasePDFView : PDFView
 
-- (void)invertColorsInDarkModeDidChange;
+- (void)colorFiltersDidChange;
 
 @end

Modified: trunk/SKBasePDFView.m
===================================================================
--- trunk/SKBasePDFView.m       2021-10-04 15:47:30 UTC (rev 12453)
+++ trunk/SKBasePDFView.m       2021-10-05 14:56:48 UTC (rev 12454)
@@ -70,6 +70,13 @@
 
 #pragma mark Dark mode and color inversion
 
+static inline NSArray *defaultKeysToObserve() {
+    if (RUNNING_AFTER(10_13))
+        return [NSArray arrayWithObjects:SKInvertColorsInDarkModeKey, 
SKSepiaToneKey, nil];
+    else
+        return [NSArray arrayWithObjects:SKSepiaToneKey, nil];
+}
+
 // make sure we don't use the same method name as a superclass or a subclass
 - (void)commonBaseInitialization {
     if (RUNNING_AFTER(10_13)) {
@@ -77,14 +84,15 @@
         SKSetHasLightAppearance([[self scrollView] contentView]);
         if ([[NSUserDefaults standardUserDefaults] 
boolForKey:SKInvertColorsInDarkModeKey])
             SKSetHasLightAppearance([self scrollView]);
-            [[self scrollView] setContentFilters:SKColorEffectFilters()];
         [self handleScrollerStyleChangedNotification:nil];
         
         [[NSNotificationCenter defaultCenter] addObserver:self 
selector:@selector(handleScrollerStyleChangedNotification:)
                                                      
name:NSPreferredScrollerStyleDidChangeNotification object:nil];
-        
-        [[NSUserDefaultsController sharedUserDefaultsController] 
addObserver:self forKey:SKInvertColorsInDarkModeKey 
context:&SKBasePDFViewDefaultsObservationContext];
     }
+    
+    [[self scrollView] setContentFilters:SKColorEffectFilters()];
+    
+    [[NSUserDefaultsController sharedUserDefaultsController] addObserver:self 
forKeys:defaultKeysToObserve() 
context:&SKBasePDFViewDefaultsObservationContext];
 }
 
 - (id)initWithFrame:(NSRect)frameRect {
@@ -104,10 +112,8 @@
 }
 
 - (void)dealloc {
-    if (RUNNING_AFTER(10_13)) {
-        @try { [[NSUserDefaultsController sharedUserDefaultsController] 
removeObserver:self forKey:SKInvertColorsInDarkModeKey 
context:&SKBasePDFViewDefaultsObservationContext]; }
-        @catch (id e) {}
-    }
+    @try { [[NSUserDefaultsController sharedUserDefaultsController] 
removeObserver:self forKeys:defaultKeysToObserve() 
context:&SKBasePDFViewDefaultsObservationContext]; }
+    @catch (id e) {}
     [[NSNotificationCenter defaultCenter] removeObserver:self];
     [super dealloc];
 }
@@ -114,12 +120,12 @@
 
 - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object 
change:(NSDictionary *)change context:(void *)context {
     if (context == &SKBasePDFViewDefaultsObservationContext)
-        [self invertColorsInDarkModeDidChange];
+        [self colorFiltersDidChange];
     else
         [super observeValueForKeyPath:keyPath ofObject:object change:change 
context:context];
 }
 
-- (void)invertColorsInDarkModeDidChange {
+- (void)colorFiltersDidChange {
     if ([[NSUserDefaults standardUserDefaults] 
boolForKey:SKInvertColorsInDarkModeKey]) {
         SKSetHasLightAppearance([self scrollView]);
     } else {

Modified: trunk/SKPDFView.m
===================================================================
--- trunk/SKPDFView.m   2021-10-04 15:47:30 UTC (rev 12453)
+++ trunk/SKPDFView.m   2021-10-05 14:56:48 UTC (rev 12454)
@@ -3078,8 +3078,8 @@
     }
 }
 
-- (void)invertColorsInDarkModeDidChange {
-    [super invertColorsInDarkModeDidChange];
+- (void)colorFiltersDidChange {
+    [super colorFiltersDidChange];
     if (loupeWindow) {
         [[loupeWindow contentView] setContentFilters:SKColorEffectFilters()];
         if ([[NSUserDefaults standardUserDefaults] 
boolForKey:SKInvertColorsInDarkModeKey])

Modified: trunk/SKStringConstants.h
===================================================================
--- trunk/SKStringConstants.h   2021-10-04 15:47:30 UTC (rev 12453)
+++ trunk/SKStringConstants.h   2021-10-05 14:56:48 UTC (rev 12454)
@@ -142,3 +142,4 @@
 extern NSString *SKDisplayPageBoundsKey;
 extern NSString *SKDisableHistoryHighlightsKey;
 extern NSString *SKInvertColorsInDarkModeKey;
+extern NSString *SKSepiaToneKey;

Modified: trunk/SKStringConstants.m
===================================================================
--- trunk/SKStringConstants.m   2021-10-04 15:47:30 UTC (rev 12453)
+++ trunk/SKStringConstants.m   2021-10-05 14:56:48 UTC (rev 12454)
@@ -143,3 +143,4 @@
 NSString *SKDisplayPageBoundsKey = @"SKDisplayPageBounds";
 NSString *SKDisableHistoryHighlightsKey = @"SKDisableHistoryHighlights";
 NSString *SKInvertColorsInDarkModeKey = @"SKInvertColorsInDarkMode";
+NSString *SKSepiaToneKey = @"SKSepiaTone";

Modified: trunk/SKThumbnailImageView.m
===================================================================
--- trunk/SKThumbnailImageView.m        2021-10-04 15:47:30 UTC (rev 12453)
+++ trunk/SKThumbnailImageView.m        2021-10-05 14:56:48 UTC (rev 12454)
@@ -45,12 +45,17 @@
 
 @implementation SKThumbnailImageView
 
+static inline NSArray *defaultKeysToObserve() {
+    if (RUNNING_AFTER(10_13))
+        return [NSArray arrayWithObjects:SKInvertColorsInDarkModeKey, 
SKSepiaToneKey, nil];
+    else
+        return [NSArray arrayWithObjects:SKSepiaToneKey, nil];
+}
+
 - (void)commonInit {
     [self setWantsLayer:YES];
     [self setContentFilters:SKColorEffectFilters()];
-    if (RUNNING_AFTER(10_13)) {
-        [[NSUserDefaultsController sharedUserDefaultsController] 
addObserver:self forKey:SKInvertColorsInDarkModeKey 
context:&SKThumbnailImageViewDefaultsObservationContext];
-    }
+    [[NSUserDefaultsController sharedUserDefaultsController] addObserver:self 
forKeys:defaultKeysToObserve() 
context:&SKThumbnailImageViewDefaultsObservationContext];
 }
 
 - (id)initWithFrame:(NSRect)frameRect {
@@ -69,10 +74,8 @@
     return self;
 }
 - (void)dealloc {
-    if (RUNNING_AFTER(10_13)) {
-        @try { [[NSUserDefaultsController sharedUserDefaultsController] 
removeObserver:self forKey:SKInvertColorsInDarkModeKey 
context:&SKThumbnailImageViewDefaultsObservationContext]; }
-        @catch (id e) {}
-    }
+    @try { [[NSUserDefaultsController sharedUserDefaultsController] 
removeObserver:self forKeys:defaultKeysToObserve() 
context:&SKThumbnailImageViewDefaultsObservationContext]; }
+    @catch (id e) {}
     [super dealloc];
 }
 
@@ -86,16 +89,10 @@
 }
 
 - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object 
change:(NSDictionary *)change context:(void *)context {
-    if (context == &SKThumbnailImageViewDefaultsObservationContext) {
-        if (SKHasDarkAppearance(NSApp)) {
-            if ([[NSUserDefaults standardUserDefaults] 
boolForKey:SKInvertColorsInDarkModeKey])
-                [self setContentFilters:SKColorEffectFilters()];
-            else
-                [self setContentFilters:[NSArray array]];
-        }
-    } else {
+    if (context == &SKThumbnailImageViewDefaultsObservationContext)
+        [self setContentFilters:SKColorEffectFilters()];
+    else
         [super observeValueForKeyPath:keyPath ofObject:object change:change 
context:context];
-    }
 }
 
 @end

Modified: trunk/Skim.sdef
===================================================================
--- trunk/Skim.sdef     2021-10-04 15:47:30 UTC (rev 12453)
+++ trunk/Skim.sdef     2021-10-05 14:56:48 UTC (rev 12454)
@@ -920,6 +920,10 @@
                 <type type="RGBA color" list="yes"/>
                 <cocoa key="favoriteColors"/>
             </property>
+            <property name="sepia tone" type="real" code="SepT"
+                description="Intensity of a sepia tone effect applied to the 
PDF content.">
+                <cocoa key="sepiaTone"/>
+            </property>
         </class-extension>
 
         <class-extension extends="document"

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.



_______________________________________________
Skim-app-commit mailing list
Skim-app-commit@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/skim-app-commit

Reply via email to