AutoPatientInfoRecorder/src/AntdUI/Lib/SVG/Painting/SvgPaintServerFactory.cs
(开头部分) 10KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
// THIS FILE IS PART OF SVG PROJECT
// THE SVG PROJECT IS AN OPENSOURCE LIBRARY LICENSED UNDER THE MS-PL License.
// COPYRIGHT (C) svg-net. ALL RIGHTS RESERVED.
// GITHUB: https://github.com/svg-net/SVG
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
namespace AntdUI.Svg
{
internal class SvgPaintServerConverter
{
public static SvgPaintServer Parse(string value, SvgDocument context)
{
if (string.Equals(value.Trim(), "none", StringComparison.OrdinalIgnoreCase) || string.IsNullOrEmpty(value) || value.Trim().Length < 1) return SvgPaintServer.None;
else return Create(value, context);
}
public static SvgPaintServer Create(string value, SvgDocument document)
{
// If it's pointing to a paint server
if (string.IsNullOrEmpty(value)) return SvgColourServer.NotSet;
else if (value == "inherit") return SvgColourServer.Inherit;
else if (value == "currentColor") return new SvgDeferredPaintServer(document, value);
else
{
var servers = new List<SvgPaintServer>();
while (!string.IsNullOrEmpty(value))
{
if (value.StartsWith("url(#"))
{
var leftParen = value.IndexOf(')', 5);
Uri id = new Uri(value.Substring(5, leftParen - 5), UriKind.Relative);
value = value.Substring(leftParen + 1).Trim();
servers.Add((SvgPaintServer)document.IdManager.GetElementById(id));
}
// If referenced to to a different (linear or radial) gradient
else if (document.IdManager.GetElementById(value) != null && document.IdManager.GetElementById(value).GetType().BaseType == typeof(SvgGradientServer))
{
return (SvgPaintServer)document.IdManager.GetElementById(value);
}
else if (value.StartsWith("#")) // Otherwise try and parse as colour
{
switch (CountHexDigits(value, 1))
{
case 3:
servers.Add(new SvgColourServer(ParseColor(value.Substring(0, 4))));
value = value.Substring(4).Trim();
break;
case 6:
servers.Add(new SvgColourServer(ParseColor(value.Substring(0, 7))));
value = value.Substring(7).Trim();
break;
default:
return new SvgDeferredPaintServer(document, value);
}
}
else return new SvgColourServer(ParseColor(value.Trim()));
后面还有 188 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。