628 lines
24 KiB
Objective-C
628 lines
24 KiB
Objective-C
//
|
|
// IJSVGColor.m
|
|
// IconJar
|
|
//
|
|
// Created by Curtis Hard on 31/08/2014.
|
|
// Copyright (c) 2014 Curtis Hard. All rights reserved.
|
|
//
|
|
|
|
#import "IJSVGColor.h"
|
|
#import "IJSVGUtils.h"
|
|
|
|
@implementation IJSVGColor
|
|
|
|
static NSMutableDictionary * _colorTree = nil;
|
|
|
|
|
|
+ (void)load
|
|
{
|
|
[[self class] _generateTree];
|
|
}
|
|
|
|
+ (void)_generateTree
|
|
{
|
|
static dispatch_once_t onceToken;
|
|
dispatch_once(&onceToken, ^{
|
|
|
|
_colorTree = [[NSMutableDictionary alloc] init];
|
|
// add the colours in
|
|
[_colorTree setObject:@"f0f8ff" forKey:@"aliceblue"];
|
|
[_colorTree setObject:@"faebd7" forKey:@"antiquewhite"];
|
|
[_colorTree setObject:@"00ffff" forKey:@"aqua"];
|
|
[_colorTree setObject:@"7fffd4" forKey:@"aquamarine"];
|
|
[_colorTree setObject:@"f0ffff" forKey:@"azure"];
|
|
[_colorTree setObject:@"f5f5dc" forKey:@"beige"];
|
|
[_colorTree setObject:@"ffe4c4" forKey:@"bisque"];
|
|
[_colorTree setObject:@"000000" forKey:@"black"];
|
|
[_colorTree setObject:@"ffebcd" forKey:@"blanchedalmond"];
|
|
[_colorTree setObject:@"0000ff" forKey:@"blue"];
|
|
[_colorTree setObject:@"8a2be2" forKey:@"blueviolet"];
|
|
[_colorTree setObject:@"a52a2a" forKey:@"brown"];
|
|
[_colorTree setObject:@"deb887" forKey:@"burlywood"];
|
|
[_colorTree setObject:@"5f9ea0" forKey:@"cadetblue"];
|
|
[_colorTree setObject:@"7fff00" forKey:@"chartreuse"];
|
|
[_colorTree setObject:@"d2691e" forKey:@"chocolate"];
|
|
[_colorTree setObject:@"ff7f50" forKey:@"coral"];
|
|
[_colorTree setObject:@"6495ed" forKey:@"cornflowerblue"];
|
|
[_colorTree setObject:@"fff8dc" forKey:@"cornsilk"];
|
|
[_colorTree setObject:@"dc143c" forKey:@"crimson"];
|
|
[_colorTree setObject:@"000000" forKey:@"currentcolor"];
|
|
[_colorTree setObject:@"00ffff" forKey:@"cyan"];
|
|
[_colorTree setObject:@"00008b" forKey:@"darkblue"];
|
|
[_colorTree setObject:@"008b8b" forKey:@"darkcyan"];
|
|
[_colorTree setObject:@"b8860b" forKey:@"darkgoldenrod"];
|
|
[_colorTree setObject:@"a9a9a9" forKey:@"darkgray"];
|
|
[_colorTree setObject:@"006400" forKey:@"darkgreen"];
|
|
[_colorTree setObject:@"a9a9a9" forKey:@"darkgrey"];
|
|
[_colorTree setObject:@"bdb76b" forKey:@"darkkhaki"];
|
|
[_colorTree setObject:@"8b008b" forKey:@"darkmagenta"];
|
|
[_colorTree setObject:@"556b2f" forKey:@"darkolivegreen"];
|
|
[_colorTree setObject:@"ff8c00" forKey:@"darkorange"];
|
|
[_colorTree setObject:@"9932cc" forKey:@"darkorchid"];
|
|
[_colorTree setObject:@"8b0000" forKey:@"darkred"];
|
|
[_colorTree setObject:@"e9967a" forKey:@"darksalmon"];
|
|
[_colorTree setObject:@"8fbc8f" forKey:@"darkseagreen"];
|
|
[_colorTree setObject:@"483d8b" forKey:@"darkslateblue"];
|
|
[_colorTree setObject:@"2f4f4f" forKey:@"darkslategray"];
|
|
[_colorTree setObject:@"2f4f4f" forKey:@"darkslategrey"];
|
|
[_colorTree setObject:@"00ced1" forKey:@"darkturquoise"];
|
|
[_colorTree setObject:@"9400d3" forKey:@"darkviolet"];
|
|
[_colorTree setObject:@"ff1493" forKey:@"deeppink"];
|
|
[_colorTree setObject:@"00bfff" forKey:@"deepskyblue"];
|
|
[_colorTree setObject:@"696969" forKey:@"dimgray"];
|
|
[_colorTree setObject:@"696969" forKey:@"dimgrey"];
|
|
[_colorTree setObject:@"1e90ff" forKey:@"dodgerblue"];
|
|
[_colorTree setObject:@"b22222" forKey:@"firebrick"];
|
|
[_colorTree setObject:@"fffaf0" forKey:@"floralwhite"];
|
|
[_colorTree setObject:@"228b22" forKey:@"forestgreen"];
|
|
[_colorTree setObject:@"ff00ff" forKey:@"fuchsia"];
|
|
[_colorTree setObject:@"dcdcdc" forKey:@"gainsboro"];
|
|
[_colorTree setObject:@"f8f8ff" forKey:@"ghostwhite"];
|
|
[_colorTree setObject:@"ffd700" forKey:@"gold"];
|
|
[_colorTree setObject:@"daa520" forKey:@"goldenrod"];
|
|
[_colorTree setObject:@"808080" forKey:@"gray"];
|
|
[_colorTree setObject:@"008000" forKey:@"green"];
|
|
[_colorTree setObject:@"adff2f" forKey:@"greenyellow"];
|
|
[_colorTree setObject:@"808080" forKey:@"grey"];
|
|
[_colorTree setObject:@"f0fff0" forKey:@"honeydew"];
|
|
[_colorTree setObject:@"ff69b4" forKey:@"hotpink"];
|
|
[_colorTree setObject:@"cd5c5c" forKey:@"indianred"];
|
|
[_colorTree setObject:@"4b0082" forKey:@"indigo"];
|
|
[_colorTree setObject:@"fffff0" forKey:@"ivory"];
|
|
[_colorTree setObject:@"f0e68c" forKey:@"khaki"];
|
|
[_colorTree setObject:@"e6e6fa" forKey:@"lavender"];
|
|
[_colorTree setObject:@"fff0f5" forKey:@"lavenderblush"];
|
|
[_colorTree setObject:@"7cfc00" forKey:@"lawngreen"];
|
|
[_colorTree setObject:@"fffacd" forKey:@"lemonchiffon"];
|
|
[_colorTree setObject:@"add8e6" forKey:@"lightblue"];
|
|
[_colorTree setObject:@"f08080" forKey:@"lightcoral"];
|
|
[_colorTree setObject:@"e0ffff" forKey:@"lightcyan"];
|
|
[_colorTree setObject:@"fafad2" forKey:@"lightgoldenrodyellow"];
|
|
[_colorTree setObject:@"d3d3d3" forKey:@"lightgray"];
|
|
[_colorTree setObject:@"90ee90" forKey:@"lightgreen"];
|
|
[_colorTree setObject:@"d3d3d3" forKey:@"lightgrey"];
|
|
[_colorTree setObject:@"ffb6c1" forKey:@"lightpink"];
|
|
[_colorTree setObject:@"ffa07a" forKey:@"lightsalmon"];
|
|
[_colorTree setObject:@"20b2aa" forKey:@"lightseagreen"];
|
|
[_colorTree setObject:@"87cefa" forKey:@"lightskyblue"];
|
|
[_colorTree setObject:@"778899" forKey:@"lightslategray"];
|
|
[_colorTree setObject:@"778899" forKey:@"lightslategrey"];
|
|
[_colorTree setObject:@"b0c4de" forKey:@"lightsteelblue"];
|
|
[_colorTree setObject:@"ffffe0" forKey:@"lightyellow"];
|
|
[_colorTree setObject:@"00ff00" forKey:@"lime"];
|
|
[_colorTree setObject:@"32cd32" forKey:@"limegreen"];
|
|
[_colorTree setObject:@"faf0e6" forKey:@"linen"];
|
|
[_colorTree setObject:@"ff00ff" forKey:@"magenta"];
|
|
[_colorTree setObject:@"800000" forKey:@"maroon"];
|
|
[_colorTree setObject:@"66cdaa" forKey:@"mediumaquamarine"];
|
|
[_colorTree setObject:@"0000cd" forKey:@"mediumblue"];
|
|
[_colorTree setObject:@"ba55d3" forKey:@"mediumorchid"];
|
|
[_colorTree setObject:@"9370db" forKey:@"mediumpurple"];
|
|
[_colorTree setObject:@"3cb371" forKey:@"mediumseagreen"];
|
|
[_colorTree setObject:@"7b68ee" forKey:@"mediumslateblue"];
|
|
[_colorTree setObject:@"00fa9a" forKey:@"mediumspringgreen"];
|
|
[_colorTree setObject:@"48d1cc" forKey:@"mediumturquoise"];
|
|
[_colorTree setObject:@"c71585" forKey:@"mediumvioletred"];
|
|
[_colorTree setObject:@"191970" forKey:@"midnightblue"];
|
|
[_colorTree setObject:@"f5fffa" forKey:@"mintcream"];
|
|
[_colorTree setObject:@"ffe4e1" forKey:@"mistyrose"];
|
|
[_colorTree setObject:@"ffe4b5" forKey:@"moccasin"];
|
|
[_colorTree setObject:@"ffdead" forKey:@"navajowhite"];
|
|
[_colorTree setObject:@"000080" forKey:@"navy"];
|
|
[_colorTree setObject:@"fdf5e6" forKey:@"oldlace"];
|
|
[_colorTree setObject:@"808000" forKey:@"olive"];
|
|
[_colorTree setObject:@"6b8e23" forKey:@"olivedrab"];
|
|
[_colorTree setObject:@"ffa500" forKey:@"orange"];
|
|
[_colorTree setObject:@"ff4500" forKey:@"orangered"];
|
|
[_colorTree setObject:@"da70d6" forKey:@"orchid"];
|
|
[_colorTree setObject:@"eee8aa" forKey:@"palegoldenrod"];
|
|
[_colorTree setObject:@"98fb98" forKey:@"palegreen"];
|
|
[_colorTree setObject:@"afeeee" forKey:@"paleturquoise"];
|
|
[_colorTree setObject:@"db7093" forKey:@"palevioletred"];
|
|
[_colorTree setObject:@"ffefd5" forKey:@"papayawhip"];
|
|
[_colorTree setObject:@"ffdab9" forKey:@"peachpuff"];
|
|
[_colorTree setObject:@"cd853f" forKey:@"peru"];
|
|
[_colorTree setObject:@"ffc0cb" forKey:@"pink"];
|
|
[_colorTree setObject:@"dda0dd" forKey:@"plum"];
|
|
[_colorTree setObject:@"b0e0e6" forKey:@"powderblue"];
|
|
[_colorTree setObject:@"800080" forKey:@"purple"];
|
|
[_colorTree setObject:@"ff0000" forKey:@"red"];
|
|
[_colorTree setObject:@"bc8f8f" forKey:@"rosybrown"];
|
|
[_colorTree setObject:@"4169e1" forKey:@"royalblue"];
|
|
[_colorTree setObject:@"8b4513" forKey:@"saddlebrown"];
|
|
[_colorTree setObject:@"fa8072" forKey:@"salmon"];
|
|
[_colorTree setObject:@"f4a460" forKey:@"sandybrown"];
|
|
[_colorTree setObject:@"2e8b57" forKey:@"seagreen"];
|
|
[_colorTree setObject:@"fff5ee" forKey:@"seashell"];
|
|
[_colorTree setObject:@"a0522d" forKey:@"sienna"];
|
|
[_colorTree setObject:@"c0c0c0" forKey:@"silver"];
|
|
[_colorTree setObject:@"87ceeb" forKey:@"skyblue"];
|
|
[_colorTree setObject:@"6a5acd" forKey:@"slateblue"];
|
|
[_colorTree setObject:@"708090" forKey:@"slategray"];
|
|
[_colorTree setObject:@"708090" forKey:@"slategrey"];
|
|
[_colorTree setObject:@"fffafa" forKey:@"snow"];
|
|
[_colorTree setObject:@"00ff7f" forKey:@"springgreen"];
|
|
[_colorTree setObject:@"4682b4" forKey:@"steelblue"];
|
|
[_colorTree setObject:@"d2b48c" forKey:@"tan"];
|
|
[_colorTree setObject:@"008080" forKey:@"teal"];
|
|
[_colorTree setObject:@"d8bfd8" forKey:@"thistle"];
|
|
[_colorTree setObject:@"ff6347" forKey:@"tomato"];
|
|
[_colorTree setObject:@"40e0d0" forKey:@"turquoise"];
|
|
[_colorTree setObject:@"ee82ee" forKey:@"violet"];
|
|
[_colorTree setObject:@"f5deb3" forKey:@"wheat"];
|
|
[_colorTree setObject:@"ffffff" forKey:@"white"];
|
|
[_colorTree setObject:@"f5f5f5" forKey:@"whitesmoke"];
|
|
[_colorTree setObject:@"ffff00" forKey:@"yellow"];
|
|
[_colorTree setObject:@"9acd32" forKey:@"yellowgreen"];
|
|
});
|
|
}
|
|
|
|
+ (NSColor *)computeColor:(id)colour
|
|
{
|
|
if( [colour isKindOfClass:[NSColor class]] )
|
|
return colour;
|
|
return nil;
|
|
}
|
|
|
|
+ (NSColor *)colorFromString:(NSString *)string
|
|
{
|
|
if( [string length] < 3 )
|
|
return nil;
|
|
|
|
string = [string lowercaseString];
|
|
NSColor * color = [[self class] colorFromPredefinedColorName:string];
|
|
if( color != nil )
|
|
return color;
|
|
|
|
if( [[string lowercaseString] isEqualToString:@"none"] )
|
|
return [NSColor clearColor];
|
|
|
|
// is it RGB?
|
|
if( [[string substringToIndex:3] isEqualToString:@"rgb"] )
|
|
{
|
|
NSInteger count = 0;
|
|
CGFloat * params = [IJSVGUtils commandParameters:string
|
|
count:&count];
|
|
CGFloat alpha = 1;
|
|
if( count == 4 )
|
|
alpha = params[3];
|
|
color = [NSColor colorWithDeviceRed:params[0]/255
|
|
green:params[1]/255
|
|
blue:params[2]/255
|
|
alpha:alpha];
|
|
free(params);
|
|
return color;
|
|
}
|
|
|
|
color = [[self class] colorFromHEXString:string
|
|
alpha:1.f];
|
|
return color;
|
|
}
|
|
|
|
+ (NSColor *)colorFromPredefinedColorName:(NSString *)name
|
|
{
|
|
NSString * hex = nil;
|
|
name = [name.lowercaseString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
|
|
if( ( hex = [_colorTree objectForKey:name] ) == nil )
|
|
return nil;
|
|
return [[self class] colorFromHEXString:hex
|
|
alpha:1.f];
|
|
}
|
|
|
|
+ (NSString *)colorStringFromColor:(NSColor *)color
|
|
{
|
|
return [self colorStringFromColor:color
|
|
forceHex:NO];
|
|
}
|
|
|
|
+ (NSString *)colorStringFromColor:(NSColor *)color
|
|
forceHex:(BOOL)forceHex
|
|
{
|
|
// convert to RGB
|
|
color = [color colorUsingColorSpace:[NSColorSpace deviceRGBColorSpace]];
|
|
|
|
int red = color.redComponent * 0xFF;
|
|
int green = color.greenComponent * 0xFF;
|
|
int blue = color.blueComponent * 0xFF;
|
|
int alpha = (int)(color.alphaComponent*100);
|
|
|
|
// jsut return none
|
|
if(alpha == 0 && forceHex == NO) {
|
|
return @"none";
|
|
}
|
|
|
|
// always return hex unless criteria is met
|
|
if(forceHex || alpha == 100 ||
|
|
(red == 0 && green == 0 && blue == 0 && alpha == 0) ||
|
|
(red == 255 && green == 255 && blue == 255 && alpha == 100)) {
|
|
// just return hex
|
|
return [NSString stringWithFormat:@"#%02X%02X%02X",red,green,blue];
|
|
}
|
|
|
|
// note the %g, CSS alpha is 0 to 1, not 0 - 100, my bad!
|
|
return [NSString stringWithFormat:@"rgba(%d, %d, %d, %g)",red, green, blue,
|
|
((float)alpha/100.f)];
|
|
}
|
|
|
|
+ (NSString *)colorNameFromPredefinedColor:(IJSVGPredefinedColor)color
|
|
{
|
|
switch(color)
|
|
{
|
|
case IJSVGColorAliceblue:
|
|
return @"aliceblue";
|
|
case IJSVGColorAntiquewhite:
|
|
return @"antiquewhite";
|
|
case IJSVGColorAqua:
|
|
return @"aqua";
|
|
case IJSVGColorAquamarine:
|
|
return @"aquamarine";
|
|
case IJSVGColorAzure:
|
|
return @"azure";
|
|
case IJSVGColorBeige:
|
|
return @"beige";
|
|
case IJSVGColorBisque:
|
|
return @"bisque";
|
|
case IJSVGColorBlack:
|
|
return @"black";
|
|
case IJSVGColorBlanchedalmond:
|
|
return @"blanchedalmond";
|
|
case IJSVGColorBlue:
|
|
return @"blue";
|
|
case IJSVGColorBlueviolet:
|
|
return @"blueviolet";
|
|
case IJSVGColorBrown:
|
|
return @"brown";
|
|
case IJSVGColorBurlywood:
|
|
return @"burlywood";
|
|
case IJSVGColorCadetblue:
|
|
return @"cadetblue";
|
|
case IJSVGColorChartreuse:
|
|
return @"chartreuse";
|
|
case IJSVGColorChocolate:
|
|
return @"chocolate";
|
|
case IJSVGColorCoral:
|
|
return @"coral";
|
|
case IJSVGColorCornflowerblue:
|
|
return @"cornflowerblue";
|
|
case IJSVGColorCornsilk:
|
|
return @"cornsilk";
|
|
case IJSVGColorCrimson:
|
|
return @"crimson";
|
|
case IJSVGColorCyan:
|
|
return @"cyan";
|
|
case IJSVGColorDarkblue:
|
|
return @"darkblue";
|
|
case IJSVGColorDarkcyan:
|
|
return @"darkcyan";
|
|
case IJSVGColorDarkgoldenrod:
|
|
return @"darkgoldenrod";
|
|
case IJSVGColorDarkgray:
|
|
return @"darkgray";
|
|
case IJSVGColorDarkgreen:
|
|
return @"darkgreen";
|
|
case IJSVGColorDarkgrey:
|
|
return @"darkgrey";
|
|
case IJSVGColorDarkkhaki:
|
|
return @"darkkhaki";
|
|
case IJSVGColorDarkmagenta:
|
|
return @"darkmagenta";
|
|
case IJSVGColorDarkolivegreen:
|
|
return @"darkolivegreen";
|
|
case IJSVGColorDarkorange:
|
|
return @"darkorange";
|
|
case IJSVGColorDarkorchid:
|
|
return @"darkorchid";
|
|
case IJSVGColorDarkred:
|
|
return @"darkred";
|
|
case IJSVGColorDarksalmon:
|
|
return @"darksalmon";
|
|
case IJSVGColorDarkseagreen:
|
|
return @"darkseagreen";
|
|
case IJSVGColorDarkslateblue:
|
|
return @"darkslateblue";
|
|
case IJSVGColorDarkslategray:
|
|
return @"darkslategray";
|
|
case IJSVGColorDarkslategrey:
|
|
return @"darkslategrey";
|
|
case IJSVGColorDarkturquoise:
|
|
return @"darkturquoise";
|
|
case IJSVGColorDarkviolet:
|
|
return @"darkviolet";
|
|
case IJSVGColorDeeppink:
|
|
return @"deeppink";
|
|
case IJSVGColorDeepskyblue:
|
|
return @"deepskyblue";
|
|
case IJSVGColorDimgray:
|
|
return @"dimgray";
|
|
case IJSVGColorDimgrey:
|
|
return @"dimgrey";
|
|
case IJSVGColorDodgerblue:
|
|
return @"dodgerblue";
|
|
case IJSVGColorFirebrick:
|
|
return @"firebrick";
|
|
case IJSVGColorFloralwhite:
|
|
return @"floralwhite";
|
|
case IJSVGColorForestgreen:
|
|
return @"forestgreen";
|
|
case IJSVGColorFuchsia:
|
|
return @"fuchsia";
|
|
case IJSVGColorGainsboro:
|
|
return @"gainsboro";
|
|
case IJSVGColorGhostwhite:
|
|
return @"ghostwhite";
|
|
case IJSVGColorGold:
|
|
return @"gold";
|
|
case IJSVGColorGoldenrod:
|
|
return @"goldenrod";
|
|
case IJSVGColorGray:
|
|
return @"gray";
|
|
case IJSVGColorGreen:
|
|
return @"green";
|
|
case IJSVGColorGreenyellow:
|
|
return @"greenyellow";
|
|
case IJSVGColorGrey:
|
|
return @"grey";
|
|
case IJSVGColorHoneydew:
|
|
return @"honeydew";
|
|
case IJSVGColorHotpink:
|
|
return @"hotpink";
|
|
case IJSVGColorIndianred:
|
|
return @"indianred";
|
|
case IJSVGColorIndigo:
|
|
return @"indigo";
|
|
case IJSVGColorIvory:
|
|
return @"ivory";
|
|
case IJSVGColorKhaki:
|
|
return @"khaki";
|
|
case IJSVGColorLavender:
|
|
return @"lavender";
|
|
case IJSVGColorLavenderblush:
|
|
return @"lavenderblush";
|
|
case IJSVGColorLawngreen:
|
|
return @"lawngreen";
|
|
case IJSVGColorLemonchiffon:
|
|
return @"lemonchiffon";
|
|
case IJSVGColorLightblue:
|
|
return @"lightblue";
|
|
case IJSVGColorLightcoral:
|
|
return @"lightcoral";
|
|
case IJSVGColorLightcyan:
|
|
return @"lightcyan";
|
|
case IJSVGColorLightgoldenrodyellow:
|
|
return @"lightgoldenrodyellow";
|
|
case IJSVGColorLightgray:
|
|
return @"lightgray";
|
|
case IJSVGColorLightgreen:
|
|
return @"lightgreen";
|
|
case IJSVGColorLightgrey:
|
|
return @"lightgrey";
|
|
case IJSVGColorLightpink:
|
|
return @"lightpink";
|
|
case IJSVGColorLightsalmon:
|
|
return @"lightsalmon";
|
|
case IJSVGColorLightseagreen:
|
|
return @"lightseagreen";
|
|
case IJSVGColorLightskyblue:
|
|
return @"lightskyblue";
|
|
case IJSVGColorLightslategray:
|
|
return @"lightslategray";
|
|
case IJSVGColorLightslategrey:
|
|
return @"lightslategrey";
|
|
case IJSVGColorLightsteelblue:
|
|
return @"lightsteelblue";
|
|
case IJSVGColorLightyellow:
|
|
return @"lightyellow";
|
|
case IJSVGColorLime:
|
|
return @"lime";
|
|
case IJSVGColorLimegreen:
|
|
return @"limegreen";
|
|
case IJSVGColorLinen:
|
|
return @"linen";
|
|
case IJSVGColorMagenta:
|
|
return @"magenta";
|
|
case IJSVGColorMaroon:
|
|
return @"maroon";
|
|
case IJSVGColorMediumaquamarine:
|
|
return @"mediumaquamarine";
|
|
case IJSVGColorMediumblue:
|
|
return @"mediumblue";
|
|
case IJSVGColorMediumorchid:
|
|
return @"mediumorchid";
|
|
case IJSVGColorMediumpurple:
|
|
return @"mediumpurple";
|
|
case IJSVGColorMediumseagreen:
|
|
return @"mediumseagreen";
|
|
case IJSVGColorMediumslateblue:
|
|
return @"mediumslateblue";
|
|
case IJSVGColorMediumspringgreen:
|
|
return @"mediumspringgreen";
|
|
case IJSVGColorMediumturquoise:
|
|
return @"mediumturquoise";
|
|
case IJSVGColorMediumvioletred:
|
|
return @"mediumvioletred";
|
|
case IJSVGColorMidnightblue:
|
|
return @"midnightblue";
|
|
case IJSVGColorMintcream:
|
|
return @"mintcream";
|
|
case IJSVGColorMistyrose:
|
|
return @"mistyrose";
|
|
case IJSVGColorMoccasin:
|
|
return @"moccasin";
|
|
case IJSVGColorNavajowhite:
|
|
return @"navajowhite";
|
|
case IJSVGColorNavy:
|
|
return @"navy";
|
|
case IJSVGColorOldlace:
|
|
return @"oldlace";
|
|
case IJSVGColorOlive:
|
|
return @"olive";
|
|
case IJSVGColorOlivedrab:
|
|
return @"olivedrab";
|
|
case IJSVGColorOrange:
|
|
return @"orange";
|
|
case IJSVGColorOrangered:
|
|
return @"orangered";
|
|
case IJSVGColorOrchid:
|
|
return @"orchid";
|
|
case IJSVGColorPalegoldenrod:
|
|
return @"palegoldenrod";
|
|
case IJSVGColorPalegreen:
|
|
return @"palegreen";
|
|
case IJSVGColorPaleturquoise:
|
|
return @"paleturquoise";
|
|
case IJSVGColorPalevioletred:
|
|
return @"palevioletred";
|
|
case IJSVGColorPapayawhip:
|
|
return @"papayawhip";
|
|
case IJSVGColorPeachpuff:
|
|
return @"peachpuff";
|
|
case IJSVGColorPeru:
|
|
return @"peru";
|
|
case IJSVGColorPink:
|
|
return @"pink";
|
|
case IJSVGColorPlum:
|
|
return @"plum";
|
|
case IJSVGColorPowderblue:
|
|
return @"powderblue";
|
|
case IJSVGColorPurple:
|
|
return @"purple";
|
|
case IJSVGColorRed:
|
|
return @"red";
|
|
case IJSVGColorRosybrown:
|
|
return @"rosybrown";
|
|
case IJSVGColorRoyalblue:
|
|
return @"royalblue";
|
|
case IJSVGColorSaddlebrown:
|
|
return @"saddlebrown";
|
|
case IJSVGColorSalmon:
|
|
return @"salmon";
|
|
case IJSVGColorSandybrown:
|
|
return @"sandybrown";
|
|
case IJSVGColorSeagreen:
|
|
return @"seagreen";
|
|
case IJSVGColorSeashell:
|
|
return @"seashell";
|
|
case IJSVGColorSienna:
|
|
return @"sienna";
|
|
case IJSVGColorSilver:
|
|
return @"silver";
|
|
case IJSVGColorSkyblue:
|
|
return @"skyblue";
|
|
case IJSVGColorSlateblue:
|
|
return @"slateblue";
|
|
case IJSVGColorSlategray:
|
|
return @"slategray";
|
|
case IJSVGColorSlategrey:
|
|
return @"slategrey";
|
|
case IJSVGColorSnow:
|
|
return @"snow";
|
|
case IJSVGColorSpringgreen:
|
|
return @"springgreen";
|
|
case IJSVGColorSteelblue:
|
|
return @"steelblue";
|
|
case IJSVGColorTan:
|
|
return @"tan";
|
|
case IJSVGColorTeal:
|
|
return @"teal";
|
|
case IJSVGColorThistle:
|
|
return @"thistle";
|
|
case IJSVGColorTomato:
|
|
return @"tomato";
|
|
case IJSVGColorTurquoise:
|
|
return @"turquoise";
|
|
case IJSVGColorViolet:
|
|
return @"violet";
|
|
case IJSVGColorWheat:
|
|
return @"wheat";
|
|
case IJSVGColorWhite:
|
|
return @"white";
|
|
case IJSVGColorWhitesmoke:
|
|
return @"whitesmoke";
|
|
case IJSVGColorYellow:
|
|
return @"yellow";
|
|
case IJSVGColorYellowgreen:
|
|
return @"yellowgreen";
|
|
}
|
|
return nil;
|
|
}
|
|
|
|
+ (NSColor *)changeAlphaOnColor:(NSColor *)color
|
|
to:(CGFloat)alphaValue
|
|
{
|
|
color = [color colorUsingColorSpace:[NSColorSpace deviceRGBColorSpace]];
|
|
return [NSColor colorWithDeviceRed:[color redComponent]
|
|
green:[color greenComponent]
|
|
blue:[color blueComponent]
|
|
alpha:alphaValue];
|
|
}
|
|
|
|
+ (BOOL)isColor:(NSString *)string
|
|
{
|
|
return [[string substringToIndex:1] isEqualToString:@"#"] || [[string substringToIndex:3] isEqualToString:@"rgb"];
|
|
}
|
|
|
|
+ (BOOL)isHex:(NSString *)string
|
|
{
|
|
NSCharacterSet *chars = [[NSCharacterSet characterSetWithCharactersInString:@"0123456789ABCDEFabcdef#"] invertedSet];
|
|
return [string rangeOfCharacterFromSet:chars].location == NSNotFound;
|
|
}
|
|
|
|
+ (NSColor *)colorFromHEXString:(NSString *)string
|
|
alpha:(CGFloat)alpha
|
|
{
|
|
// absolutely no string
|
|
if( string == nil || string.length == 0 || ![[self class] isHex:string] )
|
|
return nil;
|
|
|
|
if( [[string substringToIndex:1] isEqualToString:@"#"] )
|
|
string = [string substringFromIndex:1];
|
|
|
|
// whats the length?
|
|
if(string.length == 3) {
|
|
// shorthand...
|
|
NSMutableString * str = [[[NSMutableString alloc] init] autorelease];
|
|
for( NSInteger i = 0; i < string.length; i++ )
|
|
{
|
|
NSString * sub = [string substringWithRange:NSMakeRange( i, 1)];
|
|
[str appendFormat:@"%@%@",sub,sub];
|
|
}
|
|
string = str;
|
|
}
|
|
|
|
NSScanner * scanner = [NSScanner scannerWithString:string];
|
|
unsigned int hex;
|
|
if( [scanner scanHexInt:&hex] )
|
|
{
|
|
NSInteger r = (hex>>16) & 0xFF;
|
|
NSInteger g = (hex>>8) & 0xFF;
|
|
NSInteger b = (hex) & 0xFF;
|
|
return [NSColor colorWithDeviceRed:r/255.f
|
|
green:g/255.f
|
|
blue:b/255.f
|
|
alpha:alpha];
|
|
}
|
|
return nil;
|
|
}
|
|
|
|
@end
|