//
// SVG CSS value names
//

// CSS_PROP_*_COLOR
//
aliceblue
alpha
antiquewhite
// aqua
aquamarine
azure
beige
bisque
// black
blanchedalmond
// blue
blueviolet
brown
burlywood
cadetblue
chartreuse
chocolate
coral
cornflowerblue
cornsilk
crimson
cyan
darkblue
darkcyan
darkgoldenrod
darkgray
darkgreen
darkgrey
darkkhaki
darkmagenta
darkolivegreen
darkorange
darkorchid
darkred
darksalmon
darkseagreen
darkslateblue
darkslategray
darkslategrey
darkturquoise
darkviolet
deeppink
deepskyblue
dimgray
dimgrey
dodgerblue
firebrick
floralwhite
forestgreen
// fuchsia
gainsboro
ghostwhite
gold
goldenrod
// gray
// grey
// green
greenyellow
honeydew
hotpink
indianred
indigo
ivory
khaki
lavender
lavenderblush
lawngreen
lemonchiffon
lightblue
lightcoral
lightcyan
lightgoldenrodyellow
lightgray
lightgreen
lightgrey
lightpink
lightsalmon
lightseagreen
lightskyblue
lightslategray
lightslategrey
lightsteelblue
lightyellow
// lime
limegreen
linen
luminance
magenta
// maroon
mediumaquamarine
mediumblue
mediumorchid
mediumpurple
mediumseagreen
mediumslateblue
mediumspringgreen
mediumturquoise
mediumvioletred
midnightblue
mintcream
mistyrose
moccasin
navajowhite
// navy
oldlace
// olive
olivedrab
// orange
orangered
orchid
palegoldenrod
palegreen
paleturquoise
palevioletred
papayawhip
peachpuff
peru
pink
plum
powderblue
// purple
// red
rosybrown
royalblue
saddlebrown
salmon
sandybrown
seagreen
seashell
sienna
// silver
skyblue
slateblue
slategray
slategrey
snow
springgreen
steelblue
tan
// teal
thistle
tomato
turquoise
violet
wheat
// white
whitesmoke
// yellow
yellowgreen

// CSS_PROP_CLIP_PATH
// CSS_PROP_CLIP_RULE
// nonzero and evenodd part of core CSS values now.

// CSS_PROP_MASK
// CSS_PROP_OPACITY
// CSS_PROP_ENABLE_BACKGROUND
accumulate
new

// CSS_PROP_FILTER
// CSS_PROP_FLOOD_COLOR
//currentColor

// CSS_PROP_FLOOD_OPACITY
// CSS_PROP_LIGHTING_COLOR
//currentColor

// CSS_PROP_STOP_COLOR
// CSS_PROP_STOP_OPACITY
// CSS_PROP_COLOR_INTERPOLATION
//auto
sRGB
linearRGB

// CSS_PROP_COLOR_INTERPOLATION_FILTERS
//auto
//sRGB
//linearRGB

// CSS_PROP_COLOR_PROFILE
//sRGB

// CSS_PROP_COLOR_RENDERING
//auto
//optimizeSpeed
//optimizeQuality

//// CSS_PROP_FILL
//currentColor

// CSS_PROP_FILL_OPACITY
// CSS_PROP_FILL_RULE
//nonzero
//evenodd

// CSS_PROP_IMAGE_RENDERING
//auto
//optimizeSpeed
//optimizeQuality

// CSS_PROP_MARKER
// CSS_PROP_MARKER_END
// CSS_PROP_MARKER_MID
// CSS_PROP_MARKER_START
// CSS_PROP_SHAPE_RENDERING
//auto
//optimizeSpeed
crispEdges
//geometricPrecision

// CSS_PROP_STROKE
// CSS_PROP_STROKE_DASHARRAY
// CSS_PROP_STROKE_DASHOFFSET
// CSS_PROP_STROKE_LINECAP
butt
// round
// square

// CSS_PROP_STROKE_LINEJOIN
miter
// round
bevel

// CSS_PROP_STROKE_MITERLIMIT
// CSS_PROP_STROKE_OPACITY
// CSS_PROP_STROKE_WIDTH

// CSS_PROP_ALIGNMENT_BASELINE
//auto
// baseline
before-edge
after-edge
//middle
central
text-before-edge
text-after-edge
ideographic
hanging
mathematical

// CSS_PROP_BASELINE_SHIFT
//baseline
// sub
// super

// CSS_PROP_DOMINANT_BASELINE
//auto
use-script
no-change
reset-size

// CSS_PROP_GLYPH_ORIENTATION_HORIZONTAL

// CSS_PROP_GLYPH_ORIENTATION_VERTICAL
// CSS_PROP_KERNING
// CSS_PROP_TEXT_ANCHOR
// start
// middle
// end

// CSS_PROP_BUFFERED_RENDERING
// auto
// static
dynamic

// CSS_PROP_VECTOR_EFFECT
// none
non-scaling-stroke

// CSS_PROP_PAINT_ORDER
// normal
// fill
// stroke
// markers
