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))); } }
public string GetFamilyName(int index) { using (var str = new SKString()) { SkiaApi.sk_fontmgr_get_family_name(Handle, index, str.Handle); return((string)str); } }
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; } }
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); } }
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; } }
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()); } }
// 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); }
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)); } }
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)); } }
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); } } }
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)); } } }
public string ToSvgPathData () { using (SKString str = new SKString ()) { SkiaApi.sk_path_to_svg_string (Handle, str.Handle); return (string)str; } }