diff --git a/Source/NSColor.m b/Source/NSColor.m index 474829248..2b728e5c3 100644 --- a/Source/NSColor.m +++ b/Source/NSColor.m @@ -2361,6 +2361,27 @@ static NSRecursiveLock *namedColorLock = nil; *alpha = _alpha_component; } +- (NSUInteger) hash +{ + union { + uint8_t bytes[sizeof(float)*5]; + float floats[5]; + } u; + NSUInteger h = 0; + unsigned i; + + u.floats[0] = _cyan_component; + u.floats[1] = _magenta_component; + u.floats[2] = _yellow_component; + u.floats[3] = _black_component; + u.floats[4] = _alpha_component; + for (i = 0; i < sizeof(u); i++) + { + h = (h << 5) + h + u.bytes[i]; + } + return h; +} + - (BOOL) isEqual: (id)other { if (other == self) @@ -2600,6 +2621,25 @@ static NSRecursiveLock *namedColorLock = nil; *alpha = _alpha_component; } +- (NSUInteger) hash +{ + union { + uint8_t bytes[sizeof(float)*3]; + float floats[3]; + } u; + NSUInteger h = 0; + unsigned i; + + u.floats[0] = _red_component; + u.floats[1] = _green_component; + u.floats[2] = _blue_component; + for (i = 0; i < sizeof(u); i++) + { + h = (h << 5) + h + u.bytes[i]; + } + return h; +} + - (BOOL) isEqual: (id)other { if (other == self) @@ -3104,6 +3144,11 @@ static NSRecursiveLock *namedColorLock = nil; return desc; } +- (NSUInteger) hash +{ + return [_pattern hash]; +} + - (BOOL) isEqual: (id)other { if (other == self)