Ejemplo n.º 1
0
        internal static SKTextBlob CreateHorizontal(void *text, int length, SKTextEncoding encoding, SKFont font, ReadOnlySpan <float> positions, float y)
        {
            if (font == null)
            {
                throw new ArgumentNullException(nameof(font));
            }

            var count = font.CountGlyphs(text, length, encoding);

            if (count <= 0)
            {
                return(null);
            }

            using var builder = new SKTextBlobBuilder();
            var buffer = builder.AllocateHorizontalRun(font, count, y);

            font.GetGlyphs(text, length, encoding, buffer.GetGlyphSpan());
            positions.CopyTo(buffer.GetPositionSpan());
            return(builder.Build());
        }
Ejemplo n.º 2
0
        internal static SKTextBlob Create(void *text, int length, SKTextEncoding encoding, SKFont font, SKPoint origin)
        {
            if (font == null)
            {
                throw new ArgumentNullException(nameof(font));
            }

            var count = font.CountGlyphs(text, length, encoding);

            if (count <= 0)
            {
                return(null);
            }

            using var builder = new SKTextBlobBuilder();
            var buffer = builder.AllocatePositionedRun(font, count);

            font.GetGlyphs(text, length, encoding, buffer.GetGlyphSpan());
            font.GetGlyphPositions(buffer.GetGlyphSpan(), buffer.GetPositionSpan(), origin);
            return(builder.Build());
        }