Offset() private method

private Offset ( double distance ) : Line
distance double
return Line
            internal static FlattenedSegment Create(Line?previousCenter, Line center, Line?nextCenter, double strokeThickness)
            {
                return(CreateOffset(center, Offset(strokeThickness / 2), Offset(-strokeThickness / 2)));

                Line Offset(double offset)
                {
                    var ol = center.Offset(offset);

                    if (previousCenter is { } pl&&
                        pl.Length > 0 &&
                        ol.TrimOrExtendStartWith(pl.Offset(offset)) is { } temp1)
                    {
                        ol = temp1;
                    }

                    if (nextCenter is { } nl&&
                        nl.Length > 0 &&
                        ol.TrimOrExtendEndWith(nl.Offset(offset)) is { } temp2)
                    {
                        ol = temp2;
                    }

                    return(ol);
                }
            }
            internal static FlattenedSegment CreateEndLineCap(Line line, PenLineCap endLineCap, double strokeThickness)
            {
                switch (endLineCap)
                {
                case PenLineCap.Square:
                    var cl = new Line(line.EndPoint, line.EndPoint + (strokeThickness / 2 * line.Direction));
                    return(CreateOffset(cl, cl.Offset(strokeThickness / 2), cl.Offset(-strokeThickness / 2)));

                case PenLineCap.Round:
                    return(CreateRound(line, strokeThickness, isStart: false));

                case PenLineCap.Triangle:
                    return(CreateTriangle(line, strokeThickness, isStart: false));

                case PenLineCap.Flat:
                default:
                    throw new ArgumentOutOfRangeException(nameof(endLineCap), endLineCap, "Unknown line cap.");
                }
            }