Cog/Preferences/Preferences/ColorToValueTransformer.m
Christopher Snowhill 5b6dacd29c Cog now requires macOS 10.13 as a minimum version
All optional fallback code for older versions has also been removed, and
everything now assumes 10.13.0 or newer. Some cases are still included
for point releases, such as 10.13.2.

Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2022-06-22 22:54:32 -07:00

51 lines
1.4 KiB
Objective-C

//
// ColorToValueTransformer.m
// Preferences
//
// Created by Christopher Snowhill on 5/22/22.
//
#import "ColorToValueTransformer.h"
@implementation ColorToValueTransformer
+ (Class)transformedValueClass {
return [NSColor class];
}
+ (BOOL)allowsReverseTransformation {
return YES;
}
// Convert from string to NSURL
- (id)reverseTransformedValue:(id)value {
if(value == nil) return nil;
NSError *error;
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:value
requiringSecureCoding:YES
error:&error];
return data;
}
- (id)transformedValue:(id)value {
if(value == nil) return [NSColor colorWithRed:0 green:0 blue:0 alpha:1.0];
NSError *error;
NSColor *color = nil;
if(@available(macOS 11.0, *)) {
color = (NSColor *)[NSKeyedUnarchiver unarchivedArrayOfObjectsOfClass:[NSColor class]
fromData:value
error:&error];
} else {
NSSet *allowed = [NSSet setWithArray:@[[NSColor class]]];
color = (NSColor *)[NSKeyedUnarchiver unarchivedObjectOfClasses:allowed
fromData:value
error:&error];
}
return color;
}
@end