Inheritance: SKObject
Ejemplo n.º 1
0
        public unsafe static SKDocument CreatePdf(SKWStream stream, SKDocumentPdfMetadata metadata, float dpi = DefaultRasterDpi)
        {
            if (stream == null)
            {
                throw new ArgumentNullException(nameof(stream));
            }

            using (var title = SKString.Create(metadata.Title))
                using (var author = SKString.Create(metadata.Author))
                    using (var subject = SKString.Create(metadata.Subject))
                        using (var keywords = SKString.Create(metadata.Keywords))
                            using (var creator = SKString.Create(metadata.Creator))
                                using (var producer = SKString.Create(metadata.Producer)) {
                                    var cmetadata = new SKDocumentPdfMetadataInternal {
                                        Title    = title?.Handle ?? IntPtr.Zero,
                                        Author   = author?.Handle ?? IntPtr.Zero,
                                        Subject  = subject?.Handle ?? IntPtr.Zero,
                                        Keywords = keywords?.Handle ?? IntPtr.Zero,
                                        Creator  = creator?.Handle ?? IntPtr.Zero,
                                        Producer = producer?.Handle ?? IntPtr.Zero
                                    };
                                    if (metadata.Creation != null)
                                    {
                                        var creation = SKTimeDateTimeInternal.Create(metadata.Creation.Value);
                                        cmetadata.Creation = &creation;
                                    }
                                    if (metadata.Modified != null)
                                    {
                                        var modified = SKTimeDateTimeInternal.Create(metadata.Modified.Value);
                                        cmetadata.Modified = &modified;
                                    }

                                    return(GetObject <SKDocument> (SkiaApi.sk_document_create_pdf_from_stream_with_metadata(stream.Handle, dpi, ref cmetadata)));
                                }
        }
Ejemplo n.º 2
0
 public string GetFamilyName(int index)
 {
     using (var str = new SKString()) {
         SkiaApi.sk_fontmgr_get_family_name(Handle, index, str.Handle);
         return((string)str);
     }
 }
Ejemplo n.º 3
0
        public SKPositionedRunBuffer AllocatePositionedRun(SKPaint font, int count, int textByteCount, SKRect?bounds)
        {
            if (font == null)
            {
                throw new ArgumentNullException(nameof(font));
            }

            var originalEncoding = font.TextEncoding;

            try {
                font.TextEncoding = SKTextEncoding.GlyphId;

                using var lang = new SKString();
                SKRunBufferInternal runbuffer;
                if (bounds is SKRect b)
                {
                    SkiaApi.sk_textblob_builder_alloc_run_text_pos(Handle, font.Handle, count, textByteCount, lang.Handle, &b, &runbuffer);
                }
                else
                {
                    SkiaApi.sk_textblob_builder_alloc_run_text_pos(Handle, font.Handle, count, textByteCount, lang.Handle, null, &runbuffer);
                }

                return(new SKPositionedRunBuffer(runbuffer, count, textByteCount));
            } finally {
                font.TextEncoding = originalEncoding;
            }
        }
Ejemplo n.º 4
0
 public string ToSvgPathData()
 {
     using (SKString str = new SKString()) {
         SkiaApi.sk_path_to_svg_string(Handle, str.Handle);
         return((string)str);
     }
 }
 public string GetStyleName(int index)
 {
     using (var str = new SKString()) {
         SkiaApi.sk_fontstyleset_get_style(Handle, index, IntPtr.Zero, str.Handle);
         return((string)str);
     }
 }
Ejemplo n.º 6
0
 public void GetStyle(int index, out SKFontStyle fontStyle, out string styleName)
 {
     fontStyle = new SKFontStyle();
     using (var str = new SKString()) {
         SkiaApi.sk_fontstyleset_get_style(Handle, index, fontStyle.Handle, str.Handle);
         styleName = (string)str;
     }
 }
Ejemplo n.º 7
0
        private IEnumerable <string> GetUniformNames()
        {
            var count = (int)SkiaApi.sk_runtimeeffect_get_uniforms_count(Handle);

            using var str = new SKString();
            for (var i = 0; i < count; i++)
            {
                SkiaApi.sk_runtimeeffect_get_uniform_name(Handle, i, str.Handle);
                yield return(str.ToString());
            }
        }
Ejemplo n.º 8
0
        // Create

        public static SKRuntimeEffect Create(string sksl, out string errors)
        {
            using var s           = new SKString(sksl);
            using var errorString = new SKString();
            var effect = GetObject(SkiaApi.sk_runtimeeffect_make(s.Handle, errorString.Handle));

            errors = errorString?.ToString();
            if (errors?.Length == 0)
            {
                errors = null;
            }
            return(effect);
        }
Ejemplo n.º 9
0
        public static SKDocument CreatePdf(SKWStream stream, SKDocumentPdfMetadata metadata)
        {
            if (stream == null)
            {
                throw new ArgumentNullException(nameof(stream));
            }

            using (var title = SKString.Create(metadata.Title))
                using (var author = SKString.Create(metadata.Author))
                    using (var subject = SKString.Create(metadata.Subject))
                        using (var keywords = SKString.Create(metadata.Keywords))
                            using (var creator = SKString.Create(metadata.Creator))
                                using (var producer = SKString.Create(metadata.Producer)) {
                                    var cmetadata = new SKDocumentPdfMetadataInternal {
                                        fTitle           = title?.Handle ?? IntPtr.Zero,
                                        fAuthor          = author?.Handle ?? IntPtr.Zero,
                                        fSubject         = subject?.Handle ?? IntPtr.Zero,
                                        fKeywords        = keywords?.Handle ?? IntPtr.Zero,
                                        fCreator         = creator?.Handle ?? IntPtr.Zero,
                                        fProducer        = producer?.Handle ?? IntPtr.Zero,
                                        fRasterDPI       = metadata.RasterDpi,
                                        fPDFA            = metadata.PdfA ? (byte)1 : (byte)0,
                                        fEncodingQuality = metadata.EncodingQuality,
                                    };

                                    SKTimeDateTimeInternal creation;
                                    if (metadata.Creation != null)
                                    {
                                        creation            = SKTimeDateTimeInternal.Create(metadata.Creation.Value);
                                        cmetadata.fCreation = &creation;
                                    }
                                    SKTimeDateTimeInternal modified;
                                    if (metadata.Modified != null)
                                    {
                                        modified            = SKTimeDateTimeInternal.Create(metadata.Modified.Value);
                                        cmetadata.fModified = &modified;
                                    }

                                    return(Referenced(GetObject <SKDocument> (SkiaApi.sk_document_create_pdf_from_stream_with_metadata(stream.Handle, &cmetadata)), stream));
                                }
        }
Ejemplo n.º 10
0
        public SKHorizontalRunBuffer AllocateHorizontalRun(SKPaint font, int count, float y, int textByteCount, SKRect?bounds)
        {
            if (font == null)
            {
                throw new ArgumentNullException(nameof(font));
            }

            using (var lang = new SKString()) {
                SKRunBufferInternal runbuffer;
                if (bounds is SKRect b)
                {
                    SkiaApi.sk_textblob_builder_alloc_run_text_pos_h(Handle, font.Handle, count, y, textByteCount, lang.Handle, &b, &runbuffer);
                }
                else
                {
                    SkiaApi.sk_textblob_builder_alloc_run_text_pos_h(Handle, font.Handle, count, y, textByteCount, lang.Handle, null, &runbuffer);
                }

                return(new SKHorizontalRunBuffer(runbuffer, count, textByteCount));
            }
        }
Ejemplo n.º 11
0
        internal SKTextBlobBuilderRunBuffer AllocateRunPositioned(SKPaint font, int count, int textByteCount, SKRect?bounds)
        {
            if (font == null)
            {
                throw new ArgumentNullException(nameof(font));
            }

            using (var lang = new SKString()) {
                unsafe {
                    SKTextBlobBuilderRunBuffer runbuffer;
                    if (bounds is SKRect b)
                    {
                        SkiaApi.sk_textblob_builder_alloc_run_text_pos(Handle, font.Handle, count, textByteCount, lang.Handle, &b, out runbuffer);
                    }
                    else
                    {
                        SkiaApi.sk_textblob_builder_alloc_run_text_pos(Handle, font.Handle, count, textByteCount, lang.Handle, (SKRect *)IntPtr.Zero, out runbuffer);
                    }
                    return(runbuffer);
                }
            }
        }
Ejemplo n.º 12
0
        public SKRunBuffer AllocateRun(SKPaint font, int count, float x, float y, int textByteCount, SKRect?bounds)
        {
            if (font == null)
            {
                throw new ArgumentNullException(nameof(font));
            }

            using (var lang = new SKString()) {
                unsafe {
                    SKRunBufferInternal runbuffer;
                    if (bounds is SKRect b)
                    {
                        SkiaApi.sk_textblob_builder_alloc_run_text(Handle, font.Handle, count, x, y, textByteCount, lang.Handle, &b, out runbuffer);
                    }
                    else
                    {
                        SkiaApi.sk_textblob_builder_alloc_run_text(Handle, font.Handle, count, x, y, textByteCount, lang.Handle, (SKRect *)IntPtr.Zero, out runbuffer);
                    }

                    return(new SKRunBuffer(runbuffer, count, textByteCount));
                }
            }
        }
Ejemplo n.º 13
0
		public string ToSvgPathData () {
			using (SKString str = new SKString ()) {
				SkiaApi.sk_path_to_svg_string (Handle, str.Handle);
				return (string)str;
			}
		}