Skip to content

Commit bc53f7d

Browse files
Fix intellisense docs.
1 parent a31cb87 commit bc53f7d

1 file changed

Lines changed: 49 additions & 43 deletions

File tree

  • src/ImageSharp.Drawing/Shapes

src/ImageSharp.Drawing/Shapes/Path.cs

Lines changed: 49 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -118,21 +118,27 @@ SegmentInfo IPathInternals.PointAlongPath(float distance)
118118
IReadOnlyList<InternalPath> IInternalPathOwner.GetRingsAsInternalPath() => new[] { this.InnerPath };
119119

120120
/// <summary>
121-
/// Converts an svg path into a Path
121+
/// Converts an SVG path string into an <see cref="IPath"/>.
122122
/// </summary>
123-
/// <param name="data">data</param>
124-
/// <param name="value">path</param>
125-
/// <returns>true if successful</returns>
126-
public static bool TryParseSvgPath(string data, out IPath value)
127-
=> TryParseSvgPath(data.AsSpan(), out value);
123+
/// <param name="svgPath">The string containing the SVG path data.</param>
124+
/// <param name="value">
125+
/// When this method returns, contains the logic path converted from the given SVG path string; otherwise, <see langword="null"/>.
126+
/// This parameter is passed uninitialized.
127+
/// </param>
128+
/// <returns><see langword="true"/> if the input value can be parsed and converted; otherwise, <see langword="false"/>.</returns>
129+
public static bool TryParseSvgPath(string svgPath, out IPath value)
130+
=> TryParseSvgPath(svgPath.AsSpan(), out value);
128131

129132
/// <summary>
130-
/// Converts an svg path into a Path
133+
/// Converts an SVG path string into an <see cref="IPath"/>.
131134
/// </summary>
132-
/// <param name="data">data</param>
133-
/// <param name="value">path</param>
134-
/// <returns>true if successful</returns>
135-
public static bool TryParseSvgPath(ReadOnlySpan<char> data, out IPath value)
135+
/// <param name="svgPath">The string containing the SVG path data.</param>
136+
/// <param name="value">
137+
/// When this method returns, contains the logic path converted from the given SVG path string; otherwise, <see langword="null"/>.
138+
/// This parameter is passed uninitialized.
139+
/// </param>
140+
/// <returns><see langword="true"/> if the input value can be parsed and converted; otherwise, <see langword="false"/>.</returns>
141+
public static bool TryParseSvgPath(ReadOnlySpan<char> svgPath, out IPath value)
136142
{
137143
value = null;
138144

@@ -150,24 +156,24 @@ public static bool TryParseSvgPath(ReadOnlySpan<char> data, out IPath value)
150156
bool relative = false;
151157
while (true)
152158
{
153-
data = data.TrimStart();
154-
if (data.Length == 0)
159+
svgPath = svgPath.TrimStart();
160+
if (svgPath.Length == 0)
155161
{
156162
break;
157163
}
158164

159-
char ch = data[0];
165+
char ch = svgPath[0];
160166
if (char.IsDigit(ch) || ch == '-' || ch == '+' || ch == '.')
161167
{
162168
// Are we are the end of the string or we are at the end of the path?
163-
if (data.Length == 0 || op == 'Z')
169+
if (svgPath.Length == 0 || op == 'Z')
164170
{
165171
return false;
166172
}
167173
}
168174
else if (IsSeparator(ch))
169175
{
170-
data = TrimSeparator(data);
176+
svgPath = TrimSeparator(svgPath);
171177
}
172178
else
173179
{
@@ -179,25 +185,25 @@ public static bool TryParseSvgPath(ReadOnlySpan<char> data, out IPath value)
179185
relative = true;
180186
}
181187

182-
data = TrimSeparator(data.Slice(1));
188+
svgPath = TrimSeparator(svgPath.Slice(1));
183189
}
184190

185191
switch (op)
186192
{
187193
case 'M':
188-
data = FindPoint(data, out point1, relative, c);
194+
svgPath = FindPoint(svgPath, out point1, relative, c);
189195
builder.MoveTo(point1);
190196
previousOp = '\0';
191197
op = 'L';
192198
c = point1;
193199
break;
194200
case 'L':
195-
data = FindPoint(data, out point1, relative, c);
201+
svgPath = FindPoint(svgPath, out point1, relative, c);
196202
builder.LineTo(point1);
197203
c = point1;
198204
break;
199205
case 'H':
200-
data = FindScaler(data, out float x);
206+
svgPath = FindScaler(svgPath, out float x);
201207
if (relative)
202208
{
203209
x += c.X;
@@ -207,7 +213,7 @@ public static bool TryParseSvgPath(ReadOnlySpan<char> data, out IPath value)
207213
c.X = x;
208214
break;
209215
case 'V':
210-
data = FindScaler(data, out float y);
216+
svgPath = FindScaler(svgPath, out float y);
211217
if (relative)
212218
{
213219
y += c.Y;
@@ -217,16 +223,16 @@ public static bool TryParseSvgPath(ReadOnlySpan<char> data, out IPath value)
217223
c.Y = y;
218224
break;
219225
case 'C':
220-
data = FindPoint(data, out point1, relative, c);
221-
data = FindPoint(data, out point2, relative, c);
222-
data = FindPoint(data, out point3, relative, c);
226+
svgPath = FindPoint(svgPath, out point1, relative, c);
227+
svgPath = FindPoint(svgPath, out point2, relative, c);
228+
svgPath = FindPoint(svgPath, out point3, relative, c);
223229
builder.CubicBezierTo(point1, point2, point3);
224230
lastc = point2;
225231
c = point3;
226232
break;
227233
case 'S':
228-
data = FindPoint(data, out point2, relative, c);
229-
data = FindPoint(data, out point3, relative, c);
234+
svgPath = FindPoint(svgPath, out point2, relative, c);
235+
svgPath = FindPoint(svgPath, out point3, relative, c);
230236
point1 = c;
231237
if (previousOp is 'C' or 'S')
232238
{
@@ -239,14 +245,14 @@ public static bool TryParseSvgPath(ReadOnlySpan<char> data, out IPath value)
239245
c = point3;
240246
break;
241247
case 'Q': // Quadratic Bezier Curve
242-
data = FindPoint(data, out point1, relative, c);
243-
data = FindPoint(data, out point2, relative, c);
248+
svgPath = FindPoint(svgPath, out point1, relative, c);
249+
svgPath = FindPoint(svgPath, out point2, relative, c);
244250
builder.QuadraticBezierTo(point1, point2);
245251
lastc = point1;
246252
c = point2;
247253
break;
248254
case 'T':
249-
data = FindPoint(data, out point2, relative, c);
255+
svgPath = FindPoint(svgPath, out point2, relative, c);
250256
point1 = c;
251257
if (previousOp is 'Q' or 'T')
252258
{
@@ -259,18 +265,18 @@ public static bool TryParseSvgPath(ReadOnlySpan<char> data, out IPath value)
259265
c = point2;
260266
break;
261267
case 'A':
262-
data = FindScaler(data, out float radiiX);
263-
data = TrimSeparator(data);
264-
data = FindScaler(data, out float radiiY);
265-
data = TrimSeparator(data);
266-
data = FindScaler(data, out float angle);
267-
data = TrimSeparator(data);
268-
data = FindScaler(data, out float largeArc);
269-
data = TrimSeparator(data);
270-
data = FindScaler(data, out float sweep);
271-
272-
data = FindPoint(data, out PointF point, relative, c);
273-
if (data.Length > 0)
268+
svgPath = FindScaler(svgPath, out float radiiX);
269+
svgPath = TrimSeparator(svgPath);
270+
svgPath = FindScaler(svgPath, out float radiiY);
271+
svgPath = TrimSeparator(svgPath);
272+
svgPath = FindScaler(svgPath, out float angle);
273+
svgPath = TrimSeparator(svgPath);
274+
svgPath = FindScaler(svgPath, out float largeArc);
275+
svgPath = TrimSeparator(svgPath);
276+
svgPath = FindScaler(svgPath, out float sweep);
277+
278+
svgPath = FindPoint(svgPath, out PointF point, relative, c);
279+
if (svgPath.Length > 0)
274280
{
275281
builder.ArcTo(radiiX, radiiY, angle, largeArc == 1, sweep == 1, point);
276282
c = point;
@@ -282,8 +288,8 @@ public static bool TryParseSvgPath(ReadOnlySpan<char> data, out IPath value)
282288
c = first;
283289
break;
284290
case '~':
285-
data = FindPoint(data, out point1, relative, c);
286-
data = FindPoint(data, out point2, relative, c);
291+
svgPath = FindPoint(svgPath, out point1, relative, c);
292+
svgPath = FindPoint(svgPath, out point2, relative, c);
287293
builder.MoveTo(point1);
288294
builder.LineTo(point2);
289295
break;

0 commit comments

Comments
 (0)