public void EndDrawing ()
{
if (inGroup) {
WriteLine ("</g>");
inGroup = false;
}
WriteLine("<defs>");
var i = 0;
foreach (var gt in grads) {
var g = gt.Gradient;
var r = gt.Bounds;
if (r.Width <= 0) {
r.Inflate (2e-16f, 0);
}
if (r.Height <= 0) {
r.Inflate (0, 2e-16f);
}
WriteLine ("<linearGradient id=\"grad{0}\" x1=\"{1}%\" y1=\"{2}%\" x2=\"{3}%\" y2=\"{4}%\">",
i,
(g.Start.X - r.X) / r.Width * 100,
(g.Start.Y - r.Y) / r.Height * 100,
(g.End.X - r.X) / r.Width * 100,
(g.End.Y - r.Y) / r.Height * 100);
for (var s = 0; s < g.Colors.Count; s++) {
WriteLine ("<stop offset=\"{0}%\" stop-color=\"{1}\" stop-opacity=\"{2}\" />",
g.Locations[s]*100,
FormatColor (g.Colors[s]),
g.Colors[s].AlphaValue);
}
WriteLine ("</linearGradient>");
i++;
}
WriteLine("</defs>");
WriteLine("</svg>");
_tw.Flush();
}