AutoPatientInfoRecorder/src/AntdUI/Lib/SVG/Paths/SvgPathBuilder.cs
(开头部分) 11KB这里只显示每个文件的开头 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 AntdUI.Svg.Pathing;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
namespace AntdUI.Svg
{
public static class PointFExtensions
{
public static string ToSvgString(this PointF p)
{
return p.X.ToString() + " " + p.Y.ToString();
}
}
internal class SvgPathConverter
{
/// <summary>
/// Parses the specified string into a collection of path segments.
/// </summary>
/// <param name="value">A <see cref="string"/> containing path data.</param>
public static SvgPathSegmentList Parse(string value)
{
if (string.IsNullOrEmpty(value)) throw new ArgumentNullException("path");
var segments = new SvgPathSegmentList();
try
{
char command;
bool isRelative;
foreach (var commandSet in SplitCommands(value.TrimEnd(null)))
{
command = commandSet[0];
isRelative = char.IsLower(command);
CreatePathSegment(command, segments, new CoordinateParser(commandSet.Trim()), isRelative);
}
}
catch
{ }
return segments;
}
static void CreatePathSegment(char command, SvgPathSegmentList segments, CoordinateParser parser, bool isRelative)
{
var coords = new float[6];
switch (command)
{
case 'm': // relative moveto
case 'M': // moveto
if (parser.TryGetFloat(out coords[0]) && parser.TryGetFloat(out coords[1]))
{
segments.Add(new SvgMoveToSegment(ToAbsolute(coords[0], coords[1], segments, isRelative)));
}
while (parser.TryGetFloat(out coords[0]) && parser.TryGetFloat(out coords[1]))
后面还有 213 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。