internal static void Transform(WriteableBitmap context, sb.Geometry <sb.Point> original, sb.Point location, int border, int fill)
        {
            if (original.Geometries != null)
            {
                foreach (var geometry in original.Geometries)
                {
                    Transform(context, geometry, location, border, fill);
                }
            }
            else
            {
                if (original.NumberOfPoints < 1)
                {
                    return;
                }

                var firstPoint = original.Points[0];

                if (original.Type == sb.GeometryType.Point)
                {
                    context.DrawEllipseCentered(border, (int)(firstPoint.X + location.X), (int)(firstPoint.Y + location.Y), pointSize, pointSize);
                }
                else if (original.Type == IRI.Msh.Common.Primitives.GeometryType.LineString)
                {
                    AddLineString(context, original, location, border, fill);
                }
            }
        }
        internal static void Transform(drawing.Graphics graphics, sb.Geometry <sb.Point> original, sb.Point location, drawing.Pen pen, drawing.Brush brush)
        {
            if (original.Geometries != null)
            {
                foreach (var geometry in original.Geometries)
                {
                    Transform(graphics, geometry, location, pen, brush);
                }
            }
            else
            {
                if (original.NumberOfPoints < 1)
                {
                    return;
                }

                var firstPoint = original.Points[0];

                if (original.Type == sb.GeometryType.Point)
                {
                    graphics.DrawEllipse(pen, (float)(firstPoint.X + location.X), (float)(firstPoint.Y + location.Y), pointSize, pointSize);
                }
                else if (original.Type == IRI.Msh.Common.Primitives.GeometryType.LineString)
                {
                    AddLineString(graphics, original, location, pen, brush);
                }
            }
        }
        private static void AddLineString(drawing.Graphics graphics, sb.Geometry <sb.Point> original, sb.Point location, drawing.Pen pen, drawing.Brush brush)
        {
            if (original.NumberOfPoints < 1)
            {
                return;
            }

            for (int i = 1; i < original.NumberOfPoints; i++)
            {
                graphics.DrawLine(pen,
                                  (float)(original.Points[i - 1].X + location.X),
                                  (float)(original.Points[i - 1].Y + location.Y),
                                  (float)(original.Points[i].X + location.X),
                                  (float)(original.Points[i].Y + location.Y));
            }
        }
        private static void AddLineString(WriteableBitmap context, sb.Geometry <sb.Point> original, sb.Point location, int border, int fill)
        {
            if (original.NumberOfPoints < 1)
            {
                return;
            }

            for (int i = 1; i < original.NumberOfPoints; i++)
            {
                context.DrawLine(
                    (int)(original.Points[i - 1].X + location.X),
                    (int)(original.Points[i - 1].Y + location.Y),
                    (int)(original.Points[i].X + location.X),
                    (int)(original.Points[i].Y + location.Y),
                    border);
            }
        }