cog/Preferences/Preferences/ColorToValueTransformer.m

52 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