Example #1
0
        public void DrawText(IntPtr buffer, int length, float x, float y, SKPaint paint)
        {
            if (buffer == IntPtr.Zero && length != 0)
            {
                throw new ArgumentNullException(nameof(buffer));
            }
            if (paint == null)
            {
                throw new ArgumentNullException(nameof(paint));
            }

            if (paint.TextAlign != SKTextAlign.Left)
            {
                var width = paint.MeasureText(buffer, length);
                if (paint.TextAlign == SKTextAlign.Center)
                {
                    width *= 0.5f;
                }
                x -= width;
            }

            using var blob = SKTextBlob.Create(buffer, length, paint.TextEncoding, paint.GetFont());
            if (blob == null)
            {
                return;
            }

            DrawText(blob, x, y, paint);
        }
Example #2
0
        public void DrawTextOnPath(string text, SKPath path, SKPoint offset, bool warpGlyphs, SKFont font, SKPaint paint)
        {
            if (text == null)
            {
                throw new ArgumentNullException(nameof(text));
            }
            if (path == null)
            {
                throw new ArgumentNullException(nameof(path));
            }
            if (font == null)
            {
                throw new ArgumentNullException(nameof(font));
            }
            if (paint == null)
            {
                throw new ArgumentNullException(nameof(paint));
            }

            if (warpGlyphs)
            {
                using var textPath = font.GetTextPathOnPath(text, path, paint.TextAlign, offset);
                DrawPath(textPath, paint);
            }
            else
            {
                using var blob = SKTextBlob.CreatePathPositioned(text, font, path, paint.TextAlign, offset);
                if (blob != null)
                {
                    DrawText(blob, 0, 0, paint);
                }
            }
        }
Example #3
0
        public void DrawText(byte[] text, float x, float y, SKPaint paint)
        {
            if (text == null)
            {
                throw new ArgumentNullException(nameof(text));
            }
            if (paint == null)
            {
                throw new ArgumentNullException(nameof(paint));
            }

            if (paint.TextAlign != SKTextAlign.Left)
            {
                var width = paint.MeasureText(text);
                if (paint.TextAlign == SKTextAlign.Center)
                {
                    width *= 0.5f;
                }
                x -= width;
            }

            using var blob = SKTextBlob.Create(text, paint.TextEncoding, paint.GetFont());
            if (blob == null)
            {
                return;
            }

            DrawText(blob, x, y, paint);
        }
Example #4
0
        // Build

        public SKTextBlob Build()
        {
            var blob = SKTextBlob.GetObject(SkiaApi.sk_textblob_builder_make(Handle));

            GC.KeepAlive(this);
            return(blob);
        }
Example #5
0
        public void DrawText(SKTextBlob text, float x, float y, SKPaint paint)
        {
            if (text == null)
            {
                throw new ArgumentNullException(nameof(text));
            }
            if (paint == null)
            {
                throw new ArgumentNullException(nameof(paint));
            }

            SkiaApi.sk_canvas_draw_text_blob(Handle, text.Handle, x, y, paint.Handle);
        }
Example #6
0
        public void DrawPositionedText(IntPtr buffer, int length, SKPoint[] points, SKPaint paint)
        {
            if (buffer == IntPtr.Zero && length != 0)
            {
                throw new ArgumentNullException(nameof(buffer));
            }
            if (paint == null)
            {
                throw new ArgumentNullException(nameof(paint));
            }
            if (points == null)
            {
                throw new ArgumentNullException(nameof(points));
            }

            using var blob = SKTextBlob.CreatePositioned(buffer, length, paint.TextEncoding, paint.GetFont(), points);
            if (blob == null)
            {
                return;
            }

            DrawText(blob, 0, 0, paint);
        }
Example #7
0
        public void DrawPositionedText(byte[] text, SKPoint[] points, SKPaint paint)
        {
            if (text == null)
            {
                throw new ArgumentNullException(nameof(text));
            }
            if (paint == null)
            {
                throw new ArgumentNullException(nameof(paint));
            }
            if (points == null)
            {
                throw new ArgumentNullException(nameof(points));
            }

            using var blob = SKTextBlob.CreatePositioned(text, paint.TextEncoding, paint.GetFont(), points);
            if (blob == null)
            {
                return;
            }

            DrawText(blob, 0, 0, paint);
        }
Example #8
0
        // Build

        public SKTextBlob Build() =>
        SKTextBlob.GetObject(SkiaApi.sk_textblob_builder_make(Handle));