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