From 52a68c3f4c39d9075a2359e2a1d1cce33dd88fe8 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Mon, 1 Sep 2025 23:56:40 +0200 Subject: [PATCH 01/35] Add baseline docs checklist --- API.Docs.Migration.Checklist.md | 5826 +++++++++++++++++++++++++ scripts/Generate-ApiDocsChecklist.ps1 | 83 + 2 files changed, 5909 insertions(+) create mode 100644 API.Docs.Migration.Checklist.md create mode 100644 scripts/Generate-ApiDocsChecklist.ps1 diff --git a/API.Docs.Migration.Checklist.md b/API.Docs.Migration.Checklist.md new file mode 100644 index 0000000000..6848979474 --- /dev/null +++ b/API.Docs.Migration.Checklist.md @@ -0,0 +1,5826 @@ +# API Docs Migration Checklist + +> Generated: 2025-09-01 23:55 +02:00 +> Source: docs/SkiaSharpAPI + +## Namespace HarfBuzzSharp + +- [ ] HarfBuzzSharp.Blob + - [ ] M:HarfBuzzSharp.Blob.#ctor(System.IntPtr,System.Int32,HarfBuzzSharp.MemoryMode,HarfBuzzSharp.ReleaseDelegate) + - [ ] M:HarfBuzzSharp.Blob.#ctor(System.IntPtr,System.Int32,HarfBuzzSharp.MemoryMode) + - [ ] M:HarfBuzzSharp.Blob.#ctor(System.IntPtr,System.UInt32,HarfBuzzSharp.MemoryMode,System.Object,HarfBuzzSharp.BlobReleaseDelegate) + - [ ] M:HarfBuzzSharp.Blob.AsSpan + - [ ] M:HarfBuzzSharp.Blob.AsStream + - [ ] M:HarfBuzzSharp.Blob.Dispose(System.Boolean) + - [ ] M:HarfBuzzSharp.Blob.DisposeHandler + - [ ] M:HarfBuzzSharp.Blob.FromFile(System.String) + - [ ] M:HarfBuzzSharp.Blob.FromStream(System.IO.Stream) + - [ ] M:HarfBuzzSharp.Blob.MakeImmutable + - [ ] P:HarfBuzzSharp.Blob.Empty + - [ ] P:HarfBuzzSharp.Blob.FaceCount + - [ ] P:HarfBuzzSharp.Blob.IsImmutable + - [ ] P:HarfBuzzSharp.Blob.Length +- [ ] HarfBuzzSharp.BlobReleaseDelegate +- [ ] HarfBuzzSharp.Buffer + - [ ] F:HarfBuzzSharp.Buffer.DefaultReplacementCodepoint + - [ ] M:HarfBuzzSharp.Buffer.#ctor + - [ ] M:HarfBuzzSharp.Buffer.Add(System.Int32,System.Int32) + - [ ] M:HarfBuzzSharp.Buffer.Add(System.UInt32,System.UInt32) + - [ ] M:HarfBuzzSharp.Buffer.AddCodepoints(System.IntPtr,System.Int32,System.Int32,System.Int32) + - [ ] M:HarfBuzzSharp.Buffer.AddCodepoints(System.IntPtr,System.Int32) + - [ ] M:HarfBuzzSharp.Buffer.AddCodepoints(System.ReadOnlySpan{System.Int32},System.Int32,System.Int32) + - [ ] M:HarfBuzzSharp.Buffer.AddCodepoints(System.ReadOnlySpan{System.Int32}) + - [ ] M:HarfBuzzSharp.Buffer.AddCodepoints(System.ReadOnlySpan{System.UInt32},System.Int32,System.Int32) + - [ ] M:HarfBuzzSharp.Buffer.AddCodepoints(System.ReadOnlySpan{System.UInt32}) + - [ ] M:HarfBuzzSharp.Buffer.AddUtf16(System.IntPtr,System.Int32,System.Int32,System.Int32) + - [ ] M:HarfBuzzSharp.Buffer.AddUtf16(System.IntPtr,System.Int32) + - [ ] M:HarfBuzzSharp.Buffer.AddUtf16(System.ReadOnlySpan{System.Byte}) + - [ ] M:HarfBuzzSharp.Buffer.AddUtf16(System.ReadOnlySpan{System.Char},System.Int32,System.Int32) + - [ ] M:HarfBuzzSharp.Buffer.AddUtf16(System.ReadOnlySpan{System.Char}) + - [ ] M:HarfBuzzSharp.Buffer.AddUtf16(System.String,System.Int32,System.Int32) + - [ ] M:HarfBuzzSharp.Buffer.AddUtf16(System.String) + - [ ] M:HarfBuzzSharp.Buffer.AddUtf32(System.IntPtr,System.Int32,System.Int32,System.Int32) + - [ ] M:HarfBuzzSharp.Buffer.AddUtf32(System.IntPtr,System.Int32) + - [ ] M:HarfBuzzSharp.Buffer.AddUtf32(System.ReadOnlySpan{System.Byte}) + - [ ] M:HarfBuzzSharp.Buffer.AddUtf32(System.ReadOnlySpan{System.Int32},System.Int32,System.Int32) + - [ ] M:HarfBuzzSharp.Buffer.AddUtf32(System.ReadOnlySpan{System.Int32}) + - [ ] M:HarfBuzzSharp.Buffer.AddUtf32(System.ReadOnlySpan{System.UInt32},System.Int32,System.Int32) + - [ ] M:HarfBuzzSharp.Buffer.AddUtf32(System.ReadOnlySpan{System.UInt32}) + - [ ] M:HarfBuzzSharp.Buffer.AddUtf32(System.String) + - [ ] M:HarfBuzzSharp.Buffer.AddUtf8(System.Byte[]) + - [ ] M:HarfBuzzSharp.Buffer.AddUtf8(System.IntPtr,System.Int32,System.Int32,System.Int32) + - [ ] M:HarfBuzzSharp.Buffer.AddUtf8(System.IntPtr,System.Int32) + - [ ] M:HarfBuzzSharp.Buffer.AddUtf8(System.ReadOnlySpan{System.Byte},System.Int32,System.Int32) + - [ ] M:HarfBuzzSharp.Buffer.AddUtf8(System.ReadOnlySpan{System.Byte}) + - [ ] M:HarfBuzzSharp.Buffer.AddUtf8(System.String) + - [ ] M:HarfBuzzSharp.Buffer.Append(HarfBuzzSharp.Buffer,System.Int32,System.Int32) + - [ ] M:HarfBuzzSharp.Buffer.Append(HarfBuzzSharp.Buffer) + - [ ] M:HarfBuzzSharp.Buffer.ClearContents + - [ ] M:HarfBuzzSharp.Buffer.DeserializeGlyphs(System.String,HarfBuzzSharp.Font,HarfBuzzSharp.SerializeFormat) + - [ ] M:HarfBuzzSharp.Buffer.DeserializeGlyphs(System.String,HarfBuzzSharp.Font) + - [ ] M:HarfBuzzSharp.Buffer.DeserializeGlyphs(System.String) + - [ ] M:HarfBuzzSharp.Buffer.Dispose(System.Boolean) + - [ ] M:HarfBuzzSharp.Buffer.DisposeHandler + - [ ] M:HarfBuzzSharp.Buffer.GetGlyphInfoSpan + - [ ] M:HarfBuzzSharp.Buffer.GetGlyphPositionSpan + - [ ] M:HarfBuzzSharp.Buffer.GuessSegmentProperties + - [ ] M:HarfBuzzSharp.Buffer.NormalizeGlyphs + - [ ] M:HarfBuzzSharp.Buffer.Reset + - [ ] M:HarfBuzzSharp.Buffer.Reverse + - [ ] M:HarfBuzzSharp.Buffer.ReverseClusters + - [ ] M:HarfBuzzSharp.Buffer.ReverseRange(System.Int32,System.Int32) + - [ ] M:HarfBuzzSharp.Buffer.SerializeGlyphs + - [ ] M:HarfBuzzSharp.Buffer.SerializeGlyphs(HarfBuzzSharp.Font,HarfBuzzSharp.SerializeFormat,HarfBuzzSharp.SerializeFlag) + - [ ] M:HarfBuzzSharp.Buffer.SerializeGlyphs(HarfBuzzSharp.Font) + - [ ] M:HarfBuzzSharp.Buffer.SerializeGlyphs(System.Int32,System.Int32,HarfBuzzSharp.Font,HarfBuzzSharp.SerializeFormat,HarfBuzzSharp.SerializeFlag) + - [ ] M:HarfBuzzSharp.Buffer.SerializeGlyphs(System.Int32,System.Int32) + - [ ] P:HarfBuzzSharp.Buffer.ClusterLevel + - [ ] P:HarfBuzzSharp.Buffer.ContentType + - [ ] P:HarfBuzzSharp.Buffer.Direction + - [ ] P:HarfBuzzSharp.Buffer.Flags + - [ ] P:HarfBuzzSharp.Buffer.GlyphInfos + - [ ] P:HarfBuzzSharp.Buffer.GlyphPositions + - [ ] P:HarfBuzzSharp.Buffer.InvisibleGlyph + - [ ] P:HarfBuzzSharp.Buffer.Language + - [ ] P:HarfBuzzSharp.Buffer.Length + - [ ] P:HarfBuzzSharp.Buffer.ReplacementCodepoint + - [ ] P:HarfBuzzSharp.Buffer.Script + - [ ] P:HarfBuzzSharp.Buffer.UnicodeFunctions +- [ ] HarfBuzzSharp.BufferDiffFlags + - [ ] F:HarfBuzzSharp.BufferDiffFlags.ClusterMismatch + - [ ] F:HarfBuzzSharp.BufferDiffFlags.CodepointMismatch + - [ ] F:HarfBuzzSharp.BufferDiffFlags.ContentTypeMismatch + - [ ] F:HarfBuzzSharp.BufferDiffFlags.DottedCirclePresent + - [ ] F:HarfBuzzSharp.BufferDiffFlags.Equal + - [ ] F:HarfBuzzSharp.BufferDiffFlags.GlyphFlagsMismatch + - [ ] F:HarfBuzzSharp.BufferDiffFlags.LengthMismatch + - [ ] F:HarfBuzzSharp.BufferDiffFlags.NotdefPresent + - [ ] F:HarfBuzzSharp.BufferDiffFlags.PositionMismatch +- [ ] HarfBuzzSharp.BufferFlags + - [ ] F:HarfBuzzSharp.BufferFlags.BeginningOfText + - [ ] F:HarfBuzzSharp.BufferFlags.Default + - [ ] F:HarfBuzzSharp.BufferFlags.DoNotInsertDottedCircle + - [ ] F:HarfBuzzSharp.BufferFlags.EndOfText + - [ ] F:HarfBuzzSharp.BufferFlags.PreserveDefaultIgnorables + - [ ] F:HarfBuzzSharp.BufferFlags.RemoveDefaultIgnorables +- [ ] HarfBuzzSharp.ClusterLevel + - [ ] F:HarfBuzzSharp.ClusterLevel.Characters + - [ ] F:HarfBuzzSharp.ClusterLevel.Default + - [ ] F:HarfBuzzSharp.ClusterLevel.MonotoneCharacters + - [ ] F:HarfBuzzSharp.ClusterLevel.MonotoneGraphemes +- [ ] HarfBuzzSharp.CombiningClassDelegate +- [ ] HarfBuzzSharp.ComposeDelegate +- [ ] HarfBuzzSharp.ContentType + - [ ] F:HarfBuzzSharp.ContentType.Glyphs + - [ ] F:HarfBuzzSharp.ContentType.Invalid + - [ ] F:HarfBuzzSharp.ContentType.Unicode +- [ ] HarfBuzzSharp.DecomposeDelegate +- [ ] HarfBuzzSharp.Direction + - [ ] F:HarfBuzzSharp.Direction.BottomToTop + - [ ] F:HarfBuzzSharp.Direction.Invalid + - [ ] F:HarfBuzzSharp.Direction.LeftToRight + - [ ] F:HarfBuzzSharp.Direction.RightToLeft + - [ ] F:HarfBuzzSharp.Direction.TopToBottom +- [ ] HarfBuzzSharp.Face + - [ ] M:HarfBuzzSharp.Face.#ctor(HarfBuzzSharp.Blob,System.Int32) + - [ ] M:HarfBuzzSharp.Face.#ctor(HarfBuzzSharp.Blob,System.UInt32) + - [ ] M:HarfBuzzSharp.Face.#ctor(HarfBuzzSharp.GetTableDelegate,HarfBuzzSharp.ReleaseDelegate) + - [ ] M:HarfBuzzSharp.Face.#ctor(HarfBuzzSharp.GetTableDelegate) + - [ ] M:HarfBuzzSharp.Face.Dispose(System.Boolean) + - [ ] M:HarfBuzzSharp.Face.DisposeHandler + - [ ] M:HarfBuzzSharp.Face.MakeImmutable + - [ ] M:HarfBuzzSharp.Face.ReferenceTable(HarfBuzzSharp.Tag) + - [ ] P:HarfBuzzSharp.Face.Empty + - [ ] P:HarfBuzzSharp.Face.GlyphCount + - [ ] P:HarfBuzzSharp.Face.Index + - [ ] P:HarfBuzzSharp.Face.IsImmutable + - [ ] P:HarfBuzzSharp.Face.Tables + - [ ] P:HarfBuzzSharp.Face.UnitsPerEm +- [ ] HarfBuzzSharp.Feature + - [ ] M:HarfBuzzSharp.Feature.#ctor(HarfBuzzSharp.Tag,System.UInt32,System.UInt32,System.UInt32) + - [ ] M:HarfBuzzSharp.Feature.#ctor(HarfBuzzSharp.Tag,System.UInt32) + - [ ] M:HarfBuzzSharp.Feature.#ctor(HarfBuzzSharp.Tag) + - [ ] M:HarfBuzzSharp.Feature.Equals(HarfBuzzSharp.Feature) + - [ ] M:HarfBuzzSharp.Feature.Equals(System.Object) + - [ ] M:HarfBuzzSharp.Feature.GetHashCode + - [ ] M:HarfBuzzSharp.Feature.op_Equality(HarfBuzzSharp.Feature,HarfBuzzSharp.Feature) + - [ ] M:HarfBuzzSharp.Feature.op_Inequality(HarfBuzzSharp.Feature,HarfBuzzSharp.Feature) + - [ ] M:HarfBuzzSharp.Feature.Parse(System.String) + - [ ] M:HarfBuzzSharp.Feature.ToString + - [ ] M:HarfBuzzSharp.Feature.TryParse(System.String,HarfBuzzSharp.Feature@) + - [ ] P:HarfBuzzSharp.Feature.End + - [ ] P:HarfBuzzSharp.Feature.Start + - [ ] P:HarfBuzzSharp.Feature.Tag + - [ ] P:HarfBuzzSharp.Feature.Value +- [ ] HarfBuzzSharp.Font + - [ ] M:HarfBuzzSharp.Font.#ctor(HarfBuzzSharp.Face) + - [ ] M:HarfBuzzSharp.Font.#ctor(HarfBuzzSharp.Font) + - [ ] M:HarfBuzzSharp.Font.Dispose(System.Boolean) + - [ ] M:HarfBuzzSharp.Font.DisposeHandler + - [ ] M:HarfBuzzSharp.Font.GetFontExtentsForDirection(HarfBuzzSharp.Direction) + - [ ] M:HarfBuzzSharp.Font.GetGlyphAdvanceForDirection(System.UInt32,HarfBuzzSharp.Direction,System.Int32@,System.Int32@) + - [ ] M:HarfBuzzSharp.Font.GetGlyphAdvancesForDirection(System.IntPtr,System.Int32,HarfBuzzSharp.Direction) + - [ ] M:HarfBuzzSharp.Font.GetGlyphAdvancesForDirection(System.ReadOnlySpan{System.UInt32},HarfBuzzSharp.Direction) + - [ ] M:HarfBuzzSharp.Font.GetHorizontalGlyphAdvance(System.UInt32) + - [ ] M:HarfBuzzSharp.Font.GetHorizontalGlyphAdvances(System.IntPtr,System.Int32) + - [ ] M:HarfBuzzSharp.Font.GetHorizontalGlyphAdvances(System.ReadOnlySpan{System.UInt32}) + - [ ] M:HarfBuzzSharp.Font.GetHorizontalGlyphKerning(System.UInt32,System.UInt32) + - [ ] M:HarfBuzzSharp.Font.GetScale(System.Int32@,System.Int32@) + - [ ] M:HarfBuzzSharp.Font.GetVerticalGlyphAdvance(System.UInt32) + - [ ] M:HarfBuzzSharp.Font.GetVerticalGlyphAdvances(System.IntPtr,System.Int32) + - [ ] M:HarfBuzzSharp.Font.GetVerticalGlyphAdvances(System.ReadOnlySpan{System.UInt32}) + - [ ] M:HarfBuzzSharp.Font.GlyphToString(System.UInt32) + - [ ] M:HarfBuzzSharp.Font.SetFontFunctions(HarfBuzzSharp.FontFunctions,System.Object,HarfBuzzSharp.ReleaseDelegate) + - [ ] M:HarfBuzzSharp.Font.SetFontFunctions(HarfBuzzSharp.FontFunctions,System.Object) + - [ ] M:HarfBuzzSharp.Font.SetFontFunctions(HarfBuzzSharp.FontFunctions) + - [ ] M:HarfBuzzSharp.Font.SetFunctionsOpenType + - [ ] M:HarfBuzzSharp.Font.SetScale(System.Int32,System.Int32) + - [ ] M:HarfBuzzSharp.Font.Shape(HarfBuzzSharp.Buffer,HarfBuzzSharp.Feature[]) + - [ ] M:HarfBuzzSharp.Font.Shape(HarfBuzzSharp.Buffer,System.Collections.Generic.IReadOnlyList{HarfBuzzSharp.Feature},System.Collections.Generic.IReadOnlyList{System.String}) + - [ ] M:HarfBuzzSharp.Font.TryGetGlyph(System.Int32,System.UInt32,System.UInt32@) + - [ ] M:HarfBuzzSharp.Font.TryGetGlyph(System.Int32,System.UInt32@) + - [ ] M:HarfBuzzSharp.Font.TryGetGlyph(System.UInt32,System.UInt32,System.UInt32@) + - [ ] M:HarfBuzzSharp.Font.TryGetGlyph(System.UInt32,System.UInt32@) + - [ ] M:HarfBuzzSharp.Font.TryGetGlyphContourPoint(System.UInt32,System.UInt32,System.Int32@,System.Int32@) + - [ ] M:HarfBuzzSharp.Font.TryGetGlyphContourPointForOrigin(System.UInt32,System.UInt32,HarfBuzzSharp.Direction,System.Int32@,System.Int32@) + - [ ] M:HarfBuzzSharp.Font.TryGetGlyphExtents(System.UInt32,HarfBuzzSharp.GlyphExtents@) + - [ ] M:HarfBuzzSharp.Font.TryGetGlyphFromName(System.String,System.UInt32@) + - [ ] M:HarfBuzzSharp.Font.TryGetGlyphFromString(System.String,System.UInt32@) + - [ ] M:HarfBuzzSharp.Font.TryGetGlyphName(System.UInt32,System.String@) + - [ ] M:HarfBuzzSharp.Font.TryGetHorizontalFontExtents(HarfBuzzSharp.FontExtents@) + - [ ] M:HarfBuzzSharp.Font.TryGetHorizontalGlyphOrigin(System.UInt32,System.Int32@,System.Int32@) + - [ ] M:HarfBuzzSharp.Font.TryGetNominalGlyph(System.Int32,System.UInt32@) + - [ ] M:HarfBuzzSharp.Font.TryGetNominalGlyph(System.UInt32,System.UInt32@) + - [ ] M:HarfBuzzSharp.Font.TryGetVariationGlyph(System.Int32,System.UInt32,System.UInt32@) + - [ ] M:HarfBuzzSharp.Font.TryGetVariationGlyph(System.Int32,System.UInt32@) + - [ ] M:HarfBuzzSharp.Font.TryGetVariationGlyph(System.UInt32,System.UInt32,System.UInt32@) + - [ ] M:HarfBuzzSharp.Font.TryGetVariationGlyph(System.UInt32,System.UInt32@) + - [ ] M:HarfBuzzSharp.Font.TryGetVerticalFontExtents(HarfBuzzSharp.FontExtents@) + - [ ] M:HarfBuzzSharp.Font.TryGetVerticalGlyphOrigin(System.UInt32,System.Int32@,System.Int32@) + - [ ] P:HarfBuzzSharp.Font.OpenTypeMetrics + - [ ] P:HarfBuzzSharp.Font.Parent + - [ ] P:HarfBuzzSharp.Font.SupportedShapers +- [ ] HarfBuzzSharp.FontExtents + - [ ] M:HarfBuzzSharp.FontExtents.Equals(HarfBuzzSharp.FontExtents) + - [ ] M:HarfBuzzSharp.FontExtents.Equals(System.Object) + - [ ] M:HarfBuzzSharp.FontExtents.GetHashCode + - [ ] M:HarfBuzzSharp.FontExtents.op_Equality(HarfBuzzSharp.FontExtents,HarfBuzzSharp.FontExtents) + - [ ] M:HarfBuzzSharp.FontExtents.op_Inequality(HarfBuzzSharp.FontExtents,HarfBuzzSharp.FontExtents) + - [ ] P:HarfBuzzSharp.FontExtents.Ascender + - [ ] P:HarfBuzzSharp.FontExtents.Descender + - [ ] P:HarfBuzzSharp.FontExtents.LineGap +- [ ] HarfBuzzSharp.FontExtentsDelegate +- [ ] HarfBuzzSharp.FontFunctions + - [ ] M:HarfBuzzSharp.FontFunctions.#ctor + - [ ] M:HarfBuzzSharp.FontFunctions.Dispose(System.Boolean) + - [ ] M:HarfBuzzSharp.FontFunctions.DisposeHandler + - [ ] M:HarfBuzzSharp.FontFunctions.MakeImmutable + - [ ] M:HarfBuzzSharp.FontFunctions.SetGlyphContourPointDelegate(HarfBuzzSharp.GlyphContourPointDelegate,HarfBuzzSharp.ReleaseDelegate) + - [ ] M:HarfBuzzSharp.FontFunctions.SetGlyphExtentsDelegate(HarfBuzzSharp.GlyphExtentsDelegate,HarfBuzzSharp.ReleaseDelegate) + - [ ] M:HarfBuzzSharp.FontFunctions.SetGlyphFromNameDelegate(HarfBuzzSharp.GlyphFromNameDelegate,HarfBuzzSharp.ReleaseDelegate) + - [ ] M:HarfBuzzSharp.FontFunctions.SetGlyphNameDelegate(HarfBuzzSharp.GlyphNameDelegate,HarfBuzzSharp.ReleaseDelegate) + - [ ] M:HarfBuzzSharp.FontFunctions.SetHorizontalFontExtentsDelegate(HarfBuzzSharp.FontExtentsDelegate,HarfBuzzSharp.ReleaseDelegate) + - [ ] M:HarfBuzzSharp.FontFunctions.SetHorizontalGlyphAdvanceDelegate(HarfBuzzSharp.GlyphAdvanceDelegate,HarfBuzzSharp.ReleaseDelegate) + - [ ] M:HarfBuzzSharp.FontFunctions.SetHorizontalGlyphAdvancesDelegate(HarfBuzzSharp.GlyphAdvancesDelegate,HarfBuzzSharp.ReleaseDelegate) + - [ ] M:HarfBuzzSharp.FontFunctions.SetHorizontalGlyphKerningDelegate(HarfBuzzSharp.GlyphKerningDelegate,HarfBuzzSharp.ReleaseDelegate) + - [ ] M:HarfBuzzSharp.FontFunctions.SetHorizontalGlyphOriginDelegate(HarfBuzzSharp.GlyphOriginDelegate,HarfBuzzSharp.ReleaseDelegate) + - [ ] M:HarfBuzzSharp.FontFunctions.SetNominalGlyphDelegate(HarfBuzzSharp.NominalGlyphDelegate,HarfBuzzSharp.ReleaseDelegate) + - [ ] M:HarfBuzzSharp.FontFunctions.SetNominalGlyphsDelegate(HarfBuzzSharp.NominalGlyphsDelegate,HarfBuzzSharp.ReleaseDelegate) + - [ ] M:HarfBuzzSharp.FontFunctions.SetVariationGlyphDelegate(HarfBuzzSharp.VariationGlyphDelegate,HarfBuzzSharp.ReleaseDelegate) + - [ ] M:HarfBuzzSharp.FontFunctions.SetVerticalFontExtentsDelegate(HarfBuzzSharp.FontExtentsDelegate,HarfBuzzSharp.ReleaseDelegate) + - [ ] M:HarfBuzzSharp.FontFunctions.SetVerticalGlyphAdvanceDelegate(HarfBuzzSharp.GlyphAdvanceDelegate,HarfBuzzSharp.ReleaseDelegate) + - [ ] M:HarfBuzzSharp.FontFunctions.SetVerticalGlyphAdvancesDelegate(HarfBuzzSharp.GlyphAdvancesDelegate,HarfBuzzSharp.ReleaseDelegate) + - [ ] M:HarfBuzzSharp.FontFunctions.SetVerticalGlyphOriginDelegate(HarfBuzzSharp.GlyphOriginDelegate,HarfBuzzSharp.ReleaseDelegate) + - [ ] P:HarfBuzzSharp.FontFunctions.Empty + - [ ] P:HarfBuzzSharp.FontFunctions.IsImmutable +- [ ] HarfBuzzSharp.GeneralCategoryDelegate +- [ ] HarfBuzzSharp.GetTableDelegate +- [ ] HarfBuzzSharp.GlyphAdvanceDelegate +- [ ] HarfBuzzSharp.GlyphAdvancesDelegate +- [ ] HarfBuzzSharp.GlyphContourPointDelegate +- [ ] HarfBuzzSharp.GlyphExtents + - [ ] M:HarfBuzzSharp.GlyphExtents.Equals(HarfBuzzSharp.GlyphExtents) + - [ ] M:HarfBuzzSharp.GlyphExtents.Equals(System.Object) + - [ ] M:HarfBuzzSharp.GlyphExtents.GetHashCode + - [ ] M:HarfBuzzSharp.GlyphExtents.op_Equality(HarfBuzzSharp.GlyphExtents,HarfBuzzSharp.GlyphExtents) + - [ ] M:HarfBuzzSharp.GlyphExtents.op_Inequality(HarfBuzzSharp.GlyphExtents,HarfBuzzSharp.GlyphExtents) + - [ ] P:HarfBuzzSharp.GlyphExtents.Height + - [ ] P:HarfBuzzSharp.GlyphExtents.Width + - [ ] P:HarfBuzzSharp.GlyphExtents.XBearing + - [ ] P:HarfBuzzSharp.GlyphExtents.YBearing +- [ ] HarfBuzzSharp.GlyphExtentsDelegate +- [ ] HarfBuzzSharp.GlyphFlags + - [ ] F:HarfBuzzSharp.GlyphFlags.Defined + - [ ] F:HarfBuzzSharp.GlyphFlags.UnsafeToBreak +- [ ] HarfBuzzSharp.GlyphFromNameDelegate +- [ ] HarfBuzzSharp.GlyphInfo + - [ ] M:HarfBuzzSharp.GlyphInfo.Equals(HarfBuzzSharp.GlyphInfo) + - [ ] M:HarfBuzzSharp.GlyphInfo.Equals(System.Object) + - [ ] M:HarfBuzzSharp.GlyphInfo.GetHashCode + - [ ] M:HarfBuzzSharp.GlyphInfo.op_Equality(HarfBuzzSharp.GlyphInfo,HarfBuzzSharp.GlyphInfo) + - [ ] M:HarfBuzzSharp.GlyphInfo.op_Inequality(HarfBuzzSharp.GlyphInfo,HarfBuzzSharp.GlyphInfo) + - [ ] P:HarfBuzzSharp.GlyphInfo.Cluster + - [ ] P:HarfBuzzSharp.GlyphInfo.Codepoint + - [ ] P:HarfBuzzSharp.GlyphInfo.GlyphFlags + - [ ] P:HarfBuzzSharp.GlyphInfo.Mask +- [ ] HarfBuzzSharp.GlyphKerningDelegate +- [ ] HarfBuzzSharp.GlyphNameDelegate +- [ ] HarfBuzzSharp.GlyphOriginDelegate +- [ ] HarfBuzzSharp.GlyphPosition + - [ ] M:HarfBuzzSharp.GlyphPosition.Equals(HarfBuzzSharp.GlyphPosition) + - [ ] M:HarfBuzzSharp.GlyphPosition.Equals(System.Object) + - [ ] M:HarfBuzzSharp.GlyphPosition.GetHashCode + - [ ] M:HarfBuzzSharp.GlyphPosition.op_Equality(HarfBuzzSharp.GlyphPosition,HarfBuzzSharp.GlyphPosition) + - [ ] M:HarfBuzzSharp.GlyphPosition.op_Inequality(HarfBuzzSharp.GlyphPosition,HarfBuzzSharp.GlyphPosition) + - [ ] P:HarfBuzzSharp.GlyphPosition.XAdvance + - [ ] P:HarfBuzzSharp.GlyphPosition.XOffset + - [ ] P:HarfBuzzSharp.GlyphPosition.YAdvance + - [ ] P:HarfBuzzSharp.GlyphPosition.YOffset +- [ ] HarfBuzzSharp.Language + - [ ] M:HarfBuzzSharp.Language.#ctor(System.Globalization.CultureInfo) + - [ ] M:HarfBuzzSharp.Language.#ctor(System.String) + - [ ] M:HarfBuzzSharp.Language.Equals(System.Object) + - [ ] M:HarfBuzzSharp.Language.GetHashCode + - [ ] M:HarfBuzzSharp.Language.ToString + - [ ] P:HarfBuzzSharp.Language.Default + - [ ] P:HarfBuzzSharp.Language.Name +- [ ] HarfBuzzSharp.MemoryMode + - [ ] F:HarfBuzzSharp.MemoryMode.Duplicate + - [ ] F:HarfBuzzSharp.MemoryMode.ReadOnly + - [ ] F:HarfBuzzSharp.MemoryMode.ReadOnlyMayMakeWriteable + - [ ] F:HarfBuzzSharp.MemoryMode.Writeable +- [ ] HarfBuzzSharp.MirroringDelegate +- [ ] HarfBuzzSharp.NativeObject + - [ ] M:HarfBuzzSharp.NativeObject.Dispose + - [ ] M:HarfBuzzSharp.NativeObject.Dispose(System.Boolean) + - [ ] M:HarfBuzzSharp.NativeObject.DisposeHandler + - [ ] M:HarfBuzzSharp.NativeObject.Finalize + - [ ] P:HarfBuzzSharp.NativeObject.Handle +- [ ] HarfBuzzSharp.NominalGlyphDelegate +- [ ] HarfBuzzSharp.NominalGlyphsDelegate +- [ ] HarfBuzzSharp.OpenTypeColorLayer + - [ ] M:HarfBuzzSharp.OpenTypeColorLayer.Equals(HarfBuzzSharp.OpenTypeColorLayer) + - [ ] M:HarfBuzzSharp.OpenTypeColorLayer.Equals(System.Object) + - [ ] M:HarfBuzzSharp.OpenTypeColorLayer.GetHashCode + - [ ] M:HarfBuzzSharp.OpenTypeColorLayer.op_Equality(HarfBuzzSharp.OpenTypeColorLayer,HarfBuzzSharp.OpenTypeColorLayer) + - [ ] M:HarfBuzzSharp.OpenTypeColorLayer.op_Inequality(HarfBuzzSharp.OpenTypeColorLayer,HarfBuzzSharp.OpenTypeColorLayer) + - [ ] P:HarfBuzzSharp.OpenTypeColorLayer.ColorIndex + - [ ] P:HarfBuzzSharp.OpenTypeColorLayer.Glyph +- [ ] HarfBuzzSharp.OpenTypeColorPaletteFlags + - [ ] F:HarfBuzzSharp.OpenTypeColorPaletteFlags.Default + - [ ] F:HarfBuzzSharp.OpenTypeColorPaletteFlags.UsableWithDarkBackground + - [ ] F:HarfBuzzSharp.OpenTypeColorPaletteFlags.UsableWithLightBackground +- [ ] HarfBuzzSharp.OpenTypeLayoutBaselineTag + - [ ] F:HarfBuzzSharp.OpenTypeLayoutBaselineTag.Hanging + - [ ] F:HarfBuzzSharp.OpenTypeLayoutBaselineTag.IdeoEmboxBottomOrLeft + - [ ] F:HarfBuzzSharp.OpenTypeLayoutBaselineTag.IdeoEmboxTopOrRight + - [ ] F:HarfBuzzSharp.OpenTypeLayoutBaselineTag.IdeoFaceBottomOrLeft + - [ ] F:HarfBuzzSharp.OpenTypeLayoutBaselineTag.IdeoFaceTopOrRight + - [ ] F:HarfBuzzSharp.OpenTypeLayoutBaselineTag.Math + - [ ] F:HarfBuzzSharp.OpenTypeLayoutBaselineTag.Roman +- [ ] HarfBuzzSharp.OpenTypeLayoutGlyphClass + - [ ] F:HarfBuzzSharp.OpenTypeLayoutGlyphClass.BaseGlyph + - [ ] F:HarfBuzzSharp.OpenTypeLayoutGlyphClass.Component + - [ ] F:HarfBuzzSharp.OpenTypeLayoutGlyphClass.Ligature + - [ ] F:HarfBuzzSharp.OpenTypeLayoutGlyphClass.Mark + - [ ] F:HarfBuzzSharp.OpenTypeLayoutGlyphClass.Unclassified +- [ ] HarfBuzzSharp.OpenTypeMathConstant + - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.AccentBaseHeight + - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.AxisHeight + - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.DelimitedSubFormulaMinHeight + - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.DisplayOperatorMinHeight + - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.FlattenedAccentBaseHeight + - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.FractionDenomDisplayStyleGapMin + - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.FractionDenominatorDisplayStyleShiftDown + - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.FractionDenominatorGapMin + - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.FractionDenominatorShiftDown + - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.FractionNumDisplayStyleGapMin + - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.FractionNumeratorDisplayStyleShiftUp + - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.FractionNumeratorGapMin + - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.FractionNumeratorShiftUp + - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.FractionRuleThickness + - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.LowerLimitBaselineDropMin + - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.LowerLimitGapMin + - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.MathLeading + - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.OverbarExtraAscender + - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.OverbarRuleThickness + - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.OverbarVerticalGap + - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.RadicalDegreeBottomRaisePercent + - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.RadicalDisplayStyleVerticalGap + - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.RadicalExtraAscender + - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.RadicalKernAfterDegree + - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.RadicalKernBeforeDegree + - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.RadicalRuleThickness + - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.RadicalVerticalGap + - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.ScriptPercentScaleDown + - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.ScriptScriptPercentScaleDown + - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.SkewedFractionHorizontalGap + - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.SkewedFractionVerticalGap + - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.SpaceAfterScript + - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.StackBottomDisplayStyleShiftDown + - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.StackBottomShiftDown + - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.StackDisplayStyleGapMin + - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.StackGapMin + - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.StackTopDisplayStyleShiftUp + - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.StackTopShiftUp + - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.StretchStackBottomShiftDown + - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.StretchStackGapAboveMin + - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.StretchStackGapBelowMin + - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.StretchStackTopShiftUp + - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.SubscriptBaselineDropMin + - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.SubscriptShiftDown + - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.SubscriptTopMax + - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.SubSuperscriptGapMin + - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.SuperscriptBaselineDropMax + - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.SuperscriptBottomMaxWithSubscript + - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.SuperscriptBottomMin + - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.SuperscriptShiftUp + - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.SuperscriptShiftUpCramped + - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.UnderbarExtraDescender + - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.UnderbarRuleThickness + - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.UnderbarVerticalGap + - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.UpperLimitBaselineRiseMin + - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.UpperLimitGapMin +- [ ] HarfBuzzSharp.OpenTypeMathGlyphPart + - [ ] M:HarfBuzzSharp.OpenTypeMathGlyphPart.Equals(HarfBuzzSharp.OpenTypeMathGlyphPart) + - [ ] M:HarfBuzzSharp.OpenTypeMathGlyphPart.Equals(System.Object) + - [ ] M:HarfBuzzSharp.OpenTypeMathGlyphPart.GetHashCode + - [ ] M:HarfBuzzSharp.OpenTypeMathGlyphPart.op_Equality(HarfBuzzSharp.OpenTypeMathGlyphPart,HarfBuzzSharp.OpenTypeMathGlyphPart) + - [ ] M:HarfBuzzSharp.OpenTypeMathGlyphPart.op_Inequality(HarfBuzzSharp.OpenTypeMathGlyphPart,HarfBuzzSharp.OpenTypeMathGlyphPart) + - [ ] P:HarfBuzzSharp.OpenTypeMathGlyphPart.EndConnectorLength + - [ ] P:HarfBuzzSharp.OpenTypeMathGlyphPart.Flags + - [ ] P:HarfBuzzSharp.OpenTypeMathGlyphPart.FullAdvance + - [ ] P:HarfBuzzSharp.OpenTypeMathGlyphPart.Glyph + - [ ] P:HarfBuzzSharp.OpenTypeMathGlyphPart.StartConnectorLength +- [ ] HarfBuzzSharp.OpenTypeMathGlyphPartFlags + - [ ] F:HarfBuzzSharp.OpenTypeMathGlyphPartFlags.Extender +- [ ] HarfBuzzSharp.OpenTypeMathGlyphVariant + - [ ] M:HarfBuzzSharp.OpenTypeMathGlyphVariant.Equals(HarfBuzzSharp.OpenTypeMathGlyphVariant) + - [ ] M:HarfBuzzSharp.OpenTypeMathGlyphVariant.Equals(System.Object) + - [ ] M:HarfBuzzSharp.OpenTypeMathGlyphVariant.GetHashCode + - [ ] M:HarfBuzzSharp.OpenTypeMathGlyphVariant.op_Equality(HarfBuzzSharp.OpenTypeMathGlyphVariant,HarfBuzzSharp.OpenTypeMathGlyphVariant) + - [ ] M:HarfBuzzSharp.OpenTypeMathGlyphVariant.op_Inequality(HarfBuzzSharp.OpenTypeMathGlyphVariant,HarfBuzzSharp.OpenTypeMathGlyphVariant) + - [ ] P:HarfBuzzSharp.OpenTypeMathGlyphVariant.Advance + - [ ] P:HarfBuzzSharp.OpenTypeMathGlyphVariant.Glyph +- [ ] HarfBuzzSharp.OpenTypeMathKern + - [ ] F:HarfBuzzSharp.OpenTypeMathKern.BottomLeft + - [ ] F:HarfBuzzSharp.OpenTypeMathKern.BottomRight + - [ ] F:HarfBuzzSharp.OpenTypeMathKern.TopLeft + - [ ] F:HarfBuzzSharp.OpenTypeMathKern.TopRight +- [ ] HarfBuzzSharp.OpenTypeMetaTag + - [ ] F:HarfBuzzSharp.OpenTypeMetaTag.DesignLanguages + - [ ] F:HarfBuzzSharp.OpenTypeMetaTag.SupportedLanguages +- [ ] HarfBuzzSharp.OpenTypeMetrics + - [ ] M:HarfBuzzSharp.OpenTypeMetrics.#ctor(HarfBuzzSharp.Font) + - [ ] M:HarfBuzzSharp.OpenTypeMetrics.GetVariation(HarfBuzzSharp.OpenTypeMetricsTag) + - [ ] M:HarfBuzzSharp.OpenTypeMetrics.GetXVariation(HarfBuzzSharp.OpenTypeMetricsTag) + - [ ] M:HarfBuzzSharp.OpenTypeMetrics.GetYVariation(HarfBuzzSharp.OpenTypeMetricsTag) + - [ ] M:HarfBuzzSharp.OpenTypeMetrics.TryGetPosition(HarfBuzzSharp.OpenTypeMetricsTag,System.Int32@) +- [ ] HarfBuzzSharp.OpenTypeMetricsTag + - [ ] F:HarfBuzzSharp.OpenTypeMetricsTag.CapHeight + - [ ] F:HarfBuzzSharp.OpenTypeMetricsTag.HorizontalAscender + - [ ] F:HarfBuzzSharp.OpenTypeMetricsTag.HorizontalCaretOffset + - [ ] F:HarfBuzzSharp.OpenTypeMetricsTag.HorizontalCaretRise + - [ ] F:HarfBuzzSharp.OpenTypeMetricsTag.HorizontalCaretRun + - [ ] F:HarfBuzzSharp.OpenTypeMetricsTag.HorizontalClippingAscent + - [ ] F:HarfBuzzSharp.OpenTypeMetricsTag.HorizontalClippingDescent + - [ ] F:HarfBuzzSharp.OpenTypeMetricsTag.HorizontalDescender + - [ ] F:HarfBuzzSharp.OpenTypeMetricsTag.HorizontalLineGap + - [ ] F:HarfBuzzSharp.OpenTypeMetricsTag.StrikeoutOffset + - [ ] F:HarfBuzzSharp.OpenTypeMetricsTag.StrikeoutSize + - [ ] F:HarfBuzzSharp.OpenTypeMetricsTag.SubScriptEmXOffset + - [ ] F:HarfBuzzSharp.OpenTypeMetricsTag.SubScriptEmXSize + - [ ] F:HarfBuzzSharp.OpenTypeMetricsTag.SubScriptEmYOffset + - [ ] F:HarfBuzzSharp.OpenTypeMetricsTag.SubScriptEmYSize + - [ ] F:HarfBuzzSharp.OpenTypeMetricsTag.SuperScriptEmXOffset + - [ ] F:HarfBuzzSharp.OpenTypeMetricsTag.SuperScriptEmXSize + - [ ] F:HarfBuzzSharp.OpenTypeMetricsTag.SuperScriptEmYOffset + - [ ] F:HarfBuzzSharp.OpenTypeMetricsTag.SuperScriptEmYSize + - [ ] F:HarfBuzzSharp.OpenTypeMetricsTag.UnderlineOffset + - [ ] F:HarfBuzzSharp.OpenTypeMetricsTag.UnderlineSize + - [ ] F:HarfBuzzSharp.OpenTypeMetricsTag.VerticalAscender + - [ ] F:HarfBuzzSharp.OpenTypeMetricsTag.VerticalCaretOffset + - [ ] F:HarfBuzzSharp.OpenTypeMetricsTag.VerticalCaretRise + - [ ] F:HarfBuzzSharp.OpenTypeMetricsTag.VerticalCaretRun + - [ ] F:HarfBuzzSharp.OpenTypeMetricsTag.VerticalDescender + - [ ] F:HarfBuzzSharp.OpenTypeMetricsTag.VerticalLineGap + - [ ] F:HarfBuzzSharp.OpenTypeMetricsTag.XHeight +- [ ] HarfBuzzSharp.OpenTypeNameEntry + - [ ] M:HarfBuzzSharp.OpenTypeNameEntry.Equals(HarfBuzzSharp.OpenTypeNameEntry) + - [ ] M:HarfBuzzSharp.OpenTypeNameEntry.Equals(System.Object) + - [ ] M:HarfBuzzSharp.OpenTypeNameEntry.GetHashCode + - [ ] M:HarfBuzzSharp.OpenTypeNameEntry.op_Equality(HarfBuzzSharp.OpenTypeNameEntry,HarfBuzzSharp.OpenTypeNameEntry) + - [ ] M:HarfBuzzSharp.OpenTypeNameEntry.op_Inequality(HarfBuzzSharp.OpenTypeNameEntry,HarfBuzzSharp.OpenTypeNameEntry) + - [ ] P:HarfBuzzSharp.OpenTypeNameEntry.Language + - [ ] P:HarfBuzzSharp.OpenTypeNameEntry.NameId + - [ ] P:HarfBuzzSharp.OpenTypeNameEntry.Var +- [ ] HarfBuzzSharp.OpenTypeNameId + - [ ] F:HarfBuzzSharp.OpenTypeNameId.CidFindFontName + - [ ] F:HarfBuzzSharp.OpenTypeNameId.Copyright + - [ ] F:HarfBuzzSharp.OpenTypeNameId.DarkBackground + - [ ] F:HarfBuzzSharp.OpenTypeNameId.Description + - [ ] F:HarfBuzzSharp.OpenTypeNameId.Designer + - [ ] F:HarfBuzzSharp.OpenTypeNameId.DesignerUrl + - [ ] F:HarfBuzzSharp.OpenTypeNameId.FontFamily + - [ ] F:HarfBuzzSharp.OpenTypeNameId.FontSubfamily + - [ ] F:HarfBuzzSharp.OpenTypeNameId.FullName + - [ ] F:HarfBuzzSharp.OpenTypeNameId.Invalid + - [ ] F:HarfBuzzSharp.OpenTypeNameId.License + - [ ] F:HarfBuzzSharp.OpenTypeNameId.LicenseUrl + - [ ] F:HarfBuzzSharp.OpenTypeNameId.LightBackground + - [ ] F:HarfBuzzSharp.OpenTypeNameId.MacFullName + - [ ] F:HarfBuzzSharp.OpenTypeNameId.Manufacturer + - [ ] F:HarfBuzzSharp.OpenTypeNameId.PostscriptName + - [ ] F:HarfBuzzSharp.OpenTypeNameId.SampleText + - [ ] F:HarfBuzzSharp.OpenTypeNameId.Trademark + - [ ] F:HarfBuzzSharp.OpenTypeNameId.TypographicFamily + - [ ] F:HarfBuzzSharp.OpenTypeNameId.TypographicSubfamily + - [ ] F:HarfBuzzSharp.OpenTypeNameId.UniqueId + - [ ] F:HarfBuzzSharp.OpenTypeNameId.VariationsPostscriptPrefix + - [ ] F:HarfBuzzSharp.OpenTypeNameId.VendorUrl + - [ ] F:HarfBuzzSharp.OpenTypeNameId.VersionString + - [ ] F:HarfBuzzSharp.OpenTypeNameId.WwsFamily + - [ ] F:HarfBuzzSharp.OpenTypeNameId.WwsSubfamily +- [ ] HarfBuzzSharp.OpenTypeVarAxis + - [ ] M:HarfBuzzSharp.OpenTypeVarAxis.Equals(HarfBuzzSharp.OpenTypeVarAxis) + - [ ] M:HarfBuzzSharp.OpenTypeVarAxis.Equals(System.Object) + - [ ] M:HarfBuzzSharp.OpenTypeVarAxis.GetHashCode + - [ ] M:HarfBuzzSharp.OpenTypeVarAxis.op_Equality(HarfBuzzSharp.OpenTypeVarAxis,HarfBuzzSharp.OpenTypeVarAxis) + - [ ] M:HarfBuzzSharp.OpenTypeVarAxis.op_Inequality(HarfBuzzSharp.OpenTypeVarAxis,HarfBuzzSharp.OpenTypeVarAxis) + - [ ] P:HarfBuzzSharp.OpenTypeVarAxis.DefaultValue + - [ ] P:HarfBuzzSharp.OpenTypeVarAxis.MaxValue + - [ ] P:HarfBuzzSharp.OpenTypeVarAxis.MinValue + - [ ] P:HarfBuzzSharp.OpenTypeVarAxis.NameId + - [ ] P:HarfBuzzSharp.OpenTypeVarAxis.Tag +- [ ] HarfBuzzSharp.OpenTypeVarAxisFlags + - [ ] F:HarfBuzzSharp.OpenTypeVarAxisFlags.Hidden +- [ ] HarfBuzzSharp.OpenTypeVarAxisInfo + - [ ] M:HarfBuzzSharp.OpenTypeVarAxisInfo.Equals(HarfBuzzSharp.OpenTypeVarAxisInfo) + - [ ] M:HarfBuzzSharp.OpenTypeVarAxisInfo.Equals(System.Object) + - [ ] M:HarfBuzzSharp.OpenTypeVarAxisInfo.GetHashCode + - [ ] M:HarfBuzzSharp.OpenTypeVarAxisInfo.op_Equality(HarfBuzzSharp.OpenTypeVarAxisInfo,HarfBuzzSharp.OpenTypeVarAxisInfo) + - [ ] M:HarfBuzzSharp.OpenTypeVarAxisInfo.op_Inequality(HarfBuzzSharp.OpenTypeVarAxisInfo,HarfBuzzSharp.OpenTypeVarAxisInfo) + - [ ] P:HarfBuzzSharp.OpenTypeVarAxisInfo.AxisIndex + - [ ] P:HarfBuzzSharp.OpenTypeVarAxisInfo.DefaultValue + - [ ] P:HarfBuzzSharp.OpenTypeVarAxisInfo.Flags + - [ ] P:HarfBuzzSharp.OpenTypeVarAxisInfo.MaxValue + - [ ] P:HarfBuzzSharp.OpenTypeVarAxisInfo.MinValue + - [ ] P:HarfBuzzSharp.OpenTypeVarAxisInfo.NameId + - [ ] P:HarfBuzzSharp.OpenTypeVarAxisInfo.Tag +- [ ] HarfBuzzSharp.ReleaseDelegate +- [ ] HarfBuzzSharp.Script + - [ ] F:HarfBuzzSharp.Script.Adlam + - [ ] F:HarfBuzzSharp.Script.Ahom + - [ ] F:HarfBuzzSharp.Script.AnatolianHieroglyphs + - [ ] F:HarfBuzzSharp.Script.Arabic + - [ ] F:HarfBuzzSharp.Script.Armenian + - [ ] F:HarfBuzzSharp.Script.Avestan + - [ ] F:HarfBuzzSharp.Script.Balinese + - [ ] F:HarfBuzzSharp.Script.Bamum + - [ ] F:HarfBuzzSharp.Script.BassaVah + - [ ] F:HarfBuzzSharp.Script.Batak + - [ ] F:HarfBuzzSharp.Script.Bengali + - [ ] F:HarfBuzzSharp.Script.Bhaiksuki + - [ ] F:HarfBuzzSharp.Script.Bopomofo + - [ ] F:HarfBuzzSharp.Script.Brahmi + - [ ] F:HarfBuzzSharp.Script.Braille + - [ ] F:HarfBuzzSharp.Script.Buginese + - [ ] F:HarfBuzzSharp.Script.Buhid + - [ ] F:HarfBuzzSharp.Script.CanadianSyllabics + - [ ] F:HarfBuzzSharp.Script.Carian + - [ ] F:HarfBuzzSharp.Script.CaucasianAlbanian + - [ ] F:HarfBuzzSharp.Script.Chakma + - [ ] F:HarfBuzzSharp.Script.Cham + - [ ] F:HarfBuzzSharp.Script.Cherokee + - [ ] F:HarfBuzzSharp.Script.Common + - [ ] F:HarfBuzzSharp.Script.Coptic + - [ ] F:HarfBuzzSharp.Script.Cuneiform + - [ ] F:HarfBuzzSharp.Script.Cypriot + - [ ] F:HarfBuzzSharp.Script.Cyrillic + - [ ] F:HarfBuzzSharp.Script.Deseret + - [ ] F:HarfBuzzSharp.Script.Devanagari + - [ ] F:HarfBuzzSharp.Script.Dogra + - [ ] F:HarfBuzzSharp.Script.Duployan + - [ ] F:HarfBuzzSharp.Script.EgyptianHieroglyphs + - [ ] F:HarfBuzzSharp.Script.Elbasan + - [ ] F:HarfBuzzSharp.Script.Ethiopic + - [ ] F:HarfBuzzSharp.Script.Georgian + - [ ] F:HarfBuzzSharp.Script.Glagolitic + - [ ] F:HarfBuzzSharp.Script.Gothic + - [ ] F:HarfBuzzSharp.Script.Grantha + - [ ] F:HarfBuzzSharp.Script.Greek + - [ ] F:HarfBuzzSharp.Script.Gujarati + - [ ] F:HarfBuzzSharp.Script.GunjalaGondi + - [ ] F:HarfBuzzSharp.Script.Gurmukhi + - [ ] F:HarfBuzzSharp.Script.Han + - [ ] F:HarfBuzzSharp.Script.Hangul + - [ ] F:HarfBuzzSharp.Script.HanifiRohingya + - [ ] F:HarfBuzzSharp.Script.Hanunoo + - [ ] F:HarfBuzzSharp.Script.Hatran + - [ ] F:HarfBuzzSharp.Script.Hebrew + - [ ] F:HarfBuzzSharp.Script.Hiragana + - [ ] F:HarfBuzzSharp.Script.ImperialAramaic + - [ ] F:HarfBuzzSharp.Script.Inherited + - [ ] F:HarfBuzzSharp.Script.InscriptionalPahlavi + - [ ] F:HarfBuzzSharp.Script.InscriptionalParthian + - [ ] F:HarfBuzzSharp.Script.Invalid + - [ ] F:HarfBuzzSharp.Script.Javanese + - [ ] F:HarfBuzzSharp.Script.Kaithi + - [ ] F:HarfBuzzSharp.Script.Kannada + - [ ] F:HarfBuzzSharp.Script.Katakana + - [ ] F:HarfBuzzSharp.Script.KayahLi + - [ ] F:HarfBuzzSharp.Script.Kharoshthi + - [ ] F:HarfBuzzSharp.Script.Khmer + - [ ] F:HarfBuzzSharp.Script.Khojki + - [ ] F:HarfBuzzSharp.Script.Khudawadi + - [ ] F:HarfBuzzSharp.Script.Lao + - [ ] F:HarfBuzzSharp.Script.Latin + - [ ] F:HarfBuzzSharp.Script.Lepcha + - [ ] F:HarfBuzzSharp.Script.Limbu + - [ ] F:HarfBuzzSharp.Script.LinearA + - [ ] F:HarfBuzzSharp.Script.LinearB + - [ ] F:HarfBuzzSharp.Script.Lisu + - [ ] F:HarfBuzzSharp.Script.Lycian + - [ ] F:HarfBuzzSharp.Script.Lydian + - [ ] F:HarfBuzzSharp.Script.Mahajani + - [ ] F:HarfBuzzSharp.Script.Makasar + - [ ] F:HarfBuzzSharp.Script.Malayalam + - [ ] F:HarfBuzzSharp.Script.Mandaic + - [ ] F:HarfBuzzSharp.Script.Manichaean + - [ ] F:HarfBuzzSharp.Script.Marchen + - [ ] F:HarfBuzzSharp.Script.MasaramGondi + - [ ] F:HarfBuzzSharp.Script.MaxValue + - [ ] F:HarfBuzzSharp.Script.MaxValueSigned + - [ ] F:HarfBuzzSharp.Script.Medefaidrin + - [ ] F:HarfBuzzSharp.Script.MeeteiMayek + - [ ] F:HarfBuzzSharp.Script.MendeKikakui + - [ ] F:HarfBuzzSharp.Script.MeroiticCursive + - [ ] F:HarfBuzzSharp.Script.MeroiticHieroglyphs + - [ ] F:HarfBuzzSharp.Script.Miao + - [ ] F:HarfBuzzSharp.Script.Modi + - [ ] F:HarfBuzzSharp.Script.Mongolian + - [ ] F:HarfBuzzSharp.Script.Mro + - [ ] F:HarfBuzzSharp.Script.Multani + - [ ] F:HarfBuzzSharp.Script.Myanmar + - [ ] F:HarfBuzzSharp.Script.Nabataean + - [ ] F:HarfBuzzSharp.Script.Newa + - [ ] F:HarfBuzzSharp.Script.NewTaiLue + - [ ] F:HarfBuzzSharp.Script.Nko + - [ ] F:HarfBuzzSharp.Script.Nushu + - [ ] F:HarfBuzzSharp.Script.Ogham + - [ ] F:HarfBuzzSharp.Script.OlChiki + - [ ] F:HarfBuzzSharp.Script.OldHungarian + - [ ] F:HarfBuzzSharp.Script.OldItalic + - [ ] F:HarfBuzzSharp.Script.OldNorthArabian + - [ ] F:HarfBuzzSharp.Script.OldPermic + - [ ] F:HarfBuzzSharp.Script.OldPersian + - [ ] F:HarfBuzzSharp.Script.OldSogdian + - [ ] F:HarfBuzzSharp.Script.OldSouthArabian + - [ ] F:HarfBuzzSharp.Script.OldTurkic + - [ ] F:HarfBuzzSharp.Script.Oriya + - [ ] F:HarfBuzzSharp.Script.Osage + - [ ] F:HarfBuzzSharp.Script.Osmanya + - [ ] F:HarfBuzzSharp.Script.PahawhHmong + - [ ] F:HarfBuzzSharp.Script.Palmyrene + - [ ] F:HarfBuzzSharp.Script.PauCinHau + - [ ] F:HarfBuzzSharp.Script.PhagsPa + - [ ] F:HarfBuzzSharp.Script.Phoenician + - [ ] F:HarfBuzzSharp.Script.PsalterPahlavi + - [ ] F:HarfBuzzSharp.Script.Rejang + - [ ] F:HarfBuzzSharp.Script.Runic + - [ ] F:HarfBuzzSharp.Script.Samaritan + - [ ] F:HarfBuzzSharp.Script.Saurashtra + - [ ] F:HarfBuzzSharp.Script.Sharada + - [ ] F:HarfBuzzSharp.Script.Shavian + - [ ] F:HarfBuzzSharp.Script.Siddham + - [ ] F:HarfBuzzSharp.Script.Signwriting + - [ ] F:HarfBuzzSharp.Script.Sinhala + - [ ] F:HarfBuzzSharp.Script.Sogdian + - [ ] F:HarfBuzzSharp.Script.SoraSompeng + - [ ] F:HarfBuzzSharp.Script.Soyombo + - [ ] F:HarfBuzzSharp.Script.Sundanese + - [ ] F:HarfBuzzSharp.Script.SylotiNagri + - [ ] F:HarfBuzzSharp.Script.Syriac + - [ ] F:HarfBuzzSharp.Script.Tagalog + - [ ] F:HarfBuzzSharp.Script.Tagbanwa + - [ ] F:HarfBuzzSharp.Script.TaiLe + - [ ] F:HarfBuzzSharp.Script.TaiTham + - [ ] F:HarfBuzzSharp.Script.TaiViet + - [ ] F:HarfBuzzSharp.Script.Takri + - [ ] F:HarfBuzzSharp.Script.Tamil + - [ ] F:HarfBuzzSharp.Script.Tangut + - [ ] F:HarfBuzzSharp.Script.Telugu + - [ ] F:HarfBuzzSharp.Script.Thaana + - [ ] F:HarfBuzzSharp.Script.Thai + - [ ] F:HarfBuzzSharp.Script.Tibetan + - [ ] F:HarfBuzzSharp.Script.Tifinagh + - [ ] F:HarfBuzzSharp.Script.Tirhuta + - [ ] F:HarfBuzzSharp.Script.Ugaritic + - [ ] F:HarfBuzzSharp.Script.Unknown + - [ ] F:HarfBuzzSharp.Script.Vai + - [ ] F:HarfBuzzSharp.Script.WarangCiti + - [ ] F:HarfBuzzSharp.Script.Yi + - [ ] F:HarfBuzzSharp.Script.ZanabazarSquare + - [ ] M:HarfBuzzSharp.Script.Equals(HarfBuzzSharp.Script) + - [ ] M:HarfBuzzSharp.Script.Equals(System.Object) + - [ ] M:HarfBuzzSharp.Script.GetHashCode + - [ ] M:HarfBuzzSharp.Script.op_Implicit(HarfBuzzSharp.Script)~System.UInt32 + - [ ] M:HarfBuzzSharp.Script.op_Implicit(System.UInt32)~HarfBuzzSharp.Script + - [ ] M:HarfBuzzSharp.Script.Parse(System.String) + - [ ] M:HarfBuzzSharp.Script.ToString + - [ ] M:HarfBuzzSharp.Script.TryParse(System.String,HarfBuzzSharp.Script@) + - [ ] P:HarfBuzzSharp.Script.HorizontalDirection +- [ ] HarfBuzzSharp.ScriptDelegate +- [ ] HarfBuzzSharp.SerializeFlag + - [ ] F:HarfBuzzSharp.SerializeFlag.Default + - [ ] F:HarfBuzzSharp.SerializeFlag.GlyphExtents + - [ ] F:HarfBuzzSharp.SerializeFlag.GlyphFlags + - [ ] F:HarfBuzzSharp.SerializeFlag.NoAdvances + - [ ] F:HarfBuzzSharp.SerializeFlag.NoClusters + - [ ] F:HarfBuzzSharp.SerializeFlag.NoGlyphNames + - [ ] F:HarfBuzzSharp.SerializeFlag.NoPositions +- [ ] HarfBuzzSharp.SerializeFormat + - [ ] F:HarfBuzzSharp.SerializeFormat.Invalid + - [ ] F:HarfBuzzSharp.SerializeFormat.Json + - [ ] F:HarfBuzzSharp.SerializeFormat.Text +- [ ] HarfBuzzSharp.Tag + - [ ] F:HarfBuzzSharp.Tag.Max + - [ ] F:HarfBuzzSharp.Tag.MaxSigned + - [ ] F:HarfBuzzSharp.Tag.None + - [ ] M:HarfBuzzSharp.Tag.#ctor(System.Char,System.Char,System.Char,System.Char) + - [ ] M:HarfBuzzSharp.Tag.Equals(HarfBuzzSharp.Tag) + - [ ] M:HarfBuzzSharp.Tag.Equals(System.Object) + - [ ] M:HarfBuzzSharp.Tag.GetHashCode + - [ ] M:HarfBuzzSharp.Tag.op_Implicit(HarfBuzzSharp.Tag)~System.UInt32 + - [ ] M:HarfBuzzSharp.Tag.op_Implicit(System.UInt32)~HarfBuzzSharp.Tag + - [ ] M:HarfBuzzSharp.Tag.Parse(System.String) + - [ ] M:HarfBuzzSharp.Tag.ToString +- [ ] HarfBuzzSharp.UnicodeCombiningClass + - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.Above + - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.AboveLeft + - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.AboveRight + - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.AttachedAbove + - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.AttachedAboveRight + - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.AttachedBelow + - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.AttachedBelowLeft + - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.Below + - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.BelowLeft + - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.BelowRight + - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC10 + - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC103 + - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC107 + - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC11 + - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC118 + - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC12 + - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC122 + - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC129 + - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC13 + - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC130 + - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC133 + - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC14 + - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC15 + - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC16 + - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC17 + - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC18 + - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC19 + - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC20 + - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC21 + - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC22 + - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC23 + - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC24 + - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC25 + - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC26 + - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC27 + - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC28 + - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC29 + - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC30 + - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC31 + - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC32 + - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC33 + - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC34 + - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC35 + - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC36 + - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC84 + - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC91 + - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.DoubleAbove + - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.DoubleBelow + - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.Invalid + - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.IotaSubscript + - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.KanaVoicing + - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.Left + - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.NotReordered + - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.Nukta + - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.Overlay + - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.Right + - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.Virama +- [ ] HarfBuzzSharp.UnicodeFunctions + - [ ] M:HarfBuzzSharp.UnicodeFunctions.#ctor(HarfBuzzSharp.UnicodeFunctions) + - [ ] M:HarfBuzzSharp.UnicodeFunctions.Dispose(System.Boolean) + - [ ] M:HarfBuzzSharp.UnicodeFunctions.DisposeHandler + - [ ] M:HarfBuzzSharp.UnicodeFunctions.GetCombiningClass(System.Int32) + - [ ] M:HarfBuzzSharp.UnicodeFunctions.GetCombiningClass(System.UInt32) + - [ ] M:HarfBuzzSharp.UnicodeFunctions.GetGeneralCategory(System.Int32) + - [ ] M:HarfBuzzSharp.UnicodeFunctions.GetGeneralCategory(System.UInt32) + - [ ] M:HarfBuzzSharp.UnicodeFunctions.GetMirroring(System.Int32) + - [ ] M:HarfBuzzSharp.UnicodeFunctions.GetMirroring(System.UInt32) + - [ ] M:HarfBuzzSharp.UnicodeFunctions.GetScript(System.Int32) + - [ ] M:HarfBuzzSharp.UnicodeFunctions.GetScript(System.UInt32) + - [ ] M:HarfBuzzSharp.UnicodeFunctions.MakeImmutable + - [ ] M:HarfBuzzSharp.UnicodeFunctions.SetCombiningClassDelegate(HarfBuzzSharp.CombiningClassDelegate,HarfBuzzSharp.ReleaseDelegate) + - [ ] M:HarfBuzzSharp.UnicodeFunctions.SetComposeDelegate(HarfBuzzSharp.ComposeDelegate,HarfBuzzSharp.ReleaseDelegate) + - [ ] M:HarfBuzzSharp.UnicodeFunctions.SetDecomposeDelegate(HarfBuzzSharp.DecomposeDelegate,HarfBuzzSharp.ReleaseDelegate) + - [ ] M:HarfBuzzSharp.UnicodeFunctions.SetGeneralCategoryDelegate(HarfBuzzSharp.GeneralCategoryDelegate,HarfBuzzSharp.ReleaseDelegate) + - [ ] M:HarfBuzzSharp.UnicodeFunctions.SetMirroringDelegate(HarfBuzzSharp.MirroringDelegate,HarfBuzzSharp.ReleaseDelegate) + - [ ] M:HarfBuzzSharp.UnicodeFunctions.SetScriptDelegate(HarfBuzzSharp.ScriptDelegate,HarfBuzzSharp.ReleaseDelegate) + - [ ] M:HarfBuzzSharp.UnicodeFunctions.TryCompose(System.Int32,System.Int32,System.Int32@) + - [ ] M:HarfBuzzSharp.UnicodeFunctions.TryCompose(System.UInt32,System.UInt32,System.UInt32@) + - [ ] M:HarfBuzzSharp.UnicodeFunctions.TryDecompose(System.Int32,System.Int32@,System.Int32@) + - [ ] M:HarfBuzzSharp.UnicodeFunctions.TryDecompose(System.UInt32,System.UInt32@,System.UInt32@) + - [ ] P:HarfBuzzSharp.UnicodeFunctions.Default + - [ ] P:HarfBuzzSharp.UnicodeFunctions.Empty + - [ ] P:HarfBuzzSharp.UnicodeFunctions.IsImmutable + - [ ] P:HarfBuzzSharp.UnicodeFunctions.Parent +- [ ] HarfBuzzSharp.UnicodeGeneralCategory + - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.ClosePunctuation + - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.ConnectPunctuation + - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.Control + - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.CurrencySymbol + - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.DashPunctuation + - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.DecimalNumber + - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.EnclosingMark + - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.FinalPunctuation + - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.Format + - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.InitialPunctuation + - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.LetterNumber + - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.LineSeparator + - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.LowercaseLetter + - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.MathSymbol + - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.ModifierLetter + - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.ModifierSymbol + - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.NonSpacingMark + - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.OpenPunctuation + - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.OtherLetter + - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.OtherNumber + - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.OtherPunctuation + - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.OtherSymbol + - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.ParagraphSeparator + - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.PrivateUse + - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.SpaceSeparator + - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.SpacingMark + - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.Surrogate + - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.TitlecaseLetter + - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.Unassigned + - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.UppercaseLetter +- [ ] HarfBuzzSharp.Variation + - [ ] M:HarfBuzzSharp.Variation.Equals(HarfBuzzSharp.Variation) + - [ ] M:HarfBuzzSharp.Variation.Equals(System.Object) + - [ ] M:HarfBuzzSharp.Variation.GetHashCode + - [ ] M:HarfBuzzSharp.Variation.op_Equality(HarfBuzzSharp.Variation,HarfBuzzSharp.Variation) + - [ ] M:HarfBuzzSharp.Variation.op_Inequality(HarfBuzzSharp.Variation,HarfBuzzSharp.Variation) + - [ ] P:HarfBuzzSharp.Variation.Tag + - [ ] P:HarfBuzzSharp.Variation.Value +- [ ] HarfBuzzSharp.VariationGlyphDelegate + +## Namespace HarfBuzzSharp.Internals + +- [ ] HarfBuzzSharp.Internals.PlatformConfiguration + - [ ] P:HarfBuzzSharp.Internals.PlatformConfiguration.Is64Bit + - [ ] P:HarfBuzzSharp.Internals.PlatformConfiguration.IsArm + - [ ] P:HarfBuzzSharp.Internals.PlatformConfiguration.IsGlibc + - [ ] P:HarfBuzzSharp.Internals.PlatformConfiguration.IsLinux + - [ ] P:HarfBuzzSharp.Internals.PlatformConfiguration.IsMac + - [ ] P:HarfBuzzSharp.Internals.PlatformConfiguration.IsUnix + - [ ] P:HarfBuzzSharp.Internals.PlatformConfiguration.IsWindows + - [ ] P:HarfBuzzSharp.Internals.PlatformConfiguration.LinuxFlavor + +## Namespace SkiaSharp + +- [ ] SkiaSharp.GRBackend + - [ ] F:SkiaSharp.GRBackend.Dawn + - [ ] F:SkiaSharp.GRBackend.Direct3D + - [ ] F:SkiaSharp.GRBackend.Metal + - [ ] F:SkiaSharp.GRBackend.OpenGL + - [ ] F:SkiaSharp.GRBackend.Vulkan +- [ ] SkiaSharp.GRBackendRenderTarget + - [ ] M:SkiaSharp.GRBackendRenderTarget.#ctor(SkiaSharp.GRBackend,SkiaSharp.GRBackendRenderTargetDesc) + - [ ] M:SkiaSharp.GRBackendRenderTarget.#ctor(System.Int32,System.Int32,System.Int32,SkiaSharp.GRVkImageInfo) + - [ ] M:SkiaSharp.GRBackendRenderTarget.#ctor(System.Int32,System.Int32,System.Int32,System.Int32,SkiaSharp.GRGlFramebufferInfo) + - [ ] M:SkiaSharp.GRBackendRenderTarget.Dispose(System.Boolean) + - [ ] M:SkiaSharp.GRBackendRenderTarget.DisposeNative + - [ ] M:SkiaSharp.GRBackendRenderTarget.GetGlFramebufferInfo + - [ ] M:SkiaSharp.GRBackendRenderTarget.GetGlFramebufferInfo(SkiaSharp.GRGlFramebufferInfo@) + - [ ] P:SkiaSharp.GRBackendRenderTarget.Backend + - [ ] P:SkiaSharp.GRBackendRenderTarget.Height + - [ ] P:SkiaSharp.GRBackendRenderTarget.IsValid + - [ ] P:SkiaSharp.GRBackendRenderTarget.Rect + - [ ] P:SkiaSharp.GRBackendRenderTarget.SampleCount + - [ ] P:SkiaSharp.GRBackendRenderTarget.Size + - [ ] P:SkiaSharp.GRBackendRenderTarget.StencilBits + - [ ] P:SkiaSharp.GRBackendRenderTarget.Width +- [ ] SkiaSharp.GRBackendRenderTargetDesc + - [ ] M:SkiaSharp.GRBackendRenderTargetDesc.Equals(SkiaSharp.GRBackendRenderTargetDesc) + - [ ] M:SkiaSharp.GRBackendRenderTargetDesc.Equals(System.Object) + - [ ] M:SkiaSharp.GRBackendRenderTargetDesc.GetHashCode + - [ ] M:SkiaSharp.GRBackendRenderTargetDesc.op_Equality(SkiaSharp.GRBackendRenderTargetDesc,SkiaSharp.GRBackendRenderTargetDesc) + - [ ] M:SkiaSharp.GRBackendRenderTargetDesc.op_Inequality(SkiaSharp.GRBackendRenderTargetDesc,SkiaSharp.GRBackendRenderTargetDesc) + - [ ] P:SkiaSharp.GRBackendRenderTargetDesc.Config + - [ ] P:SkiaSharp.GRBackendRenderTargetDesc.Height + - [ ] P:SkiaSharp.GRBackendRenderTargetDesc.Origin + - [ ] P:SkiaSharp.GRBackendRenderTargetDesc.Rect + - [ ] P:SkiaSharp.GRBackendRenderTargetDesc.RenderTargetHandle + - [ ] P:SkiaSharp.GRBackendRenderTargetDesc.SampleCount + - [ ] P:SkiaSharp.GRBackendRenderTargetDesc.Size + - [ ] P:SkiaSharp.GRBackendRenderTargetDesc.StencilBits + - [ ] P:SkiaSharp.GRBackendRenderTargetDesc.Width +- [ ] SkiaSharp.GRBackendState + - [ ] F:SkiaSharp.GRBackendState.All + - [ ] F:SkiaSharp.GRBackendState.None +- [ ] SkiaSharp.GRBackendTexture + - [ ] M:SkiaSharp.GRBackendTexture.#ctor(SkiaSharp.GRBackendTextureDesc) + - [ ] M:SkiaSharp.GRBackendTexture.#ctor(SkiaSharp.GRGlBackendTextureDesc) + - [ ] M:SkiaSharp.GRBackendTexture.#ctor(System.Int32,System.Int32,SkiaSharp.GRVkImageInfo) + - [ ] M:SkiaSharp.GRBackendTexture.#ctor(System.Int32,System.Int32,System.Boolean,SkiaSharp.GRGlTextureInfo) + - [ ] M:SkiaSharp.GRBackendTexture.Dispose(System.Boolean) + - [ ] M:SkiaSharp.GRBackendTexture.DisposeNative + - [ ] M:SkiaSharp.GRBackendTexture.GetGlTextureInfo + - [ ] M:SkiaSharp.GRBackendTexture.GetGlTextureInfo(SkiaSharp.GRGlTextureInfo@) + - [ ] P:SkiaSharp.GRBackendTexture.Backend + - [ ] P:SkiaSharp.GRBackendTexture.HasMipMaps + - [ ] P:SkiaSharp.GRBackendTexture.Height + - [ ] P:SkiaSharp.GRBackendTexture.IsValid + - [ ] P:SkiaSharp.GRBackendTexture.Rect + - [ ] P:SkiaSharp.GRBackendTexture.Size + - [ ] P:SkiaSharp.GRBackendTexture.Width +- [ ] SkiaSharp.GRBackendTextureDesc + - [ ] M:SkiaSharp.GRBackendTextureDesc.Equals(SkiaSharp.GRBackendTextureDesc) + - [ ] M:SkiaSharp.GRBackendTextureDesc.Equals(System.Object) + - [ ] M:SkiaSharp.GRBackendTextureDesc.GetHashCode + - [ ] M:SkiaSharp.GRBackendTextureDesc.op_Equality(SkiaSharp.GRBackendTextureDesc,SkiaSharp.GRBackendTextureDesc) + - [ ] M:SkiaSharp.GRBackendTextureDesc.op_Inequality(SkiaSharp.GRBackendTextureDesc,SkiaSharp.GRBackendTextureDesc) + - [ ] P:SkiaSharp.GRBackendTextureDesc.Config + - [ ] P:SkiaSharp.GRBackendTextureDesc.Flags + - [ ] P:SkiaSharp.GRBackendTextureDesc.Height + - [ ] P:SkiaSharp.GRBackendTextureDesc.Origin + - [ ] P:SkiaSharp.GRBackendTextureDesc.Rect + - [ ] P:SkiaSharp.GRBackendTextureDesc.SampleCount + - [ ] P:SkiaSharp.GRBackendTextureDesc.Size + - [ ] P:SkiaSharp.GRBackendTextureDesc.TextureHandle + - [ ] P:SkiaSharp.GRBackendTextureDesc.Width +- [ ] SkiaSharp.GRBackendTextureDescFlags + - [ ] F:SkiaSharp.GRBackendTextureDescFlags.None + - [ ] F:SkiaSharp.GRBackendTextureDescFlags.RenderTarget +- [ ] SkiaSharp.GRContext + - [ ] M:SkiaSharp.GRContext.AbandonContext(System.Boolean) + - [ ] M:SkiaSharp.GRContext.Create(SkiaSharp.GRBackend,SkiaSharp.GRGlInterface,SkiaSharp.GRContextOptions) + - [ ] M:SkiaSharp.GRContext.Create(SkiaSharp.GRBackend,SkiaSharp.GRGlInterface) + - [ ] M:SkiaSharp.GRContext.Create(SkiaSharp.GRBackend,System.IntPtr,SkiaSharp.GRContextOptions) + - [ ] M:SkiaSharp.GRContext.Create(SkiaSharp.GRBackend,System.IntPtr) + - [ ] M:SkiaSharp.GRContext.Create(SkiaSharp.GRBackend) + - [ ] M:SkiaSharp.GRContext.CreateGl + - [ ] M:SkiaSharp.GRContext.CreateGl(SkiaSharp.GRContextOptions) + - [ ] M:SkiaSharp.GRContext.CreateGl(SkiaSharp.GRGlInterface,SkiaSharp.GRContextOptions) + - [ ] M:SkiaSharp.GRContext.CreateGl(SkiaSharp.GRGlInterface) + - [ ] M:SkiaSharp.GRContext.CreateVulkan(SkiaSharp.GRVkBackendContext,SkiaSharp.GRContextOptions) + - [ ] M:SkiaSharp.GRContext.CreateVulkan(SkiaSharp.GRVkBackendContext) + - [ ] M:SkiaSharp.GRContext.Dispose(System.Boolean) + - [ ] M:SkiaSharp.GRContext.DisposeNative + - [ ] M:SkiaSharp.GRContext.DumpMemoryStatistics(SkiaSharp.SKTraceMemoryDump) + - [ ] M:SkiaSharp.GRContext.Flush + - [ ] M:SkiaSharp.GRContext.Flush(System.Boolean,System.Boolean) + - [ ] M:SkiaSharp.GRContext.GetMaxSurfaceSampleCount(SkiaSharp.SKColorType) + - [ ] M:SkiaSharp.GRContext.GetRecommendedSampleCount(SkiaSharp.GRPixelConfig,System.Single) + - [ ] M:SkiaSharp.GRContext.GetResourceCacheLimit + - [ ] M:SkiaSharp.GRContext.GetResourceCacheLimits(System.Int32@,System.Int64@) + - [ ] M:SkiaSharp.GRContext.GetResourceCacheUsage(System.Int32@,System.Int64@) + - [ ] M:SkiaSharp.GRContext.PurgeResources + - [ ] M:SkiaSharp.GRContext.PurgeUnlockedResources(System.Boolean) + - [ ] M:SkiaSharp.GRContext.PurgeUnlockedResources(System.Int64,System.Boolean) + - [ ] M:SkiaSharp.GRContext.PurgeUnusedResources(System.Int64) + - [ ] M:SkiaSharp.GRContext.ResetContext(SkiaSharp.GRBackendState) + - [ ] M:SkiaSharp.GRContext.ResetContext(SkiaSharp.GRGlBackendState) + - [ ] M:SkiaSharp.GRContext.ResetContext(System.UInt32) + - [ ] M:SkiaSharp.GRContext.SetResourceCacheLimit(System.Int64) + - [ ] M:SkiaSharp.GRContext.SetResourceCacheLimits(System.Int32,System.Int64) + - [ ] M:SkiaSharp.GRContext.Submit(System.Boolean) + - [ ] P:SkiaSharp.GRContext.Backend + - [ ] P:SkiaSharp.GRContext.IsAbandoned +- [ ] SkiaSharp.GRContextOptions + - [ ] M:SkiaSharp.GRContextOptions.#ctor + - [ ] P:SkiaSharp.GRContextOptions.AllowPathMaskCaching + - [ ] P:SkiaSharp.GRContextOptions.AvoidStencilBuffers + - [ ] P:SkiaSharp.GRContextOptions.BufferMapThreshold + - [ ] P:SkiaSharp.GRContextOptions.Default + - [ ] P:SkiaSharp.GRContextOptions.DisableGpuYuvConversion + - [ ] P:SkiaSharp.GRContextOptions.DoManualMipmapping + - [ ] P:SkiaSharp.GRContextOptions.EnableInstancedRendering + - [ ] P:SkiaSharp.GRContextOptions.GlyphCacheTextureMaximumBytes + - [ ] P:SkiaSharp.GRContextOptions.GpuPathRenderers + - [ ] P:SkiaSharp.GRContextOptions.ImmediateMode + - [ ] P:SkiaSharp.GRContextOptions.MaxTextureSizeOverride + - [ ] P:SkiaSharp.GRContextOptions.MaxTileSizeOverride + - [ ] P:SkiaSharp.GRContextOptions.RequireDecodeDisableForSrgb + - [ ] P:SkiaSharp.GRContextOptions.RuntimeProgramCacheSize + - [ ] P:SkiaSharp.GRContextOptions.SuppressDualSourceBlending + - [ ] P:SkiaSharp.GRContextOptions.SuppressPathRendering + - [ ] P:SkiaSharp.GRContextOptions.SuppressPrints + - [ ] P:SkiaSharp.GRContextOptions.UseDrawInsteadOfPartialRenderTargetWrite + - [ ] P:SkiaSharp.GRContextOptions.UseShaderSwizzling + - [ ] P:SkiaSharp.GRContextOptions.WireframeMode +- [ ] SkiaSharp.GRContextOptionsGpuPathRenderers + - [ ] F:SkiaSharp.GRContextOptionsGpuPathRenderers.AaConvex + - [ ] F:SkiaSharp.GRContextOptionsGpuPathRenderers.AaHairline + - [ ] F:SkiaSharp.GRContextOptionsGpuPathRenderers.AaLinearizing + - [ ] F:SkiaSharp.GRContextOptionsGpuPathRenderers.All + - [ ] F:SkiaSharp.GRContextOptionsGpuPathRenderers.DashLine + - [ ] F:SkiaSharp.GRContextOptionsGpuPathRenderers.Default + - [ ] F:SkiaSharp.GRContextOptionsGpuPathRenderers.Msaa + - [ ] F:SkiaSharp.GRContextOptionsGpuPathRenderers.None + - [ ] F:SkiaSharp.GRContextOptionsGpuPathRenderers.Small + - [ ] F:SkiaSharp.GRContextOptionsGpuPathRenderers.StencilAndCover + - [ ] F:SkiaSharp.GRContextOptionsGpuPathRenderers.Tessellating +- [ ] SkiaSharp.GRGlBackendState + - [ ] F:SkiaSharp.GRGlBackendState.All + - [ ] F:SkiaSharp.GRGlBackendState.Blend + - [ ] F:SkiaSharp.GRGlBackendState.FixedFunction + - [ ] F:SkiaSharp.GRGlBackendState.Misc + - [ ] F:SkiaSharp.GRGlBackendState.MSAAEnable + - [ ] F:SkiaSharp.GRGlBackendState.None + - [ ] F:SkiaSharp.GRGlBackendState.PathRendering + - [ ] F:SkiaSharp.GRGlBackendState.PixelStore + - [ ] F:SkiaSharp.GRGlBackendState.Program + - [ ] F:SkiaSharp.GRGlBackendState.RenderTarget + - [ ] F:SkiaSharp.GRGlBackendState.Stencil + - [ ] F:SkiaSharp.GRGlBackendState.TextureBinding + - [ ] F:SkiaSharp.GRGlBackendState.Vertex + - [ ] F:SkiaSharp.GRGlBackendState.View +- [ ] SkiaSharp.GRGlBackendTextureDesc + - [ ] M:SkiaSharp.GRGlBackendTextureDesc.Equals(SkiaSharp.GRGlBackendTextureDesc) + - [ ] M:SkiaSharp.GRGlBackendTextureDesc.Equals(System.Object) + - [ ] M:SkiaSharp.GRGlBackendTextureDesc.GetHashCode + - [ ] M:SkiaSharp.GRGlBackendTextureDesc.op_Equality(SkiaSharp.GRGlBackendTextureDesc,SkiaSharp.GRGlBackendTextureDesc) + - [ ] M:SkiaSharp.GRGlBackendTextureDesc.op_Inequality(SkiaSharp.GRGlBackendTextureDesc,SkiaSharp.GRGlBackendTextureDesc) + - [ ] P:SkiaSharp.GRGlBackendTextureDesc.Config + - [ ] P:SkiaSharp.GRGlBackendTextureDesc.Flags + - [ ] P:SkiaSharp.GRGlBackendTextureDesc.Height + - [ ] P:SkiaSharp.GRGlBackendTextureDesc.Origin + - [ ] P:SkiaSharp.GRGlBackendTextureDesc.Rect + - [ ] P:SkiaSharp.GRGlBackendTextureDesc.SampleCount + - [ ] P:SkiaSharp.GRGlBackendTextureDesc.Size + - [ ] P:SkiaSharp.GRGlBackendTextureDesc.TextureHandle + - [ ] P:SkiaSharp.GRGlBackendTextureDesc.Width +- [ ] SkiaSharp.GRGlFramebufferInfo + - [ ] M:SkiaSharp.GRGlFramebufferInfo.#ctor(System.UInt32,System.UInt32) + - [ ] M:SkiaSharp.GRGlFramebufferInfo.#ctor(System.UInt32) + - [ ] M:SkiaSharp.GRGlFramebufferInfo.Equals(SkiaSharp.GRGlFramebufferInfo) + - [ ] M:SkiaSharp.GRGlFramebufferInfo.Equals(System.Object) + - [ ] M:SkiaSharp.GRGlFramebufferInfo.GetHashCode + - [ ] M:SkiaSharp.GRGlFramebufferInfo.op_Equality(SkiaSharp.GRGlFramebufferInfo,SkiaSharp.GRGlFramebufferInfo) + - [ ] M:SkiaSharp.GRGlFramebufferInfo.op_Inequality(SkiaSharp.GRGlFramebufferInfo,SkiaSharp.GRGlFramebufferInfo) + - [ ] P:SkiaSharp.GRGlFramebufferInfo.Format + - [ ] P:SkiaSharp.GRGlFramebufferInfo.FramebufferObjectId +- [ ] SkiaSharp.GRGlGetProcDelegate +- [ ] SkiaSharp.GRGlGetProcedureAddressDelegate +- [ ] SkiaSharp.GRGlInterface + - [ ] M:SkiaSharp.GRGlInterface.AssembleAngleInterface(SkiaSharp.GRGlGetProcDelegate) + - [ ] M:SkiaSharp.GRGlInterface.AssembleAngleInterface(System.Object,SkiaSharp.GRGlGetProcDelegate) + - [ ] M:SkiaSharp.GRGlInterface.AssembleGlesInterface(SkiaSharp.GRGlGetProcDelegate) + - [ ] M:SkiaSharp.GRGlInterface.AssembleGlesInterface(System.Object,SkiaSharp.GRGlGetProcDelegate) + - [ ] M:SkiaSharp.GRGlInterface.AssembleGlInterface(SkiaSharp.GRGlGetProcDelegate) + - [ ] M:SkiaSharp.GRGlInterface.AssembleGlInterface(System.Object,SkiaSharp.GRGlGetProcDelegate) + - [ ] M:SkiaSharp.GRGlInterface.AssembleInterface(SkiaSharp.GRGlGetProcDelegate) + - [ ] M:SkiaSharp.GRGlInterface.AssembleInterface(System.Object,SkiaSharp.GRGlGetProcDelegate) + - [ ] M:SkiaSharp.GRGlInterface.Clone + - [ ] M:SkiaSharp.GRGlInterface.Create + - [ ] M:SkiaSharp.GRGlInterface.Create(SkiaSharp.GRGlGetProcedureAddressDelegate) + - [ ] M:SkiaSharp.GRGlInterface.CreateAngle + - [ ] M:SkiaSharp.GRGlInterface.CreateAngle(SkiaSharp.GRGlGetProcedureAddressDelegate) + - [ ] M:SkiaSharp.GRGlInterface.CreateDefaultInterface + - [ ] M:SkiaSharp.GRGlInterface.CreateEvas(System.IntPtr) + - [ ] M:SkiaSharp.GRGlInterface.CreateGles(SkiaSharp.GRGlGetProcedureAddressDelegate) + - [ ] M:SkiaSharp.GRGlInterface.CreateNativeAngleInterface + - [ ] M:SkiaSharp.GRGlInterface.CreateNativeEvasInterface(System.IntPtr) + - [ ] M:SkiaSharp.GRGlInterface.CreateNativeGlInterface + - [ ] M:SkiaSharp.GRGlInterface.CreateOpenGl(SkiaSharp.GRGlGetProcedureAddressDelegate) + - [ ] M:SkiaSharp.GRGlInterface.CreateWebGl(SkiaSharp.GRGlGetProcedureAddressDelegate) + - [ ] M:SkiaSharp.GRGlInterface.Dispose(System.Boolean) + - [ ] M:SkiaSharp.GRGlInterface.HasExtension(System.String) + - [ ] M:SkiaSharp.GRGlInterface.Validate +- [ ] SkiaSharp.GRGlTextureInfo + - [ ] M:SkiaSharp.GRGlTextureInfo.#ctor(System.UInt32,System.UInt32,System.UInt32) + - [ ] M:SkiaSharp.GRGlTextureInfo.#ctor(System.UInt32,System.UInt32) + - [ ] M:SkiaSharp.GRGlTextureInfo.Equals(SkiaSharp.GRGlTextureInfo) + - [ ] M:SkiaSharp.GRGlTextureInfo.Equals(System.Object) + - [ ] M:SkiaSharp.GRGlTextureInfo.GetHashCode + - [ ] M:SkiaSharp.GRGlTextureInfo.op_Equality(SkiaSharp.GRGlTextureInfo,SkiaSharp.GRGlTextureInfo) + - [ ] M:SkiaSharp.GRGlTextureInfo.op_Inequality(SkiaSharp.GRGlTextureInfo,SkiaSharp.GRGlTextureInfo) + - [ ] P:SkiaSharp.GRGlTextureInfo.Format + - [ ] P:SkiaSharp.GRGlTextureInfo.Id + - [ ] P:SkiaSharp.GRGlTextureInfo.Target +- [ ] SkiaSharp.GRPixelConfig + - [ ] F:SkiaSharp.GRPixelConfig.Alpha16 + - [ ] F:SkiaSharp.GRPixelConfig.Alpha8 + - [ ] F:SkiaSharp.GRPixelConfig.Alpha8AsAlpha + - [ ] F:SkiaSharp.GRPixelConfig.Alpha8AsRed + - [ ] F:SkiaSharp.GRPixelConfig.AlphaHalf + - [ ] F:SkiaSharp.GRPixelConfig.AlphaHalfAsLum + - [ ] F:SkiaSharp.GRPixelConfig.AlphaHalfAsRed + - [ ] F:SkiaSharp.GRPixelConfig.Bgra8888 + - [ ] F:SkiaSharp.GRPixelConfig.Gray8 + - [ ] F:SkiaSharp.GRPixelConfig.Gray8AsLum + - [ ] F:SkiaSharp.GRPixelConfig.Gray8AsRed + - [ ] F:SkiaSharp.GRPixelConfig.Rg1616 + - [ ] F:SkiaSharp.GRPixelConfig.Rg88 + - [ ] F:SkiaSharp.GRPixelConfig.Rgb565 + - [ ] F:SkiaSharp.GRPixelConfig.Rgb888 + - [ ] F:SkiaSharp.GRPixelConfig.Rgb888x + - [ ] F:SkiaSharp.GRPixelConfig.Rgba1010102 + - [ ] F:SkiaSharp.GRPixelConfig.Rgba16161616 + - [ ] F:SkiaSharp.GRPixelConfig.Rgba4444 + - [ ] F:SkiaSharp.GRPixelConfig.Rgba8888 + - [ ] F:SkiaSharp.GRPixelConfig.Rgba8888SInt + - [ ] F:SkiaSharp.GRPixelConfig.RgbaFloat + - [ ] F:SkiaSharp.GRPixelConfig.RgbaHalf + - [ ] F:SkiaSharp.GRPixelConfig.RgbaHalfClamped + - [ ] F:SkiaSharp.GRPixelConfig.RgbEtc1 + - [ ] F:SkiaSharp.GRPixelConfig.RgFloat + - [ ] F:SkiaSharp.GRPixelConfig.RgHalf + - [ ] F:SkiaSharp.GRPixelConfig.Sbgra8888 + - [ ] F:SkiaSharp.GRPixelConfig.Srgba8888 + - [ ] F:SkiaSharp.GRPixelConfig.Unknown +- [ ] SkiaSharp.GRRecordingContext + - [ ] M:SkiaSharp.GRRecordingContext.GetMaxSurfaceSampleCount(SkiaSharp.SKColorType) + - [ ] P:SkiaSharp.GRRecordingContext.Backend +- [ ] SkiaSharp.GRSharpVkBackendContext + - [ ] M:SkiaSharp.GRSharpVkBackendContext.#ctor + - [ ] M:SkiaSharp.GRSharpVkBackendContext.Dispose(System.Boolean) + - [ ] P:SkiaSharp.GRSharpVkBackendContext.GetProcedureAddress + - [ ] P:SkiaSharp.GRSharpVkBackendContext.VkDevice + - [ ] P:SkiaSharp.GRSharpVkBackendContext.VkInstance + - [ ] P:SkiaSharp.GRSharpVkBackendContext.VkPhysicalDevice + - [ ] P:SkiaSharp.GRSharpVkBackendContext.VkPhysicalDeviceFeatures + - [ ] P:SkiaSharp.GRSharpVkBackendContext.VkQueue +- [ ] SkiaSharp.GRSharpVkGetProcedureAddressDelegate +- [ ] SkiaSharp.GRSurfaceOrigin + - [ ] F:SkiaSharp.GRSurfaceOrigin.BottomLeft + - [ ] F:SkiaSharp.GRSurfaceOrigin.TopLeft +- [ ] SkiaSharp.GRVkAlloc + - [ ] M:SkiaSharp.GRVkAlloc.Equals(SkiaSharp.GRVkAlloc) + - [ ] M:SkiaSharp.GRVkAlloc.Equals(System.Object) + - [ ] M:SkiaSharp.GRVkAlloc.GetHashCode + - [ ] M:SkiaSharp.GRVkAlloc.op_Equality(SkiaSharp.GRVkAlloc,SkiaSharp.GRVkAlloc) + - [ ] M:SkiaSharp.GRVkAlloc.op_Inequality(SkiaSharp.GRVkAlloc,SkiaSharp.GRVkAlloc) + - [ ] P:SkiaSharp.GRVkAlloc.BackendMemory + - [ ] P:SkiaSharp.GRVkAlloc.Flags + - [ ] P:SkiaSharp.GRVkAlloc.Memory + - [ ] P:SkiaSharp.GRVkAlloc.Offset + - [ ] P:SkiaSharp.GRVkAlloc.Size +- [ ] SkiaSharp.GRVkBackendContext + - [ ] M:SkiaSharp.GRVkBackendContext.#ctor + - [ ] M:SkiaSharp.GRVkBackendContext.Dispose + - [ ] M:SkiaSharp.GRVkBackendContext.Dispose(System.Boolean) + - [ ] P:SkiaSharp.GRVkBackendContext.Extensions + - [ ] P:SkiaSharp.GRVkBackendContext.GetProcedureAddress + - [ ] P:SkiaSharp.GRVkBackendContext.GraphicsQueueIndex + - [ ] P:SkiaSharp.GRVkBackendContext.MaxAPIVersion + - [ ] P:SkiaSharp.GRVkBackendContext.ProtectedContext + - [ ] P:SkiaSharp.GRVkBackendContext.VkDevice + - [ ] P:SkiaSharp.GRVkBackendContext.VkInstance + - [ ] P:SkiaSharp.GRVkBackendContext.VkPhysicalDevice + - [ ] P:SkiaSharp.GRVkBackendContext.VkPhysicalDeviceFeatures + - [ ] P:SkiaSharp.GRVkBackendContext.VkPhysicalDeviceFeatures2 + - [ ] P:SkiaSharp.GRVkBackendContext.VkQueue +- [ ] SkiaSharp.GRVkExtensions + - [ ] M:SkiaSharp.GRVkExtensions.Create(SkiaSharp.GRVkGetProcedureAddressDelegate,System.IntPtr,System.IntPtr,System.String[],System.String[]) + - [ ] M:SkiaSharp.GRVkExtensions.DisposeNative + - [ ] M:SkiaSharp.GRVkExtensions.HasExtension(System.String,System.Int32) + - [ ] M:SkiaSharp.GRVkExtensions.Initialize(SkiaSharp.GRVkGetProcedureAddressDelegate,System.IntPtr,System.IntPtr,System.String[],System.String[]) + - [ ] M:SkiaSharp.GRVkExtensions.Initialize(SkiaSharp.GRVkGetProcedureAddressDelegate,System.IntPtr,System.IntPtr) +- [ ] SkiaSharp.GRVkExtensionsSharpVkExtensions + - [ ] M:SkiaSharp.GRVkExtensionsSharpVkExtensions.Initialize(SkiaSharp.GRVkExtensions,SkiaSharp.GRSharpVkGetProcedureAddressDelegate,SharpVk.Instance,SharpVk.PhysicalDevice,System.String[],System.String[]) + - [ ] M:SkiaSharp.GRVkExtensionsSharpVkExtensions.Initialize(SkiaSharp.GRVkExtensions,SkiaSharp.GRSharpVkGetProcedureAddressDelegate,SharpVk.Instance,SharpVk.PhysicalDevice) +- [ ] SkiaSharp.GRVkGetProcedureAddressDelegate +- [ ] SkiaSharp.GRVkImageInfo + - [ ] M:SkiaSharp.GRVkImageInfo.Equals(SkiaSharp.GRVkImageInfo) + - [ ] M:SkiaSharp.GRVkImageInfo.Equals(System.Object) + - [ ] M:SkiaSharp.GRVkImageInfo.GetHashCode + - [ ] M:SkiaSharp.GRVkImageInfo.op_Equality(SkiaSharp.GRVkImageInfo,SkiaSharp.GRVkImageInfo) + - [ ] M:SkiaSharp.GRVkImageInfo.op_Inequality(SkiaSharp.GRVkImageInfo,SkiaSharp.GRVkImageInfo) + - [ ] P:SkiaSharp.GRVkImageInfo.Alloc + - [ ] P:SkiaSharp.GRVkImageInfo.CurrentQueueFamily + - [ ] P:SkiaSharp.GRVkImageInfo.Format + - [ ] P:SkiaSharp.GRVkImageInfo.Image + - [ ] P:SkiaSharp.GRVkImageInfo.ImageLayout + - [ ] P:SkiaSharp.GRVkImageInfo.ImageTiling + - [ ] P:SkiaSharp.GRVkImageInfo.ImageUsageFlags + - [ ] P:SkiaSharp.GRVkImageInfo.LevelCount + - [ ] P:SkiaSharp.GRVkImageInfo.Protected + - [ ] P:SkiaSharp.GRVkImageInfo.SampleCount + - [ ] P:SkiaSharp.GRVkImageInfo.SharingMode + - [ ] P:SkiaSharp.GRVkImageInfo.YcbcrConversionInfo +- [ ] SkiaSharp.GrVkYcbcrConversionInfo + - [ ] M:SkiaSharp.GrVkYcbcrConversionInfo.Equals(SkiaSharp.GrVkYcbcrConversionInfo) + - [ ] M:SkiaSharp.GrVkYcbcrConversionInfo.Equals(System.Object) + - [ ] M:SkiaSharp.GrVkYcbcrConversionInfo.GetHashCode + - [ ] M:SkiaSharp.GrVkYcbcrConversionInfo.op_Equality(SkiaSharp.GrVkYcbcrConversionInfo,SkiaSharp.GrVkYcbcrConversionInfo) + - [ ] M:SkiaSharp.GrVkYcbcrConversionInfo.op_Inequality(SkiaSharp.GrVkYcbcrConversionInfo,SkiaSharp.GrVkYcbcrConversionInfo) + - [ ] P:SkiaSharp.GrVkYcbcrConversionInfo.ChromaFilter + - [ ] P:SkiaSharp.GrVkYcbcrConversionInfo.ExternalFormat + - [ ] P:SkiaSharp.GrVkYcbcrConversionInfo.ForceExplicitReconstruction + - [ ] P:SkiaSharp.GrVkYcbcrConversionInfo.Format + - [ ] P:SkiaSharp.GrVkYcbcrConversionInfo.FormatFeatures + - [ ] P:SkiaSharp.GrVkYcbcrConversionInfo.XChromaOffset + - [ ] P:SkiaSharp.GrVkYcbcrConversionInfo.YcbcrModel + - [ ] P:SkiaSharp.GrVkYcbcrConversionInfo.YcbcrRange + - [ ] P:SkiaSharp.GrVkYcbcrConversionInfo.YChromaOffset +- [ ] SkiaSharp.SK3dView + - [ ] M:SkiaSharp.SK3dView.#ctor + - [ ] M:SkiaSharp.SK3dView.ApplyToCanvas(SkiaSharp.SKCanvas) + - [ ] M:SkiaSharp.SK3dView.Dispose(System.Boolean) + - [ ] M:SkiaSharp.SK3dView.DisposeNative + - [ ] M:SkiaSharp.SK3dView.DotWithNormal(System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SK3dView.GetMatrix(SkiaSharp.SKMatrix@) + - [ ] M:SkiaSharp.SK3dView.Restore + - [ ] M:SkiaSharp.SK3dView.RotateXDegrees(System.Single) + - [ ] M:SkiaSharp.SK3dView.RotateXRadians(System.Single) + - [ ] M:SkiaSharp.SK3dView.RotateYDegrees(System.Single) + - [ ] M:SkiaSharp.SK3dView.RotateYRadians(System.Single) + - [ ] M:SkiaSharp.SK3dView.RotateZDegrees(System.Single) + - [ ] M:SkiaSharp.SK3dView.RotateZRadians(System.Single) + - [ ] M:SkiaSharp.SK3dView.Save + - [ ] M:SkiaSharp.SK3dView.Translate(System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SK3dView.TranslateX(System.Single) + - [ ] M:SkiaSharp.SK3dView.TranslateY(System.Single) + - [ ] M:SkiaSharp.SK3dView.TranslateZ(System.Single) + - [ ] P:SkiaSharp.SK3dView.Matrix +- [ ] SkiaSharp.SKAbstractManagedStream + - [ ] M:SkiaSharp.SKAbstractManagedStream.#ctor + - [ ] M:SkiaSharp.SKAbstractManagedStream.#ctor(System.Boolean) + - [ ] M:SkiaSharp.SKAbstractManagedStream.Dispose(System.Boolean) + - [ ] M:SkiaSharp.SKAbstractManagedStream.DisposeNative + - [ ] M:SkiaSharp.SKAbstractManagedStream.OnCreateNew + - [ ] M:SkiaSharp.SKAbstractManagedStream.OnDuplicate + - [ ] M:SkiaSharp.SKAbstractManagedStream.OnFork + - [ ] M:SkiaSharp.SKAbstractManagedStream.OnGetLength + - [ ] M:SkiaSharp.SKAbstractManagedStream.OnGetPosition + - [ ] M:SkiaSharp.SKAbstractManagedStream.OnHasLength + - [ ] M:SkiaSharp.SKAbstractManagedStream.OnHasPosition + - [ ] M:SkiaSharp.SKAbstractManagedStream.OnIsAtEnd + - [ ] M:SkiaSharp.SKAbstractManagedStream.OnMove(System.Int32) + - [ ] M:SkiaSharp.SKAbstractManagedStream.OnPeek(System.IntPtr,System.IntPtr) + - [ ] M:SkiaSharp.SKAbstractManagedStream.OnRead(System.IntPtr,System.IntPtr) + - [ ] M:SkiaSharp.SKAbstractManagedStream.OnRewind + - [ ] M:SkiaSharp.SKAbstractManagedStream.OnSeek(System.IntPtr) +- [ ] SkiaSharp.SKAbstractManagedWStream + - [ ] M:SkiaSharp.SKAbstractManagedWStream.#ctor + - [ ] M:SkiaSharp.SKAbstractManagedWStream.#ctor(System.Boolean) + - [ ] M:SkiaSharp.SKAbstractManagedWStream.Dispose(System.Boolean) + - [ ] M:SkiaSharp.SKAbstractManagedWStream.DisposeNative + - [ ] M:SkiaSharp.SKAbstractManagedWStream.OnBytesWritten + - [ ] M:SkiaSharp.SKAbstractManagedWStream.OnFlush + - [ ] M:SkiaSharp.SKAbstractManagedWStream.OnWrite(System.IntPtr,System.IntPtr) +- [ ] SkiaSharp.SKAlphaType + - [ ] F:SkiaSharp.SKAlphaType.Opaque + - [ ] F:SkiaSharp.SKAlphaType.Premul + - [ ] F:SkiaSharp.SKAlphaType.Unknown + - [ ] F:SkiaSharp.SKAlphaType.Unpremul +- [ ] SkiaSharp.SKAutoCanvasRestore + - [ ] M:SkiaSharp.SKAutoCanvasRestore.#ctor(SkiaSharp.SKCanvas,System.Boolean) + - [ ] M:SkiaSharp.SKAutoCanvasRestore.#ctor(SkiaSharp.SKCanvas) + - [ ] M:SkiaSharp.SKAutoCanvasRestore.Dispose + - [ ] M:SkiaSharp.SKAutoCanvasRestore.Restore +- [ ] SkiaSharp.SKAutoCoInitialize + - [ ] M:SkiaSharp.SKAutoCoInitialize.#ctor + - [ ] M:SkiaSharp.SKAutoCoInitialize.Dispose + - [ ] M:SkiaSharp.SKAutoCoInitialize.Uninitialize + - [ ] P:SkiaSharp.SKAutoCoInitialize.Initialized +- [ ] SkiaSharp.SKAutoMaskFreeImage + - [ ] M:SkiaSharp.SKAutoMaskFreeImage.#ctor(System.IntPtr) + - [ ] M:SkiaSharp.SKAutoMaskFreeImage.Dispose +- [ ] SkiaSharp.SKBitmap + - [ ] M:SkiaSharp.SKBitmap.#ctor + - [ ] M:SkiaSharp.SKBitmap.#ctor(SkiaSharp.SKImageInfo,SkiaSharp.SKBitmapAllocFlags) + - [ ] M:SkiaSharp.SKBitmap.#ctor(SkiaSharp.SKImageInfo,SkiaSharp.SKColorTable,SkiaSharp.SKBitmapAllocFlags) + - [ ] M:SkiaSharp.SKBitmap.#ctor(SkiaSharp.SKImageInfo,SkiaSharp.SKColorTable) + - [ ] M:SkiaSharp.SKBitmap.#ctor(SkiaSharp.SKImageInfo,System.Int32) + - [ ] M:SkiaSharp.SKBitmap.#ctor(SkiaSharp.SKImageInfo) + - [ ] M:SkiaSharp.SKBitmap.#ctor(System.Int32,System.Int32,SkiaSharp.SKColorType,SkiaSharp.SKAlphaType,SkiaSharp.SKColorSpace) + - [ ] M:SkiaSharp.SKBitmap.#ctor(System.Int32,System.Int32,SkiaSharp.SKColorType,SkiaSharp.SKAlphaType) + - [ ] M:SkiaSharp.SKBitmap.#ctor(System.Int32,System.Int32,System.Boolean) + - [ ] M:SkiaSharp.SKBitmap.CanCopyTo(SkiaSharp.SKColorType) + - [ ] M:SkiaSharp.SKBitmap.Copy + - [ ] M:SkiaSharp.SKBitmap.Copy(SkiaSharp.SKColorType) + - [ ] M:SkiaSharp.SKBitmap.CopyTo(SkiaSharp.SKBitmap,SkiaSharp.SKColorType) + - [ ] M:SkiaSharp.SKBitmap.CopyTo(SkiaSharp.SKBitmap) + - [ ] M:SkiaSharp.SKBitmap.Decode(SkiaSharp.SKCodec,SkiaSharp.SKImageInfo) + - [ ] M:SkiaSharp.SKBitmap.Decode(SkiaSharp.SKCodec) + - [ ] M:SkiaSharp.SKBitmap.Decode(SkiaSharp.SKData,SkiaSharp.SKImageInfo) + - [ ] M:SkiaSharp.SKBitmap.Decode(SkiaSharp.SKData) + - [ ] M:SkiaSharp.SKBitmap.Decode(SkiaSharp.SKStream,SkiaSharp.SKImageInfo) + - [ ] M:SkiaSharp.SKBitmap.Decode(SkiaSharp.SKStream) + - [ ] M:SkiaSharp.SKBitmap.Decode(System.Byte[],SkiaSharp.SKImageInfo) + - [ ] M:SkiaSharp.SKBitmap.Decode(System.Byte[]) + - [ ] M:SkiaSharp.SKBitmap.Decode(System.IO.Stream,SkiaSharp.SKImageInfo) + - [ ] M:SkiaSharp.SKBitmap.Decode(System.IO.Stream) + - [ ] M:SkiaSharp.SKBitmap.Decode(System.ReadOnlySpan{System.Byte},SkiaSharp.SKImageInfo) + - [ ] M:SkiaSharp.SKBitmap.Decode(System.ReadOnlySpan{System.Byte}) + - [ ] M:SkiaSharp.SKBitmap.Decode(System.String,SkiaSharp.SKImageInfo) + - [ ] M:SkiaSharp.SKBitmap.Decode(System.String) + - [ ] M:SkiaSharp.SKBitmap.DecodeBounds(SkiaSharp.SKData) + - [ ] M:SkiaSharp.SKBitmap.DecodeBounds(SkiaSharp.SKStream) + - [ ] M:SkiaSharp.SKBitmap.DecodeBounds(System.Byte[]) + - [ ] M:SkiaSharp.SKBitmap.DecodeBounds(System.IO.Stream) + - [ ] M:SkiaSharp.SKBitmap.DecodeBounds(System.ReadOnlySpan{System.Byte}) + - [ ] M:SkiaSharp.SKBitmap.DecodeBounds(System.String) + - [ ] M:SkiaSharp.SKBitmap.Dispose(System.Boolean) + - [ ] M:SkiaSharp.SKBitmap.DisposeNative + - [ ] M:SkiaSharp.SKBitmap.Encode(SkiaSharp.SKEncodedImageFormat,System.Int32) + - [ ] M:SkiaSharp.SKBitmap.Encode(SkiaSharp.SKWStream,SkiaSharp.SKEncodedImageFormat,System.Int32) + - [ ] M:SkiaSharp.SKBitmap.Encode(System.IO.Stream,SkiaSharp.SKEncodedImageFormat,System.Int32) + - [ ] M:SkiaSharp.SKBitmap.Erase(SkiaSharp.SKColor,SkiaSharp.SKRectI) + - [ ] M:SkiaSharp.SKBitmap.Erase(SkiaSharp.SKColor) + - [ ] M:SkiaSharp.SKBitmap.ExtractAlpha(SkiaSharp.SKBitmap,SkiaSharp.SKPaint,SkiaSharp.SKPointI@) + - [ ] M:SkiaSharp.SKBitmap.ExtractAlpha(SkiaSharp.SKBitmap,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKBitmap.ExtractAlpha(SkiaSharp.SKBitmap,SkiaSharp.SKPointI@) + - [ ] M:SkiaSharp.SKBitmap.ExtractAlpha(SkiaSharp.SKBitmap) + - [ ] M:SkiaSharp.SKBitmap.ExtractSubset(SkiaSharp.SKBitmap,SkiaSharp.SKRectI) + - [ ] M:SkiaSharp.SKBitmap.FromImage(SkiaSharp.SKImage) + - [ ] M:SkiaSharp.SKBitmap.GetAddr(System.Int32,System.Int32) + - [ ] M:SkiaSharp.SKBitmap.GetAddr16(System.Int32,System.Int32) + - [ ] M:SkiaSharp.SKBitmap.GetAddr32(System.Int32,System.Int32) + - [ ] M:SkiaSharp.SKBitmap.GetAddr8(System.Int32,System.Int32) + - [ ] M:SkiaSharp.SKBitmap.GetAddress(System.Int32,System.Int32) + - [ ] M:SkiaSharp.SKBitmap.GetIndex8Color(System.Int32,System.Int32) + - [ ] M:SkiaSharp.SKBitmap.GetPixel(System.Int32,System.Int32) + - [ ] M:SkiaSharp.SKBitmap.GetPixels + - [ ] M:SkiaSharp.SKBitmap.GetPixels(System.IntPtr@) + - [ ] M:SkiaSharp.SKBitmap.GetPixelSpan + - [ ] M:SkiaSharp.SKBitmap.InstallMaskPixels(SkiaSharp.SKMask) + - [ ] M:SkiaSharp.SKBitmap.InstallPixels(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32,SkiaSharp.SKBitmapReleaseDelegate,System.Object) + - [ ] M:SkiaSharp.SKBitmap.InstallPixels(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32,SkiaSharp.SKBitmapReleaseDelegate) + - [ ] M:SkiaSharp.SKBitmap.InstallPixels(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32,SkiaSharp.SKColorTable,SkiaSharp.SKBitmapReleaseDelegate,System.Object) + - [ ] M:SkiaSharp.SKBitmap.InstallPixels(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32,SkiaSharp.SKColorTable) + - [ ] M:SkiaSharp.SKBitmap.InstallPixels(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32) + - [ ] M:SkiaSharp.SKBitmap.InstallPixels(SkiaSharp.SKImageInfo,System.IntPtr) + - [ ] M:SkiaSharp.SKBitmap.InstallPixels(SkiaSharp.SKPixmap) + - [ ] M:SkiaSharp.SKBitmap.NotifyPixelsChanged + - [ ] M:SkiaSharp.SKBitmap.PeekPixels + - [ ] M:SkiaSharp.SKBitmap.PeekPixels(SkiaSharp.SKPixmap) + - [ ] M:SkiaSharp.SKBitmap.Reset + - [ ] M:SkiaSharp.SKBitmap.Resize(SkiaSharp.SKBitmap,SkiaSharp.SKBitmap,SkiaSharp.SKBitmapResizeMethod) + - [ ] M:SkiaSharp.SKBitmap.Resize(SkiaSharp.SKBitmap,SkiaSharp.SKBitmapResizeMethod) + - [ ] M:SkiaSharp.SKBitmap.Resize(SkiaSharp.SKImageInfo,SkiaSharp.SKBitmapResizeMethod) + - [ ] M:SkiaSharp.SKBitmap.Resize(SkiaSharp.SKImageInfo,SkiaSharp.SKFilterQuality) + - [ ] M:SkiaSharp.SKBitmap.Resize(SkiaSharp.SKSizeI,SkiaSharp.SKFilterQuality) + - [ ] M:SkiaSharp.SKBitmap.ScalePixels(SkiaSharp.SKBitmap,SkiaSharp.SKFilterQuality) + - [ ] M:SkiaSharp.SKBitmap.ScalePixels(SkiaSharp.SKPixmap,SkiaSharp.SKFilterQuality) + - [ ] M:SkiaSharp.SKBitmap.SetColorTable(SkiaSharp.SKColorTable) + - [ ] M:SkiaSharp.SKBitmap.SetImmutable + - [ ] M:SkiaSharp.SKBitmap.SetPixel(System.Int32,System.Int32,SkiaSharp.SKColor) + - [ ] M:SkiaSharp.SKBitmap.SetPixels(System.IntPtr,SkiaSharp.SKColorTable) + - [ ] M:SkiaSharp.SKBitmap.SetPixels(System.IntPtr) + - [ ] M:SkiaSharp.SKBitmap.ToShader + - [ ] M:SkiaSharp.SKBitmap.ToShader(SkiaSharp.SKShaderTileMode,SkiaSharp.SKShaderTileMode,SkiaSharp.SKMatrix) + - [ ] M:SkiaSharp.SKBitmap.ToShader(SkiaSharp.SKShaderTileMode,SkiaSharp.SKShaderTileMode) + - [ ] M:SkiaSharp.SKBitmap.TryAllocPixels(SkiaSharp.SKImageInfo,SkiaSharp.SKBitmapAllocFlags) + - [ ] M:SkiaSharp.SKBitmap.TryAllocPixels(SkiaSharp.SKImageInfo,System.Int32) + - [ ] M:SkiaSharp.SKBitmap.TryAllocPixels(SkiaSharp.SKImageInfo) + - [ ] P:SkiaSharp.SKBitmap.AlphaType + - [ ] P:SkiaSharp.SKBitmap.ByteCount + - [ ] P:SkiaSharp.SKBitmap.Bytes + - [ ] P:SkiaSharp.SKBitmap.BytesPerPixel + - [ ] P:SkiaSharp.SKBitmap.ColorSpace + - [ ] P:SkiaSharp.SKBitmap.ColorTable + - [ ] P:SkiaSharp.SKBitmap.ColorType + - [ ] P:SkiaSharp.SKBitmap.DrawsNothing + - [ ] P:SkiaSharp.SKBitmap.Height + - [ ] P:SkiaSharp.SKBitmap.Info + - [ ] P:SkiaSharp.SKBitmap.IsEmpty + - [ ] P:SkiaSharp.SKBitmap.IsImmutable + - [ ] P:SkiaSharp.SKBitmap.IsNull + - [ ] P:SkiaSharp.SKBitmap.IsVolatile + - [ ] P:SkiaSharp.SKBitmap.Pixels + - [ ] P:SkiaSharp.SKBitmap.ReadyToDraw + - [ ] P:SkiaSharp.SKBitmap.RowBytes + - [ ] P:SkiaSharp.SKBitmap.Width +- [ ] SkiaSharp.SKBitmapAllocFlags + - [ ] F:SkiaSharp.SKBitmapAllocFlags.None + - [ ] F:SkiaSharp.SKBitmapAllocFlags.ZeroPixels +- [ ] SkiaSharp.SKBitmapReleaseDelegate +- [ ] SkiaSharp.SKBitmapResizeMethod + - [ ] F:SkiaSharp.SKBitmapResizeMethod.Box + - [ ] F:SkiaSharp.SKBitmapResizeMethod.Hamming + - [ ] F:SkiaSharp.SKBitmapResizeMethod.Lanczos3 + - [ ] F:SkiaSharp.SKBitmapResizeMethod.Mitchell + - [ ] F:SkiaSharp.SKBitmapResizeMethod.Triangle +- [ ] SkiaSharp.SKBlendMode + - [ ] F:SkiaSharp.SKBlendMode.Clear + - [ ] F:SkiaSharp.SKBlendMode.Color + - [ ] F:SkiaSharp.SKBlendMode.ColorBurn + - [ ] F:SkiaSharp.SKBlendMode.ColorDodge + - [ ] F:SkiaSharp.SKBlendMode.Darken + - [ ] F:SkiaSharp.SKBlendMode.Difference + - [ ] F:SkiaSharp.SKBlendMode.Dst + - [ ] F:SkiaSharp.SKBlendMode.DstATop + - [ ] F:SkiaSharp.SKBlendMode.DstIn + - [ ] F:SkiaSharp.SKBlendMode.DstOut + - [ ] F:SkiaSharp.SKBlendMode.DstOver + - [ ] F:SkiaSharp.SKBlendMode.Exclusion + - [ ] F:SkiaSharp.SKBlendMode.HardLight + - [ ] F:SkiaSharp.SKBlendMode.Hue + - [ ] F:SkiaSharp.SKBlendMode.Lighten + - [ ] F:SkiaSharp.SKBlendMode.Luminosity + - [ ] F:SkiaSharp.SKBlendMode.Modulate + - [ ] F:SkiaSharp.SKBlendMode.Multiply + - [ ] F:SkiaSharp.SKBlendMode.Overlay + - [ ] F:SkiaSharp.SKBlendMode.Plus + - [ ] F:SkiaSharp.SKBlendMode.Saturation + - [ ] F:SkiaSharp.SKBlendMode.Screen + - [ ] F:SkiaSharp.SKBlendMode.SoftLight + - [ ] F:SkiaSharp.SKBlendMode.Src + - [ ] F:SkiaSharp.SKBlendMode.SrcATop + - [ ] F:SkiaSharp.SKBlendMode.SrcIn + - [ ] F:SkiaSharp.SKBlendMode.SrcOut + - [ ] F:SkiaSharp.SKBlendMode.SrcOver + - [ ] F:SkiaSharp.SKBlendMode.Xor +- [ ] SkiaSharp.SKBlurMaskFilterFlags + - [ ] F:SkiaSharp.SKBlurMaskFilterFlags.All + - [ ] F:SkiaSharp.SKBlurMaskFilterFlags.HighQuality + - [ ] F:SkiaSharp.SKBlurMaskFilterFlags.IgnoreTransform + - [ ] F:SkiaSharp.SKBlurMaskFilterFlags.None +- [ ] SkiaSharp.SKBlurStyle + - [ ] F:SkiaSharp.SKBlurStyle.Inner + - [ ] F:SkiaSharp.SKBlurStyle.Normal + - [ ] F:SkiaSharp.SKBlurStyle.Outer + - [ ] F:SkiaSharp.SKBlurStyle.Solid +- [ ] SkiaSharp.SKCanvas + - [ ] M:SkiaSharp.SKCanvas.#ctor(SkiaSharp.SKBitmap) + - [ ] M:SkiaSharp.SKCanvas.Clear + - [ ] M:SkiaSharp.SKCanvas.Clear(SkiaSharp.SKColor) + - [ ] M:SkiaSharp.SKCanvas.Clear(SkiaSharp.SKColorF) + - [ ] M:SkiaSharp.SKCanvas.ClipPath(SkiaSharp.SKPath,SkiaSharp.SKClipOperation,System.Boolean) + - [ ] M:SkiaSharp.SKCanvas.ClipRect(SkiaSharp.SKRect,SkiaSharp.SKClipOperation,System.Boolean) + - [ ] M:SkiaSharp.SKCanvas.ClipRegion(SkiaSharp.SKRegion,SkiaSharp.SKClipOperation) + - [ ] M:SkiaSharp.SKCanvas.ClipRoundRect(SkiaSharp.SKRoundRect,SkiaSharp.SKClipOperation,System.Boolean) + - [ ] M:SkiaSharp.SKCanvas.Concat(SkiaSharp.SKMatrix@) + - [ ] M:SkiaSharp.SKCanvas.Discard + - [ ] M:SkiaSharp.SKCanvas.Dispose(System.Boolean) + - [ ] M:SkiaSharp.SKCanvas.DisposeNative + - [ ] M:SkiaSharp.SKCanvas.DrawAnnotation(SkiaSharp.SKRect,System.String,SkiaSharp.SKData) + - [ ] M:SkiaSharp.SKCanvas.DrawArc(SkiaSharp.SKRect,System.Single,System.Single,System.Boolean,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawAtlas(SkiaSharp.SKImage,SkiaSharp.SKRect[],SkiaSharp.SKRotationScaleMatrix[],SkiaSharp.SKColor[],SkiaSharp.SKBlendMode,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawAtlas(SkiaSharp.SKImage,SkiaSharp.SKRect[],SkiaSharp.SKRotationScaleMatrix[],SkiaSharp.SKColor[],SkiaSharp.SKBlendMode,SkiaSharp.SKRect,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawAtlas(SkiaSharp.SKImage,SkiaSharp.SKRect[],SkiaSharp.SKRotationScaleMatrix[],SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawBitmap(SkiaSharp.SKBitmap,SkiaSharp.SKPoint,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawBitmap(SkiaSharp.SKBitmap,SkiaSharp.SKRect,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawBitmap(SkiaSharp.SKBitmap,SkiaSharp.SKRect,SkiaSharp.SKRect,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawBitmap(SkiaSharp.SKBitmap,System.Single,System.Single,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawBitmapLattice(SkiaSharp.SKBitmap,SkiaSharp.SKLattice,SkiaSharp.SKRect,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawBitmapLattice(SkiaSharp.SKBitmap,System.Int32[],System.Int32[],SkiaSharp.SKRect,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawBitmapNinePatch(SkiaSharp.SKBitmap,SkiaSharp.SKRectI,SkiaSharp.SKRect,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawCircle(SkiaSharp.SKPoint,System.Single,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawCircle(System.Single,System.Single,System.Single,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawColor(SkiaSharp.SKColor,SkiaSharp.SKBlendMode) + - [ ] M:SkiaSharp.SKCanvas.DrawColor(SkiaSharp.SKColorF,SkiaSharp.SKBlendMode) + - [ ] M:SkiaSharp.SKCanvas.DrawDrawable(SkiaSharp.SKDrawable,SkiaSharp.SKMatrix@) + - [ ] M:SkiaSharp.SKCanvas.DrawDrawable(SkiaSharp.SKDrawable,SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.SKCanvas.DrawDrawable(SkiaSharp.SKDrawable,System.Single,System.Single) + - [ ] M:SkiaSharp.SKCanvas.DrawImage(SkiaSharp.SKImage,SkiaSharp.SKPoint,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawImage(SkiaSharp.SKImage,SkiaSharp.SKRect,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawImage(SkiaSharp.SKImage,SkiaSharp.SKRect,SkiaSharp.SKRect,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawImage(SkiaSharp.SKImage,System.Single,System.Single,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawImageLattice(SkiaSharp.SKImage,SkiaSharp.SKLattice,SkiaSharp.SKRect,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawImageLattice(SkiaSharp.SKImage,System.Int32[],System.Int32[],SkiaSharp.SKRect,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawImageNinePatch(SkiaSharp.SKImage,SkiaSharp.SKRectI,SkiaSharp.SKRect,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawLine(SkiaSharp.SKPoint,SkiaSharp.SKPoint,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawLine(System.Single,System.Single,System.Single,System.Single,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawLinkDestinationAnnotation(SkiaSharp.SKRect,SkiaSharp.SKData) + - [ ] M:SkiaSharp.SKCanvas.DrawLinkDestinationAnnotation(SkiaSharp.SKRect,System.String) + - [ ] M:SkiaSharp.SKCanvas.DrawNamedDestinationAnnotation(SkiaSharp.SKPoint,SkiaSharp.SKData) + - [ ] M:SkiaSharp.SKCanvas.DrawNamedDestinationAnnotation(SkiaSharp.SKPoint,System.String) + - [ ] M:SkiaSharp.SKCanvas.DrawOval(SkiaSharp.SKPoint,SkiaSharp.SKSize,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawOval(SkiaSharp.SKRect,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawOval(System.Single,System.Single,System.Single,System.Single,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawPaint(SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawPatch(SkiaSharp.SKPoint[],SkiaSharp.SKColor[],SkiaSharp.SKPoint[],SkiaSharp.SKBlendMode,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawPatch(SkiaSharp.SKPoint[],SkiaSharp.SKColor[],SkiaSharp.SKPoint[],SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawPath(SkiaSharp.SKPath,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawPicture(SkiaSharp.SKPicture,SkiaSharp.SKMatrix@,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawPicture(SkiaSharp.SKPicture,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawPicture(SkiaSharp.SKPicture,SkiaSharp.SKPoint,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawPicture(SkiaSharp.SKPicture,System.Single,System.Single,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawPoint(SkiaSharp.SKPoint,SkiaSharp.SKColor) + - [ ] M:SkiaSharp.SKCanvas.DrawPoint(SkiaSharp.SKPoint,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawPoint(System.Single,System.Single,SkiaSharp.SKColor) + - [ ] M:SkiaSharp.SKCanvas.DrawPoint(System.Single,System.Single,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawPoints(SkiaSharp.SKPointMode,SkiaSharp.SKPoint[],SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawPositionedText(System.Byte[],SkiaSharp.SKPoint[],SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawPositionedText(System.IntPtr,System.Int32,SkiaSharp.SKPoint[],SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawPositionedText(System.String,SkiaSharp.SKPoint[],SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawRect(SkiaSharp.SKRect,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawRect(System.Single,System.Single,System.Single,System.Single,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawRegion(SkiaSharp.SKRegion,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawRoundRect(SkiaSharp.SKRect,SkiaSharp.SKSize,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawRoundRect(SkiaSharp.SKRect,System.Single,System.Single,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawRoundRect(SkiaSharp.SKRoundRect,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawRoundRect(System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawRoundRectDifference(SkiaSharp.SKRoundRect,SkiaSharp.SKRoundRect,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawSurface(SkiaSharp.SKSurface,SkiaSharp.SKPoint,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawSurface(SkiaSharp.SKSurface,System.Single,System.Single,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawText(SkiaSharp.SKTextBlob,System.Single,System.Single,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawText(System.Byte[],SkiaSharp.SKPoint,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawText(System.Byte[],System.Single,System.Single,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawText(System.IntPtr,System.Int32,SkiaSharp.SKPoint,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawText(System.IntPtr,System.Int32,System.Single,System.Single,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawText(System.String,SkiaSharp.SKPoint,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawText(System.String,System.Single,System.Single,SkiaSharp.SKFont,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawText(System.String,System.Single,System.Single,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawTextOnPath(System.Byte[],SkiaSharp.SKPath,SkiaSharp.SKPoint,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawTextOnPath(System.Byte[],SkiaSharp.SKPath,System.Single,System.Single,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawTextOnPath(System.IntPtr,System.Int32,SkiaSharp.SKPath,SkiaSharp.SKPoint,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawTextOnPath(System.IntPtr,System.Int32,SkiaSharp.SKPath,System.Single,System.Single,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawTextOnPath(System.String,SkiaSharp.SKPath,SkiaSharp.SKPoint,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawTextOnPath(System.String,SkiaSharp.SKPath,SkiaSharp.SKPoint,System.Boolean,SkiaSharp.SKFont,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawTextOnPath(System.String,SkiaSharp.SKPath,SkiaSharp.SKPoint,System.Boolean,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawTextOnPath(System.String,SkiaSharp.SKPath,System.Single,System.Single,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawUrlAnnotation(SkiaSharp.SKRect,SkiaSharp.SKData) + - [ ] M:SkiaSharp.SKCanvas.DrawUrlAnnotation(SkiaSharp.SKRect,System.String) + - [ ] M:SkiaSharp.SKCanvas.DrawVertices(SkiaSharp.SKVertexMode,SkiaSharp.SKPoint[],SkiaSharp.SKColor[],SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawVertices(SkiaSharp.SKVertexMode,SkiaSharp.SKPoint[],SkiaSharp.SKPoint[],SkiaSharp.SKColor[],SkiaSharp.SKBlendMode,System.UInt16[],SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawVertices(SkiaSharp.SKVertexMode,SkiaSharp.SKPoint[],SkiaSharp.SKPoint[],SkiaSharp.SKColor[],SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawVertices(SkiaSharp.SKVertexMode,SkiaSharp.SKPoint[],SkiaSharp.SKPoint[],SkiaSharp.SKColor[],System.UInt16[],SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.DrawVertices(SkiaSharp.SKVertices,SkiaSharp.SKBlendMode,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.Flush + - [ ] M:SkiaSharp.SKCanvas.GetDeviceClipBounds(SkiaSharp.SKRectI@) + - [ ] M:SkiaSharp.SKCanvas.GetLocalClipBounds(SkiaSharp.SKRect@) + - [ ] M:SkiaSharp.SKCanvas.QuickReject(SkiaSharp.SKPath) + - [ ] M:SkiaSharp.SKCanvas.QuickReject(SkiaSharp.SKRect) + - [ ] M:SkiaSharp.SKCanvas.ResetMatrix + - [ ] M:SkiaSharp.SKCanvas.Restore + - [ ] M:SkiaSharp.SKCanvas.RestoreToCount(System.Int32) + - [ ] M:SkiaSharp.SKCanvas.RotateDegrees(System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKCanvas.RotateDegrees(System.Single) + - [ ] M:SkiaSharp.SKCanvas.RotateRadians(System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKCanvas.RotateRadians(System.Single) + - [ ] M:SkiaSharp.SKCanvas.Save + - [ ] M:SkiaSharp.SKCanvas.SaveLayer + - [ ] M:SkiaSharp.SKCanvas.SaveLayer(SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.SaveLayer(SkiaSharp.SKRect,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKCanvas.Scale(SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.SKCanvas.Scale(System.Single,System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKCanvas.Scale(System.Single,System.Single) + - [ ] M:SkiaSharp.SKCanvas.Scale(System.Single) + - [ ] M:SkiaSharp.SKCanvas.SetMatrix(SkiaSharp.SKMatrix) + - [ ] M:SkiaSharp.SKCanvas.Skew(SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.SKCanvas.Skew(System.Single,System.Single) + - [ ] M:SkiaSharp.SKCanvas.Translate(SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.SKCanvas.Translate(System.Single,System.Single) + - [ ] P:SkiaSharp.SKCanvas.DeviceClipBounds + - [ ] P:SkiaSharp.SKCanvas.IsClipEmpty + - [ ] P:SkiaSharp.SKCanvas.IsClipRect + - [ ] P:SkiaSharp.SKCanvas.LocalClipBounds + - [ ] P:SkiaSharp.SKCanvas.SaveCount + - [ ] P:SkiaSharp.SKCanvas.TotalMatrix +- [ ] SkiaSharp.SKClipOperation + - [ ] F:SkiaSharp.SKClipOperation.Difference + - [ ] F:SkiaSharp.SKClipOperation.Intersect +- [ ] SkiaSharp.SKCodec + - [ ] M:SkiaSharp.SKCodec.Create(SkiaSharp.SKData) + - [ ] M:SkiaSharp.SKCodec.Create(SkiaSharp.SKStream,SkiaSharp.SKCodecResult@) + - [ ] M:SkiaSharp.SKCodec.Create(SkiaSharp.SKStream) + - [ ] M:SkiaSharp.SKCodec.Create(System.IO.Stream,SkiaSharp.SKCodecResult@) + - [ ] M:SkiaSharp.SKCodec.Create(System.IO.Stream) + - [ ] M:SkiaSharp.SKCodec.Create(System.String,SkiaSharp.SKCodecResult@) + - [ ] M:SkiaSharp.SKCodec.Create(System.String) + - [ ] M:SkiaSharp.SKCodec.Dispose(System.Boolean) + - [ ] M:SkiaSharp.SKCodec.DisposeNative + - [ ] M:SkiaSharp.SKCodec.GetFrameInfo(System.Int32,SkiaSharp.SKCodecFrameInfo@) + - [ ] M:SkiaSharp.SKCodec.GetOutputScanline(System.Int32) + - [ ] M:SkiaSharp.SKCodec.GetPixels(SkiaSharp.SKImageInfo,System.Byte[]) + - [ ] M:SkiaSharp.SKCodec.GetPixels(SkiaSharp.SKImageInfo,System.Byte[]@) + - [ ] M:SkiaSharp.SKCodec.GetPixels(SkiaSharp.SKImageInfo,System.IntPtr,SkiaSharp.SKCodecOptions,SkiaSharp.SKColorTable,System.Int32@) + - [ ] M:SkiaSharp.SKCodec.GetPixels(SkiaSharp.SKImageInfo,System.IntPtr,SkiaSharp.SKCodecOptions,System.IntPtr,System.Int32@) + - [ ] M:SkiaSharp.SKCodec.GetPixels(SkiaSharp.SKImageInfo,System.IntPtr,SkiaSharp.SKCodecOptions) + - [ ] M:SkiaSharp.SKCodec.GetPixels(SkiaSharp.SKImageInfo,System.IntPtr,SkiaSharp.SKColorTable,System.Int32@) + - [ ] M:SkiaSharp.SKCodec.GetPixels(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32,SkiaSharp.SKCodecOptions,SkiaSharp.SKColorTable,System.Int32@) + - [ ] M:SkiaSharp.SKCodec.GetPixels(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32,SkiaSharp.SKCodecOptions,System.IntPtr,System.Int32@) + - [ ] M:SkiaSharp.SKCodec.GetPixels(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32,SkiaSharp.SKCodecOptions) + - [ ] M:SkiaSharp.SKCodec.GetPixels(SkiaSharp.SKImageInfo,System.IntPtr,System.IntPtr,System.Int32@) + - [ ] M:SkiaSharp.SKCodec.GetPixels(SkiaSharp.SKImageInfo,System.IntPtr) + - [ ] M:SkiaSharp.SKCodec.GetPixels(System.Byte[]@) + - [ ] M:SkiaSharp.SKCodec.GetScaledDimensions(System.Single) + - [ ] M:SkiaSharp.SKCodec.GetScanlines(System.IntPtr,System.Int32,System.Int32) + - [ ] M:SkiaSharp.SKCodec.GetValidSubset(SkiaSharp.SKRectI@) + - [ ] M:SkiaSharp.SKCodec.IncrementalDecode + - [ ] M:SkiaSharp.SKCodec.IncrementalDecode(System.Int32@) + - [ ] M:SkiaSharp.SKCodec.SkipScanlines(System.Int32) + - [ ] M:SkiaSharp.SKCodec.StartIncrementalDecode(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32,SkiaSharp.SKCodecOptions,SkiaSharp.SKColorTable,System.Int32@) + - [ ] M:SkiaSharp.SKCodec.StartIncrementalDecode(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32,SkiaSharp.SKCodecOptions,System.IntPtr,System.Int32@) + - [ ] M:SkiaSharp.SKCodec.StartIncrementalDecode(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32,SkiaSharp.SKCodecOptions) + - [ ] M:SkiaSharp.SKCodec.StartIncrementalDecode(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32) + - [ ] M:SkiaSharp.SKCodec.StartScanlineDecode(SkiaSharp.SKImageInfo,SkiaSharp.SKCodecOptions,SkiaSharp.SKColorTable,System.Int32@) + - [ ] M:SkiaSharp.SKCodec.StartScanlineDecode(SkiaSharp.SKImageInfo,SkiaSharp.SKCodecOptions,System.IntPtr,System.Int32@) + - [ ] M:SkiaSharp.SKCodec.StartScanlineDecode(SkiaSharp.SKImageInfo,SkiaSharp.SKCodecOptions) + - [ ] M:SkiaSharp.SKCodec.StartScanlineDecode(SkiaSharp.SKImageInfo) + - [ ] P:SkiaSharp.SKCodec.EncodedFormat + - [ ] P:SkiaSharp.SKCodec.EncodedInfo + - [ ] P:SkiaSharp.SKCodec.EncodedOrigin + - [ ] P:SkiaSharp.SKCodec.FrameCount + - [ ] P:SkiaSharp.SKCodec.FrameInfo + - [ ] P:SkiaSharp.SKCodec.Info + - [ ] P:SkiaSharp.SKCodec.MinBufferedBytesNeeded + - [ ] P:SkiaSharp.SKCodec.NextScanline + - [ ] P:SkiaSharp.SKCodec.Origin + - [ ] P:SkiaSharp.SKCodec.Pixels + - [ ] P:SkiaSharp.SKCodec.RepetitionCount + - [ ] P:SkiaSharp.SKCodec.ScanlineOrder +- [ ] SkiaSharp.SKCodecAnimationDisposalMethod + - [ ] F:SkiaSharp.SKCodecAnimationDisposalMethod.Keep + - [ ] F:SkiaSharp.SKCodecAnimationDisposalMethod.RestoreBackgroundColor + - [ ] F:SkiaSharp.SKCodecAnimationDisposalMethod.RestorePrevious +- [ ] SkiaSharp.SKCodecFrameInfo + - [ ] M:SkiaSharp.SKCodecFrameInfo.Equals(SkiaSharp.SKCodecFrameInfo) + - [ ] M:SkiaSharp.SKCodecFrameInfo.Equals(System.Object) + - [ ] M:SkiaSharp.SKCodecFrameInfo.GetHashCode + - [ ] M:SkiaSharp.SKCodecFrameInfo.op_Equality(SkiaSharp.SKCodecFrameInfo,SkiaSharp.SKCodecFrameInfo) + - [ ] M:SkiaSharp.SKCodecFrameInfo.op_Inequality(SkiaSharp.SKCodecFrameInfo,SkiaSharp.SKCodecFrameInfo) + - [ ] P:SkiaSharp.SKCodecFrameInfo.AlphaType + - [ ] P:SkiaSharp.SKCodecFrameInfo.DisposalMethod + - [ ] P:SkiaSharp.SKCodecFrameInfo.Duration + - [ ] P:SkiaSharp.SKCodecFrameInfo.FullyRecieved + - [ ] P:SkiaSharp.SKCodecFrameInfo.RequiredFrame +- [ ] SkiaSharp.SKCodecOptions + - [ ] F:SkiaSharp.SKCodecOptions.Default + - [ ] M:SkiaSharp.SKCodecOptions.#ctor(SkiaSharp.SKRectI) + - [ ] M:SkiaSharp.SKCodecOptions.#ctor(SkiaSharp.SKZeroInitialized,SkiaSharp.SKRectI) + - [ ] M:SkiaSharp.SKCodecOptions.#ctor(SkiaSharp.SKZeroInitialized) + - [ ] M:SkiaSharp.SKCodecOptions.#ctor(System.Int32,System.Boolean) + - [ ] M:SkiaSharp.SKCodecOptions.#ctor(System.Int32,System.Int32) + - [ ] M:SkiaSharp.SKCodecOptions.#ctor(System.Int32) + - [ ] M:SkiaSharp.SKCodecOptions.Equals(SkiaSharp.SKCodecOptions) + - [ ] M:SkiaSharp.SKCodecOptions.Equals(System.Object) + - [ ] M:SkiaSharp.SKCodecOptions.GetHashCode + - [ ] M:SkiaSharp.SKCodecOptions.op_Equality(SkiaSharp.SKCodecOptions,SkiaSharp.SKCodecOptions) + - [ ] M:SkiaSharp.SKCodecOptions.op_Inequality(SkiaSharp.SKCodecOptions,SkiaSharp.SKCodecOptions) + - [ ] P:SkiaSharp.SKCodecOptions.FrameIndex + - [ ] P:SkiaSharp.SKCodecOptions.HasPriorFrame + - [ ] P:SkiaSharp.SKCodecOptions.HasSubset + - [ ] P:SkiaSharp.SKCodecOptions.PremulBehavior + - [ ] P:SkiaSharp.SKCodecOptions.PriorFrame + - [ ] P:SkiaSharp.SKCodecOptions.Subset + - [ ] P:SkiaSharp.SKCodecOptions.ZeroInitialized +- [ ] SkiaSharp.SKCodecOrigin + - [ ] F:SkiaSharp.SKCodecOrigin.BottomLeft + - [ ] F:SkiaSharp.SKCodecOrigin.BottomRight + - [ ] F:SkiaSharp.SKCodecOrigin.LeftBottom + - [ ] F:SkiaSharp.SKCodecOrigin.LeftTop + - [ ] F:SkiaSharp.SKCodecOrigin.RightBottom + - [ ] F:SkiaSharp.SKCodecOrigin.RightTop + - [ ] F:SkiaSharp.SKCodecOrigin.TopLeft + - [ ] F:SkiaSharp.SKCodecOrigin.TopRight +- [ ] SkiaSharp.SKCodecResult + - [ ] F:SkiaSharp.SKCodecResult.CouldNotRewind + - [ ] F:SkiaSharp.SKCodecResult.ErrorInInput + - [ ] F:SkiaSharp.SKCodecResult.IncompleteInput + - [ ] F:SkiaSharp.SKCodecResult.InternalError + - [ ] F:SkiaSharp.SKCodecResult.InvalidConversion + - [ ] F:SkiaSharp.SKCodecResult.InvalidInput + - [ ] F:SkiaSharp.SKCodecResult.InvalidParameters + - [ ] F:SkiaSharp.SKCodecResult.InvalidScale + - [ ] F:SkiaSharp.SKCodecResult.Success + - [ ] F:SkiaSharp.SKCodecResult.Unimplemented +- [ ] SkiaSharp.SKCodecScanlineOrder + - [ ] F:SkiaSharp.SKCodecScanlineOrder.BottomUp + - [ ] F:SkiaSharp.SKCodecScanlineOrder.TopDown +- [ ] SkiaSharp.SKColor + - [ ] F:SkiaSharp.SKColor.Empty + - [ ] M:SkiaSharp.SKColor.#ctor(System.Byte,System.Byte,System.Byte,System.Byte) + - [ ] M:SkiaSharp.SKColor.#ctor(System.Byte,System.Byte,System.Byte) + - [ ] M:SkiaSharp.SKColor.#ctor(System.UInt32) + - [ ] M:SkiaSharp.SKColor.Equals(SkiaSharp.SKColor) + - [ ] M:SkiaSharp.SKColor.Equals(System.Object) + - [ ] M:SkiaSharp.SKColor.FromHsl(System.Single,System.Single,System.Single,System.Byte) + - [ ] M:SkiaSharp.SKColor.FromHsv(System.Single,System.Single,System.Single,System.Byte) + - [ ] M:SkiaSharp.SKColor.GetHashCode + - [ ] M:SkiaSharp.SKColor.op_Equality(SkiaSharp.SKColor,SkiaSharp.SKColor) + - [ ] M:SkiaSharp.SKColor.op_Explicit(SkiaSharp.SKColor)~System.UInt32 + - [ ] M:SkiaSharp.SKColor.op_Implicit(System.UInt32)~SkiaSharp.SKColor + - [ ] M:SkiaSharp.SKColor.op_Inequality(SkiaSharp.SKColor,SkiaSharp.SKColor) + - [ ] M:SkiaSharp.SKColor.Parse(System.String) + - [ ] M:SkiaSharp.SKColor.ToHsl(System.Single@,System.Single@,System.Single@) + - [ ] M:SkiaSharp.SKColor.ToHsv(System.Single@,System.Single@,System.Single@) + - [ ] M:SkiaSharp.SKColor.ToString + - [ ] M:SkiaSharp.SKColor.TryParse(System.String,SkiaSharp.SKColor@) + - [ ] M:SkiaSharp.SKColor.WithAlpha(System.Byte) + - [ ] M:SkiaSharp.SKColor.WithBlue(System.Byte) + - [ ] M:SkiaSharp.SKColor.WithGreen(System.Byte) + - [ ] M:SkiaSharp.SKColor.WithRed(System.Byte) + - [ ] P:SkiaSharp.SKColor.Alpha + - [ ] P:SkiaSharp.SKColor.Blue + - [ ] P:SkiaSharp.SKColor.Green + - [ ] P:SkiaSharp.SKColor.Hue + - [ ] P:SkiaSharp.SKColor.Red +- [ ] SkiaSharp.SKColorChannel + - [ ] F:SkiaSharp.SKColorChannel.A + - [ ] F:SkiaSharp.SKColorChannel.B + - [ ] F:SkiaSharp.SKColorChannel.G + - [ ] F:SkiaSharp.SKColorChannel.R +- [ ] SkiaSharp.SKColorF + - [ ] F:SkiaSharp.SKColorF.Empty + - [ ] M:SkiaSharp.SKColorF.#ctor(System.Single,System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKColorF.#ctor(System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKColorF.Clamp + - [ ] M:SkiaSharp.SKColorF.Equals(SkiaSharp.SKColorF) + - [ ] M:SkiaSharp.SKColorF.Equals(System.Object) + - [ ] M:SkiaSharp.SKColorF.FromHsl(System.Single,System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKColorF.FromHsv(System.Single,System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKColorF.GetHashCode + - [ ] M:SkiaSharp.SKColorF.op_Equality(SkiaSharp.SKColorF,SkiaSharp.SKColorF) + - [ ] M:SkiaSharp.SKColorF.op_Explicit(SkiaSharp.SKColorF)~SkiaSharp.SKColor + - [ ] M:SkiaSharp.SKColorF.op_Implicit(SkiaSharp.SKColor)~SkiaSharp.SKColorF + - [ ] M:SkiaSharp.SKColorF.op_Inequality(SkiaSharp.SKColorF,SkiaSharp.SKColorF) + - [ ] M:SkiaSharp.SKColorF.ToHsl(System.Single@,System.Single@,System.Single@) + - [ ] M:SkiaSharp.SKColorF.ToHsv(System.Single@,System.Single@,System.Single@) + - [ ] M:SkiaSharp.SKColorF.ToString + - [ ] M:SkiaSharp.SKColorF.WithAlpha(System.Single) + - [ ] M:SkiaSharp.SKColorF.WithBlue(System.Single) + - [ ] M:SkiaSharp.SKColorF.WithGreen(System.Single) + - [ ] M:SkiaSharp.SKColorF.WithRed(System.Single) + - [ ] P:SkiaSharp.SKColorF.Alpha + - [ ] P:SkiaSharp.SKColorF.Blue + - [ ] P:SkiaSharp.SKColorF.Green + - [ ] P:SkiaSharp.SKColorF.Hue + - [ ] P:SkiaSharp.SKColorF.Red +- [ ] SkiaSharp.SKColorFilter + - [ ] F:SkiaSharp.SKColorFilter.ColorMatrixSize + - [ ] F:SkiaSharp.SKColorFilter.TableMaxLength + - [ ] M:SkiaSharp.SKColorFilter.CreateBlendMode(SkiaSharp.SKColor,SkiaSharp.SKBlendMode) + - [ ] M:SkiaSharp.SKColorFilter.CreateColorMatrix(System.Single[]) + - [ ] M:SkiaSharp.SKColorFilter.CreateCompose(SkiaSharp.SKColorFilter,SkiaSharp.SKColorFilter) + - [ ] M:SkiaSharp.SKColorFilter.CreateHighContrast(SkiaSharp.SKHighContrastConfig) + - [ ] M:SkiaSharp.SKColorFilter.CreateHighContrast(System.Boolean,SkiaSharp.SKHighContrastConfigInvertStyle,System.Single) + - [ ] M:SkiaSharp.SKColorFilter.CreateLighting(SkiaSharp.SKColor,SkiaSharp.SKColor) + - [ ] M:SkiaSharp.SKColorFilter.CreateLumaColor + - [ ] M:SkiaSharp.SKColorFilter.CreateTable(System.Byte[],System.Byte[],System.Byte[],System.Byte[]) + - [ ] M:SkiaSharp.SKColorFilter.CreateTable(System.Byte[]) + - [ ] M:SkiaSharp.SKColorFilter.Dispose(System.Boolean) +- [ ] SkiaSharp.SKColors + - [ ] F:SkiaSharp.SKColors.AliceBlue + - [ ] F:SkiaSharp.SKColors.AntiqueWhite + - [ ] F:SkiaSharp.SKColors.Aqua + - [ ] F:SkiaSharp.SKColors.Aquamarine + - [ ] F:SkiaSharp.SKColors.Azure + - [ ] F:SkiaSharp.SKColors.Beige + - [ ] F:SkiaSharp.SKColors.Bisque + - [ ] F:SkiaSharp.SKColors.Black + - [ ] F:SkiaSharp.SKColors.BlanchedAlmond + - [ ] F:SkiaSharp.SKColors.Blue + - [ ] F:SkiaSharp.SKColors.BlueViolet + - [ ] F:SkiaSharp.SKColors.Brown + - [ ] F:SkiaSharp.SKColors.BurlyWood + - [ ] F:SkiaSharp.SKColors.CadetBlue + - [ ] F:SkiaSharp.SKColors.Chartreuse + - [ ] F:SkiaSharp.SKColors.Chocolate + - [ ] F:SkiaSharp.SKColors.Coral + - [ ] F:SkiaSharp.SKColors.CornflowerBlue + - [ ] F:SkiaSharp.SKColors.Cornsilk + - [ ] F:SkiaSharp.SKColors.Crimson + - [ ] F:SkiaSharp.SKColors.Cyan + - [ ] F:SkiaSharp.SKColors.DarkBlue + - [ ] F:SkiaSharp.SKColors.DarkCyan + - [ ] F:SkiaSharp.SKColors.DarkGoldenrod + - [ ] F:SkiaSharp.SKColors.DarkGray + - [ ] F:SkiaSharp.SKColors.DarkGreen + - [ ] F:SkiaSharp.SKColors.DarkKhaki + - [ ] F:SkiaSharp.SKColors.DarkMagenta + - [ ] F:SkiaSharp.SKColors.DarkOliveGreen + - [ ] F:SkiaSharp.SKColors.DarkOrange + - [ ] F:SkiaSharp.SKColors.DarkOrchid + - [ ] F:SkiaSharp.SKColors.DarkRed + - [ ] F:SkiaSharp.SKColors.DarkSalmon + - [ ] F:SkiaSharp.SKColors.DarkSeaGreen + - [ ] F:SkiaSharp.SKColors.DarkSlateBlue + - [ ] F:SkiaSharp.SKColors.DarkSlateGray + - [ ] F:SkiaSharp.SKColors.DarkTurquoise + - [ ] F:SkiaSharp.SKColors.DarkViolet + - [ ] F:SkiaSharp.SKColors.DeepPink + - [ ] F:SkiaSharp.SKColors.DeepSkyBlue + - [ ] F:SkiaSharp.SKColors.DimGray + - [ ] F:SkiaSharp.SKColors.DodgerBlue + - [ ] F:SkiaSharp.SKColors.Firebrick + - [ ] F:SkiaSharp.SKColors.FloralWhite + - [ ] F:SkiaSharp.SKColors.ForestGreen + - [ ] F:SkiaSharp.SKColors.Fuchsia + - [ ] F:SkiaSharp.SKColors.Gainsboro + - [ ] F:SkiaSharp.SKColors.GhostWhite + - [ ] F:SkiaSharp.SKColors.Gold + - [ ] F:SkiaSharp.SKColors.Goldenrod + - [ ] F:SkiaSharp.SKColors.Gray + - [ ] F:SkiaSharp.SKColors.Green + - [ ] F:SkiaSharp.SKColors.GreenYellow + - [ ] F:SkiaSharp.SKColors.Honeydew + - [ ] F:SkiaSharp.SKColors.HotPink + - [ ] F:SkiaSharp.SKColors.IndianRed + - [ ] F:SkiaSharp.SKColors.Indigo + - [ ] F:SkiaSharp.SKColors.Ivory + - [ ] F:SkiaSharp.SKColors.Khaki + - [ ] F:SkiaSharp.SKColors.Lavender + - [ ] F:SkiaSharp.SKColors.LavenderBlush + - [ ] F:SkiaSharp.SKColors.LawnGreen + - [ ] F:SkiaSharp.SKColors.LemonChiffon + - [ ] F:SkiaSharp.SKColors.LightBlue + - [ ] F:SkiaSharp.SKColors.LightCoral + - [ ] F:SkiaSharp.SKColors.LightCyan + - [ ] F:SkiaSharp.SKColors.LightGoldenrodYellow + - [ ] F:SkiaSharp.SKColors.LightGray + - [ ] F:SkiaSharp.SKColors.LightGreen + - [ ] F:SkiaSharp.SKColors.LightPink + - [ ] F:SkiaSharp.SKColors.LightSalmon + - [ ] F:SkiaSharp.SKColors.LightSeaGreen + - [ ] F:SkiaSharp.SKColors.LightSkyBlue + - [ ] F:SkiaSharp.SKColors.LightSlateGray + - [ ] F:SkiaSharp.SKColors.LightSteelBlue + - [ ] F:SkiaSharp.SKColors.LightYellow + - [ ] F:SkiaSharp.SKColors.Lime + - [ ] F:SkiaSharp.SKColors.LimeGreen + - [ ] F:SkiaSharp.SKColors.Linen + - [ ] F:SkiaSharp.SKColors.Magenta + - [ ] F:SkiaSharp.SKColors.Maroon + - [ ] F:SkiaSharp.SKColors.MediumAquamarine + - [ ] F:SkiaSharp.SKColors.MediumBlue + - [ ] F:SkiaSharp.SKColors.MediumOrchid + - [ ] F:SkiaSharp.SKColors.MediumPurple + - [ ] F:SkiaSharp.SKColors.MediumSeaGreen + - [ ] F:SkiaSharp.SKColors.MediumSlateBlue + - [ ] F:SkiaSharp.SKColors.MediumSpringGreen + - [ ] F:SkiaSharp.SKColors.MediumTurquoise + - [ ] F:SkiaSharp.SKColors.MediumVioletRed + - [ ] F:SkiaSharp.SKColors.MidnightBlue + - [ ] F:SkiaSharp.SKColors.MintCream + - [ ] F:SkiaSharp.SKColors.MistyRose + - [ ] F:SkiaSharp.SKColors.Moccasin + - [ ] F:SkiaSharp.SKColors.NavajoWhite + - [ ] F:SkiaSharp.SKColors.Navy + - [ ] F:SkiaSharp.SKColors.OldLace + - [ ] F:SkiaSharp.SKColors.Olive + - [ ] F:SkiaSharp.SKColors.OliveDrab + - [ ] F:SkiaSharp.SKColors.Orange + - [ ] F:SkiaSharp.SKColors.OrangeRed + - [ ] F:SkiaSharp.SKColors.Orchid + - [ ] F:SkiaSharp.SKColors.PaleGoldenrod + - [ ] F:SkiaSharp.SKColors.PaleGreen + - [ ] F:SkiaSharp.SKColors.PaleTurquoise + - [ ] F:SkiaSharp.SKColors.PaleVioletRed + - [ ] F:SkiaSharp.SKColors.PapayaWhip + - [ ] F:SkiaSharp.SKColors.PeachPuff + - [ ] F:SkiaSharp.SKColors.Peru + - [ ] F:SkiaSharp.SKColors.Pink + - [ ] F:SkiaSharp.SKColors.Plum + - [ ] F:SkiaSharp.SKColors.PowderBlue + - [ ] F:SkiaSharp.SKColors.Purple + - [ ] F:SkiaSharp.SKColors.Red + - [ ] F:SkiaSharp.SKColors.RosyBrown + - [ ] F:SkiaSharp.SKColors.RoyalBlue + - [ ] F:SkiaSharp.SKColors.SaddleBrown + - [ ] F:SkiaSharp.SKColors.Salmon + - [ ] F:SkiaSharp.SKColors.SandyBrown + - [ ] F:SkiaSharp.SKColors.SeaGreen + - [ ] F:SkiaSharp.SKColors.SeaShell + - [ ] F:SkiaSharp.SKColors.Sienna + - [ ] F:SkiaSharp.SKColors.Silver + - [ ] F:SkiaSharp.SKColors.SkyBlue + - [ ] F:SkiaSharp.SKColors.SlateBlue + - [ ] F:SkiaSharp.SKColors.SlateGray + - [ ] F:SkiaSharp.SKColors.Snow + - [ ] F:SkiaSharp.SKColors.SpringGreen + - [ ] F:SkiaSharp.SKColors.SteelBlue + - [ ] F:SkiaSharp.SKColors.Tan + - [ ] F:SkiaSharp.SKColors.Teal + - [ ] F:SkiaSharp.SKColors.Thistle + - [ ] F:SkiaSharp.SKColors.Tomato + - [ ] F:SkiaSharp.SKColors.Transparent + - [ ] F:SkiaSharp.SKColors.Turquoise + - [ ] F:SkiaSharp.SKColors.Violet + - [ ] F:SkiaSharp.SKColors.Wheat + - [ ] F:SkiaSharp.SKColors.White + - [ ] F:SkiaSharp.SKColors.WhiteSmoke + - [ ] F:SkiaSharp.SKColors.Yellow + - [ ] F:SkiaSharp.SKColors.YellowGreen + - [ ] P:SkiaSharp.SKColors.Empty +- [ ] SkiaSharp.SKColorSpace + - [ ] M:SkiaSharp.SKColorSpace.CreateIcc(SkiaSharp.SKColorSpaceIccProfile) + - [ ] M:SkiaSharp.SKColorSpace.CreateIcc(SkiaSharp.SKData) + - [ ] M:SkiaSharp.SKColorSpace.CreateIcc(System.Byte[],System.Int64) + - [ ] M:SkiaSharp.SKColorSpace.CreateIcc(System.Byte[]) + - [ ] M:SkiaSharp.SKColorSpace.CreateIcc(System.IntPtr,System.Int64) + - [ ] M:SkiaSharp.SKColorSpace.CreateIcc(System.ReadOnlySpan{System.Byte}) + - [ ] M:SkiaSharp.SKColorSpace.CreateRgb(SkiaSharp.SKColorSpaceRenderTargetGamma,SkiaSharp.SKColorSpaceGamut,SkiaSharp.SKColorSpaceFlags) + - [ ] M:SkiaSharp.SKColorSpace.CreateRgb(SkiaSharp.SKColorSpaceRenderTargetGamma,SkiaSharp.SKColorSpaceGamut) + - [ ] M:SkiaSharp.SKColorSpace.CreateRgb(SkiaSharp.SKColorSpaceRenderTargetGamma,SkiaSharp.SKMatrix44,SkiaSharp.SKColorSpaceFlags) + - [ ] M:SkiaSharp.SKColorSpace.CreateRgb(SkiaSharp.SKColorSpaceRenderTargetGamma,SkiaSharp.SKMatrix44) + - [ ] M:SkiaSharp.SKColorSpace.CreateRgb(SkiaSharp.SKColorSpaceTransferFn,SkiaSharp.SKColorSpaceGamut,SkiaSharp.SKColorSpaceFlags) + - [ ] M:SkiaSharp.SKColorSpace.CreateRgb(SkiaSharp.SKColorSpaceTransferFn,SkiaSharp.SKColorSpaceGamut) + - [ ] M:SkiaSharp.SKColorSpace.CreateRgb(SkiaSharp.SKColorSpaceTransferFn,SkiaSharp.SKColorSpaceXyz) + - [ ] M:SkiaSharp.SKColorSpace.CreateRgb(SkiaSharp.SKColorSpaceTransferFn,SkiaSharp.SKMatrix44,SkiaSharp.SKColorSpaceFlags) + - [ ] M:SkiaSharp.SKColorSpace.CreateRgb(SkiaSharp.SKColorSpaceTransferFn,SkiaSharp.SKMatrix44) + - [ ] M:SkiaSharp.SKColorSpace.CreateRgb(SkiaSharp.SKNamedGamma,SkiaSharp.SKColorSpaceGamut) + - [ ] M:SkiaSharp.SKColorSpace.CreateRgb(SkiaSharp.SKNamedGamma,SkiaSharp.SKMatrix44) + - [ ] M:SkiaSharp.SKColorSpace.CreateSrgb + - [ ] M:SkiaSharp.SKColorSpace.CreateSrgbLinear + - [ ] M:SkiaSharp.SKColorSpace.Dispose(System.Boolean) + - [ ] M:SkiaSharp.SKColorSpace.Equal(SkiaSharp.SKColorSpace,SkiaSharp.SKColorSpace) + - [ ] M:SkiaSharp.SKColorSpace.FromXyzD50 + - [ ] M:SkiaSharp.SKColorSpace.GetNumericalTransferFunction + - [ ] M:SkiaSharp.SKColorSpace.GetNumericalTransferFunction(SkiaSharp.SKColorSpaceTransferFn@) + - [ ] M:SkiaSharp.SKColorSpace.ToColorSpaceXyz + - [ ] M:SkiaSharp.SKColorSpace.ToColorSpaceXyz(SkiaSharp.SKColorSpaceXyz@) + - [ ] M:SkiaSharp.SKColorSpace.ToLinearGamma + - [ ] M:SkiaSharp.SKColorSpace.ToProfile + - [ ] M:SkiaSharp.SKColorSpace.ToSrgbGamma + - [ ] M:SkiaSharp.SKColorSpace.ToXyzD50 + - [ ] M:SkiaSharp.SKColorSpace.ToXyzD50(SkiaSharp.SKMatrix44) + - [ ] P:SkiaSharp.SKColorSpace.GammaIsCloseToSrgb + - [ ] P:SkiaSharp.SKColorSpace.GammaIsLinear + - [ ] P:SkiaSharp.SKColorSpace.IsNumericalTransferFunction + - [ ] P:SkiaSharp.SKColorSpace.IsSrgb + - [ ] P:SkiaSharp.SKColorSpace.NamedGamma + - [ ] P:SkiaSharp.SKColorSpace.Type +- [ ] SkiaSharp.SKColorSpaceFlags + - [ ] F:SkiaSharp.SKColorSpaceFlags.None + - [ ] F:SkiaSharp.SKColorSpaceFlags.NonLinearBlending +- [ ] SkiaSharp.SKColorSpaceGamut + - [ ] F:SkiaSharp.SKColorSpaceGamut.AdobeRgb + - [ ] F:SkiaSharp.SKColorSpaceGamut.Dcip3D65 + - [ ] F:SkiaSharp.SKColorSpaceGamut.Rec2020 + - [ ] F:SkiaSharp.SKColorSpaceGamut.Srgb +- [ ] SkiaSharp.SKColorSpaceIccProfile + - [ ] M:SkiaSharp.SKColorSpaceIccProfile.#ctor + - [ ] M:SkiaSharp.SKColorSpaceIccProfile.Create(SkiaSharp.SKData) + - [ ] M:SkiaSharp.SKColorSpaceIccProfile.Create(System.Byte[]) + - [ ] M:SkiaSharp.SKColorSpaceIccProfile.Create(System.IntPtr,System.Int64) + - [ ] M:SkiaSharp.SKColorSpaceIccProfile.Create(System.ReadOnlySpan{System.Byte}) + - [ ] M:SkiaSharp.SKColorSpaceIccProfile.DisposeNative + - [ ] M:SkiaSharp.SKColorSpaceIccProfile.ToColorSpaceXyz + - [ ] M:SkiaSharp.SKColorSpaceIccProfile.ToColorSpaceXyz(SkiaSharp.SKColorSpaceXyz@) + - [ ] P:SkiaSharp.SKColorSpaceIccProfile.Buffer + - [ ] P:SkiaSharp.SKColorSpaceIccProfile.Size +- [ ] SkiaSharp.SKColorSpacePrimaries + - [ ] F:SkiaSharp.SKColorSpacePrimaries.Empty + - [ ] M:SkiaSharp.SKColorSpacePrimaries.#ctor(System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKColorSpacePrimaries.#ctor(System.Single[]) + - [ ] M:SkiaSharp.SKColorSpacePrimaries.Equals(SkiaSharp.SKColorSpacePrimaries) + - [ ] M:SkiaSharp.SKColorSpacePrimaries.Equals(System.Object) + - [ ] M:SkiaSharp.SKColorSpacePrimaries.GetHashCode + - [ ] M:SkiaSharp.SKColorSpacePrimaries.op_Equality(SkiaSharp.SKColorSpacePrimaries,SkiaSharp.SKColorSpacePrimaries) + - [ ] M:SkiaSharp.SKColorSpacePrimaries.op_Inequality(SkiaSharp.SKColorSpacePrimaries,SkiaSharp.SKColorSpacePrimaries) + - [ ] M:SkiaSharp.SKColorSpacePrimaries.ToColorSpaceXyz + - [ ] M:SkiaSharp.SKColorSpacePrimaries.ToColorSpaceXyz(SkiaSharp.SKColorSpaceXyz@) + - [ ] M:SkiaSharp.SKColorSpacePrimaries.ToXyzD50 + - [ ] M:SkiaSharp.SKColorSpacePrimaries.ToXyzD50(SkiaSharp.SKMatrix44) + - [ ] P:SkiaSharp.SKColorSpacePrimaries.BX + - [ ] P:SkiaSharp.SKColorSpacePrimaries.BY + - [ ] P:SkiaSharp.SKColorSpacePrimaries.GX + - [ ] P:SkiaSharp.SKColorSpacePrimaries.GY + - [ ] P:SkiaSharp.SKColorSpacePrimaries.RX + - [ ] P:SkiaSharp.SKColorSpacePrimaries.RY + - [ ] P:SkiaSharp.SKColorSpacePrimaries.Values + - [ ] P:SkiaSharp.SKColorSpacePrimaries.WX + - [ ] P:SkiaSharp.SKColorSpacePrimaries.WY +- [ ] SkiaSharp.SKColorSpaceRenderTargetGamma + - [ ] F:SkiaSharp.SKColorSpaceRenderTargetGamma.Linear + - [ ] F:SkiaSharp.SKColorSpaceRenderTargetGamma.Srgb +- [ ] SkiaSharp.SKColorSpaceTransferFn + - [ ] F:SkiaSharp.SKColorSpaceTransferFn.Empty + - [ ] M:SkiaSharp.SKColorSpaceTransferFn.#ctor(System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKColorSpaceTransferFn.#ctor(System.Single[]) + - [ ] M:SkiaSharp.SKColorSpaceTransferFn.Equals(SkiaSharp.SKColorSpaceTransferFn) + - [ ] M:SkiaSharp.SKColorSpaceTransferFn.Equals(System.Object) + - [ ] M:SkiaSharp.SKColorSpaceTransferFn.GetHashCode + - [ ] M:SkiaSharp.SKColorSpaceTransferFn.Invert + - [ ] M:SkiaSharp.SKColorSpaceTransferFn.op_Equality(SkiaSharp.SKColorSpaceTransferFn,SkiaSharp.SKColorSpaceTransferFn) + - [ ] M:SkiaSharp.SKColorSpaceTransferFn.op_Inequality(SkiaSharp.SKColorSpaceTransferFn,SkiaSharp.SKColorSpaceTransferFn) + - [ ] M:SkiaSharp.SKColorSpaceTransferFn.Transform(System.Single) + - [ ] P:SkiaSharp.SKColorSpaceTransferFn.A + - [ ] P:SkiaSharp.SKColorSpaceTransferFn.B + - [ ] P:SkiaSharp.SKColorSpaceTransferFn.C + - [ ] P:SkiaSharp.SKColorSpaceTransferFn.D + - [ ] P:SkiaSharp.SKColorSpaceTransferFn.E + - [ ] P:SkiaSharp.SKColorSpaceTransferFn.F + - [ ] P:SkiaSharp.SKColorSpaceTransferFn.G + - [ ] P:SkiaSharp.SKColorSpaceTransferFn.Hlg + - [ ] P:SkiaSharp.SKColorSpaceTransferFn.Linear + - [ ] P:SkiaSharp.SKColorSpaceTransferFn.Pq + - [ ] P:SkiaSharp.SKColorSpaceTransferFn.Rec2020 + - [ ] P:SkiaSharp.SKColorSpaceTransferFn.Srgb + - [ ] P:SkiaSharp.SKColorSpaceTransferFn.TwoDotTwo + - [ ] P:SkiaSharp.SKColorSpaceTransferFn.Values +- [ ] SkiaSharp.SKColorSpaceType + - [ ] F:SkiaSharp.SKColorSpaceType.Cmyk + - [ ] F:SkiaSharp.SKColorSpaceType.Gray + - [ ] F:SkiaSharp.SKColorSpaceType.Rgb +- [ ] SkiaSharp.SKColorSpaceXyz + - [ ] F:SkiaSharp.SKColorSpaceXyz.Empty + - [ ] M:SkiaSharp.SKColorSpaceXyz.#ctor(System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKColorSpaceXyz.#ctor(System.Single) + - [ ] M:SkiaSharp.SKColorSpaceXyz.#ctor(System.Single[]) + - [ ] M:SkiaSharp.SKColorSpaceXyz.Concat(SkiaSharp.SKColorSpaceXyz,SkiaSharp.SKColorSpaceXyz) + - [ ] M:SkiaSharp.SKColorSpaceXyz.Equals(SkiaSharp.SKColorSpaceXyz) + - [ ] M:SkiaSharp.SKColorSpaceXyz.Equals(System.Object) + - [ ] M:SkiaSharp.SKColorSpaceXyz.GetHashCode + - [ ] M:SkiaSharp.SKColorSpaceXyz.Invert + - [ ] M:SkiaSharp.SKColorSpaceXyz.op_Equality(SkiaSharp.SKColorSpaceXyz,SkiaSharp.SKColorSpaceXyz) + - [ ] M:SkiaSharp.SKColorSpaceXyz.op_Inequality(SkiaSharp.SKColorSpaceXyz,SkiaSharp.SKColorSpaceXyz) + - [ ] P:SkiaSharp.SKColorSpaceXyz.AdobeRgb + - [ ] P:SkiaSharp.SKColorSpaceXyz.Dcip3 + - [ ] P:SkiaSharp.SKColorSpaceXyz.DisplayP3 + - [ ] P:SkiaSharp.SKColorSpaceXyz.Item(System.Int32,System.Int32) + - [ ] P:SkiaSharp.SKColorSpaceXyz.Rec2020 + - [ ] P:SkiaSharp.SKColorSpaceXyz.Srgb + - [ ] P:SkiaSharp.SKColorSpaceXyz.Values + - [ ] P:SkiaSharp.SKColorSpaceXyz.Xyz +- [ ] SkiaSharp.SKColorTable + - [ ] F:SkiaSharp.SKColorTable.MaxLength + - [ ] M:SkiaSharp.SKColorTable.#ctor + - [ ] M:SkiaSharp.SKColorTable.#ctor(SkiaSharp.SKColor[],System.Int32) + - [ ] M:SkiaSharp.SKColorTable.#ctor(SkiaSharp.SKColor[]) + - [ ] M:SkiaSharp.SKColorTable.#ctor(SkiaSharp.SKPMColor[],System.Int32) + - [ ] M:SkiaSharp.SKColorTable.#ctor(SkiaSharp.SKPMColor[]) + - [ ] M:SkiaSharp.SKColorTable.#ctor(System.Int32) + - [ ] M:SkiaSharp.SKColorTable.Dispose(System.Boolean) + - [ ] M:SkiaSharp.SKColorTable.GetUnPreMultipliedColor(System.Int32) + - [ ] M:SkiaSharp.SKColorTable.ReadColors + - [ ] P:SkiaSharp.SKColorTable.Colors + - [ ] P:SkiaSharp.SKColorTable.Count + - [ ] P:SkiaSharp.SKColorTable.Item(System.Int32) + - [ ] P:SkiaSharp.SKColorTable.UnPreMultipledColors +- [ ] SkiaSharp.SKColorType + - [ ] F:SkiaSharp.SKColorType.Alpha16 + - [ ] F:SkiaSharp.SKColorType.Alpha8 + - [ ] F:SkiaSharp.SKColorType.AlphaF16 + - [ ] F:SkiaSharp.SKColorType.Argb4444 + - [ ] F:SkiaSharp.SKColorType.Bgr101010x + - [ ] F:SkiaSharp.SKColorType.Bgra1010102 + - [ ] F:SkiaSharp.SKColorType.Bgra8888 + - [ ] F:SkiaSharp.SKColorType.Gray8 + - [ ] F:SkiaSharp.SKColorType.Index8 + - [ ] F:SkiaSharp.SKColorType.Rg1616 + - [ ] F:SkiaSharp.SKColorType.Rg88 + - [ ] F:SkiaSharp.SKColorType.Rgb101010x + - [ ] F:SkiaSharp.SKColorType.Rgb565 + - [ ] F:SkiaSharp.SKColorType.Rgb888x + - [ ] F:SkiaSharp.SKColorType.Rgba1010102 + - [ ] F:SkiaSharp.SKColorType.Rgba16161616 + - [ ] F:SkiaSharp.SKColorType.Rgba8888 + - [ ] F:SkiaSharp.SKColorType.RgbaF16 + - [ ] F:SkiaSharp.SKColorType.RgbaF16Clamped + - [ ] F:SkiaSharp.SKColorType.RgbaF32 + - [ ] F:SkiaSharp.SKColorType.RgF16 + - [ ] F:SkiaSharp.SKColorType.Unknown +- [ ] SkiaSharp.SKCropRectFlags + - [ ] F:SkiaSharp.SKCropRectFlags.HasAll + - [ ] F:SkiaSharp.SKCropRectFlags.HasHeight + - [ ] F:SkiaSharp.SKCropRectFlags.HasLeft + - [ ] F:SkiaSharp.SKCropRectFlags.HasNone + - [ ] F:SkiaSharp.SKCropRectFlags.HasTop + - [ ] F:SkiaSharp.SKCropRectFlags.HasWidth +- [ ] SkiaSharp.SKData + - [ ] M:SkiaSharp.SKData.AsSpan + - [ ] M:SkiaSharp.SKData.AsStream + - [ ] M:SkiaSharp.SKData.AsStream(System.Boolean) + - [ ] M:SkiaSharp.SKData.Create(SkiaSharp.SKStream,System.Int32) + - [ ] M:SkiaSharp.SKData.Create(SkiaSharp.SKStream,System.Int64) + - [ ] M:SkiaSharp.SKData.Create(SkiaSharp.SKStream,System.UInt64) + - [ ] M:SkiaSharp.SKData.Create(SkiaSharp.SKStream) + - [ ] M:SkiaSharp.SKData.Create(System.Int32) + - [ ] M:SkiaSharp.SKData.Create(System.Int64) + - [ ] M:SkiaSharp.SKData.Create(System.IntPtr,System.Int32,SkiaSharp.SKDataReleaseDelegate,System.Object) + - [ ] M:SkiaSharp.SKData.Create(System.IntPtr,System.Int32,SkiaSharp.SKDataReleaseDelegate) + - [ ] M:SkiaSharp.SKData.Create(System.IntPtr,System.Int32) + - [ ] M:SkiaSharp.SKData.Create(System.IO.Stream,System.Int32) + - [ ] M:SkiaSharp.SKData.Create(System.IO.Stream,System.Int64) + - [ ] M:SkiaSharp.SKData.Create(System.IO.Stream,System.UInt64) + - [ ] M:SkiaSharp.SKData.Create(System.IO.Stream) + - [ ] M:SkiaSharp.SKData.Create(System.String) + - [ ] M:SkiaSharp.SKData.Create(System.UInt64) + - [ ] M:SkiaSharp.SKData.CreateCopy(System.Byte[],System.UInt64) + - [ ] M:SkiaSharp.SKData.CreateCopy(System.Byte[]) + - [ ] M:SkiaSharp.SKData.CreateCopy(System.IntPtr,System.Int32) + - [ ] M:SkiaSharp.SKData.CreateCopy(System.IntPtr,System.Int64) + - [ ] M:SkiaSharp.SKData.CreateCopy(System.IntPtr,System.UInt64) + - [ ] M:SkiaSharp.SKData.CreateCopy(System.ReadOnlySpan{System.Byte}) + - [ ] M:SkiaSharp.SKData.Dispose(System.Boolean) + - [ ] M:SkiaSharp.SKData.SaveTo(System.IO.Stream) + - [ ] M:SkiaSharp.SKData.Subset(System.UInt64,System.UInt64) + - [ ] M:SkiaSharp.SKData.ToArray + - [ ] P:SkiaSharp.SKData.Data + - [ ] P:SkiaSharp.SKData.Empty + - [ ] P:SkiaSharp.SKData.IsEmpty + - [ ] P:SkiaSharp.SKData.Size + - [ ] P:SkiaSharp.SKData.Span +- [ ] SkiaSharp.SKDataReleaseDelegate +- [ ] SkiaSharp.SKDisplacementMapEffectChannelSelectorType + - [ ] F:SkiaSharp.SKDisplacementMapEffectChannelSelectorType.A + - [ ] F:SkiaSharp.SKDisplacementMapEffectChannelSelectorType.B + - [ ] F:SkiaSharp.SKDisplacementMapEffectChannelSelectorType.G + - [ ] F:SkiaSharp.SKDisplacementMapEffectChannelSelectorType.R + - [ ] F:SkiaSharp.SKDisplacementMapEffectChannelSelectorType.Unknown +- [ ] SkiaSharp.SKDocument + - [ ] F:SkiaSharp.SKDocument.DefaultRasterDpi + - [ ] M:SkiaSharp.SKDocument.Abort + - [ ] M:SkiaSharp.SKDocument.BeginPage(System.Single,System.Single,SkiaSharp.SKRect) + - [ ] M:SkiaSharp.SKDocument.BeginPage(System.Single,System.Single) + - [ ] M:SkiaSharp.SKDocument.Close + - [ ] M:SkiaSharp.SKDocument.CreatePdf(SkiaSharp.SKWStream,SkiaSharp.SKDocumentPdfMetadata,System.Single) + - [ ] M:SkiaSharp.SKDocument.CreatePdf(SkiaSharp.SKWStream,SkiaSharp.SKDocumentPdfMetadata) + - [ ] M:SkiaSharp.SKDocument.CreatePdf(SkiaSharp.SKWStream,System.Single) + - [ ] M:SkiaSharp.SKDocument.CreatePdf(SkiaSharp.SKWStream) + - [ ] M:SkiaSharp.SKDocument.CreatePdf(System.IO.Stream,SkiaSharp.SKDocumentPdfMetadata) + - [ ] M:SkiaSharp.SKDocument.CreatePdf(System.IO.Stream,System.Single) + - [ ] M:SkiaSharp.SKDocument.CreatePdf(System.IO.Stream) + - [ ] M:SkiaSharp.SKDocument.CreatePdf(System.String,SkiaSharp.SKDocumentPdfMetadata) + - [ ] M:SkiaSharp.SKDocument.CreatePdf(System.String,System.Single) + - [ ] M:SkiaSharp.SKDocument.CreatePdf(System.String) + - [ ] M:SkiaSharp.SKDocument.CreateXps(SkiaSharp.SKWStream,System.Single) + - [ ] M:SkiaSharp.SKDocument.CreateXps(SkiaSharp.SKWStream) + - [ ] M:SkiaSharp.SKDocument.CreateXps(System.IO.Stream,System.Single) + - [ ] M:SkiaSharp.SKDocument.CreateXps(System.IO.Stream) + - [ ] M:SkiaSharp.SKDocument.CreateXps(System.String,System.Single) + - [ ] M:SkiaSharp.SKDocument.CreateXps(System.String) + - [ ] M:SkiaSharp.SKDocument.Dispose(System.Boolean) + - [ ] M:SkiaSharp.SKDocument.EndPage +- [ ] SkiaSharp.SKDocumentPdfMetadata + - [ ] F:SkiaSharp.SKDocumentPdfMetadata.Default + - [ ] F:SkiaSharp.SKDocumentPdfMetadata.DefaultEncodingQuality + - [ ] F:SkiaSharp.SKDocumentPdfMetadata.DefaultRasterDpi + - [ ] M:SkiaSharp.SKDocumentPdfMetadata.#ctor(System.Int32) + - [ ] M:SkiaSharp.SKDocumentPdfMetadata.#ctor(System.Single,System.Int32) + - [ ] M:SkiaSharp.SKDocumentPdfMetadata.#ctor(System.Single) + - [ ] M:SkiaSharp.SKDocumentPdfMetadata.Equals(SkiaSharp.SKDocumentPdfMetadata) + - [ ] M:SkiaSharp.SKDocumentPdfMetadata.Equals(System.Object) + - [ ] M:SkiaSharp.SKDocumentPdfMetadata.GetHashCode + - [ ] M:SkiaSharp.SKDocumentPdfMetadata.op_Equality(SkiaSharp.SKDocumentPdfMetadata,SkiaSharp.SKDocumentPdfMetadata) + - [ ] M:SkiaSharp.SKDocumentPdfMetadata.op_Inequality(SkiaSharp.SKDocumentPdfMetadata,SkiaSharp.SKDocumentPdfMetadata) + - [ ] P:SkiaSharp.SKDocumentPdfMetadata.Author + - [ ] P:SkiaSharp.SKDocumentPdfMetadata.Creation + - [ ] P:SkiaSharp.SKDocumentPdfMetadata.Creator + - [ ] P:SkiaSharp.SKDocumentPdfMetadata.EncodingQuality + - [ ] P:SkiaSharp.SKDocumentPdfMetadata.Keywords + - [ ] P:SkiaSharp.SKDocumentPdfMetadata.Modified + - [ ] P:SkiaSharp.SKDocumentPdfMetadata.PdfA + - [ ] P:SkiaSharp.SKDocumentPdfMetadata.Producer + - [ ] P:SkiaSharp.SKDocumentPdfMetadata.RasterDpi + - [ ] P:SkiaSharp.SKDocumentPdfMetadata.Subject + - [ ] P:SkiaSharp.SKDocumentPdfMetadata.Title +- [ ] SkiaSharp.SKDrawable + - [ ] M:SkiaSharp.SKDrawable.#ctor + - [ ] M:SkiaSharp.SKDrawable.#ctor(System.Boolean) + - [ ] M:SkiaSharp.SKDrawable.Dispose(System.Boolean) + - [ ] M:SkiaSharp.SKDrawable.DisposeNative + - [ ] M:SkiaSharp.SKDrawable.Draw(SkiaSharp.SKCanvas,SkiaSharp.SKMatrix@) + - [ ] M:SkiaSharp.SKDrawable.Draw(SkiaSharp.SKCanvas,System.Single,System.Single) + - [ ] M:SkiaSharp.SKDrawable.NotifyDrawingChanged + - [ ] M:SkiaSharp.SKDrawable.OnDraw(SkiaSharp.SKCanvas) + - [ ] M:SkiaSharp.SKDrawable.OnGetBounds + - [ ] M:SkiaSharp.SKDrawable.OnSnapshot + - [ ] M:SkiaSharp.SKDrawable.Snapshot + - [ ] P:SkiaSharp.SKDrawable.Bounds + - [ ] P:SkiaSharp.SKDrawable.GenerationId +- [ ] SkiaSharp.SKDropShadowImageFilterShadowMode + - [ ] F:SkiaSharp.SKDropShadowImageFilterShadowMode.DrawShadowAndForeground + - [ ] F:SkiaSharp.SKDropShadowImageFilterShadowMode.DrawShadowOnly +- [ ] SkiaSharp.SKDynamicMemoryWStream + - [ ] M:SkiaSharp.SKDynamicMemoryWStream.#ctor + - [ ] M:SkiaSharp.SKDynamicMemoryWStream.CopyTo(SkiaSharp.SKWStream) + - [ ] M:SkiaSharp.SKDynamicMemoryWStream.CopyTo(System.IntPtr) + - [ ] M:SkiaSharp.SKDynamicMemoryWStream.CopyTo(System.IO.Stream) + - [ ] M:SkiaSharp.SKDynamicMemoryWStream.CopyTo(System.Span{System.Byte}) + - [ ] M:SkiaSharp.SKDynamicMemoryWStream.CopyToData + - [ ] M:SkiaSharp.SKDynamicMemoryWStream.DetachAsData + - [ ] M:SkiaSharp.SKDynamicMemoryWStream.DetachAsStream + - [ ] M:SkiaSharp.SKDynamicMemoryWStream.Dispose(System.Boolean) + - [ ] M:SkiaSharp.SKDynamicMemoryWStream.DisposeNative +- [ ] SkiaSharp.SKEncodedImageFormat + - [ ] F:SkiaSharp.SKEncodedImageFormat.Astc + - [ ] F:SkiaSharp.SKEncodedImageFormat.Avif + - [ ] F:SkiaSharp.SKEncodedImageFormat.Bmp + - [ ] F:SkiaSharp.SKEncodedImageFormat.Dng + - [ ] F:SkiaSharp.SKEncodedImageFormat.Gif + - [ ] F:SkiaSharp.SKEncodedImageFormat.Heif + - [ ] F:SkiaSharp.SKEncodedImageFormat.Ico + - [ ] F:SkiaSharp.SKEncodedImageFormat.Jpeg + - [ ] F:SkiaSharp.SKEncodedImageFormat.Ktx + - [ ] F:SkiaSharp.SKEncodedImageFormat.Pkm + - [ ] F:SkiaSharp.SKEncodedImageFormat.Png + - [ ] F:SkiaSharp.SKEncodedImageFormat.Wbmp + - [ ] F:SkiaSharp.SKEncodedImageFormat.Webp +- [ ] SkiaSharp.SKEncodedInfo + - [ ] M:SkiaSharp.SKEncodedInfo.#ctor(SkiaSharp.SKEncodedInfoColor,SkiaSharp.SKEncodedInfoAlpha,System.Byte) + - [ ] M:SkiaSharp.SKEncodedInfo.#ctor(SkiaSharp.SKEncodedInfoColor) + - [ ] P:SkiaSharp.SKEncodedInfo.Alpha + - [ ] P:SkiaSharp.SKEncodedInfo.BitsPerComponent + - [ ] P:SkiaSharp.SKEncodedInfo.BitsPerPixel + - [ ] P:SkiaSharp.SKEncodedInfo.Color +- [ ] SkiaSharp.SKEncodedInfoAlpha + - [ ] F:SkiaSharp.SKEncodedInfoAlpha.Binary + - [ ] F:SkiaSharp.SKEncodedInfoAlpha.Opaque + - [ ] F:SkiaSharp.SKEncodedInfoAlpha.Unpremul +- [ ] SkiaSharp.SKEncodedInfoColor + - [ ] F:SkiaSharp.SKEncodedInfoColor.Bgr + - [ ] F:SkiaSharp.SKEncodedInfoColor.Bgra + - [ ] F:SkiaSharp.SKEncodedInfoColor.Bgrx + - [ ] F:SkiaSharp.SKEncodedInfoColor.Gray + - [ ] F:SkiaSharp.SKEncodedInfoColor.GrayAlpha + - [ ] F:SkiaSharp.SKEncodedInfoColor.InvertedCmyk + - [ ] F:SkiaSharp.SKEncodedInfoColor.Palette + - [ ] F:SkiaSharp.SKEncodedInfoColor.Rgb + - [ ] F:SkiaSharp.SKEncodedInfoColor.Rgba + - [ ] F:SkiaSharp.SKEncodedInfoColor.Ycck + - [ ] F:SkiaSharp.SKEncodedInfoColor.Yuv + - [ ] F:SkiaSharp.SKEncodedInfoColor.Yuva +- [ ] SkiaSharp.SKEncodedOrigin + - [ ] F:SkiaSharp.SKEncodedOrigin.BottomLeft + - [ ] F:SkiaSharp.SKEncodedOrigin.BottomRight + - [ ] F:SkiaSharp.SKEncodedOrigin.Default + - [ ] F:SkiaSharp.SKEncodedOrigin.LeftBottom + - [ ] F:SkiaSharp.SKEncodedOrigin.LeftTop + - [ ] F:SkiaSharp.SKEncodedOrigin.RightBottom + - [ ] F:SkiaSharp.SKEncodedOrigin.RightTop + - [ ] F:SkiaSharp.SKEncodedOrigin.TopLeft + - [ ] F:SkiaSharp.SKEncodedOrigin.TopRight +- [ ] SkiaSharp.SKEncoding + - [ ] F:SkiaSharp.SKEncoding.Utf16 + - [ ] F:SkiaSharp.SKEncoding.Utf32 + - [ ] F:SkiaSharp.SKEncoding.Utf8 +- [ ] SkiaSharp.SKFileStream + - [ ] M:SkiaSharp.SKFileStream.#ctor(System.String) + - [ ] M:SkiaSharp.SKFileStream.Dispose(System.Boolean) + - [ ] M:SkiaSharp.SKFileStream.DisposeNative + - [ ] M:SkiaSharp.SKFileStream.IsPathSupported(System.String) + - [ ] M:SkiaSharp.SKFileStream.OpenStream(System.String) + - [ ] P:SkiaSharp.SKFileStream.IsValid +- [ ] SkiaSharp.SKFileWStream + - [ ] M:SkiaSharp.SKFileWStream.#ctor(System.String) + - [ ] M:SkiaSharp.SKFileWStream.Dispose(System.Boolean) + - [ ] M:SkiaSharp.SKFileWStream.DisposeNative + - [ ] M:SkiaSharp.SKFileWStream.IsPathSupported(System.String) + - [ ] M:SkiaSharp.SKFileWStream.OpenStream(System.String) + - [ ] P:SkiaSharp.SKFileWStream.IsValid +- [ ] SkiaSharp.SKFilterQuality + - [ ] F:SkiaSharp.SKFilterQuality.High + - [ ] F:SkiaSharp.SKFilterQuality.Low + - [ ] F:SkiaSharp.SKFilterQuality.Medium + - [ ] F:SkiaSharp.SKFilterQuality.None +- [ ] SkiaSharp.SKFont + - [ ] M:SkiaSharp.SKFont.#ctor + - [ ] M:SkiaSharp.SKFont.#ctor(SkiaSharp.SKTypeface,System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKFont.ContainsGlyph(System.Int32) + - [ ] M:SkiaSharp.SKFont.ContainsGlyphs(System.IntPtr,System.Int32,SkiaSharp.SKTextEncoding) + - [ ] M:SkiaSharp.SKFont.ContainsGlyphs(System.ReadOnlySpan{System.Byte},SkiaSharp.SKTextEncoding) + - [ ] M:SkiaSharp.SKFont.ContainsGlyphs(System.ReadOnlySpan{System.Char}) + - [ ] M:SkiaSharp.SKFont.ContainsGlyphs(System.ReadOnlySpan{System.Int32}) + - [ ] M:SkiaSharp.SKFont.ContainsGlyphs(System.String) + - [ ] M:SkiaSharp.SKFont.CountGlyphs(System.IntPtr,System.Int32,SkiaSharp.SKTextEncoding) + - [ ] M:SkiaSharp.SKFont.CountGlyphs(System.ReadOnlySpan{System.Byte},SkiaSharp.SKTextEncoding) + - [ ] M:SkiaSharp.SKFont.CountGlyphs(System.ReadOnlySpan{System.Char}) + - [ ] M:SkiaSharp.SKFont.CountGlyphs(System.String) + - [ ] M:SkiaSharp.SKFont.DisposeNative + - [ ] M:SkiaSharp.SKFont.GetFontMetrics(SkiaSharp.SKFontMetrics@) + - [ ] M:SkiaSharp.SKFont.GetGlyph(System.Int32) + - [ ] M:SkiaSharp.SKFont.GetGlyphOffsets(System.ReadOnlySpan{System.UInt16},System.Span{System.Single},System.Single) + - [ ] M:SkiaSharp.SKFont.GetGlyphPath(System.UInt16) + - [ ] M:SkiaSharp.SKFont.GetGlyphPaths(System.ReadOnlySpan{System.UInt16},SkiaSharp.SKGlyphPathDelegate) + - [ ] M:SkiaSharp.SKFont.GetGlyphPositions(System.ReadOnlySpan{System.UInt16},System.Span{SkiaSharp.SKPoint},SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.SKFont.GetGlyphs(System.IntPtr,System.Int32,SkiaSharp.SKTextEncoding,System.Span{System.UInt16}) + - [ ] M:SkiaSharp.SKFont.GetGlyphs(System.ReadOnlySpan{System.Byte},SkiaSharp.SKTextEncoding,System.Span{System.UInt16}) + - [ ] M:SkiaSharp.SKFont.GetGlyphs(System.ReadOnlySpan{System.Char},System.Span{System.UInt16}) + - [ ] M:SkiaSharp.SKFont.GetGlyphs(System.ReadOnlySpan{System.Int32},System.Span{System.UInt16}) + - [ ] M:SkiaSharp.SKFont.GetGlyphs(System.String,System.Span{System.UInt16}) + - [ ] M:SkiaSharp.SKFont.GetGlyphWidths(System.ReadOnlySpan{System.UInt16},System.Span{System.Single},System.Span{SkiaSharp.SKRect},SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKFont.MeasureText(System.ReadOnlySpan{System.UInt16},SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKFont.MeasureText(System.ReadOnlySpan{System.UInt16},SkiaSharp.SKRect@,SkiaSharp.SKPaint) + - [ ] P:SkiaSharp.SKFont.BaselineSnap + - [ ] P:SkiaSharp.SKFont.Edging + - [ ] P:SkiaSharp.SKFont.EmbeddedBitmaps + - [ ] P:SkiaSharp.SKFont.Embolden + - [ ] P:SkiaSharp.SKFont.ForceAutoHinting + - [ ] P:SkiaSharp.SKFont.Hinting + - [ ] P:SkiaSharp.SKFont.LinearMetrics + - [ ] P:SkiaSharp.SKFont.Metrics + - [ ] P:SkiaSharp.SKFont.ScaleX + - [ ] P:SkiaSharp.SKFont.Size + - [ ] P:SkiaSharp.SKFont.SkewX + - [ ] P:SkiaSharp.SKFont.Spacing + - [ ] P:SkiaSharp.SKFont.Subpixel + - [ ] P:SkiaSharp.SKFont.Typeface +- [ ] SkiaSharp.SKFontEdging + - [ ] F:SkiaSharp.SKFontEdging.Alias + - [ ] F:SkiaSharp.SKFontEdging.Antialias + - [ ] F:SkiaSharp.SKFontEdging.SubpixelAntialias +- [ ] SkiaSharp.SKFontHinting + - [ ] F:SkiaSharp.SKFontHinting.Full + - [ ] F:SkiaSharp.SKFontHinting.None + - [ ] F:SkiaSharp.SKFontHinting.Normal + - [ ] F:SkiaSharp.SKFontHinting.Slight +- [ ] SkiaSharp.SKFontManager + - [ ] M:SkiaSharp.SKFontManager.CreateDefault + - [ ] M:SkiaSharp.SKFontManager.CreateTypeface(SkiaSharp.SKData,System.Int32) + - [ ] M:SkiaSharp.SKFontManager.CreateTypeface(SkiaSharp.SKStreamAsset,System.Int32) + - [ ] M:SkiaSharp.SKFontManager.CreateTypeface(System.IO.Stream,System.Int32) + - [ ] M:SkiaSharp.SKFontManager.CreateTypeface(System.String,System.Int32) + - [ ] M:SkiaSharp.SKFontManager.Dispose(System.Boolean) + - [ ] M:SkiaSharp.SKFontManager.GetFamilyName(System.Int32) + - [ ] M:SkiaSharp.SKFontManager.GetFontFamilies + - [ ] M:SkiaSharp.SKFontManager.GetFontStyles(System.Int32) + - [ ] M:SkiaSharp.SKFontManager.GetFontStyles(System.String) + - [ ] M:SkiaSharp.SKFontManager.MatchCharacter(System.Char) + - [ ] M:SkiaSharp.SKFontManager.MatchCharacter(System.Int32) + - [ ] M:SkiaSharp.SKFontManager.MatchCharacter(System.String,SkiaSharp.SKFontStyle,System.String[],System.Int32) + - [ ] M:SkiaSharp.SKFontManager.MatchCharacter(System.String,SkiaSharp.SKFontStyleWeight,SkiaSharp.SKFontStyleWidth,SkiaSharp.SKFontStyleSlant,System.String[],System.Char) + - [ ] M:SkiaSharp.SKFontManager.MatchCharacter(System.String,SkiaSharp.SKFontStyleWeight,SkiaSharp.SKFontStyleWidth,SkiaSharp.SKFontStyleSlant,System.String[],System.Int32) + - [ ] M:SkiaSharp.SKFontManager.MatchCharacter(System.String,System.Char) + - [ ] M:SkiaSharp.SKFontManager.MatchCharacter(System.String,System.Int32,System.Int32,SkiaSharp.SKFontStyleSlant,System.String[],System.Int32) + - [ ] M:SkiaSharp.SKFontManager.MatchCharacter(System.String,System.Int32) + - [ ] M:SkiaSharp.SKFontManager.MatchCharacter(System.String,System.String[],System.Char) + - [ ] M:SkiaSharp.SKFontManager.MatchCharacter(System.String,System.String[],System.Int32) + - [ ] M:SkiaSharp.SKFontManager.MatchFamily(System.String,SkiaSharp.SKFontStyle) + - [ ] M:SkiaSharp.SKFontManager.MatchFamily(System.String) + - [ ] M:SkiaSharp.SKFontManager.MatchTypeface(SkiaSharp.SKTypeface,SkiaSharp.SKFontStyle) + - [ ] P:SkiaSharp.SKFontManager.Default + - [ ] P:SkiaSharp.SKFontManager.FontFamilies + - [ ] P:SkiaSharp.SKFontManager.FontFamilyCount +- [ ] SkiaSharp.SKFontMetrics + - [ ] M:SkiaSharp.SKFontMetrics.Equals(SkiaSharp.SKFontMetrics) + - [ ] M:SkiaSharp.SKFontMetrics.Equals(System.Object) + - [ ] M:SkiaSharp.SKFontMetrics.GetHashCode + - [ ] M:SkiaSharp.SKFontMetrics.op_Equality(SkiaSharp.SKFontMetrics,SkiaSharp.SKFontMetrics) + - [ ] M:SkiaSharp.SKFontMetrics.op_Inequality(SkiaSharp.SKFontMetrics,SkiaSharp.SKFontMetrics) + - [ ] P:SkiaSharp.SKFontMetrics.Ascent + - [ ] P:SkiaSharp.SKFontMetrics.AverageCharacterWidth + - [ ] P:SkiaSharp.SKFontMetrics.Bottom + - [ ] P:SkiaSharp.SKFontMetrics.CapHeight + - [ ] P:SkiaSharp.SKFontMetrics.Descent + - [ ] P:SkiaSharp.SKFontMetrics.Leading + - [ ] P:SkiaSharp.SKFontMetrics.MaxCharacterWidth + - [ ] P:SkiaSharp.SKFontMetrics.StrikeoutPosition + - [ ] P:SkiaSharp.SKFontMetrics.StrikeoutThickness + - [ ] P:SkiaSharp.SKFontMetrics.Top + - [ ] P:SkiaSharp.SKFontMetrics.UnderlinePosition + - [ ] P:SkiaSharp.SKFontMetrics.UnderlineThickness + - [ ] P:SkiaSharp.SKFontMetrics.XHeight + - [ ] P:SkiaSharp.SKFontMetrics.XMax + - [ ] P:SkiaSharp.SKFontMetrics.XMin +- [ ] SkiaSharp.SKFontStyle + - [ ] M:SkiaSharp.SKFontStyle.#ctor + - [ ] M:SkiaSharp.SKFontStyle.#ctor(SkiaSharp.SKFontStyleWeight,SkiaSharp.SKFontStyleWidth,SkiaSharp.SKFontStyleSlant) + - [ ] M:SkiaSharp.SKFontStyle.#ctor(System.Int32,System.Int32,SkiaSharp.SKFontStyleSlant) + - [ ] M:SkiaSharp.SKFontStyle.Dispose(System.Boolean) + - [ ] M:SkiaSharp.SKFontStyle.DisposeNative + - [ ] P:SkiaSharp.SKFontStyle.Bold + - [ ] P:SkiaSharp.SKFontStyle.BoldItalic + - [ ] P:SkiaSharp.SKFontStyle.Italic + - [ ] P:SkiaSharp.SKFontStyle.Normal + - [ ] P:SkiaSharp.SKFontStyle.Slant + - [ ] P:SkiaSharp.SKFontStyle.Weight + - [ ] P:SkiaSharp.SKFontStyle.Width +- [ ] SkiaSharp.SKFontStyleSet + - [ ] M:SkiaSharp.SKFontStyleSet.#ctor + - [ ] M:SkiaSharp.SKFontStyleSet.CreateTypeface(SkiaSharp.SKFontStyle) + - [ ] M:SkiaSharp.SKFontStyleSet.CreateTypeface(System.Int32) + - [ ] M:SkiaSharp.SKFontStyleSet.Dispose(System.Boolean) + - [ ] M:SkiaSharp.SKFontStyleSet.GetEnumerator + - [ ] M:SkiaSharp.SKFontStyleSet.GetStyleName(System.Int32) + - [ ] M:SkiaSharp.SKFontStyleSet.System#Collections#IEnumerable#GetEnumerator + - [ ] P:SkiaSharp.SKFontStyleSet.Count + - [ ] P:SkiaSharp.SKFontStyleSet.Item(System.Int32) +- [ ] SkiaSharp.SKFontStyleSlant + - [ ] F:SkiaSharp.SKFontStyleSlant.Italic + - [ ] F:SkiaSharp.SKFontStyleSlant.Oblique + - [ ] F:SkiaSharp.SKFontStyleSlant.Upright +- [ ] SkiaSharp.SKFontStyleWeight + - [ ] F:SkiaSharp.SKFontStyleWeight.Black + - [ ] F:SkiaSharp.SKFontStyleWeight.Bold + - [ ] F:SkiaSharp.SKFontStyleWeight.ExtraBlack + - [ ] F:SkiaSharp.SKFontStyleWeight.ExtraBold + - [ ] F:SkiaSharp.SKFontStyleWeight.ExtraLight + - [ ] F:SkiaSharp.SKFontStyleWeight.Invisible + - [ ] F:SkiaSharp.SKFontStyleWeight.Light + - [ ] F:SkiaSharp.SKFontStyleWeight.Medium + - [ ] F:SkiaSharp.SKFontStyleWeight.Normal + - [ ] F:SkiaSharp.SKFontStyleWeight.SemiBold + - [ ] F:SkiaSharp.SKFontStyleWeight.Thin +- [ ] SkiaSharp.SKFontStyleWidth + - [ ] F:SkiaSharp.SKFontStyleWidth.Condensed + - [ ] F:SkiaSharp.SKFontStyleWidth.Expanded + - [ ] F:SkiaSharp.SKFontStyleWidth.ExtraCondensed + - [ ] F:SkiaSharp.SKFontStyleWidth.ExtraExpanded + - [ ] F:SkiaSharp.SKFontStyleWidth.Normal + - [ ] F:SkiaSharp.SKFontStyleWidth.SemiCondensed + - [ ] F:SkiaSharp.SKFontStyleWidth.SemiExpanded + - [ ] F:SkiaSharp.SKFontStyleWidth.UltraCondensed + - [ ] F:SkiaSharp.SKFontStyleWidth.UltraExpanded +- [ ] SkiaSharp.SKFrontBufferedManagedStream + - [ ] M:SkiaSharp.SKFrontBufferedManagedStream.#ctor(SkiaSharp.SKStream,System.Int32,System.Boolean) + - [ ] M:SkiaSharp.SKFrontBufferedManagedStream.#ctor(SkiaSharp.SKStream,System.Int32) + - [ ] M:SkiaSharp.SKFrontBufferedManagedStream.#ctor(System.IO.Stream,System.Int32,System.Boolean) + - [ ] M:SkiaSharp.SKFrontBufferedManagedStream.#ctor(System.IO.Stream,System.Int32) + - [ ] M:SkiaSharp.SKFrontBufferedManagedStream.Dispose(System.Boolean) + - [ ] M:SkiaSharp.SKFrontBufferedManagedStream.DisposeManaged + - [ ] M:SkiaSharp.SKFrontBufferedManagedStream.OnCreateNew + - [ ] M:SkiaSharp.SKFrontBufferedManagedStream.OnGetLength + - [ ] M:SkiaSharp.SKFrontBufferedManagedStream.OnGetPosition + - [ ] M:SkiaSharp.SKFrontBufferedManagedStream.OnHasLength + - [ ] M:SkiaSharp.SKFrontBufferedManagedStream.OnHasPosition + - [ ] M:SkiaSharp.SKFrontBufferedManagedStream.OnIsAtEnd + - [ ] M:SkiaSharp.SKFrontBufferedManagedStream.OnMove(System.Int32) + - [ ] M:SkiaSharp.SKFrontBufferedManagedStream.OnPeek(System.IntPtr,System.IntPtr) + - [ ] M:SkiaSharp.SKFrontBufferedManagedStream.OnRead(System.IntPtr,System.IntPtr) + - [ ] M:SkiaSharp.SKFrontBufferedManagedStream.OnRewind + - [ ] M:SkiaSharp.SKFrontBufferedManagedStream.OnSeek(System.IntPtr) +- [ ] SkiaSharp.SKFrontBufferedStream + - [ ] F:SkiaSharp.SKFrontBufferedStream.DefaultBufferSize + - [ ] M:SkiaSharp.SKFrontBufferedStream.#ctor(System.IO.Stream,System.Boolean) + - [ ] M:SkiaSharp.SKFrontBufferedStream.#ctor(System.IO.Stream,System.Int64,System.Boolean) + - [ ] M:SkiaSharp.SKFrontBufferedStream.#ctor(System.IO.Stream,System.Int64) + - [ ] M:SkiaSharp.SKFrontBufferedStream.#ctor(System.IO.Stream) + - [ ] M:SkiaSharp.SKFrontBufferedStream.Dispose(System.Boolean) + - [ ] M:SkiaSharp.SKFrontBufferedStream.Flush + - [ ] M:SkiaSharp.SKFrontBufferedStream.Read(System.Byte[],System.Int32,System.Int32) + - [ ] M:SkiaSharp.SKFrontBufferedStream.Seek(System.Int64,System.IO.SeekOrigin) + - [ ] M:SkiaSharp.SKFrontBufferedStream.SetLength(System.Int64) + - [ ] M:SkiaSharp.SKFrontBufferedStream.Write(System.Byte[],System.Int32,System.Int32) + - [ ] P:SkiaSharp.SKFrontBufferedStream.CanRead + - [ ] P:SkiaSharp.SKFrontBufferedStream.CanSeek + - [ ] P:SkiaSharp.SKFrontBufferedStream.CanWrite + - [ ] P:SkiaSharp.SKFrontBufferedStream.Length + - [ ] P:SkiaSharp.SKFrontBufferedStream.Position +- [ ] SkiaSharp.SKGlyphPathDelegate +- [ ] SkiaSharp.SKGraphics + - [ ] M:SkiaSharp.SKGraphics.DumpMemoryStatistics(SkiaSharp.SKTraceMemoryDump) + - [ ] M:SkiaSharp.SKGraphics.GetFontCacheCountLimit + - [ ] M:SkiaSharp.SKGraphics.GetFontCacheCountUsed + - [ ] M:SkiaSharp.SKGraphics.GetFontCacheLimit + - [ ] M:SkiaSharp.SKGraphics.GetFontCachePointSizeLimit + - [ ] M:SkiaSharp.SKGraphics.GetFontCacheUsed + - [ ] M:SkiaSharp.SKGraphics.GetResourceCacheSingleAllocationByteLimit + - [ ] M:SkiaSharp.SKGraphics.GetResourceCacheTotalByteLimit + - [ ] M:SkiaSharp.SKGraphics.GetResourceCacheTotalBytesUsed + - [ ] M:SkiaSharp.SKGraphics.Init + - [ ] M:SkiaSharp.SKGraphics.PurgeAllCaches + - [ ] M:SkiaSharp.SKGraphics.PurgeFontCache + - [ ] M:SkiaSharp.SKGraphics.PurgeResourceCache + - [ ] M:SkiaSharp.SKGraphics.SetFontCacheCountLimit(System.Int32) + - [ ] M:SkiaSharp.SKGraphics.SetFontCacheLimit(System.Int64) + - [ ] M:SkiaSharp.SKGraphics.SetFontCachePointSizeLimit(System.Int32) + - [ ] M:SkiaSharp.SKGraphics.SetResourceCacheSingleAllocationByteLimit(System.Int64) + - [ ] M:SkiaSharp.SKGraphics.SetResourceCacheTotalByteLimit(System.Int64) +- [ ] SkiaSharp.SKHighContrastConfig + - [ ] F:SkiaSharp.SKHighContrastConfig.Default + - [ ] M:SkiaSharp.SKHighContrastConfig.#ctor(System.Boolean,SkiaSharp.SKHighContrastConfigInvertStyle,System.Single) + - [ ] M:SkiaSharp.SKHighContrastConfig.Equals(SkiaSharp.SKHighContrastConfig) + - [ ] M:SkiaSharp.SKHighContrastConfig.Equals(System.Object) + - [ ] M:SkiaSharp.SKHighContrastConfig.GetHashCode + - [ ] M:SkiaSharp.SKHighContrastConfig.op_Equality(SkiaSharp.SKHighContrastConfig,SkiaSharp.SKHighContrastConfig) + - [ ] M:SkiaSharp.SKHighContrastConfig.op_Inequality(SkiaSharp.SKHighContrastConfig,SkiaSharp.SKHighContrastConfig) + - [ ] P:SkiaSharp.SKHighContrastConfig.Contrast + - [ ] P:SkiaSharp.SKHighContrastConfig.Grayscale + - [ ] P:SkiaSharp.SKHighContrastConfig.InvertStyle + - [ ] P:SkiaSharp.SKHighContrastConfig.IsValid +- [ ] SkiaSharp.SKHighContrastConfigInvertStyle + - [ ] F:SkiaSharp.SKHighContrastConfigInvertStyle.InvertBrightness + - [ ] F:SkiaSharp.SKHighContrastConfigInvertStyle.InvertLightness + - [ ] F:SkiaSharp.SKHighContrastConfigInvertStyle.NoInvert +- [ ] SkiaSharp.SKHorizontalRunBuffer + - [ ] M:SkiaSharp.SKHorizontalRunBuffer.GetPositionSpan + - [ ] M:SkiaSharp.SKHorizontalRunBuffer.SetPositions(System.ReadOnlySpan{System.Single}) +- [ ] SkiaSharp.SkiaExtensions + - [ ] M:SkiaSharp.SkiaExtensions.GetAlphaType(SkiaSharp.SKColorType,SkiaSharp.SKAlphaType) + - [ ] M:SkiaSharp.SkiaExtensions.GetBytesPerPixel(SkiaSharp.SKColorType) + - [ ] M:SkiaSharp.SkiaExtensions.IsBgr(SkiaSharp.SKPixelGeometry) + - [ ] M:SkiaSharp.SkiaExtensions.IsHorizontal(SkiaSharp.SKPixelGeometry) + - [ ] M:SkiaSharp.SkiaExtensions.IsRgb(SkiaSharp.SKPixelGeometry) + - [ ] M:SkiaSharp.SkiaExtensions.IsVertical(SkiaSharp.SKPixelGeometry) + - [ ] M:SkiaSharp.SkiaExtensions.ToColorChannel(SkiaSharp.SKDisplacementMapEffectChannelSelectorType) + - [ ] M:SkiaSharp.SkiaExtensions.ToColorSpaceTransferFn(SkiaSharp.SKColorSpaceRenderTargetGamma) + - [ ] M:SkiaSharp.SkiaExtensions.ToColorSpaceTransferFn(SkiaSharp.SKNamedGamma) + - [ ] M:SkiaSharp.SkiaExtensions.ToColorSpaceXyz(SkiaSharp.SKColorSpaceGamut) + - [ ] M:SkiaSharp.SkiaExtensions.ToColorSpaceXyz(SkiaSharp.SKMatrix44) + - [ ] M:SkiaSharp.SkiaExtensions.ToColorType(SkiaSharp.GRPixelConfig) + - [ ] M:SkiaSharp.SkiaExtensions.ToFilterQuality(SkiaSharp.SKBitmapResizeMethod) + - [ ] M:SkiaSharp.SkiaExtensions.ToGlSizedFormat(SkiaSharp.GRPixelConfig) + - [ ] M:SkiaSharp.SkiaExtensions.ToGlSizedFormat(SkiaSharp.SKColorType) + - [ ] M:SkiaSharp.SkiaExtensions.ToPixelConfig(SkiaSharp.SKColorType) + - [ ] M:SkiaSharp.SkiaExtensions.ToShaderTileMode(SkiaSharp.SKMatrixConvolutionTileMode) + - [ ] M:SkiaSharp.SkiaExtensions.ToTextEncoding(SkiaSharp.SKEncoding) +- [ ] SkiaSharp.SkiaSharpVersion + - [ ] M:SkiaSharp.SkiaSharpVersion.CheckNativeLibraryCompatible(System.Boolean) + - [ ] P:SkiaSharp.SkiaSharpVersion.Native + - [ ] P:SkiaSharp.SkiaSharpVersion.NativeMinimum +- [ ] SkiaSharp.SKImage + - [ ] M:SkiaSharp.SKImage.ApplyImageFilter(SkiaSharp.GRContext,SkiaSharp.SKImageFilter,SkiaSharp.SKRectI,SkiaSharp.SKRectI,SkiaSharp.SKRectI@,SkiaSharp.SKPointI@) + - [ ] M:SkiaSharp.SKImage.ApplyImageFilter(SkiaSharp.GRRecordingContext,SkiaSharp.SKImageFilter,SkiaSharp.SKRectI,SkiaSharp.SKRectI,SkiaSharp.SKRectI@,SkiaSharp.SKPointI@) + - [ ] M:SkiaSharp.SKImage.ApplyImageFilter(SkiaSharp.SKImageFilter,SkiaSharp.SKRectI,SkiaSharp.SKRectI,SkiaSharp.SKRectI@,SkiaSharp.SKPoint@) + - [ ] M:SkiaSharp.SKImage.ApplyImageFilter(SkiaSharp.SKImageFilter,SkiaSharp.SKRectI,SkiaSharp.SKRectI,SkiaSharp.SKRectI@,SkiaSharp.SKPointI@) + - [ ] M:SkiaSharp.SKImage.Create(SkiaSharp.SKImageInfo) + - [ ] M:SkiaSharp.SKImage.Dispose(System.Boolean) + - [ ] M:SkiaSharp.SKImage.Encode + - [ ] M:SkiaSharp.SKImage.Encode(SkiaSharp.SKEncodedImageFormat,System.Int32) + - [ ] M:SkiaSharp.SKImage.Encode(SkiaSharp.SKPixelSerializer) + - [ ] M:SkiaSharp.SKImage.FromAdoptedTexture(SkiaSharp.GRContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.SKAlphaType,SkiaSharp.SKColorSpace) + - [ ] M:SkiaSharp.SKImage.FromAdoptedTexture(SkiaSharp.GRContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.SKAlphaType) + - [ ] M:SkiaSharp.SKImage.FromAdoptedTexture(SkiaSharp.GRContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType) + - [ ] M:SkiaSharp.SKImage.FromAdoptedTexture(SkiaSharp.GRContext,SkiaSharp.GRBackendTexture,SkiaSharp.SKColorType) + - [ ] M:SkiaSharp.SKImage.FromAdoptedTexture(SkiaSharp.GRContext,SkiaSharp.GRBackendTextureDesc,SkiaSharp.SKAlphaType) + - [ ] M:SkiaSharp.SKImage.FromAdoptedTexture(SkiaSharp.GRContext,SkiaSharp.GRBackendTextureDesc) + - [ ] M:SkiaSharp.SKImage.FromAdoptedTexture(SkiaSharp.GRContext,SkiaSharp.GRGlBackendTextureDesc,SkiaSharp.SKAlphaType) + - [ ] M:SkiaSharp.SKImage.FromAdoptedTexture(SkiaSharp.GRContext,SkiaSharp.GRGlBackendTextureDesc) + - [ ] M:SkiaSharp.SKImage.FromAdoptedTexture(SkiaSharp.GRRecordingContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.SKAlphaType,SkiaSharp.SKColorSpace) + - [ ] M:SkiaSharp.SKImage.FromAdoptedTexture(SkiaSharp.GRRecordingContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.SKAlphaType) + - [ ] M:SkiaSharp.SKImage.FromAdoptedTexture(SkiaSharp.GRRecordingContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType) + - [ ] M:SkiaSharp.SKImage.FromAdoptedTexture(SkiaSharp.GRRecordingContext,SkiaSharp.GRBackendTexture,SkiaSharp.SKColorType) + - [ ] M:SkiaSharp.SKImage.FromBitmap(SkiaSharp.SKBitmap) + - [ ] M:SkiaSharp.SKImage.FromEncodedData(SkiaSharp.SKData,SkiaSharp.SKRectI) + - [ ] M:SkiaSharp.SKImage.FromEncodedData(SkiaSharp.SKData) + - [ ] M:SkiaSharp.SKImage.FromEncodedData(SkiaSharp.SKStream) + - [ ] M:SkiaSharp.SKImage.FromEncodedData(System.Byte[]) + - [ ] M:SkiaSharp.SKImage.FromEncodedData(System.IO.Stream) + - [ ] M:SkiaSharp.SKImage.FromEncodedData(System.ReadOnlySpan{System.Byte}) + - [ ] M:SkiaSharp.SKImage.FromEncodedData(System.String) + - [ ] M:SkiaSharp.SKImage.FromPicture(SkiaSharp.SKPicture,SkiaSharp.SKSizeI,SkiaSharp.SKMatrix,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKImage.FromPicture(SkiaSharp.SKPicture,SkiaSharp.SKSizeI,SkiaSharp.SKMatrix) + - [ ] M:SkiaSharp.SKImage.FromPicture(SkiaSharp.SKPicture,SkiaSharp.SKSizeI,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKImage.FromPicture(SkiaSharp.SKPicture,SkiaSharp.SKSizeI) + - [ ] M:SkiaSharp.SKImage.FromPixelCopy(SkiaSharp.SKImageInfo,SkiaSharp.SKStream,System.Int32) + - [ ] M:SkiaSharp.SKImage.FromPixelCopy(SkiaSharp.SKImageInfo,SkiaSharp.SKStream) + - [ ] M:SkiaSharp.SKImage.FromPixelCopy(SkiaSharp.SKImageInfo,System.Byte[],System.Int32) + - [ ] M:SkiaSharp.SKImage.FromPixelCopy(SkiaSharp.SKImageInfo,System.Byte[]) + - [ ] M:SkiaSharp.SKImage.FromPixelCopy(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32,SkiaSharp.SKColorTable) + - [ ] M:SkiaSharp.SKImage.FromPixelCopy(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32) + - [ ] M:SkiaSharp.SKImage.FromPixelCopy(SkiaSharp.SKImageInfo,System.IntPtr) + - [ ] M:SkiaSharp.SKImage.FromPixelCopy(SkiaSharp.SKImageInfo,System.IO.Stream,System.Int32) + - [ ] M:SkiaSharp.SKImage.FromPixelCopy(SkiaSharp.SKImageInfo,System.IO.Stream) + - [ ] M:SkiaSharp.SKImage.FromPixelCopy(SkiaSharp.SKImageInfo,System.ReadOnlySpan{System.Byte},System.Int32) + - [ ] M:SkiaSharp.SKImage.FromPixelCopy(SkiaSharp.SKImageInfo,System.ReadOnlySpan{System.Byte}) + - [ ] M:SkiaSharp.SKImage.FromPixelCopy(SkiaSharp.SKPixmap) + - [ ] M:SkiaSharp.SKImage.FromPixelData(SkiaSharp.SKImageInfo,SkiaSharp.SKData,System.Int32) + - [ ] M:SkiaSharp.SKImage.FromPixels(SkiaSharp.SKImageInfo,SkiaSharp.SKData,System.Int32) + - [ ] M:SkiaSharp.SKImage.FromPixels(SkiaSharp.SKImageInfo,SkiaSharp.SKData) + - [ ] M:SkiaSharp.SKImage.FromPixels(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32) + - [ ] M:SkiaSharp.SKImage.FromPixels(SkiaSharp.SKImageInfo,System.IntPtr) + - [ ] M:SkiaSharp.SKImage.FromPixels(SkiaSharp.SKPixmap,SkiaSharp.SKImageRasterReleaseDelegate,System.Object) + - [ ] M:SkiaSharp.SKImage.FromPixels(SkiaSharp.SKPixmap,SkiaSharp.SKImageRasterReleaseDelegate) + - [ ] M:SkiaSharp.SKImage.FromPixels(SkiaSharp.SKPixmap) + - [ ] M:SkiaSharp.SKImage.FromTexture(SkiaSharp.GRContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.SKAlphaType,SkiaSharp.SKColorSpace,SkiaSharp.SKImageTextureReleaseDelegate,System.Object) + - [ ] M:SkiaSharp.SKImage.FromTexture(SkiaSharp.GRContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.SKAlphaType,SkiaSharp.SKColorSpace,SkiaSharp.SKImageTextureReleaseDelegate) + - [ ] M:SkiaSharp.SKImage.FromTexture(SkiaSharp.GRContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.SKAlphaType,SkiaSharp.SKColorSpace) + - [ ] M:SkiaSharp.SKImage.FromTexture(SkiaSharp.GRContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.SKAlphaType) + - [ ] M:SkiaSharp.SKImage.FromTexture(SkiaSharp.GRContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType) + - [ ] M:SkiaSharp.SKImage.FromTexture(SkiaSharp.GRContext,SkiaSharp.GRBackendTexture,SkiaSharp.SKColorType) + - [ ] M:SkiaSharp.SKImage.FromTexture(SkiaSharp.GRContext,SkiaSharp.GRBackendTextureDesc,SkiaSharp.SKAlphaType,SkiaSharp.SKImageTextureReleaseDelegate,System.Object) + - [ ] M:SkiaSharp.SKImage.FromTexture(SkiaSharp.GRContext,SkiaSharp.GRBackendTextureDesc,SkiaSharp.SKAlphaType,SkiaSharp.SKImageTextureReleaseDelegate) + - [ ] M:SkiaSharp.SKImage.FromTexture(SkiaSharp.GRContext,SkiaSharp.GRBackendTextureDesc,SkiaSharp.SKAlphaType) + - [ ] M:SkiaSharp.SKImage.FromTexture(SkiaSharp.GRContext,SkiaSharp.GRBackendTextureDesc) + - [ ] M:SkiaSharp.SKImage.FromTexture(SkiaSharp.GRContext,SkiaSharp.GRGlBackendTextureDesc,SkiaSharp.SKAlphaType,SkiaSharp.SKImageTextureReleaseDelegate,System.Object) + - [ ] M:SkiaSharp.SKImage.FromTexture(SkiaSharp.GRContext,SkiaSharp.GRGlBackendTextureDesc,SkiaSharp.SKAlphaType,SkiaSharp.SKImageTextureReleaseDelegate) + - [ ] M:SkiaSharp.SKImage.FromTexture(SkiaSharp.GRContext,SkiaSharp.GRGlBackendTextureDesc,SkiaSharp.SKAlphaType) + - [ ] M:SkiaSharp.SKImage.FromTexture(SkiaSharp.GRContext,SkiaSharp.GRGlBackendTextureDesc) + - [ ] M:SkiaSharp.SKImage.FromTexture(SkiaSharp.GRRecordingContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.SKAlphaType,SkiaSharp.SKColorSpace,SkiaSharp.SKImageTextureReleaseDelegate,System.Object) + - [ ] M:SkiaSharp.SKImage.FromTexture(SkiaSharp.GRRecordingContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.SKAlphaType,SkiaSharp.SKColorSpace,SkiaSharp.SKImageTextureReleaseDelegate) + - [ ] M:SkiaSharp.SKImage.FromTexture(SkiaSharp.GRRecordingContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.SKAlphaType,SkiaSharp.SKColorSpace) + - [ ] M:SkiaSharp.SKImage.FromTexture(SkiaSharp.GRRecordingContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.SKAlphaType) + - [ ] M:SkiaSharp.SKImage.FromTexture(SkiaSharp.GRRecordingContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType) + - [ ] M:SkiaSharp.SKImage.FromTexture(SkiaSharp.GRRecordingContext,SkiaSharp.GRBackendTexture,SkiaSharp.SKColorType) + - [ ] M:SkiaSharp.SKImage.IsValid(SkiaSharp.GRContext) + - [ ] M:SkiaSharp.SKImage.IsValid(SkiaSharp.GRRecordingContext) + - [ ] M:SkiaSharp.SKImage.PeekPixels + - [ ] M:SkiaSharp.SKImage.PeekPixels(SkiaSharp.SKPixmap) + - [ ] M:SkiaSharp.SKImage.ReadPixels(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32,System.Int32,System.Int32,SkiaSharp.SKImageCachingHint) + - [ ] M:SkiaSharp.SKImage.ReadPixels(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32,System.Int32,System.Int32) + - [ ] M:SkiaSharp.SKImage.ReadPixels(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32) + - [ ] M:SkiaSharp.SKImage.ReadPixels(SkiaSharp.SKImageInfo,System.IntPtr) + - [ ] M:SkiaSharp.SKImage.ReadPixels(SkiaSharp.SKPixmap,System.Int32,System.Int32,SkiaSharp.SKImageCachingHint) + - [ ] M:SkiaSharp.SKImage.ReadPixels(SkiaSharp.SKPixmap,System.Int32,System.Int32) + - [ ] M:SkiaSharp.SKImage.ReadPixels(SkiaSharp.SKPixmap) + - [ ] M:SkiaSharp.SKImage.ScalePixels(SkiaSharp.SKPixmap,SkiaSharp.SKFilterQuality,SkiaSharp.SKImageCachingHint) + - [ ] M:SkiaSharp.SKImage.ScalePixels(SkiaSharp.SKPixmap,SkiaSharp.SKFilterQuality) + - [ ] M:SkiaSharp.SKImage.Subset(SkiaSharp.SKRectI) + - [ ] M:SkiaSharp.SKImage.ToRasterImage + - [ ] M:SkiaSharp.SKImage.ToRasterImage(System.Boolean) + - [ ] M:SkiaSharp.SKImage.ToShader + - [ ] M:SkiaSharp.SKImage.ToShader(SkiaSharp.SKShaderTileMode,SkiaSharp.SKShaderTileMode,SkiaSharp.SKMatrix) + - [ ] M:SkiaSharp.SKImage.ToShader(SkiaSharp.SKShaderTileMode,SkiaSharp.SKShaderTileMode) + - [ ] M:SkiaSharp.SKImage.ToTextureImage(SkiaSharp.GRContext,SkiaSharp.SKColorSpace) + - [ ] M:SkiaSharp.SKImage.ToTextureImage(SkiaSharp.GRContext,System.Boolean) + - [ ] M:SkiaSharp.SKImage.ToTextureImage(SkiaSharp.GRContext) + - [ ] P:SkiaSharp.SKImage.AlphaType + - [ ] P:SkiaSharp.SKImage.ColorSpace + - [ ] P:SkiaSharp.SKImage.ColorType + - [ ] P:SkiaSharp.SKImage.EncodedData + - [ ] P:SkiaSharp.SKImage.Height + - [ ] P:SkiaSharp.SKImage.Info + - [ ] P:SkiaSharp.SKImage.IsAlphaOnly + - [ ] P:SkiaSharp.SKImage.IsLazyGenerated + - [ ] P:SkiaSharp.SKImage.IsTextureBacked + - [ ] P:SkiaSharp.SKImage.UniqueId + - [ ] P:SkiaSharp.SKImage.Width +- [ ] SkiaSharp.SKImageCachingHint + - [ ] F:SkiaSharp.SKImageCachingHint.Allow + - [ ] F:SkiaSharp.SKImageCachingHint.Disallow +- [ ] SkiaSharp.SKImageFilter + - [ ] M:SkiaSharp.SKImageFilter.CreateAlphaThreshold(SkiaSharp.SKRectI,System.Single,System.Single,SkiaSharp.SKImageFilter) + - [ ] M:SkiaSharp.SKImageFilter.CreateAlphaThreshold(SkiaSharp.SKRegion,System.Single,System.Single,SkiaSharp.SKImageFilter) + - [ ] M:SkiaSharp.SKImageFilter.CreateArithmetic(System.Single,System.Single,System.Single,System.Single,System.Boolean,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter.CropRect) + - [ ] M:SkiaSharp.SKImageFilter.CreateBlendMode(SkiaSharp.SKBlendMode,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter.CropRect) + - [ ] M:SkiaSharp.SKImageFilter.CreateBlur(System.Single,System.Single,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter.CropRect) + - [ ] M:SkiaSharp.SKImageFilter.CreateBlur(System.Single,System.Single,SkiaSharp.SKShaderTileMode,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter.CropRect) + - [ ] M:SkiaSharp.SKImageFilter.CreateColorFilter(SkiaSharp.SKColorFilter,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter.CropRect) + - [ ] M:SkiaSharp.SKImageFilter.CreateCompose(SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter) + - [ ] M:SkiaSharp.SKImageFilter.CreateDilate(System.Int32,System.Int32,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter.CropRect) + - [ ] M:SkiaSharp.SKImageFilter.CreateDilate(System.Single,System.Single,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter.CropRect) + - [ ] M:SkiaSharp.SKImageFilter.CreateDisplacementMapEffect(SkiaSharp.SKColorChannel,SkiaSharp.SKColorChannel,System.Single,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter.CropRect) + - [ ] M:SkiaSharp.SKImageFilter.CreateDisplacementMapEffect(SkiaSharp.SKDisplacementMapEffectChannelSelectorType,SkiaSharp.SKDisplacementMapEffectChannelSelectorType,System.Single,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter.CropRect) + - [ ] M:SkiaSharp.SKImageFilter.CreateDistantLitDiffuse(SkiaSharp.SKPoint3,SkiaSharp.SKColor,System.Single,System.Single,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter.CropRect) + - [ ] M:SkiaSharp.SKImageFilter.CreateDistantLitSpecular(SkiaSharp.SKPoint3,SkiaSharp.SKColor,System.Single,System.Single,System.Single,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter.CropRect) + - [ ] M:SkiaSharp.SKImageFilter.CreateDropShadow(System.Single,System.Single,System.Single,System.Single,SkiaSharp.SKColor,SkiaSharp.SKDropShadowImageFilterShadowMode,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter.CropRect) + - [ ] M:SkiaSharp.SKImageFilter.CreateDropShadow(System.Single,System.Single,System.Single,System.Single,SkiaSharp.SKColor,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter.CropRect) + - [ ] M:SkiaSharp.SKImageFilter.CreateDropShadowOnly(System.Single,System.Single,System.Single,System.Single,SkiaSharp.SKColor,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter.CropRect) + - [ ] M:SkiaSharp.SKImageFilter.CreateErode(System.Int32,System.Int32,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter.CropRect) + - [ ] M:SkiaSharp.SKImageFilter.CreateErode(System.Single,System.Single,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter.CropRect) + - [ ] M:SkiaSharp.SKImageFilter.CreateImage(SkiaSharp.SKImage,SkiaSharp.SKRect,SkiaSharp.SKRect,SkiaSharp.SKFilterQuality) + - [ ] M:SkiaSharp.SKImageFilter.CreateImage(SkiaSharp.SKImage) + - [ ] M:SkiaSharp.SKImageFilter.CreateMagnifier(SkiaSharp.SKRect,System.Single,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter.CropRect) + - [ ] M:SkiaSharp.SKImageFilter.CreateMatrix(SkiaSharp.SKMatrix,SkiaSharp.SKFilterQuality,SkiaSharp.SKImageFilter) + - [ ] M:SkiaSharp.SKImageFilter.CreateMatrixConvolution(SkiaSharp.SKSizeI,System.Single[],System.Single,System.Single,SkiaSharp.SKPointI,SkiaSharp.SKMatrixConvolutionTileMode,System.Boolean,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter.CropRect) + - [ ] M:SkiaSharp.SKImageFilter.CreateMatrixConvolution(SkiaSharp.SKSizeI,System.Single[],System.Single,System.Single,SkiaSharp.SKPointI,SkiaSharp.SKShaderTileMode,System.Boolean,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter.CropRect) + - [ ] M:SkiaSharp.SKImageFilter.CreateMerge(SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter,SkiaSharp.SKBlendMode,SkiaSharp.SKImageFilter.CropRect) + - [ ] M:SkiaSharp.SKImageFilter.CreateMerge(SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter.CropRect) + - [ ] M:SkiaSharp.SKImageFilter.CreateMerge(SkiaSharp.SKImageFilter[],SkiaSharp.SKBlendMode[],SkiaSharp.SKImageFilter.CropRect) + - [ ] M:SkiaSharp.SKImageFilter.CreateMerge(SkiaSharp.SKImageFilter[],SkiaSharp.SKImageFilter.CropRect) + - [ ] M:SkiaSharp.SKImageFilter.CreateOffset(System.Single,System.Single,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter.CropRect) + - [ ] M:SkiaSharp.SKImageFilter.CreatePaint(SkiaSharp.SKPaint,SkiaSharp.SKImageFilter.CropRect) + - [ ] M:SkiaSharp.SKImageFilter.CreatePicture(SkiaSharp.SKPicture,SkiaSharp.SKRect) + - [ ] M:SkiaSharp.SKImageFilter.CreatePicture(SkiaSharp.SKPicture) + - [ ] M:SkiaSharp.SKImageFilter.CreatePictureForLocalspace(SkiaSharp.SKPicture,SkiaSharp.SKRect,SkiaSharp.SKFilterQuality) + - [ ] M:SkiaSharp.SKImageFilter.CreatePointLitDiffuse(SkiaSharp.SKPoint3,SkiaSharp.SKColor,System.Single,System.Single,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter.CropRect) + - [ ] M:SkiaSharp.SKImageFilter.CreatePointLitSpecular(SkiaSharp.SKPoint3,SkiaSharp.SKColor,System.Single,System.Single,System.Single,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter.CropRect) + - [ ] M:SkiaSharp.SKImageFilter.CreateSpotLitDiffuse(SkiaSharp.SKPoint3,SkiaSharp.SKPoint3,System.Single,System.Single,SkiaSharp.SKColor,System.Single,System.Single,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter.CropRect) + - [ ] M:SkiaSharp.SKImageFilter.CreateSpotLitSpecular(SkiaSharp.SKPoint3,SkiaSharp.SKPoint3,System.Single,System.Single,SkiaSharp.SKColor,System.Single,System.Single,System.Single,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter.CropRect) + - [ ] M:SkiaSharp.SKImageFilter.CreateTile(SkiaSharp.SKRect,SkiaSharp.SKRect,SkiaSharp.SKImageFilter) + - [ ] M:SkiaSharp.SKImageFilter.Dispose(System.Boolean) +- [ ] SkiaSharp.SKImageFilter.CropRect + - [ ] M:SkiaSharp.SKImageFilter.CropRect.#ctor + - [ ] M:SkiaSharp.SKImageFilter.CropRect.#ctor(SkiaSharp.SKRect,SkiaSharp.SKCropRectFlags) + - [ ] M:SkiaSharp.SKImageFilter.CropRect.Dispose(System.Boolean) + - [ ] M:SkiaSharp.SKImageFilter.CropRect.DisposeNative + - [ ] P:SkiaSharp.SKImageFilter.CropRect.Flags + - [ ] P:SkiaSharp.SKImageFilter.CropRect.Rect +- [ ] SkiaSharp.SKImageInfo + - [ ] F:SkiaSharp.SKImageInfo.Empty + - [ ] F:SkiaSharp.SKImageInfo.PlatformColorAlphaShift + - [ ] F:SkiaSharp.SKImageInfo.PlatformColorBlueShift + - [ ] F:SkiaSharp.SKImageInfo.PlatformColorGreenShift + - [ ] F:SkiaSharp.SKImageInfo.PlatformColorRedShift + - [ ] F:SkiaSharp.SKImageInfo.PlatformColorType + - [ ] M:SkiaSharp.SKImageInfo.#ctor(System.Int32,System.Int32,SkiaSharp.SKColorType,SkiaSharp.SKAlphaType,SkiaSharp.SKColorSpace) + - [ ] M:SkiaSharp.SKImageInfo.#ctor(System.Int32,System.Int32,SkiaSharp.SKColorType,SkiaSharp.SKAlphaType) + - [ ] M:SkiaSharp.SKImageInfo.#ctor(System.Int32,System.Int32,SkiaSharp.SKColorType) + - [ ] M:SkiaSharp.SKImageInfo.#ctor(System.Int32,System.Int32) + - [ ] M:SkiaSharp.SKImageInfo.Equals(SkiaSharp.SKImageInfo) + - [ ] M:SkiaSharp.SKImageInfo.Equals(System.Object) + - [ ] M:SkiaSharp.SKImageInfo.GetHashCode + - [ ] M:SkiaSharp.SKImageInfo.op_Equality(SkiaSharp.SKImageInfo,SkiaSharp.SKImageInfo) + - [ ] M:SkiaSharp.SKImageInfo.op_Inequality(SkiaSharp.SKImageInfo,SkiaSharp.SKImageInfo) + - [ ] M:SkiaSharp.SKImageInfo.WithAlphaType(SkiaSharp.SKAlphaType) + - [ ] M:SkiaSharp.SKImageInfo.WithColorSpace(SkiaSharp.SKColorSpace) + - [ ] M:SkiaSharp.SKImageInfo.WithColorType(SkiaSharp.SKColorType) + - [ ] M:SkiaSharp.SKImageInfo.WithSize(SkiaSharp.SKSizeI) + - [ ] M:SkiaSharp.SKImageInfo.WithSize(System.Int32,System.Int32) + - [ ] P:SkiaSharp.SKImageInfo.AlphaType + - [ ] P:SkiaSharp.SKImageInfo.BitsPerPixel + - [ ] P:SkiaSharp.SKImageInfo.BytesPerPixel + - [ ] P:SkiaSharp.SKImageInfo.BytesSize + - [ ] P:SkiaSharp.SKImageInfo.BytesSize64 + - [ ] P:SkiaSharp.SKImageInfo.ColorSpace + - [ ] P:SkiaSharp.SKImageInfo.ColorType + - [ ] P:SkiaSharp.SKImageInfo.Height + - [ ] P:SkiaSharp.SKImageInfo.IsEmpty + - [ ] P:SkiaSharp.SKImageInfo.IsOpaque + - [ ] P:SkiaSharp.SKImageInfo.Rect + - [ ] P:SkiaSharp.SKImageInfo.RowBytes + - [ ] P:SkiaSharp.SKImageInfo.RowBytes64 + - [ ] P:SkiaSharp.SKImageInfo.Size + - [ ] P:SkiaSharp.SKImageInfo.Width +- [ ] SkiaSharp.SKImageRasterReleaseDelegate +- [ ] SkiaSharp.SKImageTextureReleaseDelegate +- [ ] SkiaSharp.SKJpegEncoderAlphaOption + - [ ] F:SkiaSharp.SKJpegEncoderAlphaOption.BlendOnBlack + - [ ] F:SkiaSharp.SKJpegEncoderAlphaOption.Ignore +- [ ] SkiaSharp.SKJpegEncoderDownsample + - [ ] F:SkiaSharp.SKJpegEncoderDownsample.Downsample420 + - [ ] F:SkiaSharp.SKJpegEncoderDownsample.Downsample422 + - [ ] F:SkiaSharp.SKJpegEncoderDownsample.Downsample444 +- [ ] SkiaSharp.SKJpegEncoderOptions + - [ ] F:SkiaSharp.SKJpegEncoderOptions.Default + - [ ] M:SkiaSharp.SKJpegEncoderOptions.#ctor(System.Int32,SkiaSharp.SKJpegEncoderDownsample,SkiaSharp.SKJpegEncoderAlphaOption,SkiaSharp.SKTransferFunctionBehavior) + - [ ] M:SkiaSharp.SKJpegEncoderOptions.#ctor(System.Int32,SkiaSharp.SKJpegEncoderDownsample,SkiaSharp.SKJpegEncoderAlphaOption) + - [ ] M:SkiaSharp.SKJpegEncoderOptions.Equals(SkiaSharp.SKJpegEncoderOptions) + - [ ] M:SkiaSharp.SKJpegEncoderOptions.Equals(System.Object) + - [ ] M:SkiaSharp.SKJpegEncoderOptions.GetHashCode + - [ ] M:SkiaSharp.SKJpegEncoderOptions.op_Equality(SkiaSharp.SKJpegEncoderOptions,SkiaSharp.SKJpegEncoderOptions) + - [ ] M:SkiaSharp.SKJpegEncoderOptions.op_Inequality(SkiaSharp.SKJpegEncoderOptions,SkiaSharp.SKJpegEncoderOptions) + - [ ] P:SkiaSharp.SKJpegEncoderOptions.AlphaOption + - [ ] P:SkiaSharp.SKJpegEncoderOptions.BlendBehavior + - [ ] P:SkiaSharp.SKJpegEncoderOptions.Downsample + - [ ] P:SkiaSharp.SKJpegEncoderOptions.Quality +- [ ] SkiaSharp.SKLattice + - [ ] M:SkiaSharp.SKLattice.Equals(SkiaSharp.SKLattice) + - [ ] M:SkiaSharp.SKLattice.Equals(System.Object) + - [ ] M:SkiaSharp.SKLattice.GetHashCode + - [ ] M:SkiaSharp.SKLattice.op_Equality(SkiaSharp.SKLattice,SkiaSharp.SKLattice) + - [ ] M:SkiaSharp.SKLattice.op_Inequality(SkiaSharp.SKLattice,SkiaSharp.SKLattice) + - [ ] P:SkiaSharp.SKLattice.Bounds + - [ ] P:SkiaSharp.SKLattice.Colors + - [ ] P:SkiaSharp.SKLattice.Flags + - [ ] P:SkiaSharp.SKLattice.RectTypes + - [ ] P:SkiaSharp.SKLattice.XDivs + - [ ] P:SkiaSharp.SKLattice.YDivs +- [ ] SkiaSharp.SKLatticeFlags + - [ ] F:SkiaSharp.SKLatticeFlags.Default + - [ ] F:SkiaSharp.SKLatticeFlags.Transparent +- [ ] SkiaSharp.SKLatticeRectType + - [ ] F:SkiaSharp.SKLatticeRectType.Default + - [ ] F:SkiaSharp.SKLatticeRectType.FixedColor + - [ ] F:SkiaSharp.SKLatticeRectType.Transparent +- [ ] SkiaSharp.SKManagedPixelSerializer + - [ ] M:SkiaSharp.SKManagedPixelSerializer.#ctor + - [ ] M:SkiaSharp.SKManagedPixelSerializer.OnEncode(SkiaSharp.SKPixmap) + - [ ] M:SkiaSharp.SKManagedPixelSerializer.OnUseEncodedData(System.IntPtr,System.IntPtr) +- [ ] SkiaSharp.SKManagedStream + - [ ] M:SkiaSharp.SKManagedStream.#ctor(System.IO.Stream,System.Boolean) + - [ ] M:SkiaSharp.SKManagedStream.#ctor(System.IO.Stream) + - [ ] M:SkiaSharp.SKManagedStream.CopyTo(SkiaSharp.SKWStream) + - [ ] M:SkiaSharp.SKManagedStream.Dispose(System.Boolean) + - [ ] M:SkiaSharp.SKManagedStream.DisposeManaged + - [ ] M:SkiaSharp.SKManagedStream.OnCreateNew + - [ ] M:SkiaSharp.SKManagedStream.OnDuplicate + - [ ] M:SkiaSharp.SKManagedStream.OnFork + - [ ] M:SkiaSharp.SKManagedStream.OnGetLength + - [ ] M:SkiaSharp.SKManagedStream.OnGetPosition + - [ ] M:SkiaSharp.SKManagedStream.OnHasLength + - [ ] M:SkiaSharp.SKManagedStream.OnHasPosition + - [ ] M:SkiaSharp.SKManagedStream.OnIsAtEnd + - [ ] M:SkiaSharp.SKManagedStream.OnMove(System.Int32) + - [ ] M:SkiaSharp.SKManagedStream.OnPeek(System.IntPtr,System.IntPtr) + - [ ] M:SkiaSharp.SKManagedStream.OnRead(System.IntPtr,System.IntPtr) + - [ ] M:SkiaSharp.SKManagedStream.OnRewind + - [ ] M:SkiaSharp.SKManagedStream.OnSeek(System.IntPtr) + - [ ] M:SkiaSharp.SKManagedStream.ToMemoryStream +- [ ] SkiaSharp.SKManagedWStream + - [ ] M:SkiaSharp.SKManagedWStream.#ctor(System.IO.Stream,System.Boolean) + - [ ] M:SkiaSharp.SKManagedWStream.#ctor(System.IO.Stream) + - [ ] M:SkiaSharp.SKManagedWStream.Dispose(System.Boolean) + - [ ] M:SkiaSharp.SKManagedWStream.DisposeManaged + - [ ] M:SkiaSharp.SKManagedWStream.OnBytesWritten + - [ ] M:SkiaSharp.SKManagedWStream.OnFlush + - [ ] M:SkiaSharp.SKManagedWStream.OnWrite(System.IntPtr,System.IntPtr) +- [ ] SkiaSharp.SKMask + - [ ] M:SkiaSharp.SKMask.#ctor(SkiaSharp.SKRectI,System.UInt32,SkiaSharp.SKMaskFormat) + - [ ] M:SkiaSharp.SKMask.#ctor(System.IntPtr,SkiaSharp.SKRectI,System.UInt32,SkiaSharp.SKMaskFormat) + - [ ] M:SkiaSharp.SKMask.AllocateImage + - [ ] M:SkiaSharp.SKMask.AllocateImage(System.Int64) + - [ ] M:SkiaSharp.SKMask.ComputeImageSize + - [ ] M:SkiaSharp.SKMask.ComputeTotalImageSize + - [ ] M:SkiaSharp.SKMask.Create(System.Byte[],SkiaSharp.SKRectI,System.UInt32,SkiaSharp.SKMaskFormat) + - [ ] M:SkiaSharp.SKMask.Create(System.ReadOnlySpan{System.Byte},SkiaSharp.SKRectI,System.UInt32,SkiaSharp.SKMaskFormat) + - [ ] M:SkiaSharp.SKMask.Equals(SkiaSharp.SKMask) + - [ ] M:SkiaSharp.SKMask.Equals(System.Object) + - [ ] M:SkiaSharp.SKMask.FreeImage + - [ ] M:SkiaSharp.SKMask.FreeImage(System.IntPtr) + - [ ] M:SkiaSharp.SKMask.GetAddr(System.Int32,System.Int32) + - [ ] M:SkiaSharp.SKMask.GetAddr1(System.Int32,System.Int32) + - [ ] M:SkiaSharp.SKMask.GetAddr16(System.Int32,System.Int32) + - [ ] M:SkiaSharp.SKMask.GetAddr32(System.Int32,System.Int32) + - [ ] M:SkiaSharp.SKMask.GetAddr8(System.Int32,System.Int32) + - [ ] M:SkiaSharp.SKMask.GetHashCode + - [ ] M:SkiaSharp.SKMask.GetImageSpan + - [ ] M:SkiaSharp.SKMask.op_Equality(SkiaSharp.SKMask,SkiaSharp.SKMask) + - [ ] M:SkiaSharp.SKMask.op_Inequality(SkiaSharp.SKMask,SkiaSharp.SKMask) + - [ ] P:SkiaSharp.SKMask.Bounds + - [ ] P:SkiaSharp.SKMask.Format + - [ ] P:SkiaSharp.SKMask.Image + - [ ] P:SkiaSharp.SKMask.IsEmpty + - [ ] P:SkiaSharp.SKMask.RowBytes +- [ ] SkiaSharp.SKMaskFilter + - [ ] F:SkiaSharp.SKMaskFilter.TableMaxLength + - [ ] M:SkiaSharp.SKMaskFilter.ConvertRadiusToSigma(System.Single) + - [ ] M:SkiaSharp.SKMaskFilter.ConvertSigmaToRadius(System.Single) + - [ ] M:SkiaSharp.SKMaskFilter.CreateBlur(SkiaSharp.SKBlurStyle,System.Single,SkiaSharp.SKBlurMaskFilterFlags) + - [ ] M:SkiaSharp.SKMaskFilter.CreateBlur(SkiaSharp.SKBlurStyle,System.Single,SkiaSharp.SKRect,SkiaSharp.SKBlurMaskFilterFlags) + - [ ] M:SkiaSharp.SKMaskFilter.CreateBlur(SkiaSharp.SKBlurStyle,System.Single,SkiaSharp.SKRect,System.Boolean) + - [ ] M:SkiaSharp.SKMaskFilter.CreateBlur(SkiaSharp.SKBlurStyle,System.Single,SkiaSharp.SKRect) + - [ ] M:SkiaSharp.SKMaskFilter.CreateBlur(SkiaSharp.SKBlurStyle,System.Single,System.Boolean) + - [ ] M:SkiaSharp.SKMaskFilter.CreateBlur(SkiaSharp.SKBlurStyle,System.Single) + - [ ] M:SkiaSharp.SKMaskFilter.CreateClip(System.Byte,System.Byte) + - [ ] M:SkiaSharp.SKMaskFilter.CreateGamma(System.Single) + - [ ] M:SkiaSharp.SKMaskFilter.CreateTable(System.Byte[]) + - [ ] M:SkiaSharp.SKMaskFilter.Dispose(System.Boolean) +- [ ] SkiaSharp.SKMaskFormat + - [ ] F:SkiaSharp.SKMaskFormat.A8 + - [ ] F:SkiaSharp.SKMaskFormat.Argb32 + - [ ] F:SkiaSharp.SKMaskFormat.BW + - [ ] F:SkiaSharp.SKMaskFormat.Lcd16 + - [ ] F:SkiaSharp.SKMaskFormat.Sdf + - [ ] F:SkiaSharp.SKMaskFormat.ThreeD +- [ ] SkiaSharp.SKMatrix + - [ ] F:SkiaSharp.SKMatrix.Empty + - [ ] F:SkiaSharp.SKMatrix.Identity + - [ ] M:SkiaSharp.SKMatrix.#ctor(System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKMatrix.#ctor(System.Single[]) + - [ ] M:SkiaSharp.SKMatrix.Concat(SkiaSharp.SKMatrix,SkiaSharp.SKMatrix) + - [ ] M:SkiaSharp.SKMatrix.Concat(SkiaSharp.SKMatrix@,SkiaSharp.SKMatrix,SkiaSharp.SKMatrix) + - [ ] M:SkiaSharp.SKMatrix.Concat(SkiaSharp.SKMatrix@,SkiaSharp.SKMatrix@,SkiaSharp.SKMatrix@) + - [ ] M:SkiaSharp.SKMatrix.CreateIdentity + - [ ] M:SkiaSharp.SKMatrix.CreateRotation(System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKMatrix.CreateRotation(System.Single) + - [ ] M:SkiaSharp.SKMatrix.CreateRotationDegrees(System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKMatrix.CreateRotationDegrees(System.Single) + - [ ] M:SkiaSharp.SKMatrix.CreateScale(System.Single,System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKMatrix.CreateScale(System.Single,System.Single) + - [ ] M:SkiaSharp.SKMatrix.CreateScaleTranslation(System.Single,System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKMatrix.CreateSkew(System.Single,System.Single) + - [ ] M:SkiaSharp.SKMatrix.CreateTranslation(System.Single,System.Single) + - [ ] M:SkiaSharp.SKMatrix.Equals(SkiaSharp.SKMatrix) + - [ ] M:SkiaSharp.SKMatrix.Equals(System.Object) + - [ ] M:SkiaSharp.SKMatrix.GetHashCode + - [ ] M:SkiaSharp.SKMatrix.GetValues(System.Single[]) + - [ ] M:SkiaSharp.SKMatrix.Invert + - [ ] M:SkiaSharp.SKMatrix.MakeIdentity + - [ ] M:SkiaSharp.SKMatrix.MakeRotation(System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKMatrix.MakeRotation(System.Single) + - [ ] M:SkiaSharp.SKMatrix.MakeRotationDegrees(System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKMatrix.MakeRotationDegrees(System.Single) + - [ ] M:SkiaSharp.SKMatrix.MakeScale(System.Single,System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKMatrix.MakeScale(System.Single,System.Single) + - [ ] M:SkiaSharp.SKMatrix.MakeSkew(System.Single,System.Single) + - [ ] M:SkiaSharp.SKMatrix.MakeTranslation(System.Single,System.Single) + - [ ] M:SkiaSharp.SKMatrix.MapPoint(SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.SKMatrix.MapPoint(System.Single,System.Single) + - [ ] M:SkiaSharp.SKMatrix.MapPoints(SkiaSharp.SKPoint[],SkiaSharp.SKPoint[]) + - [ ] M:SkiaSharp.SKMatrix.MapPoints(SkiaSharp.SKPoint[]) + - [ ] M:SkiaSharp.SKMatrix.MapRadius(System.Single) + - [ ] M:SkiaSharp.SKMatrix.MapRect(SkiaSharp.SKMatrix@,SkiaSharp.SKRect@,SkiaSharp.SKRect@) + - [ ] M:SkiaSharp.SKMatrix.MapRect(SkiaSharp.SKRect) + - [ ] M:SkiaSharp.SKMatrix.MapVector(SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.SKMatrix.MapVector(System.Single,System.Single) + - [ ] M:SkiaSharp.SKMatrix.MapVectors(SkiaSharp.SKPoint[],SkiaSharp.SKPoint[]) + - [ ] M:SkiaSharp.SKMatrix.MapVectors(SkiaSharp.SKPoint[]) + - [ ] M:SkiaSharp.SKMatrix.op_Equality(SkiaSharp.SKMatrix,SkiaSharp.SKMatrix) + - [ ] M:SkiaSharp.SKMatrix.op_Inequality(SkiaSharp.SKMatrix,SkiaSharp.SKMatrix) + - [ ] M:SkiaSharp.SKMatrix.PostConcat(SkiaSharp.SKMatrix) + - [ ] M:SkiaSharp.SKMatrix.PostConcat(SkiaSharp.SKMatrix@,SkiaSharp.SKMatrix) + - [ ] M:SkiaSharp.SKMatrix.PostConcat(SkiaSharp.SKMatrix@,SkiaSharp.SKMatrix@) + - [ ] M:SkiaSharp.SKMatrix.PreConcat(SkiaSharp.SKMatrix) + - [ ] M:SkiaSharp.SKMatrix.PreConcat(SkiaSharp.SKMatrix@,SkiaSharp.SKMatrix) + - [ ] M:SkiaSharp.SKMatrix.PreConcat(SkiaSharp.SKMatrix@,SkiaSharp.SKMatrix@) + - [ ] M:SkiaSharp.SKMatrix.Rotate(SkiaSharp.SKMatrix@,System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKMatrix.Rotate(SkiaSharp.SKMatrix@,System.Single) + - [ ] M:SkiaSharp.SKMatrix.RotateDegrees(SkiaSharp.SKMatrix@,System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKMatrix.RotateDegrees(SkiaSharp.SKMatrix@,System.Single) + - [ ] M:SkiaSharp.SKMatrix.SetScaleTranslate(System.Single,System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKMatrix.TryInvert(SkiaSharp.SKMatrix@) + - [ ] P:SkiaSharp.SKMatrix.IsIdentity + - [ ] P:SkiaSharp.SKMatrix.IsInvertible + - [ ] P:SkiaSharp.SKMatrix.Persp0 + - [ ] P:SkiaSharp.SKMatrix.Persp1 + - [ ] P:SkiaSharp.SKMatrix.Persp2 + - [ ] P:SkiaSharp.SKMatrix.ScaleX + - [ ] P:SkiaSharp.SKMatrix.ScaleY + - [ ] P:SkiaSharp.SKMatrix.SkewX + - [ ] P:SkiaSharp.SKMatrix.SkewY + - [ ] P:SkiaSharp.SKMatrix.TransX + - [ ] P:SkiaSharp.SKMatrix.TransY + - [ ] P:SkiaSharp.SKMatrix.Values +- [ ] SkiaSharp.SKMatrix44 + - [ ] M:SkiaSharp.SKMatrix44.#ctor + - [ ] M:SkiaSharp.SKMatrix44.#ctor(SkiaSharp.SKMatrix) + - [ ] M:SkiaSharp.SKMatrix44.#ctor(SkiaSharp.SKMatrix44,SkiaSharp.SKMatrix44) + - [ ] M:SkiaSharp.SKMatrix44.#ctor(SkiaSharp.SKMatrix44) + - [ ] M:SkiaSharp.SKMatrix44.CreateIdentity + - [ ] M:SkiaSharp.SKMatrix44.CreateRotation(System.Single,System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKMatrix44.CreateRotationDegrees(System.Single,System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKMatrix44.CreateScale(System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKMatrix44.CreateTranslate(System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKMatrix44.CreateTranslation(System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKMatrix44.Determinant + - [ ] M:SkiaSharp.SKMatrix44.Dispose(System.Boolean) + - [ ] M:SkiaSharp.SKMatrix44.DisposeNative + - [ ] M:SkiaSharp.SKMatrix44.Equal(SkiaSharp.SKMatrix44,SkiaSharp.SKMatrix44) + - [ ] M:SkiaSharp.SKMatrix44.FromColumnMajor(System.Single[]) + - [ ] M:SkiaSharp.SKMatrix44.FromRowMajor(System.Single[]) + - [ ] M:SkiaSharp.SKMatrix44.Invert + - [ ] M:SkiaSharp.SKMatrix44.Invert(SkiaSharp.SKMatrix44) + - [ ] M:SkiaSharp.SKMatrix44.MapPoint(SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.SKMatrix44.MapPoints(SkiaSharp.SKPoint[]) + - [ ] M:SkiaSharp.SKMatrix44.MapScalars(System.Single,System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKMatrix44.MapScalars(System.Single[],System.Single[]) + - [ ] M:SkiaSharp.SKMatrix44.MapScalars(System.Single[]) + - [ ] M:SkiaSharp.SKMatrix44.MapVector2(System.Single[],System.Single[]) + - [ ] M:SkiaSharp.SKMatrix44.MapVector2(System.Single[]) + - [ ] M:SkiaSharp.SKMatrix44.op_Implicit(SkiaSharp.SKMatrix)~SkiaSharp.SKMatrix44 + - [ ] M:SkiaSharp.SKMatrix44.PostConcat(SkiaSharp.SKMatrix44) + - [ ] M:SkiaSharp.SKMatrix44.PostScale(System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKMatrix44.PostTranslate(System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKMatrix44.PreConcat(SkiaSharp.SKMatrix44) + - [ ] M:SkiaSharp.SKMatrix44.PreScale(System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKMatrix44.Preserves2DAxisAlignment(System.Single) + - [ ] M:SkiaSharp.SKMatrix44.PreTranslate(System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKMatrix44.Set3x3ColumnMajor(System.Single[]) + - [ ] M:SkiaSharp.SKMatrix44.Set3x3RowMajor(System.Single[]) + - [ ] M:SkiaSharp.SKMatrix44.SetColumnMajor(System.Single[]) + - [ ] M:SkiaSharp.SKMatrix44.SetConcat(SkiaSharp.SKMatrix44,SkiaSharp.SKMatrix44) + - [ ] M:SkiaSharp.SKMatrix44.SetIdentity + - [ ] M:SkiaSharp.SKMatrix44.SetRotationAbout(System.Single,System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKMatrix44.SetRotationAboutDegrees(System.Single,System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKMatrix44.SetRotationAboutUnit(System.Single,System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKMatrix44.SetRowMajor(System.Single[]) + - [ ] M:SkiaSharp.SKMatrix44.SetScale(System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKMatrix44.SetTranslate(System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKMatrix44.ToColumnMajor + - [ ] M:SkiaSharp.SKMatrix44.ToColumnMajor(System.Single[]) + - [ ] M:SkiaSharp.SKMatrix44.ToRowMajor + - [ ] M:SkiaSharp.SKMatrix44.ToRowMajor(System.Single[]) + - [ ] M:SkiaSharp.SKMatrix44.Transpose + - [ ] P:SkiaSharp.SKMatrix44.IsInvertible + - [ ] P:SkiaSharp.SKMatrix44.Item(System.Int32,System.Int32) + - [ ] P:SkiaSharp.SKMatrix44.Matrix + - [ ] P:SkiaSharp.SKMatrix44.Type +- [ ] SkiaSharp.SKMatrix44TypeMask + - [ ] F:SkiaSharp.SKMatrix44TypeMask.Affine + - [ ] F:SkiaSharp.SKMatrix44TypeMask.Identity + - [ ] F:SkiaSharp.SKMatrix44TypeMask.Perspective + - [ ] F:SkiaSharp.SKMatrix44TypeMask.Scale + - [ ] F:SkiaSharp.SKMatrix44TypeMask.Translate +- [ ] SkiaSharp.SKMatrixConvolutionTileMode + - [ ] F:SkiaSharp.SKMatrixConvolutionTileMode.Clamp + - [ ] F:SkiaSharp.SKMatrixConvolutionTileMode.ClampToBlack + - [ ] F:SkiaSharp.SKMatrixConvolutionTileMode.Repeat +- [ ] SkiaSharp.SKMemoryStream + - [ ] M:SkiaSharp.SKMemoryStream.#ctor + - [ ] M:SkiaSharp.SKMemoryStream.#ctor(SkiaSharp.SKData) + - [ ] M:SkiaSharp.SKMemoryStream.#ctor(System.Byte[]) + - [ ] M:SkiaSharp.SKMemoryStream.#ctor(System.UInt64) + - [ ] M:SkiaSharp.SKMemoryStream.Dispose(System.Boolean) + - [ ] M:SkiaSharp.SKMemoryStream.DisposeNative + - [ ] M:SkiaSharp.SKMemoryStream.SetMemory(System.Byte[]) +- [ ] SkiaSharp.SKNamedGamma + - [ ] F:SkiaSharp.SKNamedGamma.Linear + - [ ] F:SkiaSharp.SKNamedGamma.NonStandard + - [ ] F:SkiaSharp.SKNamedGamma.Srgb + - [ ] F:SkiaSharp.SKNamedGamma.TwoDotTwoCurve +- [ ] SkiaSharp.SKNativeObject + - [ ] M:SkiaSharp.SKNativeObject.Dispose + - [ ] M:SkiaSharp.SKNativeObject.Dispose(System.Boolean) + - [ ] M:SkiaSharp.SKNativeObject.DisposeInternal + - [ ] M:SkiaSharp.SKNativeObject.DisposeManaged + - [ ] M:SkiaSharp.SKNativeObject.DisposeNative + - [ ] M:SkiaSharp.SKNativeObject.DisposeUnownedManaged + - [ ] M:SkiaSharp.SKNativeObject.Finalize + - [ ] P:SkiaSharp.SKNativeObject.Handle + - [ ] P:SkiaSharp.SKNativeObject.IgnorePublicDispose + - [ ] P:SkiaSharp.SKNativeObject.IsDisposed + - [ ] P:SkiaSharp.SKNativeObject.OwnsHandle +- [ ] SkiaSharp.SKNoDrawCanvas + - [ ] M:SkiaSharp.SKNoDrawCanvas.#ctor(System.Int32,System.Int32) +- [ ] SkiaSharp.SKNWayCanvas + - [ ] M:SkiaSharp.SKNWayCanvas.#ctor(System.Int32,System.Int32) + - [ ] M:SkiaSharp.SKNWayCanvas.AddCanvas(SkiaSharp.SKCanvas) + - [ ] M:SkiaSharp.SKNWayCanvas.RemoveAll + - [ ] M:SkiaSharp.SKNWayCanvas.RemoveCanvas(SkiaSharp.SKCanvas) +- [ ] SkiaSharp.SKObject + - [ ] M:SkiaSharp.SKObject.Dispose(System.Boolean) + - [ ] M:SkiaSharp.SKObject.DisposeManaged + - [ ] M:SkiaSharp.SKObject.DisposeNative + - [ ] M:SkiaSharp.SKObject.DisposeUnownedManaged + - [ ] P:SkiaSharp.SKObject.Handle + - [ ] P:SkiaSharp.SKObject.OwnsHandle +- [ ] SkiaSharp.SKOverdrawCanvas + - [ ] M:SkiaSharp.SKOverdrawCanvas.#ctor(SkiaSharp.SKCanvas) +- [ ] SkiaSharp.SKPaint + - [ ] M:SkiaSharp.SKPaint.#ctor + - [ ] M:SkiaSharp.SKPaint.#ctor(SkiaSharp.SKFont) + - [ ] M:SkiaSharp.SKPaint.BreakText(System.Byte[],System.Single,System.Single@) + - [ ] M:SkiaSharp.SKPaint.BreakText(System.Byte[],System.Single) + - [ ] M:SkiaSharp.SKPaint.BreakText(System.IntPtr,System.Int32,System.Single,System.Single@) + - [ ] M:SkiaSharp.SKPaint.BreakText(System.IntPtr,System.Int32,System.Single) + - [ ] M:SkiaSharp.SKPaint.BreakText(System.IntPtr,System.IntPtr,System.Single,System.Single@) + - [ ] M:SkiaSharp.SKPaint.BreakText(System.IntPtr,System.IntPtr,System.Single) + - [ ] M:SkiaSharp.SKPaint.BreakText(System.ReadOnlySpan{System.Byte},System.Single,System.Single@) + - [ ] M:SkiaSharp.SKPaint.BreakText(System.ReadOnlySpan{System.Byte},System.Single) + - [ ] M:SkiaSharp.SKPaint.BreakText(System.ReadOnlySpan{System.Char},System.Single,System.Single@) + - [ ] M:SkiaSharp.SKPaint.BreakText(System.ReadOnlySpan{System.Char},System.Single) + - [ ] M:SkiaSharp.SKPaint.BreakText(System.String,System.Single,System.Single@,System.String@) + - [ ] M:SkiaSharp.SKPaint.BreakText(System.String,System.Single,System.Single@) + - [ ] M:SkiaSharp.SKPaint.BreakText(System.String,System.Single) + - [ ] M:SkiaSharp.SKPaint.Clone + - [ ] M:SkiaSharp.SKPaint.ContainsGlyphs(System.Byte[]) + - [ ] M:SkiaSharp.SKPaint.ContainsGlyphs(System.IntPtr,System.Int32) + - [ ] M:SkiaSharp.SKPaint.ContainsGlyphs(System.IntPtr,System.IntPtr) + - [ ] M:SkiaSharp.SKPaint.ContainsGlyphs(System.ReadOnlySpan{System.Byte}) + - [ ] M:SkiaSharp.SKPaint.ContainsGlyphs(System.ReadOnlySpan{System.Char}) + - [ ] M:SkiaSharp.SKPaint.ContainsGlyphs(System.String) + - [ ] M:SkiaSharp.SKPaint.CountGlyphs(System.Byte[]) + - [ ] M:SkiaSharp.SKPaint.CountGlyphs(System.IntPtr,System.Int32) + - [ ] M:SkiaSharp.SKPaint.CountGlyphs(System.IntPtr,System.IntPtr) + - [ ] M:SkiaSharp.SKPaint.CountGlyphs(System.ReadOnlySpan{System.Byte}) + - [ ] M:SkiaSharp.SKPaint.CountGlyphs(System.ReadOnlySpan{System.Char}) + - [ ] M:SkiaSharp.SKPaint.CountGlyphs(System.String) + - [ ] M:SkiaSharp.SKPaint.Dispose(System.Boolean) + - [ ] M:SkiaSharp.SKPaint.DisposeNative + - [ ] M:SkiaSharp.SKPaint.GetFillPath(SkiaSharp.SKPath,SkiaSharp.SKPath,SkiaSharp.SKRect,System.Single) + - [ ] M:SkiaSharp.SKPaint.GetFillPath(SkiaSharp.SKPath,SkiaSharp.SKPath,SkiaSharp.SKRect) + - [ ] M:SkiaSharp.SKPaint.GetFillPath(SkiaSharp.SKPath,SkiaSharp.SKPath,System.Single) + - [ ] M:SkiaSharp.SKPaint.GetFillPath(SkiaSharp.SKPath,SkiaSharp.SKPath) + - [ ] M:SkiaSharp.SKPaint.GetFillPath(SkiaSharp.SKPath,SkiaSharp.SKRect,System.Single) + - [ ] M:SkiaSharp.SKPaint.GetFillPath(SkiaSharp.SKPath,SkiaSharp.SKRect) + - [ ] M:SkiaSharp.SKPaint.GetFillPath(SkiaSharp.SKPath,System.Single) + - [ ] M:SkiaSharp.SKPaint.GetFillPath(SkiaSharp.SKPath) + - [ ] M:SkiaSharp.SKPaint.GetFontMetrics(SkiaSharp.SKFontMetrics@,System.Single) + - [ ] M:SkiaSharp.SKPaint.GetFontMetrics(SkiaSharp.SKFontMetrics@) + - [ ] M:SkiaSharp.SKPaint.GetGlyphOffsets(System.IntPtr,System.Int32,System.Single) + - [ ] M:SkiaSharp.SKPaint.GetGlyphOffsets(System.ReadOnlySpan{System.Byte},System.Single) + - [ ] M:SkiaSharp.SKPaint.GetGlyphOffsets(System.ReadOnlySpan{System.Char},System.Single) + - [ ] M:SkiaSharp.SKPaint.GetGlyphOffsets(System.String,System.Single) + - [ ] M:SkiaSharp.SKPaint.GetGlyphPositions(System.IntPtr,System.Int32,SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.SKPaint.GetGlyphPositions(System.ReadOnlySpan{System.Byte},SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.SKPaint.GetGlyphPositions(System.ReadOnlySpan{System.Char},SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.SKPaint.GetGlyphPositions(System.String,SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.SKPaint.GetGlyphs(System.Byte[]) + - [ ] M:SkiaSharp.SKPaint.GetGlyphs(System.IntPtr,System.Int32) + - [ ] M:SkiaSharp.SKPaint.GetGlyphs(System.IntPtr,System.IntPtr) + - [ ] M:SkiaSharp.SKPaint.GetGlyphs(System.ReadOnlySpan{System.Byte}) + - [ ] M:SkiaSharp.SKPaint.GetGlyphs(System.ReadOnlySpan{System.Char}) + - [ ] M:SkiaSharp.SKPaint.GetGlyphs(System.String) + - [ ] M:SkiaSharp.SKPaint.GetGlyphWidths(System.Byte[],SkiaSharp.SKRect[]@) + - [ ] M:SkiaSharp.SKPaint.GetGlyphWidths(System.Byte[]) + - [ ] M:SkiaSharp.SKPaint.GetGlyphWidths(System.IntPtr,System.Int32,SkiaSharp.SKRect[]@) + - [ ] M:SkiaSharp.SKPaint.GetGlyphWidths(System.IntPtr,System.Int32) + - [ ] M:SkiaSharp.SKPaint.GetGlyphWidths(System.IntPtr,System.IntPtr,SkiaSharp.SKRect[]@) + - [ ] M:SkiaSharp.SKPaint.GetGlyphWidths(System.IntPtr,System.IntPtr) + - [ ] M:SkiaSharp.SKPaint.GetGlyphWidths(System.ReadOnlySpan{System.Byte},SkiaSharp.SKRect[]@) + - [ ] M:SkiaSharp.SKPaint.GetGlyphWidths(System.ReadOnlySpan{System.Byte}) + - [ ] M:SkiaSharp.SKPaint.GetGlyphWidths(System.ReadOnlySpan{System.Char},SkiaSharp.SKRect[]@) + - [ ] M:SkiaSharp.SKPaint.GetGlyphWidths(System.ReadOnlySpan{System.Char}) + - [ ] M:SkiaSharp.SKPaint.GetGlyphWidths(System.String,SkiaSharp.SKRect[]@) + - [ ] M:SkiaSharp.SKPaint.GetGlyphWidths(System.String) + - [ ] M:SkiaSharp.SKPaint.GetHorizontalTextIntercepts(System.Byte[],System.Single[],System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKPaint.GetHorizontalTextIntercepts(System.IntPtr,System.Int32,System.Single[],System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKPaint.GetHorizontalTextIntercepts(System.IntPtr,System.IntPtr,System.Single[],System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKPaint.GetHorizontalTextIntercepts(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Single},System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKPaint.GetHorizontalTextIntercepts(System.ReadOnlySpan{System.Char},System.ReadOnlySpan{System.Single},System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKPaint.GetHorizontalTextIntercepts(System.String,System.Single[],System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKPaint.GetPositionedTextIntercepts(System.Byte[],SkiaSharp.SKPoint[],System.Single,System.Single) + - [ ] M:SkiaSharp.SKPaint.GetPositionedTextIntercepts(System.IntPtr,System.Int32,SkiaSharp.SKPoint[],System.Single,System.Single) + - [ ] M:SkiaSharp.SKPaint.GetPositionedTextIntercepts(System.IntPtr,System.IntPtr,SkiaSharp.SKPoint[],System.Single,System.Single) + - [ ] M:SkiaSharp.SKPaint.GetPositionedTextIntercepts(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{SkiaSharp.SKPoint},System.Single,System.Single) + - [ ] M:SkiaSharp.SKPaint.GetPositionedTextIntercepts(System.ReadOnlySpan{System.Char},System.ReadOnlySpan{SkiaSharp.SKPoint},System.Single,System.Single) + - [ ] M:SkiaSharp.SKPaint.GetPositionedTextIntercepts(System.String,SkiaSharp.SKPoint[],System.Single,System.Single) + - [ ] M:SkiaSharp.SKPaint.GetTextIntercepts(SkiaSharp.SKTextBlob,System.Single,System.Single) + - [ ] M:SkiaSharp.SKPaint.GetTextIntercepts(System.Byte[],System.Single,System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKPaint.GetTextIntercepts(System.IntPtr,System.Int32,System.Single,System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKPaint.GetTextIntercepts(System.IntPtr,System.IntPtr,System.Single,System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKPaint.GetTextIntercepts(System.ReadOnlySpan{System.Byte},System.Single,System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKPaint.GetTextIntercepts(System.ReadOnlySpan{System.Char},System.Single,System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKPaint.GetTextIntercepts(System.String,System.Single,System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKPaint.GetTextPath(System.Byte[],SkiaSharp.SKPoint[]) + - [ ] M:SkiaSharp.SKPaint.GetTextPath(System.Byte[],System.Single,System.Single) + - [ ] M:SkiaSharp.SKPaint.GetTextPath(System.IntPtr,System.Int32,SkiaSharp.SKPoint[]) + - [ ] M:SkiaSharp.SKPaint.GetTextPath(System.IntPtr,System.Int32,System.ReadOnlySpan{SkiaSharp.SKPoint}) + - [ ] M:SkiaSharp.SKPaint.GetTextPath(System.IntPtr,System.Int32,System.Single,System.Single) + - [ ] M:SkiaSharp.SKPaint.GetTextPath(System.IntPtr,System.IntPtr,SkiaSharp.SKPoint[]) + - [ ] M:SkiaSharp.SKPaint.GetTextPath(System.IntPtr,System.IntPtr,System.Single,System.Single) + - [ ] M:SkiaSharp.SKPaint.GetTextPath(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{SkiaSharp.SKPoint}) + - [ ] M:SkiaSharp.SKPaint.GetTextPath(System.ReadOnlySpan{System.Byte},System.Single,System.Single) + - [ ] M:SkiaSharp.SKPaint.GetTextPath(System.ReadOnlySpan{System.Char},System.ReadOnlySpan{SkiaSharp.SKPoint}) + - [ ] M:SkiaSharp.SKPaint.GetTextPath(System.ReadOnlySpan{System.Char},System.Single,System.Single) + - [ ] M:SkiaSharp.SKPaint.GetTextPath(System.String,SkiaSharp.SKPoint[]) + - [ ] M:SkiaSharp.SKPaint.GetTextPath(System.String,System.Single,System.Single) + - [ ] M:SkiaSharp.SKPaint.MeasureText(System.Byte[],SkiaSharp.SKRect@) + - [ ] M:SkiaSharp.SKPaint.MeasureText(System.Byte[]) + - [ ] M:SkiaSharp.SKPaint.MeasureText(System.IntPtr,System.Int32,SkiaSharp.SKRect@) + - [ ] M:SkiaSharp.SKPaint.MeasureText(System.IntPtr,System.Int32) + - [ ] M:SkiaSharp.SKPaint.MeasureText(System.IntPtr,System.IntPtr,SkiaSharp.SKRect@) + - [ ] M:SkiaSharp.SKPaint.MeasureText(System.IntPtr,System.IntPtr) + - [ ] M:SkiaSharp.SKPaint.MeasureText(System.ReadOnlySpan{System.Byte},SkiaSharp.SKRect@) + - [ ] M:SkiaSharp.SKPaint.MeasureText(System.ReadOnlySpan{System.Byte}) + - [ ] M:SkiaSharp.SKPaint.MeasureText(System.ReadOnlySpan{System.Char},SkiaSharp.SKRect@) + - [ ] M:SkiaSharp.SKPaint.MeasureText(System.ReadOnlySpan{System.Char}) + - [ ] M:SkiaSharp.SKPaint.MeasureText(System.String,SkiaSharp.SKRect@) + - [ ] M:SkiaSharp.SKPaint.MeasureText(System.String) + - [ ] M:SkiaSharp.SKPaint.Reset + - [ ] M:SkiaSharp.SKPaint.SetColor(SkiaSharp.SKColorF,SkiaSharp.SKColorSpace) + - [ ] M:SkiaSharp.SKPaint.ToFont + - [ ] P:SkiaSharp.SKPaint.BlendMode + - [ ] P:SkiaSharp.SKPaint.Color + - [ ] P:SkiaSharp.SKPaint.ColorF + - [ ] P:SkiaSharp.SKPaint.ColorFilter + - [ ] P:SkiaSharp.SKPaint.DeviceKerningEnabled + - [ ] P:SkiaSharp.SKPaint.FakeBoldText + - [ ] P:SkiaSharp.SKPaint.FilterQuality + - [ ] P:SkiaSharp.SKPaint.FontMetrics + - [ ] P:SkiaSharp.SKPaint.FontSpacing + - [ ] P:SkiaSharp.SKPaint.HintingLevel + - [ ] P:SkiaSharp.SKPaint.ImageFilter + - [ ] P:SkiaSharp.SKPaint.IsAntialias + - [ ] P:SkiaSharp.SKPaint.IsAutohinted + - [ ] P:SkiaSharp.SKPaint.IsDither + - [ ] P:SkiaSharp.SKPaint.IsEmbeddedBitmapText + - [ ] P:SkiaSharp.SKPaint.IsLinearText + - [ ] P:SkiaSharp.SKPaint.IsStroke + - [ ] P:SkiaSharp.SKPaint.IsVerticalText + - [ ] P:SkiaSharp.SKPaint.LcdRenderText + - [ ] P:SkiaSharp.SKPaint.MaskFilter + - [ ] P:SkiaSharp.SKPaint.PathEffect + - [ ] P:SkiaSharp.SKPaint.Shader + - [ ] P:SkiaSharp.SKPaint.StrokeCap + - [ ] P:SkiaSharp.SKPaint.StrokeJoin + - [ ] P:SkiaSharp.SKPaint.StrokeMiter + - [ ] P:SkiaSharp.SKPaint.StrokeWidth + - [ ] P:SkiaSharp.SKPaint.Style + - [ ] P:SkiaSharp.SKPaint.SubpixelText + - [ ] P:SkiaSharp.SKPaint.TextAlign + - [ ] P:SkiaSharp.SKPaint.TextEncoding + - [ ] P:SkiaSharp.SKPaint.TextScaleX + - [ ] P:SkiaSharp.SKPaint.TextSize + - [ ] P:SkiaSharp.SKPaint.TextSkewX + - [ ] P:SkiaSharp.SKPaint.Typeface +- [ ] SkiaSharp.SKPaintHinting + - [ ] F:SkiaSharp.SKPaintHinting.Full + - [ ] F:SkiaSharp.SKPaintHinting.NoHinting + - [ ] F:SkiaSharp.SKPaintHinting.Normal + - [ ] F:SkiaSharp.SKPaintHinting.Slight +- [ ] SkiaSharp.SKPaintStyle + - [ ] F:SkiaSharp.SKPaintStyle.Fill + - [ ] F:SkiaSharp.SKPaintStyle.Stroke + - [ ] F:SkiaSharp.SKPaintStyle.StrokeAndFill +- [ ] SkiaSharp.SKPath + - [ ] M:SkiaSharp.SKPath.#ctor + - [ ] M:SkiaSharp.SKPath.#ctor(SkiaSharp.SKPath) + - [ ] M:SkiaSharp.SKPath.AddArc(SkiaSharp.SKRect,System.Single,System.Single) + - [ ] M:SkiaSharp.SKPath.AddCircle(System.Single,System.Single,System.Single,SkiaSharp.SKPathDirection) + - [ ] M:SkiaSharp.SKPath.AddOval(SkiaSharp.SKRect,SkiaSharp.SKPathDirection) + - [ ] M:SkiaSharp.SKPath.AddPath(SkiaSharp.SKPath,SkiaSharp.SKMatrix@,SkiaSharp.SKPathAddMode) + - [ ] M:SkiaSharp.SKPath.AddPath(SkiaSharp.SKPath,SkiaSharp.SKPathAddMode) + - [ ] M:SkiaSharp.SKPath.AddPath(SkiaSharp.SKPath,System.Single,System.Single,SkiaSharp.SKPathAddMode) + - [ ] M:SkiaSharp.SKPath.AddPathReverse(SkiaSharp.SKPath) + - [ ] M:SkiaSharp.SKPath.AddPoly(SkiaSharp.SKPoint[],System.Boolean) + - [ ] M:SkiaSharp.SKPath.AddRect(SkiaSharp.SKRect,SkiaSharp.SKPathDirection,System.UInt32) + - [ ] M:SkiaSharp.SKPath.AddRect(SkiaSharp.SKRect,SkiaSharp.SKPathDirection) + - [ ] M:SkiaSharp.SKPath.AddRoundedRect(SkiaSharp.SKRect,System.Single,System.Single,SkiaSharp.SKPathDirection) + - [ ] M:SkiaSharp.SKPath.AddRoundRect(SkiaSharp.SKRect,System.Single,System.Single,SkiaSharp.SKPathDirection) + - [ ] M:SkiaSharp.SKPath.AddRoundRect(SkiaSharp.SKRoundRect,SkiaSharp.SKPathDirection,System.UInt32) + - [ ] M:SkiaSharp.SKPath.AddRoundRect(SkiaSharp.SKRoundRect,SkiaSharp.SKPathDirection) + - [ ] M:SkiaSharp.SKPath.ArcTo(SkiaSharp.SKPoint,SkiaSharp.SKPoint,System.Single) + - [ ] M:SkiaSharp.SKPath.ArcTo(SkiaSharp.SKPoint,System.Single,SkiaSharp.SKPathArcSize,SkiaSharp.SKPathDirection,SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.SKPath.ArcTo(SkiaSharp.SKRect,System.Single,System.Single,System.Boolean) + - [ ] M:SkiaSharp.SKPath.ArcTo(System.Single,System.Single,System.Single,SkiaSharp.SKPathArcSize,SkiaSharp.SKPathDirection,System.Single,System.Single) + - [ ] M:SkiaSharp.SKPath.ArcTo(System.Single,System.Single,System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKPath.Close + - [ ] M:SkiaSharp.SKPath.ComputeTightBounds + - [ ] M:SkiaSharp.SKPath.ConicTo(SkiaSharp.SKPoint,SkiaSharp.SKPoint,System.Single) + - [ ] M:SkiaSharp.SKPath.ConicTo(System.Single,System.Single,System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKPath.Contains(System.Single,System.Single) + - [ ] M:SkiaSharp.SKPath.ConvertConicToQuads(SkiaSharp.SKPoint,SkiaSharp.SKPoint,SkiaSharp.SKPoint,System.Single,SkiaSharp.SKPoint[],System.Int32) + - [ ] M:SkiaSharp.SKPath.ConvertConicToQuads(SkiaSharp.SKPoint,SkiaSharp.SKPoint,SkiaSharp.SKPoint,System.Single,SkiaSharp.SKPoint[]@,System.Int32) + - [ ] M:SkiaSharp.SKPath.ConvertConicToQuads(SkiaSharp.SKPoint,SkiaSharp.SKPoint,SkiaSharp.SKPoint,System.Single,System.Int32) + - [ ] M:SkiaSharp.SKPath.CreateIterator(System.Boolean) + - [ ] M:SkiaSharp.SKPath.CreateRawIterator + - [ ] M:SkiaSharp.SKPath.CubicTo(SkiaSharp.SKPoint,SkiaSharp.SKPoint,SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.SKPath.CubicTo(System.Single,System.Single,System.Single,System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKPath.Dispose(System.Boolean) + - [ ] M:SkiaSharp.SKPath.DisposeNative + - [ ] M:SkiaSharp.SKPath.GetBounds(SkiaSharp.SKRect@) + - [ ] M:SkiaSharp.SKPath.GetLine + - [ ] M:SkiaSharp.SKPath.GetOvalBounds + - [ ] M:SkiaSharp.SKPath.GetPoint(System.Int32) + - [ ] M:SkiaSharp.SKPath.GetPoints(SkiaSharp.SKPoint[],System.Int32) + - [ ] M:SkiaSharp.SKPath.GetPoints(System.Int32) + - [ ] M:SkiaSharp.SKPath.GetRect + - [ ] M:SkiaSharp.SKPath.GetRect(System.Boolean@,SkiaSharp.SKPathDirection@) + - [ ] M:SkiaSharp.SKPath.GetRoundRect + - [ ] M:SkiaSharp.SKPath.GetTightBounds(SkiaSharp.SKRect@) + - [ ] M:SkiaSharp.SKPath.LineTo(SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.SKPath.LineTo(System.Single,System.Single) + - [ ] M:SkiaSharp.SKPath.MoveTo(SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.SKPath.MoveTo(System.Single,System.Single) + - [ ] M:SkiaSharp.SKPath.Offset(SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.SKPath.Offset(System.Single,System.Single) + - [ ] M:SkiaSharp.SKPath.Op(SkiaSharp.SKPath,SkiaSharp.SKPathOp,SkiaSharp.SKPath) + - [ ] M:SkiaSharp.SKPath.Op(SkiaSharp.SKPath,SkiaSharp.SKPathOp) + - [ ] M:SkiaSharp.SKPath.ParseSvgPathData(System.String) + - [ ] M:SkiaSharp.SKPath.QuadTo(SkiaSharp.SKPoint,SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.SKPath.QuadTo(System.Single,System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKPath.RArcTo(SkiaSharp.SKPoint,System.Single,SkiaSharp.SKPathArcSize,SkiaSharp.SKPathDirection,SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.SKPath.RArcTo(System.Single,System.Single,System.Single,SkiaSharp.SKPathArcSize,SkiaSharp.SKPathDirection,System.Single,System.Single) + - [ ] M:SkiaSharp.SKPath.RConicTo(SkiaSharp.SKPoint,SkiaSharp.SKPoint,System.Single) + - [ ] M:SkiaSharp.SKPath.RConicTo(System.Single,System.Single,System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKPath.RCubicTo(SkiaSharp.SKPoint,SkiaSharp.SKPoint,SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.SKPath.RCubicTo(System.Single,System.Single,System.Single,System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKPath.Reset + - [ ] M:SkiaSharp.SKPath.Rewind + - [ ] M:SkiaSharp.SKPath.RLineTo(SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.SKPath.RLineTo(System.Single,System.Single) + - [ ] M:SkiaSharp.SKPath.RMoveTo(SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.SKPath.RMoveTo(System.Single,System.Single) + - [ ] M:SkiaSharp.SKPath.RQuadTo(SkiaSharp.SKPoint,SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.SKPath.RQuadTo(System.Single,System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKPath.Simplify + - [ ] M:SkiaSharp.SKPath.Simplify(SkiaSharp.SKPath) + - [ ] M:SkiaSharp.SKPath.ToSvgPathData + - [ ] M:SkiaSharp.SKPath.ToWinding + - [ ] M:SkiaSharp.SKPath.ToWinding(SkiaSharp.SKPath) + - [ ] M:SkiaSharp.SKPath.Transform(SkiaSharp.SKMatrix,SkiaSharp.SKPath) + - [ ] M:SkiaSharp.SKPath.Transform(SkiaSharp.SKMatrix) + - [ ] P:SkiaSharp.SKPath.Bounds + - [ ] P:SkiaSharp.SKPath.Convexity + - [ ] P:SkiaSharp.SKPath.FillType + - [ ] P:SkiaSharp.SKPath.IsConcave + - [ ] P:SkiaSharp.SKPath.IsConvex + - [ ] P:SkiaSharp.SKPath.IsEmpty + - [ ] P:SkiaSharp.SKPath.IsLine + - [ ] P:SkiaSharp.SKPath.IsOval + - [ ] P:SkiaSharp.SKPath.IsRect + - [ ] P:SkiaSharp.SKPath.IsRoundRect + - [ ] P:SkiaSharp.SKPath.Item(System.Int32) + - [ ] P:SkiaSharp.SKPath.LastPoint + - [ ] P:SkiaSharp.SKPath.PointCount + - [ ] P:SkiaSharp.SKPath.Points + - [ ] P:SkiaSharp.SKPath.SegmentMasks + - [ ] P:SkiaSharp.SKPath.TightBounds + - [ ] P:SkiaSharp.SKPath.VerbCount +- [ ] SkiaSharp.SKPath.Iterator + - [ ] M:SkiaSharp.SKPath.Iterator.ConicWeight + - [ ] M:SkiaSharp.SKPath.Iterator.Dispose(System.Boolean) + - [ ] M:SkiaSharp.SKPath.Iterator.DisposeNative + - [ ] M:SkiaSharp.SKPath.Iterator.IsCloseContour + - [ ] M:SkiaSharp.SKPath.Iterator.IsCloseLine + - [ ] M:SkiaSharp.SKPath.Iterator.Next(SkiaSharp.SKPoint[],System.Boolean,System.Boolean) + - [ ] M:SkiaSharp.SKPath.Iterator.Next(SkiaSharp.SKPoint[]) + - [ ] M:SkiaSharp.SKPath.Iterator.Next(System.Span{SkiaSharp.SKPoint}) +- [ ] SkiaSharp.SKPath.OpBuilder + - [ ] M:SkiaSharp.SKPath.OpBuilder.#ctor + - [ ] M:SkiaSharp.SKPath.OpBuilder.Add(SkiaSharp.SKPath,SkiaSharp.SKPathOp) + - [ ] M:SkiaSharp.SKPath.OpBuilder.Dispose(System.Boolean) + - [ ] M:SkiaSharp.SKPath.OpBuilder.DisposeNative + - [ ] M:SkiaSharp.SKPath.OpBuilder.Resolve(SkiaSharp.SKPath) +- [ ] SkiaSharp.SKPath.RawIterator + - [ ] M:SkiaSharp.SKPath.RawIterator.ConicWeight + - [ ] M:SkiaSharp.SKPath.RawIterator.Dispose(System.Boolean) + - [ ] M:SkiaSharp.SKPath.RawIterator.DisposeNative + - [ ] M:SkiaSharp.SKPath.RawIterator.Next(SkiaSharp.SKPoint[]) + - [ ] M:SkiaSharp.SKPath.RawIterator.Next(System.Span{SkiaSharp.SKPoint}) + - [ ] M:SkiaSharp.SKPath.RawIterator.Peek +- [ ] SkiaSharp.SKPath1DPathEffectStyle + - [ ] F:SkiaSharp.SKPath1DPathEffectStyle.Morph + - [ ] F:SkiaSharp.SKPath1DPathEffectStyle.Rotate + - [ ] F:SkiaSharp.SKPath1DPathEffectStyle.Translate +- [ ] SkiaSharp.SKPathAddMode + - [ ] F:SkiaSharp.SKPathAddMode.Append + - [ ] F:SkiaSharp.SKPathAddMode.Extend +- [ ] SkiaSharp.SKPathArcSize + - [ ] F:SkiaSharp.SKPathArcSize.Large + - [ ] F:SkiaSharp.SKPathArcSize.Small +- [ ] SkiaSharp.SKPathConvexity + - [ ] F:SkiaSharp.SKPathConvexity.Concave + - [ ] F:SkiaSharp.SKPathConvexity.Convex + - [ ] F:SkiaSharp.SKPathConvexity.Unknown +- [ ] SkiaSharp.SKPathDirection + - [ ] F:SkiaSharp.SKPathDirection.Clockwise + - [ ] F:SkiaSharp.SKPathDirection.CounterClockwise +- [ ] SkiaSharp.SKPathEffect + - [ ] M:SkiaSharp.SKPathEffect.Create1DPath(SkiaSharp.SKPath,System.Single,System.Single,SkiaSharp.SKPath1DPathEffectStyle) + - [ ] M:SkiaSharp.SKPathEffect.Create2DLine(System.Single,SkiaSharp.SKMatrix) + - [ ] M:SkiaSharp.SKPathEffect.Create2DPath(SkiaSharp.SKMatrix,SkiaSharp.SKPath) + - [ ] M:SkiaSharp.SKPathEffect.CreateArcTo(System.Single) + - [ ] M:SkiaSharp.SKPathEffect.CreateCompose(SkiaSharp.SKPathEffect,SkiaSharp.SKPathEffect) + - [ ] M:SkiaSharp.SKPathEffect.CreateCorner(System.Single) + - [ ] M:SkiaSharp.SKPathEffect.CreateDash(System.Single[],System.Single) + - [ ] M:SkiaSharp.SKPathEffect.CreateDiscrete(System.Single,System.Single,System.UInt32) + - [ ] M:SkiaSharp.SKPathEffect.CreateSum(SkiaSharp.SKPathEffect,SkiaSharp.SKPathEffect) + - [ ] M:SkiaSharp.SKPathEffect.CreateTrim(System.Single,System.Single,SkiaSharp.SKTrimPathEffectMode) + - [ ] M:SkiaSharp.SKPathEffect.CreateTrim(System.Single,System.Single) + - [ ] M:SkiaSharp.SKPathEffect.Dispose(System.Boolean) +- [ ] SkiaSharp.SKPathFillType + - [ ] F:SkiaSharp.SKPathFillType.EvenOdd + - [ ] F:SkiaSharp.SKPathFillType.InverseEvenOdd + - [ ] F:SkiaSharp.SKPathFillType.InverseWinding + - [ ] F:SkiaSharp.SKPathFillType.Winding +- [ ] SkiaSharp.SKPathMeasure + - [ ] M:SkiaSharp.SKPathMeasure.#ctor + - [ ] M:SkiaSharp.SKPathMeasure.#ctor(SkiaSharp.SKPath,System.Boolean,System.Single) + - [ ] M:SkiaSharp.SKPathMeasure.Dispose(System.Boolean) + - [ ] M:SkiaSharp.SKPathMeasure.DisposeNative + - [ ] M:SkiaSharp.SKPathMeasure.GetMatrix(System.Single,SkiaSharp.SKMatrix@,SkiaSharp.SKPathMeasureMatrixFlags) + - [ ] M:SkiaSharp.SKPathMeasure.GetMatrix(System.Single,SkiaSharp.SKPathMeasureMatrixFlags) + - [ ] M:SkiaSharp.SKPathMeasure.GetPosition(System.Single,SkiaSharp.SKPoint@) + - [ ] M:SkiaSharp.SKPathMeasure.GetPosition(System.Single) + - [ ] M:SkiaSharp.SKPathMeasure.GetPositionAndTangent(System.Single,SkiaSharp.SKPoint@,SkiaSharp.SKPoint@) + - [ ] M:SkiaSharp.SKPathMeasure.GetSegment(System.Single,System.Single,SkiaSharp.SKPath,System.Boolean) + - [ ] M:SkiaSharp.SKPathMeasure.GetSegment(System.Single,System.Single,System.Boolean) + - [ ] M:SkiaSharp.SKPathMeasure.GetTangent(System.Single,SkiaSharp.SKPoint@) + - [ ] M:SkiaSharp.SKPathMeasure.GetTangent(System.Single) + - [ ] M:SkiaSharp.SKPathMeasure.NextContour + - [ ] M:SkiaSharp.SKPathMeasure.SetPath(SkiaSharp.SKPath,System.Boolean) + - [ ] M:SkiaSharp.SKPathMeasure.SetPath(SkiaSharp.SKPath) + - [ ] P:SkiaSharp.SKPathMeasure.IsClosed + - [ ] P:SkiaSharp.SKPathMeasure.Length +- [ ] SkiaSharp.SKPathMeasureMatrixFlags + - [ ] F:SkiaSharp.SKPathMeasureMatrixFlags.GetPosition + - [ ] F:SkiaSharp.SKPathMeasureMatrixFlags.GetPositionAndTangent + - [ ] F:SkiaSharp.SKPathMeasureMatrixFlags.GetTangent +- [ ] SkiaSharp.SKPathOp + - [ ] F:SkiaSharp.SKPathOp.Difference + - [ ] F:SkiaSharp.SKPathOp.Intersect + - [ ] F:SkiaSharp.SKPathOp.ReverseDifference + - [ ] F:SkiaSharp.SKPathOp.Union + - [ ] F:SkiaSharp.SKPathOp.Xor +- [ ] SkiaSharp.SKPathSegmentMask + - [ ] F:SkiaSharp.SKPathSegmentMask.Conic + - [ ] F:SkiaSharp.SKPathSegmentMask.Cubic + - [ ] F:SkiaSharp.SKPathSegmentMask.Line + - [ ] F:SkiaSharp.SKPathSegmentMask.Quad +- [ ] SkiaSharp.SKPathVerb + - [ ] F:SkiaSharp.SKPathVerb.Close + - [ ] F:SkiaSharp.SKPathVerb.Conic + - [ ] F:SkiaSharp.SKPathVerb.Cubic + - [ ] F:SkiaSharp.SKPathVerb.Done + - [ ] F:SkiaSharp.SKPathVerb.Line + - [ ] F:SkiaSharp.SKPathVerb.Move + - [ ] F:SkiaSharp.SKPathVerb.Quad +- [ ] SkiaSharp.SKPicture + - [ ] M:SkiaSharp.SKPicture.Deserialize(SkiaSharp.SKData) + - [ ] M:SkiaSharp.SKPicture.Deserialize(SkiaSharp.SKStream) + - [ ] M:SkiaSharp.SKPicture.Deserialize(System.IntPtr,System.Int32) + - [ ] M:SkiaSharp.SKPicture.Deserialize(System.IO.Stream) + - [ ] M:SkiaSharp.SKPicture.Deserialize(System.ReadOnlySpan{System.Byte}) + - [ ] M:SkiaSharp.SKPicture.Dispose(System.Boolean) + - [ ] M:SkiaSharp.SKPicture.Serialize + - [ ] M:SkiaSharp.SKPicture.Serialize(SkiaSharp.SKWStream) + - [ ] M:SkiaSharp.SKPicture.Serialize(System.IO.Stream) + - [ ] M:SkiaSharp.SKPicture.ToShader + - [ ] M:SkiaSharp.SKPicture.ToShader(SkiaSharp.SKShaderTileMode,SkiaSharp.SKShaderTileMode,SkiaSharp.SKMatrix,SkiaSharp.SKRect) + - [ ] M:SkiaSharp.SKPicture.ToShader(SkiaSharp.SKShaderTileMode,SkiaSharp.SKShaderTileMode,SkiaSharp.SKRect) + - [ ] M:SkiaSharp.SKPicture.ToShader(SkiaSharp.SKShaderTileMode,SkiaSharp.SKShaderTileMode) + - [ ] P:SkiaSharp.SKPicture.CullRect + - [ ] P:SkiaSharp.SKPicture.UniqueId +- [ ] SkiaSharp.SKPictureRecorder + - [ ] M:SkiaSharp.SKPictureRecorder.#ctor + - [ ] M:SkiaSharp.SKPictureRecorder.BeginRecording(SkiaSharp.SKRect) + - [ ] M:SkiaSharp.SKPictureRecorder.Dispose(System.Boolean) + - [ ] M:SkiaSharp.SKPictureRecorder.DisposeNative + - [ ] M:SkiaSharp.SKPictureRecorder.EndRecording + - [ ] M:SkiaSharp.SKPictureRecorder.EndRecordingAsDrawable + - [ ] P:SkiaSharp.SKPictureRecorder.RecordingCanvas +- [ ] SkiaSharp.SKPixelGeometry + - [ ] F:SkiaSharp.SKPixelGeometry.BgrHorizontal + - [ ] F:SkiaSharp.SKPixelGeometry.BgrVertical + - [ ] F:SkiaSharp.SKPixelGeometry.RgbHorizontal + - [ ] F:SkiaSharp.SKPixelGeometry.RgbVertical + - [ ] F:SkiaSharp.SKPixelGeometry.Unknown +- [ ] SkiaSharp.SKPixelSerializer + - [ ] M:SkiaSharp.SKPixelSerializer.#ctor + - [ ] M:SkiaSharp.SKPixelSerializer.Create(System.Func{SkiaSharp.SKPixmap,SkiaSharp.SKData}) + - [ ] M:SkiaSharp.SKPixelSerializer.Create(System.Func{System.IntPtr,System.IntPtr,System.Boolean},System.Func{SkiaSharp.SKPixmap,SkiaSharp.SKData}) + - [ ] M:SkiaSharp.SKPixelSerializer.Dispose(System.Boolean) + - [ ] M:SkiaSharp.SKPixelSerializer.Encode(SkiaSharp.SKPixmap) + - [ ] M:SkiaSharp.SKPixelSerializer.OnEncode(SkiaSharp.SKPixmap) + - [ ] M:SkiaSharp.SKPixelSerializer.OnUseEncodedData(System.IntPtr,System.IntPtr) + - [ ] M:SkiaSharp.SKPixelSerializer.UseEncodedData(System.IntPtr,System.UInt64) +- [ ] SkiaSharp.SKPixmap + - [ ] M:SkiaSharp.SKPixmap.#ctor + - [ ] M:SkiaSharp.SKPixmap.#ctor(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32,SkiaSharp.SKColorTable) + - [ ] M:SkiaSharp.SKPixmap.#ctor(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32) + - [ ] M:SkiaSharp.SKPixmap.#ctor(SkiaSharp.SKImageInfo,System.IntPtr) + - [ ] M:SkiaSharp.SKPixmap.Dispose(System.Boolean) + - [ ] M:SkiaSharp.SKPixmap.DisposeManaged + - [ ] M:SkiaSharp.SKPixmap.DisposeNative + - [ ] M:SkiaSharp.SKPixmap.Encode(SkiaSharp.SKEncodedImageFormat,System.Int32) + - [ ] M:SkiaSharp.SKPixmap.Encode(SkiaSharp.SKJpegEncoderOptions) + - [ ] M:SkiaSharp.SKPixmap.Encode(SkiaSharp.SKPngEncoderOptions) + - [ ] M:SkiaSharp.SKPixmap.Encode(SkiaSharp.SKWebpEncoderOptions) + - [ ] M:SkiaSharp.SKPixmap.Encode(SkiaSharp.SKWStream,SkiaSharp.SKBitmap,SkiaSharp.SKEncodedImageFormat,System.Int32) + - [ ] M:SkiaSharp.SKPixmap.Encode(SkiaSharp.SKWStream,SkiaSharp.SKEncodedImageFormat,System.Int32) + - [ ] M:SkiaSharp.SKPixmap.Encode(SkiaSharp.SKWStream,SkiaSharp.SKJpegEncoderOptions) + - [ ] M:SkiaSharp.SKPixmap.Encode(SkiaSharp.SKWStream,SkiaSharp.SKPixmap,SkiaSharp.SKEncodedImageFormat,System.Int32) + - [ ] M:SkiaSharp.SKPixmap.Encode(SkiaSharp.SKWStream,SkiaSharp.SKPixmap,SkiaSharp.SKJpegEncoderOptions) + - [ ] M:SkiaSharp.SKPixmap.Encode(SkiaSharp.SKWStream,SkiaSharp.SKPixmap,SkiaSharp.SKPngEncoderOptions) + - [ ] M:SkiaSharp.SKPixmap.Encode(SkiaSharp.SKWStream,SkiaSharp.SKPixmap,SkiaSharp.SKWebpEncoderOptions) + - [ ] M:SkiaSharp.SKPixmap.Encode(SkiaSharp.SKWStream,SkiaSharp.SKPngEncoderOptions) + - [ ] M:SkiaSharp.SKPixmap.Encode(SkiaSharp.SKWStream,SkiaSharp.SKWebpEncoderOptions) + - [ ] M:SkiaSharp.SKPixmap.Encode(System.IO.Stream,SkiaSharp.SKEncodedImageFormat,System.Int32) + - [ ] M:SkiaSharp.SKPixmap.Encode(System.IO.Stream,SkiaSharp.SKJpegEncoderOptions) + - [ ] M:SkiaSharp.SKPixmap.Encode(System.IO.Stream,SkiaSharp.SKPngEncoderOptions) + - [ ] M:SkiaSharp.SKPixmap.Encode(System.IO.Stream,SkiaSharp.SKWebpEncoderOptions) + - [ ] M:SkiaSharp.SKPixmap.Erase(SkiaSharp.SKColor,SkiaSharp.SKRectI) + - [ ] M:SkiaSharp.SKPixmap.Erase(SkiaSharp.SKColor) + - [ ] M:SkiaSharp.SKPixmap.Erase(SkiaSharp.SKColorF,SkiaSharp.SKColorSpace,SkiaSharp.SKRectI) + - [ ] M:SkiaSharp.SKPixmap.Erase(SkiaSharp.SKColorF,SkiaSharp.SKRectI) + - [ ] M:SkiaSharp.SKPixmap.Erase(SkiaSharp.SKColorF) + - [ ] M:SkiaSharp.SKPixmap.ExtractSubset(SkiaSharp.SKPixmap,SkiaSharp.SKRectI) + - [ ] M:SkiaSharp.SKPixmap.ExtractSubset(SkiaSharp.SKRectI) + - [ ] M:SkiaSharp.SKPixmap.GetPixelColor(System.Int32,System.Int32) + - [ ] M:SkiaSharp.SKPixmap.GetPixels + - [ ] M:SkiaSharp.SKPixmap.GetPixels(System.Int32,System.Int32) + - [ ] M:SkiaSharp.SKPixmap.GetPixelSpan + - [ ] M:SkiaSharp.SKPixmap.GetPixelSpan``1 + - [ ] M:SkiaSharp.SKPixmap.ReadPixels(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32,System.Int32,System.Int32,SkiaSharp.SKTransferFunctionBehavior) + - [ ] M:SkiaSharp.SKPixmap.ReadPixels(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32,System.Int32,System.Int32) + - [ ] M:SkiaSharp.SKPixmap.ReadPixels(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32) + - [ ] M:SkiaSharp.SKPixmap.ReadPixels(SkiaSharp.SKPixmap,System.Int32,System.Int32) + - [ ] M:SkiaSharp.SKPixmap.ReadPixels(SkiaSharp.SKPixmap) + - [ ] M:SkiaSharp.SKPixmap.Reset + - [ ] M:SkiaSharp.SKPixmap.Reset(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32,SkiaSharp.SKColorTable) + - [ ] M:SkiaSharp.SKPixmap.Reset(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32) + - [ ] M:SkiaSharp.SKPixmap.Resize(SkiaSharp.SKPixmap,SkiaSharp.SKPixmap,SkiaSharp.SKBitmapResizeMethod) + - [ ] M:SkiaSharp.SKPixmap.ScalePixels(SkiaSharp.SKPixmap,SkiaSharp.SKFilterQuality) + - [ ] M:SkiaSharp.SKPixmap.WithAlphaType(SkiaSharp.SKAlphaType) + - [ ] M:SkiaSharp.SKPixmap.WithColorSpace(SkiaSharp.SKColorSpace) + - [ ] M:SkiaSharp.SKPixmap.WithColorType(SkiaSharp.SKColorType) + - [ ] P:SkiaSharp.SKPixmap.AlphaType + - [ ] P:SkiaSharp.SKPixmap.BytesPerPixel + - [ ] P:SkiaSharp.SKPixmap.BytesSize + - [ ] P:SkiaSharp.SKPixmap.ColorSpace + - [ ] P:SkiaSharp.SKPixmap.ColorTable + - [ ] P:SkiaSharp.SKPixmap.ColorType + - [ ] P:SkiaSharp.SKPixmap.Height + - [ ] P:SkiaSharp.SKPixmap.Info + - [ ] P:SkiaSharp.SKPixmap.Rect + - [ ] P:SkiaSharp.SKPixmap.RowBytes + - [ ] P:SkiaSharp.SKPixmap.Size + - [ ] P:SkiaSharp.SKPixmap.Width +- [ ] SkiaSharp.SKPMColor + - [ ] M:SkiaSharp.SKPMColor.#ctor(System.UInt32) + - [ ] M:SkiaSharp.SKPMColor.Equals(SkiaSharp.SKPMColor) + - [ ] M:SkiaSharp.SKPMColor.Equals(System.Object) + - [ ] M:SkiaSharp.SKPMColor.GetHashCode + - [ ] M:SkiaSharp.SKPMColor.op_Equality(SkiaSharp.SKPMColor,SkiaSharp.SKPMColor) + - [ ] M:SkiaSharp.SKPMColor.op_Explicit(SkiaSharp.SKColor)~SkiaSharp.SKPMColor + - [ ] M:SkiaSharp.SKPMColor.op_Explicit(SkiaSharp.SKPMColor)~SkiaSharp.SKColor + - [ ] M:SkiaSharp.SKPMColor.op_Explicit(SkiaSharp.SKPMColor)~System.UInt32 + - [ ] M:SkiaSharp.SKPMColor.op_Implicit(System.UInt32)~SkiaSharp.SKPMColor + - [ ] M:SkiaSharp.SKPMColor.op_Inequality(SkiaSharp.SKPMColor,SkiaSharp.SKPMColor) + - [ ] M:SkiaSharp.SKPMColor.PreMultiply(SkiaSharp.SKColor) + - [ ] M:SkiaSharp.SKPMColor.PreMultiply(SkiaSharp.SKColor[]) + - [ ] M:SkiaSharp.SKPMColor.ToString + - [ ] M:SkiaSharp.SKPMColor.UnPreMultiply(SkiaSharp.SKPMColor) + - [ ] M:SkiaSharp.SKPMColor.UnPreMultiply(SkiaSharp.SKPMColor[]) + - [ ] P:SkiaSharp.SKPMColor.Alpha + - [ ] P:SkiaSharp.SKPMColor.Blue + - [ ] P:SkiaSharp.SKPMColor.Green + - [ ] P:SkiaSharp.SKPMColor.Red +- [ ] SkiaSharp.SKPngEncoderFilterFlags + - [ ] F:SkiaSharp.SKPngEncoderFilterFlags.AllFilters + - [ ] F:SkiaSharp.SKPngEncoderFilterFlags.Avg + - [ ] F:SkiaSharp.SKPngEncoderFilterFlags.NoFilters + - [ ] F:SkiaSharp.SKPngEncoderFilterFlags.None + - [ ] F:SkiaSharp.SKPngEncoderFilterFlags.Paeth + - [ ] F:SkiaSharp.SKPngEncoderFilterFlags.Sub + - [ ] F:SkiaSharp.SKPngEncoderFilterFlags.Up +- [ ] SkiaSharp.SKPngEncoderOptions + - [ ] F:SkiaSharp.SKPngEncoderOptions.Default + - [ ] M:SkiaSharp.SKPngEncoderOptions.#ctor(SkiaSharp.SKPngEncoderFilterFlags,System.Int32,SkiaSharp.SKTransferFunctionBehavior) + - [ ] M:SkiaSharp.SKPngEncoderOptions.#ctor(SkiaSharp.SKPngEncoderFilterFlags,System.Int32) + - [ ] M:SkiaSharp.SKPngEncoderOptions.Equals(SkiaSharp.SKPngEncoderOptions) + - [ ] M:SkiaSharp.SKPngEncoderOptions.Equals(System.Object) + - [ ] M:SkiaSharp.SKPngEncoderOptions.GetHashCode + - [ ] M:SkiaSharp.SKPngEncoderOptions.op_Equality(SkiaSharp.SKPngEncoderOptions,SkiaSharp.SKPngEncoderOptions) + - [ ] M:SkiaSharp.SKPngEncoderOptions.op_Inequality(SkiaSharp.SKPngEncoderOptions,SkiaSharp.SKPngEncoderOptions) + - [ ] P:SkiaSharp.SKPngEncoderOptions.FilterFlags + - [ ] P:SkiaSharp.SKPngEncoderOptions.UnpremulBehavior + - [ ] P:SkiaSharp.SKPngEncoderOptions.ZLibLevel +- [ ] SkiaSharp.SKPoint + - [ ] F:SkiaSharp.SKPoint.Empty + - [ ] M:SkiaSharp.SKPoint.#ctor(System.Single,System.Single) + - [ ] M:SkiaSharp.SKPoint.Add(SkiaSharp.SKPoint,SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.SKPoint.Add(SkiaSharp.SKPoint,SkiaSharp.SKPointI) + - [ ] M:SkiaSharp.SKPoint.Add(SkiaSharp.SKPoint,SkiaSharp.SKSize) + - [ ] M:SkiaSharp.SKPoint.Add(SkiaSharp.SKPoint,SkiaSharp.SKSizeI) + - [ ] M:SkiaSharp.SKPoint.Distance(SkiaSharp.SKPoint,SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.SKPoint.DistanceSquared(SkiaSharp.SKPoint,SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.SKPoint.Equals(SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.SKPoint.Equals(System.Object) + - [ ] M:SkiaSharp.SKPoint.GetHashCode + - [ ] M:SkiaSharp.SKPoint.Normalize(SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.SKPoint.Offset(SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.SKPoint.Offset(System.Single,System.Single) + - [ ] M:SkiaSharp.SKPoint.op_Addition(SkiaSharp.SKPoint,SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.SKPoint.op_Addition(SkiaSharp.SKPoint,SkiaSharp.SKPointI) + - [ ] M:SkiaSharp.SKPoint.op_Addition(SkiaSharp.SKPoint,SkiaSharp.SKSize) + - [ ] M:SkiaSharp.SKPoint.op_Addition(SkiaSharp.SKPoint,SkiaSharp.SKSizeI) + - [ ] M:SkiaSharp.SKPoint.op_Equality(SkiaSharp.SKPoint,SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.SKPoint.op_Inequality(SkiaSharp.SKPoint,SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.SKPoint.op_Subtraction(SkiaSharp.SKPoint,SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.SKPoint.op_Subtraction(SkiaSharp.SKPoint,SkiaSharp.SKPointI) + - [ ] M:SkiaSharp.SKPoint.op_Subtraction(SkiaSharp.SKPoint,SkiaSharp.SKSize) + - [ ] M:SkiaSharp.SKPoint.op_Subtraction(SkiaSharp.SKPoint,SkiaSharp.SKSizeI) + - [ ] M:SkiaSharp.SKPoint.Reflect(SkiaSharp.SKPoint,SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.SKPoint.Subtract(SkiaSharp.SKPoint,SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.SKPoint.Subtract(SkiaSharp.SKPoint,SkiaSharp.SKPointI) + - [ ] M:SkiaSharp.SKPoint.Subtract(SkiaSharp.SKPoint,SkiaSharp.SKSize) + - [ ] M:SkiaSharp.SKPoint.Subtract(SkiaSharp.SKPoint,SkiaSharp.SKSizeI) + - [ ] M:SkiaSharp.SKPoint.ToString + - [ ] P:SkiaSharp.SKPoint.IsEmpty + - [ ] P:SkiaSharp.SKPoint.Length + - [ ] P:SkiaSharp.SKPoint.LengthSquared + - [ ] P:SkiaSharp.SKPoint.X + - [ ] P:SkiaSharp.SKPoint.Y +- [ ] SkiaSharp.SKPoint3 + - [ ] F:SkiaSharp.SKPoint3.Empty + - [ ] M:SkiaSharp.SKPoint3.#ctor(System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKPoint3.Add(SkiaSharp.SKPoint3,SkiaSharp.SKPoint3) + - [ ] M:SkiaSharp.SKPoint3.Equals(SkiaSharp.SKPoint3) + - [ ] M:SkiaSharp.SKPoint3.Equals(System.Object) + - [ ] M:SkiaSharp.SKPoint3.GetHashCode + - [ ] M:SkiaSharp.SKPoint3.op_Addition(SkiaSharp.SKPoint3,SkiaSharp.SKPoint3) + - [ ] M:SkiaSharp.SKPoint3.op_Equality(SkiaSharp.SKPoint3,SkiaSharp.SKPoint3) + - [ ] M:SkiaSharp.SKPoint3.op_Inequality(SkiaSharp.SKPoint3,SkiaSharp.SKPoint3) + - [ ] M:SkiaSharp.SKPoint3.op_Subtraction(SkiaSharp.SKPoint3,SkiaSharp.SKPoint3) + - [ ] M:SkiaSharp.SKPoint3.Subtract(SkiaSharp.SKPoint3,SkiaSharp.SKPoint3) + - [ ] M:SkiaSharp.SKPoint3.ToString + - [ ] P:SkiaSharp.SKPoint3.IsEmpty + - [ ] P:SkiaSharp.SKPoint3.X + - [ ] P:SkiaSharp.SKPoint3.Y + - [ ] P:SkiaSharp.SKPoint3.Z +- [ ] SkiaSharp.SKPointI + - [ ] F:SkiaSharp.SKPointI.Empty + - [ ] M:SkiaSharp.SKPointI.#ctor(SkiaSharp.SKSizeI) + - [ ] M:SkiaSharp.SKPointI.#ctor(System.Int32,System.Int32) + - [ ] M:SkiaSharp.SKPointI.Add(SkiaSharp.SKPointI,SkiaSharp.SKPointI) + - [ ] M:SkiaSharp.SKPointI.Add(SkiaSharp.SKPointI,SkiaSharp.SKSizeI) + - [ ] M:SkiaSharp.SKPointI.Ceiling(SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.SKPointI.Distance(SkiaSharp.SKPointI,SkiaSharp.SKPointI) + - [ ] M:SkiaSharp.SKPointI.DistanceSquared(SkiaSharp.SKPointI,SkiaSharp.SKPointI) + - [ ] M:SkiaSharp.SKPointI.Equals(SkiaSharp.SKPointI) + - [ ] M:SkiaSharp.SKPointI.Equals(System.Object) + - [ ] M:SkiaSharp.SKPointI.GetHashCode + - [ ] M:SkiaSharp.SKPointI.Normalize(SkiaSharp.SKPointI) + - [ ] M:SkiaSharp.SKPointI.Offset(SkiaSharp.SKPointI) + - [ ] M:SkiaSharp.SKPointI.Offset(System.Int32,System.Int32) + - [ ] M:SkiaSharp.SKPointI.op_Addition(SkiaSharp.SKPointI,SkiaSharp.SKPointI) + - [ ] M:SkiaSharp.SKPointI.op_Addition(SkiaSharp.SKPointI,SkiaSharp.SKSizeI) + - [ ] M:SkiaSharp.SKPointI.op_Equality(SkiaSharp.SKPointI,SkiaSharp.SKPointI) + - [ ] M:SkiaSharp.SKPointI.op_Explicit(SkiaSharp.SKPointI)~SkiaSharp.SKSizeI + - [ ] M:SkiaSharp.SKPointI.op_Implicit(SkiaSharp.SKPointI)~SkiaSharp.SKPoint + - [ ] M:SkiaSharp.SKPointI.op_Inequality(SkiaSharp.SKPointI,SkiaSharp.SKPointI) + - [ ] M:SkiaSharp.SKPointI.op_Subtraction(SkiaSharp.SKPointI,SkiaSharp.SKPointI) + - [ ] M:SkiaSharp.SKPointI.op_Subtraction(SkiaSharp.SKPointI,SkiaSharp.SKSizeI) + - [ ] M:SkiaSharp.SKPointI.Reflect(SkiaSharp.SKPointI,SkiaSharp.SKPointI) + - [ ] M:SkiaSharp.SKPointI.Round(SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.SKPointI.Subtract(SkiaSharp.SKPointI,SkiaSharp.SKPointI) + - [ ] M:SkiaSharp.SKPointI.Subtract(SkiaSharp.SKPointI,SkiaSharp.SKSizeI) + - [ ] M:SkiaSharp.SKPointI.ToString + - [ ] M:SkiaSharp.SKPointI.Truncate(SkiaSharp.SKPoint) + - [ ] P:SkiaSharp.SKPointI.IsEmpty + - [ ] P:SkiaSharp.SKPointI.Length + - [ ] P:SkiaSharp.SKPointI.LengthSquared + - [ ] P:SkiaSharp.SKPointI.X + - [ ] P:SkiaSharp.SKPointI.Y +- [ ] SkiaSharp.SKPointMode + - [ ] F:SkiaSharp.SKPointMode.Lines + - [ ] F:SkiaSharp.SKPointMode.Points + - [ ] F:SkiaSharp.SKPointMode.Polygon +- [ ] SkiaSharp.SKPositionedRunBuffer + - [ ] M:SkiaSharp.SKPositionedRunBuffer.GetPositionSpan + - [ ] M:SkiaSharp.SKPositionedRunBuffer.SetPositions(System.ReadOnlySpan{SkiaSharp.SKPoint}) +- [ ] SkiaSharp.SKRect + - [ ] F:SkiaSharp.SKRect.Empty + - [ ] M:SkiaSharp.SKRect.#ctor(System.Single,System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKRect.AspectFill(SkiaSharp.SKSize) + - [ ] M:SkiaSharp.SKRect.AspectFit(SkiaSharp.SKSize) + - [ ] M:SkiaSharp.SKRect.Contains(SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.SKRect.Contains(SkiaSharp.SKRect) + - [ ] M:SkiaSharp.SKRect.Contains(System.Single,System.Single) + - [ ] M:SkiaSharp.SKRect.Create(SkiaSharp.SKPoint,SkiaSharp.SKSize) + - [ ] M:SkiaSharp.SKRect.Create(SkiaSharp.SKSize) + - [ ] M:SkiaSharp.SKRect.Create(System.Single,System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKRect.Create(System.Single,System.Single) + - [ ] M:SkiaSharp.SKRect.Equals(SkiaSharp.SKRect) + - [ ] M:SkiaSharp.SKRect.Equals(System.Object) + - [ ] M:SkiaSharp.SKRect.GetHashCode + - [ ] M:SkiaSharp.SKRect.Inflate(SkiaSharp.SKRect,System.Single,System.Single) + - [ ] M:SkiaSharp.SKRect.Inflate(SkiaSharp.SKSize) + - [ ] M:SkiaSharp.SKRect.Inflate(System.Single,System.Single) + - [ ] M:SkiaSharp.SKRect.Intersect(SkiaSharp.SKRect,SkiaSharp.SKRect) + - [ ] M:SkiaSharp.SKRect.Intersect(SkiaSharp.SKRect) + - [ ] M:SkiaSharp.SKRect.IntersectsWith(SkiaSharp.SKRect) + - [ ] M:SkiaSharp.SKRect.IntersectsWithInclusive(SkiaSharp.SKRect) + - [ ] M:SkiaSharp.SKRect.Offset(SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.SKRect.Offset(System.Single,System.Single) + - [ ] M:SkiaSharp.SKRect.op_Equality(SkiaSharp.SKRect,SkiaSharp.SKRect) + - [ ] M:SkiaSharp.SKRect.op_Implicit(SkiaSharp.SKRectI)~SkiaSharp.SKRect + - [ ] M:SkiaSharp.SKRect.op_Inequality(SkiaSharp.SKRect,SkiaSharp.SKRect) + - [ ] M:SkiaSharp.SKRect.ToString + - [ ] M:SkiaSharp.SKRect.Union(SkiaSharp.SKRect,SkiaSharp.SKRect) + - [ ] M:SkiaSharp.SKRect.Union(SkiaSharp.SKRect) + - [ ] P:SkiaSharp.SKRect.Bottom + - [ ] P:SkiaSharp.SKRect.Height + - [ ] P:SkiaSharp.SKRect.IsEmpty + - [ ] P:SkiaSharp.SKRect.Left + - [ ] P:SkiaSharp.SKRect.Location + - [ ] P:SkiaSharp.SKRect.MidX + - [ ] P:SkiaSharp.SKRect.MidY + - [ ] P:SkiaSharp.SKRect.Right + - [ ] P:SkiaSharp.SKRect.Size + - [ ] P:SkiaSharp.SKRect.Standardized + - [ ] P:SkiaSharp.SKRect.Top + - [ ] P:SkiaSharp.SKRect.Width +- [ ] SkiaSharp.SKRectI + - [ ] F:SkiaSharp.SKRectI.Empty + - [ ] M:SkiaSharp.SKRectI.#ctor(System.Int32,System.Int32,System.Int32,System.Int32) + - [ ] M:SkiaSharp.SKRectI.AspectFill(SkiaSharp.SKSizeI) + - [ ] M:SkiaSharp.SKRectI.AspectFit(SkiaSharp.SKSizeI) + - [ ] M:SkiaSharp.SKRectI.Ceiling(SkiaSharp.SKRect,System.Boolean) + - [ ] M:SkiaSharp.SKRectI.Ceiling(SkiaSharp.SKRect) + - [ ] M:SkiaSharp.SKRectI.Contains(SkiaSharp.SKPointI) + - [ ] M:SkiaSharp.SKRectI.Contains(SkiaSharp.SKRectI) + - [ ] M:SkiaSharp.SKRectI.Contains(System.Int32,System.Int32) + - [ ] M:SkiaSharp.SKRectI.Create(SkiaSharp.SKPointI,SkiaSharp.SKSizeI) + - [ ] M:SkiaSharp.SKRectI.Create(SkiaSharp.SKSizeI) + - [ ] M:SkiaSharp.SKRectI.Create(System.Int32,System.Int32,System.Int32,System.Int32) + - [ ] M:SkiaSharp.SKRectI.Create(System.Int32,System.Int32) + - [ ] M:SkiaSharp.SKRectI.Equals(SkiaSharp.SKRectI) + - [ ] M:SkiaSharp.SKRectI.Equals(System.Object) + - [ ] M:SkiaSharp.SKRectI.Floor(SkiaSharp.SKRect,System.Boolean) + - [ ] M:SkiaSharp.SKRectI.Floor(SkiaSharp.SKRect) + - [ ] M:SkiaSharp.SKRectI.GetHashCode + - [ ] M:SkiaSharp.SKRectI.Inflate(SkiaSharp.SKRectI,System.Int32,System.Int32) + - [ ] M:SkiaSharp.SKRectI.Inflate(SkiaSharp.SKSizeI) + - [ ] M:SkiaSharp.SKRectI.Inflate(System.Int32,System.Int32) + - [ ] M:SkiaSharp.SKRectI.Intersect(SkiaSharp.SKRectI,SkiaSharp.SKRectI) + - [ ] M:SkiaSharp.SKRectI.Intersect(SkiaSharp.SKRectI) + - [ ] M:SkiaSharp.SKRectI.IntersectsWith(SkiaSharp.SKRectI) + - [ ] M:SkiaSharp.SKRectI.IntersectsWithInclusive(SkiaSharp.SKRectI) + - [ ] M:SkiaSharp.SKRectI.Offset(SkiaSharp.SKPointI) + - [ ] M:SkiaSharp.SKRectI.Offset(System.Int32,System.Int32) + - [ ] M:SkiaSharp.SKRectI.op_Equality(SkiaSharp.SKRectI,SkiaSharp.SKRectI) + - [ ] M:SkiaSharp.SKRectI.op_Inequality(SkiaSharp.SKRectI,SkiaSharp.SKRectI) + - [ ] M:SkiaSharp.SKRectI.Round(SkiaSharp.SKRect) + - [ ] M:SkiaSharp.SKRectI.ToString + - [ ] M:SkiaSharp.SKRectI.Truncate(SkiaSharp.SKRect) + - [ ] M:SkiaSharp.SKRectI.Union(SkiaSharp.SKRectI,SkiaSharp.SKRectI) + - [ ] M:SkiaSharp.SKRectI.Union(SkiaSharp.SKRectI) + - [ ] P:SkiaSharp.SKRectI.Bottom + - [ ] P:SkiaSharp.SKRectI.Height + - [ ] P:SkiaSharp.SKRectI.IsEmpty + - [ ] P:SkiaSharp.SKRectI.Left + - [ ] P:SkiaSharp.SKRectI.Location + - [ ] P:SkiaSharp.SKRectI.MidX + - [ ] P:SkiaSharp.SKRectI.MidY + - [ ] P:SkiaSharp.SKRectI.Right + - [ ] P:SkiaSharp.SKRectI.Size + - [ ] P:SkiaSharp.SKRectI.Standardized + - [ ] P:SkiaSharp.SKRectI.Top + - [ ] P:SkiaSharp.SKRectI.Width +- [ ] SkiaSharp.SKRegion + - [ ] M:SkiaSharp.SKRegion.#ctor + - [ ] M:SkiaSharp.SKRegion.#ctor(SkiaSharp.SKPath) + - [ ] M:SkiaSharp.SKRegion.#ctor(SkiaSharp.SKRectI) + - [ ] M:SkiaSharp.SKRegion.#ctor(SkiaSharp.SKRegion) + - [ ] M:SkiaSharp.SKRegion.Contains(SkiaSharp.SKPath) + - [ ] M:SkiaSharp.SKRegion.Contains(SkiaSharp.SKPointI) + - [ ] M:SkiaSharp.SKRegion.Contains(SkiaSharp.SKRectI) + - [ ] M:SkiaSharp.SKRegion.Contains(SkiaSharp.SKRegion) + - [ ] M:SkiaSharp.SKRegion.Contains(System.Int32,System.Int32) + - [ ] M:SkiaSharp.SKRegion.CreateClipIterator(SkiaSharp.SKRectI) + - [ ] M:SkiaSharp.SKRegion.CreateRectIterator + - [ ] M:SkiaSharp.SKRegion.CreateSpanIterator(System.Int32,System.Int32,System.Int32) + - [ ] M:SkiaSharp.SKRegion.Dispose(System.Boolean) + - [ ] M:SkiaSharp.SKRegion.DisposeNative + - [ ] M:SkiaSharp.SKRegion.GetBoundaryPath + - [ ] M:SkiaSharp.SKRegion.Intersects(SkiaSharp.SKPath) + - [ ] M:SkiaSharp.SKRegion.Intersects(SkiaSharp.SKRectI) + - [ ] M:SkiaSharp.SKRegion.Intersects(SkiaSharp.SKRegion) + - [ ] M:SkiaSharp.SKRegion.Op(SkiaSharp.SKPath,SkiaSharp.SKRegionOperation) + - [ ] M:SkiaSharp.SKRegion.Op(SkiaSharp.SKRectI,SkiaSharp.SKRegionOperation) + - [ ] M:SkiaSharp.SKRegion.Op(SkiaSharp.SKRegion,SkiaSharp.SKRegionOperation) + - [ ] M:SkiaSharp.SKRegion.Op(System.Int32,System.Int32,System.Int32,System.Int32,SkiaSharp.SKRegionOperation) + - [ ] M:SkiaSharp.SKRegion.QuickContains(SkiaSharp.SKRectI) + - [ ] M:SkiaSharp.SKRegion.QuickReject(SkiaSharp.SKPath) + - [ ] M:SkiaSharp.SKRegion.QuickReject(SkiaSharp.SKRectI) + - [ ] M:SkiaSharp.SKRegion.QuickReject(SkiaSharp.SKRegion) + - [ ] M:SkiaSharp.SKRegion.SetEmpty + - [ ] M:SkiaSharp.SKRegion.SetPath(SkiaSharp.SKPath,SkiaSharp.SKRegion) + - [ ] M:SkiaSharp.SKRegion.SetPath(SkiaSharp.SKPath) + - [ ] M:SkiaSharp.SKRegion.SetRect(SkiaSharp.SKRectI) + - [ ] M:SkiaSharp.SKRegion.SetRects(SkiaSharp.SKRectI[]) + - [ ] M:SkiaSharp.SKRegion.SetRegion(SkiaSharp.SKRegion) + - [ ] M:SkiaSharp.SKRegion.Translate(System.Int32,System.Int32) + - [ ] P:SkiaSharp.SKRegion.Bounds + - [ ] P:SkiaSharp.SKRegion.IsComplex + - [ ] P:SkiaSharp.SKRegion.IsEmpty + - [ ] P:SkiaSharp.SKRegion.IsRect +- [ ] SkiaSharp.SKRegion.ClipIterator + - [ ] M:SkiaSharp.SKRegion.ClipIterator.DisposeNative + - [ ] M:SkiaSharp.SKRegion.ClipIterator.Next(SkiaSharp.SKRectI@) +- [ ] SkiaSharp.SKRegion.RectIterator + - [ ] M:SkiaSharp.SKRegion.RectIterator.DisposeNative + - [ ] M:SkiaSharp.SKRegion.RectIterator.Next(SkiaSharp.SKRectI@) +- [ ] SkiaSharp.SKRegion.SpanIterator + - [ ] M:SkiaSharp.SKRegion.SpanIterator.DisposeNative + - [ ] M:SkiaSharp.SKRegion.SpanIterator.Next(System.Int32@,System.Int32@) +- [ ] SkiaSharp.SKRegionOperation + - [ ] F:SkiaSharp.SKRegionOperation.Difference + - [ ] F:SkiaSharp.SKRegionOperation.Intersect + - [ ] F:SkiaSharp.SKRegionOperation.Replace + - [ ] F:SkiaSharp.SKRegionOperation.ReverseDifference + - [ ] F:SkiaSharp.SKRegionOperation.Union + - [ ] F:SkiaSharp.SKRegionOperation.XOR +- [ ] SkiaSharp.SKRotationScaleMatrix + - [ ] F:SkiaSharp.SKRotationScaleMatrix.Empty + - [ ] F:SkiaSharp.SKRotationScaleMatrix.Identity + - [ ] M:SkiaSharp.SKRotationScaleMatrix.#ctor(System.Single,System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKRotationScaleMatrix.Create(System.Single,System.Single,System.Single,System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKRotationScaleMatrix.CreateDegrees(System.Single,System.Single,System.Single,System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKRotationScaleMatrix.CreateIdentity + - [ ] M:SkiaSharp.SKRotationScaleMatrix.CreateRotation(System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKRotationScaleMatrix.CreateRotationDegrees(System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKRotationScaleMatrix.CreateScale(System.Single) + - [ ] M:SkiaSharp.SKRotationScaleMatrix.CreateTranslation(System.Single,System.Single) + - [ ] M:SkiaSharp.SKRotationScaleMatrix.Equals(SkiaSharp.SKRotationScaleMatrix) + - [ ] M:SkiaSharp.SKRotationScaleMatrix.Equals(System.Object) + - [ ] M:SkiaSharp.SKRotationScaleMatrix.GetHashCode + - [ ] M:SkiaSharp.SKRotationScaleMatrix.op_Equality(SkiaSharp.SKRotationScaleMatrix,SkiaSharp.SKRotationScaleMatrix) + - [ ] M:SkiaSharp.SKRotationScaleMatrix.op_Inequality(SkiaSharp.SKRotationScaleMatrix,SkiaSharp.SKRotationScaleMatrix) + - [ ] M:SkiaSharp.SKRotationScaleMatrix.ToMatrix + - [ ] P:SkiaSharp.SKRotationScaleMatrix.SCos + - [ ] P:SkiaSharp.SKRotationScaleMatrix.SSin + - [ ] P:SkiaSharp.SKRotationScaleMatrix.TX + - [ ] P:SkiaSharp.SKRotationScaleMatrix.TY +- [ ] SkiaSharp.SKRotationScaleRunBuffer + - [ ] M:SkiaSharp.SKRotationScaleRunBuffer.GetRotationScaleSpan + - [ ] M:SkiaSharp.SKRotationScaleRunBuffer.SetRotationScale(System.ReadOnlySpan{SkiaSharp.SKRotationScaleMatrix}) +- [ ] SkiaSharp.SKRoundRect + - [ ] M:SkiaSharp.SKRoundRect.#ctor + - [ ] M:SkiaSharp.SKRoundRect.#ctor(SkiaSharp.SKRect,System.Single,System.Single) + - [ ] M:SkiaSharp.SKRoundRect.#ctor(SkiaSharp.SKRect,System.Single) + - [ ] M:SkiaSharp.SKRoundRect.#ctor(SkiaSharp.SKRect) + - [ ] M:SkiaSharp.SKRoundRect.#ctor(SkiaSharp.SKRoundRect) + - [ ] M:SkiaSharp.SKRoundRect.CheckAllCornersCircular(System.Single) + - [ ] M:SkiaSharp.SKRoundRect.Contains(SkiaSharp.SKRect) + - [ ] M:SkiaSharp.SKRoundRect.Deflate(SkiaSharp.SKSize) + - [ ] M:SkiaSharp.SKRoundRect.Deflate(System.Single,System.Single) + - [ ] M:SkiaSharp.SKRoundRect.Dispose(System.Boolean) + - [ ] M:SkiaSharp.SKRoundRect.DisposeNative + - [ ] M:SkiaSharp.SKRoundRect.GetRadii(SkiaSharp.SKRoundRectCorner) + - [ ] M:SkiaSharp.SKRoundRect.Inflate(SkiaSharp.SKSize) + - [ ] M:SkiaSharp.SKRoundRect.Inflate(System.Single,System.Single) + - [ ] M:SkiaSharp.SKRoundRect.Offset(SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.SKRoundRect.Offset(System.Single,System.Single) + - [ ] M:SkiaSharp.SKRoundRect.SetEmpty + - [ ] M:SkiaSharp.SKRoundRect.SetNinePatch(SkiaSharp.SKRect,System.Single,System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKRoundRect.SetOval(SkiaSharp.SKRect) + - [ ] M:SkiaSharp.SKRoundRect.SetRect(SkiaSharp.SKRect,System.Single,System.Single) + - [ ] M:SkiaSharp.SKRoundRect.SetRect(SkiaSharp.SKRect) + - [ ] M:SkiaSharp.SKRoundRect.SetRectRadii(SkiaSharp.SKRect,SkiaSharp.SKPoint[]) + - [ ] M:SkiaSharp.SKRoundRect.Transform(SkiaSharp.SKMatrix) + - [ ] M:SkiaSharp.SKRoundRect.TryTransform(SkiaSharp.SKMatrix,SkiaSharp.SKRoundRect@) + - [ ] P:SkiaSharp.SKRoundRect.AllCornersCircular + - [ ] P:SkiaSharp.SKRoundRect.Height + - [ ] P:SkiaSharp.SKRoundRect.IsValid + - [ ] P:SkiaSharp.SKRoundRect.Radii + - [ ] P:SkiaSharp.SKRoundRect.Rect + - [ ] P:SkiaSharp.SKRoundRect.Type + - [ ] P:SkiaSharp.SKRoundRect.Width +- [ ] SkiaSharp.SKRoundRectCorner + - [ ] F:SkiaSharp.SKRoundRectCorner.LowerLeft + - [ ] F:SkiaSharp.SKRoundRectCorner.LowerRight + - [ ] F:SkiaSharp.SKRoundRectCorner.UpperLeft + - [ ] F:SkiaSharp.SKRoundRectCorner.UpperRight +- [ ] SkiaSharp.SKRoundRectType + - [ ] F:SkiaSharp.SKRoundRectType.Complex + - [ ] F:SkiaSharp.SKRoundRectType.Empty + - [ ] F:SkiaSharp.SKRoundRectType.NinePatch + - [ ] F:SkiaSharp.SKRoundRectType.Oval + - [ ] F:SkiaSharp.SKRoundRectType.Rect + - [ ] F:SkiaSharp.SKRoundRectType.Simple +- [ ] SkiaSharp.SKRunBuffer + - [ ] M:SkiaSharp.SKRunBuffer.GetClusterSpan + - [ ] M:SkiaSharp.SKRunBuffer.GetGlyphSpan + - [ ] M:SkiaSharp.SKRunBuffer.GetTextSpan + - [ ] M:SkiaSharp.SKRunBuffer.SetClusters(System.ReadOnlySpan{System.UInt32}) + - [ ] M:SkiaSharp.SKRunBuffer.SetGlyphs(System.ReadOnlySpan{System.UInt16}) + - [ ] M:SkiaSharp.SKRunBuffer.SetText(System.ReadOnlySpan{System.Byte}) + - [ ] P:SkiaSharp.SKRunBuffer.Size + - [ ] P:SkiaSharp.SKRunBuffer.TextSize +- [ ] SkiaSharp.SKRuntimeEffect + - [ ] M:SkiaSharp.SKRuntimeEffect.Create(System.String,System.String@) + - [ ] M:SkiaSharp.SKRuntimeEffect.ToColorFilter + - [ ] M:SkiaSharp.SKRuntimeEffect.ToColorFilter(SkiaSharp.SKRuntimeEffectUniforms,SkiaSharp.SKRuntimeEffectChildren) + - [ ] M:SkiaSharp.SKRuntimeEffect.ToColorFilter(SkiaSharp.SKRuntimeEffectUniforms) + - [ ] M:SkiaSharp.SKRuntimeEffect.ToShader(System.Boolean,SkiaSharp.SKRuntimeEffectUniforms,SkiaSharp.SKRuntimeEffectChildren,SkiaSharp.SKMatrix) + - [ ] M:SkiaSharp.SKRuntimeEffect.ToShader(System.Boolean,SkiaSharp.SKRuntimeEffectUniforms,SkiaSharp.SKRuntimeEffectChildren) + - [ ] M:SkiaSharp.SKRuntimeEffect.ToShader(System.Boolean,SkiaSharp.SKRuntimeEffectUniforms) + - [ ] M:SkiaSharp.SKRuntimeEffect.ToShader(System.Boolean) + - [ ] P:SkiaSharp.SKRuntimeEffect.Children + - [ ] P:SkiaSharp.SKRuntimeEffect.Uniforms + - [ ] P:SkiaSharp.SKRuntimeEffect.UniformSize +- [ ] SkiaSharp.SKRuntimeEffectChildren + - [ ] M:SkiaSharp.SKRuntimeEffectChildren.#ctor(SkiaSharp.SKRuntimeEffect) + - [ ] M:SkiaSharp.SKRuntimeEffectChildren.Add(System.String,SkiaSharp.SKShader) + - [ ] M:SkiaSharp.SKRuntimeEffectChildren.Contains(System.String) + - [ ] M:SkiaSharp.SKRuntimeEffectChildren.GetEnumerator + - [ ] M:SkiaSharp.SKRuntimeEffectChildren.Reset + - [ ] M:SkiaSharp.SKRuntimeEffectChildren.System#Collections#IEnumerable#GetEnumerator + - [ ] M:SkiaSharp.SKRuntimeEffectChildren.ToArray + - [ ] P:SkiaSharp.SKRuntimeEffectChildren.Count + - [ ] P:SkiaSharp.SKRuntimeEffectChildren.Item(System.String) + - [ ] P:SkiaSharp.SKRuntimeEffectChildren.Names +- [ ] SkiaSharp.SKRuntimeEffectUniform + - [ ] M:SkiaSharp.SKRuntimeEffectUniform.op_Implicit(SkiaSharp.SKMatrix)~SkiaSharp.SKRuntimeEffectUniform + - [ ] M:SkiaSharp.SKRuntimeEffectUniform.op_Implicit(System.ReadOnlySpan{System.Single})~SkiaSharp.SKRuntimeEffectUniform + - [ ] M:SkiaSharp.SKRuntimeEffectUniform.op_Implicit(System.Single)~SkiaSharp.SKRuntimeEffectUniform + - [ ] M:SkiaSharp.SKRuntimeEffectUniform.op_Implicit(System.Single[])~SkiaSharp.SKRuntimeEffectUniform + - [ ] M:SkiaSharp.SKRuntimeEffectUniform.op_Implicit(System.Single[][])~SkiaSharp.SKRuntimeEffectUniform + - [ ] M:SkiaSharp.SKRuntimeEffectUniform.op_Implicit(System.Span{System.Single})~SkiaSharp.SKRuntimeEffectUniform + - [ ] M:SkiaSharp.SKRuntimeEffectUniform.WriteTo(System.Span{System.Byte}) + - [ ] P:SkiaSharp.SKRuntimeEffectUniform.Empty + - [ ] P:SkiaSharp.SKRuntimeEffectUniform.IsEmpty + - [ ] P:SkiaSharp.SKRuntimeEffectUniform.Size +- [ ] SkiaSharp.SKRuntimeEffectUniforms + - [ ] M:SkiaSharp.SKRuntimeEffectUniforms.#ctor(SkiaSharp.SKRuntimeEffect) + - [ ] M:SkiaSharp.SKRuntimeEffectUniforms.Add(System.String,SkiaSharp.SKRuntimeEffectUniform) + - [ ] M:SkiaSharp.SKRuntimeEffectUniforms.Contains(System.String) + - [ ] M:SkiaSharp.SKRuntimeEffectUniforms.GetEnumerator + - [ ] M:SkiaSharp.SKRuntimeEffectUniforms.Reset + - [ ] M:SkiaSharp.SKRuntimeEffectUniforms.System#Collections#IEnumerable#GetEnumerator + - [ ] M:SkiaSharp.SKRuntimeEffectUniforms.ToData + - [ ] P:SkiaSharp.SKRuntimeEffectUniforms.Count + - [ ] P:SkiaSharp.SKRuntimeEffectUniforms.Item(System.String) + - [ ] P:SkiaSharp.SKRuntimeEffectUniforms.Names +- [ ] SkiaSharp.SKShader + - [ ] M:SkiaSharp.SKShader.CreateBitmap(SkiaSharp.SKBitmap,SkiaSharp.SKShaderTileMode,SkiaSharp.SKShaderTileMode,SkiaSharp.SKMatrix) + - [ ] M:SkiaSharp.SKShader.CreateBitmap(SkiaSharp.SKBitmap,SkiaSharp.SKShaderTileMode,SkiaSharp.SKShaderTileMode) + - [ ] M:SkiaSharp.SKShader.CreateBitmap(SkiaSharp.SKBitmap) + - [ ] M:SkiaSharp.SKShader.CreateColor(SkiaSharp.SKColor) + - [ ] M:SkiaSharp.SKShader.CreateColor(SkiaSharp.SKColorF,SkiaSharp.SKColorSpace) + - [ ] M:SkiaSharp.SKShader.CreateColorFilter(SkiaSharp.SKShader,SkiaSharp.SKColorFilter) + - [ ] M:SkiaSharp.SKShader.CreateCompose(SkiaSharp.SKShader,SkiaSharp.SKShader,SkiaSharp.SKBlendMode) + - [ ] M:SkiaSharp.SKShader.CreateCompose(SkiaSharp.SKShader,SkiaSharp.SKShader) + - [ ] M:SkiaSharp.SKShader.CreateEmpty + - [ ] M:SkiaSharp.SKShader.CreateImage(SkiaSharp.SKImage,SkiaSharp.SKShaderTileMode,SkiaSharp.SKShaderTileMode,SkiaSharp.SKMatrix) + - [ ] M:SkiaSharp.SKShader.CreateImage(SkiaSharp.SKImage,SkiaSharp.SKShaderTileMode,SkiaSharp.SKShaderTileMode) + - [ ] M:SkiaSharp.SKShader.CreateImage(SkiaSharp.SKImage) + - [ ] M:SkiaSharp.SKShader.CreateLerp(System.Single,SkiaSharp.SKShader,SkiaSharp.SKShader) + - [ ] M:SkiaSharp.SKShader.CreateLinearGradient(SkiaSharp.SKPoint,SkiaSharp.SKPoint,SkiaSharp.SKColor[],SkiaSharp.SKShaderTileMode) + - [ ] M:SkiaSharp.SKShader.CreateLinearGradient(SkiaSharp.SKPoint,SkiaSharp.SKPoint,SkiaSharp.SKColor[],System.Single[],SkiaSharp.SKShaderTileMode,SkiaSharp.SKMatrix) + - [ ] M:SkiaSharp.SKShader.CreateLinearGradient(SkiaSharp.SKPoint,SkiaSharp.SKPoint,SkiaSharp.SKColor[],System.Single[],SkiaSharp.SKShaderTileMode) + - [ ] M:SkiaSharp.SKShader.CreateLinearGradient(SkiaSharp.SKPoint,SkiaSharp.SKPoint,SkiaSharp.SKColorF[],SkiaSharp.SKColorSpace,SkiaSharp.SKShaderTileMode) + - [ ] M:SkiaSharp.SKShader.CreateLinearGradient(SkiaSharp.SKPoint,SkiaSharp.SKPoint,SkiaSharp.SKColorF[],SkiaSharp.SKColorSpace,System.Single[],SkiaSharp.SKShaderTileMode,SkiaSharp.SKMatrix) + - [ ] M:SkiaSharp.SKShader.CreateLinearGradient(SkiaSharp.SKPoint,SkiaSharp.SKPoint,SkiaSharp.SKColorF[],SkiaSharp.SKColorSpace,System.Single[],SkiaSharp.SKShaderTileMode) + - [ ] M:SkiaSharp.SKShader.CreateLocalMatrix(SkiaSharp.SKShader,SkiaSharp.SKMatrix) + - [ ] M:SkiaSharp.SKShader.CreatePerlinNoiseFractalNoise(System.Single,System.Single,System.Int32,System.Single,SkiaSharp.SKPointI) + - [ ] M:SkiaSharp.SKShader.CreatePerlinNoiseFractalNoise(System.Single,System.Single,System.Int32,System.Single,SkiaSharp.SKSizeI) + - [ ] M:SkiaSharp.SKShader.CreatePerlinNoiseFractalNoise(System.Single,System.Single,System.Int32,System.Single) + - [ ] M:SkiaSharp.SKShader.CreatePerlinNoiseImprovedNoise(System.Single,System.Single,System.Int32,System.Single) + - [ ] M:SkiaSharp.SKShader.CreatePerlinNoiseTurbulence(System.Single,System.Single,System.Int32,System.Single,SkiaSharp.SKPointI) + - [ ] M:SkiaSharp.SKShader.CreatePerlinNoiseTurbulence(System.Single,System.Single,System.Int32,System.Single,SkiaSharp.SKSizeI) + - [ ] M:SkiaSharp.SKShader.CreatePerlinNoiseTurbulence(System.Single,System.Single,System.Int32,System.Single) + - [ ] M:SkiaSharp.SKShader.CreatePicture(SkiaSharp.SKPicture,SkiaSharp.SKShaderTileMode,SkiaSharp.SKShaderTileMode,SkiaSharp.SKMatrix,SkiaSharp.SKRect) + - [ ] M:SkiaSharp.SKShader.CreatePicture(SkiaSharp.SKPicture,SkiaSharp.SKShaderTileMode,SkiaSharp.SKShaderTileMode,SkiaSharp.SKRect) + - [ ] M:SkiaSharp.SKShader.CreatePicture(SkiaSharp.SKPicture,SkiaSharp.SKShaderTileMode,SkiaSharp.SKShaderTileMode) + - [ ] M:SkiaSharp.SKShader.CreatePicture(SkiaSharp.SKPicture) + - [ ] M:SkiaSharp.SKShader.CreateRadialGradient(SkiaSharp.SKPoint,System.Single,SkiaSharp.SKColor[],SkiaSharp.SKShaderTileMode) + - [ ] M:SkiaSharp.SKShader.CreateRadialGradient(SkiaSharp.SKPoint,System.Single,SkiaSharp.SKColor[],System.Single[],SkiaSharp.SKShaderTileMode,SkiaSharp.SKMatrix) + - [ ] M:SkiaSharp.SKShader.CreateRadialGradient(SkiaSharp.SKPoint,System.Single,SkiaSharp.SKColor[],System.Single[],SkiaSharp.SKShaderTileMode) + - [ ] M:SkiaSharp.SKShader.CreateRadialGradient(SkiaSharp.SKPoint,System.Single,SkiaSharp.SKColorF[],SkiaSharp.SKColorSpace,SkiaSharp.SKShaderTileMode) + - [ ] M:SkiaSharp.SKShader.CreateRadialGradient(SkiaSharp.SKPoint,System.Single,SkiaSharp.SKColorF[],SkiaSharp.SKColorSpace,System.Single[],SkiaSharp.SKShaderTileMode,SkiaSharp.SKMatrix) + - [ ] M:SkiaSharp.SKShader.CreateRadialGradient(SkiaSharp.SKPoint,System.Single,SkiaSharp.SKColorF[],SkiaSharp.SKColorSpace,System.Single[],SkiaSharp.SKShaderTileMode) + - [ ] M:SkiaSharp.SKShader.CreateSweepGradient(SkiaSharp.SKPoint,SkiaSharp.SKColor[],SkiaSharp.SKShaderTileMode,System.Single,System.Single) + - [ ] M:SkiaSharp.SKShader.CreateSweepGradient(SkiaSharp.SKPoint,SkiaSharp.SKColor[],System.Single[],SkiaSharp.SKMatrix) + - [ ] M:SkiaSharp.SKShader.CreateSweepGradient(SkiaSharp.SKPoint,SkiaSharp.SKColor[],System.Single[],SkiaSharp.SKShaderTileMode,System.Single,System.Single,SkiaSharp.SKMatrix) + - [ ] M:SkiaSharp.SKShader.CreateSweepGradient(SkiaSharp.SKPoint,SkiaSharp.SKColor[],System.Single[],SkiaSharp.SKShaderTileMode,System.Single,System.Single) + - [ ] M:SkiaSharp.SKShader.CreateSweepGradient(SkiaSharp.SKPoint,SkiaSharp.SKColor[],System.Single[]) + - [ ] M:SkiaSharp.SKShader.CreateSweepGradient(SkiaSharp.SKPoint,SkiaSharp.SKColor[]) + - [ ] M:SkiaSharp.SKShader.CreateSweepGradient(SkiaSharp.SKPoint,SkiaSharp.SKColorF[],SkiaSharp.SKColorSpace,SkiaSharp.SKShaderTileMode,System.Single,System.Single) + - [ ] M:SkiaSharp.SKShader.CreateSweepGradient(SkiaSharp.SKPoint,SkiaSharp.SKColorF[],SkiaSharp.SKColorSpace,System.Single[],SkiaSharp.SKMatrix) + - [ ] M:SkiaSharp.SKShader.CreateSweepGradient(SkiaSharp.SKPoint,SkiaSharp.SKColorF[],SkiaSharp.SKColorSpace,System.Single[],SkiaSharp.SKShaderTileMode,System.Single,System.Single,SkiaSharp.SKMatrix) + - [ ] M:SkiaSharp.SKShader.CreateSweepGradient(SkiaSharp.SKPoint,SkiaSharp.SKColorF[],SkiaSharp.SKColorSpace,System.Single[],SkiaSharp.SKShaderTileMode,System.Single,System.Single) + - [ ] M:SkiaSharp.SKShader.CreateSweepGradient(SkiaSharp.SKPoint,SkiaSharp.SKColorF[],SkiaSharp.SKColorSpace,System.Single[]) + - [ ] M:SkiaSharp.SKShader.CreateSweepGradient(SkiaSharp.SKPoint,SkiaSharp.SKColorF[],SkiaSharp.SKColorSpace) + - [ ] M:SkiaSharp.SKShader.CreateTwoPointConicalGradient(SkiaSharp.SKPoint,System.Single,SkiaSharp.SKPoint,System.Single,SkiaSharp.SKColor[],SkiaSharp.SKShaderTileMode) + - [ ] M:SkiaSharp.SKShader.CreateTwoPointConicalGradient(SkiaSharp.SKPoint,System.Single,SkiaSharp.SKPoint,System.Single,SkiaSharp.SKColor[],System.Single[],SkiaSharp.SKShaderTileMode,SkiaSharp.SKMatrix) + - [ ] M:SkiaSharp.SKShader.CreateTwoPointConicalGradient(SkiaSharp.SKPoint,System.Single,SkiaSharp.SKPoint,System.Single,SkiaSharp.SKColor[],System.Single[],SkiaSharp.SKShaderTileMode) + - [ ] M:SkiaSharp.SKShader.CreateTwoPointConicalGradient(SkiaSharp.SKPoint,System.Single,SkiaSharp.SKPoint,System.Single,SkiaSharp.SKColorF[],SkiaSharp.SKColorSpace,SkiaSharp.SKShaderTileMode) + - [ ] M:SkiaSharp.SKShader.CreateTwoPointConicalGradient(SkiaSharp.SKPoint,System.Single,SkiaSharp.SKPoint,System.Single,SkiaSharp.SKColorF[],SkiaSharp.SKColorSpace,System.Single[],SkiaSharp.SKShaderTileMode,SkiaSharp.SKMatrix) + - [ ] M:SkiaSharp.SKShader.CreateTwoPointConicalGradient(SkiaSharp.SKPoint,System.Single,SkiaSharp.SKPoint,System.Single,SkiaSharp.SKColorF[],SkiaSharp.SKColorSpace,System.Single[],SkiaSharp.SKShaderTileMode) + - [ ] M:SkiaSharp.SKShader.Dispose(System.Boolean) + - [ ] M:SkiaSharp.SKShader.WithColorFilter(SkiaSharp.SKColorFilter) + - [ ] M:SkiaSharp.SKShader.WithLocalMatrix(SkiaSharp.SKMatrix) +- [ ] SkiaSharp.SKShaderTileMode + - [ ] F:SkiaSharp.SKShaderTileMode.Clamp + - [ ] F:SkiaSharp.SKShaderTileMode.Decal + - [ ] F:SkiaSharp.SKShaderTileMode.Mirror + - [ ] F:SkiaSharp.SKShaderTileMode.Repeat +- [ ] SkiaSharp.SKSize + - [ ] F:SkiaSharp.SKSize.Empty + - [ ] M:SkiaSharp.SKSize.#ctor(SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.SKSize.#ctor(System.Single,System.Single) + - [ ] M:SkiaSharp.SKSize.Add(SkiaSharp.SKSize,SkiaSharp.SKSize) + - [ ] M:SkiaSharp.SKSize.Equals(SkiaSharp.SKSize) + - [ ] M:SkiaSharp.SKSize.Equals(System.Object) + - [ ] M:SkiaSharp.SKSize.GetHashCode + - [ ] M:SkiaSharp.SKSize.op_Addition(SkiaSharp.SKSize,SkiaSharp.SKSize) + - [ ] M:SkiaSharp.SKSize.op_Equality(SkiaSharp.SKSize,SkiaSharp.SKSize) + - [ ] M:SkiaSharp.SKSize.op_Explicit(SkiaSharp.SKSize)~SkiaSharp.SKPoint + - [ ] M:SkiaSharp.SKSize.op_Implicit(SkiaSharp.SKSizeI)~SkiaSharp.SKSize + - [ ] M:SkiaSharp.SKSize.op_Inequality(SkiaSharp.SKSize,SkiaSharp.SKSize) + - [ ] M:SkiaSharp.SKSize.op_Subtraction(SkiaSharp.SKSize,SkiaSharp.SKSize) + - [ ] M:SkiaSharp.SKSize.Subtract(SkiaSharp.SKSize,SkiaSharp.SKSize) + - [ ] M:SkiaSharp.SKSize.ToPoint + - [ ] M:SkiaSharp.SKSize.ToSizeI + - [ ] M:SkiaSharp.SKSize.ToString + - [ ] P:SkiaSharp.SKSize.Height + - [ ] P:SkiaSharp.SKSize.IsEmpty + - [ ] P:SkiaSharp.SKSize.Width +- [ ] SkiaSharp.SKSizeI + - [ ] F:SkiaSharp.SKSizeI.Empty + - [ ] M:SkiaSharp.SKSizeI.#ctor(SkiaSharp.SKPointI) + - [ ] M:SkiaSharp.SKSizeI.#ctor(System.Int32,System.Int32) + - [ ] M:SkiaSharp.SKSizeI.Add(SkiaSharp.SKSizeI,SkiaSharp.SKSizeI) + - [ ] M:SkiaSharp.SKSizeI.Equals(SkiaSharp.SKSizeI) + - [ ] M:SkiaSharp.SKSizeI.Equals(System.Object) + - [ ] M:SkiaSharp.SKSizeI.GetHashCode + - [ ] M:SkiaSharp.SKSizeI.op_Addition(SkiaSharp.SKSizeI,SkiaSharp.SKSizeI) + - [ ] M:SkiaSharp.SKSizeI.op_Equality(SkiaSharp.SKSizeI,SkiaSharp.SKSizeI) + - [ ] M:SkiaSharp.SKSizeI.op_Explicit(SkiaSharp.SKSizeI)~SkiaSharp.SKPointI + - [ ] M:SkiaSharp.SKSizeI.op_Inequality(SkiaSharp.SKSizeI,SkiaSharp.SKSizeI) + - [ ] M:SkiaSharp.SKSizeI.op_Subtraction(SkiaSharp.SKSizeI,SkiaSharp.SKSizeI) + - [ ] M:SkiaSharp.SKSizeI.Subtract(SkiaSharp.SKSizeI,SkiaSharp.SKSizeI) + - [ ] M:SkiaSharp.SKSizeI.ToPointI + - [ ] M:SkiaSharp.SKSizeI.ToString + - [ ] P:SkiaSharp.SKSizeI.Height + - [ ] P:SkiaSharp.SKSizeI.IsEmpty + - [ ] P:SkiaSharp.SKSizeI.Width +- [ ] SkiaSharp.SKStream + - [ ] M:SkiaSharp.SKStream.GetMemoryBase + - [ ] M:SkiaSharp.SKStream.Move(System.Int32) + - [ ] M:SkiaSharp.SKStream.Move(System.Int64) + - [ ] M:SkiaSharp.SKStream.Peek(System.IntPtr,System.Int32) + - [ ] M:SkiaSharp.SKStream.Read(System.Byte[],System.Int32) + - [ ] M:SkiaSharp.SKStream.Read(System.IntPtr,System.Int32) + - [ ] M:SkiaSharp.SKStream.ReadBool + - [ ] M:SkiaSharp.SKStream.ReadBool(System.Boolean@) + - [ ] M:SkiaSharp.SKStream.ReadByte + - [ ] M:SkiaSharp.SKStream.ReadByte(System.Byte@) + - [ ] M:SkiaSharp.SKStream.ReadInt16 + - [ ] M:SkiaSharp.SKStream.ReadInt16(System.Int16@) + - [ ] M:SkiaSharp.SKStream.ReadInt32 + - [ ] M:SkiaSharp.SKStream.ReadInt32(System.Int32@) + - [ ] M:SkiaSharp.SKStream.ReadSByte + - [ ] M:SkiaSharp.SKStream.ReadSByte(System.SByte@) + - [ ] M:SkiaSharp.SKStream.ReadUInt16 + - [ ] M:SkiaSharp.SKStream.ReadUInt16(System.UInt16@) + - [ ] M:SkiaSharp.SKStream.ReadUInt32 + - [ ] M:SkiaSharp.SKStream.ReadUInt32(System.UInt32@) + - [ ] M:SkiaSharp.SKStream.Rewind + - [ ] M:SkiaSharp.SKStream.Seek(System.Int32) + - [ ] M:SkiaSharp.SKStream.Skip(System.Int32) + - [ ] P:SkiaSharp.SKStream.HasLength + - [ ] P:SkiaSharp.SKStream.HasPosition + - [ ] P:SkiaSharp.SKStream.IsAtEnd + - [ ] P:SkiaSharp.SKStream.Length + - [ ] P:SkiaSharp.SKStream.Position +- [ ] SkiaSharp.SKStreamAsset +- [ ] SkiaSharp.SKStreamMemory +- [ ] SkiaSharp.SKStreamRewindable +- [ ] SkiaSharp.SKStreamSeekable +- [ ] SkiaSharp.SKStrokeCap + - [ ] F:SkiaSharp.SKStrokeCap.Butt + - [ ] F:SkiaSharp.SKStrokeCap.Round + - [ ] F:SkiaSharp.SKStrokeCap.Square +- [ ] SkiaSharp.SKStrokeJoin + - [ ] F:SkiaSharp.SKStrokeJoin.Bevel + - [ ] F:SkiaSharp.SKStrokeJoin.Miter + - [ ] F:SkiaSharp.SKStrokeJoin.Round +- [ ] SkiaSharp.SKSurface + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRContext,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.SKColorSpace,SkiaSharp.SKSurfaceProperties) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRContext,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.SKColorSpace) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRContext,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.SKSurfaceProperties) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRContext,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRContext,SkiaSharp.GRBackendRenderTarget,SkiaSharp.SKColorType,SkiaSharp.SKSurfaceProperties) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRContext,SkiaSharp.GRBackendRenderTarget,SkiaSharp.SKColorType) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRContext,SkiaSharp.GRBackendRenderTargetDesc,SkiaSharp.SKSurfaceProps) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRContext,SkiaSharp.GRBackendRenderTargetDesc) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.SKSurfaceProperties) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,System.Int32,SkiaSharp.SKColorType,SkiaSharp.SKColorSpace,SkiaSharp.SKSurfaceProperties) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,System.Int32,SkiaSharp.SKColorType,SkiaSharp.SKColorSpace) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,System.Int32,SkiaSharp.SKColorType,SkiaSharp.SKSurfaceProperties) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,System.Int32,SkiaSharp.SKColorType) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRContext,SkiaSharp.GRBackendTexture,SkiaSharp.SKColorType,SkiaSharp.SKSurfaceProperties) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRContext,SkiaSharp.GRBackendTexture,SkiaSharp.SKColorType) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRContext,SkiaSharp.GRBackendTextureDesc,SkiaSharp.SKSurfaceProps) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRContext,SkiaSharp.GRBackendTextureDesc) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRContext,SkiaSharp.GRGlBackendTextureDesc,SkiaSharp.SKSurfaceProps) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRContext,SkiaSharp.GRGlBackendTextureDesc) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRContext,System.Boolean,SkiaSharp.SKImageInfo,SkiaSharp.SKSurfaceProperties) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRContext,System.Boolean,SkiaSharp.SKImageInfo,System.Int32,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKSurfaceProperties,System.Boolean) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRContext,System.Boolean,SkiaSharp.SKImageInfo,System.Int32,SkiaSharp.GRSurfaceOrigin) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRContext,System.Boolean,SkiaSharp.SKImageInfo,System.Int32,SkiaSharp.SKSurfaceProperties) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRContext,System.Boolean,SkiaSharp.SKImageInfo,System.Int32,SkiaSharp.SKSurfaceProps) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRContext,System.Boolean,SkiaSharp.SKImageInfo,System.Int32) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRContext,System.Boolean,SkiaSharp.SKImageInfo) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRRecordingContext,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.SKColorSpace,SkiaSharp.SKSurfaceProperties) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRRecordingContext,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.SKColorSpace) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRRecordingContext,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.SKSurfaceProperties) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRRecordingContext,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRRecordingContext,SkiaSharp.GRBackendRenderTarget,SkiaSharp.SKColorType,SkiaSharp.SKSurfaceProperties) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRRecordingContext,SkiaSharp.GRBackendRenderTarget,SkiaSharp.SKColorType) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRRecordingContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.SKSurfaceProperties) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRRecordingContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRRecordingContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,System.Int32,SkiaSharp.SKColorType,SkiaSharp.SKColorSpace,SkiaSharp.SKSurfaceProperties) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRRecordingContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,System.Int32,SkiaSharp.SKColorType,SkiaSharp.SKColorSpace) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRRecordingContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,System.Int32,SkiaSharp.SKColorType,SkiaSharp.SKSurfaceProperties) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRRecordingContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,System.Int32,SkiaSharp.SKColorType) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRRecordingContext,SkiaSharp.GRBackendTexture,SkiaSharp.SKColorType,SkiaSharp.SKSurfaceProperties) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRRecordingContext,SkiaSharp.GRBackendTexture,SkiaSharp.SKColorType) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRRecordingContext,System.Boolean,SkiaSharp.SKImageInfo,SkiaSharp.SKSurfaceProperties) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRRecordingContext,System.Boolean,SkiaSharp.SKImageInfo,System.Int32,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKSurfaceProperties,System.Boolean) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRRecordingContext,System.Boolean,SkiaSharp.SKImageInfo,System.Int32,SkiaSharp.GRSurfaceOrigin) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRRecordingContext,System.Boolean,SkiaSharp.SKImageInfo,System.Int32,SkiaSharp.SKSurfaceProperties) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRRecordingContext,System.Boolean,SkiaSharp.SKImageInfo,System.Int32) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRRecordingContext,System.Boolean,SkiaSharp.SKImageInfo) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.SKImageInfo,SkiaSharp.SKSurfaceProperties) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.SKImageInfo,SkiaSharp.SKSurfaceProps) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.SKImageInfo,System.Int32,SkiaSharp.SKSurfaceProperties) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.SKImageInfo,System.Int32) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.SKImageInfo,System.IntPtr,SkiaSharp.SKSurfaceProperties) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32,SkiaSharp.SKSurfaceProperties) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32,SkiaSharp.SKSurfaceProps) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32,SkiaSharp.SKSurfaceReleaseDelegate,System.Object,SkiaSharp.SKSurfaceProperties) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32,SkiaSharp.SKSurfaceReleaseDelegate,System.Object) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.SKImageInfo,System.IntPtr) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.SKImageInfo) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.SKPixmap,SkiaSharp.SKSurfaceProperties) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.SKPixmap,SkiaSharp.SKSurfaceProps) + - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.SKPixmap) + - [ ] M:SkiaSharp.SKSurface.Create(System.Int32,System.Int32,SkiaSharp.SKColorType,SkiaSharp.SKAlphaType,SkiaSharp.SKSurfaceProps) + - [ ] M:SkiaSharp.SKSurface.Create(System.Int32,System.Int32,SkiaSharp.SKColorType,SkiaSharp.SKAlphaType,System.IntPtr,System.Int32,SkiaSharp.SKSurfaceProps) + - [ ] M:SkiaSharp.SKSurface.Create(System.Int32,System.Int32,SkiaSharp.SKColorType,SkiaSharp.SKAlphaType,System.IntPtr,System.Int32) + - [ ] M:SkiaSharp.SKSurface.Create(System.Int32,System.Int32,SkiaSharp.SKColorType,SkiaSharp.SKAlphaType) + - [ ] M:SkiaSharp.SKSurface.CreateAsRenderTarget(SkiaSharp.GRContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.SKSurfaceProperties) + - [ ] M:SkiaSharp.SKSurface.CreateAsRenderTarget(SkiaSharp.GRContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType) + - [ ] M:SkiaSharp.SKSurface.CreateAsRenderTarget(SkiaSharp.GRContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,System.Int32,SkiaSharp.SKColorType,SkiaSharp.SKColorSpace,SkiaSharp.SKSurfaceProperties) + - [ ] M:SkiaSharp.SKSurface.CreateAsRenderTarget(SkiaSharp.GRContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,System.Int32,SkiaSharp.SKColorType,SkiaSharp.SKColorSpace) + - [ ] M:SkiaSharp.SKSurface.CreateAsRenderTarget(SkiaSharp.GRContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,System.Int32,SkiaSharp.SKColorType,SkiaSharp.SKSurfaceProperties) + - [ ] M:SkiaSharp.SKSurface.CreateAsRenderTarget(SkiaSharp.GRContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,System.Int32,SkiaSharp.SKColorType) + - [ ] M:SkiaSharp.SKSurface.CreateAsRenderTarget(SkiaSharp.GRContext,SkiaSharp.GRBackendTexture,SkiaSharp.SKColorType,SkiaSharp.SKSurfaceProperties) + - [ ] M:SkiaSharp.SKSurface.CreateAsRenderTarget(SkiaSharp.GRContext,SkiaSharp.GRBackendTexture,SkiaSharp.SKColorType) + - [ ] M:SkiaSharp.SKSurface.CreateAsRenderTarget(SkiaSharp.GRContext,SkiaSharp.GRBackendTextureDesc,SkiaSharp.SKSurfaceProps) + - [ ] M:SkiaSharp.SKSurface.CreateAsRenderTarget(SkiaSharp.GRContext,SkiaSharp.GRBackendTextureDesc) + - [ ] M:SkiaSharp.SKSurface.CreateAsRenderTarget(SkiaSharp.GRContext,SkiaSharp.GRGlBackendTextureDesc,SkiaSharp.SKSurfaceProps) + - [ ] M:SkiaSharp.SKSurface.CreateAsRenderTarget(SkiaSharp.GRContext,SkiaSharp.GRGlBackendTextureDesc) + - [ ] M:SkiaSharp.SKSurface.CreateNull(System.Int32,System.Int32) + - [ ] M:SkiaSharp.SKSurface.Dispose(System.Boolean) + - [ ] M:SkiaSharp.SKSurface.Draw(SkiaSharp.SKCanvas,System.Single,System.Single,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKSurface.Flush + - [ ] M:SkiaSharp.SKSurface.Flush(System.Boolean,System.Boolean) + - [ ] M:SkiaSharp.SKSurface.PeekPixels + - [ ] M:SkiaSharp.SKSurface.PeekPixels(SkiaSharp.SKPixmap) + - [ ] M:SkiaSharp.SKSurface.ReadPixels(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32,System.Int32,System.Int32) + - [ ] M:SkiaSharp.SKSurface.Snapshot + - [ ] M:SkiaSharp.SKSurface.Snapshot(SkiaSharp.SKRectI) + - [ ] P:SkiaSharp.SKSurface.Canvas + - [ ] P:SkiaSharp.SKSurface.Context + - [ ] P:SkiaSharp.SKSurface.SurfaceProperties + - [ ] P:SkiaSharp.SKSurface.SurfaceProps +- [ ] SkiaSharp.SKSurfaceProperties + - [ ] M:SkiaSharp.SKSurfaceProperties.#ctor(SkiaSharp.SKPixelGeometry) + - [ ] M:SkiaSharp.SKSurfaceProperties.#ctor(SkiaSharp.SKSurfaceProps) + - [ ] M:SkiaSharp.SKSurfaceProperties.#ctor(SkiaSharp.SKSurfacePropsFlags,SkiaSharp.SKPixelGeometry) + - [ ] M:SkiaSharp.SKSurfaceProperties.#ctor(System.UInt32,SkiaSharp.SKPixelGeometry) + - [ ] M:SkiaSharp.SKSurfaceProperties.Dispose(System.Boolean) + - [ ] M:SkiaSharp.SKSurfaceProperties.DisposeNative + - [ ] P:SkiaSharp.SKSurfaceProperties.Flags + - [ ] P:SkiaSharp.SKSurfaceProperties.IsUseDeviceIndependentFonts + - [ ] P:SkiaSharp.SKSurfaceProperties.PixelGeometry +- [ ] SkiaSharp.SKSurfaceProps + - [ ] M:SkiaSharp.SKSurfaceProps.Equals(SkiaSharp.SKSurfaceProps) + - [ ] M:SkiaSharp.SKSurfaceProps.Equals(System.Object) + - [ ] M:SkiaSharp.SKSurfaceProps.GetHashCode + - [ ] M:SkiaSharp.SKSurfaceProps.op_Equality(SkiaSharp.SKSurfaceProps,SkiaSharp.SKSurfaceProps) + - [ ] M:SkiaSharp.SKSurfaceProps.op_Inequality(SkiaSharp.SKSurfaceProps,SkiaSharp.SKSurfaceProps) + - [ ] P:SkiaSharp.SKSurfaceProps.Flags + - [ ] P:SkiaSharp.SKSurfaceProps.PixelGeometry +- [ ] SkiaSharp.SKSurfacePropsFlags + - [ ] F:SkiaSharp.SKSurfacePropsFlags.None + - [ ] F:SkiaSharp.SKSurfacePropsFlags.UseDeviceIndependentFonts +- [ ] SkiaSharp.SKSurfaceReleaseDelegate +- [ ] SkiaSharp.SKSvgCanvas + - [ ] M:SkiaSharp.SKSvgCanvas.Create(SkiaSharp.SKRect,SkiaSharp.SKWStream) + - [ ] M:SkiaSharp.SKSvgCanvas.Create(SkiaSharp.SKRect,SkiaSharp.SKXmlWriter) + - [ ] M:SkiaSharp.SKSvgCanvas.Create(SkiaSharp.SKRect,System.IO.Stream) +- [ ] SkiaSharp.SKSwizzle + - [ ] M:SkiaSharp.SKSwizzle.SwapRedBlue(System.IntPtr,System.Int32) + - [ ] M:SkiaSharp.SKSwizzle.SwapRedBlue(System.IntPtr,System.IntPtr,System.Int32) + - [ ] M:SkiaSharp.SKSwizzle.SwapRedBlue(System.ReadOnlySpan{System.Byte},System.Int32) + - [ ] M:SkiaSharp.SKSwizzle.SwapRedBlue(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte},System.Int32) + - [ ] M:SkiaSharp.SKSwizzle.SwapRedBlue(System.Span{System.Byte}) +- [ ] SkiaSharp.SKTextAlign + - [ ] F:SkiaSharp.SKTextAlign.Center + - [ ] F:SkiaSharp.SKTextAlign.Left + - [ ] F:SkiaSharp.SKTextAlign.Right +- [ ] SkiaSharp.SKTextBlob + - [ ] M:SkiaSharp.SKTextBlob.CountIntercepts(System.Single,System.Single,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKTextBlob.Create(System.IntPtr,System.Int32,SkiaSharp.SKTextEncoding,SkiaSharp.SKFont,SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.SKTextBlob.Create(System.ReadOnlySpan{System.Byte},SkiaSharp.SKTextEncoding,SkiaSharp.SKFont,SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.SKTextBlob.Create(System.ReadOnlySpan{System.Char},SkiaSharp.SKFont,SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.SKTextBlob.Create(System.String,SkiaSharp.SKFont,SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.SKTextBlob.CreateHorizontal(System.IntPtr,System.Int32,SkiaSharp.SKTextEncoding,SkiaSharp.SKFont,System.ReadOnlySpan{System.Single},System.Single) + - [ ] M:SkiaSharp.SKTextBlob.CreateHorizontal(System.ReadOnlySpan{System.Byte},SkiaSharp.SKTextEncoding,SkiaSharp.SKFont,System.ReadOnlySpan{System.Single},System.Single) + - [ ] M:SkiaSharp.SKTextBlob.CreateHorizontal(System.ReadOnlySpan{System.Char},SkiaSharp.SKFont,System.ReadOnlySpan{System.Single},System.Single) + - [ ] M:SkiaSharp.SKTextBlob.CreateHorizontal(System.String,SkiaSharp.SKFont,System.ReadOnlySpan{System.Single},System.Single) + - [ ] M:SkiaSharp.SKTextBlob.CreatePathPositioned(System.IntPtr,System.Int32,SkiaSharp.SKTextEncoding,SkiaSharp.SKFont,SkiaSharp.SKPath,SkiaSharp.SKTextAlign,SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.SKTextBlob.CreatePathPositioned(System.ReadOnlySpan{System.Byte},SkiaSharp.SKTextEncoding,SkiaSharp.SKFont,SkiaSharp.SKPath,SkiaSharp.SKTextAlign,SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.SKTextBlob.CreatePathPositioned(System.ReadOnlySpan{System.Char},SkiaSharp.SKFont,SkiaSharp.SKPath,SkiaSharp.SKTextAlign,SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.SKTextBlob.CreatePathPositioned(System.String,SkiaSharp.SKFont,SkiaSharp.SKPath,SkiaSharp.SKTextAlign,SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.SKTextBlob.CreatePositioned(System.IntPtr,System.Int32,SkiaSharp.SKTextEncoding,SkiaSharp.SKFont,System.ReadOnlySpan{SkiaSharp.SKPoint}) + - [ ] M:SkiaSharp.SKTextBlob.CreatePositioned(System.ReadOnlySpan{System.Byte},SkiaSharp.SKTextEncoding,SkiaSharp.SKFont,System.ReadOnlySpan{SkiaSharp.SKPoint}) + - [ ] M:SkiaSharp.SKTextBlob.CreatePositioned(System.ReadOnlySpan{System.Char},SkiaSharp.SKFont,System.ReadOnlySpan{SkiaSharp.SKPoint}) + - [ ] M:SkiaSharp.SKTextBlob.CreatePositioned(System.String,SkiaSharp.SKFont,System.ReadOnlySpan{SkiaSharp.SKPoint}) + - [ ] M:SkiaSharp.SKTextBlob.CreateRotationScale(System.IntPtr,System.Int32,SkiaSharp.SKTextEncoding,SkiaSharp.SKFont,System.ReadOnlySpan{SkiaSharp.SKRotationScaleMatrix}) + - [ ] M:SkiaSharp.SKTextBlob.CreateRotationScale(System.ReadOnlySpan{System.Byte},SkiaSharp.SKTextEncoding,SkiaSharp.SKFont,System.ReadOnlySpan{SkiaSharp.SKRotationScaleMatrix}) + - [ ] M:SkiaSharp.SKTextBlob.CreateRotationScale(System.ReadOnlySpan{System.Char},SkiaSharp.SKFont,System.ReadOnlySpan{SkiaSharp.SKRotationScaleMatrix}) + - [ ] M:SkiaSharp.SKTextBlob.CreateRotationScale(System.String,SkiaSharp.SKFont,System.ReadOnlySpan{SkiaSharp.SKRotationScaleMatrix}) + - [ ] M:SkiaSharp.SKTextBlob.Dispose(System.Boolean) + - [ ] M:SkiaSharp.SKTextBlob.GetIntercepts(System.Single,System.Single,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.SKTextBlob.GetIntercepts(System.Single,System.Single,System.Span{System.Single},SkiaSharp.SKPaint) + - [ ] P:SkiaSharp.SKTextBlob.Bounds + - [ ] P:SkiaSharp.SKTextBlob.UniqueId +- [ ] SkiaSharp.SKTextBlobBuilder + - [ ] M:SkiaSharp.SKTextBlobBuilder.#ctor + - [ ] M:SkiaSharp.SKTextBlobBuilder.AddHorizontalRun(SkiaSharp.SKPaint,System.Single,System.ReadOnlySpan{System.UInt16},System.ReadOnlySpan{System.Single},System.Nullable{SkiaSharp.SKRect}) + - [ ] M:SkiaSharp.SKTextBlobBuilder.AddHorizontalRun(SkiaSharp.SKPaint,System.Single,System.ReadOnlySpan{System.UInt16},System.ReadOnlySpan{System.Single},System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.UInt32},System.Nullable{SkiaSharp.SKRect}) + - [ ] M:SkiaSharp.SKTextBlobBuilder.AddHorizontalRun(SkiaSharp.SKPaint,System.Single,System.ReadOnlySpan{System.UInt16},System.ReadOnlySpan{System.Single},System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.UInt32}) + - [ ] M:SkiaSharp.SKTextBlobBuilder.AddHorizontalRun(SkiaSharp.SKPaint,System.Single,System.ReadOnlySpan{System.UInt16},System.ReadOnlySpan{System.Single}) + - [ ] M:SkiaSharp.SKTextBlobBuilder.AddHorizontalRun(SkiaSharp.SKPaint,System.Single,System.UInt16[],System.Single[],SkiaSharp.SKRect) + - [ ] M:SkiaSharp.SKTextBlobBuilder.AddHorizontalRun(SkiaSharp.SKPaint,System.Single,System.UInt16[],System.Single[],System.Byte[],System.UInt32[],SkiaSharp.SKRect) + - [ ] M:SkiaSharp.SKTextBlobBuilder.AddHorizontalRun(SkiaSharp.SKPaint,System.Single,System.UInt16[],System.Single[],System.Byte[],System.UInt32[]) + - [ ] M:SkiaSharp.SKTextBlobBuilder.AddHorizontalRun(SkiaSharp.SKPaint,System.Single,System.UInt16[],System.Single[],System.String,System.UInt32[],SkiaSharp.SKRect) + - [ ] M:SkiaSharp.SKTextBlobBuilder.AddHorizontalRun(SkiaSharp.SKPaint,System.Single,System.UInt16[],System.Single[],System.String,System.UInt32[]) + - [ ] M:SkiaSharp.SKTextBlobBuilder.AddHorizontalRun(SkiaSharp.SKPaint,System.Single,System.UInt16[],System.Single[]) + - [ ] M:SkiaSharp.SKTextBlobBuilder.AddHorizontalRun(System.ReadOnlySpan{System.UInt16},SkiaSharp.SKFont,System.ReadOnlySpan{System.Single},System.Single) + - [ ] M:SkiaSharp.SKTextBlobBuilder.AddPathPositionedRun(System.ReadOnlySpan{System.UInt16},SkiaSharp.SKFont,System.ReadOnlySpan{System.Single},System.ReadOnlySpan{SkiaSharp.SKPoint},SkiaSharp.SKPath,SkiaSharp.SKTextAlign) + - [ ] M:SkiaSharp.SKTextBlobBuilder.AddPositionedRun(SkiaSharp.SKPaint,System.ReadOnlySpan{System.UInt16},System.ReadOnlySpan{SkiaSharp.SKPoint},System.Nullable{SkiaSharp.SKRect}) + - [ ] M:SkiaSharp.SKTextBlobBuilder.AddPositionedRun(SkiaSharp.SKPaint,System.ReadOnlySpan{System.UInt16},System.ReadOnlySpan{SkiaSharp.SKPoint},System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.UInt32},System.Nullable{SkiaSharp.SKRect}) + - [ ] M:SkiaSharp.SKTextBlobBuilder.AddPositionedRun(SkiaSharp.SKPaint,System.ReadOnlySpan{System.UInt16},System.ReadOnlySpan{SkiaSharp.SKPoint},System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.UInt32}) + - [ ] M:SkiaSharp.SKTextBlobBuilder.AddPositionedRun(SkiaSharp.SKPaint,System.ReadOnlySpan{System.UInt16},System.ReadOnlySpan{SkiaSharp.SKPoint}) + - [ ] M:SkiaSharp.SKTextBlobBuilder.AddPositionedRun(SkiaSharp.SKPaint,System.UInt16[],SkiaSharp.SKPoint[],SkiaSharp.SKRect) + - [ ] M:SkiaSharp.SKTextBlobBuilder.AddPositionedRun(SkiaSharp.SKPaint,System.UInt16[],SkiaSharp.SKPoint[],System.Byte[],System.UInt32[],SkiaSharp.SKRect) + - [ ] M:SkiaSharp.SKTextBlobBuilder.AddPositionedRun(SkiaSharp.SKPaint,System.UInt16[],SkiaSharp.SKPoint[],System.Byte[],System.UInt32[]) + - [ ] M:SkiaSharp.SKTextBlobBuilder.AddPositionedRun(SkiaSharp.SKPaint,System.UInt16[],SkiaSharp.SKPoint[],System.String,System.UInt32[],SkiaSharp.SKRect) + - [ ] M:SkiaSharp.SKTextBlobBuilder.AddPositionedRun(SkiaSharp.SKPaint,System.UInt16[],SkiaSharp.SKPoint[],System.String,System.UInt32[]) + - [ ] M:SkiaSharp.SKTextBlobBuilder.AddPositionedRun(SkiaSharp.SKPaint,System.UInt16[],SkiaSharp.SKPoint[]) + - [ ] M:SkiaSharp.SKTextBlobBuilder.AddPositionedRun(System.ReadOnlySpan{System.UInt16},SkiaSharp.SKFont,System.ReadOnlySpan{SkiaSharp.SKPoint}) + - [ ] M:SkiaSharp.SKTextBlobBuilder.AddRotationScaleRun(System.ReadOnlySpan{System.UInt16},SkiaSharp.SKFont,System.ReadOnlySpan{SkiaSharp.SKRotationScaleMatrix}) + - [ ] M:SkiaSharp.SKTextBlobBuilder.AddRun(SkiaSharp.SKPaint,System.Single,System.Single,System.ReadOnlySpan{System.UInt16},System.Nullable{SkiaSharp.SKRect}) + - [ ] M:SkiaSharp.SKTextBlobBuilder.AddRun(SkiaSharp.SKPaint,System.Single,System.Single,System.ReadOnlySpan{System.UInt16},System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.UInt32},System.Nullable{SkiaSharp.SKRect}) + - [ ] M:SkiaSharp.SKTextBlobBuilder.AddRun(SkiaSharp.SKPaint,System.Single,System.Single,System.ReadOnlySpan{System.UInt16},System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.UInt32}) + - [ ] M:SkiaSharp.SKTextBlobBuilder.AddRun(SkiaSharp.SKPaint,System.Single,System.Single,System.ReadOnlySpan{System.UInt16}) + - [ ] M:SkiaSharp.SKTextBlobBuilder.AddRun(SkiaSharp.SKPaint,System.Single,System.Single,System.UInt16[],SkiaSharp.SKRect) + - [ ] M:SkiaSharp.SKTextBlobBuilder.AddRun(SkiaSharp.SKPaint,System.Single,System.Single,System.UInt16[],System.Byte[],System.UInt32[],SkiaSharp.SKRect) + - [ ] M:SkiaSharp.SKTextBlobBuilder.AddRun(SkiaSharp.SKPaint,System.Single,System.Single,System.UInt16[],System.Byte[],System.UInt32[]) + - [ ] M:SkiaSharp.SKTextBlobBuilder.AddRun(SkiaSharp.SKPaint,System.Single,System.Single,System.UInt16[],System.String,System.UInt32[],SkiaSharp.SKRect) + - [ ] M:SkiaSharp.SKTextBlobBuilder.AddRun(SkiaSharp.SKPaint,System.Single,System.Single,System.UInt16[],System.String,System.UInt32[]) + - [ ] M:SkiaSharp.SKTextBlobBuilder.AddRun(SkiaSharp.SKPaint,System.Single,System.Single,System.UInt16[]) + - [ ] M:SkiaSharp.SKTextBlobBuilder.AddRun(System.ReadOnlySpan{System.UInt16},SkiaSharp.SKFont,SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.SKTextBlobBuilder.AllocateHorizontalRun(SkiaSharp.SKFont,System.Int32,System.Single,System.Nullable{SkiaSharp.SKRect}) + - [ ] M:SkiaSharp.SKTextBlobBuilder.AllocateHorizontalRun(SkiaSharp.SKPaint,System.Int32,System.Single,System.Int32,System.Nullable{SkiaSharp.SKRect}) + - [ ] M:SkiaSharp.SKTextBlobBuilder.AllocateHorizontalRun(SkiaSharp.SKPaint,System.Int32,System.Single,System.Int32) + - [ ] M:SkiaSharp.SKTextBlobBuilder.AllocateHorizontalRun(SkiaSharp.SKPaint,System.Int32,System.Single,System.Nullable{SkiaSharp.SKRect}) + - [ ] M:SkiaSharp.SKTextBlobBuilder.AllocateHorizontalRun(SkiaSharp.SKPaint,System.Int32,System.Single) + - [ ] M:SkiaSharp.SKTextBlobBuilder.AllocatePositionedRun(SkiaSharp.SKFont,System.Int32,System.Nullable{SkiaSharp.SKRect}) + - [ ] M:SkiaSharp.SKTextBlobBuilder.AllocatePositionedRun(SkiaSharp.SKPaint,System.Int32,System.Int32,System.Nullable{SkiaSharp.SKRect}) + - [ ] M:SkiaSharp.SKTextBlobBuilder.AllocatePositionedRun(SkiaSharp.SKPaint,System.Int32,System.Int32) + - [ ] M:SkiaSharp.SKTextBlobBuilder.AllocatePositionedRun(SkiaSharp.SKPaint,System.Int32,System.Nullable{SkiaSharp.SKRect}) + - [ ] M:SkiaSharp.SKTextBlobBuilder.AllocatePositionedRun(SkiaSharp.SKPaint,System.Int32) + - [ ] M:SkiaSharp.SKTextBlobBuilder.AllocateRotationScaleRun(SkiaSharp.SKFont,System.Int32) + - [ ] M:SkiaSharp.SKTextBlobBuilder.AllocateRun(SkiaSharp.SKFont,System.Int32,System.Single,System.Single,System.Nullable{SkiaSharp.SKRect}) + - [ ] M:SkiaSharp.SKTextBlobBuilder.AllocateRun(SkiaSharp.SKPaint,System.Int32,System.Single,System.Single,System.Int32,System.Nullable{SkiaSharp.SKRect}) + - [ ] M:SkiaSharp.SKTextBlobBuilder.AllocateRun(SkiaSharp.SKPaint,System.Int32,System.Single,System.Single,System.Int32) + - [ ] M:SkiaSharp.SKTextBlobBuilder.AllocateRun(SkiaSharp.SKPaint,System.Int32,System.Single,System.Single,System.Nullable{SkiaSharp.SKRect}) + - [ ] M:SkiaSharp.SKTextBlobBuilder.AllocateRun(SkiaSharp.SKPaint,System.Int32,System.Single,System.Single) + - [ ] M:SkiaSharp.SKTextBlobBuilder.Build + - [ ] M:SkiaSharp.SKTextBlobBuilder.Dispose(System.Boolean) + - [ ] M:SkiaSharp.SKTextBlobBuilder.DisposeNative +- [ ] SkiaSharp.SKTextEncoding + - [ ] F:SkiaSharp.SKTextEncoding.GlyphId + - [ ] F:SkiaSharp.SKTextEncoding.Utf16 + - [ ] F:SkiaSharp.SKTextEncoding.Utf32 + - [ ] F:SkiaSharp.SKTextEncoding.Utf8 +- [ ] SkiaSharp.SKTraceMemoryDump + - [ ] M:SkiaSharp.SKTraceMemoryDump.#ctor(System.Boolean,System.Boolean) + - [ ] M:SkiaSharp.SKTraceMemoryDump.DisposeNative + - [ ] M:SkiaSharp.SKTraceMemoryDump.OnDumpNumericValue(System.String,System.String,System.String,System.UInt64) + - [ ] M:SkiaSharp.SKTraceMemoryDump.OnDumpStringValue(System.String,System.String,System.String) +- [ ] SkiaSharp.SKTransferFunctionBehavior + - [ ] F:SkiaSharp.SKTransferFunctionBehavior.Ignore + - [ ] F:SkiaSharp.SKTransferFunctionBehavior.Respect +- [ ] SkiaSharp.SKTrimPathEffectMode + - [ ] F:SkiaSharp.SKTrimPathEffectMode.Inverted + - [ ] F:SkiaSharp.SKTrimPathEffectMode.Normal +- [ ] SkiaSharp.SKTypeface + - [ ] M:SkiaSharp.SKTypeface.CharsToGlyphs(System.IntPtr,System.Int32,SkiaSharp.SKEncoding,System.UInt16[]@) + - [ ] M:SkiaSharp.SKTypeface.CharsToGlyphs(System.String,System.UInt16[]@) + - [ ] M:SkiaSharp.SKTypeface.ContainsGlyph(System.Int32) + - [ ] M:SkiaSharp.SKTypeface.ContainsGlyphs(System.IntPtr,System.Int32,SkiaSharp.SKTextEncoding) + - [ ] M:SkiaSharp.SKTypeface.ContainsGlyphs(System.ReadOnlySpan{System.Byte},SkiaSharp.SKTextEncoding) + - [ ] M:SkiaSharp.SKTypeface.ContainsGlyphs(System.ReadOnlySpan{System.Char}) + - [ ] M:SkiaSharp.SKTypeface.ContainsGlyphs(System.ReadOnlySpan{System.Int32}) + - [ ] M:SkiaSharp.SKTypeface.ContainsGlyphs(System.String) + - [ ] M:SkiaSharp.SKTypeface.CountGlyphs(System.Byte[],SkiaSharp.SKEncoding) + - [ ] M:SkiaSharp.SKTypeface.CountGlyphs(System.Byte[],SkiaSharp.SKTextEncoding) + - [ ] M:SkiaSharp.SKTypeface.CountGlyphs(System.IntPtr,System.Int32,SkiaSharp.SKEncoding) + - [ ] M:SkiaSharp.SKTypeface.CountGlyphs(System.IntPtr,System.Int32,SkiaSharp.SKTextEncoding) + - [ ] M:SkiaSharp.SKTypeface.CountGlyphs(System.ReadOnlySpan{System.Byte},SkiaSharp.SKEncoding) + - [ ] M:SkiaSharp.SKTypeface.CountGlyphs(System.ReadOnlySpan{System.Byte},SkiaSharp.SKTextEncoding) + - [ ] M:SkiaSharp.SKTypeface.CountGlyphs(System.ReadOnlySpan{System.Char}) + - [ ] M:SkiaSharp.SKTypeface.CountGlyphs(System.String,SkiaSharp.SKEncoding) + - [ ] M:SkiaSharp.SKTypeface.CountGlyphs(System.String) + - [ ] M:SkiaSharp.SKTypeface.CreateDefault + - [ ] M:SkiaSharp.SKTypeface.Dispose(System.Boolean) + - [ ] M:SkiaSharp.SKTypeface.FromData(SkiaSharp.SKData,System.Int32) + - [ ] M:SkiaSharp.SKTypeface.FromFamilyName(System.String,SkiaSharp.SKFontStyle) + - [ ] M:SkiaSharp.SKTypeface.FromFamilyName(System.String,SkiaSharp.SKFontStyleWeight,SkiaSharp.SKFontStyleWidth,SkiaSharp.SKFontStyleSlant) + - [ ] M:SkiaSharp.SKTypeface.FromFamilyName(System.String,SkiaSharp.SKTypefaceStyle) + - [ ] M:SkiaSharp.SKTypeface.FromFamilyName(System.String,System.Int32,System.Int32,SkiaSharp.SKFontStyleSlant) + - [ ] M:SkiaSharp.SKTypeface.FromFamilyName(System.String) + - [ ] M:SkiaSharp.SKTypeface.FromFile(System.String,System.Int32) + - [ ] M:SkiaSharp.SKTypeface.FromStream(SkiaSharp.SKStreamAsset,System.Int32) + - [ ] M:SkiaSharp.SKTypeface.FromStream(System.IO.Stream,System.Int32) + - [ ] M:SkiaSharp.SKTypeface.FromTypeface(SkiaSharp.SKTypeface,SkiaSharp.SKTypefaceStyle) + - [ ] M:SkiaSharp.SKTypeface.GetGlyph(System.Int32) + - [ ] M:SkiaSharp.SKTypeface.GetGlyphs(System.Byte[],SkiaSharp.SKEncoding,System.UInt16[]@) + - [ ] M:SkiaSharp.SKTypeface.GetGlyphs(System.Byte[],SkiaSharp.SKEncoding) + - [ ] M:SkiaSharp.SKTypeface.GetGlyphs(System.IntPtr,System.Int32,SkiaSharp.SKEncoding,System.UInt16[]@) + - [ ] M:SkiaSharp.SKTypeface.GetGlyphs(System.IntPtr,System.Int32,SkiaSharp.SKEncoding) + - [ ] M:SkiaSharp.SKTypeface.GetGlyphs(System.IntPtr,System.Int32,SkiaSharp.SKTextEncoding) + - [ ] M:SkiaSharp.SKTypeface.GetGlyphs(System.ReadOnlySpan{System.Byte},SkiaSharp.SKEncoding,System.UInt16[]@) + - [ ] M:SkiaSharp.SKTypeface.GetGlyphs(System.ReadOnlySpan{System.Byte},SkiaSharp.SKEncoding) + - [ ] M:SkiaSharp.SKTypeface.GetGlyphs(System.ReadOnlySpan{System.Byte},SkiaSharp.SKTextEncoding) + - [ ] M:SkiaSharp.SKTypeface.GetGlyphs(System.ReadOnlySpan{System.Char}) + - [ ] M:SkiaSharp.SKTypeface.GetGlyphs(System.ReadOnlySpan{System.Int32}) + - [ ] M:SkiaSharp.SKTypeface.GetGlyphs(System.String,SkiaSharp.SKEncoding,System.UInt16[]@) + - [ ] M:SkiaSharp.SKTypeface.GetGlyphs(System.String,SkiaSharp.SKEncoding) + - [ ] M:SkiaSharp.SKTypeface.GetGlyphs(System.String,System.UInt16[]@) + - [ ] M:SkiaSharp.SKTypeface.GetGlyphs(System.String) + - [ ] M:SkiaSharp.SKTypeface.GetKerningPairAdjustments(System.ReadOnlySpan{System.UInt16}) + - [ ] M:SkiaSharp.SKTypeface.GetTableData(System.UInt32) + - [ ] M:SkiaSharp.SKTypeface.GetTableSize(System.UInt32) + - [ ] M:SkiaSharp.SKTypeface.GetTableTags + - [ ] M:SkiaSharp.SKTypeface.OpenStream + - [ ] M:SkiaSharp.SKTypeface.OpenStream(System.Int32@) + - [ ] M:SkiaSharp.SKTypeface.ToFont + - [ ] M:SkiaSharp.SKTypeface.ToFont(System.Single,System.Single,System.Single) + - [ ] M:SkiaSharp.SKTypeface.TryGetTableData(System.UInt32,System.Byte[]@) + - [ ] M:SkiaSharp.SKTypeface.TryGetTableData(System.UInt32,System.Int32,System.Int32,System.IntPtr) + - [ ] M:SkiaSharp.SKTypeface.TryGetTableTags(System.UInt32[]@) + - [ ] P:SkiaSharp.SKTypeface.Default + - [ ] P:SkiaSharp.SKTypeface.FamilyName + - [ ] P:SkiaSharp.SKTypeface.FontSlant + - [ ] P:SkiaSharp.SKTypeface.FontStyle + - [ ] P:SkiaSharp.SKTypeface.FontWeight + - [ ] P:SkiaSharp.SKTypeface.FontWidth + - [ ] P:SkiaSharp.SKTypeface.GlyphCount + - [ ] P:SkiaSharp.SKTypeface.IsBold + - [ ] P:SkiaSharp.SKTypeface.IsFixedPitch + - [ ] P:SkiaSharp.SKTypeface.IsItalic + - [ ] P:SkiaSharp.SKTypeface.Style + - [ ] P:SkiaSharp.SKTypeface.TableCount + - [ ] P:SkiaSharp.SKTypeface.UnitsPerEm +- [ ] SkiaSharp.SKTypefaceStyle + - [ ] F:SkiaSharp.SKTypefaceStyle.Bold + - [ ] F:SkiaSharp.SKTypefaceStyle.BoldItalic + - [ ] F:SkiaSharp.SKTypefaceStyle.Italic + - [ ] F:SkiaSharp.SKTypefaceStyle.Normal +- [ ] SkiaSharp.SKVertexMode + - [ ] F:SkiaSharp.SKVertexMode.TriangleFan + - [ ] F:SkiaSharp.SKVertexMode.Triangles + - [ ] F:SkiaSharp.SKVertexMode.TriangleStrip +- [ ] SkiaSharp.SKVertices + - [ ] M:SkiaSharp.SKVertices.CreateCopy(SkiaSharp.SKVertexMode,SkiaSharp.SKPoint[],SkiaSharp.SKColor[]) + - [ ] M:SkiaSharp.SKVertices.CreateCopy(SkiaSharp.SKVertexMode,SkiaSharp.SKPoint[],SkiaSharp.SKPoint[],SkiaSharp.SKColor[],System.UInt16[]) + - [ ] M:SkiaSharp.SKVertices.CreateCopy(SkiaSharp.SKVertexMode,SkiaSharp.SKPoint[],SkiaSharp.SKPoint[],SkiaSharp.SKColor[]) + - [ ] M:SkiaSharp.SKVertices.Dispose(System.Boolean) +- [ ] SkiaSharp.SKWebpEncoderCompression + - [ ] F:SkiaSharp.SKWebpEncoderCompression.Lossless + - [ ] F:SkiaSharp.SKWebpEncoderCompression.Lossy +- [ ] SkiaSharp.SKWebpEncoderOptions + - [ ] F:SkiaSharp.SKWebpEncoderOptions.Default + - [ ] M:SkiaSharp.SKWebpEncoderOptions.#ctor(SkiaSharp.SKWebpEncoderCompression,System.Single,SkiaSharp.SKTransferFunctionBehavior) + - [ ] M:SkiaSharp.SKWebpEncoderOptions.#ctor(SkiaSharp.SKWebpEncoderCompression,System.Single) + - [ ] M:SkiaSharp.SKWebpEncoderOptions.Equals(SkiaSharp.SKWebpEncoderOptions) + - [ ] M:SkiaSharp.SKWebpEncoderOptions.Equals(System.Object) + - [ ] M:SkiaSharp.SKWebpEncoderOptions.GetHashCode + - [ ] M:SkiaSharp.SKWebpEncoderOptions.op_Equality(SkiaSharp.SKWebpEncoderOptions,SkiaSharp.SKWebpEncoderOptions) + - [ ] M:SkiaSharp.SKWebpEncoderOptions.op_Inequality(SkiaSharp.SKWebpEncoderOptions,SkiaSharp.SKWebpEncoderOptions) + - [ ] P:SkiaSharp.SKWebpEncoderOptions.Compression + - [ ] P:SkiaSharp.SKWebpEncoderOptions.Quality + - [ ] P:SkiaSharp.SKWebpEncoderOptions.UnpremulBehavior +- [ ] SkiaSharp.SKWStream + - [ ] M:SkiaSharp.SKWStream.Flush + - [ ] M:SkiaSharp.SKWStream.GetSizeOfPackedUInt32(System.UInt32) + - [ ] M:SkiaSharp.SKWStream.NewLine + - [ ] M:SkiaSharp.SKWStream.Write(System.Byte[],System.Int32) + - [ ] M:SkiaSharp.SKWStream.Write16(System.UInt16) + - [ ] M:SkiaSharp.SKWStream.Write32(System.UInt32) + - [ ] M:SkiaSharp.SKWStream.Write8(System.Byte) + - [ ] M:SkiaSharp.SKWStream.WriteBigDecimalAsText(System.Int64,System.Int32) + - [ ] M:SkiaSharp.SKWStream.WriteBool(System.Boolean) + - [ ] M:SkiaSharp.SKWStream.WriteDecimalAsTest(System.Int32) + - [ ] M:SkiaSharp.SKWStream.WriteHexAsText(System.UInt32,System.Int32) + - [ ] M:SkiaSharp.SKWStream.WritePackedUInt32(System.UInt32) + - [ ] M:SkiaSharp.SKWStream.WriteScalar(System.Single) + - [ ] M:SkiaSharp.SKWStream.WriteScalarAsText(System.Single) + - [ ] M:SkiaSharp.SKWStream.WriteStream(SkiaSharp.SKStream,System.Int32) + - [ ] M:SkiaSharp.SKWStream.WriteText(System.String) + - [ ] P:SkiaSharp.SKWStream.BytesWritten +- [ ] SkiaSharp.SKXmlStreamWriter + - [ ] M:SkiaSharp.SKXmlStreamWriter.#ctor(SkiaSharp.SKWStream) + - [ ] M:SkiaSharp.SKXmlStreamWriter.Dispose(System.Boolean) + - [ ] M:SkiaSharp.SKXmlStreamWriter.DisposeNative +- [ ] SkiaSharp.SKXmlWriter +- [ ] SkiaSharp.SKZeroInitialized + - [ ] F:SkiaSharp.SKZeroInitialized.No + - [ ] F:SkiaSharp.SKZeroInitialized.Yes +- [ ] SkiaSharp.StringUtilities + - [ ] M:SkiaSharp.StringUtilities.GetEncodedText(System.ReadOnlySpan{System.Char},SkiaSharp.SKTextEncoding) + - [ ] M:SkiaSharp.StringUtilities.GetEncodedText(System.String,SkiaSharp.SKEncoding) + - [ ] M:SkiaSharp.StringUtilities.GetEncodedText(System.String,SkiaSharp.SKTextEncoding) + - [ ] M:SkiaSharp.StringUtilities.GetString(System.Byte[],SkiaSharp.SKTextEncoding) + - [ ] M:SkiaSharp.StringUtilities.GetString(System.Byte[],System.Int32,System.Int32,SkiaSharp.SKTextEncoding) + - [ ] M:SkiaSharp.StringUtilities.GetString(System.IntPtr,System.Int32,SkiaSharp.SKTextEncoding) + - [ ] M:SkiaSharp.StringUtilities.GetString(System.ReadOnlySpan{System.Byte},SkiaSharp.SKTextEncoding) + - [ ] M:SkiaSharp.StringUtilities.GetString(System.ReadOnlySpan{System.Byte},System.Int32,System.Int32,SkiaSharp.SKTextEncoding) + - [ ] M:SkiaSharp.StringUtilities.GetUnicodeCharacterCode(System.String,SkiaSharp.SKTextEncoding) + +## Namespace SkiaSharp.HarfBuzz + +- [ ] SkiaSharp.HarfBuzz.BlobExtensions + - [ ] M:SkiaSharp.HarfBuzz.BlobExtensions.ToHarfBuzzBlob(SkiaSharp.SKStreamAsset) +- [ ] SkiaSharp.HarfBuzz.CanvasExtensions + - [ ] M:SkiaSharp.HarfBuzz.CanvasExtensions.DrawShapedText(SkiaSharp.SKCanvas,SkiaSharp.HarfBuzz.SKShaper,System.String,SkiaSharp.SKPoint,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.HarfBuzz.CanvasExtensions.DrawShapedText(SkiaSharp.SKCanvas,SkiaSharp.HarfBuzz.SKShaper,System.String,System.Single,System.Single,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.HarfBuzz.CanvasExtensions.DrawShapedText(SkiaSharp.SKCanvas,System.String,SkiaSharp.SKPoint,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.HarfBuzz.CanvasExtensions.DrawShapedText(SkiaSharp.SKCanvas,System.String,System.Single,System.Single,SkiaSharp.SKPaint) +- [ ] SkiaSharp.HarfBuzz.FontExtensions + - [ ] M:SkiaSharp.HarfBuzz.FontExtensions.GetScale(HarfBuzzSharp.Font) + - [ ] M:SkiaSharp.HarfBuzz.FontExtensions.SetScale(HarfBuzzSharp.Font,SkiaSharp.SKSizeI) +- [ ] SkiaSharp.HarfBuzz.SKShaper + - [ ] M:SkiaSharp.HarfBuzz.SKShaper.#ctor(SkiaSharp.SKTypeface) + - [ ] M:SkiaSharp.HarfBuzz.SKShaper.Dispose + - [ ] M:SkiaSharp.HarfBuzz.SKShaper.Shape(HarfBuzzSharp.Buffer,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.HarfBuzz.SKShaper.Shape(HarfBuzzSharp.Buffer,System.Single,System.Single,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.HarfBuzz.SKShaper.Shape(System.String,SkiaSharp.SKPaint) + - [ ] M:SkiaSharp.HarfBuzz.SKShaper.Shape(System.String,System.Single,System.Single,SkiaSharp.SKPaint) + - [ ] P:SkiaSharp.HarfBuzz.SKShaper.Typeface +- [ ] SkiaSharp.HarfBuzz.SKShaper.Result + - [ ] M:SkiaSharp.HarfBuzz.SKShaper.Result.#ctor + - [ ] M:SkiaSharp.HarfBuzz.SKShaper.Result.#ctor(System.UInt32[],System.UInt32[],SkiaSharp.SKPoint[],System.Single) + - [ ] M:SkiaSharp.HarfBuzz.SKShaper.Result.#ctor(System.UInt32[],System.UInt32[],SkiaSharp.SKPoint[]) + - [ ] P:SkiaSharp.HarfBuzz.SKShaper.Result.Clusters + - [ ] P:SkiaSharp.HarfBuzz.SKShaper.Result.Codepoints + - [ ] P:SkiaSharp.HarfBuzz.SKShaper.Result.Points + - [ ] P:SkiaSharp.HarfBuzz.SKShaper.Result.Width + +## Namespace SkiaSharp.Internals + +- [ ] SkiaSharp.Internals.IPlatformLock + - [ ] M:SkiaSharp.Internals.IPlatformLock.EnterReadLock + - [ ] M:SkiaSharp.Internals.IPlatformLock.EnterUpgradeableReadLock + - [ ] M:SkiaSharp.Internals.IPlatformLock.EnterWriteLock + - [ ] M:SkiaSharp.Internals.IPlatformLock.ExitReadLock + - [ ] M:SkiaSharp.Internals.IPlatformLock.ExitUpgradeableReadLock + - [ ] M:SkiaSharp.Internals.IPlatformLock.ExitWriteLock +- [ ] SkiaSharp.Internals.PlatformConfiguration + - [ ] P:SkiaSharp.Internals.PlatformConfiguration.Is64Bit + - [ ] P:SkiaSharp.Internals.PlatformConfiguration.IsArm + - [ ] P:SkiaSharp.Internals.PlatformConfiguration.IsGlibc + - [ ] P:SkiaSharp.Internals.PlatformConfiguration.IsLinux + - [ ] P:SkiaSharp.Internals.PlatformConfiguration.IsMac + - [ ] P:SkiaSharp.Internals.PlatformConfiguration.IsUnix + - [ ] P:SkiaSharp.Internals.PlatformConfiguration.IsWindows + - [ ] P:SkiaSharp.Internals.PlatformConfiguration.LinuxFlavor +- [ ] SkiaSharp.Internals.PlatformLock + - [ ] M:SkiaSharp.Internals.PlatformLock.Create + - [ ] M:SkiaSharp.Internals.PlatformLock.DefaultFactory + - [ ] P:SkiaSharp.Internals.PlatformLock.Factory + +## Namespace SkiaSharp.SceneGraph + +- [ ] SkiaSharp.SceneGraph.InvalidationController + - [ ] M:SkiaSharp.SceneGraph.InvalidationController.#ctor + - [ ] M:SkiaSharp.SceneGraph.InvalidationController.Begin + - [ ] M:SkiaSharp.SceneGraph.InvalidationController.DisposeNative + - [ ] M:SkiaSharp.SceneGraph.InvalidationController.End + - [ ] M:SkiaSharp.SceneGraph.InvalidationController.Invalidate(SkiaSharp.SKRect,SkiaSharp.SKMatrix) + - [ ] M:SkiaSharp.SceneGraph.InvalidationController.Reset + - [ ] P:SkiaSharp.SceneGraph.InvalidationController.Bounds + +## Namespace SkiaSharp.Skottie + +- [ ] SkiaSharp.Skottie.Animation + - [ ] M:SkiaSharp.Skottie.Animation.Create(SkiaSharp.SKData) + - [ ] M:SkiaSharp.Skottie.Animation.Create(SkiaSharp.SKStream) + - [ ] M:SkiaSharp.Skottie.Animation.Create(System.IO.Stream) + - [ ] M:SkiaSharp.Skottie.Animation.Create(System.String) + - [ ] M:SkiaSharp.Skottie.Animation.DisposeNative + - [ ] M:SkiaSharp.Skottie.Animation.Parse(System.String) + - [ ] M:SkiaSharp.Skottie.Animation.Render(SkiaSharp.SKCanvas,SkiaSharp.SKRect,SkiaSharp.Skottie.AnimationRenderFlags) + - [ ] M:SkiaSharp.Skottie.Animation.Render(SkiaSharp.SKCanvas,SkiaSharp.SKRect) + - [ ] M:SkiaSharp.Skottie.Animation.Seek(System.Double,SkiaSharp.SceneGraph.InvalidationController) + - [ ] M:SkiaSharp.Skottie.Animation.SeekFrame(System.Double,SkiaSharp.SceneGraph.InvalidationController) + - [ ] M:SkiaSharp.Skottie.Animation.SeekFrameTime(System.Double,SkiaSharp.SceneGraph.InvalidationController) + - [ ] M:SkiaSharp.Skottie.Animation.SeekFrameTime(System.TimeSpan,SkiaSharp.SceneGraph.InvalidationController) + - [ ] M:SkiaSharp.Skottie.Animation.TryCreate(SkiaSharp.SKData,SkiaSharp.Skottie.Animation@) + - [ ] M:SkiaSharp.Skottie.Animation.TryCreate(SkiaSharp.SKStream,SkiaSharp.Skottie.Animation@) + - [ ] M:SkiaSharp.Skottie.Animation.TryCreate(System.IO.Stream,SkiaSharp.Skottie.Animation@) + - [ ] M:SkiaSharp.Skottie.Animation.TryCreate(System.String,SkiaSharp.Skottie.Animation@) + - [ ] M:SkiaSharp.Skottie.Animation.TryParse(System.String,SkiaSharp.Skottie.Animation@) + - [ ] P:SkiaSharp.Skottie.Animation.Duration + - [ ] P:SkiaSharp.Skottie.Animation.Fps + - [ ] P:SkiaSharp.Skottie.Animation.InPoint + - [ ] P:SkiaSharp.Skottie.Animation.OutPoint + - [ ] P:SkiaSharp.Skottie.Animation.Size + - [ ] P:SkiaSharp.Skottie.Animation.Version +- [ ] SkiaSharp.Skottie.AnimationRenderFlags + - [ ] F:SkiaSharp.Skottie.AnimationRenderFlags.DisableTopLevelClipping + - [ ] F:SkiaSharp.Skottie.AnimationRenderFlags.SkipTopLevelIsolation + +## Namespace SkiaSharp.Views.Android + +- [ ] SkiaSharp.Views.Android.AndroidExtensions + - [ ] M:SkiaSharp.Views.Android.AndroidExtensions.ToBitmap(SkiaSharp.SKBitmap) + - [ ] M:SkiaSharp.Views.Android.AndroidExtensions.ToBitmap(SkiaSharp.SKImage) + - [ ] M:SkiaSharp.Views.Android.AndroidExtensions.ToBitmap(SkiaSharp.SKPicture,SkiaSharp.SKSizeI) + - [ ] M:SkiaSharp.Views.Android.AndroidExtensions.ToBitmap(SkiaSharp.SKPixmap) + - [ ] M:SkiaSharp.Views.Android.AndroidExtensions.ToColor(SkiaSharp.SKColor) + - [ ] M:SkiaSharp.Views.Android.AndroidExtensions.ToMatrix(SkiaSharp.SKMatrix) + - [ ] M:SkiaSharp.Views.Android.AndroidExtensions.ToPoint(SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.Views.Android.AndroidExtensions.ToPoint(SkiaSharp.SKPointI) + - [ ] M:SkiaSharp.Views.Android.AndroidExtensions.ToRect(SkiaSharp.SKRect) + - [ ] M:SkiaSharp.Views.Android.AndroidExtensions.ToRect(SkiaSharp.SKRectI) + - [ ] M:SkiaSharp.Views.Android.AndroidExtensions.ToSKBitmap(Android.Graphics.Bitmap) + - [ ] M:SkiaSharp.Views.Android.AndroidExtensions.ToSKColor(Android.Graphics.Color) + - [ ] M:SkiaSharp.Views.Android.AndroidExtensions.ToSKImage(Android.Graphics.Bitmap) + - [ ] M:SkiaSharp.Views.Android.AndroidExtensions.ToSKMatrix(Android.Graphics.Matrix) + - [ ] M:SkiaSharp.Views.Android.AndroidExtensions.ToSKPixmap(Android.Graphics.Bitmap,SkiaSharp.SKPixmap) + - [ ] M:SkiaSharp.Views.Android.AndroidExtensions.ToSKPoint(Android.Graphics.Point) + - [ ] M:SkiaSharp.Views.Android.AndroidExtensions.ToSKPoint(Android.Graphics.PointF) + - [ ] M:SkiaSharp.Views.Android.AndroidExtensions.ToSKRect(Android.Graphics.Rect) + - [ ] M:SkiaSharp.Views.Android.AndroidExtensions.ToSKRect(Android.Graphics.RectF) +- [ ] SkiaSharp.Views.Android.Extensions + - [ ] M:SkiaSharp.Views.Android.Extensions.ToDrawingColor(SkiaSharp.SKColor) + - [ ] M:SkiaSharp.Views.Android.Extensions.ToDrawingPoint(SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.Views.Android.Extensions.ToDrawingPoint(SkiaSharp.SKPointI) + - [ ] M:SkiaSharp.Views.Android.Extensions.ToDrawingRect(SkiaSharp.SKRect) + - [ ] M:SkiaSharp.Views.Android.Extensions.ToDrawingRect(SkiaSharp.SKRectI) + - [ ] M:SkiaSharp.Views.Android.Extensions.ToDrawingSize(SkiaSharp.SKSize) + - [ ] M:SkiaSharp.Views.Android.Extensions.ToDrawingSize(SkiaSharp.SKSizeI) + - [ ] M:SkiaSharp.Views.Android.Extensions.ToSKColor(System.Drawing.Color) + - [ ] M:SkiaSharp.Views.Android.Extensions.ToSKPoint(System.Drawing.Point) + - [ ] M:SkiaSharp.Views.Android.Extensions.ToSKPoint(System.Drawing.PointF) + - [ ] M:SkiaSharp.Views.Android.Extensions.ToSKRect(System.Drawing.Rectangle) + - [ ] M:SkiaSharp.Views.Android.Extensions.ToSKRect(System.Drawing.RectangleF) + - [ ] M:SkiaSharp.Views.Android.Extensions.ToSKSize(System.Drawing.Size) + - [ ] M:SkiaSharp.Views.Android.Extensions.ToSKSize(System.Drawing.SizeF) +- [ ] SkiaSharp.Views.Android.GLTextureView + - [ ] M:SkiaSharp.Views.Android.GLTextureView.#ctor(Android.Content.Context,Android.Util.IAttributeSet) + - [ ] M:SkiaSharp.Views.Android.GLTextureView.#ctor(Android.Content.Context) + - [ ] M:SkiaSharp.Views.Android.GLTextureView.Dispose(System.Boolean) + - [ ] M:SkiaSharp.Views.Android.GLTextureView.OnAttachedToWindow + - [ ] M:SkiaSharp.Views.Android.GLTextureView.OnDetachedFromWindow + - [ ] M:SkiaSharp.Views.Android.GLTextureView.OnLayoutChange(Android.Views.View,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32) + - [ ] M:SkiaSharp.Views.Android.GLTextureView.OnPause + - [ ] M:SkiaSharp.Views.Android.GLTextureView.OnResume + - [ ] M:SkiaSharp.Views.Android.GLTextureView.OnSurfaceTextureAvailable(Android.Graphics.SurfaceTexture,System.Int32,System.Int32) + - [ ] M:SkiaSharp.Views.Android.GLTextureView.OnSurfaceTextureDestroyed(Android.Graphics.SurfaceTexture) + - [ ] M:SkiaSharp.Views.Android.GLTextureView.OnSurfaceTextureSizeChanged(Android.Graphics.SurfaceTexture,System.Int32,System.Int32) + - [ ] M:SkiaSharp.Views.Android.GLTextureView.OnSurfaceTextureUpdated(Android.Graphics.SurfaceTexture) + - [ ] M:SkiaSharp.Views.Android.GLTextureView.QueueEvent(Java.Lang.IRunnable) + - [ ] M:SkiaSharp.Views.Android.GLTextureView.QueueEvent(System.Action) + - [ ] M:SkiaSharp.Views.Android.GLTextureView.RequestRender + - [ ] M:SkiaSharp.Views.Android.GLTextureView.SetEGLConfigChooser(SkiaSharp.Views.Android.GLTextureView.IEGLConfigChooser) + - [ ] M:SkiaSharp.Views.Android.GLTextureView.SetEGLConfigChooser(System.Boolean) + - [ ] M:SkiaSharp.Views.Android.GLTextureView.SetEGLConfigChooser(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32) + - [ ] M:SkiaSharp.Views.Android.GLTextureView.SetEGLContextClientVersion(System.Int32) + - [ ] M:SkiaSharp.Views.Android.GLTextureView.SetEGLContextFactory(SkiaSharp.Views.Android.GLTextureView.IEGLContextFactory) + - [ ] M:SkiaSharp.Views.Android.GLTextureView.SetEGLWindowSurfaceFactory(SkiaSharp.Views.Android.GLTextureView.IEGLWindowSurfaceFactory) + - [ ] M:SkiaSharp.Views.Android.GLTextureView.SetGLWrapper(SkiaSharp.Views.Android.GLTextureView.IGLWrapper) + - [ ] M:SkiaSharp.Views.Android.GLTextureView.SetRenderer(SkiaSharp.Views.Android.GLTextureView.IRenderer) + - [ ] P:SkiaSharp.Views.Android.GLTextureView.DebugFlags + - [ ] P:SkiaSharp.Views.Android.GLTextureView.PreserveEGLContextOnPause + - [ ] P:SkiaSharp.Views.Android.GLTextureView.RenderMode +- [ ] SkiaSharp.Views.Android.GLTextureView.IEGLConfigChooser + - [ ] M:SkiaSharp.Views.Android.GLTextureView.IEGLConfigChooser.ChooseConfig(Javax.Microedition.Khronos.Egl.IEGL10,Javax.Microedition.Khronos.Egl.EGLDisplay) +- [ ] SkiaSharp.Views.Android.GLTextureView.IEGLContextFactory + - [ ] M:SkiaSharp.Views.Android.GLTextureView.IEGLContextFactory.CreateContext(Javax.Microedition.Khronos.Egl.IEGL10,Javax.Microedition.Khronos.Egl.EGLDisplay,Javax.Microedition.Khronos.Egl.EGLConfig) + - [ ] M:SkiaSharp.Views.Android.GLTextureView.IEGLContextFactory.DestroyContext(Javax.Microedition.Khronos.Egl.IEGL10,Javax.Microedition.Khronos.Egl.EGLDisplay,Javax.Microedition.Khronos.Egl.EGLContext) +- [ ] SkiaSharp.Views.Android.GLTextureView.IEGLWindowSurfaceFactory + - [ ] M:SkiaSharp.Views.Android.GLTextureView.IEGLWindowSurfaceFactory.CreateWindowSurface(Javax.Microedition.Khronos.Egl.IEGL10,Javax.Microedition.Khronos.Egl.EGLDisplay,Javax.Microedition.Khronos.Egl.EGLConfig,Java.Lang.Object) + - [ ] M:SkiaSharp.Views.Android.GLTextureView.IEGLWindowSurfaceFactory.DestroySurface(Javax.Microedition.Khronos.Egl.IEGL10,Javax.Microedition.Khronos.Egl.EGLDisplay,Javax.Microedition.Khronos.Egl.EGLSurface) +- [ ] SkiaSharp.Views.Android.GLTextureView.IGLWrapper + - [ ] M:SkiaSharp.Views.Android.GLTextureView.IGLWrapper.Wrap(Javax.Microedition.Khronos.Opengles.IGL) +- [ ] SkiaSharp.Views.Android.GLTextureView.IRenderer + - [ ] M:SkiaSharp.Views.Android.GLTextureView.IRenderer.OnDrawFrame(Javax.Microedition.Khronos.Opengles.IGL10) + - [ ] M:SkiaSharp.Views.Android.GLTextureView.IRenderer.OnSurfaceChanged(Javax.Microedition.Khronos.Opengles.IGL10,System.Int32,System.Int32) + - [ ] M:SkiaSharp.Views.Android.GLTextureView.IRenderer.OnSurfaceCreated(Javax.Microedition.Khronos.Opengles.IGL10,Javax.Microedition.Khronos.Egl.EGLConfig) + - [ ] M:SkiaSharp.Views.Android.GLTextureView.IRenderer.OnSurfaceDestroyed +- [ ] SkiaSharp.Views.Android.SKCanvasView + - [ ] E:SkiaSharp.Views.Android.SKCanvasView.PaintSurface + - [ ] M:SkiaSharp.Views.Android.SKCanvasView.#ctor(Android.Content.Context,Android.Util.IAttributeSet,System.Int32) + - [ ] M:SkiaSharp.Views.Android.SKCanvasView.#ctor(Android.Content.Context,Android.Util.IAttributeSet) + - [ ] M:SkiaSharp.Views.Android.SKCanvasView.#ctor(Android.Content.Context) + - [ ] M:SkiaSharp.Views.Android.SKCanvasView.#ctor(System.IntPtr,Android.Runtime.JniHandleOwnership) + - [ ] M:SkiaSharp.Views.Android.SKCanvasView.Dispose(System.Boolean) + - [ ] M:SkiaSharp.Views.Android.SKCanvasView.OnAttachedToWindow + - [ ] M:SkiaSharp.Views.Android.SKCanvasView.OnDetachedFromWindow + - [ ] M:SkiaSharp.Views.Android.SKCanvasView.OnDraw(Android.Graphics.Canvas) + - [ ] M:SkiaSharp.Views.Android.SKCanvasView.OnDraw(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo) + - [ ] M:SkiaSharp.Views.Android.SKCanvasView.OnPaintSurface(SkiaSharp.Views.Android.SKPaintSurfaceEventArgs) + - [ ] M:SkiaSharp.Views.Android.SKCanvasView.OnSizeChanged(System.Int32,System.Int32,System.Int32,System.Int32) + - [ ] P:SkiaSharp.Views.Android.SKCanvasView.CanvasSize + - [ ] P:SkiaSharp.Views.Android.SKCanvasView.IgnorePixelScaling +- [ ] SkiaSharp.Views.Android.SKGLSurfaceView + - [ ] E:SkiaSharp.Views.Android.SKGLSurfaceView.PaintSurface + - [ ] M:SkiaSharp.Views.Android.SKGLSurfaceView.#ctor(Android.Content.Context,Android.Util.IAttributeSet) + - [ ] M:SkiaSharp.Views.Android.SKGLSurfaceView.#ctor(Android.Content.Context) + - [ ] M:SkiaSharp.Views.Android.SKGLSurfaceView.OnPaintSurface(SkiaSharp.Views.Android.SKPaintGLSurfaceEventArgs) + - [ ] M:SkiaSharp.Views.Android.SKGLSurfaceView.SetRenderer(SkiaSharp.Views.Android.SKGLSurfaceView.ISKRenderer) + - [ ] P:SkiaSharp.Views.Android.SKGLSurfaceView.CanvasSize + - [ ] P:SkiaSharp.Views.Android.SKGLSurfaceView.GRContext +- [ ] SkiaSharp.Views.Android.SKGLSurfaceView.ISKRenderer + - [ ] M:SkiaSharp.Views.Android.SKGLSurfaceView.ISKRenderer.OnDrawFrame(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTargetDesc) +- [ ] SkiaSharp.Views.Android.SKGLSurfaceViewRenderer + - [ ] M:SkiaSharp.Views.Android.SKGLSurfaceViewRenderer.#ctor + - [ ] M:SkiaSharp.Views.Android.SKGLSurfaceViewRenderer.Dispose(System.Boolean) + - [ ] M:SkiaSharp.Views.Android.SKGLSurfaceViewRenderer.OnDrawFrame(Javax.Microedition.Khronos.Opengles.IGL10) + - [ ] M:SkiaSharp.Views.Android.SKGLSurfaceViewRenderer.OnDrawFrame(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTargetDesc) + - [ ] M:SkiaSharp.Views.Android.SKGLSurfaceViewRenderer.OnPaintSurface(SkiaSharp.Views.Android.SKPaintGLSurfaceEventArgs) + - [ ] M:SkiaSharp.Views.Android.SKGLSurfaceViewRenderer.OnSurfaceChanged(Javax.Microedition.Khronos.Opengles.IGL10,System.Int32,System.Int32) + - [ ] M:SkiaSharp.Views.Android.SKGLSurfaceViewRenderer.OnSurfaceCreated(Javax.Microedition.Khronos.Opengles.IGL10,Javax.Microedition.Khronos.Egl.EGLConfig) + - [ ] P:SkiaSharp.Views.Android.SKGLSurfaceViewRenderer.CanvasSize + - [ ] P:SkiaSharp.Views.Android.SKGLSurfaceViewRenderer.GRContext +- [ ] SkiaSharp.Views.Android.SKGLTextureView + - [ ] E:SkiaSharp.Views.Android.SKGLTextureView.PaintSurface + - [ ] M:SkiaSharp.Views.Android.SKGLTextureView.#ctor(Android.Content.Context,Android.Util.IAttributeSet) + - [ ] M:SkiaSharp.Views.Android.SKGLTextureView.#ctor(Android.Content.Context) + - [ ] M:SkiaSharp.Views.Android.SKGLTextureView.OnPaintSurface(SkiaSharp.Views.Android.SKPaintGLSurfaceEventArgs) + - [ ] M:SkiaSharp.Views.Android.SKGLTextureView.SetRenderer(SkiaSharp.Views.Android.SKGLTextureView.ISKRenderer) + - [ ] P:SkiaSharp.Views.Android.SKGLTextureView.CanvasSize + - [ ] P:SkiaSharp.Views.Android.SKGLTextureView.GRContext +- [ ] SkiaSharp.Views.Android.SKGLTextureView.ISKRenderer + - [ ] M:SkiaSharp.Views.Android.SKGLTextureView.ISKRenderer.OnDrawFrame(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTargetDesc) +- [ ] SkiaSharp.Views.Android.SKGLTextureViewRenderer + - [ ] M:SkiaSharp.Views.Android.SKGLTextureViewRenderer.#ctor + - [ ] M:SkiaSharp.Views.Android.SKGLTextureViewRenderer.Dispose(System.Boolean) + - [ ] M:SkiaSharp.Views.Android.SKGLTextureViewRenderer.OnDrawFrame(Javax.Microedition.Khronos.Opengles.IGL10) + - [ ] M:SkiaSharp.Views.Android.SKGLTextureViewRenderer.OnDrawFrame(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTargetDesc) + - [ ] M:SkiaSharp.Views.Android.SKGLTextureViewRenderer.OnPaintSurface(SkiaSharp.Views.Android.SKPaintGLSurfaceEventArgs) + - [ ] M:SkiaSharp.Views.Android.SKGLTextureViewRenderer.OnSurfaceChanged(Javax.Microedition.Khronos.Opengles.IGL10,System.Int32,System.Int32) + - [ ] M:SkiaSharp.Views.Android.SKGLTextureViewRenderer.OnSurfaceCreated(Javax.Microedition.Khronos.Opengles.IGL10,Javax.Microedition.Khronos.Egl.EGLConfig) + - [ ] M:SkiaSharp.Views.Android.SKGLTextureViewRenderer.OnSurfaceDestroyed + - [ ] P:SkiaSharp.Views.Android.SKGLTextureViewRenderer.CanvasSize + - [ ] P:SkiaSharp.Views.Android.SKGLTextureViewRenderer.GRContext +- [ ] SkiaSharp.Views.Android.SKLockedSurface + - [ ] P:SkiaSharp.Views.Android.SKLockedSurface.Canvas + - [ ] P:SkiaSharp.Views.Android.SKLockedSurface.ImageInfo + - [ ] P:SkiaSharp.Views.Android.SKLockedSurface.Surface +- [ ] SkiaSharp.Views.Android.SKPaintGLSurfaceEventArgs + - [ ] M:SkiaSharp.Views.Android.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.GRGlFramebufferInfo) + - [ ] M:SkiaSharp.Views.Android.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType) + - [ ] M:SkiaSharp.Views.Android.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKImageInfo,SkiaSharp.SKImageInfo) + - [ ] M:SkiaSharp.Views.Android.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKImageInfo) + - [ ] M:SkiaSharp.Views.Android.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget) + - [ ] M:SkiaSharp.Views.Android.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTargetDesc) + - [ ] P:SkiaSharp.Views.Android.SKPaintGLSurfaceEventArgs.BackendRenderTarget + - [ ] P:SkiaSharp.Views.Android.SKPaintGLSurfaceEventArgs.ColorType + - [ ] P:SkiaSharp.Views.Android.SKPaintGLSurfaceEventArgs.Info + - [ ] P:SkiaSharp.Views.Android.SKPaintGLSurfaceEventArgs.Origin + - [ ] P:SkiaSharp.Views.Android.SKPaintGLSurfaceEventArgs.RawInfo + - [ ] P:SkiaSharp.Views.Android.SKPaintGLSurfaceEventArgs.RenderTarget + - [ ] P:SkiaSharp.Views.Android.SKPaintGLSurfaceEventArgs.Surface +- [ ] SkiaSharp.Views.Android.SKPaintSurfaceEventArgs + - [ ] M:SkiaSharp.Views.Android.SKPaintSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo,SkiaSharp.SKImageInfo) + - [ ] M:SkiaSharp.Views.Android.SKPaintSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo) + - [ ] P:SkiaSharp.Views.Android.SKPaintSurfaceEventArgs.Info + - [ ] P:SkiaSharp.Views.Android.SKPaintSurfaceEventArgs.RawInfo + - [ ] P:SkiaSharp.Views.Android.SKPaintSurfaceEventArgs.Surface +- [ ] SkiaSharp.Views.Android.SKSurfaceView + - [ ] M:SkiaSharp.Views.Android.SKSurfaceView.#ctor(Android.Content.Context,Android.Util.IAttributeSet,System.Int32) + - [ ] M:SkiaSharp.Views.Android.SKSurfaceView.#ctor(Android.Content.Context,Android.Util.IAttributeSet) + - [ ] M:SkiaSharp.Views.Android.SKSurfaceView.#ctor(Android.Content.Context) + - [ ] M:SkiaSharp.Views.Android.SKSurfaceView.Dispose(System.Boolean) + - [ ] M:SkiaSharp.Views.Android.SKSurfaceView.LockSurface + - [ ] M:SkiaSharp.Views.Android.SKSurfaceView.SurfaceChanged(Android.Views.ISurfaceHolder,Android.Graphics.Format,System.Int32,System.Int32) + - [ ] M:SkiaSharp.Views.Android.SKSurfaceView.SurfaceCreated(Android.Views.ISurfaceHolder) + - [ ] M:SkiaSharp.Views.Android.SKSurfaceView.SurfaceDestroyed(Android.Views.ISurfaceHolder) + - [ ] M:SkiaSharp.Views.Android.SKSurfaceView.UnlockSurfaceAndPost(SkiaSharp.Views.Android.SKLockedSurface) + - [ ] P:SkiaSharp.Views.Android.SKSurfaceView.CanvasSize + +## Namespace SkiaSharp.Views.Blazor + +- [ ] SkiaSharp.Views.Blazor.SKCanvasView + - [ ] M:SkiaSharp.Views.Blazor.SKCanvasView.#ctor + - [ ] M:SkiaSharp.Views.Blazor.SKCanvasView.BuildRenderTree(Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder) + - [ ] M:SkiaSharp.Views.Blazor.SKCanvasView.Dispose + - [ ] M:SkiaSharp.Views.Blazor.SKCanvasView.Invalidate + - [ ] M:SkiaSharp.Views.Blazor.SKCanvasView.OnAfterRenderAsync(System.Boolean) + - [ ] P:SkiaSharp.Views.Blazor.SKCanvasView.AdditionalAttributes + - [ ] P:SkiaSharp.Views.Blazor.SKCanvasView.EnableRenderLoop + - [ ] P:SkiaSharp.Views.Blazor.SKCanvasView.IgnorePixelScaling + - [ ] P:SkiaSharp.Views.Blazor.SKCanvasView.OnPaintSurface +- [ ] SkiaSharp.Views.Blazor.SKGLView + - [ ] M:SkiaSharp.Views.Blazor.SKGLView.#ctor + - [ ] M:SkiaSharp.Views.Blazor.SKGLView.BuildRenderTree(Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder) + - [ ] M:SkiaSharp.Views.Blazor.SKGLView.Dispose + - [ ] M:SkiaSharp.Views.Blazor.SKGLView.Invalidate + - [ ] M:SkiaSharp.Views.Blazor.SKGLView.OnAfterRenderAsync(System.Boolean) + - [ ] P:SkiaSharp.Views.Blazor.SKGLView.AdditionalAttributes + - [ ] P:SkiaSharp.Views.Blazor.SKGLView.EnableRenderLoop + - [ ] P:SkiaSharp.Views.Blazor.SKGLView.IgnorePixelScaling + - [ ] P:SkiaSharp.Views.Blazor.SKGLView.OnPaintSurface +- [ ] SkiaSharp.Views.Blazor.SKPaintGLSurfaceEventArgs + - [ ] M:SkiaSharp.Views.Blazor.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType) + - [ ] M:SkiaSharp.Views.Blazor.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKImageInfo,SkiaSharp.SKImageInfo) + - [ ] M:SkiaSharp.Views.Blazor.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKImageInfo) + - [ ] M:SkiaSharp.Views.Blazor.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget) + - [ ] P:SkiaSharp.Views.Blazor.SKPaintGLSurfaceEventArgs.BackendRenderTarget + - [ ] P:SkiaSharp.Views.Blazor.SKPaintGLSurfaceEventArgs.ColorType + - [ ] P:SkiaSharp.Views.Blazor.SKPaintGLSurfaceEventArgs.Info + - [ ] P:SkiaSharp.Views.Blazor.SKPaintGLSurfaceEventArgs.Origin + - [ ] P:SkiaSharp.Views.Blazor.SKPaintGLSurfaceEventArgs.RawInfo + - [ ] P:SkiaSharp.Views.Blazor.SKPaintGLSurfaceEventArgs.Surface +- [ ] SkiaSharp.Views.Blazor.SKPaintSurfaceEventArgs + - [ ] M:SkiaSharp.Views.Blazor.SKPaintSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo,SkiaSharp.SKImageInfo) + - [ ] M:SkiaSharp.Views.Blazor.SKPaintSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo) + - [ ] P:SkiaSharp.Views.Blazor.SKPaintSurfaceEventArgs.Info + - [ ] P:SkiaSharp.Views.Blazor.SKPaintSurfaceEventArgs.RawInfo + - [ ] P:SkiaSharp.Views.Blazor.SKPaintSurfaceEventArgs.Surface + +## Namespace SkiaSharp.Views.Blazor.Internal + +- [ ] SkiaSharp.Views.Blazor.Internal.ActionHelper + - [ ] M:SkiaSharp.Views.Blazor.Internal.ActionHelper.#ctor(System.Action) + - [ ] M:SkiaSharp.Views.Blazor.Internal.ActionHelper.Invoke +- [ ] SkiaSharp.Views.Blazor.Internal.FloatFloatActionHelper + - [ ] M:SkiaSharp.Views.Blazor.Internal.FloatFloatActionHelper.#ctor(System.Action{System.Single,System.Single}) + - [ ] M:SkiaSharp.Views.Blazor.Internal.FloatFloatActionHelper.Invoke(System.Single,System.Single) + +## Namespace SkiaSharp.Views.Desktop + +- [ ] SkiaSharp.Views.Desktop.Extensions + - [ ] M:SkiaSharp.Views.Desktop.Extensions.ToBitmap(SkiaSharp.SKBitmap) + - [ ] M:SkiaSharp.Views.Desktop.Extensions.ToBitmap(SkiaSharp.SKImage) + - [ ] M:SkiaSharp.Views.Desktop.Extensions.ToBitmap(SkiaSharp.SKPicture,SkiaSharp.SKSizeI) + - [ ] M:SkiaSharp.Views.Desktop.Extensions.ToBitmap(SkiaSharp.SKPixmap) + - [ ] M:SkiaSharp.Views.Desktop.Extensions.ToDrawingColor(SkiaSharp.SKColor) + - [ ] M:SkiaSharp.Views.Desktop.Extensions.ToDrawingPoint(SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.Views.Desktop.Extensions.ToDrawingPoint(SkiaSharp.SKPointI) + - [ ] M:SkiaSharp.Views.Desktop.Extensions.ToDrawingRect(SkiaSharp.SKRect) + - [ ] M:SkiaSharp.Views.Desktop.Extensions.ToDrawingRect(SkiaSharp.SKRectI) + - [ ] M:SkiaSharp.Views.Desktop.Extensions.ToDrawingSize(SkiaSharp.SKSize) + - [ ] M:SkiaSharp.Views.Desktop.Extensions.ToDrawingSize(SkiaSharp.SKSizeI) + - [ ] M:SkiaSharp.Views.Desktop.Extensions.ToSKBitmap(System.Drawing.Bitmap) + - [ ] M:SkiaSharp.Views.Desktop.Extensions.ToSKColor(System.Drawing.Color) + - [ ] M:SkiaSharp.Views.Desktop.Extensions.ToSKImage(System.Drawing.Bitmap) + - [ ] M:SkiaSharp.Views.Desktop.Extensions.ToSKPixmap(System.Drawing.Bitmap,SkiaSharp.SKPixmap) + - [ ] M:SkiaSharp.Views.Desktop.Extensions.ToSKPoint(System.Drawing.Point) + - [ ] M:SkiaSharp.Views.Desktop.Extensions.ToSKPoint(System.Drawing.PointF) + - [ ] M:SkiaSharp.Views.Desktop.Extensions.ToSKRect(System.Drawing.Rectangle) + - [ ] M:SkiaSharp.Views.Desktop.Extensions.ToSKRect(System.Drawing.RectangleF) + - [ ] M:SkiaSharp.Views.Desktop.Extensions.ToSKSize(System.Drawing.Size) + - [ ] M:SkiaSharp.Views.Desktop.Extensions.ToSKSize(System.Drawing.SizeF) +- [ ] SkiaSharp.Views.Desktop.SKControl + - [ ] E:SkiaSharp.Views.Desktop.SKControl.PaintSurface + - [ ] M:SkiaSharp.Views.Desktop.SKControl.#ctor + - [ ] M:SkiaSharp.Views.Desktop.SKControl.Dispose(System.Boolean) + - [ ] M:SkiaSharp.Views.Desktop.SKControl.OnPaint(System.Windows.Forms.PaintEventArgs) + - [ ] M:SkiaSharp.Views.Desktop.SKControl.OnPaintSurface(SkiaSharp.Views.Desktop.SKPaintSurfaceEventArgs) + - [ ] P:SkiaSharp.Views.Desktop.SKControl.CanvasSize +- [ ] SkiaSharp.Views.Desktop.SKGLControl + - [ ] E:SkiaSharp.Views.Desktop.SKGLControl.PaintSurface + - [ ] M:SkiaSharp.Views.Desktop.SKGLControl.#ctor + - [ ] M:SkiaSharp.Views.Desktop.SKGLControl.#ctor(OpenTK.Graphics.GraphicsMode,System.Int32,System.Int32,OpenTK.Graphics.GraphicsContextFlags) + - [ ] M:SkiaSharp.Views.Desktop.SKGLControl.#ctor(OpenTK.Graphics.GraphicsMode) + - [ ] M:SkiaSharp.Views.Desktop.SKGLControl.Dispose(System.Boolean) + - [ ] M:SkiaSharp.Views.Desktop.SKGLControl.OnPaint(System.Windows.Forms.PaintEventArgs) + - [ ] M:SkiaSharp.Views.Desktop.SKGLControl.OnPaintSurface(SkiaSharp.Views.Desktop.SKPaintGLSurfaceEventArgs) + - [ ] P:SkiaSharp.Views.Desktop.SKGLControl.CanvasSize + - [ ] P:SkiaSharp.Views.Desktop.SKGLControl.GRContext +- [ ] SkiaSharp.Views.Desktop.SKPaintGLSurfaceEventArgs + - [ ] M:SkiaSharp.Views.Desktop.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.GRGlFramebufferInfo) + - [ ] M:SkiaSharp.Views.Desktop.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType) + - [ ] M:SkiaSharp.Views.Desktop.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKImageInfo,SkiaSharp.SKImageInfo) + - [ ] M:SkiaSharp.Views.Desktop.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKImageInfo) + - [ ] M:SkiaSharp.Views.Desktop.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget) + - [ ] M:SkiaSharp.Views.Desktop.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTargetDesc) + - [ ] P:SkiaSharp.Views.Desktop.SKPaintGLSurfaceEventArgs.BackendRenderTarget + - [ ] P:SkiaSharp.Views.Desktop.SKPaintGLSurfaceEventArgs.ColorType + - [ ] P:SkiaSharp.Views.Desktop.SKPaintGLSurfaceEventArgs.Info + - [ ] P:SkiaSharp.Views.Desktop.SKPaintGLSurfaceEventArgs.Origin + - [ ] P:SkiaSharp.Views.Desktop.SKPaintGLSurfaceEventArgs.RawInfo + - [ ] P:SkiaSharp.Views.Desktop.SKPaintGLSurfaceEventArgs.RenderTarget + - [ ] P:SkiaSharp.Views.Desktop.SKPaintGLSurfaceEventArgs.Surface +- [ ] SkiaSharp.Views.Desktop.SKPaintSurfaceEventArgs + - [ ] M:SkiaSharp.Views.Desktop.SKPaintSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo,SkiaSharp.SKImageInfo) + - [ ] M:SkiaSharp.Views.Desktop.SKPaintSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo) + - [ ] P:SkiaSharp.Views.Desktop.SKPaintSurfaceEventArgs.Info + - [ ] P:SkiaSharp.Views.Desktop.SKPaintSurfaceEventArgs.RawInfo + - [ ] P:SkiaSharp.Views.Desktop.SKPaintSurfaceEventArgs.Surface + +## Namespace SkiaSharp.Views.Forms + +- [ ] SkiaSharp.Views.Forms.Extensions + - [ ] M:SkiaSharp.Views.Forms.Extensions.ToFormsColor(SkiaSharp.SKColor) + - [ ] M:SkiaSharp.Views.Forms.Extensions.ToFormsColor(SkiaSharp.SKColorF) + - [ ] M:SkiaSharp.Views.Forms.Extensions.ToFormsPoint(SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.Views.Forms.Extensions.ToFormsPoint(SkiaSharp.SKPointI) + - [ ] M:SkiaSharp.Views.Forms.Extensions.ToFormsRect(SkiaSharp.SKRect) + - [ ] M:SkiaSharp.Views.Forms.Extensions.ToFormsRect(SkiaSharp.SKRectI) + - [ ] M:SkiaSharp.Views.Forms.Extensions.ToFormsSize(SkiaSharp.SKSize) + - [ ] M:SkiaSharp.Views.Forms.Extensions.ToFormsSize(SkiaSharp.SKSizeI) + - [ ] M:SkiaSharp.Views.Forms.Extensions.ToSKColor(Xamarin.Forms.Color) + - [ ] M:SkiaSharp.Views.Forms.Extensions.ToSKColorF(Xamarin.Forms.Color) + - [ ] M:SkiaSharp.Views.Forms.Extensions.ToSKPoint(Xamarin.Forms.Point) + - [ ] M:SkiaSharp.Views.Forms.Extensions.ToSKRect(Xamarin.Forms.Rectangle) + - [ ] M:SkiaSharp.Views.Forms.Extensions.ToSKSize(Xamarin.Forms.Size) +- [ ] SkiaSharp.Views.Forms.GetPropertyValueEventArgs`1 + - [ ] M:SkiaSharp.Views.Forms.GetPropertyValueEventArgs`1.#ctor + - [ ] P:SkiaSharp.Views.Forms.GetPropertyValueEventArgs`1.Value +- [ ] SkiaSharp.Views.Forms.ISKCanvasViewController + - [ ] E:SkiaSharp.Views.Forms.ISKCanvasViewController.GetCanvasSize + - [ ] E:SkiaSharp.Views.Forms.ISKCanvasViewController.SurfaceInvalidated + - [ ] M:SkiaSharp.Views.Forms.ISKCanvasViewController.OnPaintSurface(SkiaSharp.Views.Forms.SKPaintSurfaceEventArgs) + - [ ] M:SkiaSharp.Views.Forms.ISKCanvasViewController.OnTouch(SkiaSharp.Views.Forms.SKTouchEventArgs) +- [ ] SkiaSharp.Views.Forms.ISKGLViewController + - [ ] E:SkiaSharp.Views.Forms.ISKGLViewController.GetCanvasSize + - [ ] E:SkiaSharp.Views.Forms.ISKGLViewController.GetGRContext + - [ ] E:SkiaSharp.Views.Forms.ISKGLViewController.SurfaceInvalidated + - [ ] M:SkiaSharp.Views.Forms.ISKGLViewController.OnPaintSurface(SkiaSharp.Views.Forms.SKPaintGLSurfaceEventArgs) + - [ ] M:SkiaSharp.Views.Forms.ISKGLViewController.OnTouch(SkiaSharp.Views.Forms.SKTouchEventArgs) +- [ ] SkiaSharp.Views.Forms.SKBitmapImageSource + - [ ] F:SkiaSharp.Views.Forms.SKBitmapImageSource.BitmapProperty + - [ ] M:SkiaSharp.Views.Forms.SKBitmapImageSource.#ctor + - [ ] M:SkiaSharp.Views.Forms.SKBitmapImageSource.Cancel + - [ ] M:SkiaSharp.Views.Forms.SKBitmapImageSource.OnPropertyChanged(System.String) + - [ ] M:SkiaSharp.Views.Forms.SKBitmapImageSource.op_Implicit(SkiaSharp.SKBitmap)~SkiaSharp.Views.Forms.SKBitmapImageSource + - [ ] M:SkiaSharp.Views.Forms.SKBitmapImageSource.op_Implicit(SkiaSharp.Views.Forms.SKBitmapImageSource)~SkiaSharp.SKBitmap + - [ ] P:SkiaSharp.Views.Forms.SKBitmapImageSource.Bitmap +- [ ] SkiaSharp.Views.Forms.SKCanvasView + - [ ] E:SkiaSharp.Views.Forms.SKCanvasView.PaintSurface + - [ ] E:SkiaSharp.Views.Forms.SKCanvasView.SkiaSharp#Views#Forms#ISKCanvasViewController#GetCanvasSize + - [ ] E:SkiaSharp.Views.Forms.SKCanvasView.SkiaSharp#Views#Forms#ISKCanvasViewController#SurfaceInvalidated + - [ ] E:SkiaSharp.Views.Forms.SKCanvasView.Touch + - [ ] F:SkiaSharp.Views.Forms.SKCanvasView.EnableTouchEventsProperty + - [ ] F:SkiaSharp.Views.Forms.SKCanvasView.IgnorePixelScalingProperty + - [ ] M:SkiaSharp.Views.Forms.SKCanvasView.#ctor + - [ ] M:SkiaSharp.Views.Forms.SKCanvasView.InvalidateSurface + - [ ] M:SkiaSharp.Views.Forms.SKCanvasView.OnMeasure(System.Double,System.Double) + - [ ] M:SkiaSharp.Views.Forms.SKCanvasView.OnPaintSurface(SkiaSharp.Views.Forms.SKPaintSurfaceEventArgs) + - [ ] M:SkiaSharp.Views.Forms.SKCanvasView.OnTouch(SkiaSharp.Views.Forms.SKTouchEventArgs) + - [ ] M:SkiaSharp.Views.Forms.SKCanvasView.SkiaSharp#Views#Forms#ISKCanvasViewController#OnPaintSurface(SkiaSharp.Views.Forms.SKPaintSurfaceEventArgs) + - [ ] M:SkiaSharp.Views.Forms.SKCanvasView.SkiaSharp#Views#Forms#ISKCanvasViewController#OnTouch(SkiaSharp.Views.Forms.SKTouchEventArgs) + - [ ] P:SkiaSharp.Views.Forms.SKCanvasView.CanvasSize + - [ ] P:SkiaSharp.Views.Forms.SKCanvasView.EnableTouchEvents + - [ ] P:SkiaSharp.Views.Forms.SKCanvasView.IgnorePixelScaling +- [ ] SkiaSharp.Views.Forms.SKGLView + - [ ] E:SkiaSharp.Views.Forms.SKGLView.PaintSurface + - [ ] E:SkiaSharp.Views.Forms.SKGLView.SkiaSharp#Views#Forms#ISKGLViewController#GetCanvasSize + - [ ] E:SkiaSharp.Views.Forms.SKGLView.SkiaSharp#Views#Forms#ISKGLViewController#GetGRContext + - [ ] E:SkiaSharp.Views.Forms.SKGLView.SkiaSharp#Views#Forms#ISKGLViewController#SurfaceInvalidated + - [ ] E:SkiaSharp.Views.Forms.SKGLView.Touch + - [ ] F:SkiaSharp.Views.Forms.SKGLView.EnableTouchEventsProperty + - [ ] F:SkiaSharp.Views.Forms.SKGLView.HasRenderLoopProperty + - [ ] M:SkiaSharp.Views.Forms.SKGLView.#ctor + - [ ] M:SkiaSharp.Views.Forms.SKGLView.InvalidateSurface + - [ ] M:SkiaSharp.Views.Forms.SKGLView.OnMeasure(System.Double,System.Double) + - [ ] M:SkiaSharp.Views.Forms.SKGLView.OnPaintSurface(SkiaSharp.Views.Forms.SKPaintGLSurfaceEventArgs) + - [ ] M:SkiaSharp.Views.Forms.SKGLView.OnTouch(SkiaSharp.Views.Forms.SKTouchEventArgs) + - [ ] M:SkiaSharp.Views.Forms.SKGLView.SkiaSharp#Views#Forms#ISKGLViewController#OnPaintSurface(SkiaSharp.Views.Forms.SKPaintGLSurfaceEventArgs) + - [ ] M:SkiaSharp.Views.Forms.SKGLView.SkiaSharp#Views#Forms#ISKGLViewController#OnTouch(SkiaSharp.Views.Forms.SKTouchEventArgs) + - [ ] P:SkiaSharp.Views.Forms.SKGLView.CanvasSize + - [ ] P:SkiaSharp.Views.Forms.SKGLView.EnableTouchEvents + - [ ] P:SkiaSharp.Views.Forms.SKGLView.GRContext + - [ ] P:SkiaSharp.Views.Forms.SKGLView.HasRenderLoop +- [ ] SkiaSharp.Views.Forms.SKImageImageSource + - [ ] F:SkiaSharp.Views.Forms.SKImageImageSource.ImageProperty + - [ ] M:SkiaSharp.Views.Forms.SKImageImageSource.#ctor + - [ ] M:SkiaSharp.Views.Forms.SKImageImageSource.Cancel + - [ ] M:SkiaSharp.Views.Forms.SKImageImageSource.OnPropertyChanged(System.String) + - [ ] M:SkiaSharp.Views.Forms.SKImageImageSource.op_Implicit(SkiaSharp.SKImage)~SkiaSharp.Views.Forms.SKImageImageSource + - [ ] M:SkiaSharp.Views.Forms.SKImageImageSource.op_Implicit(SkiaSharp.Views.Forms.SKImageImageSource)~SkiaSharp.SKImage + - [ ] P:SkiaSharp.Views.Forms.SKImageImageSource.Image +- [ ] SkiaSharp.Views.Forms.SKMouseButton + - [ ] F:SkiaSharp.Views.Forms.SKMouseButton.Left + - [ ] F:SkiaSharp.Views.Forms.SKMouseButton.Middle + - [ ] F:SkiaSharp.Views.Forms.SKMouseButton.Right + - [ ] F:SkiaSharp.Views.Forms.SKMouseButton.Unknown +- [ ] SkiaSharp.Views.Forms.SKPaintGLSurfaceEventArgs + - [ ] M:SkiaSharp.Views.Forms.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType) + - [ ] M:SkiaSharp.Views.Forms.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget) + - [ ] M:SkiaSharp.Views.Forms.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTargetDesc) + - [ ] P:SkiaSharp.Views.Forms.SKPaintGLSurfaceEventArgs.BackendRenderTarget + - [ ] P:SkiaSharp.Views.Forms.SKPaintGLSurfaceEventArgs.ColorType + - [ ] P:SkiaSharp.Views.Forms.SKPaintGLSurfaceEventArgs.Origin + - [ ] P:SkiaSharp.Views.Forms.SKPaintGLSurfaceEventArgs.RenderTarget + - [ ] P:SkiaSharp.Views.Forms.SKPaintGLSurfaceEventArgs.Surface +- [ ] SkiaSharp.Views.Forms.SKPaintSurfaceEventArgs + - [ ] M:SkiaSharp.Views.Forms.SKPaintSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo,SkiaSharp.SKImageInfo) + - [ ] M:SkiaSharp.Views.Forms.SKPaintSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo) + - [ ] P:SkiaSharp.Views.Forms.SKPaintSurfaceEventArgs.Info + - [ ] P:SkiaSharp.Views.Forms.SKPaintSurfaceEventArgs.RawInfo + - [ ] P:SkiaSharp.Views.Forms.SKPaintSurfaceEventArgs.Surface +- [ ] SkiaSharp.Views.Forms.SKPictureImageSource + - [ ] F:SkiaSharp.Views.Forms.SKPictureImageSource.DimensionsProperty + - [ ] F:SkiaSharp.Views.Forms.SKPictureImageSource.PictureProperty + - [ ] M:SkiaSharp.Views.Forms.SKPictureImageSource.#ctor + - [ ] M:SkiaSharp.Views.Forms.SKPictureImageSource.Cancel + - [ ] M:SkiaSharp.Views.Forms.SKPictureImageSource.OnPropertyChanged(System.String) + - [ ] M:SkiaSharp.Views.Forms.SKPictureImageSource.op_Explicit(SkiaSharp.Views.Forms.SKPictureImageSource)~SkiaSharp.SKPicture + - [ ] P:SkiaSharp.Views.Forms.SKPictureImageSource.Dimensions + - [ ] P:SkiaSharp.Views.Forms.SKPictureImageSource.Picture +- [ ] SkiaSharp.Views.Forms.SKPixmapImageSource + - [ ] F:SkiaSharp.Views.Forms.SKPixmapImageSource.PixmapProperty + - [ ] M:SkiaSharp.Views.Forms.SKPixmapImageSource.#ctor + - [ ] M:SkiaSharp.Views.Forms.SKPixmapImageSource.Cancel + - [ ] M:SkiaSharp.Views.Forms.SKPixmapImageSource.OnPropertyChanged(System.String) + - [ ] M:SkiaSharp.Views.Forms.SKPixmapImageSource.op_Implicit(SkiaSharp.SKPixmap)~SkiaSharp.Views.Forms.SKPixmapImageSource + - [ ] M:SkiaSharp.Views.Forms.SKPixmapImageSource.op_Implicit(SkiaSharp.Views.Forms.SKPixmapImageSource)~SkiaSharp.SKPixmap + - [ ] P:SkiaSharp.Views.Forms.SKPixmapImageSource.Pixmap +- [ ] SkiaSharp.Views.Forms.SKTouchAction + - [ ] F:SkiaSharp.Views.Forms.SKTouchAction.Cancelled + - [ ] F:SkiaSharp.Views.Forms.SKTouchAction.Entered + - [ ] F:SkiaSharp.Views.Forms.SKTouchAction.Exited + - [ ] F:SkiaSharp.Views.Forms.SKTouchAction.Moved + - [ ] F:SkiaSharp.Views.Forms.SKTouchAction.Pressed + - [ ] F:SkiaSharp.Views.Forms.SKTouchAction.Released + - [ ] F:SkiaSharp.Views.Forms.SKTouchAction.WheelChanged +- [ ] SkiaSharp.Views.Forms.SKTouchDeviceType + - [ ] F:SkiaSharp.Views.Forms.SKTouchDeviceType.Mouse + - [ ] F:SkiaSharp.Views.Forms.SKTouchDeviceType.Pen + - [ ] F:SkiaSharp.Views.Forms.SKTouchDeviceType.Touch +- [ ] SkiaSharp.Views.Forms.SKTouchEventArgs + - [ ] M:SkiaSharp.Views.Forms.SKTouchEventArgs.#ctor(System.Int64,SkiaSharp.Views.Forms.SKTouchAction,SkiaSharp.SKPoint,System.Boolean) + - [ ] M:SkiaSharp.Views.Forms.SKTouchEventArgs.#ctor(System.Int64,SkiaSharp.Views.Forms.SKTouchAction,SkiaSharp.Views.Forms.SKMouseButton,SkiaSharp.Views.Forms.SKTouchDeviceType,SkiaSharp.SKPoint,System.Boolean,System.Int32,System.Single) + - [ ] M:SkiaSharp.Views.Forms.SKTouchEventArgs.#ctor(System.Int64,SkiaSharp.Views.Forms.SKTouchAction,SkiaSharp.Views.Forms.SKMouseButton,SkiaSharp.Views.Forms.SKTouchDeviceType,SkiaSharp.SKPoint,System.Boolean,System.Int32) + - [ ] M:SkiaSharp.Views.Forms.SKTouchEventArgs.#ctor(System.Int64,SkiaSharp.Views.Forms.SKTouchAction,SkiaSharp.Views.Forms.SKMouseButton,SkiaSharp.Views.Forms.SKTouchDeviceType,SkiaSharp.SKPoint,System.Boolean) + - [ ] M:SkiaSharp.Views.Forms.SKTouchEventArgs.ToString + - [ ] P:SkiaSharp.Views.Forms.SKTouchEventArgs.ActionType + - [ ] P:SkiaSharp.Views.Forms.SKTouchEventArgs.DeviceType + - [ ] P:SkiaSharp.Views.Forms.SKTouchEventArgs.Handled + - [ ] P:SkiaSharp.Views.Forms.SKTouchEventArgs.Id + - [ ] P:SkiaSharp.Views.Forms.SKTouchEventArgs.InContact + - [ ] P:SkiaSharp.Views.Forms.SKTouchEventArgs.Location + - [ ] P:SkiaSharp.Views.Forms.SKTouchEventArgs.MouseButton + - [ ] P:SkiaSharp.Views.Forms.SKTouchEventArgs.Pressure + - [ ] P:SkiaSharp.Views.Forms.SKTouchEventArgs.WheelDelta + +## Namespace SkiaSharp.Views.Gtk + +- [ ] SkiaSharp.Views.Gtk.GTKExtensions + - [ ] M:SkiaSharp.Views.Gtk.GTKExtensions.ToColor(SkiaSharp.SKColor) + - [ ] M:SkiaSharp.Views.Gtk.GTKExtensions.ToPixbuf(SkiaSharp.SKBitmap) + - [ ] M:SkiaSharp.Views.Gtk.GTKExtensions.ToPixbuf(SkiaSharp.SKImage) + - [ ] M:SkiaSharp.Views.Gtk.GTKExtensions.ToPixbuf(SkiaSharp.SKPicture,SkiaSharp.SKSizeI) + - [ ] M:SkiaSharp.Views.Gtk.GTKExtensions.ToPixbuf(SkiaSharp.SKPixmap) + - [ ] M:SkiaSharp.Views.Gtk.GTKExtensions.ToPoint(SkiaSharp.SKPointI) + - [ ] M:SkiaSharp.Views.Gtk.GTKExtensions.ToRect(SkiaSharp.SKRectI) + - [ ] M:SkiaSharp.Views.Gtk.GTKExtensions.ToSize(SkiaSharp.SKSizeI) + - [ ] M:SkiaSharp.Views.Gtk.GTKExtensions.ToSKBitmap(Gdk.Pixbuf) + - [ ] M:SkiaSharp.Views.Gtk.GTKExtensions.ToSKColor(Gdk.Color) + - [ ] M:SkiaSharp.Views.Gtk.GTKExtensions.ToSKImage(Gdk.Pixbuf) + - [ ] M:SkiaSharp.Views.Gtk.GTKExtensions.ToSKPixmap(Gdk.Pixbuf,SkiaSharp.SKPixmap) + - [ ] M:SkiaSharp.Views.Gtk.GTKExtensions.ToSKPointI(Gdk.Point) + - [ ] M:SkiaSharp.Views.Gtk.GTKExtensions.ToSKRectI(Gdk.Rectangle) + - [ ] M:SkiaSharp.Views.Gtk.GTKExtensions.ToSKSizeI(Gdk.Size) +- [ ] SkiaSharp.Views.Gtk.SKDrawingArea + - [ ] E:SkiaSharp.Views.Gtk.SKDrawingArea.PaintSurface + - [ ] M:SkiaSharp.Views.Gtk.SKDrawingArea.#ctor + - [ ] M:SkiaSharp.Views.Gtk.SKDrawingArea.Dispose(System.Boolean) + - [ ] M:SkiaSharp.Views.Gtk.SKDrawingArea.OnDrawn(Cairo.Context) + - [ ] M:SkiaSharp.Views.Gtk.SKDrawingArea.OnPaintSurface(SkiaSharp.Views.Desktop.SKPaintSurfaceEventArgs) + - [ ] P:SkiaSharp.Views.Gtk.SKDrawingArea.CanvasSize +- [ ] SkiaSharp.Views.Gtk.SKWidget + - [ ] E:SkiaSharp.Views.Gtk.SKWidget.PaintSurface + - [ ] M:SkiaSharp.Views.Gtk.SKWidget.#ctor + - [ ] M:SkiaSharp.Views.Gtk.SKWidget.Destroy + - [ ] M:SkiaSharp.Views.Gtk.SKWidget.Dispose + - [ ] M:SkiaSharp.Views.Gtk.SKWidget.Dispose(System.Boolean) + - [ ] M:SkiaSharp.Views.Gtk.SKWidget.Finalize + - [ ] M:SkiaSharp.Views.Gtk.SKWidget.OnExposeEvent(Gdk.EventExpose) + - [ ] M:SkiaSharp.Views.Gtk.SKWidget.OnPaintSurface(SkiaSharp.Views.Desktop.SKPaintSurfaceEventArgs) + - [ ] P:SkiaSharp.Views.Gtk.SKWidget.CanvasSize + +## Namespace SkiaSharp.Views.iOS + +- [ ] SkiaSharp.Views.iOS.AppleExtensions + - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToCGColor(SkiaSharp.SKColor) + - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToCGColor(SkiaSharp.SKColorF) + - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToCGImage(SkiaSharp.SKBitmap) + - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToCGImage(SkiaSharp.SKImage) + - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToCGImage(SkiaSharp.SKPicture,SkiaSharp.SKSizeI) + - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToCGImage(SkiaSharp.SKPixmap) + - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToCIColor(SkiaSharp.SKColor) + - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToCIColor(SkiaSharp.SKColorF) + - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToCIImage(SkiaSharp.SKBitmap) + - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToCIImage(SkiaSharp.SKImage) + - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToCIImage(SkiaSharp.SKPicture,SkiaSharp.SKSizeI) + - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToCIImage(SkiaSharp.SKPixmap) + - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToNSData(SkiaSharp.SKData) + - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToPoint(SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToRect(SkiaSharp.SKRect) + - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToSize(SkiaSharp.SKSize) + - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToSKBitmap(CoreGraphics.CGImage) + - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToSKBitmap(CoreImage.CIImage) + - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToSKColor(CoreGraphics.CGColor) + - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToSKColor(CoreImage.CIColor) + - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToSKColorF(CoreGraphics.CGColor) + - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToSKColorF(CoreImage.CIColor) + - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToSKData(Foundation.NSData) + - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToSKImage(CoreGraphics.CGImage) + - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToSKImage(CoreImage.CIImage) + - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToSKPixmap(CoreGraphics.CGImage,SkiaSharp.SKPixmap) + - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToSKPixmap(CoreImage.CIImage,SkiaSharp.SKPixmap) + - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToSKPoint(CoreGraphics.CGPoint) + - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToSKRect(CoreGraphics.CGRect) + - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToSKSize(CoreGraphics.CGSize) +- [ ] SkiaSharp.Views.iOS.Extensions + - [ ] M:SkiaSharp.Views.iOS.Extensions.ToDrawingPoint(SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.Views.iOS.Extensions.ToDrawingPoint(SkiaSharp.SKPointI) + - [ ] M:SkiaSharp.Views.iOS.Extensions.ToDrawingRect(SkiaSharp.SKRect) + - [ ] M:SkiaSharp.Views.iOS.Extensions.ToDrawingRect(SkiaSharp.SKRectI) + - [ ] M:SkiaSharp.Views.iOS.Extensions.ToDrawingSize(SkiaSharp.SKSize) + - [ ] M:SkiaSharp.Views.iOS.Extensions.ToDrawingSize(SkiaSharp.SKSizeI) + - [ ] M:SkiaSharp.Views.iOS.Extensions.ToSKPoint(System.Drawing.Point) + - [ ] M:SkiaSharp.Views.iOS.Extensions.ToSKPoint(System.Drawing.PointF) + - [ ] M:SkiaSharp.Views.iOS.Extensions.ToSKRect(System.Drawing.Rectangle) + - [ ] M:SkiaSharp.Views.iOS.Extensions.ToSKRect(System.Drawing.RectangleF) + - [ ] M:SkiaSharp.Views.iOS.Extensions.ToSKSize(System.Drawing.Size) + - [ ] M:SkiaSharp.Views.iOS.Extensions.ToSKSize(System.Drawing.SizeF) +- [ ] SkiaSharp.Views.iOS.iOSExtensions + - [ ] M:SkiaSharp.Views.iOS.iOSExtensions.ToSKBitmap(UIKit.UIImage) + - [ ] M:SkiaSharp.Views.iOS.iOSExtensions.ToSKColor(UIKit.UIColor) + - [ ] M:SkiaSharp.Views.iOS.iOSExtensions.ToSKColorF(UIKit.UIColor) + - [ ] M:SkiaSharp.Views.iOS.iOSExtensions.ToSKImage(UIKit.UIImage) + - [ ] M:SkiaSharp.Views.iOS.iOSExtensions.ToSKPixmap(UIKit.UIImage,SkiaSharp.SKPixmap) + - [ ] M:SkiaSharp.Views.iOS.iOSExtensions.ToUIColor(SkiaSharp.SKColor) + - [ ] M:SkiaSharp.Views.iOS.iOSExtensions.ToUIColor(SkiaSharp.SKColorF) + - [ ] M:SkiaSharp.Views.iOS.iOSExtensions.ToUIImage(SkiaSharp.SKBitmap,System.nfloat,UIKit.UIImageOrientation) + - [ ] M:SkiaSharp.Views.iOS.iOSExtensions.ToUIImage(SkiaSharp.SKBitmap) + - [ ] M:SkiaSharp.Views.iOS.iOSExtensions.ToUIImage(SkiaSharp.SKImage) + - [ ] M:SkiaSharp.Views.iOS.iOSExtensions.ToUIImage(SkiaSharp.SKPicture,SkiaSharp.SKSizeI,System.nfloat,UIKit.UIImageOrientation) + - [ ] M:SkiaSharp.Views.iOS.iOSExtensions.ToUIImage(SkiaSharp.SKPicture,SkiaSharp.SKSizeI) + - [ ] M:SkiaSharp.Views.iOS.iOSExtensions.ToUIImage(SkiaSharp.SKPixmap,System.nfloat,UIKit.UIImageOrientation) + - [ ] M:SkiaSharp.Views.iOS.iOSExtensions.ToUIImage(SkiaSharp.SKPixmap) +- [ ] SkiaSharp.Views.iOS.ISKCanvasLayerDelegate + - [ ] M:SkiaSharp.Views.iOS.ISKCanvasLayerDelegate.DrawInSurface(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo) +- [ ] SkiaSharp.Views.iOS.ISKGLLayerDelegate + - [ ] M:SkiaSharp.Views.iOS.ISKGLLayerDelegate.DrawInSurface(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTargetDesc) +- [ ] SkiaSharp.Views.iOS.SKCanvasLayer + - [ ] E:SkiaSharp.Views.iOS.SKCanvasLayer.PaintSurface + - [ ] M:SkiaSharp.Views.iOS.SKCanvasLayer.#ctor + - [ ] M:SkiaSharp.Views.iOS.SKCanvasLayer.Dispose(System.Boolean) + - [ ] M:SkiaSharp.Views.iOS.SKCanvasLayer.DrawInContext(CoreGraphics.CGContext) + - [ ] M:SkiaSharp.Views.iOS.SKCanvasLayer.DrawInSurface(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo) + - [ ] M:SkiaSharp.Views.iOS.SKCanvasLayer.OnPaintSurface(SkiaSharp.Views.iOS.SKPaintSurfaceEventArgs) + - [ ] P:SkiaSharp.Views.iOS.SKCanvasLayer.CanvasSize + - [ ] P:SkiaSharp.Views.iOS.SKCanvasLayer.IgnorePixelScaling + - [ ] P:SkiaSharp.Views.iOS.SKCanvasLayer.SKDelegate +- [ ] SkiaSharp.Views.iOS.SKCanvasView + - [ ] E:SkiaSharp.Views.iOS.SKCanvasView.PaintSurface + - [ ] M:SkiaSharp.Views.iOS.SKCanvasView.#ctor + - [ ] M:SkiaSharp.Views.iOS.SKCanvasView.#ctor(CoreGraphics.CGRect) + - [ ] M:SkiaSharp.Views.iOS.SKCanvasView.#ctor(System.IntPtr) + - [ ] M:SkiaSharp.Views.iOS.SKCanvasView.AwakeFromNib + - [ ] M:SkiaSharp.Views.iOS.SKCanvasView.Dispose(System.Boolean) + - [ ] M:SkiaSharp.Views.iOS.SKCanvasView.Draw(CoreGraphics.CGRect) + - [ ] M:SkiaSharp.Views.iOS.SKCanvasView.DrawInSurface(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo) + - [ ] M:SkiaSharp.Views.iOS.SKCanvasView.LayoutSubviews + - [ ] M:SkiaSharp.Views.iOS.SKCanvasView.OnPaintSurface(SkiaSharp.Views.iOS.SKPaintSurfaceEventArgs) + - [ ] M:SkiaSharp.Views.iOS.SKCanvasView.WillMoveToWindow(UIKit.UIWindow) + - [ ] P:SkiaSharp.Views.iOS.SKCanvasView.CanvasSize + - [ ] P:SkiaSharp.Views.iOS.SKCanvasView.IgnorePixelScaling +- [ ] SkiaSharp.Views.iOS.SKGLLayer + - [ ] E:SkiaSharp.Views.iOS.SKGLLayer.PaintSurface + - [ ] M:SkiaSharp.Views.iOS.SKGLLayer.#ctor + - [ ] M:SkiaSharp.Views.iOS.SKGLLayer.Dispose(System.Boolean) + - [ ] M:SkiaSharp.Views.iOS.SKGLLayer.DrawInSurface(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTargetDesc) + - [ ] M:SkiaSharp.Views.iOS.SKGLLayer.OnPaintSurface(SkiaSharp.Views.iOS.SKPaintGLSurfaceEventArgs) + - [ ] M:SkiaSharp.Views.iOS.SKGLLayer.Render + - [ ] P:SkiaSharp.Views.iOS.SKGLLayer.CanvasSize + - [ ] P:SkiaSharp.Views.iOS.SKGLLayer.Frame + - [ ] P:SkiaSharp.Views.iOS.SKGLLayer.GRContext + - [ ] P:SkiaSharp.Views.iOS.SKGLLayer.SKDelegate +- [ ] SkiaSharp.Views.iOS.SKGLView + - [ ] E:SkiaSharp.Views.iOS.SKGLView.PaintSurface + - [ ] M:SkiaSharp.Views.iOS.SKGLView.#ctor + - [ ] M:SkiaSharp.Views.iOS.SKGLView.#ctor(CoreGraphics.CGRect) + - [ ] M:SkiaSharp.Views.iOS.SKGLView.#ctor(System.IntPtr) + - [ ] M:SkiaSharp.Views.iOS.SKGLView.AwakeFromNib + - [ ] M:SkiaSharp.Views.iOS.SKGLView.DrawInRect(GLKit.GLKView,CoreGraphics.CGRect) + - [ ] M:SkiaSharp.Views.iOS.SKGLView.DrawInSurface(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTargetDesc) + - [ ] M:SkiaSharp.Views.iOS.SKGLView.OnPaintSurface(SkiaSharp.Views.iOS.SKPaintGLSurfaceEventArgs) + - [ ] P:SkiaSharp.Views.iOS.SKGLView.CanvasSize + - [ ] P:SkiaSharp.Views.iOS.SKGLView.Frame + - [ ] P:SkiaSharp.Views.iOS.SKGLView.GRContext +- [ ] SkiaSharp.Views.iOS.SKMetalView + - [ ] E:SkiaSharp.Views.iOS.SKMetalView.PaintSurface + - [ ] M:SkiaSharp.Views.iOS.SKMetalView.#ctor + - [ ] M:SkiaSharp.Views.iOS.SKMetalView.#ctor(CoreGraphics.CGRect,Metal.IMTLDevice) + - [ ] M:SkiaSharp.Views.iOS.SKMetalView.#ctor(CoreGraphics.CGRect) + - [ ] M:SkiaSharp.Views.iOS.SKMetalView.#ctor(System.IntPtr) + - [ ] M:SkiaSharp.Views.iOS.SKMetalView.AwakeFromNib + - [ ] M:SkiaSharp.Views.iOS.SKMetalView.MetalKit#IMTKViewDelegate#Draw(MetalKit.MTKView) + - [ ] M:SkiaSharp.Views.iOS.SKMetalView.MetalKit#IMTKViewDelegate#DrawableSizeWillChange(MetalKit.MTKView,CoreGraphics.CGSize) + - [ ] M:SkiaSharp.Views.iOS.SKMetalView.OnPaintSurface(SkiaSharp.Views.iOS.SKPaintMetalSurfaceEventArgs) + - [ ] P:SkiaSharp.Views.iOS.SKMetalView.CanvasSize + - [ ] P:SkiaSharp.Views.iOS.SKMetalView.GRContext +- [ ] SkiaSharp.Views.iOS.SKPaintGLSurfaceEventArgs + - [ ] M:SkiaSharp.Views.iOS.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.GRGlFramebufferInfo) + - [ ] M:SkiaSharp.Views.iOS.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType) + - [ ] M:SkiaSharp.Views.iOS.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKImageInfo,SkiaSharp.SKImageInfo) + - [ ] M:SkiaSharp.Views.iOS.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKImageInfo) + - [ ] M:SkiaSharp.Views.iOS.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget) + - [ ] M:SkiaSharp.Views.iOS.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTargetDesc) + - [ ] P:SkiaSharp.Views.iOS.SKPaintGLSurfaceEventArgs.BackendRenderTarget + - [ ] P:SkiaSharp.Views.iOS.SKPaintGLSurfaceEventArgs.ColorType + - [ ] P:SkiaSharp.Views.iOS.SKPaintGLSurfaceEventArgs.Info + - [ ] P:SkiaSharp.Views.iOS.SKPaintGLSurfaceEventArgs.Origin + - [ ] P:SkiaSharp.Views.iOS.SKPaintGLSurfaceEventArgs.RawInfo + - [ ] P:SkiaSharp.Views.iOS.SKPaintGLSurfaceEventArgs.RenderTarget + - [ ] P:SkiaSharp.Views.iOS.SKPaintGLSurfaceEventArgs.Surface +- [ ] SkiaSharp.Views.iOS.SKPaintMetalSurfaceEventArgs + - [ ] M:SkiaSharp.Views.iOS.SKPaintMetalSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType) + - [ ] M:SkiaSharp.Views.iOS.SKPaintMetalSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget) + - [ ] P:SkiaSharp.Views.iOS.SKPaintMetalSurfaceEventArgs.BackendRenderTarget + - [ ] P:SkiaSharp.Views.iOS.SKPaintMetalSurfaceEventArgs.ColorType + - [ ] P:SkiaSharp.Views.iOS.SKPaintMetalSurfaceEventArgs.Origin + - [ ] P:SkiaSharp.Views.iOS.SKPaintMetalSurfaceEventArgs.Surface +- [ ] SkiaSharp.Views.iOS.SKPaintSurfaceEventArgs + - [ ] M:SkiaSharp.Views.iOS.SKPaintSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo,SkiaSharp.SKImageInfo) + - [ ] M:SkiaSharp.Views.iOS.SKPaintSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo) + - [ ] P:SkiaSharp.Views.iOS.SKPaintSurfaceEventArgs.Info + - [ ] P:SkiaSharp.Views.iOS.SKPaintSurfaceEventArgs.RawInfo + - [ ] P:SkiaSharp.Views.iOS.SKPaintSurfaceEventArgs.Surface + +## Namespace SkiaSharp.Views.Mac + +- [ ] SkiaSharp.Views.Mac.AppleExtensions + - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToCGColor(SkiaSharp.SKColor) + - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToCGColor(SkiaSharp.SKColorF) + - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToCGImage(SkiaSharp.SKBitmap) + - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToCGImage(SkiaSharp.SKImage) + - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToCGImage(SkiaSharp.SKPicture,SkiaSharp.SKSizeI) + - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToCGImage(SkiaSharp.SKPixmap) + - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToCIColor(SkiaSharp.SKColor) + - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToCIColor(SkiaSharp.SKColorF) + - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToCIImage(SkiaSharp.SKBitmap) + - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToCIImage(SkiaSharp.SKImage) + - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToCIImage(SkiaSharp.SKPicture,SkiaSharp.SKSizeI) + - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToCIImage(SkiaSharp.SKPixmap) + - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToNSData(SkiaSharp.SKData) + - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToPoint(SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToRect(SkiaSharp.SKRect) + - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToSize(SkiaSharp.SKSize) + - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToSKBitmap(CoreGraphics.CGImage) + - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToSKBitmap(CoreImage.CIImage) + - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToSKColor(CoreGraphics.CGColor) + - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToSKColor(CoreImage.CIColor) + - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToSKColorF(CoreGraphics.CGColor) + - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToSKColorF(CoreImage.CIColor) + - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToSKData(Foundation.NSData) + - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToSKImage(CoreGraphics.CGImage) + - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToSKImage(CoreImage.CIImage) + - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToSKPixmap(CoreGraphics.CGImage,SkiaSharp.SKPixmap) + - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToSKPixmap(CoreImage.CIImage,SkiaSharp.SKPixmap) + - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToSKPoint(CoreGraphics.CGPoint) + - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToSKRect(CoreGraphics.CGRect) + - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToSKSize(CoreGraphics.CGSize) +- [ ] SkiaSharp.Views.Mac.Extensions + - [ ] M:SkiaSharp.Views.Mac.Extensions.ToDrawingPoint(SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.Views.Mac.Extensions.ToDrawingPoint(SkiaSharp.SKPointI) + - [ ] M:SkiaSharp.Views.Mac.Extensions.ToDrawingRect(SkiaSharp.SKRect) + - [ ] M:SkiaSharp.Views.Mac.Extensions.ToDrawingRect(SkiaSharp.SKRectI) + - [ ] M:SkiaSharp.Views.Mac.Extensions.ToDrawingSize(SkiaSharp.SKSize) + - [ ] M:SkiaSharp.Views.Mac.Extensions.ToDrawingSize(SkiaSharp.SKSizeI) + - [ ] M:SkiaSharp.Views.Mac.Extensions.ToSKPoint(System.Drawing.Point) + - [ ] M:SkiaSharp.Views.Mac.Extensions.ToSKPoint(System.Drawing.PointF) + - [ ] M:SkiaSharp.Views.Mac.Extensions.ToSKRect(System.Drawing.Rectangle) + - [ ] M:SkiaSharp.Views.Mac.Extensions.ToSKRect(System.Drawing.RectangleF) + - [ ] M:SkiaSharp.Views.Mac.Extensions.ToSKSize(System.Drawing.Size) + - [ ] M:SkiaSharp.Views.Mac.Extensions.ToSKSize(System.Drawing.SizeF) +- [ ] SkiaSharp.Views.Mac.ISKCanvasLayerDelegate + - [ ] M:SkiaSharp.Views.Mac.ISKCanvasLayerDelegate.DrawInSurface(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo) +- [ ] SkiaSharp.Views.Mac.ISKGLLayerDelegate + - [ ] M:SkiaSharp.Views.Mac.ISKGLLayerDelegate.DrawInSurface(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTargetDesc) +- [ ] SkiaSharp.Views.Mac.MacExtensions + - [ ] M:SkiaSharp.Views.Mac.MacExtensions.ToNSColor(SkiaSharp.SKColor) + - [ ] M:SkiaSharp.Views.Mac.MacExtensions.ToNSColor(SkiaSharp.SKColorF) + - [ ] M:SkiaSharp.Views.Mac.MacExtensions.ToNSImage(SkiaSharp.SKBitmap) + - [ ] M:SkiaSharp.Views.Mac.MacExtensions.ToNSImage(SkiaSharp.SKImage) + - [ ] M:SkiaSharp.Views.Mac.MacExtensions.ToNSImage(SkiaSharp.SKPicture,SkiaSharp.SKSizeI) + - [ ] M:SkiaSharp.Views.Mac.MacExtensions.ToNSImage(SkiaSharp.SKPixmap) + - [ ] M:SkiaSharp.Views.Mac.MacExtensions.ToSKBitmap(AppKit.NSImage) + - [ ] M:SkiaSharp.Views.Mac.MacExtensions.ToSKColor(AppKit.NSColor) + - [ ] M:SkiaSharp.Views.Mac.MacExtensions.ToSKColorF(AppKit.NSColor) + - [ ] M:SkiaSharp.Views.Mac.MacExtensions.ToSKImage(AppKit.NSImage) + - [ ] M:SkiaSharp.Views.Mac.MacExtensions.ToSKPixmap(AppKit.NSImage,SkiaSharp.SKPixmap) +- [ ] SkiaSharp.Views.Mac.SKCanvasLayer + - [ ] E:SkiaSharp.Views.Mac.SKCanvasLayer.PaintSurface + - [ ] M:SkiaSharp.Views.Mac.SKCanvasLayer.#ctor + - [ ] M:SkiaSharp.Views.Mac.SKCanvasLayer.Dispose(System.Boolean) + - [ ] M:SkiaSharp.Views.Mac.SKCanvasLayer.DrawInContext(CoreGraphics.CGContext) + - [ ] M:SkiaSharp.Views.Mac.SKCanvasLayer.DrawInSurface(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo) + - [ ] M:SkiaSharp.Views.Mac.SKCanvasLayer.OnPaintSurface(SkiaSharp.Views.Mac.SKPaintSurfaceEventArgs) + - [ ] P:SkiaSharp.Views.Mac.SKCanvasLayer.CanvasSize + - [ ] P:SkiaSharp.Views.Mac.SKCanvasLayer.IgnorePixelScaling + - [ ] P:SkiaSharp.Views.Mac.SKCanvasLayer.SKDelegate +- [ ] SkiaSharp.Views.Mac.SKCanvasView + - [ ] E:SkiaSharp.Views.Mac.SKCanvasView.PaintSurface + - [ ] M:SkiaSharp.Views.Mac.SKCanvasView.#ctor + - [ ] M:SkiaSharp.Views.Mac.SKCanvasView.#ctor(CoreGraphics.CGRect) + - [ ] M:SkiaSharp.Views.Mac.SKCanvasView.#ctor(System.IntPtr) + - [ ] M:SkiaSharp.Views.Mac.SKCanvasView.AwakeFromNib + - [ ] M:SkiaSharp.Views.Mac.SKCanvasView.Dispose(System.Boolean) + - [ ] M:SkiaSharp.Views.Mac.SKCanvasView.DrawInSurface(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo) + - [ ] M:SkiaSharp.Views.Mac.SKCanvasView.DrawRect(CoreGraphics.CGRect) + - [ ] M:SkiaSharp.Views.Mac.SKCanvasView.OnPaintSurface(SkiaSharp.Views.Mac.SKPaintSurfaceEventArgs) + - [ ] P:SkiaSharp.Views.Mac.SKCanvasView.CanvasSize + - [ ] P:SkiaSharp.Views.Mac.SKCanvasView.IgnorePixelScaling +- [ ] SkiaSharp.Views.Mac.SKGLLayer + - [ ] E:SkiaSharp.Views.Mac.SKGLLayer.PaintSurface + - [ ] M:SkiaSharp.Views.Mac.SKGLLayer.#ctor + - [ ] M:SkiaSharp.Views.Mac.SKGLLayer.DrawInCGLContext(OpenGL.CGLContext,OpenGL.CGLPixelFormat,System.Double,CoreVideo.CVTimeStamp@) + - [ ] M:SkiaSharp.Views.Mac.SKGLLayer.DrawInSurface(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTargetDesc) + - [ ] M:SkiaSharp.Views.Mac.SKGLLayer.OnPaintSurface(SkiaSharp.Views.Mac.SKPaintGLSurfaceEventArgs) + - [ ] M:SkiaSharp.Views.Mac.SKGLLayer.Release(OpenGL.CGLContext) + - [ ] P:SkiaSharp.Views.Mac.SKGLLayer.CanvasSize + - [ ] P:SkiaSharp.Views.Mac.SKGLLayer.GRContext + - [ ] P:SkiaSharp.Views.Mac.SKGLLayer.SKDelegate +- [ ] SkiaSharp.Views.Mac.SKGLView + - [ ] E:SkiaSharp.Views.Mac.SKGLView.PaintSurface + - [ ] M:SkiaSharp.Views.Mac.SKGLView.#ctor + - [ ] M:SkiaSharp.Views.Mac.SKGLView.#ctor(CoreGraphics.CGRect) + - [ ] M:SkiaSharp.Views.Mac.SKGLView.#ctor(System.IntPtr) + - [ ] M:SkiaSharp.Views.Mac.SKGLView.AwakeFromNib + - [ ] M:SkiaSharp.Views.Mac.SKGLView.DrawInSurface(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTargetDesc) + - [ ] M:SkiaSharp.Views.Mac.SKGLView.DrawRect(CoreGraphics.CGRect) + - [ ] M:SkiaSharp.Views.Mac.SKGLView.OnPaintSurface(SkiaSharp.Views.Mac.SKPaintGLSurfaceEventArgs) + - [ ] M:SkiaSharp.Views.Mac.SKGLView.PrepareOpenGL + - [ ] M:SkiaSharp.Views.Mac.SKGLView.Reshape + - [ ] P:SkiaSharp.Views.Mac.SKGLView.CanvasSize + - [ ] P:SkiaSharp.Views.Mac.SKGLView.GRContext +- [ ] SkiaSharp.Views.Mac.SKMetalView + - [ ] E:SkiaSharp.Views.Mac.SKMetalView.PaintSurface + - [ ] M:SkiaSharp.Views.Mac.SKMetalView.#ctor + - [ ] M:SkiaSharp.Views.Mac.SKMetalView.#ctor(CoreGraphics.CGRect,Metal.IMTLDevice) + - [ ] M:SkiaSharp.Views.Mac.SKMetalView.#ctor(CoreGraphics.CGRect) + - [ ] M:SkiaSharp.Views.Mac.SKMetalView.#ctor(System.IntPtr) + - [ ] M:SkiaSharp.Views.Mac.SKMetalView.AwakeFromNib + - [ ] M:SkiaSharp.Views.Mac.SKMetalView.MetalKit#IMTKViewDelegate#Draw(MetalKit.MTKView) + - [ ] M:SkiaSharp.Views.Mac.SKMetalView.MetalKit#IMTKViewDelegate#DrawableSizeWillChange(MetalKit.MTKView,CoreGraphics.CGSize) + - [ ] M:SkiaSharp.Views.Mac.SKMetalView.OnPaintSurface(SkiaSharp.Views.Mac.SKPaintMetalSurfaceEventArgs) + - [ ] P:SkiaSharp.Views.Mac.SKMetalView.CanvasSize + - [ ] P:SkiaSharp.Views.Mac.SKMetalView.GRContext +- [ ] SkiaSharp.Views.Mac.SKPaintGLSurfaceEventArgs + - [ ] M:SkiaSharp.Views.Mac.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.GRGlFramebufferInfo) + - [ ] M:SkiaSharp.Views.Mac.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType) + - [ ] M:SkiaSharp.Views.Mac.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKImageInfo,SkiaSharp.SKImageInfo) + - [ ] M:SkiaSharp.Views.Mac.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKImageInfo) + - [ ] M:SkiaSharp.Views.Mac.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget) + - [ ] M:SkiaSharp.Views.Mac.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTargetDesc) + - [ ] P:SkiaSharp.Views.Mac.SKPaintGLSurfaceEventArgs.BackendRenderTarget + - [ ] P:SkiaSharp.Views.Mac.SKPaintGLSurfaceEventArgs.ColorType + - [ ] P:SkiaSharp.Views.Mac.SKPaintGLSurfaceEventArgs.Info + - [ ] P:SkiaSharp.Views.Mac.SKPaintGLSurfaceEventArgs.Origin + - [ ] P:SkiaSharp.Views.Mac.SKPaintGLSurfaceEventArgs.RawInfo + - [ ] P:SkiaSharp.Views.Mac.SKPaintGLSurfaceEventArgs.RenderTarget + - [ ] P:SkiaSharp.Views.Mac.SKPaintGLSurfaceEventArgs.Surface +- [ ] SkiaSharp.Views.Mac.SKPaintMetalSurfaceEventArgs + - [ ] M:SkiaSharp.Views.Mac.SKPaintMetalSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType) + - [ ] M:SkiaSharp.Views.Mac.SKPaintMetalSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget) + - [ ] P:SkiaSharp.Views.Mac.SKPaintMetalSurfaceEventArgs.BackendRenderTarget + - [ ] P:SkiaSharp.Views.Mac.SKPaintMetalSurfaceEventArgs.ColorType + - [ ] P:SkiaSharp.Views.Mac.SKPaintMetalSurfaceEventArgs.Origin + - [ ] P:SkiaSharp.Views.Mac.SKPaintMetalSurfaceEventArgs.Surface +- [ ] SkiaSharp.Views.Mac.SKPaintSurfaceEventArgs + - [ ] M:SkiaSharp.Views.Mac.SKPaintSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo,SkiaSharp.SKImageInfo) + - [ ] M:SkiaSharp.Views.Mac.SKPaintSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo) + - [ ] P:SkiaSharp.Views.Mac.SKPaintSurfaceEventArgs.Info + - [ ] P:SkiaSharp.Views.Mac.SKPaintSurfaceEventArgs.RawInfo + - [ ] P:SkiaSharp.Views.Mac.SKPaintSurfaceEventArgs.Surface + +## Namespace SkiaSharp.Views.Maui + +- [ ] SkiaSharp.Views.Maui.Extensions + - [ ] M:SkiaSharp.Views.Maui.Extensions.ToMauiColor(SkiaSharp.SKColor) + - [ ] M:SkiaSharp.Views.Maui.Extensions.ToMauiColor(SkiaSharp.SKColorF) + - [ ] M:SkiaSharp.Views.Maui.Extensions.ToMauiPoint(SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.Views.Maui.Extensions.ToMauiPoint(SkiaSharp.SKPointI) + - [ ] M:SkiaSharp.Views.Maui.Extensions.ToMauiPointF(SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.Views.Maui.Extensions.ToMauiPointF(SkiaSharp.SKPointI) + - [ ] M:SkiaSharp.Views.Maui.Extensions.ToMauiRectangle(SkiaSharp.SKRect) + - [ ] M:SkiaSharp.Views.Maui.Extensions.ToMauiRectangle(SkiaSharp.SKRectI) + - [ ] M:SkiaSharp.Views.Maui.Extensions.ToMauiRectangleF(SkiaSharp.SKRect) + - [ ] M:SkiaSharp.Views.Maui.Extensions.ToMauiRectangleF(SkiaSharp.SKRectI) + - [ ] M:SkiaSharp.Views.Maui.Extensions.ToMauiSize(SkiaSharp.SKSize) + - [ ] M:SkiaSharp.Views.Maui.Extensions.ToMauiSize(SkiaSharp.SKSizeI) + - [ ] M:SkiaSharp.Views.Maui.Extensions.ToMauiSizeF(SkiaSharp.SKSize) + - [ ] M:SkiaSharp.Views.Maui.Extensions.ToMauiSizeF(SkiaSharp.SKSizeI) + - [ ] M:SkiaSharp.Views.Maui.Extensions.ToSKColor(Microsoft.Maui.Graphics.Color) + - [ ] M:SkiaSharp.Views.Maui.Extensions.ToSKColorF(Microsoft.Maui.Graphics.Color) + - [ ] M:SkiaSharp.Views.Maui.Extensions.ToSKPoint(Microsoft.Maui.Graphics.Point) + - [ ] M:SkiaSharp.Views.Maui.Extensions.ToSKPoint(Microsoft.Maui.Graphics.PointF) + - [ ] M:SkiaSharp.Views.Maui.Extensions.ToSKRect(Microsoft.Maui.Graphics.Rect) + - [ ] M:SkiaSharp.Views.Maui.Extensions.ToSKRect(Microsoft.Maui.Graphics.RectF) + - [ ] M:SkiaSharp.Views.Maui.Extensions.ToSKSize(Microsoft.Maui.Graphics.Size) + - [ ] M:SkiaSharp.Views.Maui.Extensions.ToSKSize(Microsoft.Maui.Graphics.SizeF) +- [ ] SkiaSharp.Views.Maui.ISKBitmapImageSource + - [ ] P:SkiaSharp.Views.Maui.ISKBitmapImageSource.Bitmap +- [ ] SkiaSharp.Views.Maui.ISKCanvasView + - [ ] M:SkiaSharp.Views.Maui.ISKCanvasView.InvalidateSurface + - [ ] M:SkiaSharp.Views.Maui.ISKCanvasView.OnCanvasSizeChanged(SkiaSharp.SKSizeI) + - [ ] M:SkiaSharp.Views.Maui.ISKCanvasView.OnPaintSurface(SkiaSharp.Views.Maui.SKPaintSurfaceEventArgs) + - [ ] M:SkiaSharp.Views.Maui.ISKCanvasView.OnTouch(SkiaSharp.Views.Maui.SKTouchEventArgs) + - [ ] P:SkiaSharp.Views.Maui.ISKCanvasView.CanvasSize + - [ ] P:SkiaSharp.Views.Maui.ISKCanvasView.EnableTouchEvents + - [ ] P:SkiaSharp.Views.Maui.ISKCanvasView.IgnorePixelScaling +- [ ] SkiaSharp.Views.Maui.ISKImageImageSource + - [ ] P:SkiaSharp.Views.Maui.ISKImageImageSource.Image +- [ ] SkiaSharp.Views.Maui.ISKPictureImageSource + - [ ] P:SkiaSharp.Views.Maui.ISKPictureImageSource.Dimensions + - [ ] P:SkiaSharp.Views.Maui.ISKPictureImageSource.Picture +- [ ] SkiaSharp.Views.Maui.ISKPixmapImageSource + - [ ] P:SkiaSharp.Views.Maui.ISKPixmapImageSource.Pixmap +- [ ] SkiaSharp.Views.Maui.SKMouseButton + - [ ] F:SkiaSharp.Views.Maui.SKMouseButton.Left + - [ ] F:SkiaSharp.Views.Maui.SKMouseButton.Middle + - [ ] F:SkiaSharp.Views.Maui.SKMouseButton.Right + - [ ] F:SkiaSharp.Views.Maui.SKMouseButton.Unknown +- [ ] SkiaSharp.Views.Maui.SKPaintGLSurfaceEventArgs + - [ ] M:SkiaSharp.Views.Maui.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType) + - [ ] M:SkiaSharp.Views.Maui.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget) + - [ ] P:SkiaSharp.Views.Maui.SKPaintGLSurfaceEventArgs.BackendRenderTarget + - [ ] P:SkiaSharp.Views.Maui.SKPaintGLSurfaceEventArgs.ColorType + - [ ] P:SkiaSharp.Views.Maui.SKPaintGLSurfaceEventArgs.Origin + - [ ] P:SkiaSharp.Views.Maui.SKPaintGLSurfaceEventArgs.Surface +- [ ] SkiaSharp.Views.Maui.SKPaintSurfaceEventArgs + - [ ] M:SkiaSharp.Views.Maui.SKPaintSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo,SkiaSharp.SKImageInfo) + - [ ] M:SkiaSharp.Views.Maui.SKPaintSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo) + - [ ] P:SkiaSharp.Views.Maui.SKPaintSurfaceEventArgs.Info + - [ ] P:SkiaSharp.Views.Maui.SKPaintSurfaceEventArgs.RawInfo + - [ ] P:SkiaSharp.Views.Maui.SKPaintSurfaceEventArgs.Surface +- [ ] SkiaSharp.Views.Maui.SKTouchAction + - [ ] F:SkiaSharp.Views.Maui.SKTouchAction.Cancelled + - [ ] F:SkiaSharp.Views.Maui.SKTouchAction.Entered + - [ ] F:SkiaSharp.Views.Maui.SKTouchAction.Exited + - [ ] F:SkiaSharp.Views.Maui.SKTouchAction.Moved + - [ ] F:SkiaSharp.Views.Maui.SKTouchAction.Pressed + - [ ] F:SkiaSharp.Views.Maui.SKTouchAction.Released + - [ ] F:SkiaSharp.Views.Maui.SKTouchAction.WheelChanged +- [ ] SkiaSharp.Views.Maui.SKTouchDeviceType + - [ ] F:SkiaSharp.Views.Maui.SKTouchDeviceType.Mouse + - [ ] F:SkiaSharp.Views.Maui.SKTouchDeviceType.Pen + - [ ] F:SkiaSharp.Views.Maui.SKTouchDeviceType.Touch +- [ ] SkiaSharp.Views.Maui.SKTouchEventArgs + - [ ] M:SkiaSharp.Views.Maui.SKTouchEventArgs.#ctor(System.Int64,SkiaSharp.Views.Maui.SKTouchAction,SkiaSharp.SKPoint,System.Boolean) + - [ ] M:SkiaSharp.Views.Maui.SKTouchEventArgs.#ctor(System.Int64,SkiaSharp.Views.Maui.SKTouchAction,SkiaSharp.Views.Maui.SKMouseButton,SkiaSharp.Views.Maui.SKTouchDeviceType,SkiaSharp.SKPoint,System.Boolean,System.Int32,System.Single) + - [ ] M:SkiaSharp.Views.Maui.SKTouchEventArgs.#ctor(System.Int64,SkiaSharp.Views.Maui.SKTouchAction,SkiaSharp.Views.Maui.SKMouseButton,SkiaSharp.Views.Maui.SKTouchDeviceType,SkiaSharp.SKPoint,System.Boolean,System.Int32) + - [ ] M:SkiaSharp.Views.Maui.SKTouchEventArgs.#ctor(System.Int64,SkiaSharp.Views.Maui.SKTouchAction,SkiaSharp.Views.Maui.SKMouseButton,SkiaSharp.Views.Maui.SKTouchDeviceType,SkiaSharp.SKPoint,System.Boolean) + - [ ] M:SkiaSharp.Views.Maui.SKTouchEventArgs.ToString + - [ ] P:SkiaSharp.Views.Maui.SKTouchEventArgs.ActionType + - [ ] P:SkiaSharp.Views.Maui.SKTouchEventArgs.DeviceType + - [ ] P:SkiaSharp.Views.Maui.SKTouchEventArgs.Handled + - [ ] P:SkiaSharp.Views.Maui.SKTouchEventArgs.Id + - [ ] P:SkiaSharp.Views.Maui.SKTouchEventArgs.InContact + - [ ] P:SkiaSharp.Views.Maui.SKTouchEventArgs.Location + - [ ] P:SkiaSharp.Views.Maui.SKTouchEventArgs.MouseButton + - [ ] P:SkiaSharp.Views.Maui.SKTouchEventArgs.Pressure + - [ ] P:SkiaSharp.Views.Maui.SKTouchEventArgs.WheelDelta + +## Namespace SkiaSharp.Views.Maui.Controls + +- [ ] SkiaSharp.Views.Maui.Controls.AppHostBuilderExtensions + - [ ] M:SkiaSharp.Views.Maui.Controls.AppHostBuilderExtensions.UseSkiaSharpHandlers(Microsoft.Maui.Hosting.MauiAppBuilder) +- [ ] SkiaSharp.Views.Maui.Controls.GetPropertyValueEventArgs`1 + - [ ] M:SkiaSharp.Views.Maui.Controls.GetPropertyValueEventArgs`1.#ctor + - [ ] P:SkiaSharp.Views.Maui.Controls.GetPropertyValueEventArgs`1.Value +- [ ] SkiaSharp.Views.Maui.Controls.ISKCanvasViewController + - [ ] E:SkiaSharp.Views.Maui.Controls.ISKCanvasViewController.GetCanvasSize + - [ ] E:SkiaSharp.Views.Maui.Controls.ISKCanvasViewController.SurfaceInvalidated + - [ ] M:SkiaSharp.Views.Maui.Controls.ISKCanvasViewController.OnPaintSurface(SkiaSharp.Views.Maui.SKPaintSurfaceEventArgs) + - [ ] M:SkiaSharp.Views.Maui.Controls.ISKCanvasViewController.OnTouch(SkiaSharp.Views.Maui.SKTouchEventArgs) +- [ ] SkiaSharp.Views.Maui.Controls.ISKGLViewController + - [ ] E:SkiaSharp.Views.Maui.Controls.ISKGLViewController.GetCanvasSize + - [ ] E:SkiaSharp.Views.Maui.Controls.ISKGLViewController.GetGRContext + - [ ] E:SkiaSharp.Views.Maui.Controls.ISKGLViewController.SurfaceInvalidated + - [ ] M:SkiaSharp.Views.Maui.Controls.ISKGLViewController.OnPaintSurface(SkiaSharp.Views.Maui.SKPaintGLSurfaceEventArgs) + - [ ] M:SkiaSharp.Views.Maui.Controls.ISKGLViewController.OnTouch(SkiaSharp.Views.Maui.SKTouchEventArgs) +- [ ] SkiaSharp.Views.Maui.Controls.SKBitmapImageSource + - [ ] F:SkiaSharp.Views.Maui.Controls.SKBitmapImageSource.BitmapProperty + - [ ] M:SkiaSharp.Views.Maui.Controls.SKBitmapImageSource.#ctor + - [ ] M:SkiaSharp.Views.Maui.Controls.SKBitmapImageSource.Cancel + - [ ] M:SkiaSharp.Views.Maui.Controls.SKBitmapImageSource.OnPropertyChanged(System.String) + - [ ] M:SkiaSharp.Views.Maui.Controls.SKBitmapImageSource.op_Implicit(SkiaSharp.SKBitmap)~SkiaSharp.Views.Maui.Controls.SKBitmapImageSource + - [ ] M:SkiaSharp.Views.Maui.Controls.SKBitmapImageSource.op_Implicit(SkiaSharp.Views.Maui.Controls.SKBitmapImageSource)~SkiaSharp.SKBitmap + - [ ] P:SkiaSharp.Views.Maui.Controls.SKBitmapImageSource.Bitmap +- [ ] SkiaSharp.Views.Maui.Controls.SKCanvasView + - [ ] E:SkiaSharp.Views.Maui.Controls.SKCanvasView.PaintSurface + - [ ] E:SkiaSharp.Views.Maui.Controls.SKCanvasView.SkiaSharp#Views#Maui#Controls#ISKCanvasViewController#GetCanvasSize + - [ ] E:SkiaSharp.Views.Maui.Controls.SKCanvasView.SkiaSharp#Views#Maui#Controls#ISKCanvasViewController#SurfaceInvalidated + - [ ] E:SkiaSharp.Views.Maui.Controls.SKCanvasView.Touch + - [ ] F:SkiaSharp.Views.Maui.Controls.SKCanvasView.EnableTouchEventsProperty + - [ ] F:SkiaSharp.Views.Maui.Controls.SKCanvasView.IgnorePixelScalingProperty + - [ ] M:SkiaSharp.Views.Maui.Controls.SKCanvasView.#ctor + - [ ] M:SkiaSharp.Views.Maui.Controls.SKCanvasView.InvalidateSurface + - [ ] M:SkiaSharp.Views.Maui.Controls.SKCanvasView.OnMeasure(System.Double,System.Double) + - [ ] M:SkiaSharp.Views.Maui.Controls.SKCanvasView.OnPaintSurface(SkiaSharp.Views.Maui.SKPaintSurfaceEventArgs) + - [ ] M:SkiaSharp.Views.Maui.Controls.SKCanvasView.OnTouch(SkiaSharp.Views.Maui.SKTouchEventArgs) + - [ ] M:SkiaSharp.Views.Maui.Controls.SKCanvasView.SkiaSharp#Views#Maui#Controls#ISKCanvasViewController#OnPaintSurface(SkiaSharp.Views.Maui.SKPaintSurfaceEventArgs) + - [ ] M:SkiaSharp.Views.Maui.Controls.SKCanvasView.SkiaSharp#Views#Maui#Controls#ISKCanvasViewController#OnTouch(SkiaSharp.Views.Maui.SKTouchEventArgs) + - [ ] M:SkiaSharp.Views.Maui.Controls.SKCanvasView.SkiaSharp#Views#Maui#ISKCanvasView#OnCanvasSizeChanged(SkiaSharp.SKSizeI) + - [ ] M:SkiaSharp.Views.Maui.Controls.SKCanvasView.SkiaSharp#Views#Maui#ISKCanvasView#OnPaintSurface(SkiaSharp.Views.Maui.SKPaintSurfaceEventArgs) + - [ ] M:SkiaSharp.Views.Maui.Controls.SKCanvasView.SkiaSharp#Views#Maui#ISKCanvasView#OnTouch(SkiaSharp.Views.Maui.SKTouchEventArgs) + - [ ] P:SkiaSharp.Views.Maui.Controls.SKCanvasView.CanvasSize + - [ ] P:SkiaSharp.Views.Maui.Controls.SKCanvasView.EnableTouchEvents + - [ ] P:SkiaSharp.Views.Maui.Controls.SKCanvasView.IgnorePixelScaling +- [ ] SkiaSharp.Views.Maui.Controls.SKGLView + - [ ] E:SkiaSharp.Views.Maui.Controls.SKGLView.PaintSurface + - [ ] E:SkiaSharp.Views.Maui.Controls.SKGLView.SkiaSharp#Views#Maui#Controls#ISKGLViewController#GetCanvasSize + - [ ] E:SkiaSharp.Views.Maui.Controls.SKGLView.SkiaSharp#Views#Maui#Controls#ISKGLViewController#GetGRContext + - [ ] E:SkiaSharp.Views.Maui.Controls.SKGLView.SkiaSharp#Views#Maui#Controls#ISKGLViewController#SurfaceInvalidated + - [ ] E:SkiaSharp.Views.Maui.Controls.SKGLView.Touch + - [ ] F:SkiaSharp.Views.Maui.Controls.SKGLView.EnableTouchEventsProperty + - [ ] F:SkiaSharp.Views.Maui.Controls.SKGLView.HasRenderLoopProperty + - [ ] M:SkiaSharp.Views.Maui.Controls.SKGLView.#ctor + - [ ] M:SkiaSharp.Views.Maui.Controls.SKGLView.InvalidateSurface + - [ ] M:SkiaSharp.Views.Maui.Controls.SKGLView.OnMeasure(System.Double,System.Double) + - [ ] M:SkiaSharp.Views.Maui.Controls.SKGLView.OnPaintSurface(SkiaSharp.Views.Maui.SKPaintGLSurfaceEventArgs) + - [ ] M:SkiaSharp.Views.Maui.Controls.SKGLView.OnTouch(SkiaSharp.Views.Maui.SKTouchEventArgs) + - [ ] M:SkiaSharp.Views.Maui.Controls.SKGLView.SkiaSharp#Views#Maui#Controls#ISKGLViewController#OnPaintSurface(SkiaSharp.Views.Maui.SKPaintGLSurfaceEventArgs) + - [ ] M:SkiaSharp.Views.Maui.Controls.SKGLView.SkiaSharp#Views#Maui#Controls#ISKGLViewController#OnTouch(SkiaSharp.Views.Maui.SKTouchEventArgs) + - [ ] P:SkiaSharp.Views.Maui.Controls.SKGLView.CanvasSize + - [ ] P:SkiaSharp.Views.Maui.Controls.SKGLView.EnableTouchEvents + - [ ] P:SkiaSharp.Views.Maui.Controls.SKGLView.GRContext + - [ ] P:SkiaSharp.Views.Maui.Controls.SKGLView.HasRenderLoop +- [ ] SkiaSharp.Views.Maui.Controls.SKImageImageSource + - [ ] F:SkiaSharp.Views.Maui.Controls.SKImageImageSource.ImageProperty + - [ ] M:SkiaSharp.Views.Maui.Controls.SKImageImageSource.#ctor + - [ ] M:SkiaSharp.Views.Maui.Controls.SKImageImageSource.Cancel + - [ ] M:SkiaSharp.Views.Maui.Controls.SKImageImageSource.OnPropertyChanged(System.String) + - [ ] M:SkiaSharp.Views.Maui.Controls.SKImageImageSource.op_Implicit(SkiaSharp.SKImage)~SkiaSharp.Views.Maui.Controls.SKImageImageSource + - [ ] M:SkiaSharp.Views.Maui.Controls.SKImageImageSource.op_Implicit(SkiaSharp.Views.Maui.Controls.SKImageImageSource)~SkiaSharp.SKImage + - [ ] P:SkiaSharp.Views.Maui.Controls.SKImageImageSource.Image +- [ ] SkiaSharp.Views.Maui.Controls.SKPictureImageSource + - [ ] F:SkiaSharp.Views.Maui.Controls.SKPictureImageSource.DimensionsProperty + - [ ] F:SkiaSharp.Views.Maui.Controls.SKPictureImageSource.PictureProperty + - [ ] M:SkiaSharp.Views.Maui.Controls.SKPictureImageSource.#ctor + - [ ] M:SkiaSharp.Views.Maui.Controls.SKPictureImageSource.Cancel + - [ ] M:SkiaSharp.Views.Maui.Controls.SKPictureImageSource.OnPropertyChanged(System.String) + - [ ] M:SkiaSharp.Views.Maui.Controls.SKPictureImageSource.op_Explicit(SkiaSharp.Views.Maui.Controls.SKPictureImageSource)~SkiaSharp.SKPicture + - [ ] P:SkiaSharp.Views.Maui.Controls.SKPictureImageSource.Dimensions + - [ ] P:SkiaSharp.Views.Maui.Controls.SKPictureImageSource.Picture +- [ ] SkiaSharp.Views.Maui.Controls.SKPixmapImageSource + - [ ] F:SkiaSharp.Views.Maui.Controls.SKPixmapImageSource.PixmapProperty + - [ ] M:SkiaSharp.Views.Maui.Controls.SKPixmapImageSource.#ctor + - [ ] M:SkiaSharp.Views.Maui.Controls.SKPixmapImageSource.Cancel + - [ ] M:SkiaSharp.Views.Maui.Controls.SKPixmapImageSource.OnPropertyChanged(System.String) + - [ ] M:SkiaSharp.Views.Maui.Controls.SKPixmapImageSource.op_Implicit(SkiaSharp.SKPixmap)~SkiaSharp.Views.Maui.Controls.SKPixmapImageSource + - [ ] M:SkiaSharp.Views.Maui.Controls.SKPixmapImageSource.op_Implicit(SkiaSharp.Views.Maui.Controls.SKPixmapImageSource)~SkiaSharp.SKPixmap + - [ ] P:SkiaSharp.Views.Maui.Controls.SKPixmapImageSource.Pixmap + +## Namespace SkiaSharp.Views.Maui.Controls.Compatibility + +- [ ] SkiaSharp.Views.Maui.Controls.Compatibility.AppHostBuilderExtensions + - [ ] M:SkiaSharp.Views.Maui.Controls.Compatibility.AppHostBuilderExtensions.UseSkiaSharpCompatibilityRenderers(Microsoft.Maui.Hosting.MauiAppBuilder) + +## Namespace SkiaSharp.Views.Maui.Controls.Hosting + +- [ ] SkiaSharp.Views.Maui.Controls.Hosting.AppHostBuilderExtensions + - [ ] M:SkiaSharp.Views.Maui.Controls.Hosting.AppHostBuilderExtensions.UseSkiaSharp(Microsoft.Maui.Hosting.MauiAppBuilder,System.Boolean,System.Boolean) + - [ ] M:SkiaSharp.Views.Maui.Controls.Hosting.AppHostBuilderExtensions.UseSkiaSharp(Microsoft.Maui.Hosting.MauiAppBuilder) + +## Namespace SkiaSharp.Views.Maui.Handlers + +- [ ] SkiaSharp.Views.Maui.Handlers.SKCanvasViewHandler + - [ ] F:SkiaSharp.Views.Maui.Handlers.SKCanvasViewHandler.SKCanvasViewCommandMapper + - [ ] F:SkiaSharp.Views.Maui.Handlers.SKCanvasViewHandler.SKCanvasViewMapper + - [ ] M:SkiaSharp.Views.Maui.Handlers.SKCanvasViewHandler.#ctor + - [ ] M:SkiaSharp.Views.Maui.Handlers.SKCanvasViewHandler.#ctor(Microsoft.Maui.PropertyMapper,Microsoft.Maui.CommandMapper) + - [ ] M:SkiaSharp.Views.Maui.Handlers.SKCanvasViewHandler.CreatePlatformView + - [ ] M:SkiaSharp.Views.Maui.Handlers.SKCanvasViewHandler.MapEnableTouchEvents(SkiaSharp.Views.Maui.Handlers.SKCanvasViewHandler,SkiaSharp.Views.Maui.ISKCanvasView) + - [ ] M:SkiaSharp.Views.Maui.Handlers.SKCanvasViewHandler.MapIgnorePixelScaling(SkiaSharp.Views.Maui.Handlers.SKCanvasViewHandler,SkiaSharp.Views.Maui.ISKCanvasView) + - [ ] M:SkiaSharp.Views.Maui.Handlers.SKCanvasViewHandler.OnInvalidateSurface(SkiaSharp.Views.Maui.Handlers.SKCanvasViewHandler,SkiaSharp.Views.Maui.ISKCanvasView,System.Object) +- [ ] SkiaSharp.Views.Maui.Handlers.SKImageSourceService + - [ ] M:SkiaSharp.Views.Maui.Handlers.SKImageSourceService.#ctor + - [ ] M:SkiaSharp.Views.Maui.Handlers.SKImageSourceService.#ctor(Microsoft.Extensions.Logging.ILogger) + +## Namespace SkiaSharp.Views.Tizen + +- [ ] SkiaSharp.Views.Tizen.CustomRenderingView + - [ ] F:SkiaSharp.Views.Tizen.CustomRenderingView.evasImage + - [ ] M:SkiaSharp.Views.Tizen.CustomRenderingView.#ctor(ElmSharp.EvasObject) + - [ ] M:SkiaSharp.Views.Tizen.CustomRenderingView.CreateDrawingSurface + - [ ] M:SkiaSharp.Views.Tizen.CustomRenderingView.CreateHandle(ElmSharp.EvasObject) + - [ ] M:SkiaSharp.Views.Tizen.CustomRenderingView.CreateNativeResources(ElmSharp.EvasObject) + - [ ] M:SkiaSharp.Views.Tizen.CustomRenderingView.DestroyDrawingSurface + - [ ] M:SkiaSharp.Views.Tizen.CustomRenderingView.DestroyNativeResources + - [ ] M:SkiaSharp.Views.Tizen.CustomRenderingView.GetRawSurfaceSize + - [ ] M:SkiaSharp.Views.Tizen.CustomRenderingView.GetSurfaceSize + - [ ] M:SkiaSharp.Views.Tizen.CustomRenderingView.Invalidate + - [ ] M:SkiaSharp.Views.Tizen.CustomRenderingView.OnDrawFrame + - [ ] M:SkiaSharp.Views.Tizen.CustomRenderingView.OnResized + - [ ] M:SkiaSharp.Views.Tizen.CustomRenderingView.OnUnrealize + - [ ] M:SkiaSharp.Views.Tizen.CustomRenderingView.UpdateSurfaceSize(ElmSharp.Rect) + - [ ] P:SkiaSharp.Views.Tizen.CustomRenderingView.CanvasSize + - [ ] P:SkiaSharp.Views.Tizen.CustomRenderingView.RenderingMode +- [ ] SkiaSharp.Views.Tizen.Extensions +- [ ] SkiaSharp.Views.Tizen.RenderingMode + - [ ] F:SkiaSharp.Views.Tizen.RenderingMode.Continuously + - [ ] F:SkiaSharp.Views.Tizen.RenderingMode.WhenDirty +- [ ] SkiaSharp.Views.Tizen.ScalingInfo + - [ ] M:SkiaSharp.Views.Tizen.ScalingInfo.FromPixel(System.Double) + - [ ] M:SkiaSharp.Views.Tizen.ScalingInfo.SetScalingFactor(System.Nullable{System.Double}) + - [ ] M:SkiaSharp.Views.Tizen.ScalingInfo.ToPixel(System.Double) + - [ ] P:SkiaSharp.Views.Tizen.ScalingInfo.Dpi + - [ ] P:SkiaSharp.Views.Tizen.ScalingInfo.Profile + - [ ] P:SkiaSharp.Views.Tizen.ScalingInfo.ScalingFactor +- [ ] SkiaSharp.Views.Tizen.SKCanvasView + - [ ] E:SkiaSharp.Views.Tizen.SKCanvasView.PaintSurface + - [ ] M:SkiaSharp.Views.Tizen.SKCanvasView.#ctor(ElmSharp.EvasObject) + - [ ] M:SkiaSharp.Views.Tizen.SKCanvasView.GetRawSurfaceSize + - [ ] M:SkiaSharp.Views.Tizen.SKCanvasView.GetSurfaceSize + - [ ] M:SkiaSharp.Views.Tizen.SKCanvasView.OnDrawFrame + - [ ] M:SkiaSharp.Views.Tizen.SKCanvasView.OnDrawFrame(SkiaSharp.Views.Tizen.SKPaintSurfaceEventArgs) + - [ ] M:SkiaSharp.Views.Tizen.SKCanvasView.UpdateSurfaceSize(ElmSharp.Rect) + - [ ] P:SkiaSharp.Views.Tizen.SKCanvasView.IgnorePixelScaling +- [ ] SkiaSharp.Views.Tizen.SKGLSurfaceView + - [ ] E:SkiaSharp.Views.Tizen.SKGLSurfaceView.PaintSurface + - [ ] M:SkiaSharp.Views.Tizen.SKGLSurfaceView.#ctor(ElmSharp.EvasObject) + - [ ] M:SkiaSharp.Views.Tizen.SKGLSurfaceView.CreateDrawingSurface + - [ ] M:SkiaSharp.Views.Tizen.SKGLSurfaceView.CreateNativeResources(ElmSharp.EvasObject) + - [ ] M:SkiaSharp.Views.Tizen.SKGLSurfaceView.DestroyDrawingSurface + - [ ] M:SkiaSharp.Views.Tizen.SKGLSurfaceView.DestroyNativeResources + - [ ] M:SkiaSharp.Views.Tizen.SKGLSurfaceView.GetSurfaceSize + - [ ] M:SkiaSharp.Views.Tizen.SKGLSurfaceView.OnDrawFrame + - [ ] M:SkiaSharp.Views.Tizen.SKGLSurfaceView.OnDrawFrame(SkiaSharp.Views.Tizen.SKPaintGLSurfaceEventArgs) + - [ ] M:SkiaSharp.Views.Tizen.SKGLSurfaceView.UpdateSurfaceSize(ElmSharp.Rect) + - [ ] P:SkiaSharp.Views.Tizen.SKGLSurfaceView.GRContext +- [ ] SkiaSharp.Views.Tizen.SKPaintGLSurfaceEventArgs + - [ ] M:SkiaSharp.Views.Tizen.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.GRGlFramebufferInfo) + - [ ] M:SkiaSharp.Views.Tizen.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType) + - [ ] M:SkiaSharp.Views.Tizen.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKImageInfo,SkiaSharp.SKImageInfo) + - [ ] M:SkiaSharp.Views.Tizen.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKImageInfo) + - [ ] M:SkiaSharp.Views.Tizen.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget) + - [ ] M:SkiaSharp.Views.Tizen.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTargetDesc) + - [ ] P:SkiaSharp.Views.Tizen.SKPaintGLSurfaceEventArgs.BackendRenderTarget + - [ ] P:SkiaSharp.Views.Tizen.SKPaintGLSurfaceEventArgs.ColorType + - [ ] P:SkiaSharp.Views.Tizen.SKPaintGLSurfaceEventArgs.Info + - [ ] P:SkiaSharp.Views.Tizen.SKPaintGLSurfaceEventArgs.Origin + - [ ] P:SkiaSharp.Views.Tizen.SKPaintGLSurfaceEventArgs.RawInfo + - [ ] P:SkiaSharp.Views.Tizen.SKPaintGLSurfaceEventArgs.RenderTarget + - [ ] P:SkiaSharp.Views.Tizen.SKPaintGLSurfaceEventArgs.Surface +- [ ] SkiaSharp.Views.Tizen.SKPaintSurfaceEventArgs + - [ ] M:SkiaSharp.Views.Tizen.SKPaintSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo,SkiaSharp.SKImageInfo) + - [ ] M:SkiaSharp.Views.Tizen.SKPaintSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo) + - [ ] P:SkiaSharp.Views.Tizen.SKPaintSurfaceEventArgs.Info + - [ ] P:SkiaSharp.Views.Tizen.SKPaintSurfaceEventArgs.RawInfo + - [ ] P:SkiaSharp.Views.Tizen.SKPaintSurfaceEventArgs.Surface +- [ ] SkiaSharp.Views.Tizen.TizenExtensions + - [ ] M:SkiaSharp.Views.Tizen.TizenExtensions.ToColor(SkiaSharp.SKColor) + - [ ] M:SkiaSharp.Views.Tizen.TizenExtensions.ToPoint(SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.Views.Tizen.TizenExtensions.ToPoint(SkiaSharp.SKPointI) + - [ ] M:SkiaSharp.Views.Tizen.TizenExtensions.ToRect(SkiaSharp.SKRect) + - [ ] M:SkiaSharp.Views.Tizen.TizenExtensions.ToRect(SkiaSharp.SKRectI) + - [ ] M:SkiaSharp.Views.Tizen.TizenExtensions.ToSize(SkiaSharp.SKSize) + - [ ] M:SkiaSharp.Views.Tizen.TizenExtensions.ToSize(SkiaSharp.SKSizeI) + - [ ] M:SkiaSharp.Views.Tizen.TizenExtensions.ToSKColor(ElmSharp.Color) + - [ ] M:SkiaSharp.Views.Tizen.TizenExtensions.ToSKPoint(ElmSharp.Point) + - [ ] M:SkiaSharp.Views.Tizen.TizenExtensions.ToSKPointI(ElmSharp.Point) + - [ ] M:SkiaSharp.Views.Tizen.TizenExtensions.ToSKRect(ElmSharp.Rect) + - [ ] M:SkiaSharp.Views.Tizen.TizenExtensions.ToSKRectI(ElmSharp.Rect) + - [ ] M:SkiaSharp.Views.Tizen.TizenExtensions.ToSKSize(ElmSharp.Size) + - [ ] M:SkiaSharp.Views.Tizen.TizenExtensions.ToSKSizeI(ElmSharp.Size) + +## Namespace SkiaSharp.Views.tvOS + +- [ ] SkiaSharp.Views.tvOS.AppleExtensions + - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToCGColor(SkiaSharp.SKColor) + - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToCGColor(SkiaSharp.SKColorF) + - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToCGImage(SkiaSharp.SKBitmap) + - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToCGImage(SkiaSharp.SKImage) + - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToCGImage(SkiaSharp.SKPicture,SkiaSharp.SKSizeI) + - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToCGImage(SkiaSharp.SKPixmap) + - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToCIColor(SkiaSharp.SKColor) + - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToCIColor(SkiaSharp.SKColorF) + - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToCIImage(SkiaSharp.SKBitmap) + - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToCIImage(SkiaSharp.SKImage) + - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToCIImage(SkiaSharp.SKPicture,SkiaSharp.SKSizeI) + - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToCIImage(SkiaSharp.SKPixmap) + - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToNSData(SkiaSharp.SKData) + - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToPoint(SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToRect(SkiaSharp.SKRect) + - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToSize(SkiaSharp.SKSize) + - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToSKBitmap(CoreGraphics.CGImage) + - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToSKBitmap(CoreImage.CIImage) + - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToSKColor(CoreGraphics.CGColor) + - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToSKColor(CoreImage.CIColor) + - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToSKColorF(CoreGraphics.CGColor) + - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToSKColorF(CoreImage.CIColor) + - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToSKData(Foundation.NSData) + - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToSKImage(CoreGraphics.CGImage) + - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToSKImage(CoreImage.CIImage) + - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToSKPixmap(CoreGraphics.CGImage,SkiaSharp.SKPixmap) + - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToSKPixmap(CoreImage.CIImage,SkiaSharp.SKPixmap) + - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToSKPoint(CoreGraphics.CGPoint) + - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToSKRect(CoreGraphics.CGRect) + - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToSKSize(CoreGraphics.CGSize) +- [ ] SkiaSharp.Views.tvOS.Extensions + - [ ] M:SkiaSharp.Views.tvOS.Extensions.ToDrawingPoint(SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.Views.tvOS.Extensions.ToDrawingPoint(SkiaSharp.SKPointI) + - [ ] M:SkiaSharp.Views.tvOS.Extensions.ToDrawingRect(SkiaSharp.SKRect) + - [ ] M:SkiaSharp.Views.tvOS.Extensions.ToDrawingRect(SkiaSharp.SKRectI) + - [ ] M:SkiaSharp.Views.tvOS.Extensions.ToDrawingSize(SkiaSharp.SKSize) + - [ ] M:SkiaSharp.Views.tvOS.Extensions.ToDrawingSize(SkiaSharp.SKSizeI) + - [ ] M:SkiaSharp.Views.tvOS.Extensions.ToSKPoint(System.Drawing.Point) + - [ ] M:SkiaSharp.Views.tvOS.Extensions.ToSKPoint(System.Drawing.PointF) + - [ ] M:SkiaSharp.Views.tvOS.Extensions.ToSKRect(System.Drawing.Rectangle) + - [ ] M:SkiaSharp.Views.tvOS.Extensions.ToSKRect(System.Drawing.RectangleF) + - [ ] M:SkiaSharp.Views.tvOS.Extensions.ToSKSize(System.Drawing.Size) + - [ ] M:SkiaSharp.Views.tvOS.Extensions.ToSKSize(System.Drawing.SizeF) +- [ ] SkiaSharp.Views.tvOS.iOSExtensions + - [ ] M:SkiaSharp.Views.tvOS.iOSExtensions.ToSKBitmap(UIKit.UIImage) + - [ ] M:SkiaSharp.Views.tvOS.iOSExtensions.ToSKColor(UIKit.UIColor) + - [ ] M:SkiaSharp.Views.tvOS.iOSExtensions.ToSKColorF(UIKit.UIColor) + - [ ] M:SkiaSharp.Views.tvOS.iOSExtensions.ToSKImage(UIKit.UIImage) + - [ ] M:SkiaSharp.Views.tvOS.iOSExtensions.ToSKPixmap(UIKit.UIImage,SkiaSharp.SKPixmap) + - [ ] M:SkiaSharp.Views.tvOS.iOSExtensions.ToUIColor(SkiaSharp.SKColor) + - [ ] M:SkiaSharp.Views.tvOS.iOSExtensions.ToUIColor(SkiaSharp.SKColorF) + - [ ] M:SkiaSharp.Views.tvOS.iOSExtensions.ToUIImage(SkiaSharp.SKBitmap,System.nfloat,UIKit.UIImageOrientation) + - [ ] M:SkiaSharp.Views.tvOS.iOSExtensions.ToUIImage(SkiaSharp.SKBitmap) + - [ ] M:SkiaSharp.Views.tvOS.iOSExtensions.ToUIImage(SkiaSharp.SKImage) + - [ ] M:SkiaSharp.Views.tvOS.iOSExtensions.ToUIImage(SkiaSharp.SKPicture,SkiaSharp.SKSizeI,System.nfloat,UIKit.UIImageOrientation) + - [ ] M:SkiaSharp.Views.tvOS.iOSExtensions.ToUIImage(SkiaSharp.SKPicture,SkiaSharp.SKSizeI) + - [ ] M:SkiaSharp.Views.tvOS.iOSExtensions.ToUIImage(SkiaSharp.SKPixmap,System.nfloat,UIKit.UIImageOrientation) + - [ ] M:SkiaSharp.Views.tvOS.iOSExtensions.ToUIImage(SkiaSharp.SKPixmap) +- [ ] SkiaSharp.Views.tvOS.ISKCanvasLayerDelegate + - [ ] M:SkiaSharp.Views.tvOS.ISKCanvasLayerDelegate.DrawInSurface(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo) +- [ ] SkiaSharp.Views.tvOS.ISKGLLayerDelegate + - [ ] M:SkiaSharp.Views.tvOS.ISKGLLayerDelegate.DrawInSurface(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTargetDesc) +- [ ] SkiaSharp.Views.tvOS.SKCanvasLayer + - [ ] E:SkiaSharp.Views.tvOS.SKCanvasLayer.PaintSurface + - [ ] M:SkiaSharp.Views.tvOS.SKCanvasLayer.#ctor + - [ ] M:SkiaSharp.Views.tvOS.SKCanvasLayer.Dispose(System.Boolean) + - [ ] M:SkiaSharp.Views.tvOS.SKCanvasLayer.DrawInContext(CoreGraphics.CGContext) + - [ ] M:SkiaSharp.Views.tvOS.SKCanvasLayer.DrawInSurface(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo) + - [ ] M:SkiaSharp.Views.tvOS.SKCanvasLayer.OnPaintSurface(SkiaSharp.Views.tvOS.SKPaintSurfaceEventArgs) + - [ ] P:SkiaSharp.Views.tvOS.SKCanvasLayer.CanvasSize + - [ ] P:SkiaSharp.Views.tvOS.SKCanvasLayer.IgnorePixelScaling + - [ ] P:SkiaSharp.Views.tvOS.SKCanvasLayer.SKDelegate +- [ ] SkiaSharp.Views.tvOS.SKCanvasView + - [ ] E:SkiaSharp.Views.tvOS.SKCanvasView.PaintSurface + - [ ] M:SkiaSharp.Views.tvOS.SKCanvasView.#ctor + - [ ] M:SkiaSharp.Views.tvOS.SKCanvasView.#ctor(CoreGraphics.CGRect) + - [ ] M:SkiaSharp.Views.tvOS.SKCanvasView.#ctor(System.IntPtr) + - [ ] M:SkiaSharp.Views.tvOS.SKCanvasView.AwakeFromNib + - [ ] M:SkiaSharp.Views.tvOS.SKCanvasView.Dispose(System.Boolean) + - [ ] M:SkiaSharp.Views.tvOS.SKCanvasView.Draw(CoreGraphics.CGRect) + - [ ] M:SkiaSharp.Views.tvOS.SKCanvasView.DrawInSurface(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo) + - [ ] M:SkiaSharp.Views.tvOS.SKCanvasView.LayoutSubviews + - [ ] M:SkiaSharp.Views.tvOS.SKCanvasView.OnPaintSurface(SkiaSharp.Views.tvOS.SKPaintSurfaceEventArgs) + - [ ] M:SkiaSharp.Views.tvOS.SKCanvasView.WillMoveToWindow(UIKit.UIWindow) + - [ ] P:SkiaSharp.Views.tvOS.SKCanvasView.CanvasSize + - [ ] P:SkiaSharp.Views.tvOS.SKCanvasView.IgnorePixelScaling +- [ ] SkiaSharp.Views.tvOS.SKGLLayer + - [ ] E:SkiaSharp.Views.tvOS.SKGLLayer.PaintSurface + - [ ] M:SkiaSharp.Views.tvOS.SKGLLayer.#ctor + - [ ] M:SkiaSharp.Views.tvOS.SKGLLayer.Dispose(System.Boolean) + - [ ] M:SkiaSharp.Views.tvOS.SKGLLayer.DrawInSurface(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTargetDesc) + - [ ] M:SkiaSharp.Views.tvOS.SKGLLayer.OnPaintSurface(SkiaSharp.Views.tvOS.SKPaintGLSurfaceEventArgs) + - [ ] M:SkiaSharp.Views.tvOS.SKGLLayer.Render + - [ ] P:SkiaSharp.Views.tvOS.SKGLLayer.CanvasSize + - [ ] P:SkiaSharp.Views.tvOS.SKGLLayer.Frame + - [ ] P:SkiaSharp.Views.tvOS.SKGLLayer.GRContext + - [ ] P:SkiaSharp.Views.tvOS.SKGLLayer.SKDelegate +- [ ] SkiaSharp.Views.tvOS.SKGLView + - [ ] E:SkiaSharp.Views.tvOS.SKGLView.PaintSurface + - [ ] M:SkiaSharp.Views.tvOS.SKGLView.#ctor + - [ ] M:SkiaSharp.Views.tvOS.SKGLView.#ctor(CoreGraphics.CGRect) + - [ ] M:SkiaSharp.Views.tvOS.SKGLView.#ctor(System.IntPtr) + - [ ] M:SkiaSharp.Views.tvOS.SKGLView.AwakeFromNib + - [ ] M:SkiaSharp.Views.tvOS.SKGLView.DrawInRect(GLKit.GLKView,CoreGraphics.CGRect) + - [ ] M:SkiaSharp.Views.tvOS.SKGLView.DrawInSurface(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTargetDesc) + - [ ] M:SkiaSharp.Views.tvOS.SKGLView.OnPaintSurface(SkiaSharp.Views.tvOS.SKPaintGLSurfaceEventArgs) + - [ ] P:SkiaSharp.Views.tvOS.SKGLView.CanvasSize + - [ ] P:SkiaSharp.Views.tvOS.SKGLView.Frame + - [ ] P:SkiaSharp.Views.tvOS.SKGLView.GRContext +- [ ] SkiaSharp.Views.tvOS.SKPaintGLSurfaceEventArgs + - [ ] M:SkiaSharp.Views.tvOS.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.GRGlFramebufferInfo) + - [ ] M:SkiaSharp.Views.tvOS.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType) + - [ ] M:SkiaSharp.Views.tvOS.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKImageInfo,SkiaSharp.SKImageInfo) + - [ ] M:SkiaSharp.Views.tvOS.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKImageInfo) + - [ ] M:SkiaSharp.Views.tvOS.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget) + - [ ] M:SkiaSharp.Views.tvOS.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTargetDesc) + - [ ] P:SkiaSharp.Views.tvOS.SKPaintGLSurfaceEventArgs.BackendRenderTarget + - [ ] P:SkiaSharp.Views.tvOS.SKPaintGLSurfaceEventArgs.ColorType + - [ ] P:SkiaSharp.Views.tvOS.SKPaintGLSurfaceEventArgs.Info + - [ ] P:SkiaSharp.Views.tvOS.SKPaintGLSurfaceEventArgs.Origin + - [ ] P:SkiaSharp.Views.tvOS.SKPaintGLSurfaceEventArgs.RawInfo + - [ ] P:SkiaSharp.Views.tvOS.SKPaintGLSurfaceEventArgs.RenderTarget + - [ ] P:SkiaSharp.Views.tvOS.SKPaintGLSurfaceEventArgs.Surface +- [ ] SkiaSharp.Views.tvOS.SKPaintSurfaceEventArgs + - [ ] M:SkiaSharp.Views.tvOS.SKPaintSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo,SkiaSharp.SKImageInfo) + - [ ] M:SkiaSharp.Views.tvOS.SKPaintSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo) + - [ ] P:SkiaSharp.Views.tvOS.SKPaintSurfaceEventArgs.Info + - [ ] P:SkiaSharp.Views.tvOS.SKPaintSurfaceEventArgs.RawInfo + - [ ] P:SkiaSharp.Views.tvOS.SKPaintSurfaceEventArgs.Surface + +## Namespace SkiaSharp.Views.UWP + +- [ ] SkiaSharp.Views.UWP.AngleSwapChainPanel + - [ ] M:SkiaSharp.Views.UWP.AngleSwapChainPanel.#ctor + - [ ] M:SkiaSharp.Views.UWP.AngleSwapChainPanel.Invalidate + - [ ] M:SkiaSharp.Views.UWP.AngleSwapChainPanel.OnDestroyingContext + - [ ] M:SkiaSharp.Views.UWP.AngleSwapChainPanel.OnRenderFrame(Windows.Foundation.Rect) + - [ ] P:SkiaSharp.Views.UWP.AngleSwapChainPanel.BackingOption + - [ ] P:SkiaSharp.Views.UWP.AngleSwapChainPanel.ContentsScale + - [ ] P:SkiaSharp.Views.UWP.AngleSwapChainPanel.Context + - [ ] P:SkiaSharp.Views.UWP.AngleSwapChainPanel.DepthFormat + - [ ] P:SkiaSharp.Views.UWP.AngleSwapChainPanel.DrawInBackground + - [ ] P:SkiaSharp.Views.UWP.AngleSwapChainPanel.EnableRenderLoop + - [ ] P:SkiaSharp.Views.UWP.AngleSwapChainPanel.Multisampling + - [ ] P:SkiaSharp.Views.UWP.AngleSwapChainPanel.StencilFormat +- [ ] SkiaSharp.Views.UWP.Extensions +- [ ] SkiaSharp.Views.UWP.GlesBackingOption + - [ ] F:SkiaSharp.Views.UWP.GlesBackingOption.Detroyed + - [ ] F:SkiaSharp.Views.UWP.GlesBackingOption.Retained +- [ ] SkiaSharp.Views.UWP.GlesContext + - [ ] M:SkiaSharp.Views.UWP.GlesContext.#ctor + - [ ] M:SkiaSharp.Views.UWP.GlesContext.Dispose + - [ ] M:SkiaSharp.Views.UWP.GlesContext.Reset + - [ ] M:SkiaSharp.Views.UWP.GlesContext.SetSurface(Windows.UI.Xaml.Controls.SwapChainPanel,System.Int32,System.Int32,SkiaSharp.Views.UWP.GlesBackingOption,SkiaSharp.Views.UWP.GlesMultisampling,SkiaSharp.Views.UWP.GlesRenderTarget) + - [ ] M:SkiaSharp.Views.UWP.GlesContext.SetViewportSize(System.Int32,System.Int32) + - [ ] M:SkiaSharp.Views.UWP.GlesContext.SwapBuffers(SkiaSharp.Views.UWP.GlesRenderTarget,System.Int32,System.Int32) + - [ ] P:SkiaSharp.Views.UWP.GlesContext.CurrentContext + - [ ] P:SkiaSharp.Views.UWP.GlesContext.HasValidSurface +- [ ] SkiaSharp.Views.UWP.GlesDepthFormat + - [ ] F:SkiaSharp.Views.UWP.GlesDepthFormat.Format16 + - [ ] F:SkiaSharp.Views.UWP.GlesDepthFormat.Format24 + - [ ] F:SkiaSharp.Views.UWP.GlesDepthFormat.None +- [ ] SkiaSharp.Views.UWP.GlesMultisampling + - [ ] F:SkiaSharp.Views.UWP.GlesMultisampling.FourTimes + - [ ] F:SkiaSharp.Views.UWP.GlesMultisampling.None +- [ ] SkiaSharp.Views.UWP.GlesRenderTarget + - [ ] F:SkiaSharp.Views.UWP.GlesRenderTarget.Renderbuffer +- [ ] SkiaSharp.Views.UWP.GlesStencilFormat + - [ ] F:SkiaSharp.Views.UWP.GlesStencilFormat.Format8 + - [ ] F:SkiaSharp.Views.UWP.GlesStencilFormat.None +- [ ] SkiaSharp.Views.UWP.SKPaintGLSurfaceEventArgs + - [ ] M:SkiaSharp.Views.UWP.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.GRGlFramebufferInfo) + - [ ] M:SkiaSharp.Views.UWP.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType) + - [ ] M:SkiaSharp.Views.UWP.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKImageInfo,SkiaSharp.SKImageInfo) + - [ ] M:SkiaSharp.Views.UWP.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKImageInfo) + - [ ] M:SkiaSharp.Views.UWP.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget) + - [ ] M:SkiaSharp.Views.UWP.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTargetDesc) + - [ ] P:SkiaSharp.Views.UWP.SKPaintGLSurfaceEventArgs.BackendRenderTarget + - [ ] P:SkiaSharp.Views.UWP.SKPaintGLSurfaceEventArgs.ColorType + - [ ] P:SkiaSharp.Views.UWP.SKPaintGLSurfaceEventArgs.Info + - [ ] P:SkiaSharp.Views.UWP.SKPaintGLSurfaceEventArgs.Origin + - [ ] P:SkiaSharp.Views.UWP.SKPaintGLSurfaceEventArgs.RawInfo + - [ ] P:SkiaSharp.Views.UWP.SKPaintGLSurfaceEventArgs.RenderTarget + - [ ] P:SkiaSharp.Views.UWP.SKPaintGLSurfaceEventArgs.Surface +- [ ] SkiaSharp.Views.UWP.SKPaintSurfaceEventArgs + - [ ] M:SkiaSharp.Views.UWP.SKPaintSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo,SkiaSharp.SKImageInfo) + - [ ] M:SkiaSharp.Views.UWP.SKPaintSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo) + - [ ] P:SkiaSharp.Views.UWP.SKPaintSurfaceEventArgs.Info + - [ ] P:SkiaSharp.Views.UWP.SKPaintSurfaceEventArgs.RawInfo + - [ ] P:SkiaSharp.Views.UWP.SKPaintSurfaceEventArgs.Surface +- [ ] SkiaSharp.Views.UWP.SKSwapChainPanel + - [ ] E:SkiaSharp.Views.UWP.SKSwapChainPanel.PaintSurface + - [ ] M:SkiaSharp.Views.UWP.SKSwapChainPanel.#ctor + - [ ] M:SkiaSharp.Views.UWP.SKSwapChainPanel.ArrangeOverride(Windows.Foundation.Size) + - [ ] M:SkiaSharp.Views.UWP.SKSwapChainPanel.OnDestroyingContext + - [ ] M:SkiaSharp.Views.UWP.SKSwapChainPanel.OnPaintSurface(SkiaSharp.Views.UWP.SKPaintGLSurfaceEventArgs) + - [ ] M:SkiaSharp.Views.UWP.SKSwapChainPanel.OnRenderFrame(Windows.Foundation.Rect) + - [ ] P:SkiaSharp.Views.UWP.SKSwapChainPanel.CanvasSize + - [ ] P:SkiaSharp.Views.UWP.SKSwapChainPanel.GRContext +- [ ] SkiaSharp.Views.UWP.SKXamlCanvas + - [ ] E:SkiaSharp.Views.UWP.SKXamlCanvas.PaintSurface + - [ ] M:SkiaSharp.Views.UWP.SKXamlCanvas.#ctor + - [ ] M:SkiaSharp.Views.UWP.SKXamlCanvas.Invalidate + - [ ] M:SkiaSharp.Views.UWP.SKXamlCanvas.OnPaintSurface(SkiaSharp.Views.UWP.SKPaintSurfaceEventArgs) + - [ ] P:SkiaSharp.Views.UWP.SKXamlCanvas.CanvasSize + - [ ] P:SkiaSharp.Views.UWP.SKXamlCanvas.Dpi + - [ ] P:SkiaSharp.Views.UWP.SKXamlCanvas.IgnorePixelScaling +- [ ] SkiaSharp.Views.UWP.UWPExtensions + - [ ] M:SkiaSharp.Views.UWP.UWPExtensions.ToColor(SkiaSharp.SKColor) + - [ ] M:SkiaSharp.Views.UWP.UWPExtensions.ToPoint(SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.Views.UWP.UWPExtensions.ToRect(SkiaSharp.SKRect) + - [ ] M:SkiaSharp.Views.UWP.UWPExtensions.ToSize(SkiaSharp.SKSize) + - [ ] M:SkiaSharp.Views.UWP.UWPExtensions.ToSKBitmap(Windows.UI.Xaml.Media.Imaging.WriteableBitmap) + - [ ] M:SkiaSharp.Views.UWP.UWPExtensions.ToSKColor(Windows.UI.Color) + - [ ] M:SkiaSharp.Views.UWP.UWPExtensions.ToSKImage(Windows.UI.Xaml.Media.Imaging.WriteableBitmap) + - [ ] M:SkiaSharp.Views.UWP.UWPExtensions.ToSKPixmap(Windows.UI.Xaml.Media.Imaging.WriteableBitmap,SkiaSharp.SKPixmap) + - [ ] M:SkiaSharp.Views.UWP.UWPExtensions.ToSKPoint(Windows.Foundation.Point) + - [ ] M:SkiaSharp.Views.UWP.UWPExtensions.ToSKRect(Windows.Foundation.Rect) + - [ ] M:SkiaSharp.Views.UWP.UWPExtensions.ToSKSize(Windows.Foundation.Size) + - [ ] M:SkiaSharp.Views.UWP.UWPExtensions.ToWriteableBitmap(SkiaSharp.SKBitmap) + - [ ] M:SkiaSharp.Views.UWP.UWPExtensions.ToWriteableBitmap(SkiaSharp.SKImage) + - [ ] M:SkiaSharp.Views.UWP.UWPExtensions.ToWriteableBitmap(SkiaSharp.SKPicture,SkiaSharp.SKSizeI) + - [ ] M:SkiaSharp.Views.UWP.UWPExtensions.ToWriteableBitmap(SkiaSharp.SKPixmap) + +## Namespace SkiaSharp.Views.watchOS + +- [ ] SkiaSharp.Views.watchOS.AppleExtensions + - [ ] M:SkiaSharp.Views.watchOS.AppleExtensions.ToCGColor(SkiaSharp.SKColor) + - [ ] M:SkiaSharp.Views.watchOS.AppleExtensions.ToCGColor(SkiaSharp.SKColorF) + - [ ] M:SkiaSharp.Views.watchOS.AppleExtensions.ToCGImage(SkiaSharp.SKBitmap) + - [ ] M:SkiaSharp.Views.watchOS.AppleExtensions.ToCGImage(SkiaSharp.SKImage) + - [ ] M:SkiaSharp.Views.watchOS.AppleExtensions.ToCGImage(SkiaSharp.SKPicture,SkiaSharp.SKSizeI) + - [ ] M:SkiaSharp.Views.watchOS.AppleExtensions.ToCGImage(SkiaSharp.SKPixmap) + - [ ] M:SkiaSharp.Views.watchOS.AppleExtensions.ToNSData(SkiaSharp.SKData) + - [ ] M:SkiaSharp.Views.watchOS.AppleExtensions.ToPoint(SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.Views.watchOS.AppleExtensions.ToRect(SkiaSharp.SKRect) + - [ ] M:SkiaSharp.Views.watchOS.AppleExtensions.ToSize(SkiaSharp.SKSize) + - [ ] M:SkiaSharp.Views.watchOS.AppleExtensions.ToSKBitmap(CoreGraphics.CGImage) + - [ ] M:SkiaSharp.Views.watchOS.AppleExtensions.ToSKColor(CoreGraphics.CGColor) + - [ ] M:SkiaSharp.Views.watchOS.AppleExtensions.ToSKColorF(CoreGraphics.CGColor) + - [ ] M:SkiaSharp.Views.watchOS.AppleExtensions.ToSKData(Foundation.NSData) + - [ ] M:SkiaSharp.Views.watchOS.AppleExtensions.ToSKImage(CoreGraphics.CGImage) + - [ ] M:SkiaSharp.Views.watchOS.AppleExtensions.ToSKPixmap(CoreGraphics.CGImage,SkiaSharp.SKPixmap) + - [ ] M:SkiaSharp.Views.watchOS.AppleExtensions.ToSKPoint(CoreGraphics.CGPoint) + - [ ] M:SkiaSharp.Views.watchOS.AppleExtensions.ToSKRect(CoreGraphics.CGRect) + - [ ] M:SkiaSharp.Views.watchOS.AppleExtensions.ToSKSize(CoreGraphics.CGSize) +- [ ] SkiaSharp.Views.watchOS.Extensions + - [ ] M:SkiaSharp.Views.watchOS.Extensions.ToDrawingPoint(SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.Views.watchOS.Extensions.ToDrawingPoint(SkiaSharp.SKPointI) + - [ ] M:SkiaSharp.Views.watchOS.Extensions.ToDrawingRect(SkiaSharp.SKRect) + - [ ] M:SkiaSharp.Views.watchOS.Extensions.ToDrawingRect(SkiaSharp.SKRectI) + - [ ] M:SkiaSharp.Views.watchOS.Extensions.ToDrawingSize(SkiaSharp.SKSize) + - [ ] M:SkiaSharp.Views.watchOS.Extensions.ToDrawingSize(SkiaSharp.SKSizeI) + - [ ] M:SkiaSharp.Views.watchOS.Extensions.ToSKPoint(System.Drawing.Point) + - [ ] M:SkiaSharp.Views.watchOS.Extensions.ToSKPoint(System.Drawing.PointF) + - [ ] M:SkiaSharp.Views.watchOS.Extensions.ToSKRect(System.Drawing.Rectangle) + - [ ] M:SkiaSharp.Views.watchOS.Extensions.ToSKRect(System.Drawing.RectangleF) + - [ ] M:SkiaSharp.Views.watchOS.Extensions.ToSKSize(System.Drawing.Size) + - [ ] M:SkiaSharp.Views.watchOS.Extensions.ToSKSize(System.Drawing.SizeF) +- [ ] SkiaSharp.Views.watchOS.iOSExtensions + - [ ] M:SkiaSharp.Views.watchOS.iOSExtensions.ToSKBitmap(UIKit.UIImage) + - [ ] M:SkiaSharp.Views.watchOS.iOSExtensions.ToSKColor(UIKit.UIColor) + - [ ] M:SkiaSharp.Views.watchOS.iOSExtensions.ToSKColorF(UIKit.UIColor) + - [ ] M:SkiaSharp.Views.watchOS.iOSExtensions.ToSKImage(UIKit.UIImage) + - [ ] M:SkiaSharp.Views.watchOS.iOSExtensions.ToSKPixmap(UIKit.UIImage,SkiaSharp.SKPixmap) + - [ ] M:SkiaSharp.Views.watchOS.iOSExtensions.ToUIColor(SkiaSharp.SKColor) + - [ ] M:SkiaSharp.Views.watchOS.iOSExtensions.ToUIColor(SkiaSharp.SKColorF) + - [ ] M:SkiaSharp.Views.watchOS.iOSExtensions.ToUIImage(SkiaSharp.SKBitmap,System.nfloat,UIKit.UIImageOrientation) + - [ ] M:SkiaSharp.Views.watchOS.iOSExtensions.ToUIImage(SkiaSharp.SKBitmap) + - [ ] M:SkiaSharp.Views.watchOS.iOSExtensions.ToUIImage(SkiaSharp.SKImage) + - [ ] M:SkiaSharp.Views.watchOS.iOSExtensions.ToUIImage(SkiaSharp.SKPicture,SkiaSharp.SKSizeI,System.nfloat,UIKit.UIImageOrientation) + - [ ] M:SkiaSharp.Views.watchOS.iOSExtensions.ToUIImage(SkiaSharp.SKPicture,SkiaSharp.SKSizeI) + - [ ] M:SkiaSharp.Views.watchOS.iOSExtensions.ToUIImage(SkiaSharp.SKPixmap,System.nfloat,UIKit.UIImageOrientation) + - [ ] M:SkiaSharp.Views.watchOS.iOSExtensions.ToUIImage(SkiaSharp.SKPixmap) +- [ ] SkiaSharp.Views.watchOS.ISKCanvasLayerDelegate + - [ ] M:SkiaSharp.Views.watchOS.ISKCanvasLayerDelegate.DrawInSurface(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo) +- [ ] SkiaSharp.Views.watchOS.SKPaintSurfaceEventArgs + - [ ] M:SkiaSharp.Views.watchOS.SKPaintSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo,SkiaSharp.SKImageInfo) + - [ ] M:SkiaSharp.Views.watchOS.SKPaintSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo) + - [ ] P:SkiaSharp.Views.watchOS.SKPaintSurfaceEventArgs.Info + - [ ] P:SkiaSharp.Views.watchOS.SKPaintSurfaceEventArgs.RawInfo + - [ ] P:SkiaSharp.Views.watchOS.SKPaintSurfaceEventArgs.Surface + +## Namespace SkiaSharp.Views.Windows + +- [ ] SkiaSharp.Views.Windows.Extensions + - [ ] M:SkiaSharp.Views.Windows.Extensions.ToDrawingPoint(SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.Views.Windows.Extensions.ToDrawingPoint(SkiaSharp.SKPointI) + - [ ] M:SkiaSharp.Views.Windows.Extensions.ToDrawingRect(SkiaSharp.SKRect) + - [ ] M:SkiaSharp.Views.Windows.Extensions.ToDrawingRect(SkiaSharp.SKRectI) + - [ ] M:SkiaSharp.Views.Windows.Extensions.ToDrawingSize(SkiaSharp.SKSize) + - [ ] M:SkiaSharp.Views.Windows.Extensions.ToDrawingSize(SkiaSharp.SKSizeI) + - [ ] M:SkiaSharp.Views.Windows.Extensions.ToSKPoint(System.Drawing.Point) + - [ ] M:SkiaSharp.Views.Windows.Extensions.ToSKPoint(System.Drawing.PointF) + - [ ] M:SkiaSharp.Views.Windows.Extensions.ToSKRect(System.Drawing.Rectangle) + - [ ] M:SkiaSharp.Views.Windows.Extensions.ToSKRect(System.Drawing.RectangleF) + - [ ] M:SkiaSharp.Views.Windows.Extensions.ToSKSize(System.Drawing.Size) + - [ ] M:SkiaSharp.Views.Windows.Extensions.ToSKSize(System.Drawing.SizeF) +- [ ] SkiaSharp.Views.Windows.SKPaintGLSurfaceEventArgs + - [ ] M:SkiaSharp.Views.Windows.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.GRGlFramebufferInfo) + - [ ] M:SkiaSharp.Views.Windows.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType) + - [ ] M:SkiaSharp.Views.Windows.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKImageInfo,SkiaSharp.SKImageInfo) + - [ ] M:SkiaSharp.Views.Windows.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKImageInfo) + - [ ] M:SkiaSharp.Views.Windows.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget) + - [ ] M:SkiaSharp.Views.Windows.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTargetDesc) + - [ ] P:SkiaSharp.Views.Windows.SKPaintGLSurfaceEventArgs.BackendRenderTarget + - [ ] P:SkiaSharp.Views.Windows.SKPaintGLSurfaceEventArgs.ColorType + - [ ] P:SkiaSharp.Views.Windows.SKPaintGLSurfaceEventArgs.Info + - [ ] P:SkiaSharp.Views.Windows.SKPaintGLSurfaceEventArgs.Origin + - [ ] P:SkiaSharp.Views.Windows.SKPaintGLSurfaceEventArgs.RawInfo + - [ ] P:SkiaSharp.Views.Windows.SKPaintGLSurfaceEventArgs.RenderTarget + - [ ] P:SkiaSharp.Views.Windows.SKPaintGLSurfaceEventArgs.Surface +- [ ] SkiaSharp.Views.Windows.SKPaintSurfaceEventArgs + - [ ] M:SkiaSharp.Views.Windows.SKPaintSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo,SkiaSharp.SKImageInfo) + - [ ] M:SkiaSharp.Views.Windows.SKPaintSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo) + - [ ] P:SkiaSharp.Views.Windows.SKPaintSurfaceEventArgs.Info + - [ ] P:SkiaSharp.Views.Windows.SKPaintSurfaceEventArgs.RawInfo + - [ ] P:SkiaSharp.Views.Windows.SKPaintSurfaceEventArgs.Surface +- [ ] SkiaSharp.Views.Windows.SKXamlCanvas + - [ ] E:SkiaSharp.Views.Windows.SKXamlCanvas.PaintSurface + - [ ] M:SkiaSharp.Views.Windows.SKXamlCanvas.#ctor + - [ ] M:SkiaSharp.Views.Windows.SKXamlCanvas.Invalidate + - [ ] M:SkiaSharp.Views.Windows.SKXamlCanvas.OnPaintSurface(SkiaSharp.Views.Windows.SKPaintSurfaceEventArgs) + - [ ] P:SkiaSharp.Views.Windows.SKXamlCanvas.CanvasSize + - [ ] P:SkiaSharp.Views.Windows.SKXamlCanvas.Dpi + - [ ] P:SkiaSharp.Views.Windows.SKXamlCanvas.IgnorePixelScaling +- [ ] SkiaSharp.Views.Windows.WindowsExtensions + - [ ] M:SkiaSharp.Views.Windows.WindowsExtensions.ToColor(SkiaSharp.SKColor) + - [ ] M:SkiaSharp.Views.Windows.WindowsExtensions.ToPoint(SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.Views.Windows.WindowsExtensions.ToRect(SkiaSharp.SKRect) + - [ ] M:SkiaSharp.Views.Windows.WindowsExtensions.ToSize(SkiaSharp.SKSize) + - [ ] M:SkiaSharp.Views.Windows.WindowsExtensions.ToSKBitmap(Microsoft.UI.Xaml.Media.Imaging.WriteableBitmap) + - [ ] M:SkiaSharp.Views.Windows.WindowsExtensions.ToSKColor(Windows.UI.Color) + - [ ] M:SkiaSharp.Views.Windows.WindowsExtensions.ToSKImage(Microsoft.UI.Xaml.Media.Imaging.WriteableBitmap) + - [ ] M:SkiaSharp.Views.Windows.WindowsExtensions.ToSKPixmap(Microsoft.UI.Xaml.Media.Imaging.WriteableBitmap,SkiaSharp.SKPixmap) + - [ ] M:SkiaSharp.Views.Windows.WindowsExtensions.ToSKPoint(Windows.Foundation.Point) + - [ ] M:SkiaSharp.Views.Windows.WindowsExtensions.ToSKRect(Windows.Foundation.Rect) + - [ ] M:SkiaSharp.Views.Windows.WindowsExtensions.ToSKSize(Windows.Foundation.Size) + - [ ] M:SkiaSharp.Views.Windows.WindowsExtensions.ToWriteableBitmap(SkiaSharp.SKBitmap) + - [ ] M:SkiaSharp.Views.Windows.WindowsExtensions.ToWriteableBitmap(SkiaSharp.SKImage) + - [ ] M:SkiaSharp.Views.Windows.WindowsExtensions.ToWriteableBitmap(SkiaSharp.SKPicture,SkiaSharp.SKSizeI) + - [ ] M:SkiaSharp.Views.Windows.WindowsExtensions.ToWriteableBitmap(SkiaSharp.SKPixmap) + +## Namespace SkiaSharp.Views.WPF + +- [ ] SkiaSharp.Views.WPF.SKElement + - [ ] E:SkiaSharp.Views.WPF.SKElement.PaintSurface + - [ ] M:SkiaSharp.Views.WPF.SKElement.#ctor + - [ ] M:SkiaSharp.Views.WPF.SKElement.OnPaintSurface(SkiaSharp.Views.Desktop.SKPaintSurfaceEventArgs) + - [ ] M:SkiaSharp.Views.WPF.SKElement.OnRender(System.Windows.Media.DrawingContext) + - [ ] M:SkiaSharp.Views.WPF.SKElement.OnRenderSizeChanged(System.Windows.SizeChangedInfo) + - [ ] P:SkiaSharp.Views.WPF.SKElement.CanvasSize + - [ ] P:SkiaSharp.Views.WPF.SKElement.IgnorePixelScaling +- [ ] SkiaSharp.Views.WPF.WPFExtensions + - [ ] M:SkiaSharp.Views.WPF.WPFExtensions.ToColor(SkiaSharp.SKColor) + - [ ] M:SkiaSharp.Views.WPF.WPFExtensions.ToPoint(SkiaSharp.SKPoint) + - [ ] M:SkiaSharp.Views.WPF.WPFExtensions.ToRect(SkiaSharp.SKRect) + - [ ] M:SkiaSharp.Views.WPF.WPFExtensions.ToSize(SkiaSharp.SKSize) + - [ ] M:SkiaSharp.Views.WPF.WPFExtensions.ToSKBitmap(System.Windows.Media.Imaging.BitmapSource) + - [ ] M:SkiaSharp.Views.WPF.WPFExtensions.ToSKColor(System.Windows.Media.Color) + - [ ] M:SkiaSharp.Views.WPF.WPFExtensions.ToSKImage(System.Windows.Media.Imaging.BitmapSource) + - [ ] M:SkiaSharp.Views.WPF.WPFExtensions.ToSKPixmap(System.Windows.Media.Imaging.BitmapSource,SkiaSharp.SKPixmap) + - [ ] M:SkiaSharp.Views.WPF.WPFExtensions.ToSKPoint(System.Windows.Point) + - [ ] M:SkiaSharp.Views.WPF.WPFExtensions.ToSKRect(System.Windows.Rect) + - [ ] M:SkiaSharp.Views.WPF.WPFExtensions.ToSKSize(System.Windows.Size) + - [ ] M:SkiaSharp.Views.WPF.WPFExtensions.ToWriteableBitmap(SkiaSharp.SKBitmap) + - [ ] M:SkiaSharp.Views.WPF.WPFExtensions.ToWriteableBitmap(SkiaSharp.SKImage) + - [ ] M:SkiaSharp.Views.WPF.WPFExtensions.ToWriteableBitmap(SkiaSharp.SKPicture,SkiaSharp.SKSizeI) + - [ ] M:SkiaSharp.Views.WPF.WPFExtensions.ToWriteableBitmap(SkiaSharp.SKPixmap) + diff --git a/scripts/Generate-ApiDocsChecklist.ps1 b/scripts/Generate-ApiDocsChecklist.ps1 new file mode 100644 index 0000000000..ed22f26d6c --- /dev/null +++ b/scripts/Generate-ApiDocsChecklist.ps1 @@ -0,0 +1,83 @@ +param( + [string]$DocsRoot = "docs/SkiaSharpAPI" +) + +Set-StrictMode -Version Latest +$ErrorActionPreference = 'Stop' + +function Get-TypeXmlFiles { + param([string]$Root) + Get-ChildItem -LiteralPath $Root -Directory | Where-Object { + $_.Name -notin @('images','breadcrumb','FrameworksIndex','xml') + } | ForEach-Object { + Get-ChildItem -LiteralPath $_.FullName -Filter *.xml -File -ErrorAction SilentlyContinue + } +} + +if (-not (Test-Path -LiteralPath $DocsRoot)) { + throw "Docs root not found: $DocsRoot" +} + +$typesByNs = [ordered]@{} + +foreach ($file in Get-TypeXmlFiles -Root $DocsRoot) { + try { + [xml]$xml = Get-Content -LiteralPath $file.FullName -Raw + if ($null -eq $xml.Type) { continue } + $typeNode = $xml.Type + + # Type DocId and FullName + $typeDocId = $null + foreach ($ts in $typeNode.TypeSignature) { + if ($ts.Language -eq 'DocId') { $typeDocId = $ts.Value; break } + } + if (-not $typeDocId) { + $typeFullName = if ($typeNode.FullName) { $typeNode.FullName } elseif ($typeNode.Name) { $typeNode.Name } else { $null } + if ($typeFullName) { $typeDocId = "T:$typeFullName" } + } + if (-not $typeDocId) { continue } + + # Derive namespace from directory name (docs are organized by namespace folders) + $ns = Split-Path -Leaf $file.DirectoryName + # Display name uses DocId-style with nested types shown using '.' + $typeFullName = ($typeDocId.Substring(2)) -replace '\+', '.' + + if (-not $typesByNs.Contains($ns)) { $typesByNs[$ns] = @{} } + if (-not $typesByNs[$ns].ContainsKey($typeFullName)) { $typesByNs[$ns][$typeFullName] = [System.Collections.Generic.List[string]]::new() } + $members = $typesByNs[$ns][$typeFullName] + + # Member DocIds + $memberNodes = $typeNode.SelectNodes('Members/Member') + foreach ($m in $memberNodes) { + $docId = $null + foreach ($ms in $m.MemberSignature) { if ($ms.Language -eq 'DocId') { $docId = $ms.Value; break } } + if ($docId) { $members.Add($docId) } + } + } + catch { + Write-Warning "Failed to parse $($file.FullName): $($_.Exception.Message)" + } +} + +# Print Markdown to stdout +Write-Output "# API Docs Migration Checklist" +Write-Output "" +Write-Output "> Generated: $(Get-Date -Format 'yyyy-MM-dd HH:mm zzz')" +Write-Output "> Source: $DocsRoot" +Write-Output "" + +$nsNames = $typesByNs.Keys | Sort-Object +foreach ($ns in $nsNames) { + Write-Output "## Namespace $ns" + Write-Output "" + + $typeNames = $typesByNs[$ns].Keys | Sort-Object + foreach ($t in $typeNames) { + Write-Output "- [ ] $t" + $memberDocIds = $typesByNs[$ns][$t] | Sort-Object + foreach ($docId in $memberDocIds) { + Write-Output " - [ ] $docId" + } + } + Write-Output "" +} From 7a06ffef4bd73dff090fc2b73852618f5c7264a4 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Tue, 2 Sep 2025 00:35:45 +0200 Subject: [PATCH 02/35] Add guide --- API.Docs.Migration.Guide.md | 56 +++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 API.Docs.Migration.Guide.md diff --git a/API.Docs.Migration.Guide.md b/API.Docs.Migration.Guide.md new file mode 100644 index 0000000000..a437dbf02c --- /dev/null +++ b/API.Docs.Migration.Guide.md @@ -0,0 +1,56 @@ +# API Docs Migration Guide + +This guide is for agents migrating API documentation from the legacy `docs/SkiaSharpAPI` into inline XML docs in the C# codebase. Use this together with `API.Docs.Migration.Checklist.md`. + +Quick start +- Open `API.Docs.Migration.Checklist.md` and pick the next unchecked type from the top (within its namespace). +- Open the XML at `docs/SkiaSharpAPI//.xml` and the C# source file under `binding/**` or `source/**` that defines that type. +- Copy the XML docs verbatim into the code as XML documentation comments. +- Mark the type and each migrated member in the checklist as checked. + +Rules +- Source of truth: Only use the XML files in `docs/SkiaSharpAPI`. Do not invent, paraphrase, or summarize; copy text verbatim (including "To be added."). +- Placement style: Place XML docs immediately before declarations. + - Types: place `///` docs outside and immediately above the `class/struct/interface/enum` declaration. + - Members: place docs immediately above the member declaration. +- XML tag formatting: The opening and closing tags for `summary` and `remarks` must each be on their own line. + - Example: + - Correct: + /// + /// Represents a text buffer in memory. + /// + /// + /// Additional details here. + /// + - Incorrect: `/// Represents a text buffer in memory.` +- Map DocIds correctly: + - `T:` type, `M:` method/constructor, `P:` property, `F:` field, `E:` event. + - Match overload signatures exactly before pasting docs. +- Coverage: Migrate all members that exist in code and are present in the XML. If the XML contains a DocId that is not present in code, do not add code. Add a note under the type in the checklist: `Missing in code: ` and leave it unchecked. +- Fidelity: Preserve wording, punctuation, and simple formatting. Use appropriate XML doc tags: `summary`, `remarks`, `param`, `returns`, `value`, `exception` when present. +- No API changes: Do not alter public APIs to make docs fit. If there’s a mismatch, note it in the checklist and continue. + +Workflow +1) Select the next unchecked type in `API.Docs.Migration.Checklist.md`. +2) Open its XML and corresponding C# file. +3) Insert type docs above the type; then migrate each member’s docs by matching DocIds to members. Keep order and text verbatim. +4) If a DocId isn’t found in code, note it in the checklist as `Missing in code: `. +5) Save the file, sanity-check XML doc syntax. +6) Tick off the type and migrated member lines in the checklist. +7) Repeat for the next type. + +Helpers +- Regenerate the checklist from the docs folder (prints to stdout): + - PowerShell: + - `pwsh -NoProfile -File scripts/Generate-ApiDocsChecklist.ps1 -DocsRoot docs/SkiaSharpAPI > API.Docs.Migration.Checklist.md` +- Searching code: find the C# type by fully-qualified name or by filename in `binding/**` or `source/**`. + +Definition of done (per type) +- Type documentation is placed immediately before the type declaration. +- All existing members with DocIds in the XML are documented verbatim. +- Missing DocIds are noted under the type in the checklist. +- The type and migrated members are checked off in `API.Docs.Migration.Checklist.md`. + +Notes +- Many entries in the XML say "To be added." Keep them verbatim. +- For nested types, place docs above the nested declaration, still using the outside-before style. From 2dbb51ae96cf22243035381d8a1612eadff2259e Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Thu, 4 Sep 2025 20:23:10 +0200 Subject: [PATCH 03/35] Switch to the new way of doing docs --- .../SkiaSharp.Benchmarks.csproj | 1 - binding/NativeAssets.Build.targets | 2 - source/SkiaSharp.Build.props | 5 +- source/SkiaSharp.Build.targets | 48 ------------------- .../SkiaSharp.DotNet.Interactive.csproj | 1 - source/SkiaSharp.NuGet.targets | 15 ------ .../SkiaSharp.Direct3D.Tests.Console.csproj | 1 - .../SkiaSharp.Tests.Console.csproj | 1 - .../SkiaSharp.Tests.Devices.csproj | 1 - .../SkiaSharp.Tests.Wasm.csproj | 1 - tests/SkiaSharp.Tests/SkiaSharp.Tests.csproj | 1 - .../SkiaSharp.Vulkan.Tests.Console.csproj | 1 - 12 files changed, 4 insertions(+), 74 deletions(-) diff --git a/benchmarks/SkiaSharp.Benchmarks/SkiaSharp.Benchmarks.csproj b/benchmarks/SkiaSharp.Benchmarks/SkiaSharp.Benchmarks.csproj index c71f6dfa9f..f9891b84e6 100644 --- a/benchmarks/SkiaSharp.Benchmarks/SkiaSharp.Benchmarks.csproj +++ b/benchmarks/SkiaSharp.Benchmarks/SkiaSharp.Benchmarks.csproj @@ -6,7 +6,6 @@ SkiaSharp.Benchmarks SkiaSharp.Benchmarks true - true pdbonly true diff --git a/binding/NativeAssets.Build.targets b/binding/NativeAssets.Build.targets index d34c35f239..707558b792 100644 --- a/binding/NativeAssets.Build.targets +++ b/binding/NativeAssets.Build.targets @@ -8,8 +8,6 @@ None false - - true diff --git a/source/SkiaSharp.Build.props b/source/SkiaSharp.Build.props index bd14b57a32..9694a8be62 100644 --- a/source/SkiaSharp.Build.props +++ b/source/SkiaSharp.Build.props @@ -32,9 +32,12 @@ latest + + true + + true - $(MSBuildThisFileDirectory)..\docs\SkiaSharpAPI diff --git a/source/SkiaSharp.Build.targets b/source/SkiaSharp.Build.targets index 3cf13c1007..e9e1c9fc15 100644 --- a/source/SkiaSharp.Build.targets +++ b/source/SkiaSharp.Build.targets @@ -43,10 +43,6 @@ $(MSBuildWarningsAsMessages);MSB9004 - - - - @@ -202,50 +198,6 @@ internal partial class VersionConstants { - - - - CoreCompile - - - - - $(Pkgmdoc)\tools\mdoc.exe - $(TargetName).xml - $(TargetDir)$(MDocOutputName) - $(IntermediateOutputPath)mdoc\ - <_ShouldGenerateDocs Condition=" '$(MDocDocumentationDirectory)' != '' and Exists('$(MDocDocumentationDirectory)\index.xml') ">true - - - <_MDocInputs Include="$(MDocDocumentationDirectory)\**\*" /> - - - - - - - - - - - - diff --git a/source/SkiaSharp.DotNet.Interactive/SkiaSharp.DotNet.Interactive.csproj b/source/SkiaSharp.DotNet.Interactive/SkiaSharp.DotNet.Interactive.csproj index 8649a78b24..10ae912a32 100644 --- a/source/SkiaSharp.DotNet.Interactive/SkiaSharp.DotNet.Interactive.csproj +++ b/source/SkiaSharp.DotNet.Interactive/SkiaSharp.DotNet.Interactive.csproj @@ -4,7 +4,6 @@ netstandard2.1 SkiaSharp.DotNet.Interactive SkiaSharp.DotNet.Interactive - true false SkiaSharp false diff --git a/source/SkiaSharp.NuGet.targets b/source/SkiaSharp.NuGet.targets index d118b4f24e..6f48b750a3 100644 --- a/source/SkiaSharp.NuGet.targets +++ b/source/SkiaSharp.NuGet.targets @@ -55,20 +55,6 @@ $(PackageNotes) - - - - - - - SkiaSharp SkiaSharp SkiaSharp @@ -15,7 +16,7 @@ $(DefineConstants);USE_LIBRARY_IMPORT - + diff --git a/binding/SkiaSharp/SkiaSharpVersion.cs b/binding/SkiaSharp/SkiaSharpVersion.cs index e87081ae28..cb1926ef9e 100644 --- a/binding/SkiaSharp/SkiaSharpVersion.cs +++ b/binding/SkiaSharp/SkiaSharpVersion.cs @@ -1,4 +1,4 @@ -#nullable disable +#nullable disable using System; using System.Runtime.InteropServices; diff --git a/binding/SkiaSharp/Util.cs b/binding/SkiaSharp/Util.cs index 249340bbca..ef49665595 100644 --- a/binding/SkiaSharp/Util.cs +++ b/binding/SkiaSharp/Util.cs @@ -1,4 +1,4 @@ -#nullable disable +#nullable disable using System; using System.Buffers; From f5d4c252815b0f1bcd7d618a24adefd65de3ef7e Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Fri, 5 Sep 2025 14:12:00 +0200 Subject: [PATCH 08/35] regen --- .../HarfBuzzSharp/HarfBuzzApi.generated.cs | 26 +++++----- .../ResourcesApi.generated.cs | 2 +- .../SceneGraphApi.generated.cs | 2 +- .../SkiaSharp.Skottie/SkottieApi.generated.cs | 2 +- binding/SkiaSharp/SkiaApi.generated.cs | 50 +++++++++---------- 5 files changed, 41 insertions(+), 41 deletions(-) diff --git a/binding/HarfBuzzSharp/HarfBuzzApi.generated.cs b/binding/HarfBuzzSharp/HarfBuzzApi.generated.cs index 59f99a376c..6df8ec2b2f 100644 --- a/binding/HarfBuzzSharp/HarfBuzzApi.generated.cs +++ b/binding/HarfBuzzSharp/HarfBuzzApi.generated.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Runtime.InteropServices; using System.Runtime.CompilerServices; @@ -6504,7 +6504,7 @@ public unsafe partial struct Feature : IEquatable { public readonly bool Equals (Feature obj) => #pragma warning disable CS8909 tag == obj.tag && value == obj.value && start == obj.start && end == obj.end; - #pragma warning restore CS8909 +#pragma warning restore CS8909 public readonly override bool Equals (object obj) => obj is Feature f && Equals (f); @@ -6581,7 +6581,7 @@ public Int32 LineGap { public readonly bool Equals (FontExtents obj) => #pragma warning disable CS8909 ascender == obj.ascender && descender == obj.descender && line_gap == obj.line_gap && reserved9 == obj.reserved9 && reserved8 == obj.reserved8 && reserved7 == obj.reserved7 && reserved6 == obj.reserved6 && reserved5 == obj.reserved5 && reserved4 == obj.reserved4 && reserved3 == obj.reserved3 && reserved2 == obj.reserved2 && reserved1 == obj.reserved1; - #pragma warning restore CS8909 +#pragma warning restore CS8909 public readonly override bool Equals (object obj) => obj is FontExtents f && Equals (f); @@ -6646,7 +6646,7 @@ public Int32 Height { public readonly bool Equals (GlyphExtents obj) => #pragma warning disable CS8909 x_bearing == obj.x_bearing && y_bearing == obj.y_bearing && width == obj.width && height == obj.height; - #pragma warning restore CS8909 +#pragma warning restore CS8909 public readonly override bool Equals (object obj) => obj is GlyphExtents f && Equals (f); @@ -6715,7 +6715,7 @@ public UInt32 Cluster { public readonly bool Equals (GlyphInfo obj) => #pragma warning disable CS8909 codepoint == obj.codepoint && mask == obj.mask && cluster == obj.cluster && var1 == obj.var1 && var2 == obj.var2; - #pragma warning restore CS8909 +#pragma warning restore CS8909 public readonly override bool Equals (object obj) => obj is GlyphInfo f && Equals (f); @@ -6793,7 +6793,7 @@ public Int32 YOffset { public readonly bool Equals (GlyphPosition obj) => #pragma warning disable CS8909 x_advance == obj.x_advance && y_advance == obj.y_advance && x_offset == obj.x_offset && y_offset == obj.y_offset && var == obj.var; - #pragma warning restore CS8909 +#pragma warning restore CS8909 public readonly override bool Equals (object obj) => obj is GlyphPosition f && Equals (f); @@ -6837,7 +6837,7 @@ public UInt32 ColorIndex { public readonly bool Equals (OpenTypeColorLayer obj) => #pragma warning disable CS8909 glyph == obj.glyph && color_index == obj.color_index; - #pragma warning restore CS8909 +#pragma warning restore CS8909 public readonly override bool Equals (object obj) => obj is OpenTypeColorLayer f && Equals (f); @@ -6899,7 +6899,7 @@ public OpenTypeMathGlyphPartFlags Flags { public readonly bool Equals (OpenTypeMathGlyphPart obj) => #pragma warning disable CS8909 glyph == obj.glyph && start_connector_length == obj.start_connector_length && end_connector_length == obj.end_connector_length && full_advance == obj.full_advance && flags == obj.flags; - #pragma warning restore CS8909 +#pragma warning restore CS8909 public readonly override bool Equals (object obj) => obj is OpenTypeMathGlyphPart f && Equals (f); @@ -6943,7 +6943,7 @@ public Int32 Advance { public readonly bool Equals (OpenTypeMathGlyphVariant obj) => #pragma warning disable CS8909 glyph == obj.glyph && advance == obj.advance; - #pragma warning restore CS8909 +#pragma warning restore CS8909 public readonly override bool Equals (object obj) => obj is OpenTypeMathGlyphVariant f && Equals (f); @@ -6991,7 +6991,7 @@ public IntPtr Language { public readonly bool Equals (OpenTypeNameEntry obj) => #pragma warning disable CS8909 name_id == obj.name_id && var == obj.var && language == obj.language; - #pragma warning restore CS8909 +#pragma warning restore CS8909 public readonly override bool Equals (object obj) => obj is OpenTypeNameEntry f && Equals (f); @@ -7071,7 +7071,7 @@ public Single MaxValue { public readonly bool Equals (OpenTypeVarAxisInfo obj) => #pragma warning disable CS8909 axis_index == obj.axis_index && tag == obj.tag && name_id == obj.name_id && flags == obj.flags && min_value == obj.min_value && default_value == obj.default_value && max_value == obj.max_value && reserved == obj.reserved; - #pragma warning restore CS8909 +#pragma warning restore CS8909 public readonly override bool Equals (object obj) => obj is OpenTypeVarAxisInfo f && Equals (f); @@ -7139,7 +7139,7 @@ public Single MaxValue { public readonly bool Equals (OpenTypeVarAxis obj) => #pragma warning disable CS8909 tag == obj.tag && name_id == obj.name_id && min_value == obj.min_value && default_value == obj.default_value && max_value == obj.max_value; - #pragma warning restore CS8909 +#pragma warning restore CS8909 public readonly override bool Equals (object obj) => obj is OpenTypeVarAxis f && Equals (f); @@ -7183,7 +7183,7 @@ public Single Value { public readonly bool Equals (Variation obj) => #pragma warning disable CS8909 tag == obj.tag && value == obj.value; - #pragma warning restore CS8909 +#pragma warning restore CS8909 public readonly override bool Equals (object obj) => obj is Variation f && Equals (f); diff --git a/binding/SkiaSharp.Resources/ResourcesApi.generated.cs b/binding/SkiaSharp.Resources/ResourcesApi.generated.cs index 6733269198..fa699789b0 100644 --- a/binding/SkiaSharp.Resources/ResourcesApi.generated.cs +++ b/binding/SkiaSharp.Resources/ResourcesApi.generated.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Runtime.InteropServices; using System.Runtime.CompilerServices; diff --git a/binding/SkiaSharp.SceneGraph/SceneGraphApi.generated.cs b/binding/SkiaSharp.SceneGraph/SceneGraphApi.generated.cs index 1f50aac9a0..658c3c8590 100644 --- a/binding/SkiaSharp.SceneGraph/SceneGraphApi.generated.cs +++ b/binding/SkiaSharp.SceneGraph/SceneGraphApi.generated.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Runtime.InteropServices; using System.Runtime.CompilerServices; diff --git a/binding/SkiaSharp.Skottie/SkottieApi.generated.cs b/binding/SkiaSharp.Skottie/SkottieApi.generated.cs index 48d830b087..21425ff755 100644 --- a/binding/SkiaSharp.Skottie/SkottieApi.generated.cs +++ b/binding/SkiaSharp.Skottie/SkottieApi.generated.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Runtime.InteropServices; using System.Runtime.CompilerServices; diff --git a/binding/SkiaSharp/SkiaApi.generated.cs b/binding/SkiaSharp/SkiaApi.generated.cs index 483d739748..b2c7bc19cc 100644 --- a/binding/SkiaSharp/SkiaApi.generated.cs +++ b/binding/SkiaSharp/SkiaApi.generated.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Runtime.InteropServices; using System.Runtime.CompilerServices; @@ -17744,7 +17744,7 @@ public bool Protected { public readonly bool Equals (GRGlFramebufferInfo obj) => #pragma warning disable CS8909 fFBOID == obj.fFBOID && fFormat == obj.fFormat && fProtected == obj.fProtected; - #pragma warning restore CS8909 +#pragma warning restore CS8909 /// public readonly override bool Equals (object obj) => @@ -17818,7 +17818,7 @@ public bool Protected { public readonly bool Equals (GRGlTextureInfo obj) => #pragma warning disable CS8909 fTarget == obj.fTarget && fID == obj.fID && fFormat == obj.fFormat && fProtected == obj.fProtected; - #pragma warning restore CS8909 +#pragma warning restore CS8909 /// public readonly override bool Equals (object obj) => @@ -17920,7 +17920,7 @@ public IntPtr BackendMemory { public readonly bool Equals (GRVkAlloc obj) => #pragma warning disable CS8909 fMemory == obj.fMemory && fOffset == obj.fOffset && fSize == obj.fSize && fFlags == obj.fFlags && fBackendMemory == obj.fBackendMemory && fUsesSystemHeap == obj.fUsesSystemHeap; - #pragma warning restore CS8909 +#pragma warning restore CS8909 /// public readonly override bool Equals (object obj) => @@ -18142,7 +18142,7 @@ public UInt32 SharingMode { public readonly bool Equals (GRVkImageInfo obj) => #pragma warning disable CS8909 fImage == obj.fImage && fAlloc == obj.fAlloc && fImageTiling == obj.fImageTiling && fImageLayout == obj.fImageLayout && fFormat == obj.fFormat && fImageUsageFlags == obj.fImageUsageFlags && fSampleCount == obj.fSampleCount && fLevelCount == obj.fLevelCount && fCurrentQueueFamily == obj.fCurrentQueueFamily && fProtected == obj.fProtected && fYcbcrConversionInfo == obj.fYcbcrConversionInfo && fSharingMode == obj.fSharingMode; - #pragma warning restore CS8909 +#pragma warning restore CS8909 /// public readonly override bool Equals (object obj) => @@ -18248,7 +18248,7 @@ public UInt32 FormatFeatures { public readonly bool Equals (GrVkYcbcrConversionInfo obj) => #pragma warning disable CS8909 fFormat == obj.fFormat && fExternalFormat == obj.fExternalFormat && fYcbcrModel == obj.fYcbcrModel && fYcbcrRange == obj.fYcbcrRange && fXChromaOffset == obj.fXChromaOffset && fYChromaOffset == obj.fYChromaOffset && fChromaFilter == obj.fChromaFilter && fForceExplicitReconstruction == obj.fForceExplicitReconstruction && fFormatFeatures == obj.fFormatFeatures; - #pragma warning restore CS8909 +#pragma warning restore CS8909 /// public readonly override bool Equals (object obj) => @@ -18403,7 +18403,7 @@ public SKRectI FrameRect { public readonly bool Equals (SKCodecFrameInfo obj) => #pragma warning disable CS8909 fRequiredFrame == obj.fRequiredFrame && fDuration == obj.fDuration && fFullyReceived == obj.fFullyReceived && fAlphaType == obj.fAlphaType && fHasAlphaWithinBounds == obj.fHasAlphaWithinBounds && fDisposalMethod == obj.fDisposalMethod && fBlend == obj.fBlend && fFrameRect == obj.fFrameRect; - #pragma warning restore CS8909 +#pragma warning restore CS8909 /// public readonly override bool Equals (object obj) => @@ -18519,7 +18519,7 @@ public readonly override int GetHashCode () public readonly bool Equals (SKColorF obj) => #pragma warning disable CS8909 fR == obj.fR && fG == obj.fG && fB == obj.fB && fA == obj.fA; - #pragma warning restore CS8909 +#pragma warning restore CS8909 /// /// Determines whether the specified object is equal to the current object. @@ -18653,7 +18653,7 @@ public Single WY { public readonly bool Equals (SKColorSpacePrimaries obj) => #pragma warning disable CS8909 fRX == obj.fRX && fRY == obj.fRY && fGX == obj.fGX && fGY == obj.fGY && fBX == obj.fBX && fBY == obj.fBY && fWX == obj.fWX && fWY == obj.fWY; - #pragma warning restore CS8909 +#pragma warning restore CS8909 /// public readonly override bool Equals (object obj) => @@ -18766,7 +18766,7 @@ public Single F { public readonly bool Equals (SKColorSpaceTransferFn obj) => #pragma warning disable CS8909 fG == obj.fG && fA == obj.fA && fB == obj.fB && fC == obj.fC && fD == obj.fD && fE == obj.fE && fF == obj.fF; - #pragma warning restore CS8909 +#pragma warning restore CS8909 /// public readonly override bool Equals (object obj) => @@ -18831,7 +18831,7 @@ public unsafe partial struct SKColorSpaceXyz : IEquatable { public readonly bool Equals (SKColorSpaceXyz obj) => #pragma warning disable CS8909 fM00 == obj.fM00 && fM01 == obj.fM01 && fM02 == obj.fM02 && fM10 == obj.fM10 && fM11 == obj.fM11 && fM12 == obj.fM12 && fM20 == obj.fM20 && fM21 == obj.fM21 && fM22 == obj.fM22; - #pragma warning restore CS8909 +#pragma warning restore CS8909 /// public readonly override bool Equals (object obj) => @@ -19083,7 +19083,7 @@ public unsafe partial struct SKFontMetrics : IEquatable { public readonly bool Equals (SKFontMetrics obj) => #pragma warning disable CS8909 fFlags == obj.fFlags && fTop == obj.fTop && fAscent == obj.fAscent && fDescent == obj.fDescent && fBottom == obj.fBottom && fLeading == obj.fLeading && fAvgCharWidth == obj.fAvgCharWidth && fMaxCharWidth == obj.fMaxCharWidth && fXMin == obj.fXMin && fXMax == obj.fXMax && fXHeight == obj.fXHeight && fCapHeight == obj.fCapHeight && fUnderlineThickness == obj.fUnderlineThickness && fUnderlinePosition == obj.fUnderlinePosition && fStrikeoutThickness == obj.fStrikeoutThickness && fStrikeoutPosition == obj.fStrikeoutPosition; - #pragma warning restore CS8909 +#pragma warning restore CS8909 /// public readonly override bool Equals (object obj) => @@ -19163,7 +19163,7 @@ public Single Contrast { public readonly bool Equals (SKHighContrastConfig obj) => #pragma warning disable CS8909 fGrayscale == obj.fGrayscale && fInvertStyle == obj.fInvertStyle && fContrast == obj.fContrast; - #pragma warning restore CS8909 +#pragma warning restore CS8909 /// public readonly override bool Equals (object obj) => @@ -19269,7 +19269,7 @@ public Int32 Y { public readonly bool Equals (SKPointI obj) => #pragma warning disable CS8909 x == obj.x && y == obj.y; - #pragma warning restore CS8909 +#pragma warning restore CS8909 /// /// Specifies whether this contains the same coordinates as the specified . @@ -19366,7 +19366,7 @@ public Int32 Bottom { public readonly bool Equals (SKRectI obj) => #pragma warning disable CS8909 left == obj.left && top == obj.top && right == obj.right && bottom == obj.bottom; - #pragma warning restore CS8909 +#pragma warning restore CS8909 /// /// Specifies whether this rectangle contains the same coordinates as the specified . @@ -19444,7 +19444,7 @@ public Int32 Height { public readonly bool Equals (SKSizeI obj) => #pragma warning disable CS8909 w == obj.w && h == obj.h; - #pragma warning restore CS8909 +#pragma warning restore CS8909 /// /// Tests to see whether the specified object is a structure with the same dimensions as this structure. @@ -19518,7 +19518,7 @@ public readonly override int GetHashCode () public readonly bool Equals (SKJpegEncoderOptions obj) => #pragma warning disable CS8909 fQuality == obj.fQuality && fDownsample == obj.fDownsample && fAlphaOption == obj.fAlphaOption && xmpMetadata == obj.xmpMetadata && fICCProfile == obj.fICCProfile && fICCProfileDescription == obj.fICCProfileDescription; - #pragma warning restore CS8909 +#pragma warning restore CS8909 /// public readonly override bool Equals (object obj) => @@ -19994,7 +19994,7 @@ public Single Persp2 { public readonly bool Equals (SKMatrix obj) => #pragma warning disable CS8909 scaleX == obj.scaleX && skewX == obj.skewX && transX == obj.transX && skewY == obj.skewY && scaleY == obj.scaleY && transY == obj.transY && persp0 == obj.persp0 && persp1 == obj.persp1 && persp2 == obj.persp2; - #pragma warning restore CS8909 +#pragma warning restore CS8909 /// public readonly override bool Equals (object obj) => @@ -20208,7 +20208,7 @@ public readonly override int GetHashCode () public readonly bool Equals (SKPngEncoderOptions obj) => #pragma warning disable CS8909 fFilterFlags == obj.fFilterFlags && fZLibLevel == obj.fZLibLevel && fComments == obj.fComments && fICCProfile == obj.fICCProfile && fICCProfileDescription == obj.fICCProfileDescription; - #pragma warning restore CS8909 +#pragma warning restore CS8909 /// public readonly override bool Equals (object obj) => @@ -20272,7 +20272,7 @@ public Single Y { public readonly bool Equals (SKPoint obj) => #pragma warning disable CS8909 x == obj.x && y == obj.y; - #pragma warning restore CS8909 +#pragma warning restore CS8909 /// /// Specifies whether this contains the same coordinates as the specified . @@ -20359,7 +20359,7 @@ public Single Z { public readonly bool Equals (SKPoint3 obj) => #pragma warning disable CS8909 x == obj.x && y == obj.y && z == obj.z; - #pragma warning restore CS8909 +#pragma warning restore CS8909 /// /// Specifies whether this contains the same coordinates as the specified . @@ -20457,7 +20457,7 @@ public Single Bottom { public readonly bool Equals (SKRect obj) => #pragma warning disable CS8909 left == obj.left && top == obj.top && right == obj.right && bottom == obj.bottom; - #pragma warning restore CS8909 +#pragma warning restore CS8909 /// /// Specifies whether this rectangle contains the same coordinates as the specified . @@ -20536,7 +20536,7 @@ public Single TY { public readonly bool Equals (SKRotationScaleMatrix obj) => #pragma warning disable CS8909 fSCos == obj.fSCos && fSSin == obj.fSSin && fTX == obj.fTX && fTY == obj.fTY; - #pragma warning restore CS8909 +#pragma warning restore CS8909 /// public readonly override bool Equals (object obj) => @@ -20738,7 +20738,7 @@ public Single Height { public readonly bool Equals (SKSize obj) => #pragma warning disable CS8909 w == obj.w && h == obj.h; - #pragma warning restore CS8909 +#pragma warning restore CS8909 /// /// Tests to see whether the specified object is a structure with the same dimensions as this structure. @@ -20847,7 +20847,7 @@ public readonly override int GetHashCode () public readonly bool Equals (SKWebpEncoderOptions obj) => #pragma warning disable CS8909 fCompression == obj.fCompression && fQuality == obj.fQuality && fICCProfile == obj.fICCProfile && fICCProfileDescription == obj.fICCProfileDescription; - #pragma warning restore CS8909 +#pragma warning restore CS8909 /// public readonly override bool Equals (object obj) => From 190acca616ba5ee9fd048711c052cdf016982375 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Fri, 5 Sep 2025 14:20:01 +0200 Subject: [PATCH 09/35] Blazor --- .../SKPaintGLSurfaceEventArgs.cs | 67 ------------------- .../SKPaintSurfaceEventArgs.cs | 37 ---------- .../SkiaSharp.Views.Blazor.csproj | 5 ++ .../SKPaintGLSurfaceEventArgs.cs | 22 ++++++ .../SKPaintSurfaceEventArgs.cs | 15 +++++ 5 files changed, 42 insertions(+), 104 deletions(-) delete mode 100644 source/SkiaSharp.Views/SkiaSharp.Views.Blazor/SKPaintGLSurfaceEventArgs.cs delete mode 100644 source/SkiaSharp.Views/SkiaSharp.Views.Blazor/SKPaintSurfaceEventArgs.cs diff --git a/source/SkiaSharp.Views/SkiaSharp.Views.Blazor/SKPaintGLSurfaceEventArgs.cs b/source/SkiaSharp.Views/SkiaSharp.Views.Blazor/SKPaintGLSurfaceEventArgs.cs deleted file mode 100644 index b4403b745e..0000000000 --- a/source/SkiaSharp.Views/SkiaSharp.Views.Blazor/SKPaintGLSurfaceEventArgs.cs +++ /dev/null @@ -1,67 +0,0 @@ -namespace SkiaSharp.Views.Blazor; - -/// -/// Provides data for the event. -/// -public class SKPaintGLSurfaceEventArgs : EventArgs -{ - /// - /// Creates a new instance of the event arguments. - /// - public SKPaintGLSurfaceEventArgs(SKSurface surface, GRBackendRenderTarget renderTarget) - : this(surface, renderTarget, GRSurfaceOrigin.BottomLeft, SKColorType.Rgba8888) - { - } - - /// - /// Creates a new instance of the event arguments. - /// - public SKPaintGLSurfaceEventArgs(SKSurface surface, GRBackendRenderTarget renderTarget, GRSurfaceOrigin origin, SKColorType colorType) - { - Surface = surface; - BackendRenderTarget = renderTarget; - ColorType = colorType; - Origin = origin; - Info = new SKImageInfo(renderTarget.Width, renderTarget.Height, ColorType); - RawInfo = Info; - } - - public SKPaintGLSurfaceEventArgs(SKSurface surface, GRBackendRenderTarget renderTarget, GRSurfaceOrigin origin, SKImageInfo info) - : this(surface, renderTarget, origin, info, info) - { - } - - public SKPaintGLSurfaceEventArgs(SKSurface surface, GRBackendRenderTarget renderTarget, GRSurfaceOrigin origin, SKImageInfo info, SKImageInfo rawInfo) - { - Surface = surface; - BackendRenderTarget = renderTarget; - ColorType = info.ColorType; - Origin = origin; - Info = info; - RawInfo = rawInfo; - } - - /// - /// Gets the surface that is currently being drawn on. - /// - public SKSurface Surface { get; private set; } - - /// - /// Gets the render target that is currently being drawn. - /// - public GRBackendRenderTarget BackendRenderTarget { get; private set; } - - /// - /// Gets the color type of the render target. - /// - public SKColorType ColorType { get; private set; } - - /// - /// Gets the surface origin of the render target. - /// - public GRSurfaceOrigin Origin { get; private set; } - - public SKImageInfo Info { get; private set; } - - public SKImageInfo RawInfo { get; private set; } -} diff --git a/source/SkiaSharp.Views/SkiaSharp.Views.Blazor/SKPaintSurfaceEventArgs.cs b/source/SkiaSharp.Views/SkiaSharp.Views.Blazor/SKPaintSurfaceEventArgs.cs deleted file mode 100644 index a858d6045e..0000000000 --- a/source/SkiaSharp.Views/SkiaSharp.Views.Blazor/SKPaintSurfaceEventArgs.cs +++ /dev/null @@ -1,37 +0,0 @@ -namespace SkiaSharp.Views.Blazor; - -/// -/// Provides data for the event. -/// -public class SKPaintSurfaceEventArgs : EventArgs -{ - /// - /// Creates a new instance of the event arguments. - /// - public SKPaintSurfaceEventArgs(SKSurface surface, SKImageInfo info) - : this(surface, info, info) - { - } - - /// - /// - /// - public SKPaintSurfaceEventArgs(SKSurface surface, SKImageInfo info, SKImageInfo rawInfo) - { - Surface = surface; - Info = info; - RawInfo = rawInfo; - } - - /// - /// Gets the surface that is currently being drawn on. - /// - public SKSurface Surface { get; } - - /// - /// Gets the information about the surface that is currently being drawn. - /// - public SKImageInfo Info { get; } - - public SKImageInfo RawInfo { get; } -} diff --git a/source/SkiaSharp.Views/SkiaSharp.Views.Blazor/SkiaSharp.Views.Blazor.csproj b/source/SkiaSharp.Views/SkiaSharp.Views.Blazor/SkiaSharp.Views.Blazor.csproj index 1e722c3507..eab705de81 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views.Blazor/SkiaSharp.Views.Blazor.csproj +++ b/source/SkiaSharp.Views/SkiaSharp.Views.Blazor/SkiaSharp.Views.Blazor.csproj @@ -37,6 +37,11 @@ + + + + + diff --git a/source/SkiaSharp.Views/SkiaSharp.Views.Shared/SKPaintGLSurfaceEventArgs.cs b/source/SkiaSharp.Views/SkiaSharp.Views.Shared/SKPaintGLSurfaceEventArgs.cs index cc86bfb368..5714613559 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views.Shared/SKPaintGLSurfaceEventArgs.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views.Shared/SKPaintGLSurfaceEventArgs.cs @@ -24,13 +24,23 @@ namespace SkiaSharp.Views.Windows namespace SkiaSharp.Views.Blazor #endif { + /// + /// Provides data for the event. + /// + /// The event does not yet exist nor is this type currently in use, but exists for cross-platform compatibility. public class SKPaintGLSurfaceEventArgs : EventArgs { + /// + /// Creates a new instance of the event arguments. + /// public SKPaintGLSurfaceEventArgs(SKSurface surface, GRBackendRenderTarget renderTarget) : this(surface, renderTarget, GRSurfaceOrigin.BottomLeft, SKColorType.Rgba8888) { } + /// + /// Creates a new instance of the event arguments. + /// public SKPaintGLSurfaceEventArgs(SKSurface surface, GRBackendRenderTarget renderTarget, GRSurfaceOrigin origin, SKColorType colorType) { Surface = surface; @@ -56,12 +66,24 @@ public SKPaintGLSurfaceEventArgs(SKSurface surface, GRBackendRenderTarget render RawInfo = rawInfo; } + /// + /// Gets the surface that is currently being drawn on. + /// public SKSurface Surface { get; private set; } + /// + /// Gets the render target that is currently being drawn. + /// public GRBackendRenderTarget BackendRenderTarget { get; private set; } + /// + /// Gets the color type of the render target. + /// public SKColorType ColorType { get; private set; } + /// + /// Gets the surface origin of the render target. + /// public GRSurfaceOrigin Origin { get; private set; } public SKImageInfo Info { get; private set; } diff --git a/source/SkiaSharp.Views/SkiaSharp.Views.Shared/SKPaintSurfaceEventArgs.cs b/source/SkiaSharp.Views/SkiaSharp.Views.Shared/SKPaintSurfaceEventArgs.cs index 547558703b..3326529758 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views.Shared/SKPaintSurfaceEventArgs.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views.Shared/SKPaintSurfaceEventArgs.cs @@ -22,13 +22,22 @@ namespace SkiaSharp.Views.Windows namespace SkiaSharp.Views.Blazor #endif { + /// + /// Provides data for the event. + /// public class SKPaintSurfaceEventArgs : EventArgs { + /// + /// Creates a new instance of the event arguments. + /// public SKPaintSurfaceEventArgs(SKSurface surface, SKImageInfo info) : this(surface, info, info) { } + /// + /// Creates a new instance of the event arguments. + /// public SKPaintSurfaceEventArgs(SKSurface surface, SKImageInfo info, SKImageInfo rawInfo) { Surface = surface; @@ -36,8 +45,14 @@ public SKPaintSurfaceEventArgs(SKSurface surface, SKImageInfo info, SKImageInfo RawInfo = rawInfo; } + /// + /// Gets the surface that is currently being drawn on. + /// public SKSurface Surface { get; } + /// + /// Gets the information about the surface that is currently being drawn. + /// public SKImageInfo Info { get; } public SKImageInfo RawInfo { get; } From eb4ae356465763019bdc41856c36be1ac57f088d Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Fri, 5 Sep 2025 14:33:25 +0200 Subject: [PATCH 10/35] SkiaSharp.HarfBuzz --- .../SkiaSharp.HarfBuzz/BlobExtensions.cs | 8 +++ .../SkiaSharp.HarfBuzz/CanvasExtensions.cs | 26 ++++++++ .../SkiaSharp.HarfBuzz/FontExtensions.cs | 13 ++++ .../SkiaSharp.HarfBuzz/SKShaper.cs | 59 +++++++++++++++++++ 4 files changed, 106 insertions(+) diff --git a/source/SkiaSharp.HarfBuzz/SkiaSharp.HarfBuzz/BlobExtensions.cs b/source/SkiaSharp.HarfBuzz/SkiaSharp.HarfBuzz/BlobExtensions.cs index 20675095f5..b9d19c81d7 100644 --- a/source/SkiaSharp.HarfBuzz/SkiaSharp.HarfBuzz/BlobExtensions.cs +++ b/source/SkiaSharp.HarfBuzz/SkiaSharp.HarfBuzz/BlobExtensions.cs @@ -5,8 +5,16 @@ namespace SkiaSharp.HarfBuzz { + /// + /// Various extension methods to integrate SkiaSharp and a HarfBuzz . + /// public static class BlobExtensions { + /// + /// Converts a seekable stream into a . + /// + /// The stream to convert into a . + /// Returns the new instance. public static Blob ToHarfBuzzBlob(this SKStreamAsset asset) { if (asset == null) diff --git a/source/SkiaSharp.HarfBuzz/SkiaSharp.HarfBuzz/CanvasExtensions.cs b/source/SkiaSharp.HarfBuzz/SkiaSharp.HarfBuzz/CanvasExtensions.cs index 8b39ae75d9..919d845bef 100644 --- a/source/SkiaSharp.HarfBuzz/SkiaSharp.HarfBuzz/CanvasExtensions.cs +++ b/source/SkiaSharp.HarfBuzz/SkiaSharp.HarfBuzz/CanvasExtensions.cs @@ -2,8 +2,15 @@ namespace SkiaSharp.HarfBuzz { + /// + /// Various extension methods to integrate a SkiaSharp and HarfBuzz. + /// public static class CanvasExtensions { + /// + /// + /// + /// [Obsolete("Use DrawShapedText(string text, SKPoint p, SKTextAlign textAlign, SKFont font, SKPaint paint) instead.")] public static void DrawShapedText(this SKCanvas canvas, string text, SKPoint p, SKPaint paint) => canvas.DrawShapedText(text, p.X, p.Y, paint.TextAlign, paint.GetFont(), paint); @@ -16,6 +23,11 @@ public static void DrawShapedText(this SKCanvas canvas, string text, SKPoint p, public static void DrawShapedText(this SKCanvas canvas, string text, SKPoint p, SKTextAlign textAlign, SKFont font, SKPaint paint) => canvas.DrawShapedText(text, p.X, p.Y, textAlign, font, paint); + /// + /// + /// + /// + /// [Obsolete("Use DrawShapedText(string text, float x, float y, SKTextAlign textAlign, SKFont font, SKPaint paint) instead.")] public static void DrawShapedText(this SKCanvas canvas, string text, float x, float y, SKPaint paint) => canvas.DrawShapedText(text, x, y, paint.TextAlign, paint.GetFont(), paint); @@ -34,6 +46,11 @@ public static void DrawShapedText(this SKCanvas canvas, string text, float x, fl canvas.DrawShapedText(shaper, text, x, y, textAlign, font, paint); } + /// + /// + /// + /// + /// [Obsolete("Use DrawShapedText(SKShaper shaper, string text, SKPoint p, SKTextAlign textAlign, SKFont font, SKPaint paint) instead.")] public static void DrawShapedText(this SKCanvas canvas, SKShaper shaper, string text, SKPoint p, SKPaint paint) => canvas.DrawShapedText(shaper, text, p.X, p.Y, paint.TextAlign, paint.GetFont(), paint); @@ -46,6 +63,15 @@ public static void DrawShapedText(this SKCanvas canvas, SKShaper shaper, string public static void DrawShapedText(this SKCanvas canvas, SKShaper shaper, string text, SKPoint p, SKTextAlign textAlign, SKFont font, SKPaint paint) => canvas.DrawShapedText(shaper, text, p.X, p.Y, textAlign, font, paint); + /// + /// Draws shaped text on the canvas at the specified coordinates. + /// + /// The canvas to draw on. + /// The text shaper to use when shaping the text. + /// The text to draw. + /// The x-coordinate of the origin of the text being drawn. + /// The y-coordinate of the origin of the text being drawn. + /// The paint to use when drawing the text. [Obsolete("Use DrawShapedText(SKShaper shaper, string text, float x, float y, SKTextAlign textAlign, SKFont font, SKPaint paint) instead.")] public static void DrawShapedText(this SKCanvas canvas, SKShaper shaper, string text, float x, float y, SKPaint paint) => canvas.DrawShapedText(shaper, text, x, y, paint.TextAlign, paint.GetFont(), paint); diff --git a/source/SkiaSharp.HarfBuzz/SkiaSharp.HarfBuzz/FontExtensions.cs b/source/SkiaSharp.HarfBuzz/SkiaSharp.HarfBuzz/FontExtensions.cs index b4d660e217..9f77788169 100644 --- a/source/SkiaSharp.HarfBuzz/SkiaSharp.HarfBuzz/FontExtensions.cs +++ b/source/SkiaSharp.HarfBuzz/SkiaSharp.HarfBuzz/FontExtensions.cs @@ -4,8 +4,16 @@ namespace SkiaSharp.HarfBuzz { + /// + /// Various extension methods to integrate SkiaSharp and a HarfBuzz . + /// public static class FontExtensions { + /// + /// Retrieves the font scale. + /// + /// The font to retrieve the scale. + /// Returns the font scale. public static SKSizeI GetScale(this Font font) { if (font == null) @@ -17,6 +25,11 @@ public static SKSizeI GetScale(this Font font) return new SKSizeI(scaleX, scaleY); } + /// + /// Sets the font scale. + /// + /// The font to set the scale. + /// The scale to set. public static void SetScale(this Font font, SKSizeI scale) { if (font == null) diff --git a/source/SkiaSharp.HarfBuzz/SkiaSharp.HarfBuzz/SKShaper.cs b/source/SkiaSharp.HarfBuzz/SkiaSharp.HarfBuzz/SKShaper.cs index ae6998dd78..69c1b85f5a 100644 --- a/source/SkiaSharp.HarfBuzz/SkiaSharp.HarfBuzz/SKShaper.cs +++ b/source/SkiaSharp.HarfBuzz/SkiaSharp.HarfBuzz/SKShaper.cs @@ -5,6 +5,9 @@ namespace SkiaSharp.HarfBuzz { + /// + /// Encapsulates basic text shaping. + /// public class SKShaper : IDisposable { internal const int FONT_SIZE_SCALE = 512; @@ -12,6 +15,10 @@ public class SKShaper : IDisposable private Font hbFont; private Buffer hbBuffer; + /// + /// Creates a new instance using the specified typeface. + /// + /// The typeface to use for the text shaping. public SKShaper(SKTypeface typeface) { Typeface = typeface ?? throw new ArgumentNullException(nameof(typeface)); @@ -32,18 +39,31 @@ public SKShaper(SKTypeface typeface) hbBuffer = new Buffer(); } + /// + /// Gets the typeface used when creating the shaper. + /// public SKTypeface Typeface { get; private set; } + /// + /// Releases all resources used by this . + /// + /// Always dispose the object before you release your last reference to the . Otherwise, the resources it is using will not be freed until the garbage collector calls the finalizer. public void Dispose() { hbFont?.Dispose(); hbBuffer?.Dispose(); } + /// + /// [Obsolete("Use Shape(Buffer buffer, SKFont font) instead.")] public Result Shape(Buffer buffer, SKPaint paint) => Shape(buffer, 0, 0, paint.GetFont()); + /// + /// + /// + /// [Obsolete("Use Shape(Buffer buffer, float xOffset, float yOffset, SKFont font) instead.")] public Result Shape(Buffer buffer, float xOffset, float yOffset, SKPaint paint) => Shape(buffer, xOffset, yOffset, paint.GetFont()); @@ -100,10 +120,24 @@ public Result Shape(Buffer buffer, float xOffset, float yOffset, SKFont font) return new Result(codepoints, clusters, points, width); } + /// + /// Shapes the specified text using the properties from the paint. + /// + /// The text to shape. + /// The paint to use. + /// Returns the results of the shaping operation. [Obsolete("Use Shape(string text, SKFont font) instead.")] public Result Shape(string text, SKPaint paint) => Shape(text, 0, 0, paint.GetFont()); + /// + /// Shapes the specified text using the properties from the paint. + /// + /// The text to shape. + /// The x-offset to use when creating the shaping result. + /// The y-offset to use when creating the shaping result. + /// The paint to use. + /// Returns the results of the shaping operation. [Obsolete("Use Shape(string text, float xOffset, float yOffset, SKFont font) instead.")] public Result Shape(string text, float xOffset, float yOffset, SKPaint paint) { @@ -152,8 +186,14 @@ public Result Shape(string text, float xOffset, float yOffset, SKFont font) return Shape(buffer, xOffset, yOffset, font); } + /// + /// Represents the result of a shaping operation. + /// public class Result { + /// + /// Creates a new instance using empty values. + /// public Result() { Codepoints = new uint[0]; @@ -162,6 +202,12 @@ public Result() Width = 0f; } + /// + /// Creates a new instance using the specified values. + /// + /// The glyph Unicode code points. + /// The glyph clusters. + /// The glyph positions. public Result(uint[] codepoints, uint[] clusters, SKPoint[] points) { Codepoints = codepoints; @@ -170,6 +216,10 @@ public Result(uint[] codepoints, uint[] clusters, SKPoint[] points) Width = 0; } + /// + /// + /// + /// public Result(uint[] codepoints, uint[] clusters, SKPoint[] points, float width) { Codepoints = codepoints; @@ -178,10 +228,19 @@ public Result(uint[] codepoints, uint[] clusters, SKPoint[] points, float width) Width = width; } + /// + /// Gets the glyph Unicode code points. + /// public uint[] Codepoints { get; } + /// + /// Gets the glyph clusters. + /// public uint[] Clusters { get; } + /// + /// Gets the glyph positions. + /// public SKPoint[] Points { get; } public float Width { get; } From 6d2386d6e8f028a2399e9f85b079d2cb3727e8b5 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Fri, 5 Sep 2025 14:33:37 +0200 Subject: [PATCH 11/35] fix --- binding/SkiaSharp/SKCanvas.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/binding/SkiaSharp/SKCanvas.cs b/binding/SkiaSharp/SKCanvas.cs index 95300cab26..d7233bcf76 100644 --- a/binding/SkiaSharp/SKCanvas.cs +++ b/binding/SkiaSharp/SKCanvas.cs @@ -1084,7 +1084,7 @@ public void DrawPicture (SKPicture picture, SKPoint p, SKPaint paint = null) /// The matrix to apply while painting. /// The paint to use when drawing the picture, or . /// This is equivalent to calling , followed by - /// with the specified `matrix`, + /// with the specified `matrix`, /// /// and then . /// If paint is non-null, the picture is drawn into a temporary buffer, and then From 08fc14f6d7c8fffac8c2ce7f4e4aee8a0b25b8ca Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Fri, 5 Sep 2025 17:12:55 +0200 Subject: [PATCH 12/35] android --- .../Platform/Android/AndroidExtensions.cs | 99 ++++++++++++ .../Platform/Android/GLTextureView.cs | 148 ++++++++++++++++++ .../Platform/Android/SKCanvasView.cs | 46 ++++++ .../Platform/Android/SKGLSurfaceView.cs | 43 +++++ .../Android/SKGLSurfaceViewRenderer.cs | 25 +++ .../Platform/Android/SKGLTextureView.cs | 43 +++++ .../Android/SKGLTextureViewRenderer.cs | 28 ++++ .../Platform/Android/SKLockedSurface.cs | 12 ++ .../Platform/Android/SKSurfaceView.cs | 45 ++++++ 9 files changed, 489 insertions(+) diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/AndroidExtensions.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/AndroidExtensions.cs index 2836f3baec..9d90a7c9cf 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/AndroidExtensions.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/AndroidExtensions.cs @@ -3,25 +3,48 @@ namespace SkiaSharp.Views.Android { + /// + /// Various extension methods to convert between SkiaSharp types and Xamarin.Android types. + /// public static class AndroidExtensions { // Point* + /// + /// Converts a Xamarin.Android point into a SkiaSharp point. + /// + /// The Xamarin.Android point. + /// Returns a SkiaSharp point. public static SKPoint ToSKPoint(this PointF point) { return new SKPoint(point.X, point.Y); } + /// + /// Converts a Xamarin.Android point into a SkiaSharp point. + /// + /// The Xamarin.Android point. + /// Returns a SkiaSharp point. public static SKPointI ToSKPoint(this Point point) { return new SKPointI(point.X, point.Y); } + /// + /// Converts a SkiaSharp point into a Xamarin.Android point. + /// + /// The SkiaSharp point. + /// Returns a Xamarin.Android point. public static PointF ToPoint(this SKPoint point) { return new PointF(point.X, point.Y); } + /// + /// Converts a SkiaSharp point into a Xamarin.Android point. + /// + /// The SkiaSharp point. + /// Returns a Xamarin.Android point. public static Point ToPoint(this SKPointI point) { return new Point(point.X, point.Y); @@ -29,21 +52,41 @@ public static Point ToPoint(this SKPointI point) // Rectangle* + /// + /// Converts a Xamarin.Android rectangle into a SkiaSharp rectangle. + /// + /// The Xamarin.Android rectangle. + /// Returns a SkiaSharp rectangle. public static SKRect ToSKRect(this RectF rect) { return new SKRect(rect.Left, rect.Top, rect.Right, rect.Bottom); } + /// + /// Converts a Xamarin.Android rectangle into a SkiaSharp rectangle. + /// + /// The Xamarin.Android rectangle. + /// Returns a SkiaSharp rectangle. public static SKRectI ToSKRect(this Rect rect) { return new SKRectI(rect.Left, rect.Top, rect.Right, rect.Bottom); } + /// + /// Converts a SkiaSharp rectangle into a Xamarin.Android rectangle. + /// + /// The SkiaSharp rectangle. + /// Returns a Xamarin.Android rectangle. public static RectF ToRect(this SKRect rect) { return new RectF(rect.Left, rect.Top, rect.Right, rect.Bottom); } + /// + /// Converts a SkiaSharp rectangle into a Xamarin.Android rectangle. + /// + /// The SkiaSharp rectangle. + /// Returns a Xamarin.Android rectangle. public static Rect ToRect(this SKRectI rect) { return new Rect(rect.Left, rect.Top, rect.Right, rect.Bottom); @@ -51,11 +94,21 @@ public static Rect ToRect(this SKRectI rect) // Color + /// + /// Converts a Xamarin.Android color into a SkiaSharp color. + /// + /// The Xamarin.Android color. + /// Returns a SkiaSharp color. public static SKColor ToSKColor(this Color color) { return (SKColor)(uint)(int)color; } + /// + /// Converts a SkiaSharp color into a Xamarin.Android color. + /// + /// The SkiaSharp color. + /// Returns a Xamarin.Android color. public static Color ToColor(this SKColor color) { return new Color((int)(uint)color); @@ -63,6 +116,11 @@ public static Color ToColor(this SKColor color) // Matrix + /// + /// Converts a Xamarin.Android matrix into a SkiaSharp matrix. + /// + /// The Xamarin.Android matrix. + /// Returns a SkiaSharp matrix. public static SKMatrix ToSKMatrix(this Matrix matrix) { var values = new float[9]; @@ -70,6 +128,11 @@ public static SKMatrix ToSKMatrix(this Matrix matrix) return new SKMatrix { Values = values }; } + /// + /// Converts a SkiaSharp matrix into a Xamarin.Android matrix. + /// + /// The SkiaSharp matrix. + /// Returns a Xamarin.Android matrix. public static Matrix ToMatrix(this SKMatrix matrix) { var native = new Matrix(); @@ -100,6 +163,11 @@ private static SKImageInfo GetInfo(Bitmap bitmap) return new SKImageInfo(bitmap.Width, bitmap.Height, colorType); } + /// + /// Converts a Xamarin.Android bitmap into a SkiaSharp image. + /// + /// The Xamarin.Android bitmap. + /// Returns a copy of the bitmap data as a SkiaSharp image. public static SKImage ToSKImage(this Bitmap bitmap) { var info = GetInfo(bitmap); @@ -109,6 +177,11 @@ public static SKImage ToSKImage(this Bitmap bitmap) return image; } + /// + /// Converts a Xamarin.Android bitmap into a SkiaSharp pixmap. + /// + /// The Xamarin.Android bitmap. + /// The SkiaSharp pixmap to hold the copy of the bitmap data. public static void ToSKPixmap(this Bitmap bitmap, SKPixmap pixmap) { // create an image that wraps the existing pixels @@ -121,6 +194,11 @@ public static void ToSKPixmap(this Bitmap bitmap, SKPixmap pixmap) bitmap.UnlockPixels(); } + /// + /// Converts a Xamarin.Android bitmap into a SkiaSharp bitmap. + /// + /// The Xamarin.Android bitmap. + /// Returns a copy of the bitmap data as a SkiaSharp bitmap. public static SKBitmap ToSKBitmap(this Bitmap bitmap) { var info = GetInfo(bitmap); @@ -129,6 +207,11 @@ public static SKBitmap ToSKBitmap(this Bitmap bitmap) return bmp; } + /// + /// Converts a SkiaSharp bitmap into a Xamarin.Android bitmap. + /// + /// The SkiaSharp bitmap. + /// Returns a copy of the bitmap data as a Xamarin.Android bitmap. public static Bitmap ToBitmap(this SKBitmap skiaBitmap) { using var pixmap = skiaBitmap.PeekPixels(); @@ -137,6 +220,11 @@ public static Bitmap ToBitmap(this SKBitmap skiaBitmap) return bmp; } + /// + /// Converts a SkiaSharp image into a Xamarin.Android bitmap. + /// + /// The SkiaSharp image. + /// Returns a copy of the image data as a Xamarin.Android bitmap. public static Bitmap ToBitmap(this SKImage skiaImage) { var info = skiaImage.Info; @@ -185,6 +273,11 @@ public static Bitmap ToBitmap(this SKImage skiaImage) return bmp; } + /// + /// Converts a SkiaSharp pixmap into a Xamarin.Android bitmap. + /// + /// The SkiaSharp pixmap. + /// Returns a copy of the pixel data as a Xamarin.Android bitmap. public static Bitmap ToBitmap(this SKPixmap skiaPixmap) { using var image = SKImage.FromPixels(skiaPixmap); @@ -192,6 +285,12 @@ public static Bitmap ToBitmap(this SKPixmap skiaPixmap) return bmp; } + /// + /// Converts a SkiaSharp picture into a Xamarin.Android bitmap. + /// + /// The SkiaSharp picture. + /// The dimensions of the picture. + /// Returns a copy of the picture as a Xamarin.Android bitmap. public static Bitmap ToBitmap(this SKPicture skiaPicture, SKSizeI dimensions) { using (var img = SKImage.FromPicture(skiaPicture, dimensions)) diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/GLTextureView.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/GLTextureView.cs index fb6a9278e3..e91f77d4f5 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/GLTextureView.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/GLTextureView.cs @@ -28,6 +28,9 @@ namespace SkiaSharp.Views.UWP namespace SkiaSharp.Views.Android #endif { + /// + /// An implementation of that uses the dedicated surface for displaying OpenGL rendering. + /// #if HAS_UNO internal #else @@ -47,12 +50,21 @@ partial class GLTextureView : TextureView, TextureView.ISurfaceTextureListener, private IGLWrapper glWrapper; private int eglContextClientVersion; + /// + /// Simple constructor to use when creating a from code. + /// + /// The the view is running in, through which it can access the current theme, resources, etc. public GLTextureView(Context context) : base(context) { Initialize(); } + /// + /// Constructor that is called when inflating a from XML. + /// + /// The the view is running in, through which it can access the current theme, resources, etc. + /// The attributes of the XML tag that is inflating the view. public GLTextureView(Context context, IAttributeSet attrs) : base(context, attrs) { @@ -81,15 +93,31 @@ protected override void Dispose(bool disposing) base.Dispose(disposing); } + /// + /// Gets or sets a value indicating whether the EGL context is preserved when the is paused and resumed. + /// public bool PreserveEGLContextOnPause { get; set; } + /// + /// Gets or sets the current debug flags. + /// public DebugFlags DebugFlags { get; set; } + /// + /// Set the GL wrapper. + /// + /// The GL wrapper. + /// Wrapping is typically used for debugging purposes. public void SetGLWrapper(IGLWrapper glWrapper) { this.glWrapper = glWrapper; } + /// + /// Set the renderer associated with this view. Also starts the thread that will call the renderer, which in turn causes the rendering to start. + /// + /// The renderer to use to perform OpenGL drawing. + /// This method should be called once and only once in the life-cycle of a GLSurfaceView. public void SetRenderer(IRenderer renderer) { CheckRenderThreadState(); @@ -110,62 +138,127 @@ public void SetRenderer(IRenderer renderer) glThread.Start(); } + /// + /// Install a custom context factory. + /// + /// The custom context factory. + /// If this method is called, it must be called before is called. public void SetEGLContextFactory(IEGLContextFactory factory) { CheckRenderThreadState(); eglContextFactory = factory; } + /// + /// Install a custom window surface factory. + /// + /// The custom window surface factory. + /// If this method is called, it must be called before is called. public void SetEGLWindowSurfaceFactory(IEGLWindowSurfaceFactory factory) { CheckRenderThreadState(); eglWindowSurfaceFactory = factory; } + /// + /// Install a custom config chooser. + /// + /// The custom config chooser. + /// If no EGL config chooser is set, then by default the view will choose an RGB + /// 888 surface with a depth buffer depth of at least 16 bits. + /// If this method is called, it must be called before + /// is called. public void SetEGLConfigChooser(IEGLConfigChooser configChooser) { CheckRenderThreadState(); eglConfigChooser = configChooser; } + /// + /// Install a config chooser which will choose a config as close to 16-bit RGB as possible, with or without an optional depth buffer as close to 16-bits as possible. + /// + /// Whether or not to include a depth buffer. + /// If no EGL config chooser is set, then by default the view will choose an RGB + /// 888 surface with a depth buffer depth of at least 16 bits. + /// If this method is called, it must be called before + /// is called. public void SetEGLConfigChooser(bool needDepth) { SetEGLConfigChooser(new SimpleEGLConfigChooser(this, needDepth)); } + /// + /// Install a config chooser which will choose a config with at least the specified depth size and stencil size, and exactly the specified red size, green size, blue size and alpha size. + /// + /// The size of the red. + /// The size of the green. + /// The size of the blue. + /// The size of the alpha. + /// The size of the depth buffer. + /// The size of the stencil buffer. + /// If no EGL config chooser is set, then by default the view will choose an RGB + /// 888 surface with a depth buffer depth of at least 16 bits. + /// If this method is called, it must be called before + /// is called. public void SetEGLConfigChooser(int redSize, int greenSize, int blueSize, int alphaSize, int depthSize, int stencilSize) { SetEGLConfigChooser(new ComponentSizeChooser(this, redSize, greenSize, blueSize, alphaSize, depthSize, stencilSize)); } + /// + /// Inform the default context factory and default config chooser which context client version to pick. + /// + /// The context client version to choose. Use 2 for OpenGL ES 2.0 + /// If this method is called, it must be called before is called. public void SetEGLContextClientVersion(int version) { CheckRenderThreadState(); eglContextClientVersion = version; } + /// + /// Gets or sets the render mode. + /// public Rendermode RenderMode { get { return glThread.GetRenderMode(); } set { glThread.SetRenderMode(value); } } + /// + /// Request that the renderer render a frame. + /// public void RequestRender() { glThread.RequestRender(); } + /// + /// Invoked when the specified texture is updated through Android.Graphics.SurfaceTexture.UpdateTexImage. + /// + /// The surface texture. public void OnSurfaceTextureUpdated(SurfaceTexture surface) { //glThread.RequestRender(); } + /// + /// Invoked when a texture is ready for use. + /// + /// The surface texture. + /// The width of the surface. + /// The height of the surface. public void OnSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) { glThread.OnSurfaceCreated(); glThread.RequestRender(); } + /// + /// Invoked when the specified texture is about to be destroyed. + /// + /// The surface texture. + /// Returns if no rendering should happen inside the surface texture after this method is invoked, otherwise if the client needs to call Android.Graphics.SurfaceTexture.Release. Most applications should return . public bool OnSurfaceTextureDestroyed(SurfaceTexture surface) { // Surface will be destroyed when we return @@ -173,26 +266,48 @@ public bool OnSurfaceTextureDestroyed(SurfaceTexture surface) return true; } + /// + /// Invoked when the texture's buffers size changed. + /// + /// The surface texture. + /// The new width of the surface. + /// The new height of the surface. public void OnSurfaceTextureSizeChanged(SurfaceTexture surface, int w, int h) { glThread.OnWindowResize(w, h); } + /// + /// Inform the view that the activity is paused. + /// + /// The owner of this view must call this method when the activity is paused. Calling this method will pause the rendering thread. Must not be called before a renderer has been set. public void OnPause() { glThread.OnPause(); } + /// + /// Inform the view that the activity is resumed. + /// + /// The owner of this view must call this method when the activity is resumed. Calling this method will recreate the OpenGL display and resume the rendering thread. Must not be called before a renderer has been set. public void OnResume() { glThread.OnResume(); } + /// + /// Queue an action to be run on the GL rendering thread. + /// + /// The action to be run on the GL rendering thread. public void QueueEvent(Action r) { QueueEvent(new Java.Lang.Runnable(r)); } + /// + /// Queue a runnable to be run on the GL rendering thread. + /// + /// The runnable to be run on the GL rendering thread. public void QueueEvent(Java.Lang.IRunnable r) { glThread.QueueEvent(r); @@ -241,6 +356,18 @@ private void CheckRenderThreadState() } } + /// + /// Called when the layout bounds of a view changes due to layout processing. + /// + /// The view whose bounds have changed. + /// The new value of the view's left property. + /// The new value of the view's top property. + /// The new value of the view's right property. + /// The new value of the view's bottom property. + /// The previous value of the view's left property. + /// The previous value of the view's top property. + /// The previous value of the view's right property. + /// The previous value of the view's bottom property. public void OnLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) { OnSurfaceTextureSizeChanged(SurfaceTexture, right - left, bottom - top); @@ -261,16 +388,26 @@ private static void LogError(string message) Log.Error("GLTextureView", message); } + /// + /// An interface used to wrap a GL interface. + /// + /// Typically used for implementing debugging and tracing on top of the default GL interface. You would typically use this by creating your own class that implemented all the GL methods by delegating to another GL instance. Then you could add your own behavior before or after calling the delegate. All the wrapper would do was instantiate and return the wrapped GL instance. public interface IGLWrapper { IGL Wrap(IGL gl); } + /// + /// An interface for choosing an EGLConfig configuration from a list of potential configurations. + /// public interface IEGLConfigChooser { EGLConfig ChooseConfig(IEGL10 egl, EGLDisplay display); } + /// + /// An interface for customizing the eglCreateContext and eglDestroyContext calls. + /// public interface IEGLContextFactory { EGLContext CreateContext(IEGL10 egl, EGLDisplay display, EGLConfig eglConfig); @@ -278,6 +415,9 @@ public interface IEGLContextFactory void DestroyContext(IEGL10 egl, EGLDisplay display, EGLContext context); } + /// + /// An interface for customizing the eglCreateWindowSurface and eglDestroySurface calls. + /// public interface IEGLWindowSurfaceFactory { EGLSurface CreateWindowSurface(IEGL10 egl, EGLDisplay display, EGLConfig config, Java.Lang.Object nativeWindow); @@ -285,6 +425,14 @@ public interface IEGLWindowSurfaceFactory void DestroySurface(IEGL10 egl, EGLDisplay display, EGLSurface surface); } + /// + /// A generic renderer interface. + /// + /// The renderer is responsible for making OpenGL calls to render a frame. + /// Typically, clients create their + /// own classes that implement this interface, and then call + /// + /// to register the renderer with the . public interface IRenderer { void OnDrawFrame(IGL10 gl); diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKCanvasView.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKCanvasView.cs index d87bedfef0..352daabc0e 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKCanvasView.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKCanvasView.cs @@ -8,6 +8,9 @@ namespace SkiaSharp.Views.Android { + /// + /// A view that can be drawn on using SkiaSharp drawing commands. + /// public class SKCanvasView : View { private bool ignorePixelScaling; @@ -15,18 +18,33 @@ public class SKCanvasView : View private SurfaceFactory surfaceFactory; private float density; + /// + /// Simple constructor to use when creating a from code. + /// + /// The the view is running in, through which it can access the current theme, resources, etc. public SKCanvasView(Context context) : base(context) { Initialize(); } + /// + /// Constructor that is called when inflating a from XML. + /// + /// The the view is running in, through which it can access the current theme, resources, etc. + /// The attributes of the XML tag that is inflating the view. public SKCanvasView(Context context, IAttributeSet attrs) : base(context, attrs) { Initialize(attrs); } + /// + /// Perform inflation from XML and apply a class-specific base style from a theme attribute. + /// + /// The the view is running in, through which it can access the current theme, resources, etc. + /// The attributes of the XML tag that is inflating the view. + /// An attribute in the current theme that contains a reference to a style resource that supplies default values for the view. Can be 0 to not look for defaults. public SKCanvasView(Context context, IAttributeSet attrs, int defStyleAttr) : base(context, attrs, defStyleAttr) { @@ -61,8 +79,16 @@ private void Initialize(IAttributeSet attrs = null) } } + /// + /// Gets the current canvas size. + /// + /// The canvas size may be different to the view size as a result of the current device's pixel density. public SKSize CanvasSize { get; private set; } + /// + /// Gets or sets a value indicating whether the drawing canvas should be resized on high resolution displays. + /// + /// By default, when false, the canvas is resized to 1 canvas pixel per display pixel. When true, the canvas is resized to device independent pixels, and then stretched to fill the view. Although performance is improved and all objects are the same size on different display densities, blurring and pixelation may occur. public bool IgnorePixelScaling { get => ignorePixelScaling; @@ -124,6 +150,26 @@ protected override void OnSizeChanged(int w, int h, int oldw, int oldh) surfaceFactory.UpdateCanvasSize(w, h); } + /// + /// Occurs when the the canvas needs to be redrawn. + /// + /// There are two ways to draw on this surface: by overriding the + /// + /// method, or by attaching a handler to the + /// + /// event. + /// ## Examples + /// ```csharp + /// SKCanvasView myView = ...; + /// myView.PaintSurface += (sender, e) => { + /// var surface = e.Surface; + /// var surfaceWidth = e.Info.Width; + /// var surfaceHeight = e.Info.Height; + /// var canvas = surface.Canvas; + /// // draw on the canvas + /// canvas.Flush(); + /// }; + /// ``` public event EventHandler PaintSurface; protected virtual void OnPaintSurface(SKPaintSurfaceEventArgs e) diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLSurfaceView.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLSurfaceView.cs index 27ecc00152..1978803e29 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLSurfaceView.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLSurfaceView.cs @@ -6,16 +6,28 @@ namespace SkiaSharp.Views.Android { + /// + /// An implementation of that uses the dedicated surface for displaying a hardware-accelerated . + /// public class SKGLSurfaceView : GLSurfaceView { private SKGLSurfaceViewRenderer renderer; + /// + /// Simple constructor to use when creating a from code. + /// + /// The the view is running in, through which it can access the current theme, resources, etc. public SKGLSurfaceView(Context context) : base(context) { Initialize(); } + /// + /// Constructor that is called when inflating a from XML. + /// + /// The the view is running in, through which it can access the current theme, resources, etc. + /// The attributes of the XML tag that is inflating the view. public SKGLSurfaceView(Context context, IAttributeSet attrs) : base(context, attrs) { @@ -31,10 +43,41 @@ private void Initialize() SetRenderer(renderer); } + /// + /// Gets the current canvas size. + /// + /// The canvas size may be different to the view size as a result of the current device's pixel density. public SKSize CanvasSize => renderer.CanvasSize; + /// + /// Gets the current GPU context. + /// public GRContext GRContext => renderer.GRContext; + /// + /// Occurs when the surface needs to be redrawn. + /// + /// There are two ways to draw on this surface: by overriding the + /// + /// method, or by attaching a handler to the + /// + /// event. + /// > [!NOTE] + /// > If a version of SkiaSharp prior to version v1.68.x is being used, then + /// > renderers are used instead of events. See + /// > and + /// > . + /// ## Examples + /// ```csharp + /// myView.PaintSurface += (sender, e) => { + /// var surface = e.Surface; + /// var surfaceWidth = e.BackendRenderTarget.Width; + /// var surfaceHeight = e.BackendRenderTarget.Height; + /// var canvas = surface.Canvas; + /// // draw on the canvas + /// canvas.Flush (); + /// }; + /// ``` public event EventHandler PaintSurface; protected virtual void OnPaintSurface(SKPaintGLSurfaceEventArgs e) diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLSurfaceViewRenderer.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLSurfaceViewRenderer.cs index ee137d8465..df313fdf21 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLSurfaceViewRenderer.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLSurfaceViewRenderer.cs @@ -7,6 +7,9 @@ namespace SkiaSharp.Views.Android { + /// + /// An abstract implementation of that provides a for drawing. + /// public abstract class SKGLSurfaceViewRenderer : Java.Lang.Object, GLSurfaceView.IRenderer { private const SKColorType colorType = SKColorType.Rgba8888; @@ -21,14 +24,25 @@ public abstract class SKGLSurfaceViewRenderer : Java.Lang.Object, GLSurfaceView. private SKSizeI lastSize; private SKSizeI newSize; + /// + /// Gets the current canvas size. + /// + /// The canvas size may be different to the view size as a result of the current device's pixel density. public SKSize CanvasSize => lastSize; + /// + /// Gets the current GPU context. + /// public GRContext GRContext => context; protected virtual void OnPaintSurface(SKPaintGLSurfaceEventArgs e) { } + /// + /// Called to draw the current frame. + /// + /// The GL interface. public void OnDrawFrame(IGL10 gl) { GLES20.GlClear(GLES20.GlColorBufferBit | GLES20.GlDepthBufferBit | GLES20.GlStencilBufferBit); @@ -86,6 +100,12 @@ public void OnDrawFrame(IGL10 gl) context.Flush(); } + /// + /// Called when the surface changed size. + /// + /// The GL interface. + /// The new surface width. + /// The new surface height. public void OnSurfaceChanged(IGL10 gl, int width, int height) { GLES20.GlViewport(0, 0, width, height); @@ -94,6 +114,11 @@ public void OnSurfaceChanged(IGL10 gl, int width, int height) newSize = new SKSizeI(width, height); } + /// + /// Called when the surface is created or recreated. + /// + /// The GL interface. + /// The EGLConfig of the created surface. public void OnSurfaceCreated(IGL10 gl, EGLConfig config) { } diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureView.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureView.cs index 547ffae11f..2b09a85b63 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureView.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureView.cs @@ -12,6 +12,9 @@ namespace SkiaSharp.Views.UWP namespace SkiaSharp.Views.Android #endif { + /// + /// An implementation of that uses the dedicated surface for displaying a hardware-accelerated . + /// #if HAS_UNO internal #else @@ -21,12 +24,21 @@ partial class SKGLTextureView : GLTextureView { private SKGLTextureViewRenderer renderer; + /// + /// Simple constructor to use when creating a from code. + /// + /// The the view is running in, through which it can access the current theme, resources, etc. public SKGLTextureView(Context context) : base(context) { Initialize(); } + /// + /// Constructor that is called when inflating a from XML. + /// + /// The the view is running in, through which it can access the current theme, resources, etc. + /// The attributes of the XML tag that is inflating the view. public SKGLTextureView(Context context, IAttributeSet attrs) : base(context, attrs) { @@ -42,10 +54,41 @@ private void Initialize() SetRenderer(renderer); } + /// + /// Gets the current canvas size. + /// + /// The canvas size may be different to the view size as a result of the current device's pixel density. public SKSize CanvasSize => renderer.CanvasSize; + /// + /// Gets the current GPU context. + /// public GRContext GRContext => renderer.GRContext; + /// + /// Occurs when the surface needs to be redrawn. + /// + /// There are two ways to draw on this surface: by overriding the + /// + /// method, or by attaching a handler to the + /// + /// event. + /// > [!NOTE] + /// > If a version of SkiaSharp prior to version v1.68.x is being used, then + /// > renderers are used instead of events. See + /// > and + /// > . + /// ## Examples + /// ```csharp + /// myView.PaintSurface += (sender, e) => { + /// var surface = e.Surface; + /// var surfaceWidth = e.BackendRenderTarget.Width; + /// var surfaceHeight = e.BackendRenderTarget.Height; + /// var canvas = surface.Canvas; + /// // draw on the canvas + /// canvas.Flush (); + /// }; + /// ``` public event EventHandler PaintSurface; protected virtual void OnPaintSurface(SKPaintGLSurfaceEventArgs e) diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureViewRenderer.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureViewRenderer.cs index a727f3f2df..c7b32b2277 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureViewRenderer.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureViewRenderer.cs @@ -13,6 +13,9 @@ namespace SkiaSharp.Views.UWP namespace SkiaSharp.Views.Android #endif { + /// + /// An abstract implementation of that provides a for drawing. + /// #if HAS_UNO internal #else @@ -32,14 +35,25 @@ abstract partial class SKGLTextureViewRenderer : Java.Lang.Object, GLTextureView private SKSizeI lastSize; private SKSizeI newSize; + /// + /// Gets the current canvas size. + /// + /// The canvas size may be different to the view size as a result of the current device's pixel density. public SKSize CanvasSize => lastSize; + /// + /// Gets the current GPU context. + /// public GRContext GRContext => context; protected virtual void OnPaintSurface(SKPaintGLSurfaceEventArgs e) { } + /// + /// Called to draw the current frame. + /// + /// The GL interface. public void OnDrawFrame(IGL10 gl) { GLES10.GlClear(GLES10.GlColorBufferBit | GLES10.GlDepthBufferBit | GLES10.GlStencilBufferBit); @@ -97,6 +111,12 @@ public void OnDrawFrame(IGL10 gl) context.Flush(); } + /// + /// Called when the surface changed size. + /// + /// The GL interface. + /// The new surface width. + /// The new surface height. public void OnSurfaceChanged(IGL10 gl, int width, int height) { GLES20.GlViewport(0, 0, width, height); @@ -105,11 +125,19 @@ public void OnSurfaceChanged(IGL10 gl, int width, int height) newSize = new SKSizeI(width, height); } + /// + /// Called when the surface is created. + /// + /// The GL interface. + /// The EGLConfig of the created surface. public void OnSurfaceCreated(IGL10 gl, EGLConfig config) { FreeContext(); } + /// + /// Called when the surface has been lost. + /// public void OnSurfaceDestroyed() { FreeContext(); diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKLockedSurface.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKLockedSurface.cs index f1b8022755..eae2abf2c1 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKLockedSurface.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKLockedSurface.cs @@ -2,6 +2,9 @@ namespace SkiaSharp.Views.Android { + /// + /// A container for a locked canvas for a . + /// public class SKLockedSurface { private readonly Canvas canvas; @@ -17,10 +20,19 @@ internal SKLockedSurface(Canvas canvas, SurfaceFactory surfaceFactory) ImageInfo = info; } + /// + /// Gets information about the locked surface. + /// public SKImageInfo ImageInfo { get; } + /// + /// Gets the locked surface. + /// public SKSurface Surface { get; } + /// + /// Gets the canvas from the locked surface. + /// public SKCanvas Canvas => Surface.Canvas; internal Canvas Post() diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKSurfaceView.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKSurfaceView.cs index 434e4fbf01..43f0259215 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKSurfaceView.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKSurfaceView.cs @@ -5,22 +5,40 @@ namespace SkiaSharp.Views.Android { + /// + /// An implementation of that uses the dedicated surface for displaying a hardware-accelerated . + /// public class SKSurfaceView : SurfaceView, ISurfaceHolderCallback { private SurfaceFactory surfaceFactory; + /// + /// Simple constructor to use when creating a from code. + /// + /// The the view is running in, through which it can access the current theme, resources, etc. public SKSurfaceView(Context context) : base(context) { Initialize(); } + /// + /// Constructor that is called when inflating a from XML. + /// + /// The the view is running in, through which it can access the current theme, resources, etc. + /// The attributes of the XML tag that is inflating the view. public SKSurfaceView(Context context, IAttributeSet attrs) : base(context, attrs) { Initialize(); } + /// + /// Perform inflation from XML and apply a class-specific base style from a theme attribute. + /// + /// The the view is running in, through which it can access the current theme, resources, etc. + /// The attributes of the XML tag that is inflating the view. + /// An attribute in the current theme that contains a reference to a style resource that supplies default values for the view. Can be 0 to not look for defaults. public SKSurfaceView(Context context, IAttributeSet attrs, int defStyle) : base(context, attrs, defStyle) { @@ -33,21 +51,40 @@ private void Initialize() Holder.AddCallback(this); } + /// + /// Gets the current canvas size. + /// + /// The canvas size may be different to the view size as a result of the current device's pixel density. public SKSize CanvasSize => surfaceFactory.Info.Size; // ISurfaceHolderCallback + /// + /// This is called immediately after any structural changes (format or size) have been made to the surface. + /// + /// The whose surface has changed. + /// The new of the surface. + /// The new width of the surface. + /// The new height of the surface. public virtual void SurfaceChanged(ISurfaceHolder holder, Format format, int width, int height) { surfaceFactory.UpdateCanvasSize(width, height); } + /// + /// This is called immediately after the surface is first created + /// + /// The whose surface is being created. public virtual void SurfaceCreated(ISurfaceHolder holder) { var surfaceFrame = Holder.SurfaceFrame.ToSKRect(); surfaceFactory.UpdateCanvasSize(surfaceFrame.Width, surfaceFrame.Height); } + /// + /// This is called immediately before a surface is being destroyed + /// + /// The whose surface is being destroyed. public virtual void SurfaceDestroyed(ISurfaceHolder holder) { surfaceFactory.Dispose(); @@ -55,6 +92,10 @@ public virtual void SurfaceDestroyed(ISurfaceHolder holder) // lock / unlock the SKSurface + /// + /// Start editing the pixels in the surface. The returned can be used to get the surface for drawing into the surface's bitmap. + /// + /// The with the locked surface. public SKLockedSurface LockSurface() { var canvas = Holder.LockCanvas(); @@ -65,6 +106,10 @@ public SKLockedSurface LockSurface() return new SKLockedSurface(canvas, surfaceFactory); } + /// + /// Finish editing pixels in the surface. After this call, the surface's current pixels will be shown on the screen, but its content is lost. + /// + /// The with the locked surface. public void UnlockSurfaceAndPost(SKLockedSurface surface) { var canvas = surface.Post(); From 0d12f09bc0084d02fad74ec680f1d7de95257657 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Fri, 5 Sep 2025 17:13:09 +0200 Subject: [PATCH 13/35] ios --- .../Platform/iOS/SKCanvasView.cs | 57 +++++++++++++++++++ .../SkiaSharp.Views/Platform/iOS/SKGLLayer.cs | 43 ++++++++++++++ .../SkiaSharp.Views/Platform/iOS/SKGLView.cs | 56 ++++++++++++++++++ .../Platform/iOS/iOSExtensions.cs | 52 +++++++++++++++++ 4 files changed, 208 insertions(+) diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKCanvasView.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKCanvasView.cs index 0d26378ba6..bfe6bac57b 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKCanvasView.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKCanvasView.cs @@ -10,6 +10,9 @@ namespace SkiaSharp.Views.tvOS namespace SkiaSharp.Views.iOS #endif { + /// + /// A UIKit view that can be drawn on using SkiaSharp drawing commands. + /// [Register(nameof(SKCanvasView))] [DesignTimeVisible(true)] public class SKCanvasView : UIView, IComponent @@ -30,12 +33,19 @@ event EventHandler IComponent.Disposed private bool ignorePixelScaling; // created in code + /// + /// Default constructor that initializes a new instance of . + /// public SKCanvasView() { Initialize(); } // created in code + /// + /// Initializes the with the specified frame. + /// + /// The frame used by the view, expressed in tvOS points. public SKCanvasView(CGRect frame) : base(frame) { @@ -43,12 +53,19 @@ public SKCanvasView(CGRect frame) } // created via designer + /// + /// A constructor used when creating managed representations of unmanaged objects; Called by the runtime. + /// + /// The pointer (handle) to the unmanaged object. public SKCanvasView(IntPtr p) : base(p) { } // created via designer + /// + /// Called after the object has been loaded from the nib file. Overriders must call the base method. + /// public override void AwakeFromNib() { Initialize(); @@ -64,8 +81,16 @@ private void Initialize() drawable = new SKCGSurfaceFactory(); } + /// + /// Gets the current canvas size. + /// + /// The canvas size may be different to the view size as a result of the current device's pixel density. public SKSize CanvasSize { get; private set; } + /// + /// Gets or sets a value indicating whether the drawing canvas should be resized on high resolution displays. + /// + /// By default, when false, the canvas is resized to 1 canvas pixel per display pixel. When true, the canvas is resized to device independent pixels, and then stretched to fill the view. Although performance is improved and all objects are the same size on different display densities, blurring and pixelation may occur. public bool IgnorePixelScaling { get => ignorePixelScaling; @@ -76,6 +101,10 @@ public bool IgnorePixelScaling } } + /// + /// Draws the view within the passed-in rectangle. + /// + /// The rectangle to draw. public override void Draw(CGRect rect) { base.Draw(rect); @@ -114,6 +143,7 @@ public override void Draw(CGRect rect) drawable.DrawSurface(ctx, Bounds, info, surface); } + /// public override void WillMoveToWindow(UIWindow window) { if (drawable != null) @@ -128,6 +158,30 @@ public override void WillMoveToWindow(UIWindow window) base.WillMoveToWindow(window); } + /// + /// Occurs when the the canvas needs to be redrawn. + /// + /// There are two ways to draw on this surface: by overriding the + /// + /// method, or by attaching a handler to the + /// + /// event. + /// > [!NOTE] + /// > If a version of SkiaSharp prior to version v1.68.x is being used, then the + /// > + /// > method should be overridden instead of + /// > . + /// ## Examples + /// ```csharp + /// myView.PaintSurface += (sender, e) => { + /// var surface = e.Surface; + /// var surfaceWidth = e.Info.Width; + /// var surfaceHeight = e.Info.Height; + /// var canvas = surface.Canvas; + /// // draw on the canvas + /// canvas.Flush (); + /// }; + /// ``` public event EventHandler PaintSurface; protected virtual void OnPaintSurface(SKPaintSurfaceEventArgs e) @@ -135,6 +189,9 @@ protected virtual void OnPaintSurface(SKPaintSurfaceEventArgs e) PaintSurface?.Invoke(this, e); } + /// + /// Lays out subviews. + /// public override void LayoutSubviews() { base.LayoutSubviews(); diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLLayer.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLLayer.cs index f27b363442..4948cdd7c0 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLLayer.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLLayer.cs @@ -14,6 +14,9 @@ namespace SkiaSharp.Views.tvOS namespace SkiaSharp.Views.iOS #endif { + /// + /// A CoreAnimation OpenGL layer that can be drawn on using SkiaSharp drawing commands. + /// [ObsoletedOSPlatform("tvos12.0", "Use 'Metal' instead.")] [ObsoletedOSPlatform("ios12.0", "Use 'Metal' instead.")] [SupportedOSPlatform("ios")] @@ -38,15 +41,28 @@ public class SKGLLayer : CAEAGLLayer private SKSizeI lastSize; private bool recreateSurface = true; + /// + /// Default constructor that initializes a new instance of . + /// public SKGLLayer() { Opaque = true; } + /// + /// Gets the current canvas size. + /// + /// The canvas size may be different to the view size as a result of the current device's pixel density. public SKSize CanvasSize => lastSize; + /// + /// Gets the current GPU context. + /// public GRContext GRContext => context; + /// + /// Redraws the layer's contents. + /// public virtual void Render() { if (glContext == null) @@ -113,6 +129,9 @@ public virtual void Render() EAGLContext.SetCurrentContext(null); } + /// + /// Gets or sets the layer's frame rectangle. + /// public override CGRect Frame { get { return base.Frame; } @@ -127,6 +146,30 @@ public override CGRect Frame } } + /// + /// Occurs when the the canvas needs to be redrawn. + /// + /// There are two ways to draw on this surface: by overriding the + /// + /// method, or by attaching a handler to the + /// + /// event. + /// > [!NOTE] + /// > If a version of SkiaSharp prior to version v1.68.x is being used, then the + /// > + /// > method should be overridden instead of + /// > . + /// ## Examples + /// ```csharp + /// myLayer.PaintSurface += (sender, e) => { + /// var surface = e.Surface; + /// var surfaceWidth = e.BackendRenderTarget.Width; + /// var surfaceHeight = e.BackendRenderTarget.Height; + /// var canvas = surface.Canvas; + /// // draw on the canvas + /// canvas.Flush (); + /// }; + /// ``` public event EventHandler PaintSurface; protected virtual void OnPaintSurface(SKPaintGLSurfaceEventArgs e) diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLView.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLView.cs index de4b9d2455..1b3fdf1f6b 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLView.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLView.cs @@ -20,6 +20,9 @@ namespace SkiaSharp.Views.tvOS namespace SkiaSharp.Views.iOS #endif { + /// + /// A hardware-accelerated view that can be drawn on using SkiaSharp drawing commands. + /// [ObsoletedOSPlatform("ios12.0", "Use 'Metal' instead.")] [ObsoletedOSPlatform("tvos12.0", "Use 'Metal' instead.")] [SupportedOSPlatform("ios")] @@ -59,12 +62,19 @@ event EventHandler IComponent.Disposed private SKSizeI lastSize; // created in code + /// + /// Default constructor that initializes a new instance of . + /// public SKGLView() { Initialize(); } // created in code + /// + /// Initializes the with the specified frame. + /// + /// The frame used by the view, expressed in tvOS points. public SKGLView(CGRect frame) : base(frame) { @@ -72,12 +82,19 @@ public SKGLView(CGRect frame) } // created via designer + /// + /// A constructor used when creating managed representations of unmanaged objects; Called by the runtime. + /// + /// The pointer (handle) to the unmanaged object. public SKGLView(IntPtr p) : base(p) { } // created via designer + /// + /// Called after the object has been loaded from the nib file. Overriders must call the base method. + /// public override void AwakeFromNib() { Initialize(); @@ -101,10 +118,22 @@ private void Initialize() Delegate = this; } + /// + /// Gets the current canvas size. + /// + /// The canvas size may be different to the view size as a result of the current device's pixel density. public SKSize CanvasSize => lastSize; + /// + /// Gets the current GPU context. + /// public GRContext GRContext => context; + /// + /// Draws the view within the passed-in rectangle. + /// + /// The view to draw on. + /// The rectangle to draw. public new void DrawInRect(GLKView view, CGRect rect) { if (designMode) @@ -164,6 +193,30 @@ private void Initialize() context.Flush(); } + /// + /// Occurs when the surface needs to be redrawn. + /// + /// There are two ways to draw on this surface: by overriding the + /// + /// method, or by attaching a handler to the + /// + /// event. + /// > [!NOTE] + /// > If a version of SkiaSharp prior to version v1.68.x is being used, then the + /// > + /// > method should be overridden instead of + /// > . + /// ## Examples + /// ```csharp + /// myView.PaintSurface += (sender, e) => { + /// var surface = e.Surface; + /// var surfaceWidth = e.BackendRenderTarget.Width; + /// var surfaceHeight = e.BackendRenderTarget.Height; + /// var canvas = surface.Canvas; + /// // draw on the canvas + /// canvas.Flush (); + /// }; + /// ``` public event EventHandler PaintSurface; protected virtual void OnPaintSurface(SKPaintGLSurfaceEventArgs e) @@ -171,6 +224,9 @@ protected virtual void OnPaintSurface(SKPaintGLSurfaceEventArgs e) PaintSurface?.Invoke(this, e); } + /// + /// Gets or sets the view's frame rectangle. + /// public override CGRect Frame { get { return base.Frame; } diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/iOSExtensions.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/iOSExtensions.cs index 69c62afe82..432f6ded3a 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/iOSExtensions.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/iOSExtensions.cs @@ -8,10 +8,18 @@ namespace SkiaSharp.Views.tvOS namespace SkiaSharp.Views.iOS #endif { + /// + /// Various extension methods to convert between SkiaSharp types and UIKit types. + /// public static class iOSExtensions { // UIColor + /// + /// Converts a UIKit color into a SkiaSharp color. + /// + /// The UIKit color + /// Returns a SkiaSharp color. public static SKColor ToSKColor(this UIColor color) { nfloat r, g, b, a; @@ -19,6 +27,7 @@ public static SKColor ToSKColor(this UIColor color) return new SKColor((byte)(r * 255), (byte)(g * 255), (byte)(b * 255), (byte)(a * 255)); } + /// public static SKColorF ToSKColorF(this UIColor color) { nfloat r, g, b, a; @@ -26,14 +35,25 @@ public static SKColorF ToSKColorF(this UIColor color) return new SKColorF((float)r, (float)g, (float)b, (float)a); } + /// + /// Converts a SkiaSharp color into a UIKit color. + /// + /// The SkiaSharp color + /// Returns a UIKit color. public static UIColor ToUIColor(this SKColor color) => UIColor.FromRGBA(color.Red, color.Green, color.Blue, color.Alpha); + /// public static UIColor ToUIColor(this SKColorF color) => UIColor.FromRGBA(color.Red, color.Green, color.Blue, color.Alpha); // UIImage + /// + /// Converts a UIKit image into a SkiaSharp image. + /// + /// The UIKit image. + /// Returns a copy of the image data as a SkiaSharp image. public static SKImage ToSKImage(this UIImage uiImage) { var cgImage = uiImage.CGImage; @@ -49,6 +69,11 @@ public static SKImage ToSKImage(this UIImage uiImage) return null; } + /// + /// Converts a UIKit image into a SkiaSharp bitmap. + /// + /// The UIKit image. + /// Returns a copy of the image data as a SkiaSharp bitmap. public static SKBitmap ToSKBitmap(this UIImage uiImage) { var cgImage = uiImage.CGImage; @@ -64,6 +89,12 @@ public static SKBitmap ToSKBitmap(this UIImage uiImage) return null; } + /// + /// Converts a SkiaSharp pixmap into a UIKit image. + /// + /// The UIKit image. + /// The SkiaSharp pixmap to hold the copy of the image data. + /// Returns if the copy was successful, otherwise . public static bool ToSKPixmap(this UIImage uiImage, SKPixmap pixmap) { var cgImage = uiImage.CGImage; @@ -87,12 +118,23 @@ public static UIImage ToUIImage(this SKPicture skiaPicture, SKSizeI dimensions, return new UIImage(cgImage, scale, orientation); } + /// + /// Converts a SkiaSharp picture into a UIKit image. + /// + /// The SkiaSharp picture. + /// The dimensions of the picture. + /// Returns a copy of the picture as a UIKit image. public static UIImage ToUIImage(this SKPicture skiaPicture, SKSizeI dimensions) { var cgImage = skiaPicture.ToCGImage(dimensions); return new UIImage(cgImage); } + /// + /// Converts a SkiaSharp image into a UIKit image. + /// + /// The SkiaSharp image. + /// Returns a copy of the image data as a UIKit image. public static UIImage ToUIImage(this SKImage skiaImage) { var cgImage = skiaImage.ToCGImage(); @@ -105,6 +147,11 @@ public static UIImage ToUIImage(this SKPixmap skiaPixmap, nfloat scale, UIImageO return new UIImage(cgImage, scale, orientation); } + /// + /// Converts a SkiaSharp pixmap into a UIKit image. + /// + /// The SkiaSharp pixmap. + /// Returns a copy of the pixel data as a UIKit image. public static UIImage ToUIImage(this SKPixmap skiaPixmap) { var cgImage = skiaPixmap.ToCGImage(); @@ -117,6 +164,11 @@ public static UIImage ToUIImage(this SKBitmap skiaBitmap, nfloat scale, UIImageO return new UIImage(cgImage, scale, orientation); } + /// + /// Converts a SkiaSharp bitmap into a UIKit image. + /// + /// The SkiaSharp bitmap. + /// Returns a copy of the bitmap data as a UIKit image. public static UIImage ToUIImage(this SKBitmap skiaBitmap) { var cgImage = skiaBitmap.ToCGImage(); From 19b979af4e14111a38549ee0e95cb194061f336c Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Fri, 5 Sep 2025 17:13:16 +0200 Subject: [PATCH 14/35] macos --- .../Platform/macOS/MacExtensions.cs | 52 +++++++++++++++++ .../Platform/macOS/SKCanvasView.cs | 53 +++++++++++++++++ .../Platform/macOS/SKGLLayer.cs | 48 +++++++++++++++ .../Platform/macOS/SKGLView.cs | 58 +++++++++++++++++++ 4 files changed, 211 insertions(+) diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/MacExtensions.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/MacExtensions.cs index 5a93f1e2c6..fb40b0dd61 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/MacExtensions.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/MacExtensions.cs @@ -5,10 +5,18 @@ namespace SkiaSharp.Views.Mac { + /// + /// Various extension methods to convert between SkiaSharp types and AppKit types. + /// public static class MacExtensions { // NSColor + /// + /// Converts a AppKit color into an SkiaSharp color. + /// + /// The AppKit color. + /// Returns a SkiaSharp color. public static SKColor ToSKColor(this NSColor color) { nfloat r, g, b, a; @@ -16,6 +24,7 @@ public static SKColor ToSKColor(this NSColor color) return new SKColor((byte)(r * 255), (byte)(g * 255), (byte)(b * 255), (byte)(a * 255)); } + /// public static SKColorF ToSKColorF(this NSColor color) { nfloat r, g, b, a; @@ -23,15 +32,26 @@ public static SKColorF ToSKColorF(this NSColor color) return new SKColorF((float)r, (float)g, (float)b, (float)a); } + /// + /// Converts a SkiaSharp color into an AppKit color. + /// + /// The SkiaSharp color. + /// Return an AppKit color. public static NSColor ToNSColor(this SKColor color) => NSColor.FromRgba(color.Red, color.Green, color.Blue, color.Alpha); + /// public static NSColor ToNSColor(this SKColorF color) => NSColor.FromRgba(color.Red, color.Green, color.Blue, color.Alpha); // NSImage + /// + /// Converts a AppKit image into a SkiaSharp image. + /// + /// The AppKit image. + /// Returns a copy of the image data as a SkiaSharp image. public static SKImage ToSKImage(this NSImage nsImage) { var cgImage = nsImage.CGImage; @@ -42,6 +62,11 @@ public static SKImage ToSKImage(this NSImage nsImage) return null; } + /// + /// Converts a AppKit image into a SkiaSharp bitmap. + /// + /// The AppKit image. + /// Returns a copy of the image data as a SkiaSharp bitmap. public static SKBitmap ToSKBitmap(this NSImage nsImage) { var cgImage = nsImage.CGImage; @@ -52,6 +77,12 @@ public static SKBitmap ToSKBitmap(this NSImage nsImage) return null; } + /// + /// Converts a SkiaSharp pixmap into a AppKit image. + /// + /// The AppKit image. + /// The SkiaSharp pixmap to hold the copy of the image data. + /// Returns if the copy was successful, otherwise . public static bool ToSKPixmap(this NSImage nsImage, SKPixmap pixmap) { var cgImage = nsImage.CGImage; @@ -63,24 +94,45 @@ public static bool ToSKPixmap(this NSImage nsImage, SKPixmap pixmap) return false; } + /// + /// Converts a SkiaSharp picture into a AppKit image. + /// + /// The SkiaSharp picture. + /// The dimensions of the picture. + /// Returns a copy of the picture as a AppKit image. public static NSImage ToNSImage(this SKPicture skiaPicture, SKSizeI dimensions) { var cgImage = skiaPicture.ToCGImage(dimensions); return new NSImage(cgImage, CGSize.Empty); } + /// + /// Converts a SkiaSharp image into a AppKit image. + /// + /// The SkiaSharp image. + /// Returns a copy of the image data as a AppKit image. public static NSImage ToNSImage(this SKImage skiaImage) { var cgImage = skiaImage.ToCGImage(); return new NSImage(cgImage, CGSize.Empty); } + /// + /// Converts a SkiaSharp pixmap into a AppKit image. + /// + /// The SkiaSharp pixmap. + /// Returns a copy of the pixel data as a AppKit image. public static NSImage ToNSImage(this SKPixmap skiaPixmap) { var cgImage = skiaPixmap.ToCGImage(); return new NSImage(cgImage, CGSize.Empty); } + /// + /// Converts a SkiaSharp bitmap into a AppKit image. + /// + /// The SkiaSharp bitmap. + /// Returns a copy of the bitmap data as a AppKit image. public static NSImage ToNSImage(this SKBitmap skiaBitmap) { var cgImage = skiaBitmap.ToCGImage(); diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKCanvasView.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKCanvasView.cs index ff8fda7d8d..915ed08747 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKCanvasView.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKCanvasView.cs @@ -6,6 +6,9 @@ namespace SkiaSharp.Views.Mac { + /// + /// A view that can be drawn on using SkiaSharp drawing commands. + /// [Register(nameof(SKCanvasView))] [DesignTimeVisible(true)] public class SKCanvasView : NSView @@ -14,12 +17,19 @@ public class SKCanvasView : NSView private bool ignorePixelScaling; // created in code + /// + /// Default constructor that initializes a new instance of . + /// public SKCanvasView() { Initialize(); } // created in code + /// + /// Initializes the with the specified frame. + /// + /// The frame used by the view. public SKCanvasView(CGRect frame) : base(frame) { @@ -27,12 +37,19 @@ public SKCanvasView(CGRect frame) } // created via designer + /// + /// A constructor used when creating managed representations of unmanaged objects; Called by the runtime. + /// + /// The pointer (handle) to the unmanaged object. public SKCanvasView(IntPtr p) : base(p) { } // created via designer + /// + /// Called after the object has been loaded from the nib file. Overriders must call the base method. + /// public override void AwakeFromNib() { Initialize(); @@ -43,8 +60,16 @@ private void Initialize() drawable = new SKCGSurfaceFactory(); } + /// + /// Gets the current canvas size. + /// + /// The canvas size may be different to the view size as a result of the current device's pixel density. public SKSize CanvasSize { get; private set; } + /// + /// Gets or sets a value indicating whether the drawing canvas should be resized on high resolution displays. + /// + /// By default, when false, the canvas is resized to 1 canvas pixel per display pixel. When true, the canvas is resized to device independent pixels, and then stretched to fill the view. Although performance is improved and all objects are the same size on different display densities, blurring and pixelation may occur. public bool IgnorePixelScaling { get => ignorePixelScaling; @@ -55,6 +80,30 @@ public bool IgnorePixelScaling } } + /// + /// Occurs when the the canvas needs to be redrawn. + /// + /// There are two ways to draw on this surface: by overriding the + /// + /// method, or by attaching a handler to the + /// + /// event. + /// > [!NOTE] + /// > If a version of SkiaSharp prior to version v1.68.x is being used, then the + /// > + /// > method should be overridden instead of + /// > . + /// ## Examples + /// ```csharp + /// myView.PaintSurface += (sender, e) => { + /// var surface = e.Surface; + /// var surfaceWidth = e.Info.Width; + /// var surfaceHeight = e.Info.Height; + /// var canvas = surface.Canvas; + /// // draw on the canvas + /// canvas.Flush (); + /// }; + /// ``` public event EventHandler PaintSurface; protected virtual void OnPaintSurface(SKPaintSurfaceEventArgs e) @@ -62,6 +111,10 @@ protected virtual void OnPaintSurface(SKPaintSurfaceEventArgs e) PaintSurface?.Invoke(this, e); } + /// + /// Draws the view within the passed-in rectangle. + /// + /// The rectangle to draw. public override void DrawRect(CGRect dirtyRect) { base.DrawRect(dirtyRect); diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLLayer.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLLayer.cs index e584ee736b..3d2a986fb0 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLLayer.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLLayer.cs @@ -7,6 +7,9 @@ namespace SkiaSharp.Views.Mac { + /// + /// A CoreAnimation OpenGL layer that can be drawn on using SkiaSharp drawing commands. + /// public class SKGLLayer : CAOpenGLLayer { private const SKColorType colorType = SKColorType.Rgba8888; @@ -20,16 +23,50 @@ public class SKGLLayer : CAOpenGLLayer private SKSizeI lastSize; + /// + /// Default constructor that initializes a new instance of . + /// public SKGLLayer() { Opaque = true; NeedsDisplayOnBoundsChange = true; } + /// + /// Gets the current canvas size. + /// + /// The canvas size may be different to the view size as a result of the current device's pixel density. public SKSize CanvasSize => lastSize; + /// + /// Gets the current GPU context. + /// public GRContext GRContext => context; + /// + /// Occurs when the the canvas needs to be redrawn. + /// + /// There are two ways to draw on this surface: by overriding the + /// + /// method, or by attaching a handler to the + /// + /// event. + /// > [!NOTE] + /// > If a version of SkiaSharp prior to version v1.68.x is being used, then the + /// > + /// > method should be overridden instead of + /// > . + /// ## Examples + /// ```csharp + /// myLayer.PaintSurface += (sender, e) => { + /// var surface = e.Surface; + /// var surfaceWidth = e.BackendRenderTarget.Width; + /// var surfaceHeight = e.BackendRenderTarget.Height; + /// var canvas = surface.Canvas; + /// // draw on the canvas + /// canvas.Flush (); + /// }; + /// ``` public event EventHandler PaintSurface; protected virtual void OnPaintSurface(SKPaintGLSurfaceEventArgs e) @@ -37,6 +74,13 @@ protected virtual void OnPaintSurface(SKPaintGLSurfaceEventArgs e) PaintSurface?.Invoke(this, e); } + /// + /// Draws the OpenGL content for the specified time. + /// + /// The rendering context in to which the OpenGL content should be rendered. + /// The pixel format used when the context was created. + /// The current layer time. + /// The display timestamp associated with the time interval. Can be . public override void DrawInCGLContext(CGLContext glContext, CGLPixelFormat pixelFormat, double timeInterval, ref CVTimeStamp timeStamp) { CGLContext.CurrentContext = glContext; @@ -97,6 +141,10 @@ public override void DrawInCGLContext(CGLContext glContext, CGLPixelFormat pixel base.DrawInCGLContext(glContext, pixelFormat, timeInterval, ref timeStamp); } + /// + /// Releases the specified rendering context. + /// + /// The rendering context to release. public override void Release(CGLContext glContext) { context.Dispose(); diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLView.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLView.cs index ae3428c93e..d636fccb02 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLView.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLView.cs @@ -13,6 +13,9 @@ namespace SkiaSharp.Views.UWP namespace SkiaSharp.Views.Mac #endif { + /// + /// A hardware-accelerated view that can be drawn on using SkiaSharp drawing commands. + /// [Register(nameof(SKGLView))] [DesignTimeVisible(true)] #if HAS_UNO @@ -35,12 +38,19 @@ partial class SKGLView : NSOpenGLView private SKSizeI newSize; // created in code + /// + /// Default constructor that initializes a new instance of . + /// public SKGLView() { Initialize(); } // created in code + /// + /// Initializes the with the specified frame. + /// + /// The frame used by the view, expressed in Mac points. public SKGLView(CGRect frame) : base(frame) { @@ -48,12 +58,19 @@ public SKGLView(CGRect frame) } // created via designer + /// + /// A constructor used when creating managed representations of unmanaged objects; Called by the runtime. + /// + /// The pointer (handle) to the unmanaged object. public SKGLView(IntPtr p) : base(p) { } // created via designer + /// + /// Called after the object has been loaded from the nib file. Overriders must call the base method. + /// public override void AwakeFromNib() { Initialize(); @@ -81,10 +98,20 @@ private void Initialize() PixelFormat = new NSOpenGLPixelFormat(attrs); } + /// + /// Gets the current canvas size. + /// + /// The canvas size may be different to the view size as a result of the current device's pixel density. public SKSize CanvasSize => lastSize; + /// + /// Gets the current GPU context. + /// public GRContext GRContext => context; + /// + /// Used by subclasses to initialize OpenGL state. + /// public override void PrepareOpenGL() { base.PrepareOpenGL(); @@ -94,6 +121,9 @@ public override void PrepareOpenGL() context = GRContext.CreateGl(glInterface); } + /// + /// Called by Cocoa when the view's visible rectangle or bounds change. + /// public override void Reshape() { base.Reshape(); @@ -105,6 +135,10 @@ public override void Reshape() private nfloat lastBackingScaleFactor = 0; + /// + /// Draws the view within the passed-in rectangle. + /// + /// The rectangle to draw. public override void DrawRect(CGRect dirtyRect) { // Track if the scale of the display has changed and if so force the SKGLView to reshape itself. @@ -175,6 +209,30 @@ public override void DrawRect(CGRect dirtyRect) OpenGLContext.FlushBuffer(); } + /// + /// Occurs when the surface needs to be redrawn. + /// + /// There are two ways to draw on this surface: by overriding the + /// + /// method, or by attaching a handler to the + /// + /// event. + /// > [!NOTE] + /// > If a version of SkiaSharp prior to version v1.68.x is being used, then the + /// > + /// > method should be overridden instead of + /// > . + /// ## Examples + /// ```csharp + /// myView.PaintSurface += (sender, e) => { + /// var surface = e.Surface; + /// var surfaceWidth = e.BackendRenderTarget.Width; + /// var surfaceHeight = e.BackendRenderTarget.Height; + /// var canvas = surface.Canvas; + /// // draw on the canvas + /// canvas.Flush (); + /// }; + /// ``` public event EventHandler PaintSurface; protected virtual void OnPaintSurface(SKPaintGLSurfaceEventArgs e) From 2ee552bd24ff500bc852e76d71f6d74890e0079c Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Fri, 5 Sep 2025 17:13:25 +0200 Subject: [PATCH 15/35] apple --- .../Platform/Apple/AppleExtensions.cs | 135 ++++++++++++++++++ .../Platform/Apple/SKCanvasLayer.cs | 42 ++++++ .../Platform/Apple/SKMetalView.cs | 4 + .../Apple/SKPaintMetalSurfaceEventArgs.cs | 6 + 4 files changed, 187 insertions(+) diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Apple/AppleExtensions.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Apple/AppleExtensions.cs index 3252ae5a79..2c2fff5163 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Apple/AppleExtensions.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Apple/AppleExtensions.cs @@ -18,15 +18,28 @@ namespace SkiaSharp.Views.iOS namespace SkiaSharp.Views.Mac #endif { + /// + /// Various extension methods to convert between SkiaSharp types and CoreGraphics types. + /// public static class AppleExtensions { // CGPoint + /// + /// Converts a CoreGraphics point into a SkiaSharp point. + /// + /// The CoreGraphics point. + /// Returns a SkiaSharp point. public static SKPoint ToSKPoint(this CGPoint point) { return new SKPoint((float)point.X, (float)point.Y); } + /// + /// Converts a SkiaSharp point into a CoreGraphics point. + /// + /// The SkiaSharp point. + /// Returns a CoreGraphics point. public static CGPoint ToPoint(this SKPoint point) { return new CGPoint(point.X, point.Y); @@ -34,11 +47,21 @@ public static CGPoint ToPoint(this SKPoint point) // CGRect + /// + /// Converts a CoreGraphics rectangle into a SkiaSharp rectangle. + /// + /// The CoreGraphics rectangle. + /// Returns a SkiaSharp rectangle. public static SKRect ToSKRect(this CGRect rect) { return new SKRect((float)rect.Left, (float)rect.Top, (float)rect.Right, (float)rect.Bottom); } + /// + /// Converts a SkiaSharp rectangle into a CoreGraphics rectangle. + /// + /// The SkiaSharp rectangle. + /// Returns a CoreGraphics rectangle. public static CGRect ToRect(this SKRect rect) { return new CGRect(rect.Left, rect.Top, rect.Width, rect.Height); @@ -46,11 +69,21 @@ public static CGRect ToRect(this SKRect rect) // CGSize + /// + /// Converts a CoreGraphics size into a SkiaSharp size. + /// + /// The CoreGraphics size. + /// Returns a SkiaSharp size. public static SKSize ToSKSize(this CGSize size) { return new SKSize((float)size.Width, (float)size.Height); } + /// + /// Converts a SkiaSharp size into a CoreGraphics size. + /// + /// The SkiaSharp size. + /// Returns a CoreGraphics size. public static CGSize ToSize(this SKSize size) { return new CGSize(size.Width, size.Height); @@ -58,12 +91,22 @@ public static CGSize ToSize(this SKSize size) // CGColor + /// + /// Converts a CoreGraphics color into a SkiaSharp color. + /// + /// The CoreGraphics color. + /// Returns a SkiaSharp color. public static SKColor ToSKColor(this CGColor color) => UIColor.FromCGColor(color).ToSKColor(); public static SKColorF ToSKColorF(this CGColor color) => UIColor.FromCGColor(color).ToSKColorF(); + /// + /// Converts a SkiaSharp color into a CoreGraphics color. + /// + /// The SkiaSharp color. + /// Returns a CoreGraphics color. public static CGColor ToCGColor(this SKColor color) { #if __TVOS__ || __IOS__ @@ -86,12 +129,22 @@ public static CGColor ToCGColor(this SKColorF color) // CIColor + /// + /// Converts a CoreImage color into a SkiaSharp color. + /// + /// The CoreImage color. + /// Returns a SkiaSharp color. public static SKColor ToSKColor(this CIColor color) => UIColor.FromCIColor(color).ToSKColor(); public static SKColorF ToSKColorF(this CIColor color) => UIColor.FromCIColor(color).ToSKColorF(); + /// + /// Converts a SkiaSharp color into a CoreImage color. + /// + /// The SkiaSharp color. + /// Returns a CoreImage color. public static CIColor ToCIColor(this SKColor color) => new CIColor(color.Red / 255f, color.Green / 255f, color.Blue / 255f, color.Alpha / 255f); @@ -100,6 +153,11 @@ public static CIColor ToCIColor(this SKColorF color) => // CGImage + /// + /// Converts a CoreGraphics image into a SkiaSharp pixmap. + /// + /// The CoreGraphics image. + /// The SkiaSharp pixmap to hold the copy of the image data. public static void ToSKPixmap(this CGImage cgImage, SKPixmap pixmap) { using var colorSpace = CGColorSpace.CreateDeviceRGB(); @@ -109,6 +167,11 @@ public static void ToSKPixmap(this CGImage cgImage, SKPixmap pixmap) context.DrawImage(rect, cgImage); } + /// + /// Converts a CoreGraphics image into a SkiaSharp image. + /// + /// The CoreGraphics image. + /// Returns a copy of the image data as a SkiaSharp image. public static SKImage ToSKImage(this CGImage cgImage) { var info = new SKImageInfo((int)cgImage.Width, (int)cgImage.Height); @@ -120,6 +183,11 @@ public static SKImage ToSKImage(this CGImage cgImage) return image; } + /// + /// Converts a CoreGraphics image into a SkiaSharp bitmap. + /// + /// The CoreGraphics image. + /// Returns a copy of the image data as a SkiaSharp bitmap. public static SKBitmap ToSKBitmap(this CGImage cgImage) { var info = new SKImageInfo((int)cgImage.Width, (int)cgImage.Height); @@ -131,18 +199,34 @@ public static SKBitmap ToSKBitmap(this CGImage cgImage) return bitmap; } + /// + /// Converts a SkiaSharp picture into a CoreGraphics image. + /// + /// The SkiaSharp picture. + /// The dimensions of the picture. + /// Returns a copy of the picture as a CoreGraphics image. public static CGImage ToCGImage(this SKPicture skiaPicture, SKSizeI dimensions) { var img = SKImage.FromPicture(skiaPicture, dimensions); return img.ToCGImage(); } + /// + /// Converts a SkiaSharp image into a CoreGraphics image. + /// + /// The SkiaSharp image. + /// Returns a copy of the image data as a CoreGraphics image. public static CGImage ToCGImage(this SKImage skiaImage) { var bmp = SKBitmap.FromImage(skiaImage); return bmp.ToCGImage(); } + /// + /// Converts a SkiaSharp pixmap into a CoreGraphics image. + /// + /// The SkiaSharp pixmap. + /// Returns a copy of the pixel data as a CoreGraphics image. public static CGImage ToCGImage(this SKPixmap skiaPixmap) { var info = skiaPixmap.Info; @@ -162,6 +246,11 @@ public static CGImage ToCGImage(this SKPixmap skiaPixmap) return cgImage; } + /// + /// Converts a SkiaSharp bitmap into a CoreGraphics image. + /// + /// The SkiaSharp bitmap. + /// Returns a copy of the bitmap data as a CoreGraphics image. public static CGImage ToCGImage(this SKBitmap skiaBitmap) { var info = skiaBitmap.Info; @@ -185,6 +274,11 @@ public static CGImage ToCGImage(this SKBitmap skiaBitmap) // CIImage + /// + /// Converts a CoreImage image into a SkiaSharp pixmap. + /// + /// The CoreImage image. + /// The SkiaSharp pixmap to hold the copy of the image data. public static void ToSKPixmap(this CIImage ciImage, SKPixmap pixmap) { using var colorSpace = CGColorSpace.CreateDeviceRGB(); @@ -192,6 +286,11 @@ public static void ToSKPixmap(this CIImage ciImage, SKPixmap pixmap) context.RenderToBitmap(ciImage, pixmap.GetPixels(), pixmap.RowBytes, ciImage.Extent, (int)CIFormat.kRGBA8, colorSpace); } + /// + /// Converts a CoreImage image into a SkiaSharp image. + /// + /// The CoreImage image. + /// Returns a copy of the image data as a SkiaSharp image. public static SKImage ToSKImage(this CIImage ciImage) { var extent = ciImage.Extent; @@ -204,6 +303,11 @@ public static SKImage ToSKImage(this CIImage ciImage) return image; } + /// + /// Converts a CoreImage image into a SkiaSharp bitmap. + /// + /// The CoreImage image. + /// Returns a copy of the image data as a SkiaSharp bitmap. public static SKBitmap ToSKBitmap(this CIImage ciImage) { var extent = ciImage.Extent; @@ -216,21 +320,42 @@ public static SKBitmap ToSKBitmap(this CIImage ciImage) return image; } + /// + /// Converts a SkiaSharp picture into a CoreImage image. + /// + /// The SkiaSharp picture. + /// The dimensions of the picture. + /// Returns a copy of the picture as a CoreImage image. public static CIImage ToCIImage(this SKPicture skiaPicture, SKSizeI dimensions) { return skiaPicture.ToCGImage(dimensions); } + /// + /// Converts a SkiaSharp image into a CoreImage image. + /// + /// The SkiaSharp image. + /// Returns a copy of the image data as a CoreImage image. public static CIImage ToCIImage(this SKImage skiaImage) { return skiaImage.ToCGImage(); } + /// + /// Converts a SkiaSharp pixmap into a CoreImage image. + /// + /// The SkiaSharp pixmap. + /// Returns a copy of the pixel data as a CoreImage image. public static CIImage ToCIImage(this SKPixmap skiaPixmap) { return skiaPixmap.ToCGImage(); } + /// + /// Converts a SkiaSharp bitmap into a CoreImage image. + /// + /// The SkiaSharp bitmap. + /// Returns a copy of the bitmap data as a CoreImage image. public static CIImage ToCIImage(this SKBitmap skiaBitmap) { return skiaBitmap.ToCGImage(); @@ -238,11 +363,21 @@ public static CIImage ToCIImage(this SKBitmap skiaBitmap) // NSData + /// + /// Converts a SkiaSharp data object into a NSData. + /// + /// The SkiaSharp data object. + /// Returns a copy of the data as a NSData. public static NSData ToNSData(this SKData skiaData) { return NSData.FromBytes(skiaData.Data, (nuint)skiaData.Size); } + /// + /// Converts a NSData into a SkiaSharp data object. + /// + /// The NSData. + /// Returns a copy of the data as a SkiaSharp data object. public static SKData ToSKData(this NSData nsData) { return SKData.CreateCopy(nsData.Bytes, nsData.Length); diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Apple/SKCanvasLayer.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Apple/SKCanvasLayer.cs index 467c97b750..39f6ac89f1 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Apple/SKCanvasLayer.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Apple/SKCanvasLayer.cs @@ -11,11 +11,17 @@ namespace SkiaSharp.Views.iOS namespace SkiaSharp.Views.Mac #endif { + /// + /// A CoreAnimation layer that can be drawn on using SkiaSharp drawing commands. + /// public class SKCanvasLayer : CALayer { private readonly SKCGSurfaceFactory drawable; private bool ignorePixelScaling; + /// + /// Default constructor that initializes a new instance of . + /// public SKCanvasLayer() { drawable = new SKCGSurfaceFactory(); @@ -24,8 +30,16 @@ public SKCanvasLayer() NeedsDisplayOnBoundsChange = true; } + /// + /// Gets the current canvas size. + /// + /// The canvas size may be different to the view size as a result of the current device's pixel density. public SKSize CanvasSize { get; private set; } + /// + /// Gets or sets a value indicating whether the drawing canvas should be resized on high resolution displays. + /// + /// By default, when false, the canvas is resized to 1 canvas pixel per display pixel. When true, the canvas is resized to device independent pixels, and then stretched to fill the view. Although performance is improved and all objects are the same size on different display densities, blurring and pixelation may occur. public bool IgnorePixelScaling { get => ignorePixelScaling; @@ -36,6 +50,10 @@ public bool IgnorePixelScaling } } + /// + /// Draws the layer on the specified context. + /// + /// The prepared context to draw into. public override void DrawInContext(CGContext ctx) { base.DrawInContext(ctx); @@ -69,6 +87,30 @@ public override void DrawInContext(CGContext ctx) drawable.DrawSurface(ctx, Bounds, info, surface); } + /// + /// Occurs when the the canvas needs to be redrawn. + /// + /// There are two ways to draw on this surface: by overriding the + /// + /// method, or by attaching a handler to the + /// + /// event. + /// > [!NOTE] + /// > If a version of SkiaSharp prior to version v1.68.x is being used, then the + /// > + /// > method should be overridden instead of + /// > . + /// ## Examples + /// ```csharp + /// myLayer.PaintSurface += (sender, e) => { + /// var surface = e.Surface; + /// var surfaceWidth = e.Info.Width; + /// var surfaceHeight = e.Info.Height; + /// var canvas = surface.Canvas; + /// // draw on the canvas + /// canvas.Flush (); + /// }; + /// ``` public event EventHandler PaintSurface; protected virtual void OnPaintSurface(SKPaintSurfaceEventArgs e) diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Apple/SKMetalView.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Apple/SKMetalView.cs index 484f1cba8d..6bde8d4288 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Apple/SKMetalView.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Apple/SKMetalView.cs @@ -51,6 +51,7 @@ public SKMetalView() } // created in code + /// public SKMetalView(CGRect frame) : base(frame, null) { @@ -58,6 +59,8 @@ public SKMetalView(CGRect frame) } // created in code + /// + /// public SKMetalView(CGRect frame, IMTLDevice device) : base(frame, device) { @@ -65,6 +68,7 @@ public SKMetalView(CGRect frame, IMTLDevice device) } // created via designer + /// public SKMetalView(IntPtr p) : base(p) { diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Apple/SKPaintMetalSurfaceEventArgs.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Apple/SKPaintMetalSurfaceEventArgs.cs index 8dc85f6357..4243419f2e 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Apple/SKPaintMetalSurfaceEventArgs.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Apple/SKPaintMetalSurfaceEventArgs.cs @@ -11,11 +11,17 @@ namespace SkiaSharp.Views.tvOS { public class SKPaintMetalSurfaceEventArgs : EventArgs { + /// + /// public SKPaintMetalSurfaceEventArgs(SKSurface surface, GRBackendRenderTarget renderTarget) : this(surface, renderTarget, GRSurfaceOrigin.TopLeft, SKColorType.Rgba8888) { } + /// + /// + /// + /// public SKPaintMetalSurfaceEventArgs(SKSurface surface, GRBackendRenderTarget renderTarget, GRSurfaceOrigin origin, SKColorType colorType) { Surface = surface; From 646e0b87247b435c8727570c2fa9646dffcc3338 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Fri, 5 Sep 2025 17:20:51 +0200 Subject: [PATCH 16/35] Lots more now --- binding/HarfBuzzSharp/Blob.cs | 14 +- binding/HarfBuzzSharp/Definitions.cs | 2 +- binding/HarfBuzzSharp/DelegateProxies.font.cs | 2 +- binding/HarfBuzzSharp/Face.cs | 8 +- binding/HarfBuzzSharp/Feature.cs | 6 +- binding/HarfBuzzSharp/Font.cs | 2 +- .../HarfBuzzSharp/HarfBuzzApi.generated.cs | 14 +- binding/HarfBuzzSharp/NativeObject.cs | 4 +- binding/HarfBuzzSharp/Script.cs | 14 +- binding/HarfBuzzSharp/Tag.cs | 6 +- .../ResourcesApi.generated.cs | 2 +- .../SceneGraphApi.generated.cs | 2 +- .../SkiaSharp.Skottie/SkottieApi.generated.cs | 2 +- binding/SkiaSharp/Definitions.cs | 42 +- binding/SkiaSharp/DelegateProxies.cs | 2 +- binding/SkiaSharp/EnumMappings.cs | 2 +- binding/SkiaSharp/GRBackendRenderTarget.cs | 4 +- binding/SkiaSharp/GRBackendTexture.cs | 4 +- binding/SkiaSharp/GRContext.cs | 10 +- binding/SkiaSharp/GRDefinitions.cs | 14 +- binding/SkiaSharp/GRGlInterface.cs | 6 +- binding/SkiaSharp/MathTypes.cs | 390 +++++++++--------- binding/SkiaSharp/SKAbstractManagedStream.cs | 2 +- binding/SkiaSharp/SKAbstractManagedWStream.cs | 2 +- binding/SkiaSharp/SKAutoCoInitialize.cs | 2 +- binding/SkiaSharp/SKBitmap.cs | 52 +-- binding/SkiaSharp/SKCanvas.cs | 4 +- binding/SkiaSharp/SKCodec.cs | 48 +-- binding/SkiaSharp/SKColor.cs | 26 +- binding/SkiaSharp/SKColorF.cs | 18 +- binding/SkiaSharp/SKColorFilter.cs | 34 +- binding/SkiaSharp/SKColorSpace.cs | 20 +- binding/SkiaSharp/SKColorSpaceStructs.cs | 8 +- binding/SkiaSharp/SKData.cs | 96 ++--- binding/SkiaSharp/SKDrawable.cs | 4 +- binding/SkiaSharp/SKFontManager.cs | 42 +- binding/SkiaSharp/SKFontStyle.cs | 10 +- binding/SkiaSharp/SKFontStyleSet.cs | 10 +- .../SkiaSharp/SKFrontBufferedManagedStream.cs | 10 +- binding/SkiaSharp/SKFrontBufferedStream.cs | 10 +- binding/SkiaSharp/SKImage.cs | 26 +- binding/SkiaSharp/SKImageFilter.cs | 16 +- binding/SkiaSharp/SKImageInfo.cs | 40 +- binding/SkiaSharp/SKManagedStream.cs | 2 +- binding/SkiaSharp/SKManagedWStream.cs | 2 +- binding/SkiaSharp/SKMaskFilter.cs | 10 +- binding/SkiaSharp/SKMatrix.cs | 6 +- binding/SkiaSharp/SKMatrix44.cs | 14 +- binding/SkiaSharp/SKNWayCanvas.cs | 4 +- binding/SkiaSharp/SKNoDrawCanvas.cs | 4 +- binding/SkiaSharp/SKObject.cs | 8 +- binding/SkiaSharp/SKOverdrawCanvas.cs | 2 +- binding/SkiaSharp/SKPMColor.cs | 36 +- binding/SkiaSharp/SKPaint.cs | 118 +++--- binding/SkiaSharp/SKPath.cs | 34 +- binding/SkiaSharp/SKPathEffect.cs | 22 +- binding/SkiaSharp/SKPathMeasure.cs | 16 +- binding/SkiaSharp/SKPicture.cs | 2 +- binding/SkiaSharp/SKPictureRecorder.cs | 10 +- binding/SkiaSharp/SKPixmap.cs | 32 +- binding/SkiaSharp/SKRoundRect.cs | 10 +- binding/SkiaSharp/SKSVG.cs | 2 +- binding/SkiaSharp/SKShader.cs | 68 +-- binding/SkiaSharp/SKStream.cs | 22 +- binding/SkiaSharp/SKSurface.cs | 6 +- binding/SkiaSharp/SKSurfaceProperties.cs | 8 +- binding/SkiaSharp/SKTextBlob.cs | 8 +- binding/SkiaSharp/SKTypeface.cs | 8 +- binding/SkiaSharp/SKVertices.cs | 12 +- binding/SkiaSharp/SkiaApi.generated.cs | 274 ++++++------ source/Common/NullableAttributes.generated.cs | 2 +- .../SkiaSharp.HarfBuzz/BlobExtensions.cs | 8 +- .../SkiaSharp.HarfBuzz/CanvasExtensions.cs | 2 +- .../SkiaSharp.HarfBuzz/FontExtensions.cs | 2 +- .../SkiaSharp.HarfBuzz/SKShaper.cs | 10 +- .../RendererTypes.cs | 1 + .../SkiaSharp.Views.Maui.Controls/SKGLView.cs | 51 +++ .../SKImageSource.cs | 7 + .../SkiaSharp.Views.Maui.Core/Extensions.cs | 14 + .../SKCanvasView/SKCanvasViewHandler.Ref.cs | 7 + .../SKPaintGLSurfaceEventArgs.cs | 6 + .../SKPaintSurfaceEventArgs.cs | 5 + .../SKTouchEventArgs.cs | 25 ++ .../SkiaSharp.Views.Gtk3/GTKExtensions.cs | 9 + .../SkiaSharp.Views.Gtk3/SKDrawingArea.cs | 29 ++ .../SKPaintGLSurfaceEventArgs.cs | 15 + .../SKPaintSurfaceEventArgs.cs | 2 + .../SkiaSharp.Views.WPF/SKElement.cs | 17 + .../SkiaSharp.Views.WPF/WPFExtensions.cs | 44 ++ .../AngleSwapChainPanel.cs | 18 + .../SkiaSharp.Views.WinUI/SKSwapChainPanel.cs | 32 ++ .../SkiaSharp.Views.WinUI/SKXamlCanvas.cs | 39 ++ .../SkiaSharp.Views.WinUI/UWPExtensions.cs | 46 ++- .../Extensions.Desktop.cs | 109 +++++ .../SkiaSharp.Views.WindowsForms/SKControl.cs | 29 ++ .../SKGLControl.cs | 32 ++ .../Platform/Android/SKGLSurfaceView.cs | 2 +- .../Android/SKGLSurfaceViewRenderer.cs | 2 +- .../Platform/Android/SKGLTextureView.cs | 2 +- .../Android/SKGLTextureViewRenderer.cs | 2 +- .../Platform/Android/SKSurfaceView.cs | 2 +- 101 files changed, 1439 insertions(+), 904 deletions(-) diff --git a/binding/HarfBuzzSharp/Blob.cs b/binding/HarfBuzzSharp/Blob.cs index f4f1644980..1a69a3dcc5 100644 --- a/binding/HarfBuzzSharp/Blob.cs +++ b/binding/HarfBuzzSharp/Blob.cs @@ -13,7 +13,7 @@ public unsafe class Blob : NativeObject private static readonly Lazy emptyBlob = new Lazy (() => new StaticBlob (HarfBuzzApi.hb_blob_get_empty ())); /// - /// Gets a reference to the empty instance. + /// Gets a reference to the empty instance. /// public static Blob Empty => emptyBlob.Value; @@ -23,7 +23,7 @@ internal Blob (IntPtr handle) } /// - /// Creates a new instance, wrapping the specified data. + /// Creates a new instance, wrapping the specified data. /// /// The data to wrap. /// The length of the data being wrapped. @@ -35,7 +35,7 @@ public Blob (IntPtr data, int length, MemoryMode mode) } /// - /// Creates a new instance, wrapping the specified data. + /// Creates a new instance, wrapping the specified data. /// /// The data to wrap. /// The length of the data being wrapped. @@ -102,10 +102,10 @@ public unsafe Span AsSpan () } /// - /// Creates a new instance from the contents of the file. + /// Creates a new instance from the contents of the file. /// /// The path to the file to load. - /// Returns the new instance. + /// Returns the new instance. public static Blob FromFile (string fileName) { if (!File.Exists (fileName)) { @@ -117,10 +117,10 @@ public static Blob FromFile (string fileName) } /// - /// Creates a new instance from the contents of the stream. + /// Creates a new instance from the contents of the stream. /// /// The stream to use. - /// Returns the new instance. + /// Returns the new instance. public static unsafe Blob FromStream (Stream stream) { // TODO: check to see if we can avoid the second copy (the ToArray) diff --git a/binding/HarfBuzzSharp/Definitions.cs b/binding/HarfBuzzSharp/Definitions.cs index 9171f6aef8..ec037808fa 100644 --- a/binding/HarfBuzzSharp/Definitions.cs +++ b/binding/HarfBuzzSharp/Definitions.cs @@ -10,7 +10,7 @@ namespace HarfBuzzSharp public unsafe partial struct GlyphInfo { /// - /// Gets the for this instance. + /// Gets the for this instance. /// public GlyphFlags GlyphFlags { get { diff --git a/binding/HarfBuzzSharp/DelegateProxies.font.cs b/binding/HarfBuzzSharp/DelegateProxies.font.cs index c118a210ad..b5cee3716f 100644 --- a/binding/HarfBuzzSharp/DelegateProxies.font.cs +++ b/binding/HarfBuzzSharp/DelegateProxies.font.cs @@ -11,7 +11,7 @@ namespace HarfBuzzSharp /// The font. /// The additional data passed to when the functions were set. /// The font extents. - /// Return true if the has extents, otherwise false. + /// Return true if the has extents, otherwise false. public delegate bool FontExtentsDelegate (Font font, object fontData, out FontExtents extents); public delegate bool NominalGlyphDelegate (Font font, object fontData, uint unicode, out uint glyph); diff --git a/binding/HarfBuzzSharp/Face.cs b/binding/HarfBuzzSharp/Face.cs index 63639dac51..16086579fd 100644 --- a/binding/HarfBuzzSharp/Face.cs +++ b/binding/HarfBuzzSharp/Face.cs @@ -12,12 +12,12 @@ public unsafe class Face : NativeObject private static readonly Lazy emptyFace = new Lazy (() => new StaticFace (HarfBuzzApi.hb_face_get_empty ())); /// - /// Gets a reference to the empty instance. + /// Gets a reference to the empty instance. /// public static Face Empty => emptyFace.Value; /// - /// Creates a new instance, using the specified typeface blob. + /// Creates a new instance, using the specified typeface blob. /// /// The typeface data. /// The zero-based face index in a collection. @@ -27,7 +27,7 @@ public Face (Blob blob, uint index) } /// - /// Creates a new instance, using the specified typeface blob. + /// Creates a new instance, using the specified typeface blob. /// /// The typeface data. /// The zero-based face index in a collection. @@ -46,7 +46,7 @@ public Face (Blob blob, int index) } /// - /// Creates a new instance, using the delegate to assemble the data. + /// Creates a new instance, using the delegate to assemble the data. /// /// The delegate to retrieve the table data. public Face (GetTableDelegate getTable) diff --git a/binding/HarfBuzzSharp/Feature.cs b/binding/HarfBuzzSharp/Feature.cs index 13c57f4d2f..cdf8f3e30e 100644 --- a/binding/HarfBuzzSharp/Feature.cs +++ b/binding/HarfBuzzSharp/Feature.cs @@ -13,7 +13,7 @@ public unsafe partial struct Feature private const int MaxFeatureStringSize = 128; /// - /// Creates a new instance with the specified tag. + /// Creates a new instance with the specified tag. /// /// The tag to use. public Feature (Tag tag) @@ -22,7 +22,7 @@ public Feature (Tag tag) } /// - /// Creates a new instance with the specified tag. + /// Creates a new instance with the specified tag. /// /// The tag to use. /// The value to use. @@ -32,7 +32,7 @@ public Feature (Tag tag, uint value) } /// - /// Creates a new instance with the specified tag. + /// Creates a new instance with the specified tag. /// /// The tag to use. /// The value to use. diff --git a/binding/HarfBuzzSharp/Font.cs b/binding/HarfBuzzSharp/Font.cs index 707fe8c3ed..4ca5f16c12 100644 --- a/binding/HarfBuzzSharp/Font.cs +++ b/binding/HarfBuzzSharp/Font.cs @@ -16,7 +16,7 @@ public unsafe class Font : NativeObject internal const int NameBufferLength = 128; /// - /// Creates a new using a specific font face. + /// Creates a new using a specific font face. /// /// The face to use. public Font (Face face) diff --git a/binding/HarfBuzzSharp/HarfBuzzApi.generated.cs b/binding/HarfBuzzSharp/HarfBuzzApi.generated.cs index 6df8ec2b2f..99cf684e57 100644 --- a/binding/HarfBuzzSharp/HarfBuzzApi.generated.cs +++ b/binding/HarfBuzzSharp/HarfBuzzApi.generated.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Runtime.InteropServices; using System.Runtime.CompilerServices; @@ -7233,7 +7233,7 @@ public enum ClusterLevel { Characters = 2, // HB_BUFFER_CLUSTER_LEVEL_DEFAULT = HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES /// - /// Default cluster level (). + /// Default cluster level (). /// Default = 0, } @@ -7366,7 +7366,7 @@ public enum SerializeFormat { // hb_direction_t /// - /// Various text directions that can be set via . + /// Various text directions that can be set via . /// public enum Direction { // HB_DIRECTION_INVALID = 0 @@ -7398,7 +7398,7 @@ public enum Direction { // hb_glyph_flags_t /// - /// Represents the various glyph flags of a . + /// Represents the various glyph flags of a . /// [Flags] public enum GlyphFlags { @@ -7416,9 +7416,9 @@ public enum GlyphFlags { // hb_memory_mode_t /// - /// Various memory modes for + /// Various memory modes for /// - /// In no case shall the HarfBuzz client modify memory that is passed to HarfBuzz in a blob. If there is any such possibility, should be used such that HarfBuzz makes a copy immediately. + /// In no case shall the HarfBuzz client modify memory that is passed to HarfBuzz in a blob. If there is any such possibility, should be used such that HarfBuzz makes a copy immediately. public enum MemoryMode { // HB_MEMORY_MODE_DUPLICATE = 0 /// @@ -7437,7 +7437,7 @@ public enum MemoryMode { Writeable = 2, // HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE = 3 /// - /// The font file was mmap()ed, but should still be used. + /// The font file was mmap()ed, but should still be used. /// ReadOnlyMayMakeWriteable = 3, } diff --git a/binding/HarfBuzzSharp/NativeObject.cs b/binding/HarfBuzzSharp/NativeObject.cs index b1245423cc..2c11d41f2a 100644 --- a/binding/HarfBuzzSharp/NativeObject.cs +++ b/binding/HarfBuzzSharp/NativeObject.cs @@ -63,9 +63,9 @@ protected virtual void DisposeHandler () } /// - /// Releases all resources used by this . + /// Releases all resources used by this . /// - /// Always dispose the object before you release your last reference to the . Otherwise, the resources it is using will not be freed until the garbage collector calls the finalizer. + /// Always dispose the object before you release your last reference to the . Otherwise, the resources it is using will not be freed until the garbage collector calls the finalizer. public void Dispose () { Dispose (true); diff --git a/binding/HarfBuzzSharp/Script.cs b/binding/HarfBuzzSharp/Script.cs index 1ed44a1a35..f607a5fe3d 100644 --- a/binding/HarfBuzzSharp/Script.cs +++ b/binding/HarfBuzzSharp/Script.cs @@ -23,10 +23,10 @@ private Script (Tag tag) HarfBuzzApi.hb_script_get_horizontal_direction (tag); /// - /// Parses the ISO 15924 script tag into the corresponding . + /// Parses the ISO 15924 script tag into the corresponding . /// /// The ISO 15924 script tag to parse. - /// Returns the that corresponds the script tag that was parsed. + /// Returns the that corresponds the script tag that was parsed. public static Script Parse (string str) => HarfBuzzApi.hb_script_from_string (str, -1); @@ -38,27 +38,27 @@ public static bool TryParse (string str, out Script script) } /// - /// Returns a string representation of the value of this instance of the . + /// Returns a string representation of the value of this instance of the . /// /// Returns a string representation. public override string ToString () => tag.ToString (); /// - /// Defines an implicit conversion of a to a tag. + /// Defines an implicit conversion of a to a tag. /// /// The script to be converted into a tag. /// Returns the tag that corresponds to the script. public static implicit operator uint (Script script) => script.tag; /// - /// Defines an implicit conversion of a tag to a . + /// Defines an implicit conversion of a tag to a . /// /// The tag to be converted into a script. /// Returns the script that corresponds to the tag. public static implicit operator Script (uint tag) => new Script (tag); /// - /// Returns a value indicating whether this instance and a specified object represent the same value. + /// Returns a value indicating whether this instance and a specified object represent the same value. /// /// An object to compare to this instance. /// Returns true if the other value is equal to this instance, otherwise false. @@ -66,7 +66,7 @@ public override bool Equals (object obj) => obj is Script script && tag.Equals (script.tag); /// - /// Returns a value indicating whether this instance and a specified object represent the same value. + /// Returns a value indicating whether this instance and a specified object represent the same value. /// /// An object to compare to this instance. /// Returns true if the other value is equal to this instance, otherwise false. diff --git a/binding/HarfBuzzSharp/Tag.cs b/binding/HarfBuzzSharp/Tag.cs index 10668f4488..67d4489d86 100644 --- a/binding/HarfBuzzSharp/Tag.cs +++ b/binding/HarfBuzzSharp/Tag.cs @@ -28,10 +28,10 @@ public Tag (char c1, char c2, char c3, char c4) } /// - /// Parses the ISO 15924 tag into the corresponding . + /// Parses the ISO 15924 tag into the corresponding . /// /// The ISO 15924 tag to parse. - /// Returns the that corresponds the tag that was parsed. + /// Returns the that corresponds the tag that was parsed. public static Tag Parse (string tag) { if (string.IsNullOrEmpty (tag)) @@ -50,7 +50,7 @@ public static Tag Parse (string tag) } /// - /// Returns a string representation of the value of this instance of the . + /// Returns a string representation of the value of this instance of the . /// /// Returns a string representation. public override string ToString () diff --git a/binding/SkiaSharp.Resources/ResourcesApi.generated.cs b/binding/SkiaSharp.Resources/ResourcesApi.generated.cs index fa699789b0..6733269198 100644 --- a/binding/SkiaSharp.Resources/ResourcesApi.generated.cs +++ b/binding/SkiaSharp.Resources/ResourcesApi.generated.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Runtime.InteropServices; using System.Runtime.CompilerServices; diff --git a/binding/SkiaSharp.SceneGraph/SceneGraphApi.generated.cs b/binding/SkiaSharp.SceneGraph/SceneGraphApi.generated.cs index 658c3c8590..1f50aac9a0 100644 --- a/binding/SkiaSharp.SceneGraph/SceneGraphApi.generated.cs +++ b/binding/SkiaSharp.SceneGraph/SceneGraphApi.generated.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Runtime.InteropServices; using System.Runtime.CompilerServices; diff --git a/binding/SkiaSharp.Skottie/SkottieApi.generated.cs b/binding/SkiaSharp.Skottie/SkottieApi.generated.cs index 21425ff755..48d830b087 100644 --- a/binding/SkiaSharp.Skottie/SkottieApi.generated.cs +++ b/binding/SkiaSharp.Skottie/SkottieApi.generated.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Runtime.InteropServices; using System.Runtime.CompilerServices; diff --git a/binding/SkiaSharp/Definitions.cs b/binding/SkiaSharp/Definitions.cs index 8c66c27cc4..5a9f2d2d43 100644 --- a/binding/SkiaSharp/Definitions.cs +++ b/binding/SkiaSharp/Definitions.cs @@ -6,7 +6,7 @@ namespace SkiaSharp { /// - /// Various predefined font weights for use with . + /// Various predefined font weights for use with . /// /// Font weights can range from anywhere between 100 to 1000 (inclusive). public enum SKFontStyleWeight @@ -58,7 +58,7 @@ public enum SKFontStyleWeight } /// - /// Various predefined font widths for use with . + /// Various predefined font widths for use with . /// public enum SKFontStyleWidth { @@ -166,7 +166,7 @@ public enum SKColorType } /// - /// Convenience methods for . + /// Convenience methods for . /// public static partial class SkiaExtensions { @@ -331,7 +331,7 @@ public static SKAlphaType GetAlphaType (this SKColorType colorType, SKAlphaType } /// - /// Additional options to pass to or one of the overloads that accepts a . + /// Additional options to pass to or one of the overloads that accepts a . /// public struct SKCodecOptions : IEquatable { @@ -347,7 +347,7 @@ static SKCodecOptions () } /// - /// Create a new instance of with the specified zero-initialization. + /// Create a new instance of with the specified zero-initialization. /// /// The zero-initialization. public SKCodecOptions (SKZeroInitialized zeroInitialized) @@ -358,7 +358,7 @@ public SKCodecOptions (SKZeroInitialized zeroInitialized) PriorFrame = -1; } /// - /// Create a new instance of with the specified subset rectangle and zero-initialization. + /// Create a new instance of with the specified subset rectangle and zero-initialization. /// /// The zero-initialization. /// The subset rectangle. @@ -370,7 +370,7 @@ public SKCodecOptions (SKZeroInitialized zeroInitialized, SKRectI subset) PriorFrame = -1; } /// - /// Create a new instance of with the specified subset rectangle. + /// Create a new instance of with the specified subset rectangle. /// /// The subset rectangle. public SKCodecOptions (SKRectI subset) @@ -381,7 +381,7 @@ public SKCodecOptions (SKRectI subset) PriorFrame = -1; } /// - /// Create a new instance of with the specified frame index. + /// Create a new instance of with the specified frame index. /// /// The frame to decode. /// Only meaningful for multi-frame images. @@ -393,7 +393,7 @@ public SKCodecOptions (int frameIndex) PriorFrame = -1; } /// - /// Create a new instance of . + /// Create a new instance of . /// /// The frame to decode. /// The previous frame to decode. @@ -567,7 +567,7 @@ public partial struct SKFontMetrics } /// - /// Specifies coordinates to divide a bitmap into ( * ) rectangles. + /// Specifies coordinates to divide a bitmap into ( * ) rectangles. /// /// If the lattice divs or bounds are invalid, the entire lattice structure will be ignored on the draw call. public struct SKLattice : IEquatable @@ -660,7 +660,7 @@ public struct SKDocumentPdfMetadata : IEquatable public const int DefaultEncodingQuality = 101; /// - /// Gets a new instance of with the values set to the defaults. + /// Gets a new instance of with the values set to the defaults. /// public static readonly SKDocumentPdfMetadata Default; @@ -674,7 +674,7 @@ static SKDocumentPdfMetadata () } /// - /// Creates a new instance of with the specified raster DPI. + /// Creates a new instance of with the specified raster DPI. /// /// The DPI (pixels-per-inch) at which features without native PDF support will be rasterized. /// PDF pages are sized in point units. 1 pt == 1/72 inch == 127/360 mm. @@ -694,7 +694,7 @@ public SKDocumentPdfMetadata (float rasterDpi) } /// - /// Creates a new instance of with the specified encoding quality. + /// Creates a new instance of with the specified encoding quality. /// /// The encoding quality. /// The encoding quality is between 0 and 100. A quality of 101 indicates lossless encoding. @@ -714,7 +714,7 @@ public SKDocumentPdfMetadata (int encodingQuality) } /// - /// Creates a new instance of with the specified raster DPI and encoding quality. + /// Creates a new instance of with the specified raster DPI and encoding quality. /// /// The DPI (pixels-per-inch) at which features without native PDF support will be rasterized. /// The encoding quality. @@ -854,7 +854,7 @@ static SKHighContrastConfig () } /// - /// Creates a new instance of . + /// Creates a new instance of . /// /// Whether or not the color will be converted to grayscale. /// Whether or not to invert brightness, lightness, or neither. @@ -882,7 +882,7 @@ public SKHighContrastConfig (bool grayscale, SKHighContrastConfigInvertStyle inv public unsafe partial struct SKPngEncoderOptions { /// - /// Gets a new instance of with the values set to the defaults. + /// Gets a new instance of with the values set to the defaults. /// public static readonly SKPngEncoderOptions Default; @@ -892,7 +892,7 @@ static SKPngEncoderOptions () } /// - /// Creates a new instance of . + /// Creates a new instance of . /// /// The filtering flags. /// The compression level in the range 0..9. @@ -925,7 +925,7 @@ public SKPngEncoderOptions (SKPngEncoderFilterFlags filterFlags, int zLibLevel) public unsafe partial struct SKJpegEncoderOptions { /// - /// Gets a new instance of with the values set to the defaults. + /// Gets a new instance of with the values set to the defaults. /// public static readonly SKJpegEncoderOptions Default; @@ -946,7 +946,7 @@ public SKJpegEncoderOptions (int quality) } /// - /// Creates a new instance of . + /// Creates a new instance of . /// /// The quality of the encoding in the range 0 to 100. /// The downsampling factor for the U and V components. @@ -986,7 +986,7 @@ public SKJpegEncoderOptions (int quality, SKJpegEncoderDownsample downsample, SK public unsafe partial struct SKWebpEncoderOptions { /// - /// Gets a new instance of with the values set to the defaults. + /// Gets a new instance of with the values set to the defaults. /// public static readonly SKWebpEncoderOptions Default; @@ -996,7 +996,7 @@ static SKWebpEncoderOptions () } /// - /// Creates a new instance of . + /// Creates a new instance of . /// /// The compression level. /// The quality of the encoding in the range 0.0 to 100.0. diff --git a/binding/SkiaSharp/DelegateProxies.cs b/binding/SkiaSharp/DelegateProxies.cs index e9dde79ee1..a743852f1b 100644 --- a/binding/SkiaSharp/DelegateProxies.cs +++ b/binding/SkiaSharp/DelegateProxies.cs @@ -19,7 +19,7 @@ namespace SkiaSharp public delegate void SKBitmapReleaseDelegate (IntPtr address, object context); /// - /// The delegate that is used when a instance is about to be released. + /// The delegate that is used when a instance is about to be released. /// /// The pointer to the byte buffer. /// The user state passed to . diff --git a/binding/SkiaSharp/EnumMappings.cs b/binding/SkiaSharp/EnumMappings.cs index 188ef67c6f..5a46b58b55 100644 --- a/binding/SkiaSharp/EnumMappings.cs +++ b/binding/SkiaSharp/EnumMappings.cs @@ -28,7 +28,7 @@ public enum GRBackend } /// - /// Convenience methods for . + /// Convenience methods for . /// public static partial class SkiaExtensions { diff --git a/binding/SkiaSharp/GRBackendRenderTarget.cs b/binding/SkiaSharp/GRBackendRenderTarget.cs index 74a389aaf4..3eaa9e2d68 100644 --- a/binding/SkiaSharp/GRBackendRenderTarget.cs +++ b/binding/SkiaSharp/GRBackendRenderTarget.cs @@ -23,7 +23,7 @@ internal GRBackendRenderTarget (IntPtr handle, bool owns) } /// - /// Creates a new OpenGL with the specified properties and framebuffer. + /// Creates a new OpenGL with the specified properties and framebuffer. /// /// The width of the render target. /// The height of the render target. @@ -114,7 +114,7 @@ protected override void DisposeNative () => SkiaApi.gr_backendrendertarget_delete (Handle); /// - /// Gets a value indicating whether or not the was initialized. + /// Gets a value indicating whether or not the was initialized. /// public bool IsValid => SkiaApi.gr_backendrendertarget_is_valid (Handle); /// diff --git a/binding/SkiaSharp/GRBackendTexture.cs b/binding/SkiaSharp/GRBackendTexture.cs index 8fb15868e4..a86a26b638 100644 --- a/binding/SkiaSharp/GRBackendTexture.cs +++ b/binding/SkiaSharp/GRBackendTexture.cs @@ -24,7 +24,7 @@ internal GRBackendTexture (IntPtr handle, bool owns) } /// - /// Creates a new OpenGL with the specified properties and texture. + /// Creates a new OpenGL with the specified properties and texture. /// /// The width of the render target. /// The height of the render target. @@ -97,7 +97,7 @@ protected override void DisposeNative () => SkiaApi.gr_backendtexture_delete (Handle); /// - /// Gets a value indicating whether or not the was initialized. + /// Gets a value indicating whether or not the was initialized. /// public bool IsValid => SkiaApi.gr_backendtexture_is_valid (Handle); /// diff --git a/binding/SkiaSharp/GRContext.cs b/binding/SkiaSharp/GRContext.cs index 6263546228..9c93fc4995 100644 --- a/binding/SkiaSharp/GRContext.cs +++ b/binding/SkiaSharp/GRContext.cs @@ -28,17 +28,17 @@ protected override void DisposeNative () // CreateGl /// - /// Creates a for an OpenGL context. + /// Creates a for an OpenGL context. /// - /// Returns the new if one was created, otherwise . + /// Returns the new if one was created, otherwise . public static GRContext CreateGl () => CreateGl (null, null); /// - /// Creates a for an OpenGL context. + /// Creates a for an OpenGL context. /// /// The OpenGL interface to use. - /// Returns the new if one was created, otherwise . + /// Returns the new if one was created, otherwise . public static GRContext CreateGl (GRGlInterface backendContext) => CreateGl (backendContext, null); @@ -129,7 +129,7 @@ public static GRContext CreateMetal (GRMtlBackendContext backendContext, GRConte /// /// Abandons all GPU resources and assumes the underlying backend 3D API context is not longer usable. After returning it will assume that the underlying context may no longer be valid. /// - /// Use true to indicate that the underlying 3D context is not yet lost and the will cleanup all allocated resources before returning. Using false will ensure that the destructors of the and any of its created resource objects will not make backend 3D API calls. + /// Use true to indicate that the underlying 3D context is not yet lost and the will cleanup all allocated resources before returning. Using false will ensure that the destructors of the and any of its created resource objects will not make backend 3D API calls. public void AbandonContext (bool releaseResources = false) { if (releaseResources) diff --git a/binding/SkiaSharp/GRDefinitions.cs b/binding/SkiaSharp/GRDefinitions.cs index 38a21d0073..687333d5a5 100644 --- a/binding/SkiaSharp/GRDefinitions.cs +++ b/binding/SkiaSharp/GRDefinitions.cs @@ -9,7 +9,7 @@ namespace SkiaSharp { /// - /// Various flags for the method when using a backend. + /// Various flags for the method when using a backend. /// [Flags] public enum GRGlBackendState : UInt32 @@ -94,7 +94,7 @@ public enum GRBackendState : UInt32 public partial struct GRGlFramebufferInfo { /// - /// Creates a new with the specified parameters. + /// Creates a new with the specified parameters. /// /// The OpenGL framebuffer ID. public GRGlFramebufferInfo (uint fboId) @@ -106,7 +106,7 @@ public GRGlFramebufferInfo (uint fboId) } /// - /// Creates a new with the specified parameters. + /// Creates a new with the specified parameters. /// /// The OpenGL framebuffer ID. /// The sized, internal format of the OpenGL framebuffer. @@ -136,7 +136,7 @@ public GRGlTextureInfo (uint target, uint id) } /// - /// Creates a new with the specified parameters. + /// Creates a new with the specified parameters. /// /// The OpenGL texture target. /// The OpenGL texture ID. @@ -212,14 +212,14 @@ public readonly override int GetHashCode () } /// - /// Convenience methods for . + /// Convenience methods for . /// public static partial class SkiaExtensions { /// - /// Converts a to the equivalent OpenGL sized format, if possible. + /// Converts a to the equivalent OpenGL sized format, if possible. /// - /// The to convert. + /// The to convert. /// Returns the equivalent OpenGL sized format, or 0 if there is none. public static uint ToGlSizedFormat (this SKColorType colorType) => colorType switch { diff --git a/binding/SkiaSharp/GRGlInterface.cs b/binding/SkiaSharp/GRGlInterface.cs index 2a532c30ee..0198852f29 100644 --- a/binding/SkiaSharp/GRGlInterface.cs +++ b/binding/SkiaSharp/GRGlInterface.cs @@ -13,9 +13,9 @@ namespace SkiaSharp { /// - /// The is used to interface with OpenGL. + /// The is used to interface with OpenGL. /// - /// A does not interact directly with the underlying backend, instead it uses an OpenGL interface. + /// A does not interact directly with the underlying backend, instead it uses an OpenGL interface. public unsafe partial class GRGlInterface : SKObject, ISKReferenceCounted, ISKSkipObjectRegistration { internal GRGlInterface (IntPtr h, bool owns) @@ -119,7 +119,7 @@ public static GRGlInterface CreateEvas (IntPtr evas) // /// - /// Validates that the supports its advertised standard. + /// Validates that the supports its advertised standard. /// /// Returns true if all the entry points are specified, and any required extensions exist. public bool Validate () => diff --git a/binding/SkiaSharp/MathTypes.cs b/binding/SkiaSharp/MathTypes.cs index 9171bba01a..64544570d6 100644 --- a/binding/SkiaSharp/MathTypes.cs +++ b/binding/SkiaSharp/MathTypes.cs @@ -8,11 +8,11 @@ namespace SkiaSharp /// /// Represents an ordered pair of floating-point x- and y-coordinates that defines a point in a two-dimensional plane. /// - /// To convert a to a , use or . + /// To convert a to a , use or . public partial struct SKPoint { /// - /// Represents a new instance of the class with member data left uninitialized. + /// Represents a new instance of the class with member data left uninitialized. /// public static readonly SKPoint Empty; @@ -64,9 +64,9 @@ public void Offset (float dx, float dy) } /// - /// Converts this to a human readable string. + /// Converts this to a human readable string. /// - /// A string that represents this . + /// A string that represents this . public readonly override string ToString () => $"{{X={x}, Y={y}}}"; /// @@ -152,32 +152,32 @@ public static SKPoint Reflect (SKPoint point, SKPoint normal) public static SKPoint Add (SKPoint pt, SKPoint sz) => pt + sz; /// - /// Translates a by the negative of a specified size. + /// Translates a by the negative of a specified size. /// - /// The to translate. - /// The that specifies the numbers to subtract from the coordinates of . - /// The translated . + /// The to translate. + /// The that specifies the numbers to subtract from the coordinates of . + /// The translated . public static SKPoint Subtract (SKPoint pt, SKSizeI sz) => pt - sz; /// - /// Translates a by the negative of a specified size. + /// Translates a by the negative of a specified size. /// - /// The to translate. - /// The that specifies the numbers to subtract from the coordinates of . - /// The translated . + /// The to translate. + /// The that specifies the numbers to subtract from the coordinates of . + /// The translated . public static SKPoint Subtract (SKPoint pt, SKSize sz) => pt - sz; /// /// Translates a given point by the negative of a specified offset. /// - /// The to translate. + /// The to translate. /// The offset that specifies the numbers to subtract from the coordinates of . - /// The translated . + /// The translated . public static SKPoint Subtract (SKPoint pt, SKPointI sz) => pt - sz; /// /// Translates a given point by the negative of a specified offset. /// - /// The to translate. + /// The to translate. /// The offset that specifies the numbers to subtract from the coordinates of . - /// The translated . + /// The translated . public static SKPoint Subtract (SKPoint pt, SKPoint sz) => pt - sz; /// @@ -214,35 +214,35 @@ public static SKPoint Reflect (SKPoint point, SKPoint normal) new SKPoint (pt.x + sz.X, pt.y + sz.Y); /// - /// Translates a by the negative of a given . + /// Translates a by the negative of a given . /// - /// The to translate. - /// The that specifies the numbers to subtract from the coordinates of . - /// The translated . + /// The to translate. + /// The that specifies the numbers to subtract from the coordinates of . + /// The translated . public static SKPoint operator - (SKPoint pt, SKSizeI sz) => new SKPoint (pt.X - sz.Width, pt.Y - sz.Height); /// - /// Translates a by the negative of a given . + /// Translates a by the negative of a given . /// - /// The to translate. - /// The that specifies the numbers to subtract from the coordinates of . - /// The translated . + /// The to translate. + /// The that specifies the numbers to subtract from the coordinates of . + /// The translated . public static SKPoint operator - (SKPoint pt, SKSize sz) => new SKPoint (pt.X - sz.Width, pt.Y - sz.Height); /// /// Translates a given point by the negative of a specified offset. /// - /// The to translate. + /// The to translate. /// The point that specifies the numbers to subtract from the coordinates of . - /// The translated . + /// The translated . public static SKPoint operator - (SKPoint pt, SKPointI sz) => new SKPoint (pt.X - sz.X, pt.Y - sz.Y); /// /// Translates a given point by the negative of a specified offset. /// - /// The to translate. + /// The to translate. /// The point that specifies the numbers to subtract from the coordinates of . - /// The translated . + /// The translated . public static SKPoint operator - (SKPoint pt, SKPoint sz) => new SKPoint (pt.X - sz.X, pt.Y - sz.Y); @@ -259,14 +259,14 @@ public static implicit operator SKPoint (Vector2 vector) => public partial struct SKPointI { /// - /// Represents a new instance of the class with member data left uninitialized. + /// Represents a new instance of the class with member data left uninitialized. /// public static readonly SKPointI Empty; /// - /// Initializes a new instance of the class from a . + /// Initializes a new instance of the class from a . /// - /// A that specifies the coordinates for the new . + /// A that specifies the coordinates for the new . public SKPointI (SKSizeI sz) { x = sz.Width; @@ -285,7 +285,7 @@ public SKPointI (int x, int y) } /// - /// Gets a value indicating whether this is empty. + /// Gets a value indicating whether this is empty. /// public readonly bool IsEmpty => this == Empty; @@ -300,10 +300,10 @@ public SKPointI (int x, int y) public readonly int LengthSquared => x * x + y * y; /// - /// Translates this by the specified . + /// Translates this by the specified . /// - /// The used to offset this . - /// This method adjusts the and values of this to the sum of the and values of this and . + /// The used to offset this . + /// This method adjusts the and values of this to the sum of the and values of this and . public void Offset (SKPointI p) { x += p.X; @@ -311,7 +311,7 @@ public void Offset (SKPointI p) } /// - /// Translates this by the specified amount. + /// Translates this by the specified amount. /// /// The amount to offset the x-coordinate. /// The amount to offset the y-coordinate. @@ -322,9 +322,9 @@ public void Offset (int dx, int dy) } /// - /// Converts this to a human readable string. + /// Converts this to a human readable string. /// - /// A string that represents this . + /// A string that represents this . public readonly override string ToString () => $"{{X={x},Y={y}}}"; /// @@ -381,10 +381,10 @@ public static SKPointI Reflect (SKPointI point, SKPointI normal) } /// - /// Converts the specified to a by rounding the values of the to the next higher integer values. + /// Converts the specified to a by rounding the values of the to the next higher integer values. /// - /// The to convert. - /// The this method converts to. + /// The to convert. + /// The this method converts to. public static SKPointI Ceiling (SKPoint value) { int x, y; @@ -397,10 +397,10 @@ public static SKPointI Ceiling (SKPoint value) } /// - /// Converts the specified to a object by rounding the values to the nearest integer. + /// Converts the specified to a object by rounding the values to the nearest integer. /// - /// The to convert. - /// The this method converts to. + /// The to convert. + /// The this method converts to. public static SKPointI Round (SKPoint value) { int x, y; @@ -413,10 +413,10 @@ public static SKPointI Round (SKPoint value) } /// - /// Converts the specified to a by truncating the values of the . + /// Converts the specified to a by truncating the values of the . /// - /// The to convert. - /// The this method converts to. + /// The to convert. + /// The this method converts to. public static SKPointI Truncate (SKPoint value) { int x, y; @@ -429,14 +429,14 @@ public static SKPointI Truncate (SKPoint value) } /// - /// Translates a given by the specified . + /// Translates a given by the specified . /// /// The point to translate. /// The size that specifies the number to add to the coordinates of . /// The translated point. public static SKPointI Add (SKPointI pt, SKSizeI sz) => pt + sz; /// - /// Translates a given by the specified point. + /// Translates a given by the specified point. /// /// The point to translate. /// The point that specifies the number to add to the coordinates of . @@ -444,66 +444,66 @@ public static SKPointI Truncate (SKPoint value) public static SKPointI Add (SKPointI pt, SKPointI sz) => pt + sz; /// - /// Returns the result of subtracting specified from the specified . + /// Returns the result of subtracting specified from the specified . /// - /// The to be subtracted from. - /// The to subtract from the . - /// The that is the result of the subtraction operation. + /// The to be subtracted from. + /// The to subtract from the . + /// The that is the result of the subtraction operation. public static SKPointI Subtract (SKPointI pt, SKSizeI sz) => pt - sz; /// - /// Returns the result of subtracting specified point from the specified . + /// Returns the result of subtracting specified point from the specified . /// - /// The to be subtracted from. - /// The point to subtract from the . - /// The that is the result of the subtraction operation. + /// The to be subtracted from. + /// The point to subtract from the . + /// The that is the result of the subtraction operation. public static SKPointI Subtract (SKPointI pt, SKPointI sz) => pt - sz; /// - /// Translates a by a given . + /// Translates a by a given . /// - /// The to translate. - /// A that specifies the pair of numbers to add to the coordinates of . - /// Returns the translated . + /// The to translate. + /// A that specifies the pair of numbers to add to the coordinates of . + /// Returns the translated . public static SKPointI operator + (SKPointI pt, SKSizeI sz) => new SKPointI (pt.X + sz.Width, pt.Y + sz.Height); /// - /// Translates a by a given offset. + /// Translates a by a given offset. /// - /// The to translate. + /// The to translate. /// A point that specifies the pair of numbers to add to the coordinates of . - /// Returns the translated . + /// Returns the translated . public static SKPointI operator + (SKPointI pt, SKPointI sz) => new SKPointI (pt.X + sz.X, pt.Y + sz.Y); /// - /// Translates a by the negative of a given . + /// Translates a by the negative of a given . /// - /// The to translate. - /// The that specifies the numbers to subtract from the coordinates of . - /// The translated . + /// The to translate. + /// The that specifies the numbers to subtract from the coordinates of . + /// The translated . public static SKPointI operator - (SKPointI pt, SKSizeI sz) => new SKPointI (pt.X - sz.Width, pt.Y - sz.Height); /// - /// Translates a by the negative of a given point. + /// Translates a by the negative of a given point. /// - /// The to translate. + /// The to translate. /// The point that specifies the numbers to subtract from the coordinates of . - /// The translated . + /// The translated . public static SKPointI operator - (SKPointI pt, SKPointI sz) => new SKPointI (pt.X - sz.X, pt.Y - sz.Y); /// - /// Converts an into an . + /// Converts an into an . /// - /// The to convert. - /// The new . + /// The to convert. + /// The new . public static explicit operator SKSizeI (SKPointI p) => new SKSizeI (p.X, p.Y); /// - /// Converts an into an . + /// Converts an into an . /// - /// The to convert. - /// The new . + /// The to convert. + /// The new . public static implicit operator SKPoint (SKPointI p) => new SKPoint (p.X, p.Y); @@ -517,7 +517,7 @@ public static implicit operator Vector2 (SKPointI point) => public partial struct SKPoint3 { /// - /// Represents a new instance of the class with member data left uninitialized. + /// Represents a new instance of the class with member data left uninitialized. /// public static readonly SKPoint3 Empty; @@ -535,14 +535,14 @@ public SKPoint3 (float x, float y, float z) } /// - /// Gets a value indicating whether this is empty. + /// Gets a value indicating whether this is empty. /// public readonly bool IsEmpty => this == Empty; /// - /// Converts this to a human readable string. + /// Converts this to a human readable string. /// - /// A string that represents this . + /// A string that represents this . public readonly override string ToString () => $"{{X={x}, Y={y}, Z={z}}}"; /// @@ -592,7 +592,7 @@ public static implicit operator SKPoint3 (Vector3 vector) => public partial struct SKSize { /// - /// Represents a new instance of the class with member data left uninitialized. + /// Represents a new instance of the class with member data left uninitialized. /// public static readonly SKSize Empty; @@ -618,21 +618,21 @@ public SKSize (SKPoint pt) } /// - /// Gets a value that indicates whether this structure has zero width and height. + /// Gets a value that indicates whether this structure has zero width and height. /// public readonly bool IsEmpty => this == Empty; /// - /// Converts a structure to a structure. + /// Converts a structure to a structure. /// - /// Returns a structure. + /// Returns a structure. public readonly SKPoint ToPoint () => new SKPoint (w, h); /// - /// Converts a structure to a structure. + /// Converts a structure to a structure. /// - /// Returns a structure. + /// Returns a structure. public readonly SKSizeI ToSizeI () { int w, h; @@ -645,58 +645,58 @@ public readonly SKSizeI ToSizeI () } /// - /// Converts this to a human readable string. + /// Converts this to a human readable string. /// - /// A string that represents this . + /// A string that represents this . public readonly override string ToString () => $"{{Width={w}, Height={h}}}"; /// - /// Adds the width and height of one structure to the width and height of another structure. + /// Adds the width and height of one structure to the width and height of another structure. /// - /// The first structure to add. - /// The second structure to add. - /// A structure that is the result of the addition operation. + /// The first structure to add. + /// The second structure to add. + /// A structure that is the result of the addition operation. public static SKSize Add (SKSize sz1, SKSize sz2) => sz1 + sz2; /// - /// Subtracts the width and height of one structure from the width and height of another structure. + /// Subtracts the width and height of one structure from the width and height of another structure. /// - /// The structure on the left side of the subtraction operator. - /// The structure on the right side of the subtraction operator. - /// A that is the result of the subtraction operation. + /// The structure on the left side of the subtraction operator. + /// The structure on the right side of the subtraction operator. + /// A that is the result of the subtraction operation. public static SKSize Subtract (SKSize sz1, SKSize sz2) => sz1 - sz2; /// - /// Adds the width and height of one structure to the width and height of another structure. + /// Adds the width and height of one structure to the width and height of another structure. /// - /// The first structure to add. - /// The second structure to add. - /// A structure that is the result of the addition operation. + /// The first structure to add. + /// The second structure to add. + /// A structure that is the result of the addition operation. public static SKSize operator + (SKSize sz1, SKSize sz2) => new SKSize (sz1.Width + sz2.Width, sz1.Height + sz2.Height); /// - /// Subtracts the width and height of one structure from the width and height of another structure. + /// Subtracts the width and height of one structure from the width and height of another structure. /// - /// The structure on the left side of the subtraction operator. - /// The structure on the right side of the subtraction operator. - /// A that is the result of the subtraction operation. + /// The structure on the left side of the subtraction operator. + /// The structure on the right side of the subtraction operator. + /// A that is the result of the subtraction operation. public static SKSize operator - (SKSize sz1, SKSize sz2) => new SKSize (sz1.Width - sz2.Width, sz1.Height - sz2.Height); /// - /// Converts the specified structure to a structure. + /// Converts the specified structure to a structure. /// - /// The structure to be converted. - /// The structure structure to which this operator converts. + /// The structure to be converted. + /// The structure structure to which this operator converts. public static explicit operator SKPoint (SKSize size) => new SKPoint (size.Width, size.Height); /// - /// Converts the specified structure to a structure. + /// Converts the specified structure to a structure. /// - /// The structure to be converted. - /// The structure structure to which this operator converts. + /// The structure to be converted. + /// The structure structure to which this operator converts. public static implicit operator SKSize (SKSizeI size) => new SKSize (size.Width, size.Height); } @@ -707,7 +707,7 @@ public static implicit operator SKSize (SKSizeI size) => public partial struct SKSizeI { /// - /// Represents a new instance of the class with member data left uninitialized. + /// Represents a new instance of the class with member data left uninitialized. /// public static readonly SKSizeI Empty; @@ -733,62 +733,62 @@ public SKSizeI (SKPointI pt) } /// - /// Gets a value that indicates whether this structure has zero width and height. + /// Gets a value that indicates whether this structure has zero width and height. /// public readonly bool IsEmpty => this == Empty; /// - /// Converts a structure to a structure. + /// Converts a structure to a structure. /// - /// Returns a structure. + /// Returns a structure. public readonly SKPointI ToPointI () => new SKPointI (w, h); /// - /// Converts this to a human readable string. + /// Converts this to a human readable string. /// - /// A string that represents this . + /// A string that represents this . public readonly override string ToString () => $"{{Width={w}, Height={h}}}"; /// - /// Adds the width and height of one structure to the width and height of another structure. + /// Adds the width and height of one structure to the width and height of another structure. /// - /// The first structure to add. - /// The second structure to add. - /// A structure that is the result of the addition operation. + /// The first structure to add. + /// The second structure to add. + /// A structure that is the result of the addition operation. public static SKSizeI Add (SKSizeI sz1, SKSizeI sz2) => sz1 + sz2; /// - /// Subtracts the width and height of one structure from the width and height of another structure. + /// Subtracts the width and height of one structure from the width and height of another structure. /// - /// The structure on the left side of the subtraction operator. - /// The structure on the right side of the subtraction operator. - /// A that is the result of the subtraction operation. + /// The structure on the left side of the subtraction operator. + /// The structure on the right side of the subtraction operator. + /// A that is the result of the subtraction operation. public static SKSizeI Subtract (SKSizeI sz1, SKSizeI sz2) => sz1 - sz2; /// - /// Adds the width and height of one structure to the width and height of another structure. + /// Adds the width and height of one structure to the width and height of another structure. /// - /// The first structure to add. - /// The second structure to add. - /// A structure that is the result of the addition operation. + /// The first structure to add. + /// The second structure to add. + /// A structure that is the result of the addition operation. public static SKSizeI operator + (SKSizeI sz1, SKSizeI sz2) => new SKSizeI (sz1.Width + sz2.Width, sz1.Height + sz2.Height); /// - /// Subtracts the width and height of one structure from the width and height of another structure. + /// Subtracts the width and height of one structure from the width and height of another structure. /// - /// The structure on the left side of the subtraction operator. - /// The structure on the right side of the subtraction operator. - /// A that is the result of the subtraction operation. + /// The structure on the left side of the subtraction operator. + /// The structure on the right side of the subtraction operator. + /// A that is the result of the subtraction operation. public static SKSizeI operator - (SKSizeI sz1, SKSizeI sz2) => new SKSizeI (sz1.Width - sz2.Width, sz1.Height - sz2.Height); /// - /// Converts the specified structure to a structure. + /// Converts the specified structure to a structure. /// - /// The structure to be converted. - /// The structure structure to which this operator converts. + /// The structure to be converted. + /// The structure structure to which this operator converts. public static explicit operator SKPointI (SKSizeI size) => new SKPointI (size.Width, size.Height); } @@ -799,12 +799,12 @@ public static explicit operator SKPointI (SKSizeI size) => public partial struct SKRect { /// - /// Represents a new instance of the class with member data left uninitialized. + /// Represents a new instance of the class with member data left uninitialized. /// public static readonly SKRect Empty; /// - /// Initializes a new instance of the class with the specified upper-left corner and lower-right corner. + /// Initializes a new instance of the class with the specified upper-left corner and lower-right corner. /// /// The left coordinate. /// The top coordinate. @@ -834,7 +834,7 @@ public SKRect (float left, float top, float right, float bottom) public readonly float Width => right - left; /// - /// Gets the height of the . + /// Gets the height of the . /// public readonly float Height => bottom - top; @@ -922,12 +922,12 @@ private readonly SKRect AspectResize (SKSize size, bool fit) } /// - /// Creates and returns an enlarged copy of the specified structure. The copy is enlarged by the specified amount and the original rectangle remains unmodified. + /// Creates and returns an enlarged copy of the specified structure. The copy is enlarged by the specified amount and the original rectangle remains unmodified. /// - /// The to be copied. This rectangle is not modified. + /// The to be copied. This rectangle is not modified. /// The amount to enlarge the copy of the rectangle horizontally. /// The amount to enlarge the copy of the rectangle vertically. - /// The enlarged . + /// The enlarged . public static SKRect Inflate (SKRect rect, float x, float y) { var r = new SKRect (rect.left, rect.top, rect.right, rect.bottom); @@ -936,17 +936,17 @@ public static SKRect Inflate (SKRect rect, float x, float y) } /// - /// Enlarges this structure by the specified amount. + /// Enlarges this structure by the specified amount. /// - /// The amount to inflate this . + /// The amount to inflate this . public void Inflate (SKSize size) => Inflate (size.Width, size.Height); /// - /// Enlarges this structure by the specified amount. + /// Enlarges this structure by the specified amount. /// - /// The amount to inflate this structure horizontally. - /// The amount to inflate this structure vertically. + /// The amount to inflate this structure horizontally. + /// The amount to inflate this structure vertically. public void Inflate (float x, float y) { left -= x; @@ -956,11 +956,11 @@ public void Inflate (float x, float y) } /// - /// Returns a structure that represents the intersection of two rectangles. If there is no intersection, and empty is returned. + /// Returns a structure that represents the intersection of two rectangles. If there is no intersection, and empty is returned. /// /// A rectangle to intersect. /// A rectangle to intersect. - /// A third structure the size of which represents the overlapped area of the two specified rectangles. + /// A third structure the size of which represents the overlapped area of the two specified rectangles. public static SKRect Intersect (SKRect a, SKRect b) { if (!a.IntersectsWithInclusive (b)) { @@ -974,7 +974,7 @@ public static SKRect Intersect (SKRect a, SKRect b) } /// - /// Replaces this structure with the intersection of itself and the specified structure. + /// Replaces this structure with the intersection of itself and the specified structure. /// /// The rectangle to intersect. public void Intersect (SKRect rect) => @@ -985,7 +985,7 @@ public void Intersect (SKRect rect) => /// /// A rectangle to union. /// A rectangle to union. - /// A third structure that contains both of the two rectangles that form the union. + /// A third structure that contains both of the two rectangles that form the union. public static SKRect Union (SKRect a, SKRect b) => new SKRect ( Math.Min (a.left, b.left), @@ -994,17 +994,17 @@ public static SKRect Union (SKRect a, SKRect b) => Math.Max (a.bottom, b.bottom)); /// - /// Replaces this structure with the union of itself and the specified structure. + /// Replaces this structure with the union of itself and the specified structure. /// /// A rectangle to union. public void Union (SKRect rect) => this = Union (this, rect); /// - /// Converts the specified structure to a structure. + /// Converts the specified structure to a structure. /// - /// The structure to convert. - /// The structure that is converted from the specified structure. + /// The structure to convert. + /// The structure that is converted from the specified structure. public static implicit operator SKRect (SKRectI r) => new SKRect (r.Left, r.Top, r.Right, r.Bottom); @@ -1070,9 +1070,9 @@ public void Offset (float x, float y) public void Offset (SKPoint pos) => Offset (pos.X, pos.Y); /// - /// Converts this to a human readable string. + /// Converts this to a human readable string. /// - /// A string that represents this . + /// A string that represents this . public readonly override string ToString () => $"{{Left={Left},Top={Top},Width={Width},Height={Height}}}"; @@ -1120,12 +1120,12 @@ public static SKRect Create (float x, float y, float width, float height) => public partial struct SKRectI { /// - /// Represents a new instance of the class with member data left uninitialized. + /// Represents a new instance of the class with member data left uninitialized. /// public static readonly SKRectI Empty; /// - /// Initializes a new instance of the class with the specified upper-left corner and lower-right corner. + /// Initializes a new instance of the class with the specified upper-left corner and lower-right corner. /// /// The left coordinate. /// The top coordinate. @@ -1150,12 +1150,12 @@ public SKRectI (int left, int top, int right, int bottom) public readonly int MidY => top + (Height / 2); /// - /// Gets the width of the . + /// Gets the width of the . /// public readonly int Width => right - left; /// - /// Gets the height of the . + /// Gets the height of the . /// public readonly int Height => bottom - top; @@ -1165,7 +1165,7 @@ public SKRectI (int left, int top, int right, int bottom) public readonly bool IsEmpty => this == Empty; /// - /// Gets or sets the size of the . + /// Gets or sets the size of the . /// public SKSizeI Size { readonly get => new SKSizeI (Width, Height); @@ -1221,19 +1221,19 @@ public readonly SKRectI AspectFill (SKSizeI size) => Floor (((SKRect)this).AspectFill (size)); /// - /// Converts the specified structure to a structure by rounding the values to the next higher integer values. + /// Converts the specified structure to a structure by rounding the values to the next higher integer values. /// - /// The structure to be converted. - /// Returns a . + /// The structure to be converted. + /// Returns a . public static SKRectI Ceiling (SKRect value) => Ceiling (value, false); /// - /// Converts the specified structure to a structure by rounding the values to the next higher integer values. + /// Converts the specified structure to a structure by rounding the values to the next higher integer values. /// - /// The structure to be converted. + /// The structure to be converted. /// Whether or not to move in the direction of the side. - /// Returns a . + /// Returns a . public static SKRectI Ceiling (SKRect value, bool outwards) { int x, y, r, b; @@ -1248,12 +1248,12 @@ public static SKRectI Ceiling (SKRect value, bool outwards) } /// - /// Creates and returns an enlarged copy of the specified structure. The copy is enlarged by the specified amount and the original rectangle remains unmodified. + /// Creates and returns an enlarged copy of the specified structure. The copy is enlarged by the specified amount and the original rectangle remains unmodified. /// - /// The to be copied. This rectangle is not modified. + /// The to be copied. This rectangle is not modified. /// The amount to enlarge the copy of the rectangle horizontally. /// The amount to enlarge the copy of the rectangle vertically. - /// The enlarged . + /// The enlarged . public static SKRectI Inflate (SKRectI rect, int x, int y) { var r = new SKRectI (rect.left, rect.top, rect.right, rect.bottom); @@ -1262,17 +1262,17 @@ public static SKRectI Inflate (SKRectI rect, int x, int y) } /// - /// Enlarges this structure by the specified amount. + /// Enlarges this structure by the specified amount. /// - /// The amount to inflate this . + /// The amount to inflate this . public void Inflate (SKSizeI size) => Inflate (size.Width, size.Height); /// - /// Enlarges this structure by the specified amount. + /// Enlarges this structure by the specified amount. /// - /// The amount to inflate this structure horizontally. - /// The amount to inflate this structure vertically. + /// The amount to inflate this structure horizontally. + /// The amount to inflate this structure vertically. public void Inflate (int width, int height) { left -= width; @@ -1282,11 +1282,11 @@ public void Inflate (int width, int height) } /// - /// Returns a structure that represents the intersection of two rectangles. If there is no intersection, and empty is returned. + /// Returns a structure that represents the intersection of two rectangles. If there is no intersection, and empty is returned. /// /// A rectangle to intersect. /// A rectangle to intersect. - /// A third structure the size of which represents the overlapped area of the two specified rectangles. + /// A third structure the size of which represents the overlapped area of the two specified rectangles. public static SKRectI Intersect (SKRectI a, SKRectI b) { if (!a.IntersectsWithInclusive (b)) @@ -1300,17 +1300,17 @@ public static SKRectI Intersect (SKRectI a, SKRectI b) } /// - /// Replaces this structure with the intersection of itself and the specified structure. + /// Replaces this structure with the intersection of itself and the specified structure. /// /// The rectangle to intersect. public void Intersect (SKRectI rect) => this = Intersect (this, rect); /// - /// Converts the specified structure to a structure by rounding the values to the nearest integer values. + /// Converts the specified structure to a structure by rounding the values to the nearest integer values. /// - /// The structure to be converted. - /// Returns a . + /// The structure to be converted. + /// Returns a . public static SKRectI Round (SKRect value) { int x, y, r, b; @@ -1325,18 +1325,18 @@ public static SKRectI Round (SKRect value) } /// - /// Converts the specified structure to a structure by rounding the values to the closest lower integer values. + /// Converts the specified structure to a structure by rounding the values to the closest lower integer values. /// - /// The structure to be converted. - /// Returns a . + /// The structure to be converted. + /// Returns a . public static SKRectI Floor (SKRect value) => Floor (value, false); /// - /// Converts the specified structure to a structure by rounding the values to the closest lower integer values. + /// Converts the specified structure to a structure by rounding the values to the closest lower integer values. /// - /// The structure to be converted. + /// The structure to be converted. /// Whether or not to move in the direction of the side. - /// Returns a . + /// Returns a . public static SKRectI Floor (SKRect value, bool inwards) { int x, y, r, b; @@ -1351,10 +1351,10 @@ public static SKRectI Floor (SKRect value, bool inwards) } /// - /// Converts the specified structure to a structure by truncating the values. + /// Converts the specified structure to a structure by truncating the values. /// - /// The to be converted. - /// The truncated value of the . + /// The to be converted. + /// The truncated value of the . public static SKRectI Truncate (SKRect value) { int x, y, r, b; @@ -1373,7 +1373,7 @@ public static SKRectI Truncate (SKRect value) /// /// A rectangle to union. /// A rectangle to union. - /// A third structure that contains both of the two rectangles that form the union. + /// A third structure that contains both of the two rectangles that form the union. public static SKRectI Union (SKRectI a, SKRectI b) => new SKRectI ( Math.Min (a.Left, b.Left), @@ -1382,7 +1382,7 @@ public static SKRectI Union (SKRectI a, SKRectI b) => Math.Max (a.Bottom, b.Bottom)); /// - /// Replaces this structure with the union of itself and the specified structure. + /// Replaces this structure with the union of itself and the specified structure. /// /// A rectangle to union. public void Union (SKRectI rect) => @@ -1450,9 +1450,9 @@ public void Offset (int x, int y) public void Offset (SKPointI pos) => Offset (pos.X, pos.Y); /// - /// Converts this to a human readable string. + /// Converts this to a human readable string. /// - /// A string that represents this . + /// A string that represents this . public readonly override string ToString () => $"{{Left={Left},Top={Top},Width={Width},Height={Height}}}"; diff --git a/binding/SkiaSharp/SKAbstractManagedStream.cs b/binding/SkiaSharp/SKAbstractManagedStream.cs index ed35e6a141..cbffa681b6 100644 --- a/binding/SkiaSharp/SKAbstractManagedStream.cs +++ b/binding/SkiaSharp/SKAbstractManagedStream.cs @@ -6,7 +6,7 @@ namespace SkiaSharp { /// - /// Represents a (a seekable, rewindable Skia stream). + /// Represents a (a seekable, rewindable Skia stream). /// public unsafe abstract class SKAbstractManagedStream : SKStreamAsset { diff --git a/binding/SkiaSharp/SKAbstractManagedWStream.cs b/binding/SkiaSharp/SKAbstractManagedWStream.cs index f4f807111e..73873a81b5 100644 --- a/binding/SkiaSharp/SKAbstractManagedWStream.cs +++ b/binding/SkiaSharp/SKAbstractManagedWStream.cs @@ -8,7 +8,7 @@ namespace SkiaSharp { /// - /// Represents a (a writeable Skia stream). + /// Represents a (a writeable Skia stream). /// public unsafe abstract class SKAbstractManagedWStream : SKWStream { diff --git a/binding/SkiaSharp/SKAutoCoInitialize.cs b/binding/SkiaSharp/SKAutoCoInitialize.cs index e8a48d0a9e..cb0c17d649 100644 --- a/binding/SkiaSharp/SKAutoCoInitialize.cs +++ b/binding/SkiaSharp/SKAutoCoInitialize.cs @@ -9,7 +9,7 @@ namespace SkiaSharp /// /// Convenience class used to automatically initialize and uninitialize COM on supported platforms. /// - /// This is only supported on Windows, and is usually not needed. However, when creating a .NET Core app, COM may not be initialized.Currently, only and more specifically, XPS documents require COM. + /// This is only supported on Windows, and is usually not needed. However, when creating a .NET Core app, COM may not be initialized.Currently, only and more specifically, XPS documents require COM. public partial class SKAutoCoInitialize : IDisposable { private long hResult; diff --git a/binding/SkiaSharp/SKBitmap.cs b/binding/SkiaSharp/SKBitmap.cs index fa6a7cec16..011b4fd5eb 100644 --- a/binding/SkiaSharp/SKBitmap.cs +++ b/binding/SkiaSharp/SKBitmap.cs @@ -12,9 +12,9 @@ namespace SkiaSharp // TODO: `GetAddr` and `GetPixel` are confusing /// - /// The specifies a raster bitmap. + /// The specifies a raster bitmap. /// - /// A bitmap has an integer width and height, and a format (color type), and a pointer to the actual pixels. Bitmaps can be drawn into a , but they are also used to specify the target of a ' drawing operations.A exposes , which lets a caller write its pixels. To retrieve a pointer to the raw image data of the bitmap, call the method, and then call the method to get a pointer to the image data. Once you no longer need to use the raw data pointer, call the method. The raw data is laid out in the format configured at the time that the bitmap was created.(Note: As of SkiaSharp 1.60.0, calls to and are no longer required, and they no longer exist as part of the API.) + /// A bitmap has an integer width and height, and a format (color type), and a pointer to the actual pixels. Bitmaps can be drawn into a , but they are also used to specify the target of a ' drawing operations.A exposes , which lets a caller write its pixels. To retrieve a pointer to the raw image data of the bitmap, call the method, and then call the method to get a pointer to the image data. Once you no longer need to use the raw data pointer, call the method. The raw data is laid out in the format configured at the time that the bitmap was created.(Note: As of SkiaSharp 1.60.0, calls to and are no longer required, and they no longer exist as part of the API.) public unsafe class SKBitmap : SKObject, ISKSkipObjectRegistration { private const string UnsupportedColorTypeMessage = "Setting the ColorTable is only supported for bitmaps with ColorTypes of Index8."; @@ -26,7 +26,7 @@ internal SKBitmap (IntPtr handle, bool owns) } /// - /// Default constructor that creates a bitmap with zero width and height, and no pixels. Its color type is set to . + /// Default constructor that creates a bitmap with zero width and height, and no pixels. Its color type is set to . /// /// This constructor does not allocate a backing store for the bitmap. public SKBitmap () @@ -38,11 +38,11 @@ public SKBitmap () } /// - /// Creates a bitmap with the given width, height and opacity with color type set to + /// Creates a bitmap with the given width, height and opacity with color type set to /// /// The desired width in pixels. /// The desired height in pixels. - /// If true, sets the to , otherwise it sets it to . + /// If true, sets the to , otherwise it sets it to . /// This constructor might throw an exception if it is not possible to create a bitmap with the specified configuration (for example, the image info requires a color table, and there is no color table). public SKBitmap (int width, int height, bool isOpaque = false) : this (width, height, SKImageInfo.PlatformColorType, isOpaque ? SKAlphaType.Opaque : SKAlphaType.Premul) @@ -54,8 +54,8 @@ public SKBitmap (int width, int height, bool isOpaque = false) /// /// The desired width in pixels. /// The desired height in pixels. - /// The desired . - /// The desired . + /// The desired . + /// The desired . /// This constructor might throw an exception if it is not possible to create a bitmap with the specified configuration (for example, the image info requires a color table, and there is no color table). public SKBitmap (int width, int height, SKColorType colorType, SKAlphaType alphaType) : this (new SKImageInfo (width, height, colorType, alphaType)) @@ -73,7 +73,7 @@ public SKBitmap (int width, int height, SKColorType colorType, SKAlphaType alpha } /// - /// Constructor that configures the bitmap based on an specification. + /// Constructor that configures the bitmap based on an specification. /// /// The description of the desired image format. /// This constructor might throw an exception if it is not possible to create a bitmap with the specified configuration (for example, the image info requires a color table, and there is no color table). @@ -83,7 +83,7 @@ public SKBitmap (SKImageInfo info) } /// - /// Constructor that configures the bitmap based on an specification, and the specified number of bytes per row (the stride size) + /// Constructor that configures the bitmap based on an specification, and the specified number of bytes per row (the stride size) /// /// The description of the desired image format. /// The number of bytes per row. @@ -97,7 +97,7 @@ public SKBitmap (SKImageInfo info, int rowBytes) } /// - /// Constructor that configures the bitmap based on an specification. + /// Constructor that configures the bitmap based on an specification. /// /// The description of the desired image format. /// The additional flags. @@ -157,7 +157,7 @@ public bool TryAllocPixels (SKImageInfo info, SKBitmapAllocFlags flags) /// /// Reset the bitmap to its initial state. /// - /// The result is a bitmap with zero width and height, and no pixels. Its color type is set to . If we are a (shared) owner of the pixels, that ownership is decremented. + /// The result is a bitmap with zero width and height, and no pixels. Its color type is set to . If we are a (shared) owner of the pixels, that ownership is decremented. public void Reset () { SkiaApi.sk_bitmap_reset (Handle); @@ -211,7 +211,7 @@ public IntPtr GetAddress (int x, int y) => /// /// The x-cordinate. /// The y-cordinate. - /// Alpha only color types return black with the appropriate alpha set. The value is undefined for , if the coordinates are out of bounds, if the bitmap does not have any pixels, or has not be locked with . + /// Alpha only color types return black with the appropriate alpha set. The value is undefined for , if the coordinates are out of bounds, if the bitmap does not have any pixels, or has not be locked with . /// In most cases this will require unpremultiplying the color. public SKColor GetPixel (int x, int y) { @@ -409,7 +409,7 @@ public bool ExtractAlpha (SKBitmap destination, SKPaint paint, out SKPointI offs public bool ReadyToDraw => SkiaApi.sk_bitmap_ready_to_draw (Handle); /// - /// Gets an instance of with all the properties of the bitmap. + /// Gets an instance of with all the properties of the bitmap. /// public SKImageInfo Info { get { @@ -441,9 +441,9 @@ public SKColorType ColorType { } /// - /// Gets the configured for the bitmap. + /// Gets the configured for the bitmap. /// - /// The configured . + /// The configured . /// This determines the kind of encoding used for the alpha channel, opaque, premultiplied or unpremultiplied. public SKAlphaType AlphaType { get { return Info.AlphaType; } @@ -459,7 +459,7 @@ public SKColorSpace ColorSpace { /// /// Gets the number of bytes used per pixel. /// - /// This is calculated from the . If the color type is , then the value will be 0. + /// This is calculated from the . If the color type is , then the value will be 0. public int BytesPerPixel { get { return Info.BytesPerPixel; } } @@ -467,13 +467,13 @@ public int BytesPerPixel { /// /// The number of bytes per row. /// - /// The same as . + /// The same as . public int RowBytes { get { return (int)SkiaApi.sk_bitmap_get_row_bytes (Handle); } } /// - /// Returns the byte size of the pixels, based on the and . + /// Returns the byte size of the pixels, based on the and . /// /// The byte size of the pixels. /// Note: this truncates the result to 32-bits. @@ -576,7 +576,7 @@ public SKColor[] Pixels { /// /// Gets a value indicating whether the bitmap has empty dimensions. /// - /// In most cases, will return the desired result as it checks as well. + /// In most cases, will return the desired result as it checks as well. public bool IsEmpty { get { return Info.IsEmpty; } } @@ -584,7 +584,7 @@ public bool IsEmpty { /// /// Gets a value indicating whether the bitmap has any pixelref. /// - /// This can return true even if the dimensions of the bitmap are not empty. In most cases, will return the desired result as it checks as well. + /// This can return true even if the dimensions of the bitmap are not empty. In most cases, will return the desired result as it checks as well. public bool IsNull { get { return SkiaApi.sk_bitmap_is_null (Handle); } } @@ -611,7 +611,7 @@ public bool IsImmutable { /// Decode the bitmap information using the specified stream. /// /// The stream to decode. - /// The decoded bitmap information, or if there was an error. + /// The decoded bitmap information, or if there was an error. public static SKImageInfo DecodeBounds (Stream stream) { if (stream == null) { @@ -626,7 +626,7 @@ public static SKImageInfo DecodeBounds (Stream stream) /// Decode the bitmap information using the specified stream. /// /// The stream to decode. - /// The decoded bitmap information, or if there was an error. + /// The decoded bitmap information, or if there was an error. public static SKImageInfo DecodeBounds (SKStream stream) { if (stream == null) { @@ -641,7 +641,7 @@ public static SKImageInfo DecodeBounds (SKStream stream) /// Decode the bitmap information using the specified data. /// /// The data to decode. - /// The decoded bitmap information, or if there was an error. + /// The decoded bitmap information, or if there was an error. public static SKImageInfo DecodeBounds (SKData data) { if (data == null) { @@ -656,7 +656,7 @@ public static SKImageInfo DecodeBounds (SKData data) /// Decode the bitmap information for the specified filename. /// /// The filename of the bitmap to decode. - /// The decoded bitmap information, or if there was an error. + /// The decoded bitmap information, or if there was an error. public static SKImageInfo DecodeBounds (string filename) { if (filename == null) { @@ -671,7 +671,7 @@ public static SKImageInfo DecodeBounds (string filename) /// Decode the bitmap information using the specified byte buffer. /// /// The byte buffer to decode. - /// The decoded bitmap information, or if there was an error. + /// The decoded bitmap information, or if there was an error. public static SKImageInfo DecodeBounds (byte[] buffer) => DecodeBounds (buffer.AsSpan ()); @@ -1143,7 +1143,7 @@ public bool ScalePixels (SKPixmap destination, SKSamplingOptions sampling) /// Creates a new bitmap from a copy of the pixel data in the specified image. /// /// The image to use to create a bitmap. - /// Returns a new instance of , or null if the bitmap could not be created. + /// Returns a new instance of , or null if the bitmap could not be created. public static SKBitmap FromImage (SKImage image) { if (image == null) { diff --git a/binding/SkiaSharp/SKCanvas.cs b/binding/SkiaSharp/SKCanvas.cs index d7233bcf76..8a8001d072 100644 --- a/binding/SkiaSharp/SKCanvas.cs +++ b/binding/SkiaSharp/SKCanvas.cs @@ -368,7 +368,7 @@ public void DrawLine (float x0, float y0, float x1, float y1, SKPaint paint) // Clear /// - /// Replaces all the pixels in the canvas' current clip with the color. + /// Replaces all the pixels in the canvas' current clip with the color. /// public void Clear () => Clear (SKColors.Empty); @@ -399,7 +399,7 @@ public void Restore () /// Efficiently restores the state to a specific level. /// /// The number of levels to restore from, or -1 to restore all the way back to the initial value. - /// Efficient way to pop any calls to that happened after the save count reached . It is an error for to be greater than . To pop all the way back to the initial matrix/clip context set count to -1. + /// Efficient way to pop any calls to that happened after the save count reached . It is an error for to be greater than . To pop all the way back to the initial matrix/clip context set count to -1. public void RestoreToCount (int count) { SkiaApi.sk_canvas_restore_to_count (Handle, count); diff --git a/binding/SkiaSharp/SKCodec.cs b/binding/SkiaSharp/SKCodec.cs index fad7c4a31c..20071b3ec9 100644 --- a/binding/SkiaSharp/SKCodec.cs +++ b/binding/SkiaSharp/SKCodec.cs @@ -71,7 +71,7 @@ public SKSizeI GetScaledDimensions (float desiredScale) /// Modifies the specified subset to one that can decoded from this codec. /// /// The desired subset of the original bounds, which may be modified to a subset which is supported. - /// Returns true if this codec supports decoding the desired subset, otherwise false. The final subset can be used with . + /// Returns true if this codec supports decoding the desired subset, otherwise false. The final subset can be used with . public bool GetValidSubset (ref SKRectI desiredSubset) { fixed (SKRectI* ds = &desiredSubset) { @@ -80,7 +80,7 @@ public bool GetValidSubset (ref SKRectI desiredSubset) } /// - /// Gets the image data from the codec using the current . + /// Gets the image data from the codec using the current . /// public byte[] Pixels { get { @@ -143,7 +143,7 @@ public bool GetFrameInfo (int index, out SKCodecFrameInfo frameInfo) /// Decode the bitmap into the specified memory block. /// /// The memory block with the decoded bitmap. - /// Returns on success, or another value explaining the type of failure. + /// Returns on success, or another value explaining the type of failure. public SKCodecResult GetPixels (out byte[] pixels) => GetPixels (Info, out pixels); @@ -152,7 +152,7 @@ public SKCodecResult GetPixels (out byte[] pixels) => /// /// The description of the desired output format expected by the caller. /// The memory block with the decoded bitmap. - /// Returns on success, or another value explaining the type of failure. + /// Returns on success, or another value explaining the type of failure. /// The specified , can either be /// , or a new instance with a different /// configuration - which the codec may choose to ignore. @@ -170,8 +170,8 @@ public SKCodecResult GetPixels (SKImageInfo info, out byte[] pixels) /// Decode the bitmap into the specified memory block. /// /// The description of the desired output format expected by the caller. - /// The memory block to hold the decoded bitmap, with a length of at least . - /// Returns on success, or another value explaining the type of failure. + /// The memory block to hold the decoded bitmap, with a length of at least . + /// Returns on success, or another value explaining the type of failure. /// The specified , can either be /// , or a new instance with a different /// configuration - which the codec may choose to ignore. @@ -193,8 +193,8 @@ public SKCodecResult GetPixels (SKImageInfo info, byte[] pixels) /// Decode the bitmap into the specified memory block. /// /// The description of the desired output format expected by the caller. - /// The memory block to hold the decoded bitmap, with a total size of at least . - /// Returns on success, or another value explaining the type of failure. + /// The memory block to hold the decoded bitmap, with a total size of at least . + /// Returns on success, or another value explaining the type of failure. /// The specified , can either be /// , or a new instance with a different /// configuration - which the codec may choose to ignore. @@ -209,9 +209,9 @@ public SKCodecResult GetPixels (SKImageInfo info, IntPtr pixels) => /// Decode the bitmap into the specified memory block. /// /// The description of the desired output format expected by the caller. - /// The memory block to hold the decoded bitmap, with a total size of at least . + /// The memory block to hold the decoded bitmap, with a total size of at least . /// The bitmap decoding options. - /// Returns on success, or another value explaining the type of failure. + /// Returns on success, or another value explaining the type of failure. /// The specified , can either be /// , or a new instance with a different /// configuration - which the codec may choose to ignore. @@ -226,10 +226,10 @@ public SKCodecResult GetPixels (SKImageInfo info, IntPtr pixels, SKCodecOptions /// Decode the bitmap into the specified memory block. /// /// The description of the desired output format expected by the caller. - /// The memory block to hold the decoded bitmap, with a total size of at least . - /// The number of bytes in a row, typically . + /// The memory block to hold the decoded bitmap, with a total size of at least . + /// The number of bytes in a row, typically . /// The bitmap decoding options. - /// Returns on success, or another value explaining the type of failure. + /// Returns on success, or another value explaining the type of failure. /// The specified , can either be /// , or a new instance with a different /// configuration - which the codec may choose to ignore. @@ -262,11 +262,11 @@ public SKCodecResult GetPixels (SKImageInfo info, IntPtr pixels, int rowBytes, S /// /// Prepare for an incremental decode with the specified options. /// - /// The image information of the destination. If the dimensions do not match those of , this implies a scale. + /// The image information of the destination. If the dimensions do not match those of , this implies a scale. /// The memory to write to. Needs to be large enough to hold the subset, if present, or the full image. /// The stride of the memory to write to. /// The decoding options, including if memory is zero initialized and whether to decode a subset. - /// Returns on success, or another value explaining the type of failure. + /// Returns on success, or another value explaining the type of failure. public SKCodecResult StartIncrementalDecode (SKImageInfo info, IntPtr pixels, int rowBytes, SKCodecOptions options) { if (pixels == IntPtr.Zero) @@ -291,10 +291,10 @@ public SKCodecResult StartIncrementalDecode (SKImageInfo info, IntPtr pixels, in /// /// Prepare for an incremental decode with the specified options. /// - /// The image information of the destination. If the dimensions do not match those of , this implies a scale. + /// The image information of the destination. If the dimensions do not match those of , this implies a scale. /// The memory to write to. Needs to be large enough to hold the subset, if present, or the full image. /// The stride of the memory to write to. - /// Returns on success, or another value explaining the type of failure. + /// Returns on success, or another value explaining the type of failure. public SKCodecResult StartIncrementalDecode (SKImageInfo info, IntPtr pixels, int rowBytes) { var cinfo = SKImageInfoNative.FromManaged (ref info); @@ -306,8 +306,8 @@ public SKCodecResult StartIncrementalDecode (SKImageInfo info, IntPtr pixels, in /// /// Start or continue the incremental decode. /// - /// The total number of lines initialized. Only meaningful if this method returns . - /// Returns if all lines requested in have been completely decoded. otherwise. + /// The total number of lines initialized. Only meaningful if this method returns . + /// Returns if all lines requested in have been completely decoded. otherwise. /// Unlike , this does not do any filling. This is left up to the caller, since they may be skipping lines or continuing the decode later. public SKCodecResult IncrementalDecode (out int rowsDecoded) { @@ -319,7 +319,7 @@ public SKCodecResult IncrementalDecode (out int rowsDecoded) /// /// Start or continue the incremental decode. /// - /// Returns if all lines requested in have been completely decoded. otherwise. + /// Returns if all lines requested in have been completely decoded. otherwise. /// Unlike , this does not do any filling. This is left up to the caller, since they may be skipping lines or continuing the decode later. public SKCodecResult IncrementalDecode () => SkiaApi.sk_codec_incremental_decode (Handle, null); @@ -329,9 +329,9 @@ public SKCodecResult IncrementalDecode () => /// /// Prepare for a scanline decode with the specified options. /// - /// The image information of the destination. If the dimensions do not match those of , this implies a scale. + /// The image information of the destination. If the dimensions do not match those of , this implies a scale. /// The decoding options, including if memory is zero initialized and whether to decode a subset. - /// Returns on success, or another value explaining the type of failure. + /// Returns on success, or another value explaining the type of failure. /// Not all codecs support this. public SKCodecResult StartScanlineDecode (SKImageInfo info, SKCodecOptions options) { @@ -354,8 +354,8 @@ public SKCodecResult StartScanlineDecode (SKImageInfo info, SKCodecOptions optio /// /// Prepare for a scanline decode. /// - /// The image information of the destination. If the dimensions do not match those of , this implies a scale. - /// Returns on success, or another value explaining the type of failure. + /// The image information of the destination. If the dimensions do not match those of , this implies a scale. + /// Returns on success, or another value explaining the type of failure. /// Not all codecs support this. public SKCodecResult StartScanlineDecode (SKImageInfo info) { diff --git a/binding/SkiaSharp/SKColor.cs b/binding/SkiaSharp/SKColor.cs index c3c472ede5..2b4716c7e4 100644 --- a/binding/SkiaSharp/SKColor.cs +++ b/binding/SkiaSharp/SKColor.cs @@ -112,7 +112,7 @@ public readonly float Hue { /// The saturation value. /// The lightness/luminosity value. /// The alpha value. - /// The new instance. + /// The new instance. public static SKColor FromHsl (float h, float s, float l, byte a = 255) { var colorf = SKColorF.FromHsl (h, s, l); @@ -132,7 +132,7 @@ public static SKColor FromHsl (float h, float s, float l, byte a = 255) /// The saturation value. /// The value/brightness value. /// The alpha value. - /// The new instance. + /// The new instance. public static SKColor FromHsv (float h, float s, float v, byte a = 255) { var colorf = SKColorF.FromHsv (h, s, v); @@ -151,7 +151,7 @@ public static SKColor FromHsv (float h, float s, float v, byte a = 255) /// The hue value. /// The saturation value. /// The lightness/luminosity value. - /// The alpha value is separate from the HSL calculation and will always be the same as . + /// The alpha value is separate from the HSL calculation and will always be the same as . public readonly void ToHsl (out float h, out float s, out float l) { // RGB from 0 to 255 @@ -169,7 +169,7 @@ public readonly void ToHsl (out float h, out float s, out float l) /// The hue value. /// The saturation value. /// The value/brightness value. - /// The alpha value is separate from the HSV/HSB calculation and will always be the same as . + /// The alpha value is separate from the HSV/HSB calculation and will always be the same as . public readonly void ToHsv (out float h, out float s, out float v) { // RGB from 0 to 255 @@ -204,7 +204,7 @@ public readonly override bool Equals (object other) => other is SKColor f && Equals (f); /// - /// Indicates whether two objects are equal. + /// Indicates whether two objects are equal. /// /// The first color to compare. /// The second color to compare. @@ -213,7 +213,7 @@ public readonly override bool Equals (object other) => left.Equals (right); /// - /// Indicates whether two objects are different. + /// Indicates whether two objects are different. /// /// The first color to compare. /// The second color to compare. @@ -229,15 +229,15 @@ public readonly override int GetHashCode () => color.GetHashCode (); /// - /// Converts a UInt32 to a . + /// Converts a UInt32 to a . /// /// The UInt32 representation of a color. - /// The new instance. + /// The new instance. public static implicit operator SKColor (uint color) => new SKColor (color); /// - /// Converts a to a UInt32. + /// Converts a to a UInt32. /// /// The color to convert. /// The UInt32 value for the color. @@ -245,10 +245,10 @@ public static explicit operator uint (SKColor color) => color.color; /// - /// Converts the hexadecimal string representation of a color to its equivalent. + /// Converts the hexadecimal string representation of a color to its equivalent. /// /// The hexadecimal string representation of a color. - /// The new instance. + /// The new instance. /// This method can parse a string in the forms with or without a preceding '#' character: AARRGGB, RRGGBB, ARGB, RGB. public static SKColor Parse (string hexString) { @@ -258,10 +258,10 @@ public static SKColor Parse (string hexString) } /// - /// Converts the hexadecimal string representation of a color to its equivalent. + /// Converts the hexadecimal string representation of a color to its equivalent. /// /// The hexadecimal string representation of a color. - /// The new instance. + /// The new instance. /// Returns true if the conversion was successful, otherwise false. /// This method can parse a string in the forms with or without a preceding '#' character: AARRGGB, RRGGBB, ARGB, RGB. public static bool TryParse (string hexString, out SKColor color) diff --git a/binding/SkiaSharp/SKColorF.cs b/binding/SkiaSharp/SKColorF.cs index 716e6d4381..a972b53d58 100644 --- a/binding/SkiaSharp/SKColorF.cs +++ b/binding/SkiaSharp/SKColorF.cs @@ -109,7 +109,7 @@ static float Clamp (float v) /// The saturation value. /// The lightness/luminosity value. /// The alpha value. - /// The new instance. + /// The new instance. public static SKColorF FromHsl (float h, float s, float l, float a = 1f) { // convert from percentages @@ -163,7 +163,7 @@ private static float HueToRgb (float v1, float v2, float vH) /// The saturation value. /// The value/brightness value. /// The alpha value. - /// The new instance. + /// The new instance. public static SKColorF FromHsv (float h, float s, float v, float a = 1f) { // convert from percentages @@ -223,7 +223,7 @@ public static SKColorF FromHsv (float h, float s, float v, float a = 1f) /// The hue value. /// The saturation value. /// The lightness/luminosity value. - /// The alpha value is separate from the HSL calculation and will always be the same as . + /// The alpha value is separate from the HSL calculation and will always be the same as . public readonly void ToHsl (out float h, out float s, out float l) { // RGB from 0 to 1 @@ -276,7 +276,7 @@ public readonly void ToHsl (out float h, out float s, out float l) /// The hue value. /// The saturation value. /// The value/brightness value. - /// The alpha value is separate from the HSV/HSB calculation and will always be the same as . + /// The alpha value is separate from the HSV/HSB calculation and will always be the same as . public readonly void ToHsv (out float h, out float s, out float v) { // RGB from 0 to 1 @@ -328,10 +328,10 @@ public readonly override string ToString () => ((SKColor)this).ToString (); /// - /// Converts a to a . + /// Converts a to a . /// - /// The . - /// The new instance. + /// The . + /// The new instance. public static implicit operator SKColorF (SKColor color) { SKColorF colorF; @@ -340,10 +340,10 @@ public static implicit operator SKColorF (SKColor color) } /// - /// Converts a to a . + /// Converts a to a . /// /// The color to convert. - /// The . + /// The . /// As a result of converting a floating-point color to an integer color, some data loss will occur. public static explicit operator SKColor (SKColorF color) => SkiaApi.sk_color4f_to_color (&color); diff --git a/binding/SkiaSharp/SKColorFilter.cs b/binding/SkiaSharp/SKColorFilter.cs index 85c9505d73..fc1d993253 100644 --- a/binding/SkiaSharp/SKColorFilter.cs +++ b/binding/SkiaSharp/SKColorFilter.cs @@ -5,7 +5,7 @@ namespace SkiaSharp { /// - /// Color filters for use with the property of a . + /// Color filters for use with the property of a . /// public unsafe class SKColorFilter : SKObject, ISKReferenceCounted { @@ -55,8 +55,8 @@ protected override void Dispose (bool disposing) => /// /// The source color used with the specified mode. /// The blend mode mode that is applied to each color. - /// Returns the new , or if the mode will have no effect. - /// If the is , this function will return (since that mode will have no effect on the result). + /// Returns the new , or if the mode will have no effect. + /// If the is , this function will return (since that mode will have no effect on the result). public static SKColorFilter CreateBlendMode(SKColor c, SKBlendMode mode) { return GetObject (SkiaApi.sk_colorfilter_new_mode((uint)c, mode)); @@ -67,7 +67,7 @@ public static SKColorFilter CreateBlendMode(SKColor c, SKBlendMode mode) /// /// The color to multiply the source color by. The alpha component is ignored. /// The color to add to the source color. The alpha component is ignored. - /// Returns the new . + /// Returns the new . public static SKColorFilter CreateLighting(SKColor mul, SKColor add) { return GetObject (SkiaApi.sk_colorfilter_new_lighting((uint)mul, (uint)add)); @@ -78,7 +78,7 @@ public static SKColorFilter CreateLighting(SKColor mul, SKColor add) /// /// The outer (second) filter to apply. /// The inner (first) filter to apply. - /// Returns the new . + /// Returns the new . public static SKColorFilter CreateCompose(SKColorFilter outer, SKColorFilter inner) { if (outer == null) @@ -99,8 +99,8 @@ public static SKColorFilter CreateLerp(float weight, SKColorFilter filter0, SKCo /// /// Creates a new color filter that transforms a color by a 4x5 (row-major) matrix. /// - /// An array of elements. - /// Returns the new . + /// An array of elements. + /// Returns the new . /// The matrix is in row-major order and the translation column is specified in unnormalized, 0...255, space. public static SKColorFilter CreateColorMatrix(float[] matrix) { @@ -130,7 +130,7 @@ public static SKColorFilter CreateHslaColorMatrix(ReadOnlySpan matrix) /// /// Creates a new luminance-to-alpha color filter. /// - /// Returns the new . + /// Returns the new . public static SKColorFilter CreateLumaColor() { return GetObject (SkiaApi.sk_colorfilter_new_luma_color()); @@ -139,8 +139,8 @@ public static SKColorFilter CreateLumaColor() /// /// Creates a new table color filter. /// - /// The table of values for each color component, with a length of . - /// Returns the new . + /// The table of values for each color component, with a length of . + /// Returns the new . public static SKColorFilter CreateTable(byte[] table) { if (table == null) @@ -160,11 +160,11 @@ public static SKColorFilter CreateTable(ReadOnlySpan table) /// /// Creates a new table color filter. /// - /// The table of values for the alpha component, with a length of . - /// The table of values for the red component, with a length of . - /// The table of values for the green component, with a length of . - /// The table of values for the blue component, with a length of . - /// Returns the new . + /// The table of values for the alpha component, with a length of . + /// The table of values for the red component, with a length of . + /// The table of values for the green component, with a length of . + /// The table of values for the blue component, with a length of . + /// Returns the new . public static SKColorFilter CreateTable(byte[] tableA, byte[] tableR, byte[] tableG, byte[] tableB) { if (tableA == null) @@ -201,7 +201,7 @@ public static SKColorFilter CreateTable(ReadOnlySpan tableA, ReadOnlySpan< /// Creates a new high contrast color filter which provides transformations to improve contrast for users with low vision. /// /// The high contrast configuration settings. - /// Returns the new . + /// Returns the new . /// Applies the following transformations in this order: conversion to grayscale, color inversion, increasing the resulting contrast. public static SKColorFilter CreateHighContrast(SKHighContrastConfig config) { @@ -214,7 +214,7 @@ public static SKColorFilter CreateHighContrast(SKHighContrastConfig config) /// Whether or not the color will be converted to grayscale. /// Whether or not to invert brightness, lightness, or neither. /// The amount to adjust the contrast by, in the range -1.0 through 1.0. - /// Returns the new . + /// Returns the new . /// Applies the following transformations in this order: conversion to grayscale, color inversion, increasing the resulting contrast. public static SKColorFilter CreateHighContrast(bool grayscale, SKHighContrastConfigInvertStyle invertStyle, float contrast) { diff --git a/binding/SkiaSharp/SKColorSpace.cs b/binding/SkiaSharp/SKColorSpace.cs index a024f1e500..65a92cd299 100644 --- a/binding/SkiaSharp/SKColorSpace.cs +++ b/binding/SkiaSharp/SKColorSpace.cs @@ -89,36 +89,36 @@ public static bool Equal (SKColorSpace left, SKColorSpace right) // CreateSrgb /// - /// Creates a new instance of that represents the sRGB color space. + /// Creates a new instance of that represents the sRGB color space. /// - /// Returns the new instance of . + /// Returns the new instance of . public static SKColorSpace CreateSrgb () => srgb; // CreateSrgbLinear /// - /// Creates a new instance of with the sRGB primaries, but a linear (1.0) gamma + /// Creates a new instance of with the sRGB primaries, but a linear (1.0) gamma /// - /// Returns the new instance of . + /// Returns the new instance of . public static SKColorSpace CreateSrgbLinear () => srgbLinear; // CreateIcc /// - /// Creates a new instance of from an ICC profile. + /// Creates a new instance of from an ICC profile. /// /// The ICC profile data. /// The size of the data. - /// Returns the new instance of . + /// Returns the new instance of . public static SKColorSpace CreateIcc (IntPtr input, long length) => CreateIcc (SKColorSpaceIccProfile.Create (input, length)); /// - /// Creates a new instance of from an ICC profile. + /// Creates a new instance of from an ICC profile. /// /// The ICC profile data. /// The size of the data. - /// Returns the new instance of . + /// Returns the new instance of . public static SKColorSpace CreateIcc (byte[] input, long length) { if (input == null) @@ -130,10 +130,10 @@ public static SKColorSpace CreateIcc (byte[] input, long length) } /// - /// Creates a new instance of from an ICC profile. + /// Creates a new instance of from an ICC profile. /// /// The ICC profile data. - /// Returns the new instance of . + /// Returns the new instance of . public static SKColorSpace CreateIcc (byte[] input) => CreateIcc (input.AsSpan ()); diff --git a/binding/SkiaSharp/SKColorSpaceStructs.cs b/binding/SkiaSharp/SKColorSpaceStructs.cs index 25095a4224..6fe874ba39 100644 --- a/binding/SkiaSharp/SKColorSpaceStructs.cs +++ b/binding/SkiaSharp/SKColorSpaceStructs.cs @@ -13,7 +13,7 @@ public unsafe partial struct SKColorSpacePrimaries public static readonly SKColorSpacePrimaries Empty; /// - /// Creates a new instance. + /// Creates a new instance. /// /// The values of the primaries and white point. /// There must be exactly 8 values in the array with the form [RX, RY, GX, GY, BX, BY, WX, WY]. @@ -35,7 +35,7 @@ public SKColorSpacePrimaries (float[] values) } /// - /// Creates a new instance. + /// Creates a new instance. /// /// The red X-coordinate. /// The red Y-coordinate. @@ -134,7 +134,7 @@ public static SKColorSpaceTransferFn Hlg { public static readonly SKColorSpaceTransferFn Empty; /// - /// Creates a new instance of . + /// Creates a new instance of . /// /// The values of the coefficients. /// There must be exactly 7 values in the array with the form [G, A, B, C, D, E, F]. @@ -155,7 +155,7 @@ public SKColorSpaceTransferFn (float[] values) } /// - /// Creates a new instance of . + /// Creates a new instance of . /// /// The G coefficient. /// The A coefficient. diff --git a/binding/SkiaSharp/SKData.cs b/binding/SkiaSharp/SKData.cs index 64e901255b..409ed5aa17 100644 --- a/binding/SkiaSharp/SKData.cs +++ b/binding/SkiaSharp/SKData.cs @@ -9,9 +9,9 @@ namespace SkiaSharp { /// - /// The holds an immutable data buffer. + /// The holds an immutable data buffer. /// - /// Not only is the data immutable, but the actual pointer that is returned by the property is guaranteed to always be the same for the life of this instance.The method can be used to return a that wraps this and allows for .NET APIs to scan the contents of the as a stream. + /// Not only is the data immutable, but the actual pointer that is returned by the property is guaranteed to always be the same for the life of this instance.The method can be used to return a that wraps this and allows for .NET APIs to scan the contents of the as a stream. public unsafe class SKData : SKObject, ISKNonVirtualReferenceCounted { // We pick a value that is the largest multiple of 4096 that is still smaller than the large object heap threshold (85K). @@ -67,11 +67,11 @@ public static SKData CreateCopy (IntPtr bytes, long length) => CreateCopy (bytes, (ulong)length); /// - /// Returns a new instance with a copy of the provided byte buffer. + /// Returns a new instance with a copy of the provided byte buffer. /// /// The pointer to a buffer. /// The length of the buffer. - /// Returns the new instance with a copy of the data. + /// Returns the new instance with a copy of the data. public static SKData CreateCopy (IntPtr bytes, ulong length) { if (!PlatformConfiguration.Is64Bit && length > UInt32.MaxValue) @@ -80,19 +80,19 @@ public static SKData CreateCopy (IntPtr bytes, ulong length) } /// - /// Returns a new instance with a copy of the provided byte array. + /// Returns a new instance with a copy of the provided byte array. /// /// The array of bytes that will be copied. - /// Returns the new instance with a copy of the data. + /// Returns the new instance with a copy of the data. public static SKData CreateCopy (byte[] bytes) => CreateCopy (bytes, (ulong)bytes.Length); /// - /// Returns a new instance with a copy of the provided byte array. + /// Returns a new instance with a copy of the provided byte array. /// /// The array of bytes that will be copied. /// The size of the buffer to create. - /// Returns the new instance with a copy of the data. + /// Returns the new instance with a copy of the data. public static SKData CreateCopy (byte[] bytes, ulong length) { fixed (byte* b = bytes) { @@ -101,10 +101,10 @@ public static SKData CreateCopy (byte[] bytes, ulong length) } /// - /// Returns a new instance with a copy of the provided byte span. + /// Returns a new instance with a copy of the provided byte span. /// /// The span of bytes that will be copied. - /// Returns the new instance with a copy of the data. + /// Returns the new instance with a copy of the data. public static SKData CreateCopy (ReadOnlySpan bytes) { fixed (byte* b = bytes) { @@ -115,10 +115,10 @@ public static SKData CreateCopy (ReadOnlySpan bytes) // Create /// - /// Returns a new instance with uninitialized data. + /// Returns a new instance with uninitialized data. /// /// The size of the data buffer to create. - /// Returns the new instance. + /// Returns the new instance. public static SKData Create (int size) => GetObject (SkiaApi.sk_data_new_uninitialized ((IntPtr)size)); @@ -127,10 +127,10 @@ public static SKData Create (long size) => GetObject (SkiaApi.sk_data_new_uninitialized ((IntPtr)size)); /// - /// Returns a new instance with uninitialized data. + /// Returns a new instance with uninitialized data. /// /// The size of the data buffer to create. - /// Returns the new instance. + /// Returns the new instance. public static SKData Create (ulong size) { if (!PlatformConfiguration.Is64Bit && size > UInt32.MaxValue) @@ -140,10 +140,10 @@ public static SKData Create (ulong size) } /// - /// Returns a new instance with the data from the file. + /// Returns a new instance with the data from the file. /// /// The file to open. - /// Returns the new instance. + /// Returns the new instance. public static SKData Create (string filename) { if (string.IsNullOrEmpty (filename)) @@ -156,10 +156,10 @@ public static SKData Create (string filename) } /// - /// Returns a new instance with a copy of the data from the stream. + /// Returns a new instance with a copy of the data from the stream. /// /// The stream to read. - /// Returns the new instance. + /// Returns the new instance. public static SKData Create (Stream stream) { if (stream == null) @@ -176,11 +176,11 @@ public static SKData Create (Stream stream) } /// - /// Returns a new instance with a copy of the data from the stream. + /// Returns a new instance with a copy of the data from the stream. /// /// The stream to read. /// The amount of data to read. - /// Returns the new instance. + /// Returns the new instance. public static SKData Create (Stream stream, int length) { if (stream == null) @@ -191,11 +191,11 @@ public static SKData Create (Stream stream, int length) } /// - /// Returns a new instance with a copy of the data from the stream. + /// Returns a new instance with a copy of the data from the stream. /// /// The stream to read. /// The amount of data to read. - /// Returns the new instance. + /// Returns the new instance. public static SKData Create (Stream stream, ulong length) { if (stream == null) @@ -206,11 +206,11 @@ public static SKData Create (Stream stream, ulong length) } /// - /// Returns a new instance with a copy of the data from the stream. + /// Returns a new instance with a copy of the data from the stream. /// /// The stream to read. /// The amount of data to read. - /// Returns the new instance. + /// Returns the new instance. public static SKData Create (Stream stream, long length) { if (stream == null) @@ -221,10 +221,10 @@ public static SKData Create (Stream stream, long length) } /// - /// Returns a new instance with a copy of the data from the stream. + /// Returns a new instance with a copy of the data from the stream. /// /// The stream to read. - /// Returns the new instance. + /// Returns the new instance. public static SKData Create (SKStream stream) { if (stream == null) @@ -234,11 +234,11 @@ public static SKData Create (SKStream stream) } /// - /// Returns a new instance with a copy of the data from the stream. + /// Returns a new instance with a copy of the data from the stream. /// /// The stream to read. /// The amount of data to read. - /// Returns the new instance. + /// Returns the new instance. public static SKData Create (SKStream stream, int length) { if (stream == null) @@ -252,11 +252,11 @@ public static SKData Create (SKStream stream, int length) } /// - /// Returns a new instance with a copy of the data from the stream. + /// Returns a new instance with a copy of the data from the stream. /// /// The stream to read. /// The amount of data to read. - /// Returns the new instance. + /// Returns the new instance. public static SKData Create (SKStream stream, ulong length) { if (stream == null) @@ -270,11 +270,11 @@ public static SKData Create (SKStream stream, ulong length) } /// - /// Returns a new instance with a copy of the data from the stream. + /// Returns a new instance with a copy of the data from the stream. /// /// The stream to read. /// The amount of data to read. - /// Returns the new instance. + /// Returns the new instance. public static SKData Create (SKStream stream, long length) { if (stream == null) @@ -288,39 +288,39 @@ public static SKData Create (SKStream stream, long length) } /// - /// Returns a new instance with reference to the specified data. + /// Returns a new instance with reference to the specified data. /// /// The pointer to a buffer. /// The length of the buffer. - /// Returns the new instance with reference to the specified data. - /// The caller is responsible for ensuring the data buffer lives as long as the instance. + /// Returns the new instance with reference to the specified data. + /// The caller is responsible for ensuring the data buffer lives as long as the instance. public static SKData Create (IntPtr address, int length) { return Create (address, length, null, null); } /// - /// Returns a new instance with reference to the specified data. + /// Returns a new instance with reference to the specified data. /// /// The pointer to a buffer. /// The length of the buffer. - /// The delegate to invoke when the instance is ready to be discarded. - /// Returns the new instance with reference to the specified data. - /// The caller is responsible for ensuring the data buffer lives as long as the instance. + /// The delegate to invoke when the instance is ready to be discarded. + /// Returns the new instance with reference to the specified data. + /// The caller is responsible for ensuring the data buffer lives as long as the instance. public static SKData Create (IntPtr address, int length, SKDataReleaseDelegate releaseProc) { return Create (address, length, releaseProc, null); } /// - /// Returns a new instance with reference to the specified data. + /// Returns a new instance with reference to the specified data. /// /// The pointer to a buffer. /// The length of the buffer. - /// The delegate to invoke when the instance is ready to be discarded. + /// The delegate to invoke when the instance is ready to be discarded. /// The user state to pass to the delegate when it is invoked. - /// Returns the new instance with reference to the specified data. - /// The caller is responsible for ensuring the data buffer lives as long as the instance. + /// Returns the new instance with reference to the specified data. + /// The caller is responsible for ensuring the data buffer lives as long as the instance. public static SKData Create (IntPtr address, int length, SKDataReleaseDelegate releaseProc, object context) { var del = releaseProc != null && context != null @@ -340,10 +340,10 @@ internal static SKData FromCString (string str) // Subset /// - /// Creates a new that points to a slice in this . + /// Creates a new that points to a slice in this . /// /// The offset of the data. - /// The length for the new . + /// The length for the new . public SKData Subset (ulong offset, ulong length) { if (!PlatformConfiguration.Is64Bit) { @@ -381,7 +381,7 @@ public byte[] ToArray () public long Size => (long)SkiaApi.sk_data_get_size (Handle); /// - /// Gets a pointer to the data wrapped by this . + /// Gets a pointer to the data wrapped by this . /// public IntPtr Data => (IntPtr)SkiaApi.sk_data_get_data (Handle); @@ -390,14 +390,14 @@ public byte[] ToArray () // AsStream /// - /// Wraps the as a . + /// Wraps the as a . /// /// Returns the new . public Stream AsStream () => new SKDataStream (this, false); /// - /// Wraps the as a . + /// Wraps the as a . /// /// Whether or not to dispose the data object when the stream is disposed. /// Returns the new . diff --git a/binding/SkiaSharp/SKDrawable.cs b/binding/SkiaSharp/SKDrawable.cs index 8ce467452c..11dfa06d62 100644 --- a/binding/SkiaSharp/SKDrawable.cs +++ b/binding/SkiaSharp/SKDrawable.cs @@ -6,7 +6,7 @@ namespace SkiaSharp { /// - /// Represents the base class for objects that draw into . + /// Represents the base class for objects that draw into . /// /// The object has a generation ID, which is guaranteed to be unique across all /// drawables. To allow for clients of the drawable that may want to cache the @@ -111,7 +111,7 @@ public void Draw (SKCanvas canvas, float x, float y) /// /// Create an immutable snapshot of the drawing. /// - /// Returns the snapshot. + /// Returns the snapshot. public SKPicture Snapshot () => SKPicture.GetObject (SkiaApi.sk_drawable_new_picture_snapshot (Handle), unrefExisting: false); diff --git a/binding/SkiaSharp/SKFontManager.cs b/binding/SkiaSharp/SKFontManager.cs index a023c9f42d..7c0b81bb79 100644 --- a/binding/SkiaSharp/SKFontManager.cs +++ b/binding/SkiaSharp/SKFontManager.cs @@ -84,7 +84,7 @@ public string GetFamilyName (int index) /// /// The index of the font style set to retrieve. /// Returns the font style set. - /// The index must be in the range of [0, ). + /// The index must be in the range of [0, ). public SKFontStyleSet GetFontStyles (int index) { return SKFontStyleSet.GetObject (SkiaApi.sk_fontmgr_create_styleset (Handle, index)); @@ -94,7 +94,7 @@ public SKFontStyleSet GetFontStyles (int index) /// Use the system fallback to find the typeface styles for the given family. /// /// The family name to use when searching. - /// Returns a with all the font styles supported by the specified family. + /// Returns a with all the font styles supported by the specified family. /// Never returns and will return an empty set if the family is not found. public SKFontStyleSet GetFontStyles (string familyName) { @@ -113,7 +113,7 @@ public SKTypeface MatchFamily (string familyName) => /// /// The family name to use when searching. /// The font style to use when searching. - /// Returns the that contains the given family name and style, or the default font if no matching font was found. + /// Returns the that contains the given family name and style, or the default font if no matching font was found. /// Will never return , as it will return the default font if no matching font is found. public SKTypeface MatchFamily (string familyName, SKFontStyle style) { @@ -128,11 +128,11 @@ public SKTypeface MatchFamily (string familyName, SKFontStyle style) } /// - /// Creates a new from the specified file path. + /// Creates a new from the specified file path. /// /// The path to the typeface. /// The TTC index. - /// Returns the new , or if the file does not exist or the contents are not recognized. + /// Returns the new , or if the file does not exist or the contents are not recognized. public SKTypeface CreateTypeface (string path, int index = 0) { if (path == null) @@ -145,11 +145,11 @@ public SKTypeface CreateTypeface (string path, int index = 0) } /// - /// Creates a new from the specified stream. + /// Creates a new from the specified stream. /// /// The stream to read the typeface from. /// The TTC index. - /// Returns the new , or if the stream is not recognized. + /// Returns the new , or if the stream is not recognized. public SKTypeface CreateTypeface (Stream stream, int index = 0) { if (stream == null) @@ -159,11 +159,11 @@ public SKTypeface CreateTypeface (Stream stream, int index = 0) } /// - /// Creates a new from the specified stream. + /// Creates a new from the specified stream. /// /// The stream to read the typeface from. /// The TTC index. - /// Returns the new , or if the stream is not recognized. + /// Returns the new , or if the stream is not recognized. public SKTypeface CreateTypeface (SKStreamAsset stream, int index = 0) { if (stream == null) @@ -180,11 +180,11 @@ public SKTypeface CreateTypeface (SKStreamAsset stream, int index = 0) } /// - /// Creates a new from the specified . + /// Creates a new from the specified . /// /// The data to read the typeface from. /// The TTC index. - /// Returns the new , or if the data is not recognized. + /// Returns the new , or if the data is not recognized. public SKTypeface CreateTypeface (SKData data, int index = 0) { if (data == null) @@ -197,7 +197,7 @@ public SKTypeface CreateTypeface (SKData data, int index = 0) /// Use the system fallback to find a typeface for the given character. /// /// The character to find a typeface for. - /// Returns the that contains the given character, or if none was found. + /// Returns the that contains the given character, or if none was found. public SKTypeface MatchCharacter (char character) { return MatchCharacter (null, SKFontStyle.Normal, null, character); @@ -207,7 +207,7 @@ public SKTypeface MatchCharacter (char character) /// Use the system fallback to find a typeface for the given character. /// /// The character to find a typeface for. - /// Returns the that contains the given character, or if none was found. + /// Returns the that contains the given character, or if none was found. public SKTypeface MatchCharacter (int character) { return MatchCharacter (null, SKFontStyle.Normal, null, character); @@ -218,7 +218,7 @@ public SKTypeface MatchCharacter (int character) /// /// The family name to use when searching. /// The character to find a typeface for. - /// Returns the that contains the given character, or if none was found. + /// Returns the that contains the given character, or if none was found. public SKTypeface MatchCharacter (string familyName, char character) { return MatchCharacter (familyName, SKFontStyle.Normal, null, character); @@ -229,7 +229,7 @@ public SKTypeface MatchCharacter (string familyName, char character) /// /// The family name to use when searching. /// The character to find a typeface for. - /// Returns the that contains the given character, or if none was found. + /// Returns the that contains the given character, or if none was found. public SKTypeface MatchCharacter (string familyName, int character) { return MatchCharacter (familyName, SKFontStyle.Normal, null, character); @@ -241,7 +241,7 @@ public SKTypeface MatchCharacter (string familyName, int character) /// The family name to use when searching. /// The ISO 639, 15924, and 3166-1 code to use when searching, such as "ja" and "zh". /// The character to find a typeface for. - /// Returns the that contains the given character, or if none was found. + /// Returns the that contains the given character, or if none was found. /// Note that `bcp47` is a combination of ISO 639, 15924, and3166-1 codes, so it /// is fine to just pass a ISO 639 here. The first item is the least significant /// fallback, and the last is the most significant. @@ -260,7 +260,7 @@ public SKTypeface MatchCharacter (string familyName, string[] bcp47, char charac /// The family name to try and use. /// The ISO 639, 15924, and 3166-1 code to use when searching, such as "ja" and "zh". /// The character to find a typeface for. - /// Returns the that contains the given character, or if none was found. + /// Returns the that contains the given character, or if none was found. /// Note that `bcp47` is a combination of ISO 639, 15924, and3166-1 codes, so it /// is fine to just pass a ISO 639 here. The first item is the least significant /// fallback, and the last is the most significant. @@ -282,7 +282,7 @@ public SKTypeface MatchCharacter (string familyName, string[] bcp47, int charact /// The font slant to use when searching. /// The ISO 639, 15924, and 3166-1 code to use when searching, such as "ja" and "zh". /// The character to find a typeface for. - /// Returns the that contains the given character, or if none was found. + /// Returns the that contains the given character, or if none was found. /// Note that `bcp47` is a combination of ISO 639, 15924, and3166-1 codes, so it /// is fine to just pass a ISO 639 here. The first item is the least significant /// fallback, and the last is the most significant. @@ -304,7 +304,7 @@ public SKTypeface MatchCharacter (string familyName, SKFontStyleWeight weight, S /// The font slant to use when searching. /// The ISO 639, 15924, and 3166-1 code to use when searching, such as "ja" and "zh". /// The character to find a typeface for. - /// Returns the that contains the given character, or if none was found. + /// Returns the that contains the given character, or if none was found. /// Note that `bcp47` is a combination of ISO 639, 15924, and3166-1 codes, so it /// is fine to just pass a ISO 639 here. The first item is the least significant /// fallback, and the last is the most significant. @@ -326,7 +326,7 @@ public SKTypeface MatchCharacter (string familyName, SKFontStyleWeight weight, S /// The font slant to use when searching. /// The ISO 639, 15924, and 3166-1 code to use when searching, such as "ja" and "zh". /// The character to find a typeface for. - /// Returns the that contains the given character, or if none was found. + /// Returns the that contains the given character, or if none was found. /// Note that `bcp47` is a combination of ISO 639, 15924, and3166-1 codes, so it /// is fine to just pass a ISO 639 here. The first item is the least significant /// fallback, and the last is the most significant. @@ -346,7 +346,7 @@ public SKTypeface MatchCharacter (string familyName, int weight, int width, SKFo /// The font style to use when searching. /// The ISO 639, 15924, and 3166-1 code to use when searching, such as "ja" and "zh". /// The character to find a typeface for. - /// Returns the that contains the given character, or if none was found. + /// Returns the that contains the given character, or if none was found. /// Note that `bcp47` is a combination of ISO 639, 15924, and3166-1 codes, so it /// is fine to just pass a ISO 639 here. The first item is the least significant /// fallback, and the last is the most significant. diff --git a/binding/SkiaSharp/SKFontStyle.cs b/binding/SkiaSharp/SKFontStyle.cs index 68ccfb7ada..702caa2de3 100644 --- a/binding/SkiaSharp/SKFontStyle.cs +++ b/binding/SkiaSharp/SKFontStyle.cs @@ -28,7 +28,7 @@ internal SKFontStyle (IntPtr handle, bool owns) } /// - /// Creates a new with a normal weight, a normal width and upright. + /// Creates a new with a normal weight, a normal width and upright. /// public SKFontStyle () : this (SKFontStyleWeight.Normal, SKFontStyleWidth.Normal, SKFontStyleSlant.Upright) @@ -36,7 +36,7 @@ public SKFontStyle () } /// - /// Creates a new with the specified weight, width and slant. + /// Creates a new with the specified weight, width and slant. /// /// The weight (light or bold). /// The width (condensed or expanded). @@ -47,7 +47,7 @@ public SKFontStyle (SKFontStyleWeight weight, SKFontStyleWidth width, SKFontStyl } /// - /// Creates a new with the specified weight, width and slant. + /// Creates a new with the specified weight, width and slant. /// /// The weight (light or bold). /// The width (condensed or expanded). @@ -66,13 +66,13 @@ protected override void DisposeNative () => /// /// Gets the weight of this style. /// - /// The weight could potentially be one of the values of . + /// The weight could potentially be one of the values of . public int Weight => SkiaApi.sk_fontstyle_get_weight (Handle); /// /// Gets the width of this style. /// - /// The weight could potentially be one of the values of . + /// The weight could potentially be one of the values of . public int Width => SkiaApi.sk_fontstyle_get_width (Handle); /// diff --git a/binding/SkiaSharp/SKFontStyleSet.cs b/binding/SkiaSharp/SKFontStyleSet.cs index f986c15598..c09aaf7e29 100644 --- a/binding/SkiaSharp/SKFontStyleSet.cs +++ b/binding/SkiaSharp/SKFontStyleSet.cs @@ -17,7 +17,7 @@ internal SKFontStyleSet (IntPtr handle, bool owns) } /// - /// Creates a new, empty . + /// Creates a new, empty . /// public SKFontStyleSet () : this (SkiaApi.sk_fontstyleset_create_empty (), true) @@ -52,10 +52,10 @@ public string GetStyleName (int index) } /// - /// Creates a new with the style that is the closest match to the style at the specified index. + /// Creates a new with the style that is the closest match to the style at the specified index. /// /// The index of the font style to match. - /// Returns the new . + /// Returns the new . public SKTypeface CreateTypeface (int index) { if (index < 0 || index >= Count) @@ -68,10 +68,10 @@ public SKTypeface CreateTypeface (int index) } /// - /// Creates a new with a style that is the closest match to the specified font style. + /// Creates a new with a style that is the closest match to the specified font style. /// /// The font style to match. - /// Returns the new . + /// Returns the new . public SKTypeface CreateTypeface (SKFontStyle style) { if (style == null) diff --git a/binding/SkiaSharp/SKFrontBufferedManagedStream.cs b/binding/SkiaSharp/SKFrontBufferedManagedStream.cs index d0b9950980..fc17cf991f 100644 --- a/binding/SkiaSharp/SKFrontBufferedManagedStream.cs +++ b/binding/SkiaSharp/SKFrontBufferedManagedStream.cs @@ -9,7 +9,7 @@ namespace SkiaSharp /// /// A read-only stream that buffers the specified first chunk of bytes. /// - /// This is useful for decoding images using streams that are not seekable, since needs to read the first few bytes to determine the codec to use. + /// This is useful for decoding images using streams that are not seekable, since needs to read the first few bytes to determine the codec to use. public class SKFrontBufferedManagedStream : SKAbstractManagedStream { private SKStream stream; @@ -23,7 +23,7 @@ public class SKFrontBufferedManagedStream : SKAbstractManagedStream private int offset; /// - /// Creates a new instance of that wraps the specified stream. + /// Creates a new instance of that wraps the specified stream. /// /// The stream to buffer. /// The number of bytes to buffer. @@ -33,7 +33,7 @@ public SKFrontBufferedManagedStream (Stream managedStream, int bufferSize) } /// - /// Creates a new instance of that wraps the specified stream. + /// Creates a new instance of that wraps the specified stream. /// /// The stream to buffer. /// The number of bytes to buffer. @@ -44,7 +44,7 @@ public SKFrontBufferedManagedStream (Stream managedStream, int bufferSize, bool } /// - /// Creates a new instance of that wraps the specified stream. + /// Creates a new instance of that wraps the specified stream. /// /// The stream to buffer. /// The number of bytes to buffer. @@ -54,7 +54,7 @@ public SKFrontBufferedManagedStream (SKStream nativeStream, int bufferSize) } /// - /// Creates a new instance of that wraps the specified stream. + /// Creates a new instance of that wraps the specified stream. /// /// The stream to buffer. /// The number of bytes to buffer. diff --git a/binding/SkiaSharp/SKFrontBufferedStream.cs b/binding/SkiaSharp/SKFrontBufferedStream.cs index d4dddfe549..e8a357842b 100644 --- a/binding/SkiaSharp/SKFrontBufferedStream.cs +++ b/binding/SkiaSharp/SKFrontBufferedStream.cs @@ -8,7 +8,7 @@ namespace SkiaSharp /// /// A read-only stream that buffers the specified first chunk of bytes. /// - /// This is useful for decoding images using streams that are not seekable, since needs to read the first few bytes to determine the codec to use. + /// This is useful for decoding images using streams that are not seekable, since needs to read the first few bytes to determine the codec to use. public class SKFrontBufferedStream : Stream { /// @@ -26,7 +26,7 @@ public class SKFrontBufferedStream : Stream private byte[] internalBuffer; /// - /// Creates a new instance of that wraps the specified stream. + /// Creates a new instance of that wraps the specified stream. /// /// The stream to buffer. public SKFrontBufferedStream(Stream stream) @@ -35,7 +35,7 @@ public SKFrontBufferedStream(Stream stream) } /// - /// Creates a new instance of that wraps the specified stream. + /// Creates a new instance of that wraps the specified stream. /// /// The stream to buffer. /// The number of bytes to buffer. @@ -45,7 +45,7 @@ public SKFrontBufferedStream(Stream stream, long bufferSize) } /// - /// Creates a new instance of that wraps the specified stream. + /// Creates a new instance of that wraps the specified stream. /// /// The stream to buffer. /// Whether or not to dispose the underlying stream when this stream is disposed. @@ -55,7 +55,7 @@ public SKFrontBufferedStream(Stream stream, bool disposeUnderlyingStream) } /// - /// Creates a new instance of that wraps the specified stream. + /// Creates a new instance of that wraps the specified stream. /// /// The stream to buffer. /// The number of bytes to buffer. diff --git a/binding/SkiaSharp/SKImage.cs b/binding/SkiaSharp/SKImage.cs index 8a6f261fcc..8dc1d7d332 100644 --- a/binding/SkiaSharp/SKImage.cs +++ b/binding/SkiaSharp/SKImage.cs @@ -30,10 +30,10 @@ protected override void Dispose (bool disposing) => // create brand new image /// - /// Creates a new raster-based using the specified information. + /// Creates a new raster-based using the specified information. /// /// The image information to use. - /// Returns the new instance. + /// Returns the new instance. public static SKImage Create (SKImageInfo info) { var pixels = Marshal.AllocCoTaskMem (info.BytesSize); @@ -390,7 +390,7 @@ public static SKImage FromEncodedData (string filename) // create a new image from a bitmap /// - /// Creates a new image from the provided . + /// Creates a new image from the provided . /// /// The bitmap that will be used as the source for the image. /// An image whose contents are the contents of the specified bitmap. @@ -637,7 +637,7 @@ public static SKImage FromAdoptedTexture (GRRecordingContext context, GRBackendT // create a new image from a picture /// - /// Creates a new image from the provided . + /// Creates a new image from the provided . /// /// The picture. /// The size of the raster image. @@ -646,7 +646,7 @@ public static SKImage FromPicture (SKPicture picture, SKSizeI dimensions) => FromPicture (picture, dimensions, null, null, false, SKColorSpace.CreateSrgb (), null); /// - /// Creates a new image from the provided . + /// Creates a new image from the provided . /// /// The picture. /// The size of the raster image. @@ -656,7 +656,7 @@ public static SKImage FromPicture (SKPicture picture, SKSizeI dimensions, SKMatr FromPicture (picture, dimensions, &matrix, null, false, SKColorSpace.CreateSrgb (), null); /// - /// Creates a new image from the provided . + /// Creates a new image from the provided . /// /// The picture. /// The size of the raster image. @@ -666,7 +666,7 @@ public static SKImage FromPicture (SKPicture picture, SKSizeI dimensions, SKPain FromPicture (picture, dimensions, null, paint, false, SKColorSpace.CreateSrgb (), null); /// - /// Creates a new image from the provided . + /// Creates a new image from the provided . /// /// The picture. /// The size of the raster image. @@ -688,10 +688,10 @@ private static SKImage FromPicture (SKPicture picture, SKSizeI dimensions, SKMat } /// - /// Encodes the image using the format. + /// Encodes the image using the format. /// - /// Returns the wrapping the encoded image. - /// Use the overload that takes a if you want to encode in a different format. + /// Returns the wrapping the encoded image. + /// Use the overload that takes a if you want to encode in a different format. public SKData Encode () { if (EncodedData is not null) @@ -705,7 +705,7 @@ public SKData Encode () /// /// The file format used to encode the image. /// The quality level to use for the image. This is in the range from 0-100. - /// Returns the wrapping the encoded image. + /// Returns the wrapping the encoded image. /// The quality is a suggestion, and not all formats (for example, PNG) respect or support it. public SKData Encode (SKEncodedImageFormat format, int quality) { @@ -738,7 +738,7 @@ public SKData Encode (SKEncodedImageFormat format, int quality) SkiaApi.sk_image_get_unique_id (Handle); /// - /// Gets the configured for the bitmap. + /// Gets the configured for the bitmap. /// public SKAlphaType AlphaType => SkiaApi.sk_image_get_alpha_type (Handle); @@ -762,7 +762,7 @@ public SKData Encode (SKEncodedImageFormat format, int quality) SkiaApi.sk_image_is_alpha_only (Handle); /// - /// Gets the encoded image pixels as a , if the image was created from supported encoded stream format. + /// Gets the encoded image pixels as a , if the image was created from supported encoded stream format. /// /// Returns if the image mage contents are not encoded. public SKData EncodedData => diff --git a/binding/SkiaSharp/SKImageFilter.cs b/binding/SkiaSharp/SKImageFilter.cs index d69d884055..cc6aae9685 100644 --- a/binding/SkiaSharp/SKImageFilter.cs +++ b/binding/SkiaSharp/SKImageFilter.cs @@ -3,7 +3,7 @@ namespace SkiaSharp { /// - /// Image filters for use with the property of a . + /// Image filters for use with the property of a . /// public unsafe class SKImageFilter : SKObject, ISKReferenceCounted { @@ -27,7 +27,7 @@ public static SKImageFilter CreateMatrix (SKMatrix matrix) => /// The transformation matrix. /// The quality. /// The input filter to use. - /// Returns the new , or null on error. + /// Returns the new , or null on error. [Obsolete("Use SetMatrix(in SKMatrix, SKSamplingOptions, SKImageFilter) instead.", true)] public static SKImageFilter CreateMatrix (SKMatrix matrix, SKFilterQuality quality, SKImageFilter? input) => CreateMatrix (in matrix, quality.ToSamplingOptions (), input); @@ -91,7 +91,7 @@ private static SKImageFilter CreateColorFilter (SKColorFilter cf, SKImageFilter? /// /// The outer (second) filter to apply. /// The inner (first) filter to apply. - /// Returns the new , or null on error. + /// Returns the new , or null on error. public static SKImageFilter CreateCompose (SKImageFilter outer, SKImageFilter inner) { _ = outer ?? throw new ArgumentNullException (nameof (outer)); @@ -324,7 +324,7 @@ private static SKImageFilter CreateOffset (float radiusX, float radiusY, SKImage /// Creates an image filter that draws a picture. /// /// The picture to draw. - /// Returns the new , or null on error. + /// Returns the new , or null on error. public static SKImageFilter CreatePicture (SKPicture picture) { _ = picture ?? throw new ArgumentNullException (nameof (picture)); @@ -336,7 +336,7 @@ public static SKImageFilter CreatePicture (SKPicture picture) /// /// The picture to draw. /// The rectangle to which the output processing will be limited. - /// Returns the new , or null on error. + /// Returns the new , or null on error. public static SKImageFilter CreatePicture (SKPicture picture, SKRect cropRect) { _ = picture ?? throw new ArgumentNullException (nameof (picture)); @@ -354,7 +354,7 @@ public static SKImageFilter CreateTile (SKRect src, SKRect dst) => /// The pixels to tile. /// The pixels where the tiles are drawn /// The input filter to use. - /// Returns the new , or null on error. + /// Returns the new , or null on error. public static SKImageFilter CreateTile (SKRect src, SKRect dst, SKImageFilter? input) { _ = input ?? throw new ArgumentNullException (nameof (input)); @@ -412,7 +412,7 @@ private static SKImageFilter CreateArithmetic (float k1, float k2, float k3, flo /// Creates an image filter that draws an image. /// /// The image to draw. - /// Returns the new , or null on error. + /// Returns the new , or null on error. public static SKImageFilter CreateImage (SKImage image) => CreateImage (image, new SKSamplingOptions (SKCubicResampler.Mitchell)); @@ -435,7 +435,7 @@ public static SKImageFilter CreateImage (SKImage image, SKRect src, SKRect dst, /// The rectangle of the source image to draw. /// The rectangle of the destination area. /// The filter quality. - /// Returns the new , or null on error. + /// Returns the new , or null on error. [Obsolete("Use CreateImage(SKImage, SKRect, SKRect, SKSamplingOptions) instead.", true)] public static SKImageFilter CreateImage (SKImage image, SKRect src, SKRect dst, SKFilterQuality filterQuality) => CreateImage (image, src, dst, filterQuality.ToSamplingOptions ()); diff --git a/binding/SkiaSharp/SKImageInfo.cs b/binding/SkiaSharp/SKImageInfo.cs index 72f08a4ffd..20bc85153f 100644 --- a/binding/SkiaSharp/SKImageInfo.cs +++ b/binding/SkiaSharp/SKImageInfo.cs @@ -40,13 +40,13 @@ public static SKImageInfo ToManaged (ref SKImageInfoNative native) => public unsafe struct SKImageInfo : IEquatable { /// - /// An empty . + /// An empty . /// public static readonly SKImageInfo Empty; /// /// The current 32-bit color for the current platform. /// - /// On Windows, it is typically , and on Unix-based systems (macOS, Linux) it is typically . + /// On Windows, it is typically , and on Unix-based systems (macOS, Linux) it is typically . public static readonly SKColorType PlatformColorType; /// /// The number of bits to shift left for the alpha color component. @@ -103,7 +103,7 @@ static SKImageInfo () public SKColorSpace ColorSpace { get; set; } /// - /// Creates a new with the specified width and height. + /// Creates a new with the specified width and height. /// /// The width. /// The height. @@ -117,7 +117,7 @@ public SKImageInfo (int width, int height) } /// - /// Creates a new with the specified width, height and color type. + /// Creates a new with the specified width, height and color type. /// /// The width. /// The height. @@ -132,7 +132,7 @@ public SKImageInfo (int width, int height, SKColorType colorType) } /// - /// Creates a new with the specified width, height, color type and transparency type. + /// Creates a new with the specified width, height, color type and transparency type. /// /// The width. /// The height. @@ -148,7 +148,7 @@ public SKImageInfo (int width, int height, SKColorType colorType, SKAlphaType al } /// - /// Creates a new with the specified width, height, color type, transparency type and color space. + /// Creates a new with the specified width, height, color type, transparency type and color space. /// /// The width. /// The height. @@ -167,7 +167,7 @@ public SKImageInfo (int width, int height, SKColorType colorType, SKAlphaType al /// /// Gets the number of bytes used per pixel. /// - /// This is calculated from the . If the color type is , then the value will be 0. + /// This is calculated from the . If the color type is , then the value will be 0. public readonly int BytesPerPixel => ColorType.GetBytesPerPixel (); @@ -177,31 +177,31 @@ public SKImageInfo (int width, int height, SKColorType colorType, SKAlphaType al /// /// Gets the number of bits used per pixel. /// - /// This is equivalent to multiplying the by 8 (the number of bits in a byte). + /// This is equivalent to multiplying the by 8 (the number of bits in a byte). public readonly int BitsPerPixel => BytesPerPixel * 8; /// /// Gets the total number of bytes needed to store the bitmap data. /// - /// This is calculated as: * * . + /// This is calculated as: * * . public readonly int BytesSize => Width * Height * BytesPerPixel; /// /// Gets the total number of bytes needed to store the bitmap data as a 64-bit integer. /// - /// This is calculated as: * * . + /// This is calculated as: * * . public readonly long BytesSize64 => (long)Width * (long)Height * (long)BytesPerPixel; /// /// Gets the number of bytes per row. /// - /// This is calculated as: * . + /// This is calculated as: * . public readonly int RowBytes => Width * BytesPerPixel; /// /// Gets the number of bytes per row as a 64-bit integer. /// - /// This is calculated as: * . + /// This is calculated as: * . public readonly long RowBytes64 => (long)Width * (long)BytesPerPixel; /// @@ -234,11 +234,11 @@ public readonly SKImageInfo WithSize (SKSizeI size) => WithSize (size.Width, size.Height); /// - /// Creates a new with the same properties as this , but with the specified dimensions. + /// Creates a new with the same properties as this , but with the specified dimensions. /// /// The width. /// The height. - /// Returns the new . + /// Returns the new . public readonly SKImageInfo WithSize (int width, int height) { var copy = this; @@ -248,10 +248,10 @@ public readonly SKImageInfo WithSize (int width, int height) } /// - /// Creates a new with the same properties as this , but with the specified color type. + /// Creates a new with the same properties as this , but with the specified color type. /// /// The color type. - /// Returns the new . + /// Returns the new . public readonly SKImageInfo WithColorType (SKColorType newColorType) { var copy = this; @@ -260,10 +260,10 @@ public readonly SKImageInfo WithColorType (SKColorType newColorType) } /// - /// Creates a new with the same properties as this , but with the specified color space. + /// Creates a new with the same properties as this , but with the specified color space. /// /// The color space. - /// Returns the new . + /// Returns the new . public readonly SKImageInfo WithColorSpace (SKColorSpace newColorSpace) { var copy = this; @@ -272,10 +272,10 @@ public readonly SKImageInfo WithColorSpace (SKColorSpace newColorSpace) } /// - /// Creates a new with the same properties as this , but with the specified transparency type. + /// Creates a new with the same properties as this , but with the specified transparency type. /// /// The alpha/transparency type. - /// Returns the new . + /// Returns the new . public readonly SKImageInfo WithAlphaType (SKAlphaType newAlphaType) { var copy = this; diff --git a/binding/SkiaSharp/SKManagedStream.cs b/binding/SkiaSharp/SKManagedStream.cs index fefd178819..16784f6659 100644 --- a/binding/SkiaSharp/SKManagedStream.cs +++ b/binding/SkiaSharp/SKManagedStream.cs @@ -6,7 +6,7 @@ namespace SkiaSharp { /// - /// Wraps a into a (a seekable, rewindable Skia stream) + /// Wraps a into a (a seekable, rewindable Skia stream) /// /// The following example shows how to wrap a that /// represents a stream into an embedded resource in an assembly and use it with diff --git a/binding/SkiaSharp/SKManagedWStream.cs b/binding/SkiaSharp/SKManagedWStream.cs index 78a84021c3..de30c24df2 100644 --- a/binding/SkiaSharp/SKManagedWStream.cs +++ b/binding/SkiaSharp/SKManagedWStream.cs @@ -8,7 +8,7 @@ namespace SkiaSharp { /// - /// Wraps a into a (a writeable Skia stream) + /// Wraps a into a (a writeable Skia stream) /// public class SKManagedWStream : SKAbstractManagedWStream { diff --git a/binding/SkiaSharp/SKMaskFilter.cs b/binding/SkiaSharp/SKMaskFilter.cs index bb01b75c71..5a9faa2b99 100644 --- a/binding/SkiaSharp/SKMaskFilter.cs +++ b/binding/SkiaSharp/SKMaskFilter.cs @@ -9,7 +9,7 @@ namespace SkiaSharp // TODO: `computeFastBounds` /// - /// Mask filters perform transformations on an alpha-channel mask before drawing. A mask filter is set using the property on type. + /// Mask filters perform transformations on an alpha-channel mask before drawing. A mask filter is set using the property on type. /// public unsafe class SKMaskFilter : SKObject, ISKReferenceCounted { @@ -52,7 +52,7 @@ public static float ConvertSigmaToRadius (float sigma) /// /// The style of blurring. /// The standard deviation (greater than 0) of the Gaussian blur to apply. - /// Returns the new , or on error. + /// Returns the new , or on error. public static SKMaskFilter CreateBlur (SKBlurStyle blurStyle, float sigma) { return GetObject (SkiaApi.sk_maskfilter_new_blur (blurStyle, sigma)); @@ -70,7 +70,7 @@ public static SKMaskFilter CreateBlur (SKBlurStyle blurStyle, float sigma, bool /// Creates a mask filter that applies a table lookup on each of the alpha values in the mask. /// /// The lookup table with exactly 256 elements. - /// Returns the new , or on error. + /// Returns the new , or on error. public static SKMaskFilter CreateTable (byte[] table) { if (table == null) @@ -86,7 +86,7 @@ public static SKMaskFilter CreateTable (byte[] table) /// Creates a mask filter that applies gamma. /// /// The gamma. - /// Returns the new , or on error. + /// Returns the new , or on error. public static SKMaskFilter CreateGamma (float gamma) { return GetObject (SkiaApi.sk_maskfilter_new_gamma (gamma)); @@ -97,7 +97,7 @@ public static SKMaskFilter CreateGamma (float gamma) /// /// The minimum alpha value. /// The maximum alpha value. - /// Returns the new , or on error. + /// Returns the new , or on error. public static SKMaskFilter CreateClip (byte min, byte max) { return GetObject (SkiaApi.sk_maskfilter_new_clip (min, max)); diff --git a/binding/SkiaSharp/SKMatrix.cs b/binding/SkiaSharp/SKMatrix.cs index f112e23044..81c7465a0b 100644 --- a/binding/SkiaSharp/SKMatrix.cs +++ b/binding/SkiaSharp/SKMatrix.cs @@ -7,7 +7,7 @@ namespace SkiaSharp /// /// A 3x3 transformation matrix with perspective. /// - /// It extends the traditional 2D affine transformation matrix with three perspective components that allow simple 3D effects to be created with it. Those components must be manually set by using the , , fields of the matrix. + /// It extends the traditional 2D affine transformation matrix with three perspective components that allow simple 3D effects to be created with it. Those components must be manually set by using the , , fields of the matrix. public unsafe partial struct SKMatrix { internal const float DegreesToRadians = (float)Math.PI / 180.0f; @@ -53,7 +53,7 @@ public SKMatrix (float[] values) } /// - /// Creates a new instance of using the specified values. + /// Creates a new instance of using the specified values. /// /// The scaling in the x-direction. /// The skew in the x-direction. @@ -118,7 +118,7 @@ public float[] Values { /// Populates the specified array with the matrix values. /// /// The array to populate. - /// The result will be the same as . + /// The result will be the same as . public readonly void GetValues (float[] values) { if (values == null) diff --git a/binding/SkiaSharp/SKMatrix44.cs b/binding/SkiaSharp/SKMatrix44.cs index 9673e1e2ee..f8108d26e8 100644 --- a/binding/SkiaSharp/SKMatrix44.cs +++ b/binding/SkiaSharp/SKMatrix44.cs @@ -18,24 +18,24 @@ public unsafe partial struct SKMatrix44 public readonly static SKMatrix44 Identity = Matrix4x4.Identity; /// - /// Creates a new, uninitialized instance of . + /// Creates a new, uninitialized instance of . /// public SKMatrix44 () { } /// - /// Creates a new instance of using the values from a instance. + /// Creates a new instance of using the values from a instance. /// - /// The instance. - /// When converting from to , the third row and column remain as identity. + /// The instance. + /// When converting from to , the third row and column remain as identity. public SKMatrix44 (SKMatrix src) { this = src; } /// - /// Creates a new instance of using the values from another instance. + /// Creates a new instance of using the values from another instance. /// /// The matrix to copy. public SKMatrix44 (SKMatrix44 src) @@ -429,9 +429,9 @@ public static SKMatrix44 Multiply (SKMatrix44 value1, float value2) => // properties /// - /// Gets the equivalent of the current matrix. + /// Gets the equivalent of the current matrix. /// - /// When converting from to , the third row and column is dropped. + /// When converting from to , the third row and column is dropped. public SKMatrix Matrix => new SKMatrix ( m00, m10, m30, diff --git a/binding/SkiaSharp/SKNWayCanvas.cs b/binding/SkiaSharp/SKNWayCanvas.cs index cbe88cfba9..047c008ce7 100644 --- a/binding/SkiaSharp/SKNWayCanvas.cs +++ b/binding/SkiaSharp/SKNWayCanvas.cs @@ -5,7 +5,7 @@ namespace SkiaSharp { /// - /// A type of that draws to multiple canvases at the same time. + /// A type of that draws to multiple canvases at the same time. /// public class SKNWayCanvas : SKNoDrawCanvas { @@ -15,7 +15,7 @@ internal SKNWayCanvas (IntPtr handle, bool owns) } /// - /// Creates a new with the specified dimensions. + /// Creates a new with the specified dimensions. /// /// The width of the canvas. /// The height of the canvas. diff --git a/binding/SkiaSharp/SKNoDrawCanvas.cs b/binding/SkiaSharp/SKNoDrawCanvas.cs index 48972a0c4e..cddf9f42ad 100644 --- a/binding/SkiaSharp/SKNoDrawCanvas.cs +++ b/binding/SkiaSharp/SKNoDrawCanvas.cs @@ -5,7 +5,7 @@ namespace SkiaSharp { /// - /// A type of that provides a base type for canvases that do not need to rasterize. + /// A type of that provides a base type for canvases that do not need to rasterize. /// /// These canvases are not backed by any device/pixels and they use conservative clipping (clipping calls only use rectangles). public class SKNoDrawCanvas : SKCanvas @@ -16,7 +16,7 @@ internal SKNoDrawCanvas (IntPtr handle, bool owns) } /// - /// Creates a new with the specified dimensions. + /// Creates a new with the specified dimensions. /// /// The width of the canvas. /// The height of the canvas. diff --git a/binding/SkiaSharp/SKObject.cs b/binding/SkiaSharp/SKObject.cs index cf7bea384d..1d863bcc61 100644 --- a/binding/SkiaSharp/SKObject.cs +++ b/binding/SkiaSharp/SKObject.cs @@ -10,7 +10,7 @@ namespace SkiaSharp /// /// Represents a tracked native object. /// - /// This object wraps a native handle and keeps track of it's lifetime for the garbage collector. For a simple object, use . + /// This object wraps a native handle and keeps track of it's lifetime for the garbage collector. For a simple object, use . public abstract class SKObject : SKNativeObject { private readonly object locker = new object (); @@ -220,7 +220,7 @@ internal static T Referenced (T owner, SKObject child) /// /// Represents a native object. /// - /// This object just wraps a native handle with the managed dispose pattern. For a tracked object, use . + /// This object just wraps a native handle with the managed dispose pattern. For a tracked object, use . public abstract class SKNativeObject : IDisposable { internal bool fromFinalizer = false; @@ -292,9 +292,9 @@ protected virtual void Dispose (bool disposing) } /// - /// Releases all resources used by this . + /// Releases all resources used by this . /// - /// Always dispose the object before you release your last reference to the . Otherwise, the resources it is using will not be freed until the garbage collector calls the finalizer. + /// Always dispose the object before you release your last reference to the . Otherwise, the resources it is using will not be freed until the garbage collector calls the finalizer. public void Dispose () { if (IgnorePublicDispose) diff --git a/binding/SkiaSharp/SKOverdrawCanvas.cs b/binding/SkiaSharp/SKOverdrawCanvas.cs index d9b9d046d3..e7987c4af5 100644 --- a/binding/SkiaSharp/SKOverdrawCanvas.cs +++ b/binding/SkiaSharp/SKOverdrawCanvas.cs @@ -16,7 +16,7 @@ internal SKOverdrawCanvas (IntPtr handle, bool owns) } /// - /// Creates a new that wraps the specified . + /// Creates a new that wraps the specified . /// /// The canvas to draw on. public SKOverdrawCanvas (SKCanvas canvas) diff --git a/binding/SkiaSharp/SKPMColor.cs b/binding/SkiaSharp/SKPMColor.cs index 519375a0f4..0bb994801a 100644 --- a/binding/SkiaSharp/SKPMColor.cs +++ b/binding/SkiaSharp/SKPMColor.cs @@ -7,7 +7,7 @@ namespace SkiaSharp /// /// 32-bit ARGB premultiplied color value. /// - /// The byte order for this value is configuration dependent. This is different from , which is unpremultiplied, and is always in the same byte order. + /// The byte order for this value is configuration dependent. This is different from , which is unpremultiplied, and is always in the same byte order. public readonly unsafe struct SKPMColor : IEquatable { private readonly uint color; @@ -41,18 +41,18 @@ public SKPMColor (uint value) // PreMultiply /// - /// Converts an unpremultiplied to a premultiplied . + /// Converts an unpremultiplied to a premultiplied . /// /// The unpremultiplied color to convert. - /// Returns the new premultiplied . + /// Returns the new premultiplied . public static SKPMColor PreMultiply (SKColor color) => SkiaApi.sk_color_premultiply ((uint)color); /// - /// Converts an array of unpremultiplied s to an array of premultiplied s. + /// Converts an array of unpremultiplied s to an array of premultiplied s. /// /// The unpremultiplied colors to convert. - /// Returns the new array of premultiplied s. + /// Returns the new array of premultiplied s. public static SKPMColor[] PreMultiply (SKColor[] colors) { var pmcolors = new SKPMColor[colors.Length]; @@ -66,18 +66,18 @@ public static SKPMColor[] PreMultiply (SKColor[] colors) // UnPreMultiply /// - /// Converts a premultiplied to the unpremultiplied . + /// Converts a premultiplied to the unpremultiplied . /// /// The premultiplied color to convert. - /// Returns the new unpremultiplied . + /// Returns the new unpremultiplied . public static SKColor UnPreMultiply (SKPMColor pmcolor) => SkiaApi.sk_color_unpremultiply ((uint)pmcolor); /// - /// Converts an array of premultiplied s to an array of unpremultiplied s. + /// Converts an array of premultiplied s to an array of unpremultiplied s. /// /// The premultiplied colors to convert. - /// Returns the new array of unpremultiplied s. + /// Returns the new array of unpremultiplied s. public static SKColor[] UnPreMultiply (SKPMColor[] pmcolors) { var colors = new SKColor[pmcolors.Length]; @@ -89,18 +89,18 @@ public static SKColor[] UnPreMultiply (SKPMColor[] pmcolors) } /// - /// Converts an unpremultiplied to the premultiplied . + /// Converts an unpremultiplied to the premultiplied . /// /// The unpremultiplied color to convert. - /// Returns the new premultiplied . + /// Returns the new premultiplied . public static explicit operator SKPMColor (SKColor color) => SKPMColor.PreMultiply (color); /// - /// Converts a premultiplied to the unpremultiplied . + /// Converts a premultiplied to the unpremultiplied . /// /// The premultiplied color to convert. - /// Returns the new unpremultiplied . + /// Returns the new unpremultiplied . public static explicit operator SKColor (SKPMColor color) => SKPMColor.UnPreMultiply (color); @@ -127,7 +127,7 @@ public readonly override bool Equals (object other) => other is SKPMColor f && Equals (f); /// - /// Indicates whether two objects are equal. + /// Indicates whether two objects are equal. /// /// The first color to compare. /// The second color to compare. @@ -136,7 +136,7 @@ public readonly override bool Equals (object other) => left.Equals (right); /// - /// Indicates whether two objects are different. + /// Indicates whether two objects are different. /// /// The first color to compare. /// The second color to compare. @@ -152,15 +152,15 @@ public readonly override int GetHashCode () => color.GetHashCode (); /// - /// Converts a UInt32 to a . + /// Converts a UInt32 to a . /// /// The UInt32 representation of a color. - /// The new instance. + /// The new instance. public static implicit operator SKPMColor (uint color) => new SKPMColor (color); /// - /// Converts a to a UInt32. + /// Converts a to a UInt32. /// /// The color to convert. /// The UInt32 value for the color. diff --git a/binding/SkiaSharp/SKPaint.cs b/binding/SkiaSharp/SKPaint.cs index 3287d4b85c..72be6fc8f0 100644 --- a/binding/SkiaSharp/SKPaint.cs +++ b/binding/SkiaSharp/SKPaint.cs @@ -23,7 +23,7 @@ public enum SKPaintHinting /// Normal = 2, /// - /// The same as , unless we are rendering subpixel glyphs. + /// The same as , unless we are rendering subpixel glyphs. /// Full = 3, } @@ -53,7 +53,7 @@ public enum SKFilterQuality } /// - /// Convenience methods for . + /// Convenience methods for . /// public static partial class SkiaExtensions { @@ -250,7 +250,7 @@ public bool SubpixelText { /// /// Gets or sets a value indicating whether LCD text rendering is enabled. /// - /// must also be enabled for LCD rendering to be enabled. + /// must also be enabled for LCD rendering to be enabled. [Obsolete ($"Use {nameof (SKFont)}.{nameof (SKFont.Edging)} instead.")] public bool LcdRenderText { get => SkiaApi.sk_compatpaint_get_lcd_render_text (Handle); @@ -296,7 +296,7 @@ public bool FakeBoldText { /// /// Gets or sets a value indicating whether to paint a stroke or the fill. /// - /// This is a shortcut way to set to either or . + /// This is a shortcut way to set to either or . public bool IsStroke { get => Style != SKPaintStyle.Fill; set => Style = value ? SKPaintStyle.Stroke : SKPaintStyle.Fill; @@ -305,7 +305,7 @@ public bool IsStroke { /// /// Gets or sets the painting style. /// - /// Can also be set using . + /// Can also be set using . public SKPaintStyle Style { get => SkiaApi.sk_paint_get_style (Handle); set => SkiaApi.sk_paint_set_style (Handle, value); @@ -337,7 +337,7 @@ public void SetColor (SKColorF color, SKColorSpace colorspace) => /// /// Gets or sets the paint's stroke width. /// - /// This is used whenever the is or . The value of zero is the special hairline mode. Hairlines always draw with a width of 1 pixel, regardless of the transformation matrix. + /// This is used whenever the is or . The value of zero is the special hairline mode. Hairlines always draw with a width of 1 pixel, regardless of the transformation matrix. public float StrokeWidth { get => SkiaApi.sk_paint_get_stroke_width (Handle); set => SkiaApi.sk_paint_set_stroke_width (Handle, value); @@ -346,7 +346,7 @@ public float StrokeWidth { /// /// Gets or sets the paint's miter limit. /// - /// This is used whenever the is or to control the behavior of miter joins when the joins' angle is sharp. + /// This is used whenever the is or to control the behavior of miter joins when the joins' angle is sharp. public float StrokeMiter { get => SkiaApi.sk_paint_get_stroke_miter (Handle); set => SkiaApi.sk_paint_set_stroke_miter (Handle, value); @@ -558,10 +558,10 @@ public float MeasureText (ReadOnlySpan text) => /// /// Measures the specified UTF-8 encoded text. /// - /// The pointer to a region holding text encoded using the encoding specified in format. + /// The pointer to a region holding text encoded using the encoding specified in format. /// The number of bytes to read from the /// Returns the width of the text. - /// The parameter is a pointer to a region in memory that contains text encoded in the format. This only consumes up to bytes from the buffer. + /// The parameter is a pointer to a region in memory that contains text encoded in the format. This only consumes up to bytes from the buffer. [Obsolete ($"Use {nameof (SKFont)}.{nameof (SKFont.MeasureText)}() instead.")] public float MeasureText (IntPtr buffer, int length) => GetFont ().MeasureText (buffer, length, TextEncoding, this); @@ -569,10 +569,10 @@ public float MeasureText (IntPtr buffer, int length) => /// /// Measures the specified UTF-8 encoded text. /// - /// The pointer to a region holding text encoded using the encoding specified in format. + /// The pointer to a region holding text encoded using the encoding specified in format. /// The number of bytes to read from the /// Returns the width of the text. - /// The parameter is a pointer to a region in memory that contains text encoded in the format. This only consumes up to bytes from the buffer. + /// The parameter is a pointer to a region in memory that contains text encoded in the format. This only consumes up to bytes from the buffer. [Obsolete ($"Use {nameof (SKFont)}.{nameof (SKFont.MeasureText)}() instead.")] public float MeasureText (IntPtr buffer, IntPtr length) => GetFont ().MeasureText (buffer, (int)length, TextEncoding, this); @@ -614,7 +614,7 @@ public float MeasureText (ReadOnlySpan text, ref SKRect bounds) => /// /// Measures the specified UTF-8 encoded text. /// - /// The pointer to a region holding text encoded using the encoding specified in format. + /// The pointer to a region holding text encoded using the encoding specified in format. /// The number of bytes to read from the /// The bounds of the text relative to (0, 0) /// Returns the width of the text. @@ -630,7 +630,7 @@ public float MeasureText (IntPtr buffer, int length, ref SKRect bounds) => /// /// Measures the specified UTF-8 encoded text. /// - /// The pointer to a region holding text encoded using the encoding specified in format. + /// The pointer to a region holding text encoded using the encoding specified in format. /// The number of bytes to read from the /// The bounds of the text relative to (0, 0) /// Returns the width of the text. @@ -743,11 +743,11 @@ public long BreakText (ReadOnlySpan text, float maxWidth, out float measur /// /// Measure the text buffer, stopping early if the measured width exceeds . /// - /// The pointer to a region holding text encoded using the encoding specified in format. + /// The pointer to a region holding text encoded using the encoding specified in format. /// The number of bytes to read from the /// The maximum width. Only the subset of text whose accumulated widths are <= are measured. /// Returns the number of bytes of text that were measured. - /// The parameter is a pointer to a region in memory that contains text encoded in the format. This only consumes up to bytes from the buffer. + /// The parameter is a pointer to a region in memory that contains text encoded in the format. This only consumes up to bytes from the buffer. [Obsolete ($"Use {nameof (SKFont)}.{nameof (SKFont.BreakText)}() instead.")] public long BreakText (IntPtr buffer, int length, float maxWidth) => GetFont ().BreakText (buffer, length, TextEncoding, maxWidth, out _, this); @@ -755,12 +755,12 @@ public long BreakText (IntPtr buffer, int length, float maxWidth) => /// /// Measure the text buffer, stopping early if the measured width exceeds . /// - /// The pointer to a region holding text encoded using the encoding specified in format. + /// The pointer to a region holding text encoded using the encoding specified in format. /// The number of bytes to read from the /// The maximum width. Only the subset of text whose accumulated widths are <= are measured. /// The actual width of the measured text. /// Returns the number of bytes of text that were measured. - /// The parameter is a pointer to a region in memory that contains text encoded in the format. This only consumes up to bytes from the buffer. + /// The parameter is a pointer to a region in memory that contains text encoded in the format. This only consumes up to bytes from the buffer. [Obsolete ($"Use {nameof (SKFont)}.{nameof (SKFont.BreakText)}() instead.")] public long BreakText (IntPtr buffer, int length, float maxWidth, out float measuredWidth) => GetFont ().BreakText (buffer, length, TextEncoding, maxWidth, out measuredWidth, this); @@ -768,11 +768,11 @@ public long BreakText (IntPtr buffer, int length, float maxWidth, out float meas /// /// Measure the text buffer, stopping early if the measured width exceeds . /// - /// The pointer to a region holding text encoded using the encoding specified in format. + /// The pointer to a region holding text encoded using the encoding specified in format. /// The number of bytes to read from the /// The maximum width. Only the subset of text whose accumulated widths are <= are measured. /// Returns the number of bytes of text that were measured. - /// The parameter is a pointer to a region in memory that contains text encoded in the format. This only consumes up to bytes from the buffer. + /// The parameter is a pointer to a region in memory that contains text encoded in the format. This only consumes up to bytes from the buffer. [Obsolete ($"Use {nameof (SKFont)}.{nameof (SKFont.BreakText)}() instead.")] public long BreakText (IntPtr buffer, IntPtr length, float maxWidth) => GetFont ().BreakText (buffer, (int)length, TextEncoding, maxWidth, out _, this); @@ -780,12 +780,12 @@ public long BreakText (IntPtr buffer, IntPtr length, float maxWidth) => /// /// Measure the text buffer, stopping early if the measured width exceeds . /// - /// The pointer to a region holding text encoded using the encoding specified in format. + /// The pointer to a region holding text encoded using the encoding specified in format. /// The number of bytes to read from the /// The maximum width. Only the subset of text whose accumulated widths are <= are measured. /// The actual width of the measured text. /// Returns the number of bytes of text that were measured. - /// The parameter is a pointer to a region in memory that contains text encoded in the format. This only consumes up to bytes from the buffer. + /// The parameter is a pointer to a region in memory that contains text encoded in the format. This only consumes up to bytes from the buffer. [Obsolete ($"Use {nameof (SKFont)}.{nameof (SKFont.BreakText)}() instead.")] public long BreakText (IntPtr buffer, IntPtr length, float maxWidth, out float measuredWidth) => GetFont ().BreakText (buffer, (int)length, TextEncoding, maxWidth, out measuredWidth, this); @@ -798,7 +798,7 @@ public long BreakText (IntPtr buffer, IntPtr length, float maxWidth, out float m /// The text to generate an outline for. /// The x-coordinate of the first glyph in the text. /// The y-coordinate of the first glyph in the text. - /// Returns the containing the outline of the text. + /// Returns the containing the outline of the text. [Obsolete ($"Use {nameof (SKFont)}.{nameof (SKFont.GetTextPath)}() instead.")] public SKPath GetTextPath (string text, float x, float y) => GetFont ().GetTextPath (text, new SKPoint (x, y)); @@ -813,10 +813,10 @@ public SKPath GetTextPath (ReadOnlySpan text, float x, float y) => /// /// Returns the path (outline) for the specified text. /// - /// The text encoded using the encoding specified in format. + /// The text encoded using the encoding specified in format. /// The x-coordinate of the first glyph in the text. /// The y-coordinate of the first glyph in the text. - /// Returns the containing the outline of the text. + /// Returns the containing the outline of the text. [Obsolete ($"Use {nameof (SKFont)}.{nameof (SKFont.GetTextPath)}() instead.")] public SKPath GetTextPath (byte[] text, float x, float y) => GetFont ().GetTextPath (text, TextEncoding, new SKPoint (x, y)); @@ -831,11 +831,11 @@ public SKPath GetTextPath (ReadOnlySpan text, float x, float y) => /// /// Returns the path (outline) for the specified text. /// - /// The pointer to a region holding text encoded using the encoding specified in format. + /// The pointer to a region holding text encoded using the encoding specified in format. /// The number of bytes to read from the /// The x-coordinate of the first glyph in the text. /// The y-coordinate of the first glyph in the text. - /// Returns the containing the outline of the text. + /// Returns the containing the outline of the text. [Obsolete ($"Use {nameof (SKFont)}.{nameof (SKFont.GetTextPath)}() instead.")] public SKPath GetTextPath (IntPtr buffer, int length, float x, float y) => GetFont ().GetTextPath (buffer, length, TextEncoding, new SKPoint (x, y)); @@ -843,11 +843,11 @@ public SKPath GetTextPath (IntPtr buffer, int length, float x, float y) => /// /// Returns the path (outline) for the specified text. /// - /// The pointer to a region holding text encoded using the encoding specified in format. + /// The pointer to a region holding text encoded using the encoding specified in format. /// The number of bytes to read from the /// The x-coordinate of the first glyph in the text. /// The y-coordinate of the first glyph in the text. - /// Returns the containing the outline of the text. + /// Returns the containing the outline of the text. [Obsolete ($"Use {nameof (SKFont)}.{nameof (SKFont.GetTextPath)}() instead.")] public SKPath GetTextPath (IntPtr buffer, IntPtr length, float x, float y) => GetFont ().GetTextPath (buffer, (int)length, TextEncoding, new SKPoint (x, y)); @@ -857,7 +857,7 @@ public SKPath GetTextPath (IntPtr buffer, IntPtr length, float x, float y) => /// /// The text to generate an outline for. /// The position to use for each glyph in the text. - /// Returns the containing the outline of the text. + /// Returns the containing the outline of the text. [Obsolete ($"Use {nameof (SKFont)}.{nameof (SKFont.GetTextPath)}() instead.")] public SKPath GetTextPath (string text, SKPoint[] points) => GetFont ().GetTextPath (text, points); @@ -871,9 +871,9 @@ public SKPath GetTextPath (ReadOnlySpan text, ReadOnlySpan points /// /// Returns the path (outline) for the specified text. /// - /// The text encoded using the encoding specified in format. + /// The text encoded using the encoding specified in format. /// The position to use for each glyph in the text. - /// Returns the containing the outline of the text. + /// Returns the containing the outline of the text. [Obsolete ($"Use {nameof (SKFont)}.{nameof (SKFont.GetTextPath)}() instead.")] public SKPath GetTextPath (byte[] text, SKPoint[] points) => GetFont ().GetTextPath (text, TextEncoding, points); @@ -887,10 +887,10 @@ public SKPath GetTextPath (ReadOnlySpan text, ReadOnlySpan points /// /// Returns the path (outline) for the specified text. /// - /// The pointer to a region holding text encoded using the encoding specified in format. + /// The pointer to a region holding text encoded using the encoding specified in format. /// The number of bytes to read from the /// The position to use for each glyph in the text. - /// Returns the containing the outline of the text. + /// Returns the containing the outline of the text. [Obsolete ($"Use {nameof (SKFont)}.{nameof (SKFont.GetTextPath)}() instead.")] public SKPath GetTextPath (IntPtr buffer, int length, SKPoint[] points) => GetFont ().GetTextPath (buffer, length, TextEncoding, points); @@ -905,10 +905,10 @@ public SKPath GetTextPath (IntPtr buffer, int length, ReadOnlySpan poin /// /// Returns the path (outline) for the specified text. /// - /// The pointer to a region holding text encoded using the encoding specified in format. + /// The pointer to a region holding text encoded using the encoding specified in format. /// The number of bytes to read from the /// The position to use for each glyph in the text. - /// Returns the containing the outline of the text. + /// Returns the containing the outline of the text. [Obsolete ($"Use {nameof (SKFont)}.{nameof (SKFont.GetTextPath)}() instead.")] public SKPath GetTextPath (IntPtr buffer, IntPtr length, SKPoint[] points) => GetFont ().GetTextPath (buffer, (int)length, TextEncoding, points); @@ -1041,7 +1041,7 @@ public int CountGlyphs (ReadOnlySpan text) => /// /// Returns the number of glyphs in text. /// - /// The text encoded using the encoding specified in format. + /// The text encoded using the encoding specified in format. /// Returns the number of glyphs in text. [Obsolete ($"Use {nameof (SKFont)}.{nameof (SKFont.CountGlyphs)}() instead.")] public int CountGlyphs (byte[] text) => @@ -1055,7 +1055,7 @@ public int CountGlyphs (ReadOnlySpan text) => /// /// Returns the number of glyphs in text. /// - /// The text buffer encoded using the encoding specified in format. + /// The text buffer encoded using the encoding specified in format. /// The length of the text buffer. /// Returns the number of glyphs in text. [Obsolete ($"Use {nameof (SKFont)}.{nameof (SKFont.CountGlyphs)}() instead.")] @@ -1065,7 +1065,7 @@ public int CountGlyphs (IntPtr text, int length) => /// /// Returns the number of glyphs in text. /// - /// The text buffer encoded using the encoding specified in format. + /// The text buffer encoded using the encoding specified in format. /// The length of the text buffer. /// Returns the number of glyphs in text. [Obsolete ($"Use {nameof (SKFont)}.{nameof (SKFont.CountGlyphs)}() instead.")] @@ -1092,7 +1092,7 @@ public ushort[] GetGlyphs (ReadOnlySpan text) => /// /// Converts text into glyph indices. /// - /// The text encoded using the encoding specified in format. + /// The text encoded using the encoding specified in format. /// Returns the glyph indices. /// This method does not check the text for valid character codes or valid glyph indices. [Obsolete ($"Use {nameof (SKFont)}.{nameof (SKFont.GetGlyphs)}() instead.")] @@ -1107,7 +1107,7 @@ public ushort[] GetGlyphs (ReadOnlySpan text) => /// /// Converts text into glyph indices. /// - /// The text buffer encoded using the encoding specified in format. + /// The text buffer encoded using the encoding specified in format. /// The length of the text buffer. /// Returns the glyph indices. /// This method does not check the text for valid character codes or valid glyph indices. @@ -1118,7 +1118,7 @@ public ushort[] GetGlyphs (IntPtr text, int length) => /// /// Converts text into glyph indices. /// - /// The text buffer encoded using the encoding specified in format. + /// The text buffer encoded using the encoding specified in format. /// The length of the text buffer. /// Returns the glyph indices. /// This method does not check the text for valid character codes or valid glyph indices. @@ -1146,7 +1146,7 @@ public bool ContainsGlyphs (ReadOnlySpan text) => /// /// Returns a value indicating whether or not all the characters corresponds to a non-zero glyph index. /// - /// The text encoded using the encoding specified in format. + /// The text encoded using the encoding specified in format. /// Returns true if all the characters corresponds to a non-zero glyph index, otherwise false if any characters in text are not supported in the typeface. /// This method does not check to see if the text contains invalid glyph indices. [Obsolete ($"Use {nameof (SKFont)}.{nameof (SKFont.ContainsGlyphs)}() instead.")] @@ -1161,7 +1161,7 @@ public bool ContainsGlyphs (ReadOnlySpan text) => /// /// Returns a value indicating whether or not all the characters corresponds to a non-zero glyph index. /// - /// The text buffer encoded using the encoding specified in format. + /// The text buffer encoded using the encoding specified in format. /// The length of the text buffer. /// Returns true if all the characters corresponds to a non-zero glyph index, otherwise false if any characters in text are not supported in the typeface. /// This method does not check to see if the text contains invalid glyph indices. @@ -1172,7 +1172,7 @@ public bool ContainsGlyphs (IntPtr text, int length) => /// /// Returns a value indicating whether or not all the characters corresponds to a non-zero glyph index. /// - /// The text buffer encoded using the encoding specified in format. + /// The text buffer encoded using the encoding specified in format. /// The length of the text buffer. /// Returns true if all the characters corresponds to a non-zero glyph index, otherwise false if any characters in text are not supported in the typeface. /// This method does not check to see if the text contains invalid glyph indices. @@ -1259,7 +1259,7 @@ public float[] GetGlyphWidths (ReadOnlySpan text) => /// /// Retrieves the advance for each glyph in the text. /// - /// The text encoded using the encoding specified in format. + /// The text encoded using the encoding specified in format. /// Returns the text advances for each glyph. /// If is false, this method returns the /// horizontal advance. If is true, this @@ -1279,7 +1279,7 @@ public float[] GetGlyphWidths (ReadOnlySpan text) => /// /// Retrieves the advance for each glyph in the text. /// - /// The text buffer encoded using the encoding specified in format. + /// The text buffer encoded using the encoding specified in format. /// The length of the text buffer. /// Returns the text advances for each glyph. /// If is false, this method returns the @@ -1295,7 +1295,7 @@ public float[] GetGlyphWidths (IntPtr text, int length) => /// /// Retrieves the advance for each glyph in the text. /// - /// The text buffer encoded using the encoding specified in format. + /// The text buffer encoded using the encoding specified in format. /// The length of the text buffer. /// Returns the text advances for each glyph. /// If is false, this method returns the @@ -1333,7 +1333,7 @@ public float[] GetGlyphWidths (ReadOnlySpan text, out SKRect[] bounds) => /// /// Retrieves the advance and bounds for each glyph in the text. /// - /// The text encoded using the encoding specified in format. + /// The text encoded using the encoding specified in format. /// The bounds for each glyph relative to (0, 0). /// Returns the text advances for each glyph. /// If is false, this method returns the @@ -1355,7 +1355,7 @@ public float[] GetGlyphWidths (ReadOnlySpan text, out SKRect[] bounds) => /// /// Retrieves the advance and bounds for each glyph in the text. /// - /// The text buffer encoded using the encoding specified in format. + /// The text buffer encoded using the encoding specified in format. /// The length of the text buffer. /// The bounds for each glyph relative to (0, 0). /// Returns the text advances for each glyph. @@ -1372,7 +1372,7 @@ public float[] GetGlyphWidths (IntPtr text, int length, out SKRect[] bounds) => /// /// Retrieves the advance and bounds for each glyph in the text. /// - /// The text buffer encoded using the encoding specified in format. + /// The text buffer encoded using the encoding specified in format. /// The length of the text buffer. /// The bounds for each glyph relative to (0, 0). /// Returns the text advances for each glyph. @@ -1423,7 +1423,7 @@ public float[] GetTextIntercepts (ReadOnlySpan text, float x, float y, flo /// /// Calculate the intersections of two parallel lines and the glyphs. /// - /// The text encoded using the encoding specified in format. + /// The text encoded using the encoding specified in format. /// The x-coordinate of the origin to the text. /// The y-coordinate of the origin to the text. /// The upper line parallel to the advance. @@ -1455,7 +1455,7 @@ public float[] GetTextIntercepts (ReadOnlySpan text, float x, float y, flo /// /// Calculate the intersections of two parallel lines and the glyphs. /// - /// The text buffer encoded using the encoding specified in format. + /// The text buffer encoded using the encoding specified in format. /// The length of the text buffer. /// The x-coordinate of the origin to the text. /// The y-coordinate of the origin to the text. @@ -1473,7 +1473,7 @@ public float[] GetTextIntercepts (IntPtr text, IntPtr length, float x, float y, /// /// Calculate the intersections of two parallel lines and the glyphs. /// - /// The text buffer encoded using the encoding specified in format. + /// The text buffer encoded using the encoding specified in format. /// The length of the text buffer. /// The x-coordinate of the origin to the text. /// The y-coordinate of the origin to the text. @@ -1551,7 +1551,7 @@ public float[] GetPositionedTextIntercepts (ReadOnlySpan text, ReadOnlySpa /// /// Calculate the intersections of two parallel lines and the glyphs. /// - /// The text encoded using the encoding specified in format. + /// The text encoded using the encoding specified in format. /// The positions of each glyph. /// The upper line parallel to the advance. /// The lower line parallel to the advance. @@ -1581,7 +1581,7 @@ public float[] GetPositionedTextIntercepts (ReadOnlySpan text, ReadOnlySpa /// /// Calculate the intersections of two parallel lines and the glyphs. /// - /// The text buffer encoded using the encoding specified in format. + /// The text buffer encoded using the encoding specified in format. /// The length of the text buffer. /// The positions of each glyph. /// The upper line parallel to the advance. @@ -1598,7 +1598,7 @@ public float[] GetPositionedTextIntercepts (IntPtr text, int length, SKPoint[] p /// /// Calculate the intersections of two parallel lines and the glyphs. /// - /// The text buffer encoded using the encoding specified in format. + /// The text buffer encoded using the encoding specified in format. /// The length of the text buffer. /// The positions of each glyph. /// The upper line parallel to the advance. @@ -1655,7 +1655,7 @@ public float[] GetHorizontalTextIntercepts (ReadOnlySpan text, ReadOnlySpa /// /// Calculate the intersections of two parallel lines and the glyphs. /// - /// The text encoded using the encoding specified in format. + /// The text encoded using the encoding specified in format. /// The positions of each glyph in the horizontal direction. /// The positions of all the glyphs along the y-coordinate. /// The upper line parallel to the advance. @@ -1687,7 +1687,7 @@ public float[] GetHorizontalTextIntercepts (ReadOnlySpan text, ReadOnlySpa /// /// Calculate the intersections of two parallel lines and the glyphs. /// - /// The text buffer encoded using the encoding specified in format. + /// The text buffer encoded using the encoding specified in format. /// The length of the text buffer. /// The positions of each glyph in the horizontal direction. /// The positions of all the glyphs along the y-coordinate. @@ -1705,7 +1705,7 @@ public float[] GetHorizontalTextIntercepts (IntPtr text, int length, float[] xpo /// /// Calculate the intersections of two parallel lines and the glyphs. /// - /// The text buffer encoded using the encoding specified in format. + /// The text buffer encoded using the encoding specified in format. /// The length of the text buffer. /// The positions of each glyph in the horizontal direction. /// The positions of all the glyphs along the y-coordinate. diff --git a/binding/SkiaSharp/SKPath.cs b/binding/SkiaSharp/SKPath.cs index a939444955..f25cf3d1a3 100644 --- a/binding/SkiaSharp/SKPath.cs +++ b/binding/SkiaSharp/SKPath.cs @@ -68,7 +68,7 @@ protected override void DisposeNative () => /// /// Gets or sets the path's fill type. /// - /// This is used to define how "inside" is computed. The default value is . + /// This is used to define how "inside" is computed. The default value is . public SKPathFillType FillType { get => SkiaApi.sk_path_get_filltype (Handle); set => SkiaApi.sk_path_set_filltype (Handle, value); @@ -141,7 +141,7 @@ public SKPathFillType FillType { /// /// The point at the specified index. /// The index of the point to get. - /// If the index is out of range (i.e. is not 0 <= index < ), then the returned coordinates will be (0, 0). + /// If the index is out of range (i.e. is not 0 <= index < ), then the returned coordinates will be (0, 0). public SKPoint this[int index] => GetPoint (index); /// @@ -177,7 +177,7 @@ public SKRect Bounds { } /// - /// Gets the "tight" bounds of the path. Unlike , the control points of curves are excluded. + /// Gets the "tight" bounds of the path. Unlike , the control points of curves are excluded. /// /// The tight bounds of the path. public SKRect TightBounds { @@ -194,7 +194,7 @@ public SKRect TightBounds { /// Returns the oval bounds of the path. /// /// Returns the oval bounds of the path. - /// If the path is not a single oval or circle, then an empty rectangle is returned. See also . + /// If the path is not a single oval or circle, then an empty rectangle is returned. See also . public SKRect GetOvalBounds () { SKRect bounds; @@ -209,7 +209,7 @@ public SKRect GetOvalBounds () /// Returns the round rectangle of the path. /// /// Returns the round rectangle of the path. - /// If the path is not a single round rectangle, then is returned. See also . + /// If the path is not a single round rectangle, then is returned. See also . public SKRoundRect GetRoundRect () { var rrect = new SKRoundRect (); @@ -226,7 +226,7 @@ public SKRoundRect GetRoundRect () /// Returns the two points of the path. /// /// Returns the two points of the path. - /// If the path is not a single, straight line, then is returned. See also . + /// If the path is not a single, straight line, then is returned. See also . public SKPoint[] GetLine () { var temp = new SKPoint[2]; @@ -244,7 +244,7 @@ public SKPoint[] GetLine () /// Returns the rectangle of the path. /// /// Returns the rectangle of the path. - /// If the path is not a single rectangle, then an empty rectangle is returned. See also . + /// If the path is not a single rectangle, then an empty rectangle is returned. See also . public SKRect GetRect () => GetRect (out var isClosed, out var direction); @@ -254,7 +254,7 @@ public SKRect GetRect () => /// Whether or not the rectangle is closed. /// The direction of the rectangle. /// Returns the rectangle of the path. - /// If the path is not a single rectangle, then an empty rectangle is returned. See also . + /// If the path is not a single rectangle, then an empty rectangle is returned. See also . public SKRect GetRect (out bool isClosed, out SKPathDirection direction) { byte c; @@ -275,7 +275,7 @@ public SKRect GetRect (out bool isClosed, out SKPathDirection direction) /// /// The index of the point to return. /// The point at the specified index. - /// If the index is out of range (i.e. is not 0 <= index < ), then the returned coordinates will be (0, 0). + /// If the index is out of range (i.e. is not 0 <= index < ), then the returned coordinates will be (0, 0). public SKPoint GetPoint (int index) { if (index < 0 || index >= PointCount) @@ -312,7 +312,7 @@ public int GetPoints (SKPoint[] points, int max) } /// - /// Returns true if the point (x, y) is contained by the path, taking into account the . + /// Returns true if the point (x, y) is contained by the path, taking into account the . /// /// The x-coordinate to check. /// The y-coordinate to check. @@ -791,7 +791,7 @@ public void Transform (SKMatrix matrix, SKPath destination) => /// The path containing the elements to be added to the current path. /// The amount to translate the path in X as it is added. /// The amount to translate the path in Y as it is added. - /// Determines how the path contours are added to the path. On mode, contours are added as new contours. On mode, the last contour of the path is extended with the first contour of the path. + /// Determines how the path contours are added to the path. On mode, contours are added as new contours. On mode, the last contour of the path is extended with the first contour of the path. public void AddPath (SKPath other, float dx, float dy, SKPathAddMode mode = SKPathAddMode.Append) { if (other == null) @@ -805,7 +805,7 @@ public void AddPath (SKPath other, float dx, float dy, SKPathAddMode mode = SKPa /// /// The path containing the elements to be added to the current path. /// Transformation matrix applied to the path. - /// Determines how the path contours are added to the path. On mode, contours are added as new contours. On mode, the last contour of the path is extended with the first contour of the path. + /// Determines how the path contours are added to the path. On mode, contours are added as new contours. On mode, the last contour of the path is extended with the first contour of the path. public void AddPath (SKPath other, in SKMatrix matrix, SKPathAddMode mode = SKPathAddMode.Append) { if (other == null) @@ -819,7 +819,7 @@ public void AddPath (SKPath other, in SKMatrix matrix, SKPathAddMode mode = SKPa /// Extends the current path with the path elements from another path, using the specified extension mode. /// /// The path containing the elements to be added to the current path. - /// Determines how the path contours are added to the path. On mode, contours are added as new contours. On mode, the last contour of the path is extended with the first contour of the path. + /// Determines how the path contours are added to the path. On mode, contours are added as new contours. On mode, the last contour of the path is extended with the first contour of the path. public void AddPath (SKPath other, SKPathAddMode mode = SKPathAddMode.Append) { if (other == null) @@ -1136,14 +1136,14 @@ public float ConicWeight () => /// Returns a value indicating whether the last call to returns a line which was the result of a command. /// /// Returns true if the last call to returned a line which was the result of a command. - /// If the call to returned a different value than , the result is undefined. + /// If the call to returned a different value than , the result is undefined. public bool IsCloseLine () => SkiaApi.sk_path_iter_is_close_line (Handle) != 0; /// /// Returns a value indicating whether the current contour is closed. /// - /// Returns true if the current contour is closed (has a ). + /// Returns true if the current contour is closed (has a ). public bool IsCloseContour () => SkiaApi.sk_path_iter_is_closed_contour (Handle) != 0; } @@ -1193,7 +1193,7 @@ public SKPathVerb Next (Span points) /// /// Returns the weight for the current conic. /// - /// Only valid if the current segment returned by was . + /// Only valid if the current segment returned by was . public float ConicWeight () => SkiaApi.sk_path_rawiter_conic_weight (Handle); @@ -1211,7 +1211,7 @@ public SKPathVerb Peek () => public class OpBuilder : SKObject, ISKSkipObjectRegistration { /// - /// Creates an instance of . + /// Creates an instance of . /// public OpBuilder () : base (SkiaApi.sk_opbuilder_new (), true) diff --git a/binding/SkiaSharp/SKPathEffect.cs b/binding/SkiaSharp/SKPathEffect.cs index 9bd2ed12df..1124eccd39 100644 --- a/binding/SkiaSharp/SKPathEffect.cs +++ b/binding/SkiaSharp/SKPathEffect.cs @@ -5,7 +5,7 @@ namespace SkiaSharp { /// - /// The base class for objects in the that affect the geometry of a drawing primitive before it is transformed by the canvas' matrix and drawn. + /// The base class for objects in the that affect the geometry of a drawing primitive before it is transformed by the canvas' matrix and drawn. /// public unsafe class SKPathEffect : SKObject, ISKReferenceCounted { @@ -22,7 +22,7 @@ protected override void Dispose (bool disposing) => /// /// The outer (second) path effect to apply. /// The inner (first) path effect to apply. - /// Returns the new , or null on error. + /// Returns the new , or null on error. /// The effect is to apply first the inner path effect and the the outer path effect (e.g. outer(inner(path))). public static SKPathEffect CreateCompose(SKPathEffect outer, SKPathEffect inner) { @@ -38,7 +38,7 @@ public static SKPathEffect CreateCompose(SKPathEffect outer, SKPathEffect inner) /// /// The first path effect to apply. /// The second path effect to apply. - /// Returns the new , or null on error. + /// Returns the new , or null on error. /// The effect is to apply one path after the other. public static SKPathEffect CreateSum(SKPathEffect first, SKPathEffect second) { @@ -55,7 +55,7 @@ public static SKPathEffect CreateSum(SKPathEffect first, SKPathEffect second) /// The length of the segments to break the path into. /// The maximum distance to move the point away from the original path. /// The randomizer seed to use. - /// Returns the new , or null on error. + /// Returns the new , or null on error. public static SKPathEffect CreateDiscrete(float segLength, float deviation, UInt32 seedAssist = 0) { return GetObject(SkiaApi.sk_path_effect_create_discrete(segLength, deviation, seedAssist)); @@ -65,7 +65,7 @@ public static SKPathEffect CreateDiscrete(float segLength, float deviation, UInt /// Creates a path effect that can turn sharp corners into various treatments (e.g. rounded corners). /// /// The radius to use, must be > 0 to have an effect. - /// Returns the new , or null on error. + /// Returns the new , or null on error. public static SKPathEffect CreateCorner(float radius) { return GetObject(SkiaApi.sk_path_effect_create_corner(radius)); @@ -78,7 +78,7 @@ public static SKPathEffect CreateCorner(float radius) /// The space between instances of path. /// The distance (mod advance) along path for its initial position. /// How to transform path at each point (based on the current position and tangent). - /// Returns the new , or null on error. + /// Returns the new , or null on error. public static SKPathEffect Create1DPath(SKPath path, float advance, float phase, SKPath1DPathEffectStyle style) { if (path == null) @@ -91,7 +91,7 @@ public static SKPathEffect Create1DPath(SKPath path, float advance, float phase, /// /// The width of the line. /// The matrix. - /// Returns the new , or null on error. + /// Returns the new , or null on error. public static SKPathEffect Create2DLine(float width, SKMatrix matrix) { return GetObject(SkiaApi.sk_path_effect_create_2d_line(width, &matrix)); @@ -102,7 +102,7 @@ public static SKPathEffect Create2DLine(float width, SKMatrix matrix) /// /// The matrix. /// The path. - /// Returns the new , or null on error. + /// Returns the new , or null on error. public static SKPathEffect Create2DPath(SKMatrix matrix, SKPath path) { if (path == null) @@ -115,7 +115,7 @@ public static SKPathEffect Create2DPath(SKMatrix matrix, SKPath path) /// /// The definition of the dash pattern via an even number of entries. /// The offset into the intervals array. (mod the sum of all of the intervals). - /// Returns the new , or null on error. + /// Returns the new , or null on error. /// The dash pattern is defined via an array containing an even number of entries (>=2), with the even indices specifying the length of "on" intervals, and the odd indices specifying the length of "off" intervals.For example: if the intervals = new [] { 10, 20 } and the phase = 25, then the dash pattern will be: 5 pixels off, 10 pixels on, 20 pixels off, 10 pixels on, 20 pixels off, etc. A phase of -5, 25, 55, 85, etc. would all result in the same path, because the sum of all the intervals is 30. public static SKPathEffect CreateDash(float[] intervals, float phase) { @@ -133,7 +133,7 @@ public static SKPathEffect CreateDash(float[] intervals, float phase) /// /// The start path offset between [0, 1] - inclusive. /// The stop path offset between [0, 1] - inclusive. - /// Returns the new , or null on error. + /// Returns the new , or null on error. /// If either the start or stop values are outside the [0, 1] range (inclusive), they will be pinned to the nearest legal value. public static SKPathEffect CreateTrim(float start, float stop) { @@ -146,7 +146,7 @@ public static SKPathEffect CreateTrim(float start, float stop) /// The start path offset between [0, 1] - inclusive. /// The stop path offset between [0, 1] - inclusive. /// The trim mode to use. - /// Returns the new , or null on error. + /// Returns the new , or null on error. /// If either the start or stop values are outside the [0, 1] range (inclusive), they will be pinned to the nearest legal value. public static SKPathEffect CreateTrim(float start, float stop, SKTrimPathEffectMode mode) { diff --git a/binding/SkiaSharp/SKPathMeasure.cs b/binding/SkiaSharp/SKPathMeasure.cs index e506f071f4..1c14364eba 100644 --- a/binding/SkiaSharp/SKPathMeasure.cs +++ b/binding/SkiaSharp/SKPathMeasure.cs @@ -15,7 +15,7 @@ internal SKPathMeasure (IntPtr handle, bool owns) } /// - /// Create a new instance with a null path. + /// Create a new instance with a null path. /// public SKPathMeasure () : this (SkiaApi.sk_pathmeasure_new (), true) @@ -26,7 +26,7 @@ public SKPathMeasure () } /// - /// Create a new instance with the specified path. + /// Create a new instance with the specified path. /// /// The path to use, or null. /// Controls whether or not the path is treated as closed. @@ -99,7 +99,7 @@ public void SetPath (SKPath path, bool forceClosed) /// The position of a point along the current contour. /// The tangent along the current contour. /// Returns false if there is no path, or a zero-length path was specified, in which case position and tangent are unchanged. - /// Distance is pinned to 0 <= distance <= . + /// Distance is pinned to 0 <= distance <= . public bool GetPositionAndTangent (float distance, out SKPoint position, out SKPoint tangent) { fixed (SKPoint* p = &position) @@ -124,7 +124,7 @@ public SKPoint GetPosition (float distance) /// The distance to use. /// The position of a point along the current contour. /// Returns false if there is no path, or a zero-length path was specified, in which case position is unchanged. - /// Distance is pinned to 0 <= distance <= . + /// Distance is pinned to 0 <= distance <= . public bool GetPosition (float distance, out SKPoint position) { fixed (SKPoint* p = &position) { @@ -148,7 +148,7 @@ public SKPoint GetTangent (float distance) /// The distance to use. /// The tangent along the current contour. /// Returns false if there is no path, or a zero-length path was specified, in which case position and tangent are unchanged. - /// Distance is pinned to 0 <= distance <= . + /// Distance is pinned to 0 <= distance <= . public bool GetTangent (float distance, out SKPoint tangent) { fixed (SKPoint* t = &tangent) { @@ -168,13 +168,13 @@ public SKMatrix GetMatrix (float distance, SKPathMeasureMatrixFlags flags) } /// - /// Computes a from the specified distance along the path. + /// Computes a from the specified distance along the path. /// /// The distance to use. /// The computed matrix. /// Flags to indicate how to compute the matrix. /// Returns false if there is no path, or a zero-length path was specified, in which case matrix is unchanged. - /// Distance is pinned to 0 <= distance <= . + /// Distance is pinned to 0 <= distance <= . public bool GetMatrix (float distance, out SKMatrix matrix, SKPathMeasureMatrixFlags flags) { fixed (SKMatrix* m = &matrix) { @@ -192,7 +192,7 @@ public bool GetMatrix (float distance, out SKMatrix matrix, SKPathMeasureMatrixF /// The path to hold the new segment. /// If true, begin the path segment with a . /// Returns false if the segment is zero-length, otherwise returns true. - /// The start and stop parameters are pinned to 0... + /// The start and stop parameters are pinned to 0... public bool GetSegment (float start, float stop, SKPath dst, bool startWithMoveTo) { if (dst == null) diff --git a/binding/SkiaSharp/SKPicture.cs b/binding/SkiaSharp/SKPicture.cs index 5c2eacef52..072f595ba6 100644 --- a/binding/SkiaSharp/SKPicture.cs +++ b/binding/SkiaSharp/SKPicture.cs @@ -6,7 +6,7 @@ namespace SkiaSharp { /// - /// Recorded drawing operations made to a to be played back at a later time. + /// Recorded drawing operations made to a to be played back at a later time. /// /// This base class handles serialization and a few other miscellany. public unsafe class SKPicture : SKObject, ISKReferenceCounted diff --git a/binding/SkiaSharp/SKPictureRecorder.cs b/binding/SkiaSharp/SKPictureRecorder.cs index 189ed868af..4de68a0139 100644 --- a/binding/SkiaSharp/SKPictureRecorder.cs +++ b/binding/SkiaSharp/SKPictureRecorder.cs @@ -5,7 +5,7 @@ namespace SkiaSharp { /// - /// The picture recorder is used to record drawing operations made to a and stored in a . + /// The picture recorder is used to record drawing operations made to a and stored in a . /// public unsafe class SKPictureRecorder : SKObject, ISKSkipObjectRegistration { @@ -15,7 +15,7 @@ internal SKPictureRecorder (IntPtr handle, bool owns) } /// - /// Creates a new instance of the . + /// Creates a new instance of the . /// public SKPictureRecorder () : this (SkiaApi.sk_picture_recorder_new (), true) @@ -35,7 +35,7 @@ protected override void DisposeNative () => /// Start the recording process and return the recording canvas. /// /// The culling rectangle for the new picture. - /// Returns the current recording canvas. The same can be retrieved using . + /// Returns the current recording canvas. The same can be retrieved using . public SKCanvas BeginRecording (SKRect cullRect) { return OwnedBy (SKCanvas.GetObject (SkiaApi.sk_picture_recorder_begin_recording (Handle, &cullRect), false), this); @@ -63,7 +63,7 @@ public SKCanvas BeginRecording (SKRect cullRect, bool useRTree) /// /// Signal that the caller is done recording. /// - /// Returns the containing the recorded content. + /// Returns the containing the recorded content. /// This invalidates the canvas returned by /// and /// . @@ -75,7 +75,7 @@ public SKPicture EndRecording () /// /// Signal that the caller is done recording. /// - /// Returns the containing the recorded content. + /// Returns the containing the recorded content. /// This invalidates the canvas returned by /// and /// . diff --git a/binding/SkiaSharp/SKPixmap.cs b/binding/SkiaSharp/SKPixmap.cs index 4901c1569d..8d71b8368e 100644 --- a/binding/SkiaSharp/SKPixmap.cs +++ b/binding/SkiaSharp/SKPixmap.cs @@ -4,7 +4,7 @@ namespace SkiaSharp { /// - /// Pairs with actual pixels and rowbytes. + /// Pairs with actual pixels and rowbytes. /// /// This class does not try to manage the lifetime of the pixel memory (nor the color table if provided). public unsafe class SKPixmap : SKObject @@ -20,7 +20,7 @@ internal SKPixmap (IntPtr handle, bool owns) } /// - /// Creates an empty instance of . + /// Creates an empty instance of . /// public SKPixmap () : this (SkiaApi.sk_pixmap_new (), true) @@ -31,7 +31,7 @@ public SKPixmap () } /// - /// Creates an instance of . + /// Creates an instance of . /// /// The image information of the pixels. /// The memory address of the pixels. @@ -41,7 +41,7 @@ public SKPixmap (SKImageInfo info, IntPtr addr) } /// - /// Creates an instance of . + /// Creates an instance of . /// /// The image information of the pixels. /// The memory address of the pixels. @@ -354,7 +354,7 @@ public bool ReadPixels (SKPixmap pixmap) => /// /// The file format used to encode the pixmap. /// The quality level to use for the pixmap. - /// Returns the wrapping the encoded pixmap. + /// Returns the wrapping the encoded pixmap. public SKData? Encode (SKEncodedImageFormat encoder, int quality) { using var stream = new SKDynamicMemoryWStream (); @@ -398,7 +398,7 @@ public bool Encode (SKWStream dst, SKEncodedImageFormat encoder, int quality) => /// Encodes the pixmap as a WEBP. /// /// The options to use when creating the encoder. - /// Returns the wrapping the encoded pixmap. + /// Returns the wrapping the encoded pixmap. public SKData? Encode (SKWebpEncoderOptions options) { using var stream = new SKDynamicMemoryWStream (); @@ -433,7 +433,7 @@ public bool Encode (SKWStream dst, SKWebpEncoderOptions options) /// Encodes the pixmap as a JPEG. /// /// The options to use when creating the encoder. - /// Returns the wrapping the encoded pixmap. + /// Returns the wrapping the encoded pixmap. public SKData? Encode (SKJpegEncoderOptions options) { using var stream = new SKDynamicMemoryWStream (); @@ -468,7 +468,7 @@ public bool Encode (SKWStream dst, SKJpegEncoderOptions options) /// Encodes the pixmap as a PNG. /// /// The options to use when creating the encoder. - /// Returns the wrapping the encoded pixmap. + /// Returns the wrapping the encoded pixmap. public SKData? Encode (SKPngEncoderOptions options) { using var stream = new SKDynamicMemoryWStream (); @@ -500,7 +500,7 @@ public bool Encode (SKWStream dst, SKPngEncoderOptions options) // ExtractSubset /// - /// Creates a new which is a subset of this pixmap. + /// Creates a new which is a subset of this pixmap. /// /// The bounds of the pixmap subset to retrieve. /// Returns a subset of the pixmap. @@ -515,7 +515,7 @@ public bool Encode (SKWStream dst, SKPngEncoderOptions options) } /// - /// Creates a new which is a subset of this pixmap. + /// Creates a new which is a subset of this pixmap. /// /// The pixmap to store the subset pixels. /// The bounds of the pixmap subset to retrieve. @@ -564,26 +564,26 @@ public bool ComputeIsOpaque () => // With* /// - /// Creates a new with the same properties as this , but with the specified color type. + /// Creates a new with the same properties as this , but with the specified color type. /// /// The color type. - /// Returns the new . + /// Returns the new . public SKPixmap WithColorType (SKColorType newColorType) => new SKPixmap (Info.WithColorType (newColorType), GetPixels (), RowBytes); /// - /// Creates a new with the same properties as this , but with the specified color space. + /// Creates a new with the same properties as this , but with the specified color space. /// /// The color space. - /// Returns the new . + /// Returns the new . public SKPixmap WithColorSpace (SKColorSpace newColorSpace) => new SKPixmap (Info.WithColorSpace (newColorSpace), GetPixels (), RowBytes); /// - /// Creates a new with the same properties as this , but with the specified transparency type. + /// Creates a new with the same properties as this , but with the specified transparency type. /// /// The alpha/transparency type. - /// Returns the new . + /// Returns the new . public SKPixmap WithAlphaType (SKAlphaType newAlphaType) => new SKPixmap (Info.WithAlphaType (newAlphaType), GetPixels (), RowBytes); } diff --git a/binding/SkiaSharp/SKRoundRect.cs b/binding/SkiaSharp/SKRoundRect.cs index 3004617bb2..4c4edb2fb5 100644 --- a/binding/SkiaSharp/SKRoundRect.cs +++ b/binding/SkiaSharp/SKRoundRect.cs @@ -16,7 +16,7 @@ internal SKRoundRect (IntPtr handle, bool owns) } /// - /// Creates a new instance of with all values initialized to 0. + /// Creates a new instance of with all values initialized to 0. /// public SKRoundRect () : this (SkiaApi.sk_rrect_new (), true) @@ -28,7 +28,7 @@ public SKRoundRect () } /// - /// Creates a new instance of with all radii set to 0. + /// Creates a new instance of with all radii set to 0. /// /// The bounds of the new rectangle. public SKRoundRect (SKRect rect) @@ -41,7 +41,7 @@ public SKRoundRect (SKRect rect) } /// - /// Creates a new instance of with the same radii for all four corners. + /// Creates a new instance of with the same radii for all four corners. /// /// The bounds of the new rectangle. /// The radii of the corners. @@ -51,7 +51,7 @@ public SKRoundRect (SKRect rect, float radius) } /// - /// Creates a new instance of with the same radii for all four corners. + /// Creates a new instance of with the same radii for all four corners. /// /// The bounds of the new rectangle. /// The radii of the corners along the x-axis. @@ -66,7 +66,7 @@ public SKRoundRect (SKRect rect, float xRadius, float yRadius) } /// - /// Creates a copy of a . + /// Creates a copy of a . /// /// The rounded rectangle to copy. public SKRoundRect (SKRoundRect rrect) diff --git a/binding/SkiaSharp/SKSVG.cs b/binding/SkiaSharp/SKSVG.cs index 47107d2aa7..401a36c77d 100644 --- a/binding/SkiaSharp/SKSVG.cs +++ b/binding/SkiaSharp/SKSVG.cs @@ -7,7 +7,7 @@ namespace SkiaSharp { /// - /// A specialized which generates SVG commands from its draw calls. + /// A specialized which generates SVG commands from its draw calls. /// /// The canvas may buffer some drawing calls, so the output is not guaranteed to be valid or complete until the canvas instance is deleted. public unsafe class SKSvgCanvas diff --git a/binding/SkiaSharp/SKShader.cs b/binding/SkiaSharp/SKShader.cs index bf5e827f39..01de906b42 100644 --- a/binding/SkiaSharp/SKShader.cs +++ b/binding/SkiaSharp/SKShader.cs @@ -6,7 +6,7 @@ namespace SkiaSharp { /// - /// Shaders specify the source color(s) for what is being drawn in the . + /// Shaders specify the source color(s) for what is being drawn in the . /// /// Shaders specify the source colors for what is being drawn. If a paint has no /// shader, then the paint's color is used. If the paint has a shader, then the @@ -215,7 +215,7 @@ public SKShader WithLocalMatrix (SKMatrix localMatrix) => /// /// Creates a new "empty" shader that will not draw anything. /// - /// Returns a new , or an empty shader on error. This function never returns null. + /// Returns a new , or an empty shader on error. This function never returns null. public static SKShader CreateEmpty () => GetObject (SkiaApi.sk_shader_new_empty ()); @@ -225,7 +225,7 @@ public static SKShader CreateEmpty () => /// Creates a new shader that just draws the specified color. /// /// The color to paint. - /// Returns a new , or an empty shader on error. This function never returns null. + /// Returns a new , or an empty shader on error. This function never returns null. public static SKShader CreateColor (SKColor color) => GetObject (SkiaApi.sk_shader_new_color ((uint)color)); @@ -234,7 +234,7 @@ public static SKShader CreateColor (SKColor color) => /// /// The color to paint. /// The colorspace to use. - /// Returns a new , or an empty shader on error. This function never returns null. + /// Returns a new , or an empty shader on error. This function never returns null. public static SKShader CreateColor (SKColorF color, SKColorSpace colorspace) { if (colorspace == null) @@ -249,7 +249,7 @@ public static SKShader CreateColor (SKColorF color, SKColorSpace colorspace) /// Creates a new shader that will draw with the specified bitmap. /// /// The bitmap to use inside the shader. - /// Returns a new , or an empty shader on error. This function never returns null. + /// Returns a new , or an empty shader on error. This function never returns null. /// If the bitmap cannot be used (has no pixels, or its dimensions exceed /// implementation limits) then an empty shader may be returned. If the source /// bitmap's color type is then that mask will @@ -263,7 +263,7 @@ public static SKShader CreateBitmap (SKBitmap src) => /// The bitmap to use inside the shader. /// The tiling mode to use when sampling the bitmap in the x-direction. /// The tiling mode to use when sampling the bitmap in the y-direction. - /// Returns a new , or an empty shader on error. This function never returns null. + /// Returns a new , or an empty shader on error. This function never returns null. /// If the bitmap cannot be used (has no pixels, or its dimensions exceed /// implementation limits) then an empty shader may be returned. If the source /// bitmap's color type is then that mask will @@ -283,7 +283,7 @@ public static SKShader CreateBitmap (SKBitmap src, SKShaderTileMode tmx, SKShade /// The tiling mode to use when sampling the bitmap in the x-direction. /// The tiling mode to use when sampling the bitmap in the y-direction. /// The matrix to apply before applying the shader. - /// Returns a new , or an empty shader on error. This function never returns null. + /// Returns a new , or an empty shader on error. This function never returns null. /// If the bitmap cannot be used (has no pixels, or its dimensions exceed /// implementation limits) then an empty shader may be returned. If the source /// bitmap's color type is then that mask will @@ -341,7 +341,7 @@ public static SKShader CreatePicture (SKPicture src) => /// The picture to use inside the shader. /// The tiling mode to use when sampling the picture in the x-direction. /// The tiling mode to use when sampling the picture in the y-direction. - /// Returns a new , or an empty shader on error. This function never returns null. + /// Returns a new , or an empty shader on error. This function never returns null. public static SKShader CreatePicture (SKPicture src, SKShaderTileMode tmx, SKShaderTileMode tmy) => src?.ToShader (tmx, tmy) ?? throw new ArgumentNullException (nameof (src)); @@ -355,7 +355,7 @@ public static SKShader CreatePicture (SKPicture src, SKShaderTileMode tmx, SKSha /// The tiling mode to use when sampling the picture in the x-direction. /// The tiling mode to use when sampling the picture in the y-direction. /// The tile rectangle in picture coordinates. - /// Returns a new , or an empty shader on error. This function never returns null. + /// Returns a new , or an empty shader on error. This function never returns null. /// The tile rectangle represents the subset (or superset) of the picture used when building a tile. It is not affected by /// the local matrix and does not imply scaling (only translation and cropping). public static SKShader CreatePicture (SKPicture src, SKShaderTileMode tmx, SKShaderTileMode tmy, SKRect tile) => @@ -372,7 +372,7 @@ public static SKShader CreatePicture (SKPicture src, SKShaderTileMode tmx, SKSha /// The tiling mode to use when sampling the picture in the y-direction. /// The matrix to apply before applying the shader. /// The tile rectangle in picture coordinates. - /// Returns a new , or an empty shader on error. This function never returns null. + /// Returns a new , or an empty shader on error. This function never returns null. /// The tile rectangle represents the subset (or superset) of the picture used when building a tile. It is not affected by /// the local matrix and does not imply scaling (only translation and cropping). public static SKShader CreatePicture (SKPicture src, SKShaderTileMode tmx, SKShaderTileMode tmy, SKMatrix localMatrix, SKRect tile) => @@ -390,7 +390,7 @@ public static SKShader CreatePicture (SKPicture src, SKShaderTileMode tmx, SKSha /// The end point for the gradient. /// The array colors to be distributed between the two points. /// The tiling mode. - /// Returns a new , or an empty shader on error. This function never returns null. + /// Returns a new , or an empty shader on error. This function never returns null. public static SKShader CreateLinearGradient (SKPoint start, SKPoint end, SKColor[] colors, SKShaderTileMode mode) => CreateLinearGradient (start, end, colors, null, mode); @@ -402,7 +402,7 @@ public static SKShader CreateLinearGradient (SKPoint start, SKPoint end, SKColor /// The array colors to be distributed between the two points. /// The positions (in the range of 0..1) of each corresponding color, or null to evenly distribute the colors. /// The tiling mode. - /// Returns a new , or an empty shader on error. This function never returns null. + /// Returns a new , or an empty shader on error. This function never returns null. public static SKShader CreateLinearGradient (SKPoint start, SKPoint end, SKColor[] colors, float[] colorPos, SKShaderTileMode mode) { if (colors == null) @@ -426,7 +426,7 @@ public static SKShader CreateLinearGradient (SKPoint start, SKPoint end, SKColor /// The positions (in the range of 0..1) of each corresponding color, or null to evenly distribute the colors. /// The tiling mode. /// The matrix to apply before applying the shader. - /// Returns a new , or an empty shader on error. This function never returns null. + /// Returns a new , or an empty shader on error. This function never returns null. public static SKShader CreateLinearGradient (SKPoint start, SKPoint end, SKColor[] colors, float[] colorPos, SKShaderTileMode mode, SKMatrix localMatrix) { if (colors == null) @@ -499,7 +499,7 @@ public static SKShader CreateLinearGradient (SKPoint start, SKPoint end, SKColor /// The positive radius of the circle for this gradient. /// The array colors to be distributed between the center and edge of the circle. /// The tiling mode. - /// Returns a new , or an empty shader on error. This function never returns null. + /// Returns a new , or an empty shader on error. This function never returns null. public static SKShader CreateRadialGradient (SKPoint center, float radius, SKColor[] colors, SKShaderTileMode mode) => CreateRadialGradient (center, radius, colors, null, mode); @@ -511,7 +511,7 @@ public static SKShader CreateRadialGradient (SKPoint center, float radius, SKCol /// The array colors to be distributed between the center and edge of the circle. /// The positions (in the range of 0..1) of each corresponding color, or null to evenly distribute the colors. /// The tiling mode. - /// Returns a new , or an empty shader on error. This function never returns null. + /// Returns a new , or an empty shader on error. This function never returns null. public static SKShader CreateRadialGradient (SKPoint center, float radius, SKColor[] colors, float[] colorPos, SKShaderTileMode mode) { if (colors == null) @@ -534,7 +534,7 @@ public static SKShader CreateRadialGradient (SKPoint center, float radius, SKCol /// The positions (in the range of 0..1) of each corresponding color, or null to evenly distribute the colors. /// The tiling mode. /// The matrix to apply before applying the shader. - /// Returns a new , or an empty shader on error. This function never returns null. + /// Returns a new , or an empty shader on error. This function never returns null. public static SKShader CreateRadialGradient (SKPoint center, float radius, SKColor[] colors, float[] colorPos, SKShaderTileMode mode, SKMatrix localMatrix) { if (colors == null) @@ -602,7 +602,7 @@ public static SKShader CreateRadialGradient (SKPoint center, float radius, SKCol /// /// The coordinates of the center of the sweep. /// The array colors to be distributed around the center. - /// Returns a new , or an empty shader on error. This function never returns null. + /// Returns a new , or an empty shader on error. This function never returns null. public static SKShader CreateSweepGradient (SKPoint center, SKColor[] colors) => CreateSweepGradient (center, colors, null, SKShaderTileMode.Clamp, 0, 360); @@ -612,7 +612,7 @@ public static SKShader CreateSweepGradient (SKPoint center, SKColor[] colors) => /// The coordinates of the center of the sweep. /// The array colors to be distributed around the center. /// The positions (in the range of 0..1) of each corresponding color, or null to evenly distribute the colors. - /// Returns a new , or an empty shader on error. This function never returns null. + /// Returns a new , or an empty shader on error. This function never returns null. public static SKShader CreateSweepGradient (SKPoint center, SKColor[] colors, float[] colorPos) => CreateSweepGradient (center, colors, colorPos, SKShaderTileMode.Clamp, 0, 360); @@ -623,7 +623,7 @@ public static SKShader CreateSweepGradient (SKPoint center, SKColor[] colors, fl /// The array colors to be distributed around the center. /// The positions (in the range of 0..1) of each corresponding color, or null to evenly distribute the colors. /// The matrix to apply before applying the shader. - /// Returns a new , or an empty shader on error. This function never returns null. + /// Returns a new , or an empty shader on error. This function never returns null. public static SKShader CreateSweepGradient (SKPoint center, SKColor[] colors, float[] colorPos, SKMatrix localMatrix) => CreateSweepGradient (center, colors, colorPos, SKShaderTileMode.Clamp, 0, 360, localMatrix); @@ -635,7 +635,7 @@ public static SKShader CreateSweepGradient (SKPoint center, SKColor[] colors, fl /// The tiling mode. /// The start of the angular range. /// The end of the angular range. - /// Returns a new , or an empty shader on error. This function never returns null. + /// Returns a new , or an empty shader on error. This function never returns null. public static SKShader CreateSweepGradient (SKPoint center, SKColor[] colors, SKShaderTileMode tileMode, float startAngle, float endAngle) => CreateSweepGradient (center, colors, null, tileMode, startAngle, endAngle); @@ -648,7 +648,7 @@ public static SKShader CreateSweepGradient (SKPoint center, SKColor[] colors, SK /// The tiling mode. /// The start of the angular range. /// The end of the angular range. - /// Returns a new , or an empty shader on error. This function never returns null. + /// Returns a new , or an empty shader on error. This function never returns null. public static SKShader CreateSweepGradient (SKPoint center, SKColor[] colors, float[] colorPos, SKShaderTileMode tileMode, float startAngle, float endAngle) { if (colors == null) @@ -672,7 +672,7 @@ public static SKShader CreateSweepGradient (SKPoint center, SKColor[] colors, fl /// The start of the angular range. /// The end of the angular range. /// The matrix to apply before applying the shader. - /// Returns a new , or an empty shader on error. This function never returns null. + /// Returns a new , or an empty shader on error. This function never returns null. public static SKShader CreateSweepGradient (SKPoint center, SKColor[] colors, float[] colorPos, SKShaderTileMode tileMode, float startAngle, float endAngle, SKMatrix localMatrix) { if (colors == null) @@ -768,7 +768,7 @@ public static SKShader CreateSweepGradient (SKPoint center, SKColorF[] colors, S /// The radius at the end point. /// The array colors to be distributed between the two points. /// The tiling mode. - /// Returns a new , or null on error. + /// Returns a new , or null on error. public static SKShader CreateTwoPointConicalGradient (SKPoint start, float startRadius, SKPoint end, float endRadius, SKColor[] colors, SKShaderTileMode mode) => CreateTwoPointConicalGradient (start, startRadius, end, endRadius, colors, null, mode); @@ -782,7 +782,7 @@ public static SKShader CreateTwoPointConicalGradient (SKPoint start, float start /// The array colors to be distributed between the two points. /// The positions (in the range of 0..1) of each corresponding color, or null to evenly distribute the colors. /// The tiling mode. - /// Returns a new , or null on error. + /// Returns a new , or null on error. public static SKShader CreateTwoPointConicalGradient (SKPoint start, float startRadius, SKPoint end, float endRadius, SKColor[] colors, float[] colorPos, SKShaderTileMode mode) { if (colors == null) @@ -807,7 +807,7 @@ public static SKShader CreateTwoPointConicalGradient (SKPoint start, float start /// The positions (in the range of 0..1) of each corresponding color, or null to evenly distribute the colors. /// The tiling mode. /// The matrix to apply before applying the shader. - /// Returns a new , or an empty shader on error. This function never returns null. + /// Returns a new , or an empty shader on error. This function never returns null. public static SKShader CreateTwoPointConicalGradient (SKPoint start, float startRadius, SKPoint end, float endRadius, SKColor[] colors, float[] colorPos, SKShaderTileMode mode, SKMatrix localMatrix) { if (colors == null) @@ -883,7 +883,7 @@ public static SKShader CreateTwoPointConicalGradient (SKPoint start, float start /// The frequency in the y-direction in the range of 0..1. /// The number of octaves, usually fairly small. /// The randomization seed. - /// Returns a new , or an empty shader on error. This function never returns null. + /// Returns a new , or an empty shader on error. This function never returns null. public static SKShader CreatePerlinNoiseFractalNoise (float baseFrequencyX, float baseFrequencyY, int numOctaves, float seed) => GetObject (SkiaApi.sk_shader_new_perlin_noise_fractal_noise (baseFrequencyX, baseFrequencyY, numOctaves, seed, null)); @@ -895,7 +895,7 @@ public static SKShader CreatePerlinNoiseFractalNoise (float baseFrequencyX, floa /// The number of octaves, usually fairly small. /// The randomization seed. /// The tile size used to modify the frequencies so that the noise will be tileable for the given size. - /// Returns a new , or an empty shader on error. This function never returns null. + /// Returns a new , or an empty shader on error. This function never returns null. public static SKShader CreatePerlinNoiseFractalNoise (float baseFrequencyX, float baseFrequencyY, int numOctaves, float seed, SKPointI tileSize) => CreatePerlinNoiseFractalNoise (baseFrequencyX, baseFrequencyY, numOctaves, seed, (SKSizeI)tileSize); @@ -916,7 +916,7 @@ public static SKShader CreatePerlinNoiseFractalNoise (float baseFrequencyX, floa /// The frequency in the y-direction in the range of 0..1. /// The number of octaves, usually fairly small. /// The randomization seed. - /// Returns a new , or an empty shader on error. This function never returns null. + /// Returns a new , or an empty shader on error. This function never returns null. public static SKShader CreatePerlinNoiseTurbulence (float baseFrequencyX, float baseFrequencyY, int numOctaves, float seed) => GetObject (SkiaApi.sk_shader_new_perlin_noise_turbulence (baseFrequencyX, baseFrequencyY, numOctaves, seed, null)); @@ -928,7 +928,7 @@ public static SKShader CreatePerlinNoiseTurbulence (float baseFrequencyX, float /// The number of octaves, usually fairly small. /// The randomization seed. /// The tile size used to modify the frequencies so that the noise will be tileable for the given size. - /// Returns a new , or an empty shader on error. This function never returns null. + /// Returns a new , or an empty shader on error. This function never returns null. public static SKShader CreatePerlinNoiseTurbulence (float baseFrequencyX, float baseFrequencyY, int numOctaves, float seed, SKPointI tileSize) => CreatePerlinNoiseTurbulence (baseFrequencyX, baseFrequencyY, numOctaves, seed, (SKSizeI)tileSize); @@ -943,11 +943,11 @@ public static SKShader CreatePerlinNoiseTurbulence (float baseFrequencyX, float // CreateCompose /// - /// Create a new compose shader, which combines two shaders by the blend mode. + /// Create a new compose shader, which combines two shaders by the blend mode. /// /// The colors from this shader are seen as the destination by the blend mode. /// The colors from this shader are seen as the source by the blend mode. - /// Returns a new , or an empty shader on error. This function never returns null. + /// Returns a new , or an empty shader on error. This function never returns null. public static SKShader CreateCompose (SKShader shaderA, SKShader shaderB) => CreateCompose (shaderA, shaderB, SKBlendMode.SrcOver); @@ -957,7 +957,7 @@ public static SKShader CreateCompose (SKShader shaderA, SKShader shaderB) => /// The colors from this shader are seen as the destination by the blend mode. /// The colors from this shader are seen as the source by the blend mode. /// The blend mode that combines the two shaders. - /// Returns a new , or an empty shader on error. This function never returns null. + /// Returns a new , or an empty shader on error. This function never returns null. public static SKShader CreateCompose (SKShader shaderA, SKShader shaderB, SKBlendMode mode) { if (shaderA == null) @@ -992,7 +992,7 @@ public static SKShader CreateBlend (SKBlender blender, SKShader shaderA, SKShade /// /// The shader to apply. /// The color filter to apply. - /// Returns a new , or an empty shader on error. This function never returns null. + /// Returns a new , or an empty shader on error. This function never returns null. public static SKShader CreateColorFilter (SKShader shader, SKColorFilter filter) { if (shader == null) @@ -1010,7 +1010,7 @@ public static SKShader CreateColorFilter (SKShader shader, SKColorFilter filter) /// /// The shader to apply. /// The matrix to apply before applying the shader. - /// Returns a new , or null on error. + /// Returns a new , or null on error. public static SKShader CreateLocalMatrix (SKShader shader, SKMatrix localMatrix) { if (shader == null) diff --git a/binding/SkiaSharp/SKStream.cs b/binding/SkiaSharp/SKStream.cs index 8698b4e55e..d88b6b1ed6 100644 --- a/binding/SkiaSharp/SKStream.cs +++ b/binding/SkiaSharp/SKStream.cs @@ -413,7 +413,7 @@ internal SKFileStream (IntPtr handle, bool owns) } /// - /// Creates a new that wraps the file with the specified path. + /// Creates a new that wraps the file with the specified path. /// /// The existing file to open for reading. public SKFileStream (string path) @@ -444,7 +444,7 @@ protected override void DisposeNative () => public bool IsValid => SkiaApi.sk_filestream_is_valid (Handle); /// - /// Determines whether the specified path is supported by a . + /// Determines whether the specified path is supported by a . /// /// The path to check. /// Returns if the path is supported, otherwise . @@ -477,7 +477,7 @@ internal SKMemoryStream (IntPtr handle, bool owns) } /// - /// Creates a new instance of with an empty buffer. + /// Creates a new instance of with an empty buffer. /// public SKMemoryStream () : this (SkiaApi.sk_memorystream_new (), true) @@ -488,7 +488,7 @@ public SKMemoryStream () } /// - /// Creates a new instance of with a buffer size of the specified size. + /// Creates a new instance of with a buffer size of the specified size. /// /// The size of the stream buffer. public SKMemoryStream (ulong length) @@ -508,7 +508,7 @@ internal SKMemoryStream (IntPtr data, IntPtr length, bool copyData = false) } /// - /// Creates a new instance of with the buffer being the provided data. + /// Creates a new instance of with the buffer being the provided data. /// /// The data to initialize the stream with. public SKMemoryStream (SKData data) @@ -520,7 +520,7 @@ public SKMemoryStream (SKData data) } /// - /// Creates a new instance of with a copy of the provided data. + /// Creates a new instance of with a copy of the provided data. /// /// The data to initialize the stream with. public SKMemoryStream (byte[] data) @@ -756,7 +756,7 @@ internal SKFileWStream (IntPtr handle, bool owns) } /// - /// Creates a new that wraps the file with the specified path. + /// Creates a new that wraps the file with the specified path. /// /// The new or existing file to open for writing. public SKFileWStream (string path) @@ -787,7 +787,7 @@ protected override void DisposeNative () => public bool IsValid => SkiaApi.sk_filewstream_is_valid (Handle); /// - /// Determines whether the specified path is supported by a . + /// Determines whether the specified path is supported by a . /// /// The path to check. /// Returns if the path is supported, otherwise . @@ -820,7 +820,7 @@ internal SKDynamicMemoryWStream (IntPtr handle, bool owns) } /// - /// Create a new instance of with an empty buffer. + /// Create a new instance of with an empty buffer. /// public SKDynamicMemoryWStream () : base (SkiaApi.sk_dynamicmemorywstream_new (), true) @@ -853,9 +853,9 @@ public SKStreamAsset DetachAsStream () } /// - /// Returns a instance of the data in the current stream, and then resets the current stream. + /// Returns a instance of the data in the current stream, and then resets the current stream. /// - /// Returns the instance. + /// Returns the instance. /// After calling this method, this stream is reset to it's empty state. public SKData DetachAsData () { diff --git a/binding/SkiaSharp/SKSurface.cs b/binding/SkiaSharp/SKSurface.cs index c764c175f5..b248618903 100644 --- a/binding/SkiaSharp/SKSurface.cs +++ b/binding/SkiaSharp/SKSurface.cs @@ -660,7 +660,7 @@ public static SKSurface Create (GRRecordingContext context, MetalKit.MTKView vie /// The desired width for the surface. /// The desired height for the surface. /// Returns the new surface if it could be created, otherwise . - /// Drawing to the returned from has no effect. Calling on the returned returns . + /// Drawing to the returned from has no effect. Calling on the returned returns . public static SKSurface CreateNull (int width, int height) => GetObject (SkiaApi.sk_surface_new_null (width, height)); @@ -684,8 +684,8 @@ public static SKSurface CreateNull (int width, int height) => /// /// Takes a snapshot of the surface and returns it as an image. /// - /// An that contains a snapshot of the current image. - /// You can use this method to take an snapshot of the current state of the surface. + /// An that contains a snapshot of the current image. + /// You can use this method to take an snapshot of the current state of the surface. public SKImage Snapshot () => SKImage.GetObject (SkiaApi.sk_surface_new_image_snapshot (Handle)); diff --git a/binding/SkiaSharp/SKSurfaceProperties.cs b/binding/SkiaSharp/SKSurfaceProperties.cs index 6e07837ef6..b38f0b7bc6 100644 --- a/binding/SkiaSharp/SKSurfaceProperties.cs +++ b/binding/SkiaSharp/SKSurfaceProperties.cs @@ -6,7 +6,7 @@ namespace SkiaSharp { /// - /// Describes properties and constraints of a given . + /// Describes properties and constraints of a given . /// /// The rendering engine can parse these during drawing, and can sometimes optimize its performance (e.g. disabling an expensive feature). public class SKSurfaceProperties : SKObject @@ -17,7 +17,7 @@ internal SKSurfaceProperties (IntPtr h, bool owns) } /// - /// Creates a new instance. + /// Creates a new instance. /// /// The description of how the LCD strips are arranged for each pixel. public SKSurfaceProperties (SKPixelGeometry pixelGeometry) @@ -26,7 +26,7 @@ public SKSurfaceProperties (SKPixelGeometry pixelGeometry) } /// - /// Creates a new instance. + /// Creates a new instance. /// /// The flags to use when creating the surface. /// The LCD geometry of each pixel on the surface. @@ -36,7 +36,7 @@ public SKSurfaceProperties (uint flags, SKPixelGeometry pixelGeometry) } /// - /// Creates a new instance. + /// Creates a new instance. /// /// The flags to use when creating the surface. /// The LCD geometry of each pixel on the surface. diff --git a/binding/SkiaSharp/SKTextBlob.cs b/binding/SkiaSharp/SKTextBlob.cs index 5beedc50b7..d9f6e522d5 100644 --- a/binding/SkiaSharp/SKTextBlob.cs +++ b/binding/SkiaSharp/SKTextBlob.cs @@ -366,7 +366,7 @@ public int CountIntercepts (float upperBounds, float lowerBounds, SKPaint? paint } /// - /// A builder object that is used to create a . + /// A builder object that is used to create a . /// public unsafe class SKTextBlobBuilder : SKObject, ISKSkipObjectRegistration { @@ -376,7 +376,7 @@ internal SKTextBlobBuilder (IntPtr x, bool owns) } /// - /// Creates a new instance of . + /// Creates a new instance of . /// public SKTextBlobBuilder () : this (SkiaApi.sk_textblob_builder_new (), true) @@ -392,9 +392,9 @@ protected override void DisposeNative () => // Build /// - /// Create the from all the added runs. + /// Create the from all the added runs. /// - /// Returns the new if there were runs, otherwise . + /// Returns the new if there were runs, otherwise . public SKTextBlob? Build () { var blob = SKTextBlob.GetObject (SkiaApi.sk_textblob_builder_make (Handle)); diff --git a/binding/SkiaSharp/SKTypeface.cs b/binding/SkiaSharp/SKTypeface.cs index 0b1d155068..e282beaeae 100644 --- a/binding/SkiaSharp/SKTypeface.cs +++ b/binding/SkiaSharp/SKTypeface.cs @@ -55,7 +55,7 @@ protected override void Dispose (bool disposing) => public static SKTypeface Default => defaultTypeface; /// - /// Creates a new which is the default, Normal typeface. + /// Creates a new which is the default, Normal typeface. /// /// This will never be null. public static SKTypeface CreateDefault () @@ -205,19 +205,19 @@ public static SKTypeface FromData (SKData data, int index = 0) /// /// Gets the font weight for the typeface. /// - /// This may be one of the values in . + /// This may be one of the values in . public int FontWeight => SkiaApi.sk_typeface_get_font_weight (Handle); /// /// Gets the font width for the typeface. /// - /// This may be one of the values in . + /// This may be one of the values in . public int FontWidth => SkiaApi.sk_typeface_get_font_width (Handle); /// /// Gets the font slant for the typeface. /// - /// This may be one of the values in . + /// This may be one of the values in . public SKFontStyleSlant FontSlant => SkiaApi.sk_typeface_get_font_slant (Handle); /// diff --git a/binding/SkiaSharp/SKVertices.cs b/binding/SkiaSharp/SKVertices.cs index 8e2e9d431b..66e3e17253 100644 --- a/binding/SkiaSharp/SKVertices.cs +++ b/binding/SkiaSharp/SKVertices.cs @@ -26,39 +26,39 @@ protected override void Dispose (bool disposing) => void ISKNonVirtualReferenceCounted.UnreferenceNative () => SkiaApi.sk_vertices_unref (Handle); /// - /// Creates a new instance, making a copy of the vertices and related data. + /// Creates a new instance, making a copy of the vertices and related data. /// /// How to interpret the array of vertices. /// The array of vertices for the mesh. /// The color for each vertex, to be interpolated across the triangle. May be . - /// Returns the new instance. + /// Returns the new instance. public static SKVertices CreateCopy (SKVertexMode vmode, SKPoint[] positions, SKColor[] colors) { return CreateCopy (vmode, positions, null, colors, null); } /// - /// Creates a new instance, making a copy of the vertices and related data. + /// Creates a new instance, making a copy of the vertices and related data. /// /// How to interpret the array of vertices. /// The array of vertices for the mesh. /// The coordinates in texture space (not UV space) for each vertex. May be . /// The color for each vertex, to be interpolated across the triangle. May be . - /// Returns the new instance. + /// Returns the new instance. public static SKVertices CreateCopy (SKVertexMode vmode, SKPoint[] positions, SKPoint[] texs, SKColor[] colors) { return CreateCopy (vmode, positions, texs, colors, null); } /// - /// Creates a new instance, making a copy of the vertices and related data. + /// Creates a new instance, making a copy of the vertices and related data. /// /// How to interpret the array of vertices. /// The array of vertices for the mesh. /// The coordinates in texture space (not UV space) for each vertex. May be . /// The color for each vertex, to be interpolated across the triangle. May be . /// The array of indices to reference into the vertex (texture coordinates, colors) array. - /// Returns the new instance. + /// Returns the new instance. public static SKVertices CreateCopy (SKVertexMode vmode, SKPoint[] positions, SKPoint[] texs, SKColor[] colors, UInt16[] indices) { if (positions == null) diff --git a/binding/SkiaSharp/SkiaApi.generated.cs b/binding/SkiaSharp/SkiaApi.generated.cs index b2c7bc19cc..f4551784aa 100644 --- a/binding/SkiaSharp/SkiaApi.generated.cs +++ b/binding/SkiaSharp/SkiaApi.generated.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Runtime.InteropServices; using System.Runtime.CompilerServices; @@ -18530,7 +18530,7 @@ public readonly override bool Equals (object obj) => obj is SKColorF f && Equals (f); /// - /// Indicates whether two objects are equal. + /// Indicates whether two objects are equal. /// /// The first color to compare. /// The second color to compare. @@ -18539,7 +18539,7 @@ public readonly override bool Equals (object obj) => left.Equals (right); /// - /// Indicates whether two objects are different. + /// Indicates whether two objects are different. /// /// The first color to compare. /// The second color to compare. @@ -19244,7 +19244,7 @@ public unsafe partial struct SKPointI : IEquatable { // public int32_t x private Int32 x; /// - /// Gets or sets the x-coordinate of this . + /// Gets or sets the x-coordinate of this . /// public Int32 X { readonly get => x; @@ -19254,7 +19254,7 @@ public Int32 X { // public int32_t y private Int32 y; /// - /// Gets or sets the y-coordinate of this + /// Gets or sets the y-coordinate of this /// public Int32 Y { readonly get => y; @@ -19262,38 +19262,38 @@ public Int32 Y { } /// - /// Specifies whether this contains the same coordinates as the specified . + /// Specifies whether this contains the same coordinates as the specified . /// - /// The to test. - /// This method returns true if has the same coordinates as this . + /// The to test. + /// This method returns true if has the same coordinates as this . public readonly bool Equals (SKPointI obj) => #pragma warning disable CS8909 x == obj.x && y == obj.y; #pragma warning restore CS8909 /// - /// Specifies whether this contains the same coordinates as the specified . + /// Specifies whether this contains the same coordinates as the specified . /// /// The to test. - /// This method returns true if is a and has the same coordinates as this . + /// This method returns true if is a and has the same coordinates as this . public readonly override bool Equals (object obj) => obj is SKPointI f && Equals (f); /// /// Determines whether the coordinates of the specified points are equal. /// - /// A to compare. - /// A to compare. - /// true if the and values of the left and right structures are equal; otherwise, false. + /// A to compare. + /// A to compare. + /// true if the and values of the left and right structures are equal; otherwise, false. public static bool operator == (SKPointI left, SKPointI right) => left.Equals (right); /// /// Determines whether the coordinates of the specified points are not equal. /// - /// A to compare. - /// A to compare. - /// true if the and values of the left and right structures differ; otherwise, false. + /// A to compare. + /// A to compare. + /// true if the and values of the left and right structures differ; otherwise, false. public static bool operator != (SKPointI left, SKPointI right) => !left.Equals (right); @@ -19321,7 +19321,7 @@ public unsafe partial struct SKRectI : IEquatable { // public int32_t left private Int32 left; /// - /// Gets or sets the x-coordinate of the left edge of this structure. + /// Gets or sets the x-coordinate of the left edge of this structure. /// public Int32 Left { readonly get => left; @@ -19331,7 +19331,7 @@ public Int32 Left { // public int32_t top private Int32 top; /// - /// Gets or sets the y-coordinate of the top edge of this structure. + /// Gets or sets the y-coordinate of the top edge of this structure. /// public Int32 Top { readonly get => top; @@ -19341,7 +19341,7 @@ public Int32 Top { // public int32_t right private Int32 right; /// - /// Gets or sets the x-coordinate of the right edge of this structure. + /// Gets or sets the x-coordinate of the right edge of this structure. /// public Int32 Right { readonly get => right; @@ -19351,7 +19351,7 @@ public Int32 Right { // public int32_t bottom private Int32 bottom; /// - /// Gets or sets the y-coordinate of the bottom edge of this structure. + /// Gets or sets the y-coordinate of the bottom edge of this structure. /// public Int32 Bottom { readonly get => bottom; @@ -19359,10 +19359,10 @@ public Int32 Bottom { } /// - /// Specifies whether this rectangle contains the same coordinates as the specified . + /// Specifies whether this rectangle contains the same coordinates as the specified . /// - /// The to test. - /// This method returns true if has the same coordinates as this . + /// The to test. + /// This method returns true if has the same coordinates as this . public readonly bool Equals (SKRectI obj) => #pragma warning disable CS8909 left == obj.left && top == obj.top && right == obj.right && bottom == obj.bottom; @@ -19372,25 +19372,25 @@ public readonly bool Equals (SKRectI obj) => /// Specifies whether this rectangle contains the same coordinates as the specified . /// /// The to test. - /// This method returns true if is a and has the same coordinates as this . + /// This method returns true if is a and has the same coordinates as this . public readonly override bool Equals (object obj) => obj is SKRectI f && Equals (f); /// - /// Tests whether two structures have equal location and size. + /// Tests whether two structures have equal location and size. /// - /// The structure that is to the left of the equality operator. - /// The structure that is to the right of the equality operator. - /// This operator returns true if the two specified structures have equal , , , or properties. + /// The structure that is to the left of the equality operator. + /// The structure that is to the right of the equality operator. + /// This operator returns true if the two specified structures have equal , , , or properties. public static bool operator == (SKRectI left, SKRectI right) => left.Equals (right); /// - /// Tests whether two structures differ in location or size. + /// Tests whether two structures differ in location or size. /// - /// The structure that is to the left of the inequality operator. - /// The structure that is to the right of the inequality operator. - /// This operator returns true if any of the , , , or properties of the two structures are unequal; otherwise false. + /// The structure that is to the left of the inequality operator. + /// The structure that is to the right of the inequality operator. + /// This operator returns true if any of the , , , or properties of the two structures are unequal; otherwise false. public static bool operator != (SKRectI left, SKRectI right) => !left.Equals (right); @@ -19419,7 +19419,7 @@ public unsafe partial struct SKSizeI : IEquatable { // public int32_t w private Int32 w; /// - /// Gets or sets the horizontal component of this structure. + /// Gets or sets the horizontal component of this structure. /// public Int32 Width { readonly get => w; @@ -19429,7 +19429,7 @@ public Int32 Width { // public int32_t h private Int32 h; /// - /// Gets or sets the vertical component of this structure. + /// Gets or sets the vertical component of this structure. /// public Int32 Height { readonly get => h; @@ -19437,49 +19437,49 @@ public Int32 Height { } /// - /// Tests to see whether the specified object is a structure with the same dimensions as this structure. + /// Tests to see whether the specified object is a structure with the same dimensions as this structure. /// - /// The to test. - /// This method returns true if has the same coordinates as this . + /// The to test. + /// This method returns true if has the same coordinates as this . public readonly bool Equals (SKSizeI obj) => #pragma warning disable CS8909 w == obj.w && h == obj.h; #pragma warning restore CS8909 /// - /// Tests to see whether the specified object is a structure with the same dimensions as this structure. + /// Tests to see whether the specified object is a structure with the same dimensions as this structure. /// /// The to test. - /// This method returns true if is a and has the same coordinates as this . + /// This method returns true if is a and has the same coordinates as this . public readonly override bool Equals (object obj) => obj is SKSizeI f && Equals (f); /// - /// Tests whether two structures are equal. + /// Tests whether two structures are equal. /// - /// The structure on the left side of the equality operator. - /// The structure on the left side of the equality operator. - /// The structure on the right of the equality operator. - /// The structure on the right of the equality operator. - /// This operator returns true if both structures have equal and ; otherwise, false. + /// The structure on the left side of the equality operator. + /// The structure on the left side of the equality operator. + /// The structure on the right of the equality operator. + /// The structure on the right of the equality operator. + /// This operator returns true if both structures have equal and ; otherwise, false. public static bool operator == (SKSizeI left, SKSizeI right) => left.Equals (right); /// - /// Tests whether two structures are different. + /// Tests whether two structures are different. /// - /// The structure that is to the left of the inequality operator. - /// The structure that is to the left of the inequality operator. - /// The structure that is to the right of the inequality operator. - /// The structure that is to the right of the inequality operator. - /// This operator returns true if either of the and properties of the two structures are unequal; otherwise false. + /// The structure that is to the left of the inequality operator. + /// The structure that is to the left of the inequality operator. + /// The structure that is to the right of the inequality operator. + /// The structure that is to the right of the inequality operator. + /// This operator returns true if either of the and properties of the two structures are unequal; otherwise false. public static bool operator != (SKSizeI left, SKSizeI right) => !left.Equals (right); /// - /// Returns a hash code for this structure. + /// Returns a hash code for this structure. /// - /// An integer value that specifies a hash value for this structure. + /// An integer value that specifies a hash value for this structure. public readonly override int GetHashCode () { var hash = new HashCode (); @@ -19897,7 +19897,7 @@ public readonly override int GetHashCode () /// /// A 3x3 transformation matrix with perspective. /// - /// It extends the traditional 2D affine transformation matrix with three perspective components that allow simple 3D effects to be created with it. Those components must be manually set by using the , , fields of the matrix. + /// It extends the traditional 2D affine transformation matrix with three perspective components that allow simple 3D effects to be created with it. Those components must be manually set by using the , , fields of the matrix. [StructLayout (LayoutKind.Sequential)] public unsafe partial struct SKMatrix : IEquatable { // public float scaleX @@ -20241,13 +20241,13 @@ public readonly override int GetHashCode () /// /// Represents an ordered pair of floating-point x- and y-coordinates that defines a point in a two-dimensional plane. /// - /// To convert a to a , use or . + /// To convert a to a , use or . [StructLayout (LayoutKind.Sequential)] public unsafe partial struct SKPoint : IEquatable { // public float x private Single x; /// - /// Gets or sets the x-coordinate of this . + /// Gets or sets the x-coordinate of this . /// public Single X { readonly get => x; @@ -20257,7 +20257,7 @@ public Single X { // public float y private Single y; /// - /// Gets or sets the x-coordinate of this . + /// Gets or sets the x-coordinate of this . /// public Single Y { readonly get => y; @@ -20265,38 +20265,38 @@ public Single Y { } /// - /// Specifies whether this contains the same coordinates as the specified . + /// Specifies whether this contains the same coordinates as the specified . /// - /// The to test. - /// This method returns true if has the same coordinates as this . + /// The to test. + /// This method returns true if has the same coordinates as this . public readonly bool Equals (SKPoint obj) => #pragma warning disable CS8909 x == obj.x && y == obj.y; #pragma warning restore CS8909 /// - /// Specifies whether this contains the same coordinates as the specified . + /// Specifies whether this contains the same coordinates as the specified . /// /// The to test. - /// This method returns true if is a and has the same coordinates as this . + /// This method returns true if is a and has the same coordinates as this . public readonly override bool Equals (object obj) => obj is SKPoint f && Equals (f); /// - /// Compares two structures. The result specifies whether the values of the and properties of the two structures are equal. + /// Compares two structures. The result specifies whether the values of the and properties of the two structures are equal. /// - /// A to compare. - /// A to compare. - /// true if the and values of the left and right structures are equal; otherwise, false. + /// A to compare. + /// A to compare. + /// true if the and values of the left and right structures are equal; otherwise, false. public static bool operator == (SKPoint left, SKPoint right) => left.Equals (right); /// /// Determines whether the coordinates of the specified points are not equal. /// - /// A to compare. - /// A to compare. - /// true if the and values of the left and right structures differ; otherwise, false. + /// A to compare. + /// A to compare. + /// true if the and values of the left and right structures differ; otherwise, false. public static bool operator != (SKPoint left, SKPoint right) => !left.Equals (right); @@ -20324,7 +20324,7 @@ public unsafe partial struct SKPoint3 : IEquatable { // public float x private Single x; /// - /// Gets or sets the x-coordinate of this . + /// Gets or sets the x-coordinate of this . /// public Single X { readonly get => x; @@ -20334,7 +20334,7 @@ public Single X { // public float y private Single y; /// - /// Gets or sets the y-coordinate of this . + /// Gets or sets the y-coordinate of this . /// public Single Y { readonly get => y; @@ -20344,7 +20344,7 @@ public Single Y { // public float z private Single z; /// - /// Gets or sets the z-coordinate of this . + /// Gets or sets the z-coordinate of this . /// public Single Z { readonly get => z; @@ -20352,38 +20352,38 @@ public Single Z { } /// - /// Specifies whether this contains the same coordinates as the specified . + /// Specifies whether this contains the same coordinates as the specified . /// - /// The to test. - /// This method returns true if has the same coordinates as this . + /// The to test. + /// This method returns true if has the same coordinates as this . public readonly bool Equals (SKPoint3 obj) => #pragma warning disable CS8909 x == obj.x && y == obj.y && z == obj.z; #pragma warning restore CS8909 /// - /// Specifies whether this contains the same coordinates as the specified . + /// Specifies whether this contains the same coordinates as the specified . /// /// The to test. - /// This method returns true if is a and has the same coordinates as this . + /// This method returns true if is a and has the same coordinates as this . public readonly override bool Equals (object obj) => obj is SKPoint3 f && Equals (f); /// - /// Compares two structures. The result specifies whether the values of the and properties of the two structures are equal. + /// Compares two structures. The result specifies whether the values of the and properties of the two structures are equal. /// - /// A to compare. - /// A to compare. - /// true if the , and values of the left and right structures are equal; otherwise, false. + /// A to compare. + /// A to compare. + /// true if the , and values of the left and right structures are equal; otherwise, false. public static bool operator == (SKPoint3 left, SKPoint3 right) => left.Equals (right); /// /// Determines whether the coordinates of the specified points are not equal. /// - /// A to compare. - /// A to compare. - /// true if the , and values of the left and right structures differ; otherwise, false. + /// A to compare. + /// A to compare. + /// true if the , and values of the left and right structures differ; otherwise, false. public static bool operator != (SKPoint3 left, SKPoint3 right) => !left.Equals (right); @@ -20412,7 +20412,7 @@ public unsafe partial struct SKRect : IEquatable { // public float left private Single left; /// - /// Gets or sets the x-coordinate of the left edge of this structure. + /// Gets or sets the x-coordinate of the left edge of this structure. /// public Single Left { readonly get => left; @@ -20422,7 +20422,7 @@ public Single Left { // public float top private Single top; /// - /// Gets or sets the y-coordinate of the top edge of this structure. + /// Gets or sets the y-coordinate of the top edge of this structure. /// public Single Top { readonly get => top; @@ -20432,7 +20432,7 @@ public Single Top { // public float right private Single right; /// - /// Gets or sets the x-coordinate of the right edge of this structure. + /// Gets or sets the x-coordinate of the right edge of this structure. /// public Single Right { readonly get => right; @@ -20442,7 +20442,7 @@ public Single Right { // public float bottom private Single bottom; /// - /// Gets or sets the y-coordinate of the bottom edge of this structure. + /// Gets or sets the y-coordinate of the bottom edge of this structure. /// public Single Bottom { readonly get => bottom; @@ -20450,10 +20450,10 @@ public Single Bottom { } /// - /// Specifies whether this rectangle contains the same coordinates as the specified . + /// Specifies whether this rectangle contains the same coordinates as the specified . /// - /// The to test. - /// This method returns true if has the same coordinates as this . + /// The to test. + /// This method returns true if has the same coordinates as this . public readonly bool Equals (SKRect obj) => #pragma warning disable CS8909 left == obj.left && top == obj.top && right == obj.right && bottom == obj.bottom; @@ -20463,25 +20463,25 @@ public readonly bool Equals (SKRect obj) => /// Specifies whether this rectangle contains the same coordinates as the specified . /// /// The to test. - /// This method returns true if is a and has the same coordinates as this . + /// This method returns true if is a and has the same coordinates as this . public readonly override bool Equals (object obj) => obj is SKRect f && Equals (f); /// - /// Tests whether two structures have equal coordinates. + /// Tests whether two structures have equal coordinates. /// - /// The structure that is to the left of the equality operator. - /// The structure that is to the right of the equality operator. - /// This operator returns true if the two specified structures have equal , , , and properties. + /// The structure that is to the left of the equality operator. + /// The structure that is to the right of the equality operator. + /// This operator returns true if the two specified structures have equal , , , and properties. public static bool operator == (SKRect left, SKRect right) => left.Equals (right); /// - /// Tests whether two structures differ in coordinates. + /// Tests whether two structures differ in coordinates. /// - /// The structure that is to the left of the inequality operator. - /// The structure that is to the right of the inequality operator. - /// This operator returns true if any of the , , , or properties of the two structures are unequal; otherwise false. + /// The structure that is to the left of the inequality operator. + /// The structure that is to the right of the inequality operator. + /// This operator returns true if any of the , , , or properties of the two structures are unequal; otherwise false. public static bool operator != (SKRect left, SKRect right) => !left.Equals (right); @@ -20713,7 +20713,7 @@ public unsafe partial struct SKSize : IEquatable { // public float w private Single w; /// - /// Gets or sets the horizontal component of this structure. + /// Gets or sets the horizontal component of this structure. /// public Single Width { readonly get => w; @@ -20723,7 +20723,7 @@ public Single Width { // public float h private Single h; /// - /// Gets or sets the vertical component of this structure. + /// Gets or sets the vertical component of this structure. /// public Single Height { readonly get => h; @@ -20731,49 +20731,49 @@ public Single Height { } /// - /// Tests to see whether the specified object is a structure with the same dimensions as this structure. + /// Tests to see whether the specified object is a structure with the same dimensions as this structure. /// - /// The to test. - /// This method returns true if has the same coordinates as this . + /// The to test. + /// This method returns true if has the same coordinates as this . public readonly bool Equals (SKSize obj) => #pragma warning disable CS8909 w == obj.w && h == obj.h; #pragma warning restore CS8909 /// - /// Tests to see whether the specified object is a structure with the same dimensions as this structure. + /// Tests to see whether the specified object is a structure with the same dimensions as this structure. /// /// The to test. - /// This method returns true if is a and has the same coordinates as this . + /// This method returns true if is a and has the same coordinates as this . public readonly override bool Equals (object obj) => obj is SKSize f && Equals (f); /// - /// Tests whether two structures are equal. + /// Tests whether two structures are equal. /// - /// The structure on the left side of the equality operator. - /// The structure on the left side of the equality operator. - /// The structure on the right of the equality operator. - /// The structure on the right of the equality operator. - /// This operator returns true if both structures have equal and ; otherwise, false. + /// The structure on the left side of the equality operator. + /// The structure on the left side of the equality operator. + /// The structure on the right of the equality operator. + /// The structure on the right of the equality operator. + /// This operator returns true if both structures have equal and ; otherwise, false. public static bool operator == (SKSize left, SKSize right) => left.Equals (right); /// - /// Tests whether two structures are different. + /// Tests whether two structures are different. /// - /// The structure that is to the left of the inequality operator. - /// The structure that is to the left of the inequality operator. - /// The structure that is to the right of the inequality operator. - /// The structure that is to the right of the inequality operator. - /// This operator returns true if either of the and properties of the two structures are unequal; otherwise false. + /// The structure that is to the left of the inequality operator. + /// The structure that is to the left of the inequality operator. + /// The structure that is to the right of the inequality operator. + /// The structure that is to the right of the inequality operator. + /// This operator returns true if either of the and properties of the two structures are unequal; otherwise false. public static bool operator != (SKSize left, SKSize right) => !left.Equals (right); /// - /// Returns a hash code for this structure. + /// Returns a hash code for this structure. /// - /// An integer value that specifies a hash value for this structure. + /// An integer value that specifies a hash value for this structure. public readonly override int GetHashCode () { var hash = new HashCode (); @@ -21176,7 +21176,7 @@ public enum SKClipOperation { // sk_codec_result_t /// - /// Used to describe the result of a call to or one of the overloads that accepts a . + /// Used to describe the result of a call to or one of the overloads that accepts a . /// /// Result is the union of possible results from subclasses. public enum SKCodecResult { @@ -21236,7 +21236,7 @@ public enum SKCodecResult { /// /// The orders in which scanlines can be returned. /// - /// These values are obtained through the property. + /// These values are obtained through the property. public enum SKCodecScanlineOrder { // TOP_DOWN_SK_CODEC_SCANLINE_ORDER = 0 /// @@ -21245,14 +21245,14 @@ public enum SKCodecScanlineOrder { TopDown = 0, // BOTTOM_UP_SK_CODEC_SCANLINE_ORDER = 1 /// - /// Indicates that the scanline decoder reliably outputs rows, but they will be returned in reverse order. The property can be used to determine the actual y-coordinate of the next output row. + /// Indicates that the scanline decoder reliably outputs rows, but they will be returned in reverse order. The property can be used to determine the actual y-coordinate of the next output row. /// BottomUp = 1, } // sk_codec_zero_initialized_t /// - /// Whether or not the memory passed to (or one of the overloads that accepts a ) is zero initialized + /// Whether or not the memory passed to (or one of the overloads that accepts a ) is zero initialized /// public enum SKZeroInitialized { // YES_SK_CODEC_ZERO_INITIALIZED = 0 @@ -21365,7 +21365,7 @@ internal enum SKColorTypeNative { // sk_encoded_image_format_t /// - /// The various formats used by a . + /// The various formats used by a . /// public enum SKEncodedImageFormat { // BMP_SK_ENCODED_FORMAT = 0 @@ -21436,7 +21436,7 @@ public enum SKEncodedImageFormat { // sk_encodedorigin_t /// - /// Represents various origin values returned by . + /// Represents various origin values returned by . /// public enum SKEncodedOrigin { // TOP_LEFT_SK_ENCODED_ORIGIN = 1 @@ -21481,7 +21481,7 @@ public enum SKEncodedOrigin { LeftBottom = 8, // DEFAULT_SK_ENCODED_ORIGIN = TOP_LEFT_SK_ENCODED_ORIGIN /// - /// This is equivalent to . + /// This is equivalent to . /// Default = 1, } @@ -21518,7 +21518,7 @@ public enum SKFontHinting { // sk_font_style_slant_t /// - /// Various font slants for use with . + /// Various font slants for use with . /// public enum SKFontStyleSlant { // UPRIGHT_SK_FONT_STYLE_SLANT = 0 @@ -21633,7 +21633,7 @@ public enum SKLatticeRectType { Transparent = 1, // FIXED_COLOR_SK_LATTICE_RECT_TYPE = 2 /// - /// Draw the associated entry into the lattice rectangle. + /// Draw the associated entry into the lattice rectangle. /// FixedColor = 2, } @@ -21784,19 +21784,19 @@ public enum SKPathFillType { EvenOdd = 1, // INVERSE_WINDING_SK_PATH_FILLTYPE = 2 /// - /// Same as , but draws outside of the path, rather than inside. + /// Same as , but draws outside of the path, rather than inside. /// InverseWinding = 2, // INVERSE_EVENODD_SK_PATH_FILLTYPE = 3 /// - /// Same as , but draws outside of the path, rather than inside. + /// Same as , but draws outside of the path, rather than inside. /// InverseEvenOdd = 3, } // sk_path_segment_mask_t /// - /// The flags used by . + /// The flags used by . /// [Flags] public enum SKPathSegmentMask { @@ -21824,7 +21824,7 @@ public enum SKPathSegmentMask { // sk_path_verb_t /// - /// Verbs contained in an . + /// Verbs contained in an . /// /// In the description below, the number of points returned represents the number of valid entries on the return array of points that is passed to or . public enum SKPathVerb { @@ -21925,7 +21925,7 @@ public enum SKPathOp { /// /// Describes how LCD strips are organized for each pixel. /// - /// Description of how the LCD strips are arranged for each pixel. If this is unknown, or the pixels are meant to be "portable" and/or transformed before showing (e.g. rotated, scaled) then use . + /// Description of how the LCD strips are arranged for each pixel. If this is unknown, or the pixels are meant to be "portable" and/or transformed before showing (e.g. rotated, scaled) then use . public enum SKPixelGeometry { // UNKNOWN_SK_PIXELGEOMETRY = 0 /// @@ -22199,7 +22199,7 @@ public enum SKShaderTileMode { // sk_stroke_cap_t /// - /// Various options for . + /// Various options for . /// /// This is the treatment that is applied to the beginning and end of each non-closed contour (e.g. lines). public enum SKStrokeCap { @@ -22245,7 +22245,7 @@ public enum SKStrokeJoin { // sk_surfaceprops_flags_t /// - /// Flags for the . + /// Flags for the . /// [Flags] public enum SKSurfacePropsFlags { diff --git a/source/Common/NullableAttributes.generated.cs b/source/Common/NullableAttributes.generated.cs index 9ff1cd0fde..29205036ce 100644 --- a/source/Common/NullableAttributes.generated.cs +++ b/source/Common/NullableAttributes.generated.cs @@ -1,4 +1,4 @@ -// Copied from https://github.com/dotnet/runtime/blob/41ba8e1eff54b62db76797709956e37d83f59d5e/src/libraries/System.Private.CoreLib/src/System/Diagnostics/CodeAnalysis/NullableAttributes.cs +// Copied from https://github.com/dotnet/runtime/blob/41ba8e1eff54b62db76797709956e37d83f59d5e/src/libraries/System.Private.CoreLib/src/System/Diagnostics/CodeAnalysis/NullableAttributes.cs // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. diff --git a/source/SkiaSharp.HarfBuzz/SkiaSharp.HarfBuzz/BlobExtensions.cs b/source/SkiaSharp.HarfBuzz/SkiaSharp.HarfBuzz/BlobExtensions.cs index b9d19c81d7..a03a3c2877 100644 --- a/source/SkiaSharp.HarfBuzz/SkiaSharp.HarfBuzz/BlobExtensions.cs +++ b/source/SkiaSharp.HarfBuzz/SkiaSharp.HarfBuzz/BlobExtensions.cs @@ -6,15 +6,15 @@ namespace SkiaSharp.HarfBuzz { /// - /// Various extension methods to integrate SkiaSharp and a HarfBuzz . + /// Various extension methods to integrate SkiaSharp and a HarfBuzz . /// public static class BlobExtensions { /// - /// Converts a seekable stream into a . + /// Converts a seekable stream into a . /// - /// The stream to convert into a . - /// Returns the new instance. + /// The stream to convert into a . + /// Returns the new instance. public static Blob ToHarfBuzzBlob(this SKStreamAsset asset) { if (asset == null) diff --git a/source/SkiaSharp.HarfBuzz/SkiaSharp.HarfBuzz/CanvasExtensions.cs b/source/SkiaSharp.HarfBuzz/SkiaSharp.HarfBuzz/CanvasExtensions.cs index 919d845bef..c149362dec 100644 --- a/source/SkiaSharp.HarfBuzz/SkiaSharp.HarfBuzz/CanvasExtensions.cs +++ b/source/SkiaSharp.HarfBuzz/SkiaSharp.HarfBuzz/CanvasExtensions.cs @@ -3,7 +3,7 @@ namespace SkiaSharp.HarfBuzz { /// - /// Various extension methods to integrate a SkiaSharp and HarfBuzz. + /// Various extension methods to integrate a SkiaSharp and HarfBuzz. /// public static class CanvasExtensions { diff --git a/source/SkiaSharp.HarfBuzz/SkiaSharp.HarfBuzz/FontExtensions.cs b/source/SkiaSharp.HarfBuzz/SkiaSharp.HarfBuzz/FontExtensions.cs index 9f77788169..ebd34c61ec 100644 --- a/source/SkiaSharp.HarfBuzz/SkiaSharp.HarfBuzz/FontExtensions.cs +++ b/source/SkiaSharp.HarfBuzz/SkiaSharp.HarfBuzz/FontExtensions.cs @@ -5,7 +5,7 @@ namespace SkiaSharp.HarfBuzz { /// - /// Various extension methods to integrate SkiaSharp and a HarfBuzz . + /// Various extension methods to integrate SkiaSharp and a HarfBuzz . /// public static class FontExtensions { diff --git a/source/SkiaSharp.HarfBuzz/SkiaSharp.HarfBuzz/SKShaper.cs b/source/SkiaSharp.HarfBuzz/SkiaSharp.HarfBuzz/SKShaper.cs index 69c1b85f5a..c0d74da83e 100644 --- a/source/SkiaSharp.HarfBuzz/SkiaSharp.HarfBuzz/SKShaper.cs +++ b/source/SkiaSharp.HarfBuzz/SkiaSharp.HarfBuzz/SKShaper.cs @@ -16,7 +16,7 @@ public class SKShaper : IDisposable private Buffer hbBuffer; /// - /// Creates a new instance using the specified typeface. + /// Creates a new instance using the specified typeface. /// /// The typeface to use for the text shaping. public SKShaper(SKTypeface typeface) @@ -45,9 +45,9 @@ public SKShaper(SKTypeface typeface) public SKTypeface Typeface { get; private set; } /// - /// Releases all resources used by this . + /// Releases all resources used by this . /// - /// Always dispose the object before you release your last reference to the . Otherwise, the resources it is using will not be freed until the garbage collector calls the finalizer. + /// Always dispose the object before you release your last reference to the . Otherwise, the resources it is using will not be freed until the garbage collector calls the finalizer. public void Dispose() { hbFont?.Dispose(); @@ -192,7 +192,7 @@ public Result Shape(string text, float xOffset, float yOffset, SKFont font) public class Result { /// - /// Creates a new instance using empty values. + /// Creates a new instance using empty values. /// public Result() { @@ -203,7 +203,7 @@ public Result() } /// - /// Creates a new instance using the specified values. + /// Creates a new instance using the specified values. /// /// The glyph Unicode code points. /// The glyph clusters. diff --git a/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Controls/RendererTypes.cs b/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Controls/RendererTypes.cs index f8b1d3876a..4c377739fd 100644 --- a/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Controls/RendererTypes.cs +++ b/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Controls/RendererTypes.cs @@ -5,6 +5,7 @@ namespace SkiaSharp.Views.Maui.Controls { + /// public class GetPropertyValueEventArgs : EventArgs { public T Value { get; set; } diff --git a/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Controls/SKGLView.cs b/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Controls/SKGLView.cs index 5593700dee..c6ece74ee5 100644 --- a/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Controls/SKGLView.cs +++ b/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Controls/SKGLView.cs @@ -8,6 +8,9 @@ namespace SkiaSharp.Views.Maui.Controls { + /// + /// A hardware-accelerated view that can be drawn on using SkiaSharp drawing commands. + /// public partial class SKGLView : View, ISKGLView { private static readonly BindableProperty ProxyWindowProperty = @@ -16,15 +19,24 @@ public partial class SKGLView : View, ISKGLView public static readonly BindableProperty IgnorePixelScalingProperty = BindableProperty.Create(nameof(IgnorePixelScaling), typeof(bool), typeof(SKGLView), false); + /// + /// Identifies the bindable property. + /// public static readonly BindableProperty HasRenderLoopProperty = BindableProperty.Create(nameof(HasRenderLoop), typeof(bool), typeof(SKGLView), false); + /// + /// Implements the property, and allows the class to bind it to properties on other objects at run time. + /// public static readonly BindableProperty EnableTouchEventsProperty = BindableProperty.Create(nameof(EnableTouchEvents), typeof(bool), typeof(SKGLView), false); private SKSizeI lastCanvasSize; private GRContext? lastGRContext; + /// + /// Creates a new instance of the view. + /// public SKGLView() { var binding = new Binding(nameof(Window), source: this); @@ -37,26 +49,65 @@ public bool IgnorePixelScaling set => SetValue(IgnorePixelScalingProperty, value); } + /// + /// Gets or sets a value indicating whether the surface is drawn using a render loop. + /// public bool HasRenderLoop { get => (bool)GetValue(HasRenderLoopProperty); set => SetValue(HasRenderLoopProperty, value); } + /// + /// Gets or sets a value indicating whether or not to enable touch events for this view. + /// public bool EnableTouchEvents { get => (bool)GetValue(EnableTouchEventsProperty); set => SetValue(EnableTouchEventsProperty, value); } + /// + /// Occurs when the surface needs to be redrawn. + /// + /// There are two ways to draw on this surface: by overriding the + /// + /// method, or by attaching a handler to the + /// + /// event. + /// ## Examples + /// ```csharp + /// SKGLView myView = ...; + /// myView.PaintSurface += (sender, e) => { + /// var surface = e.Surface; + /// var surfaceWidth = e.BackendRenderTarget.Width; + /// var surfaceHeight = e.BackendRenderTarget.Height; + /// var canvas = surface.Canvas; + /// // draw on the canvas + /// canvas.Flush (); + /// }; + /// ``` public event EventHandler? PaintSurface; + /// + /// Occurs when the the surface received a touch event. + /// public event EventHandler? Touch; + /// + /// Gets the current canvas size. + /// + /// The canvas size may be different to the view size as a result of the current device's pixel density. public SKSize CanvasSize => lastCanvasSize; + /// + /// Gets the current GPU context. + /// public GRContext? GRContext => lastGRContext; + /// + /// Informs the surface that it needs to redraw itself. + /// public void InvalidateSurface() { Handler?.Invoke(nameof(ISKGLView.InvalidateSurface)); diff --git a/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Controls/SKImageSource.cs b/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Controls/SKImageSource.cs index aa0ad8b876..7249d28141 100644 --- a/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Controls/SKImageSource.cs +++ b/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Controls/SKImageSource.cs @@ -20,6 +20,7 @@ public override Task Cancel() return Task.FromResult(false); } + /// public static implicit operator SKImageImageSource(SKImage image) { return new SKImageImageSource @@ -28,6 +29,7 @@ public static implicit operator SKImageImageSource(SKImage image) }; } + /// public static implicit operator SKImage(SKImageImageSource source) { return source?.Image; @@ -56,6 +58,7 @@ public override Task Cancel() return Task.FromResult(false); } + /// public static implicit operator SKBitmapImageSource(SKBitmap bitmap) { return new SKBitmapImageSource @@ -64,6 +67,7 @@ public static implicit operator SKBitmapImageSource(SKBitmap bitmap) }; } + /// public static implicit operator SKBitmap(SKBitmapImageSource source) { return source?.Bitmap; @@ -92,6 +96,7 @@ public override Task Cancel() return Task.FromResult(false); } + /// public static implicit operator SKPixmapImageSource(SKPixmap pixmap) { return new SKPixmapImageSource @@ -100,6 +105,7 @@ public static implicit operator SKPixmapImageSource(SKPixmap pixmap) }; } + /// public static implicit operator SKPixmap(SKPixmapImageSource source) { return source?.Pixmap; @@ -136,6 +142,7 @@ public override Task Cancel() return Task.FromResult(false); } + /// public static explicit operator SKPicture(SKPictureImageSource source) { return source?.Picture; diff --git a/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/Extensions.cs b/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/Extensions.cs index d6fbdda418..9fbdab8133 100644 --- a/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/Extensions.cs +++ b/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/Extensions.cs @@ -6,15 +6,19 @@ public static class Extensions { // Point + /// public static Point ToMauiPoint(this SKPointI point) => new Point(point.X, point.Y); + /// public static PointF ToMauiPointF(this SKPointI point) => new PointF(point.X, point.Y); + /// public static Point ToMauiPoint(this SKPoint point) => new Point(point.X, point.Y); + /// public static PointF ToMauiPointF(this SKPoint point) => new PointF(point.X, point.Y); @@ -26,15 +30,19 @@ public static SKPoint ToSKPoint(this PointF point) => // Size + /// public static Size ToMauiSize(this SKSizeI size) => new Size(size.Width, size.Height); + /// public static SizeF ToMauiSizeF(this SKSizeI size) => new SizeF(size.Width, size.Height); + /// public static Size ToMauiSize(this SKSize size) => new Size(size.Width, size.Height); + /// public static SizeF ToMauiSizeF(this SKSize size) => new SizeF(size.Width, size.Height); @@ -46,15 +54,19 @@ public static SKSize ToSKSize(this SizeF size) => // Rect + /// public static Rect ToMauiRectangle(this SKRectI rect) => new Rect(rect.Left, rect.Top, rect.Width, rect.Height); + /// public static RectF ToMauiRectangleF(this SKRectI rect) => new RectF(rect.Left, rect.Top, rect.Width, rect.Height); + /// public static Rect ToMauiRectangle(this SKRect rect) => new Rect(rect.Left, rect.Top, rect.Width, rect.Height); + /// public static RectF ToMauiRectangleF(this SKRect rect) => new RectF(rect.Left, rect.Top, rect.Width, rect.Height); @@ -66,9 +78,11 @@ public static SKRect ToSKRect(this RectF rect) => // Color + /// public static Color ToMauiColor(this SKColor color) => new Color(color.Red / 255.0f, color.Green / 255.0f, color.Blue / 255.0f, color.Alpha / 255.0f); + /// public static Color ToMauiColor(this SKColorF color) => new Color(color.Red, color.Green, color.Blue, color.Alpha); diff --git a/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/Handlers/SKCanvasView/SKCanvasViewHandler.Ref.cs b/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/Handlers/SKCanvasView/SKCanvasViewHandler.Ref.cs index c46026f43b..f1b1e08e7d 100644 --- a/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/Handlers/SKCanvasView/SKCanvasViewHandler.Ref.cs +++ b/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/Handlers/SKCanvasView/SKCanvasViewHandler.Ref.cs @@ -7,10 +7,17 @@ public partial class SKCanvasViewHandler : ViewHandler { protected override object CreatePlatformView() => throw new NotImplementedException(); + /// + /// public static void MapIgnorePixelScaling(SKCanvasViewHandler handler, ISKCanvasView canvasView) { } + /// + /// public static void MapEnableTouchEvents(SKCanvasViewHandler handler, ISKCanvasView canvasView) { } + /// + /// + /// public static void OnInvalidateSurface(SKCanvasViewHandler handler, ISKCanvasView canvasView, object? args) { } } } diff --git a/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/SKPaintGLSurfaceEventArgs.cs b/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/SKPaintGLSurfaceEventArgs.cs index f1b7e3bc3d..160227c550 100644 --- a/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/SKPaintGLSurfaceEventArgs.cs +++ b/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/SKPaintGLSurfaceEventArgs.cs @@ -7,11 +7,17 @@ namespace SkiaSharp.Views.Maui { public class SKPaintGLSurfaceEventArgs : EventArgs { + /// + /// public SKPaintGLSurfaceEventArgs(SKSurface surface, GRBackendRenderTarget renderTarget) : this(surface, renderTarget, GRSurfaceOrigin.BottomLeft, SKColorType.Rgba8888) { } + /// + /// + /// + /// public SKPaintGLSurfaceEventArgs(SKSurface surface, GRBackendRenderTarget renderTarget, GRSurfaceOrigin origin, SKColorType colorType) { Surface = surface; diff --git a/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/SKPaintSurfaceEventArgs.cs b/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/SKPaintSurfaceEventArgs.cs index 5ef50411dd..d1789b0a69 100644 --- a/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/SKPaintSurfaceEventArgs.cs +++ b/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/SKPaintSurfaceEventArgs.cs @@ -6,11 +6,16 @@ namespace SkiaSharp.Views.Maui { public class SKPaintSurfaceEventArgs : EventArgs { + /// + /// public SKPaintSurfaceEventArgs(SKSurface surface, SKImageInfo info) : this(surface, info, info) { } + /// + /// + /// public SKPaintSurfaceEventArgs(SKSurface surface, SKImageInfo info, SKImageInfo rawInfo) { Surface = surface; diff --git a/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/SKTouchEventArgs.cs b/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/SKTouchEventArgs.cs index 1dd0fc70c7..a6e5e4c2ed 100644 --- a/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/SKTouchEventArgs.cs +++ b/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/SKTouchEventArgs.cs @@ -6,21 +6,46 @@ namespace SkiaSharp.Views.Maui { public class SKTouchEventArgs : EventArgs { + /// + /// + /// + /// public SKTouchEventArgs(long id, SKTouchAction type, SKPoint location, bool inContact) : this(id, type, SKMouseButton.Left, SKTouchDeviceType.Touch, location, inContact, 0, 1) { } + /// + /// + /// + /// + /// + /// public SKTouchEventArgs(long id, SKTouchAction type, SKMouseButton mouseButton, SKTouchDeviceType deviceType, SKPoint location, bool inContact) : this(id, type, mouseButton, deviceType, location, inContact, 0, 1) { } + /// + /// + /// + /// + /// + /// + /// public SKTouchEventArgs(long id, SKTouchAction type, SKMouseButton mouseButton, SKTouchDeviceType deviceType, SKPoint location, bool inContact, int wheelDelta) : this(id, type, mouseButton, deviceType, location, inContact, wheelDelta, 1) { } + /// + /// + /// + /// + /// + /// + /// + /// public SKTouchEventArgs(long id, SKTouchAction type, SKMouseButton mouseButton, SKTouchDeviceType deviceType, SKPoint location, bool inContact, int wheelDelta, float pressure) { Id = id; diff --git a/source/SkiaSharp.Views/SkiaSharp.Views.Gtk3/GTKExtensions.cs b/source/SkiaSharp.Views/SkiaSharp.Views.Gtk3/GTKExtensions.cs index 8423a1906c..5a84756fb8 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views.Gtk3/GTKExtensions.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views.Gtk3/GTKExtensions.cs @@ -13,6 +13,7 @@ public static SKPointI ToSKPointI(this Point point) return new SKPointI(point.X, point.Y); } + /// public static Point ToPoint(this SKPointI point) { return new Point(point.X, point.Y); @@ -25,6 +26,7 @@ public static SKRectI ToSKRectI(this Rectangle rect) return new SKRectI(rect.Left, rect.Top, rect.Right, rect.Bottom); } + /// public static Rectangle ToRect(this SKRectI rect) { return new Rectangle(rect.Left, rect.Top, rect.Right, rect.Bottom); @@ -37,6 +39,7 @@ public static SKSizeI ToSKSizeI(this Size size) return new SKSizeI(size.Width, size.Height); } + /// public static Size ToSize(this SKSizeI size) { return new Size(size.Width, size.Height); @@ -54,6 +57,7 @@ public static SKColor ToSKColor(this Color color) return new SKColor((byte)r, (byte)g, (byte)b); } + /// public static Color ToColor(this SKColor color) { return new Color(color.Red, color.Green, color.Blue); @@ -61,6 +65,8 @@ public static Color ToColor(this SKColor color) // Pixbuf + /// + /// public static Pixbuf ToPixbuf(this SKPicture picture, SKSizeI dimensions) { using (var image = SKImage.FromPicture(picture, dimensions)) @@ -69,6 +75,7 @@ public static Pixbuf ToPixbuf(this SKPicture picture, SKSizeI dimensions) } } + /// public static Pixbuf ToPixbuf(this SKImage skiaImage) { // TODO: maybe keep the same color types where we can, instead of just going to the platform default @@ -91,6 +98,7 @@ public static Pixbuf ToPixbuf(this SKImage skiaImage) return pix; } + /// public static Pixbuf ToPixbuf(this SKBitmap skiaBitmap) { using (var pixmap = skiaBitmap.PeekPixels()) @@ -102,6 +110,7 @@ public static Pixbuf ToPixbuf(this SKBitmap skiaBitmap) } } + /// public static Pixbuf ToPixbuf(this SKPixmap pixmap) { using (var image = SKImage.FromPixels(pixmap)) diff --git a/source/SkiaSharp.Views/SkiaSharp.Views.Gtk3/SKDrawingArea.cs b/source/SkiaSharp.Views/SkiaSharp.Views.Gtk3/SKDrawingArea.cs index 332027e4a1..3109325ca9 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views.Gtk3/SKDrawingArea.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views.Gtk3/SKDrawingArea.cs @@ -5,18 +5,47 @@ namespace SkiaSharp.Views.Gtk { + /// + /// A GTK# view that can be drawn on using SkiaSharp drawing commands. + /// [ToolboxItem(true)] public class SKDrawingArea : global::Gtk.DrawingArea { private ImageSurface pix; private SKSurface surface; + /// + /// Default constructor that initializes a new instance of . + /// public SKDrawingArea() { } + /// + /// Gets the current canvas size. + /// + /// The canvas size may be different to the view size as a result of the current device's pixel density. public SKSize CanvasSize => pix == null ? SKSize.Empty : new SKSize(pix.Width, pix.Height); + /// + /// Occurs when the the canvas needs to be redrawn. + /// + /// There are two ways to draw on this surface: by overriding the + /// + /// method, or by attaching a handler to the + /// + /// event. + /// ## Examples + /// ```csharp + /// myView.PaintSurface += (sender, e) => { + /// var surface = e.Surface; + /// var surfaceWidth = e.Info.Width; + /// var surfaceHeight = e.Info.Height; + /// var canvas = surface.Canvas; + /// // draw on the canvas + /// canvas.Flush (); + /// }; + /// ``` [Category("Appearance")] public event EventHandler PaintSurface; diff --git a/source/SkiaSharp.Views/SkiaSharp.Views.Shared/SKPaintGLSurfaceEventArgs.cs b/source/SkiaSharp.Views/SkiaSharp.Views.Shared/SKPaintGLSurfaceEventArgs.cs index 5714613559..94b383f3fa 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views.Shared/SKPaintGLSurfaceEventArgs.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views.Shared/SKPaintGLSurfaceEventArgs.cs @@ -33,6 +33,8 @@ public class SKPaintGLSurfaceEventArgs : EventArgs /// /// Creates a new instance of the event arguments. /// + /// The surface that is being drawn on. + /// The render target that is currently being drawn. public SKPaintGLSurfaceEventArgs(SKSurface surface, GRBackendRenderTarget renderTarget) : this(surface, renderTarget, GRSurfaceOrigin.BottomLeft, SKColorType.Rgba8888) { @@ -41,6 +43,10 @@ public SKPaintGLSurfaceEventArgs(SKSurface surface, GRBackendRenderTarget render /// /// Creates a new instance of the event arguments. /// + /// The surface that is being drawn on. + /// The render target that is currently being drawn. + /// The surface origin of the render target. + /// The color type of the render target. public SKPaintGLSurfaceEventArgs(SKSurface surface, GRBackendRenderTarget renderTarget, GRSurfaceOrigin origin, SKColorType colorType) { Surface = surface; @@ -51,11 +57,20 @@ public SKPaintGLSurfaceEventArgs(SKSurface surface, GRBackendRenderTarget render RawInfo = Info; } + /// + /// + /// + /// public SKPaintGLSurfaceEventArgs(SKSurface surface, GRBackendRenderTarget renderTarget, GRSurfaceOrigin origin, SKImageInfo info) : this(surface, renderTarget, origin, info, info) { } + /// + /// + /// + /// + /// public SKPaintGLSurfaceEventArgs(SKSurface surface, GRBackendRenderTarget renderTarget, GRSurfaceOrigin origin, SKImageInfo info, SKImageInfo rawInfo) { Surface = surface; diff --git a/source/SkiaSharp.Views/SkiaSharp.Views.Shared/SKPaintSurfaceEventArgs.cs b/source/SkiaSharp.Views/SkiaSharp.Views.Shared/SKPaintSurfaceEventArgs.cs index 3326529758..f7c276f101 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views.Shared/SKPaintSurfaceEventArgs.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views.Shared/SKPaintSurfaceEventArgs.cs @@ -30,6 +30,8 @@ public class SKPaintSurfaceEventArgs : EventArgs /// /// Creates a new instance of the event arguments. /// + /// The surface that is being drawn on. + /// The information about the surface. public SKPaintSurfaceEventArgs(SKSurface surface, SKImageInfo info) : this(surface, info, info) { diff --git a/source/SkiaSharp.Views/SkiaSharp.Views.WPF/SKElement.cs b/source/SkiaSharp.Views/SkiaSharp.Views.WPF/SKElement.cs index dffd1c153e..9f61491208 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views.WPF/SKElement.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views.WPF/SKElement.cs @@ -11,6 +11,9 @@ namespace SkiaSharp.Views.WPF { + /// + /// A visual element that can be drawn on using SkiaSharp drawing commands. + /// [DefaultEvent("PaintSurface")] [DefaultProperty("Name")] public class SKElement : FrameworkElement @@ -22,13 +25,24 @@ public class SKElement : FrameworkElement private WriteableBitmap bitmap; private bool ignorePixelScaling; + /// + /// Creates a new instance of the view. + /// public SKElement() { designMode = DesignerProperties.GetIsInDesignMode(this); } + /// + /// Gets the current canvas size. + /// + /// The canvas size may be different to the view size as a result of the current device's pixel density. public SKSize CanvasSize { get; private set; } + /// + /// Gets or sets a value indicating whether the drawing canvas should be resized on high resolution displays. + /// + /// By default, when false, the canvas is resized to 1 canvas pixel per display pixel. When true, the canvas is resized to device independent pixels, and then stretched to fill the view. Although performance is improved and all objects are the same size on different display densities, blurring and pixelation may occur. public bool IgnorePixelScaling { get => ignorePixelScaling; @@ -39,6 +53,9 @@ public bool IgnorePixelScaling } } + /// + /// Occurs when the the canvas needs to be redrawn. + /// [Category("Appearance")] public event EventHandler PaintSurface; diff --git a/source/SkiaSharp.Views/SkiaSharp.Views.WPF/WPFExtensions.cs b/source/SkiaSharp.Views/SkiaSharp.Views.WPF/WPFExtensions.cs index bef416e526..7a48ec8294 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views.WPF/WPFExtensions.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views.WPF/WPFExtensions.cs @@ -5,6 +5,9 @@ namespace SkiaSharp.Views.WPF { + /// + /// Various extension methods to convert between SkiaSharp types and Windows types. + /// public static class WPFExtensions { // Point @@ -14,6 +17,11 @@ public static SKPoint ToSKPoint(this Point point) return new SKPoint((float)point.X, (float)point.Y); } + /// + /// Converts a SkiaSharp point into a Windows point. + /// + /// The SkiaSharp point. + /// Returns a Windows point. public static Point ToPoint(this SKPoint point) { return new Point(point.X, point.Y); @@ -26,6 +34,11 @@ public static SKRect ToSKRect(this Rect rect) return new SKRect((float)rect.Left, (float)rect.Top, (float)rect.Right, (float)rect.Bottom); } + /// + /// Converts a SkiaSharp rectangle into a Windows rectangle. + /// + /// The SkiaSharp rectangle. + /// Returns a Windows rectangle. public static Rect ToRect(this SKRect rect) { return new Rect(rect.Left, rect.Top, rect.Width, rect.Height); @@ -38,6 +51,11 @@ public static SKSize ToSKSize(this Size size) return new SKSize((float)size.Width, (float)size.Height); } + /// + /// Converts a SkiaSharp size into a Windows size. + /// + /// The SkiaSharp size. + /// Returns a Windows size. public static Size ToSize(this SKSize size) { return new Size(size.Width, size.Height); @@ -50,6 +68,11 @@ public static SKColor ToSKColor(this Color color) return new SKColor(color.R, color.G, color.B, color.A); } + /// + /// Converts a SkiaSharp color into a Windows color. + /// + /// The SkiaSharp color. + /// Returns a Windows color. public static Color ToColor(this SKColor color) { return Color.FromArgb(color.Alpha, color.Red, color.Green, color.Blue); @@ -57,12 +80,23 @@ public static Color ToColor(this SKColor color) // WriteableBitmap + /// + /// Converts a SkiaSharp picture into a Windows WriteableBitmap. + /// + /// The SkiaSharp picture. + /// The dimensions of the picture. + /// Returns a copy of the picture as a Windows WriteableBitmap. public static WriteableBitmap ToWriteableBitmap(this SKPicture picture, SKSizeI dimensions) { using var image = SKImage.FromPicture(picture, dimensions); return image.ToWriteableBitmap(); } + /// + /// Converts a SkiaSharp image into a Windows WriteableBitmap. + /// + /// The SkiaSharp image. + /// Returns a copy of the image data as a Windows WriteableBitmap. public static WriteableBitmap ToWriteableBitmap(this SKImage skiaImage) { // TODO: maybe keep the same color types where we can, instead of just going to the platform default @@ -82,6 +116,11 @@ public static WriteableBitmap ToWriteableBitmap(this SKImage skiaImage) return bitmap; } + /// + /// Converts a SkiaSharp bitmap into a Windows WriteableBitmap. + /// + /// The SkiaSharp bitmap. + /// Returns a copy of the bitmap data as a Windows WriteableBitmap. public static WriteableBitmap ToWriteableBitmap(this SKBitmap skiaBitmap) { using var pixmap = skiaBitmap.PeekPixels(); @@ -91,6 +130,11 @@ public static WriteableBitmap ToWriteableBitmap(this SKBitmap skiaBitmap) return wb; } + /// + /// Converts a SkiaSharp pixmap into a Windows WriteableBitmap. + /// + /// The SkiaSharp pixmap. + /// Returns a copy of the pixel data as a Windows WriteableBitmap. public static WriteableBitmap ToWriteableBitmap(this SKPixmap pixmap) { using var image = SKImage.FromPixels(pixmap); diff --git a/source/SkiaSharp.Views/SkiaSharp.Views.WinUI/AngleSwapChainPanel.cs b/source/SkiaSharp.Views/SkiaSharp.Views.WinUI/AngleSwapChainPanel.cs index 613bb8b9d5..f11377287e 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views.WinUI/AngleSwapChainPanel.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views.WinUI/AngleSwapChainPanel.cs @@ -16,6 +16,9 @@ namespace SkiaSharp.Views.Windows namespace SkiaSharp.Views.UWP #endif { + /// + /// A SwapChainPanel that wraps an ANGLE OpenGL ES context. + /// public class AngleSwapChainPanel : SwapChainPanel { private static readonly DependencyProperty ProxyVisibilityProperty = @@ -44,6 +47,9 @@ public class AngleSwapChainPanel : SwapChainPanel private bool pendingSizeChange = false; + /// + /// Creates a new instance of . + /// public AngleSwapChainPanel() { lastCompositionScaleX = CompositionScaleX; @@ -73,10 +79,19 @@ public AngleSwapChainPanel() SetBinding(ProxyVisibilityProperty, binding); } + /// + /// Gets or sets a value indicating whether drawing occurs on a background thread, or the main UI thread + /// public bool DrawInBackground { get; set; } + /// + /// Gets or sets the scaling for the renderbuffer dimensions. + /// public double ContentsScale { get; private set; } + /// + /// Gets or sets a value indicating whether to use a render loop, or on-demand rendering. + /// public bool EnableRenderLoop { get => enableRenderLoop; @@ -90,6 +105,9 @@ public bool EnableRenderLoop } } + /// + /// Invalidates the entire surface of the control and causes the control to be redrawn. + /// public void Invalidate() { if (!isLoaded || EnableRenderLoop) diff --git a/source/SkiaSharp.Views/SkiaSharp.Views.WinUI/SKSwapChainPanel.cs b/source/SkiaSharp.Views/SkiaSharp.Views.WinUI/SKSwapChainPanel.cs index ce872b5db0..7485723b43 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views.WinUI/SKSwapChainPanel.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views.WinUI/SKSwapChainPanel.cs @@ -8,6 +8,9 @@ namespace SkiaSharp.Views.Windows namespace SkiaSharp.Views.UWP #endif { + /// + /// A SwapChainPanel that can be drawn on using SkiaSharp drawing commands. + /// public class SKSwapChainPanel : AngleSwapChainPanel { private const SKColorType colorType = SKColorType.Rgba8888; @@ -22,14 +25,43 @@ public class SKSwapChainPanel : AngleSwapChainPanel private SKSizeI lastSize; + /// + /// Creates a new instance of . + /// public SKSwapChainPanel() { } + /// + /// Gets the current canvas size. + /// + /// The canvas size may be different to the view size as a result of the current device's pixel density. public SKSize CanvasSize => lastSize; + /// + /// Gets the current GPU context. + /// public GRContext GRContext => context; + /// + /// Occurs when the surface needs to be redrawn. + /// + /// There are two ways to draw on this surface: by overriding the + /// + /// method, or by attaching a handler to the + /// + /// event. + /// ## Examples + /// ```csharp + /// myView.PaintSurface += (sender, e) => { + /// var surface = e.Surface; + /// var surfaceWidth = e.BackendRenderTarget.Width; + /// var surfaceHeight = e.BackendRenderTarget.Height; + /// var canvas = surface.Canvas; + /// // draw on the canvas + /// canvas.Flush (); + /// }; + /// ``` public event EventHandler PaintSurface; protected virtual void OnPaintSurface(SKPaintGLSurfaceEventArgs e) diff --git a/source/SkiaSharp.Views/SkiaSharp.Views.WinUI/SKXamlCanvas.cs b/source/SkiaSharp.Views/SkiaSharp.Views.WinUI/SKXamlCanvas.cs index d7767fcf50..56520a81af 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views.WinUI/SKXamlCanvas.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views.WinUI/SKXamlCanvas.cs @@ -23,6 +23,9 @@ namespace SkiaSharp.Views.Windows namespace SkiaSharp.Views.UWP #endif { + /// + /// A XAML canvas that can be drawn on using SkiaSharp drawing commands. + /// public partial class SKXamlCanvas : Canvas { private const float DpiBase = 96.0f; @@ -45,6 +48,9 @@ public partial class SKXamlCanvas : Canvas // workaround for https://github.com/mono/SkiaSharp/issues/1118 private int loadUnloadCounter = 0; + /// + /// Creates a new instance of . + /// public SKXamlCanvas() { if (designMode) @@ -67,8 +73,16 @@ public SKXamlCanvas() SetBinding(ProxyVisibilityProperty, binding); } + /// + /// Gets the current canvas size. + /// + /// The canvas size may be different to the view size as a result of the current device's pixel density. public SKSize CanvasSize { get; private set; } + /// + /// Gets or sets a value indicating whether the drawing canvas should be resized on high resolution displays. + /// + /// By default, when , the canvas is resized to 1 canvas pixel per display pixel. When , the canvas is resized to device independent pixels, and then stretched to fill the view. Although performance is improved and all objects are the same size on different display densities, blurring and pixelation may occur. public bool IgnorePixelScaling { get => ignorePixelScaling; @@ -79,8 +93,30 @@ public bool IgnorePixelScaling } } + /// + /// Gets the current DPI for the canvas. + /// public double Dpi { get; private set; } = 1; + /// + /// Occurs when the surface needs to be redrawn. + /// + /// There are two ways to draw on this surface: by overriding the + /// + /// method, or by attaching a handler to the + /// + /// event. + /// ## Examples + /// ```csharp + /// myView.PaintSurface += (sender, e) => { + /// var surface = e.Surface; + /// var surfaceWidth = e.Info.Width; + /// var surfaceHeight = e.Info.Height; + /// var canvas = surface.Canvas; + /// // draw on the canvas + /// canvas.Flush (); + /// }; + /// ``` public event EventHandler PaintSurface; protected virtual void OnPaintSurface(SKPaintSurfaceEventArgs e) @@ -158,6 +194,9 @@ private void OnUnloaded(object sender, RoutedEventArgs e) FreeBitmap(); } + /// + /// Invalidates the entire surface of the control and causes the control to be redrawn. + /// public void Invalidate() { #if WINDOWS diff --git a/source/SkiaSharp.Views/SkiaSharp.Views.WinUI/UWPExtensions.cs b/source/SkiaSharp.Views/SkiaSharp.Views.WinUI/UWPExtensions.cs index a0768ac015..3bf0998d0b 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views.WinUI/UWPExtensions.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views.WinUI/UWPExtensions.cs @@ -18,6 +18,9 @@ namespace SkiaSharp.Views.Windows namespace SkiaSharp.Views.UWP #endif { + /// + /// Various extension methods to convert between SkiaSharp types and Windows types. + /// #if WINDOWS public static class WindowsExtensions #else @@ -31,6 +34,11 @@ public static SKPoint ToSKPoint(this Point point) return new SKPoint((float)point.X, (float)point.Y); } + /// + /// Converts a SkiaSharp point into a Windows point. + /// + /// The SkiaSharp point. + /// Returns a Windows point. public static Point ToPoint(this SKPoint point) { return new Point(point.X, point.Y); @@ -43,6 +51,11 @@ public static SKRect ToSKRect(this Rect rect) return new SKRect((float)rect.Left, (float)rect.Top, (float)rect.Right, (float)rect.Bottom); } + /// + /// Converts a SkiaSharp rectangle into a Windows rectangle. + /// + /// The SkiaSharp rectangle. + /// Returns a Windows rectangle. public static Rect ToRect(this SKRect rect) { return new Rect(rect.Left, rect.Top, rect.Right, rect.Bottom); @@ -55,6 +68,11 @@ public static SKSize ToSKSize(this Size size) return new SKSize((float)size.Width, (float)size.Height); } + /// + /// Converts a SkiaSharp size into a Windows size. + /// + /// The SkiaSharp size. + /// Returns a Windows size. public static Size ToSize(this SKSize size) { return new Size(size.Width, size.Height); @@ -67,14 +85,25 @@ public static SKColor ToSKColor(this Color color) return new SKColor(color.R, color.G, color.B, color.A); } + /// + /// Converts a SkiaSharp color into a Windows color. + /// + /// The SkiaSharp color. + /// Returns a Windows color. public static Color ToColor(this SKColor color) { return Color.FromArgb(color.Alpha, color.Red, color.Green, color.Blue); } -#if !HAS_UNO + #if !HAS_UNO // WriteableBitmap + /// + /// Converts a SkiaSharp picture into a Windows WriteableBitmap. + /// + /// The SkiaSharp picture. + /// The dimensions of the picture. + /// Returns a copy of the picture as a Windows WriteableBitmap. public static WriteableBitmap ToWriteableBitmap(this SKPicture picture, SKSizeI dimensions) { using (var image = SKImage.FromPicture(picture, dimensions)) @@ -83,6 +112,11 @@ public static WriteableBitmap ToWriteableBitmap(this SKPicture picture, SKSizeI } } + /// + /// Converts a SkiaSharp image into a Windows WriteableBitmap. + /// + /// The SkiaSharp image. + /// Returns a copy of the image data as a Windows WriteableBitmap. public static WriteableBitmap ToWriteableBitmap(this SKImage skiaImage) { // TODO: maybe keep the same color types where we can, instead of just going to the platform default @@ -109,6 +143,11 @@ public static WriteableBitmap ToWriteableBitmap(this SKImage skiaImage) return bitmap; } + /// + /// Converts a SkiaSharp bitmap into a Windows WriteableBitmap. + /// + /// The SkiaSharp bitmap. + /// Returns a copy of the bitmap data as a Windows WriteableBitmap. public static WriteableBitmap ToWriteableBitmap(this SKBitmap skiaBitmap) { using var pixmap = skiaBitmap.PeekPixels(); @@ -118,6 +157,11 @@ public static WriteableBitmap ToWriteableBitmap(this SKBitmap skiaBitmap) return wb; } + /// + /// Converts a SkiaSharp pixmap into a Windows WriteableBitmap. + /// + /// The SkiaSharp pixmap. + /// Returns a copy of the pixel data as a Windows WriteableBitmap. public static WriteableBitmap ToWriteableBitmap(this SKPixmap pixmap) { using (var image = SKImage.FromPixels(pixmap)) diff --git a/source/SkiaSharp.Views/SkiaSharp.Views.WindowsForms/Extensions.Desktop.cs b/source/SkiaSharp.Views/SkiaSharp.Views.WindowsForms/Extensions.Desktop.cs index 03319d0144..b0de872c6d 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views.WindowsForms/Extensions.Desktop.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views.WindowsForms/Extensions.Desktop.cs @@ -2,25 +2,48 @@ namespace SkiaSharp.Views.Desktop { + /// + /// Various extension methods to convert between SkiaSharp types and System.Drawing types. + /// public static class Extensions { // System.Drawing.Point* + /// + /// Converts a System.Drawing point into a SkiaSharp point. + /// + /// The System.Drawing point. + /// Returns a SkiaSharp point. public static SKPoint ToSKPoint(this System.Drawing.PointF point) { return new SKPoint(point.X, point.Y); } + /// + /// Converts a System.Drawing point into a SkiaSharp point. + /// + /// The System.Drawing point. + /// Returns a SkiaSharp point. public static SKPointI ToSKPoint(this System.Drawing.Point point) { return new SKPointI(point.X, point.Y); } + /// + /// Converts a SkiaSharp point into a System.Drawing point. + /// + /// The SkiaSharp point. + /// Returns a System.Drawing point. public static System.Drawing.PointF ToDrawingPoint(this SKPoint point) { return new System.Drawing.PointF(point.X, point.Y); } + /// + /// Converts a SkiaSharp point into a System.Drawing point. + /// + /// The SkiaSharp point. + /// Returns a System.Drawing point. public static System.Drawing.Point ToDrawingPoint(this SKPointI point) { return new System.Drawing.Point(point.X, point.Y); @@ -28,21 +51,41 @@ public static System.Drawing.Point ToDrawingPoint(this SKPointI point) // System.Drawing.Rectangle* + /// + /// Converts a System.Drawing rectangle into a SkiaSharp rectangle. + /// + /// The System.Drawing rectangle. + /// Returns a SkiaSharp rectangle. public static SKRect ToSKRect(this System.Drawing.RectangleF rect) { return new SKRect(rect.Left, rect.Top, rect.Right, rect.Bottom); } + /// + /// Converts a System.Drawing rectangle into a SkiaSharp rectangle. + /// + /// The System.Drawing rectangle. + /// Returns a SkiaSharp rectangle. public static SKRectI ToSKRect(this System.Drawing.Rectangle rect) { return new SKRectI(rect.Left, rect.Top, rect.Right, rect.Bottom); } + /// + /// Converts a SkiaSharp rectangle into a System.Drawing rectangle. + /// + /// The SkiaSharp rectangle. + /// Returns a System.Drawing rectangle. public static System.Drawing.RectangleF ToDrawingRect(this SKRect rect) { return System.Drawing.RectangleF.FromLTRB(rect.Left, rect.Top, rect.Right, rect.Bottom); } + /// + /// Converts a SkiaSharp rectangle into a System.Drawing rectangle. + /// + /// The SkiaSharp rectangle. + /// Returns a System.Drawing rectangle. public static System.Drawing.Rectangle ToDrawingRect(this SKRectI rect) { return System.Drawing.Rectangle.FromLTRB(rect.Left, rect.Top, rect.Right, rect.Bottom); @@ -50,21 +93,41 @@ public static System.Drawing.Rectangle ToDrawingRect(this SKRectI rect) // System.Drawing.Size* + /// + /// Converts a System.Drawing size into a SkiaSharp size. + /// + /// The System.Drawing size. + /// Returns a SkiaSharp size. public static SKSize ToSKSize(this System.Drawing.SizeF size) { return new SKSize(size.Width, size.Height); } + /// + /// Converts a System.Drawing size into a SkiaSharp size. + /// + /// The System.Drawing size. + /// Returns a SkiaSharp size. public static SKSizeI ToSKSize(this System.Drawing.Size size) { return new SKSizeI(size.Width, size.Height); } + /// + /// Converts a SkiaSharp size into a System.Drawing size. + /// + /// The SkiaSharp size. + /// Returns a System.Drawing size. public static System.Drawing.SizeF ToDrawingSize(this SKSize size) { return new System.Drawing.SizeF(size.Width, size.Height); } + /// + /// Converts a SkiaSharp size into a System.Drawing size. + /// + /// The SkiaSharp size. + /// Returns a System.Drawing size. public static System.Drawing.Size ToDrawingSize(this SKSizeI size) { return new System.Drawing.Size(size.Width, size.Height); @@ -72,6 +135,12 @@ public static System.Drawing.Size ToDrawingSize(this SKSizeI size) // System.Drawing.Bitmap + /// + /// Converts a SkiaSharp picture into a System.Drawing bitmap. + /// + /// The SkiaSharp picture. + /// The dimensions of the picture. + /// Returns a copy of the picture as a System.Drawing bitmap. public static System.Drawing.Bitmap ToBitmap(this SKPicture picture, SKSizeI dimensions) { using (var image = SKImage.FromPicture(picture, dimensions)) @@ -80,6 +149,11 @@ public static System.Drawing.Bitmap ToBitmap(this SKPicture picture, SKSizeI dim } } + /// + /// Converts a SkiaSharp image into a System.Drawing bitmap. + /// + /// The SkiaSharp image. + /// Returns a copy of the image data as a System.Drawing bitmap. public static System.Drawing.Bitmap ToBitmap(this SKImage skiaImage) { // TODO: maybe keep the same color types where we can, instead of just going to the platform default @@ -97,6 +171,11 @@ public static System.Drawing.Bitmap ToBitmap(this SKImage skiaImage) return bitmap; } + /// + /// Converts a SkiaSharp bitmap into a System.Drawing bitmap. + /// + /// The SkiaSharp bitmap. + /// Returns a copy of the bitmap data as a System.Drawing bitmap. public static System.Drawing.Bitmap ToBitmap(this SKBitmap skiaBitmap) { using (var pixmap = skiaBitmap.PeekPixels()) @@ -108,6 +187,11 @@ public static System.Drawing.Bitmap ToBitmap(this SKBitmap skiaBitmap) } } + /// + /// Converts a SkiaSharp pixmap into a System.Drawing bitmap. + /// + /// The SkiaSharp pixmap. + /// Returns a copy of the pixel data as a System.Drawing bitmap. public static System.Drawing.Bitmap ToBitmap(this SKPixmap pixmap) { using (var image = SKImage.FromPixels(pixmap)) @@ -116,6 +200,11 @@ public static System.Drawing.Bitmap ToBitmap(this SKPixmap pixmap) } } + /// + /// Converts a System.Drawing bitmap into a SkiaSharp bitmap. + /// + /// The System.Drawing bitmap. + /// Returns a copy of the bitmap data as a SkiaSharp bitmap. public static SKBitmap ToSKBitmap(this System.Drawing.Bitmap bitmap) { // TODO: maybe keep the same color types where we can, instead of just going to the platform default @@ -129,6 +218,11 @@ public static SKBitmap ToSKBitmap(this System.Drawing.Bitmap bitmap) return skiaBitmap; } + /// + /// Converts a System.Drawing bitmap into a SkiaSharp image. + /// + /// The System.Drawing bitmap. + /// Returns a copy of the bitmap data as a SkiaSharp image. public static SKImage ToSKImage(this System.Drawing.Bitmap bitmap) { // TODO: maybe keep the same color types where we can, instead of just going to the platform default @@ -142,6 +236,11 @@ public static SKImage ToSKImage(this System.Drawing.Bitmap bitmap) return image; } + /// + /// Converts a System.Drawing bitmap into a SkiaSharp pixmap. + /// + /// The System.Drawing bitmap. + /// The SkiaSharp pixmap to hold the copy of the bitmap data. public static void ToSKPixmap(this System.Drawing.Bitmap bitmap, SKPixmap pixmap) { // TODO: maybe keep the same color types where we can, instead of just going to the platform default @@ -172,11 +271,21 @@ public static void ToSKPixmap(this System.Drawing.Bitmap bitmap, SKPixmap pixmap // System.Drawing.Color + /// + /// Converts a System.Drawing color into a SkiaSharp color. + /// + /// The System.Drawing color. + /// Returns a SkiaSharp color. public static SKColor ToSKColor(this System.Drawing.Color color) { return (SKColor)(uint)color.ToArgb(); } + /// + /// Converts a SkiaSharp color into a System.Drawing color. + /// + /// The SkiaSharp color. + /// Returns a System.Drawing color. public static System.Drawing.Color ToDrawingColor(this SKColor color) { return System.Drawing.Color.FromArgb((int)(uint)color); diff --git a/source/SkiaSharp.Views/SkiaSharp.Views.WindowsForms/SKControl.cs b/source/SkiaSharp.Views/SkiaSharp.Views.WindowsForms/SKControl.cs index d3653ad1c3..c44049773b 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views.WindowsForms/SKControl.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views.WindowsForms/SKControl.cs @@ -6,6 +6,9 @@ namespace SkiaSharp.Views.Desktop { + /// + /// A control that can be drawn on using SkiaSharp drawing commands. + /// [DefaultEvent("PaintSurface")] [DefaultProperty("Name")] public class SKControl : Control @@ -14,6 +17,9 @@ public class SKControl : Control private Bitmap bitmap; + /// + /// Creates a new instance of the view. + /// public SKControl() { DoubleBuffered = true; @@ -22,8 +28,31 @@ public SKControl() designMode = DesignMode || LicenseManager.UsageMode == LicenseUsageMode.Designtime; } + /// + /// Gets the current canvas size. + /// + /// The canvas size may be different to the view size as a result of the current device's pixel density. public SKSize CanvasSize => bitmap == null ? SKSize.Empty : new SKSize(bitmap.Width, bitmap.Height); + /// + /// Occurs when the the canvas needs to be redrawn. + /// + /// There are two ways to draw on this surface: by overriding the + /// + /// method, or by attaching a handler to the + /// + /// event. + /// ## Examples + /// ```csharp + /// myView.PaintSurface += (sender, e) => { + /// var surface = e.Surface; + /// var surfaceWidth = e.Info.Width; + /// var surfaceHeight = e.Info.Height; + /// var canvas = surface.Canvas; + /// // draw on the canvas + /// canvas.Flush (); + /// }; + /// ``` [Category("Appearance")] public event EventHandler PaintSurface; diff --git a/source/SkiaSharp.Views/SkiaSharp.Views.WindowsForms/SKGLControl.cs b/source/SkiaSharp.Views/SkiaSharp.Views.WindowsForms/SKGLControl.cs index 45d8fe1f33..6c430f72c6 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views.WindowsForms/SKGLControl.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views.WindowsForms/SKGLControl.cs @@ -10,6 +10,9 @@ namespace SkiaSharp.Views.Desktop { + /// + /// A hardware-accelerated control that can be drawn on using SkiaSharp drawing commands. + /// [DefaultEvent("PaintSurface")] [DefaultProperty("Name")] public class SKGLControl : GLControl @@ -40,6 +43,9 @@ public SKGLControl(GLControlSettings settings) Initialize(); } #else + /// + /// Creates a new instance of the view. + /// public SKGLControl() : base(new GraphicsMode(new ColorFormat(8, 8, 8, 8), 24, 8)) { @@ -66,10 +72,36 @@ private void Initialize() ResizeRedraw = true; } + /// + /// Gets the current canvas size. + /// + /// The canvas size may be different to the view size as a result of the current device's pixel density. public SKSize CanvasSize => lastSize; + /// + /// Gets the current GPU context. + /// public GRContext GRContext => grContext; + /// + /// Occurs when the surface needs to be redrawn. + /// + /// There are two ways to draw on this surface: by overriding the + /// + /// method, or by attaching a handler to the + /// + /// event. + /// ## Examples + /// ```csharp + /// myView.PaintSurface += (sender, e) => { + /// var surface = e.Surface; + /// var surfaceWidth = e.BackendRenderTarget.Width; + /// var surfaceHeight = e.BackendRenderTarget.Height; + /// var canvas = surface.Canvas; + /// // draw on the canvas + /// canvas.Flush (); + /// }; + /// ``` [Category("Appearance")] public event EventHandler PaintSurface; diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLSurfaceView.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLSurfaceView.cs index 1978803e29..ea6de06fdf 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLSurfaceView.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLSurfaceView.cs @@ -7,7 +7,7 @@ namespace SkiaSharp.Views.Android { /// - /// An implementation of that uses the dedicated surface for displaying a hardware-accelerated . + /// An implementation of that uses the dedicated surface for displaying a hardware-accelerated . /// public class SKGLSurfaceView : GLSurfaceView { diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLSurfaceViewRenderer.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLSurfaceViewRenderer.cs index df313fdf21..e3aacee229 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLSurfaceViewRenderer.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLSurfaceViewRenderer.cs @@ -8,7 +8,7 @@ namespace SkiaSharp.Views.Android { /// - /// An abstract implementation of that provides a for drawing. + /// An abstract implementation of that provides a for drawing. /// public abstract class SKGLSurfaceViewRenderer : Java.Lang.Object, GLSurfaceView.IRenderer { diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureView.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureView.cs index 2b09a85b63..873cde0f8f 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureView.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureView.cs @@ -13,7 +13,7 @@ namespace SkiaSharp.Views.Android #endif { /// - /// An implementation of that uses the dedicated surface for displaying a hardware-accelerated . + /// An implementation of that uses the dedicated surface for displaying a hardware-accelerated . /// #if HAS_UNO internal diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureViewRenderer.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureViewRenderer.cs index c7b32b2277..93ac949041 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureViewRenderer.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureViewRenderer.cs @@ -14,7 +14,7 @@ namespace SkiaSharp.Views.Android #endif { /// - /// An abstract implementation of that provides a for drawing. + /// An abstract implementation of that provides a for drawing. /// #if HAS_UNO internal diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKSurfaceView.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKSurfaceView.cs index 43f0259215..db28aad650 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKSurfaceView.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKSurfaceView.cs @@ -6,7 +6,7 @@ namespace SkiaSharp.Views.Android { /// - /// An implementation of that uses the dedicated surface for displaying a hardware-accelerated . + /// An implementation of that uses the dedicated surface for displaying a hardware-accelerated . /// public class SKSurfaceView : SurfaceView, ISurfaceHolderCallback { From 446af2f77d409dca51965ed8720c3e1bb5fad762 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Fri, 5 Sep 2025 17:27:22 +0200 Subject: [PATCH 17/35] methods --- binding/HarfBuzzSharp/Buffer.cs | 4 +- binding/HarfBuzzSharp/DelegateProxies.font.cs | 8 +- .../HarfBuzzSharp/HarfBuzzApi.generated.cs | 2 +- binding/SkiaSharp/Definitions.cs | 4 +- binding/SkiaSharp/DelegateProxies.cs | 2 +- binding/SkiaSharp/GRDefinitions.cs | 4 +- binding/SkiaSharp/MathTypes.cs | 2 +- binding/SkiaSharp/SKBitmap.cs | 6 +- binding/SkiaSharp/SKCanvas.cs | 36 ++--- binding/SkiaSharp/SKCodec.cs | 8 +- binding/SkiaSharp/SKData.cs | 2 +- binding/SkiaSharp/SKDocument.cs | 6 +- binding/SkiaSharp/SKImage.cs | 2 +- binding/SkiaSharp/SKMatrix.cs | 14 +- binding/SkiaSharp/SKMatrix44.cs | 8 +- binding/SkiaSharp/SKPath.cs | 48 +++--- binding/SkiaSharp/SKPathMeasure.cs | 6 +- binding/SkiaSharp/SKSurface.cs | 2 +- binding/SkiaSharp/SKVertices.cs | 2 +- binding/SkiaSharp/SkiaApi.generated.cs | 34 ++-- .../RendererTypes.cs | 1 - .../SKCanvasView.cs | 49 ++++++ .../SkiaSharp.Views.Maui.Controls/SKGLView.cs | 2 +- .../SKImageSource.cs | 100 +++++++++++- .../SkiaSharp.Views.Maui.Core/Extensions.cs | 3 + .../SKPaintGLSurfaceEventArgs.cs | 33 +++- .../SKPaintSurfaceEventArgs.cs | 19 ++- .../SKTouchEventArgs.cs | 151 +++++++++++++++--- .../Platform/Android/GLTextureView.cs | 6 +- 29 files changed, 416 insertions(+), 148 deletions(-) diff --git a/binding/HarfBuzzSharp/Buffer.cs b/binding/HarfBuzzSharp/Buffer.cs index 0291d4d902..5d80a7439e 100644 --- a/binding/HarfBuzzSharp/Buffer.cs +++ b/binding/HarfBuzzSharp/Buffer.cs @@ -20,7 +20,7 @@ internal Buffer (IntPtr handle) } /// - /// Creates a new with default values. + /// Creates a new with default values. /// public Buffer () : this (HarfBuzzApi.hb_buffer_create ()) @@ -35,7 +35,7 @@ public ContentType ContentType { /// /// Get or sets the text flow direction of the buffer. /// - /// No shaping can happen without setting the direction, or invoking . + /// No shaping can happen without setting the direction, or invoking . public Direction Direction { get => HarfBuzzApi.hb_buffer_get_direction (Handle); set => HarfBuzzApi.hb_buffer_set_direction (Handle, value); diff --git a/binding/HarfBuzzSharp/DelegateProxies.font.cs b/binding/HarfBuzzSharp/DelegateProxies.font.cs index b5cee3716f..d98e0bbd17 100644 --- a/binding/HarfBuzzSharp/DelegateProxies.font.cs +++ b/binding/HarfBuzzSharp/DelegateProxies.font.cs @@ -6,10 +6,10 @@ namespace HarfBuzzSharp { /// - /// The delegate that is invoked when or is invoked. + /// The delegate that is invoked when or is invoked. /// /// The font. - /// The additional data passed to when the functions were set. + /// The additional data passed to when the functions were set. /// The font extents. /// Return true if the has extents, otherwise false. public delegate bool FontExtentsDelegate (Font font, object fontData, out FontExtents extents); @@ -21,10 +21,10 @@ namespace HarfBuzzSharp public delegate bool VariationGlyphDelegate (Font font, object fontData, uint unicode, uint variationSelector, out uint glyph); /// - /// The delegate that is invoked when or is invoked. + /// The delegate that is invoked when or is invoked. /// /// The font. - /// The additional data passed to when the functions were set. + /// The additional data passed to when the functions were set. /// The glyph. /// Return the advance amount. public delegate int GlyphAdvanceDelegate (Font font, object fontData, uint glyph); diff --git a/binding/HarfBuzzSharp/HarfBuzzApi.generated.cs b/binding/HarfBuzzSharp/HarfBuzzApi.generated.cs index 99cf684e57..f450f2eef0 100644 --- a/binding/HarfBuzzSharp/HarfBuzzApi.generated.cs +++ b/binding/HarfBuzzSharp/HarfBuzzApi.generated.cs @@ -7301,7 +7301,7 @@ public enum BufferFlags { // hb_buffer_serialize_flags_t /// - /// The various flags that control what glyph information are serialized by . + /// The various flags that control what glyph information are serialized by . /// [Flags] public enum SerializeFlag { diff --git a/binding/SkiaSharp/Definitions.cs b/binding/SkiaSharp/Definitions.cs index 5a9f2d2d43..c0070d4950 100644 --- a/binding/SkiaSharp/Definitions.cs +++ b/binding/SkiaSharp/Definitions.cs @@ -331,7 +331,7 @@ public static SKAlphaType GetAlphaType (this SKColorType colorType, SKAlphaType } /// - /// Additional options to pass to or one of the overloads that accepts a . + /// Additional options to pass to or one of the overloads that accepts a . /// public struct SKCodecOptions : IEquatable { @@ -839,7 +839,7 @@ public readonly override int GetHashCode () } /// - /// High contrast configuration settings for use with . + /// High contrast configuration settings for use with . /// public partial struct SKHighContrastConfig { diff --git a/binding/SkiaSharp/DelegateProxies.cs b/binding/SkiaSharp/DelegateProxies.cs index a743852f1b..6193d1f25b 100644 --- a/binding/SkiaSharp/DelegateProxies.cs +++ b/binding/SkiaSharp/DelegateProxies.cs @@ -22,7 +22,7 @@ namespace SkiaSharp /// The delegate that is used when a instance is about to be released. /// /// The pointer to the byte buffer. - /// The user state passed to . + /// The user state passed to . public delegate void SKDataReleaseDelegate (IntPtr address, object context); /// diff --git a/binding/SkiaSharp/GRDefinitions.cs b/binding/SkiaSharp/GRDefinitions.cs index 687333d5a5..1c4a4f29ae 100644 --- a/binding/SkiaSharp/GRDefinitions.cs +++ b/binding/SkiaSharp/GRDefinitions.cs @@ -9,7 +9,7 @@ namespace SkiaSharp { /// - /// Various flags for the method when using a backend. + /// Various flags for the method when using a backend. /// [Flags] public enum GRGlBackendState : UInt32 @@ -73,7 +73,7 @@ public enum GRGlBackendState : UInt32 } /// - /// Various flags for the method. + /// Various flags for the method. /// [Flags] public enum GRBackendState : UInt32 diff --git a/binding/SkiaSharp/MathTypes.cs b/binding/SkiaSharp/MathTypes.cs index 64544570d6..b44449ec96 100644 --- a/binding/SkiaSharp/MathTypes.cs +++ b/binding/SkiaSharp/MathTypes.cs @@ -8,7 +8,7 @@ namespace SkiaSharp /// /// Represents an ordered pair of floating-point x- and y-coordinates that defines a point in a two-dimensional plane. /// - /// To convert a to a , use or . + /// To convert a to a , use or . public partial struct SKPoint { /// diff --git a/binding/SkiaSharp/SKBitmap.cs b/binding/SkiaSharp/SKBitmap.cs index 011b4fd5eb..1bd54b994c 100644 --- a/binding/SkiaSharp/SKBitmap.cs +++ b/binding/SkiaSharp/SKBitmap.cs @@ -14,7 +14,7 @@ namespace SkiaSharp /// /// The specifies a raster bitmap. /// - /// A bitmap has an integer width and height, and a format (color type), and a pointer to the actual pixels. Bitmaps can be drawn into a , but they are also used to specify the target of a ' drawing operations.A exposes , which lets a caller write its pixels. To retrieve a pointer to the raw image data of the bitmap, call the method, and then call the method to get a pointer to the image data. Once you no longer need to use the raw data pointer, call the method. The raw data is laid out in the format configured at the time that the bitmap was created.(Note: As of SkiaSharp 1.60.0, calls to and are no longer required, and they no longer exist as part of the API.) + /// A bitmap has an integer width and height, and a format (color type), and a pointer to the actual pixels. Bitmaps can be drawn into a , but they are also used to specify the target of a ' drawing operations.A exposes , which lets a caller write its pixels. To retrieve a pointer to the raw image data of the bitmap, call the method, and then call the method to get a pointer to the image data. Once you no longer need to use the raw data pointer, call the method. The raw data is laid out in the format configured at the time that the bitmap was created.(Note: As of SkiaSharp 1.60.0, calls to and are no longer required, and they no longer exist as part of the API.) public unsafe class SKBitmap : SKObject, ISKSkipObjectRegistration { private const string UnsupportedColorTypeMessage = "Setting the ColorTable is only supported for bitmaps with ColorTypes of Index8."; @@ -211,7 +211,7 @@ public IntPtr GetAddress (int x, int y) => /// /// The x-cordinate. /// The y-cordinate. - /// Alpha only color types return black with the appropriate alpha set. The value is undefined for , if the coordinates are out of bounds, if the bitmap does not have any pixels, or has not be locked with . + /// Alpha only color types return black with the appropriate alpha set. The value is undefined for , if the coordinates are out of bounds, if the bitmap does not have any pixels, or has not be locked with . /// In most cases this will require unpremultiplying the color. public SKColor GetPixel (int x, int y) { @@ -240,7 +240,7 @@ public void SetPixel (int x, int y, SKColor color) // Copy /// - /// Returns true if this bitmap's pixels can be converted into the requested color type, such that or could succeed. + /// Returns true if this bitmap's pixels can be converted into the requested color type, such that or could succeed. /// /// The color type to check with. /// Returns true if this bitmap's pixels can be converted into the requested color type. diff --git a/binding/SkiaSharp/SKCanvas.cs b/binding/SkiaSharp/SKCanvas.cs index 8a8001d072..c0b2842d30 100644 --- a/binding/SkiaSharp/SKCanvas.cs +++ b/binding/SkiaSharp/SKCanvas.cs @@ -277,8 +277,8 @@ public bool QuickReject (SKPath path) /// /// Saves the canvas state. /// - /// The value to pass to to balance this save. - /// This call saves the current matrix, clip, and draw filter, and pushes a copy onto a private stack. Subsequent calls to translate, scale, rotate, skew, concatenate or clipping path or drawing filter all operate on this copy. When the balancing call to is made, the previous matrix, clipping, and drawing filters are restored. + /// The value to pass to to balance this save. + /// This call saves the current matrix, clip, and draw filter, and pushes a copy onto a private stack. Subsequent calls to translate, scale, rotate, skew, concatenate or clipping path or drawing filter all operate on this copy. When the balancing call to is made, the previous matrix, clipping, and drawing filters are restored. public int Save () { if (Handle == IntPtr.Zero) @@ -290,8 +290,8 @@ public int Save () /// Saves the canvas state and allocates an offscreen bitmap. /// /// This clipping rectangle hint to limit the size of the offscreen bitmap. - /// This is copied, and is applied to the offscreen when is called. - /// The value to pass to to balance this save. + /// This is copied, and is applied to the offscreen when is called. + /// The value to pass to to balance this save. /// This behaves the same as but in addition it /// allocates an offscreen bitmap. All drawing calls are directed there, and only /// when the balancing call to is made is that @@ -306,9 +306,9 @@ public int SaveLayer (SKRect limit, SKPaint? paint) => /// /// Saves the canvas state and allocates an offscreen bitmap. /// - /// This is copied, and is applied to the offscreen when is called. - /// The value to pass to to balance this save. - /// This behaves the same as but in addition it allocates an offscreen bitmap. All drawing calls are directed there, and only when the balancing call to is made is that offscreen transfered to the canvas (or the previous layer). + /// This is copied, and is applied to the offscreen when is called. + /// The value to pass to to balance this save. + /// This behaves the same as but in addition it allocates an offscreen bitmap. All drawing calls are directed there, and only when the balancing call to is made is that offscreen transfered to the canvas (or the previous layer). public int SaveLayer (SKPaint? paint) => SkiaApi.sk_canvas_save_layer (Handle, null, paint?.Handle ?? IntPtr.Zero); @@ -389,7 +389,7 @@ public void Clear (SKColorF color) => /// /// Restore the canvas state. /// - /// This call balances a previous call to , and is used to remove all modifications to the matrix, clip and draw filter state since the last save call. It is an error to restore more times than was previously saved. + /// This call balances a previous call to , and is used to remove all modifications to the matrix, clip and draw filter state since the last save call. It is an error to restore more times than was previously saved. public void Restore () { SkiaApi.sk_canvas_restore (Handle); @@ -398,8 +398,8 @@ public void Restore () /// /// Efficiently restores the state to a specific level. /// - /// The number of levels to restore from, or -1 to restore all the way back to the initial value. - /// Efficient way to pop any calls to that happened after the save count reached . It is an error for to be greater than . To pop all the way back to the initial matrix/clip context set count to -1. + /// The number of levels to restore from, or -1 to restore all the way back to the initial value. + /// Efficient way to pop any calls to that happened after the save count reached . It is an error for to be greater than . To pop all the way back to the initial matrix/clip context set count to -1. public void RestoreToCount (int count) { SkiaApi.sk_canvas_restore_to_count (Handle, count); @@ -1467,7 +1467,7 @@ public SKData DrawUrlAnnotation (SKRect rect, string value) } /// - /// Annotates the canvas by associating a name with the specified point (see ). + /// Annotates the canvas by associating a name with the specified point (see ). /// /// The location of the destination. /// The data that specifies the name of the destination. @@ -1480,7 +1480,7 @@ public void DrawNamedDestinationAnnotation (SKPoint point, SKData value) } /// - /// Annotates the canvas by associating a name with the specified point (see ). + /// Annotates the canvas by associating a name with the specified point (see ). /// /// The location of the destination. /// The name of the destination. @@ -1494,7 +1494,7 @@ public SKData DrawNamedDestinationAnnotation (SKPoint point, string value) } /// - /// Annotates the canvas by making the specified rectangle link to a named destination (see ). + /// Annotates the canvas by making the specified rectangle link to a named destination (see ). /// /// The bounds of the annotation. /// The data that specifies the name of the link's destination. @@ -1507,7 +1507,7 @@ public void DrawLinkDestinationAnnotation (SKRect rect, SKData value) } /// - /// Annotates the canvas by making the specified rectangle link to a named destination (see ). + /// Annotates the canvas by making the specified rectangle link to a named destination (see ). /// /// The bounds of the annotation. /// The name of the link's destination. @@ -1701,7 +1701,7 @@ public SKMatrix44 TotalMatrix44 { /// /// Gets the number of matrix/clip states on the canvas' private stack. /// - /// This will equal the number of calls minus calls + 1. The save count on a new canvas is 1. + /// This will equal the number of calls minus calls + 1. The save count on a new canvas is 1. public int SaveCount => SkiaApi.sk_canvas_get_save_count (Handle); // DrawVertices @@ -1945,7 +1945,7 @@ public class SKAutoCanvasRestore : IDisposable private readonly int saveCount; /// - /// Creates a canvas restore point, invoking the method. + /// Creates a canvas restore point, invoking the method. /// /// The canvas whose state will be preserved. public SKAutoCanvasRestore (SKCanvas canvas) @@ -1957,7 +1957,7 @@ public SKAutoCanvasRestore (SKCanvas canvas) /// Creates a canvas restore point. /// /// The canvas whose state will be preserved. - /// Whether or not to invoke method at this point. + /// Whether or not to invoke method at this point. public SKAutoCanvasRestore (SKCanvas canvas, bool doSave) { this.canvas = canvas; @@ -1972,7 +1972,7 @@ public SKAutoCanvasRestore (SKCanvas canvas, bool doSave) } /// - /// Disposes the canvas restore point, restoring the state of the canvas (matrix, clip and draw filter) to the state it was when the object was created.This operation will not do anything if you had previously manually called the method. + /// Disposes the canvas restore point, restoring the state of the canvas (matrix, clip and draw filter) to the state it was when the object was created.This operation will not do anything if you had previously manually called the method. /// public void Dispose () { diff --git a/binding/SkiaSharp/SKCodec.cs b/binding/SkiaSharp/SKCodec.cs index 20071b3ec9..ac693b0cde 100644 --- a/binding/SkiaSharp/SKCodec.cs +++ b/binding/SkiaSharp/SKCodec.cs @@ -307,8 +307,8 @@ public SKCodecResult StartIncrementalDecode (SKImageInfo info, IntPtr pixels, in /// Start or continue the incremental decode. /// /// The total number of lines initialized. Only meaningful if this method returns . - /// Returns if all lines requested in have been completely decoded. otherwise. - /// Unlike , this does not do any filling. This is left up to the caller, since they may be skipping lines or continuing the decode later. + /// Returns if all lines requested in have been completely decoded. otherwise. + /// Unlike , this does not do any filling. This is left up to the caller, since they may be skipping lines or continuing the decode later. public SKCodecResult IncrementalDecode (out int rowsDecoded) { fixed (int* r = &rowsDecoded) { @@ -319,8 +319,8 @@ public SKCodecResult IncrementalDecode (out int rowsDecoded) /// /// Start or continue the incremental decode. /// - /// Returns if all lines requested in have been completely decoded. otherwise. - /// Unlike , this does not do any filling. This is left up to the caller, since they may be skipping lines or continuing the decode later. + /// Returns if all lines requested in have been completely decoded. otherwise. + /// Unlike , this does not do any filling. This is left up to the caller, since they may be skipping lines or continuing the decode later. public SKCodecResult IncrementalDecode () => SkiaApi.sk_codec_incremental_decode (Handle, null); diff --git a/binding/SkiaSharp/SKData.cs b/binding/SkiaSharp/SKData.cs index 409ed5aa17..dba4fc31e1 100644 --- a/binding/SkiaSharp/SKData.cs +++ b/binding/SkiaSharp/SKData.cs @@ -11,7 +11,7 @@ namespace SkiaSharp /// /// The holds an immutable data buffer. /// - /// Not only is the data immutable, but the actual pointer that is returned by the property is guaranteed to always be the same for the life of this instance.The method can be used to return a that wraps this and allows for .NET APIs to scan the contents of the as a stream. + /// Not only is the data immutable, but the actual pointer that is returned by the property is guaranteed to always be the same for the life of this instance.The method can be used to return a that wraps this and allows for .NET APIs to scan the contents of the as a stream. public unsafe class SKData : SKObject, ISKNonVirtualReferenceCounted { // We pick a value that is the largest multiple of 4096 that is still smaller than the large object heap threshold (85K). diff --git a/binding/SkiaSharp/SKDocument.cs b/binding/SkiaSharp/SKDocument.cs index 62bab2e40a..d56b547d85 100644 --- a/binding/SkiaSharp/SKDocument.cs +++ b/binding/SkiaSharp/SKDocument.cs @@ -40,7 +40,7 @@ public void Abort () => /// The width of the page. /// The height of the page. /// Returns a canvas for the new page. - /// The document owns this canvas, and it will go out of scope when or is called, or the document is deleted. + /// The document owns this canvas, and it will go out of scope when or is called, or the document is deleted. public SKCanvas BeginPage (float width, float height) => OwnedBy (SKCanvas.GetObject (SkiaApi.sk_document_begin_page (Handle, width, height, null), false), this); @@ -51,12 +51,12 @@ public SKCanvas BeginPage (float width, float height) => /// The height of the page. /// The area for the page contents. /// Returns a canvas for the new page. - /// The document owns this canvas, and it will go out of scope when or is called, or the document is deleted. + /// The document owns this canvas, and it will go out of scope when or is called, or the document is deleted. public SKCanvas BeginPage (float width, float height, SKRect content) => OwnedBy (SKCanvas.GetObject (SkiaApi.sk_document_begin_page (Handle, width, height, &content), false), this); /// - /// Completes the drawing for the current page created by . + /// Completes the drawing for the current page created by . /// public void EndPage () => SkiaApi.sk_document_end_page (Handle); diff --git a/binding/SkiaSharp/SKImage.cs b/binding/SkiaSharp/SKImage.cs index 8dc1d7d332..443a63a50c 100644 --- a/binding/SkiaSharp/SKImage.cs +++ b/binding/SkiaSharp/SKImage.cs @@ -873,7 +873,7 @@ public SKPixmap PeekPixels () /// /// Gets a value indicating whether the image is backed by an image-generator or other source that creates (and caches) its pixels / texture on-demand. /// - /// If this method returns , then will return . + /// If this method returns , then will return . public bool IsLazyGenerated => SkiaApi.sk_image_is_lazy_generated (Handle); diff --git a/binding/SkiaSharp/SKMatrix.cs b/binding/SkiaSharp/SKMatrix.cs index 81c7465a0b..f5eaae4025 100644 --- a/binding/SkiaSharp/SKMatrix.cs +++ b/binding/SkiaSharp/SKMatrix.cs @@ -380,7 +380,7 @@ public readonly SKRect MapRect (SKRect source) /// /// The point to map. /// Returns the mapped point. - /// Mapping points uses all components of the matrix. Use to ignore the translation. + /// Mapping points uses all components of the matrix. Use to ignore the translation. public readonly SKPoint MapPoint (SKPoint point) => MapPoint (point.X, point.Y); @@ -390,7 +390,7 @@ public readonly SKPoint MapPoint (SKPoint point) => /// The x-coordinate. /// The y-coordinate. /// Returns the mapped point. - /// Mapping points uses all components of the matrix. Use to ignore the translation. + /// Mapping points uses all components of the matrix. Use to ignore the translation. public readonly SKPoint MapPoint (float x, float y) { SKPoint result; @@ -417,7 +417,7 @@ public readonly void MapPoints (Span result, ReadOnlySpan poin /// /// The array where the mapped results will be stored (needs to have the same number of elements of the array). /// The array of points to be mapped. - /// Mapping points uses all components of the matrix. Use to ignore the translation. + /// Mapping points uses all components of the matrix. Use to ignore the translation. public readonly void MapPoints (SKPoint[] result, SKPoint[] points) { if (result == null) @@ -439,7 +439,7 @@ public readonly void MapPoints (SKPoint[] result, SKPoint[] points) /// /// The array of points to be mapped. /// Returns the new array allocated with the mapped results. - /// Mapping points uses all components of the matrix. Use to ignore the translation. + /// Mapping points uses all components of the matrix. Use to ignore the translation. public readonly SKPoint[] MapPoints (SKPoint[] points) { if (points == null) @@ -462,7 +462,7 @@ public readonly SKPoint MapVector (SKPoint vector) => /// The x-component of the vector. /// The y-component of the vector. /// Returns the mapped point. - /// Mapping vectors ignores the translation component in the matrix. Use to take the translation into consideration. + /// Mapping vectors ignores the translation component in the matrix. Use to take the translation into consideration. public readonly SKPoint MapVector (float x, float y) { SKPoint result; @@ -489,7 +489,7 @@ public readonly void MapVectors (Span result, ReadOnlySpan vec /// /// The array where the mapped results will be stored (needs to have the same number of elements of the array). /// The array of vectors to map. - /// Mapping vectors ignores the translation component in the matrix. Use to take the translation into consideration. + /// Mapping vectors ignores the translation component in the matrix. Use to take the translation into consideration. public readonly void MapVectors (SKPoint[] result, SKPoint[] vectors) { if (result == null) @@ -511,7 +511,7 @@ public readonly void MapVectors (SKPoint[] result, SKPoint[] vectors) /// /// The array of vectors to map. /// Returns the new array allocated with the mapped results. - /// Mapping vectors ignores the translation component in the matrix. Use to take the translation into consideration. + /// Mapping vectors ignores the translation component in the matrix. Use to take the translation into consideration. public readonly SKPoint[] MapVectors (SKPoint[] vectors) { if (vectors == null) diff --git a/binding/SkiaSharp/SKMatrix44.cs b/binding/SkiaSharp/SKMatrix44.cs index f8108d26e8..247302817a 100644 --- a/binding/SkiaSharp/SKMatrix44.cs +++ b/binding/SkiaSharp/SKMatrix44.cs @@ -76,7 +76,7 @@ public SKMatrix44 ( /// Creates a new identity matrix. /// /// Returns the new identity matrix. - /// This is equivalent to creating an uninitialized matrix, and invoking . + /// This is equivalent to creating an uninitialized matrix, and invoking . public static SKMatrix44 CreateIdentity () => Identity; /// @@ -92,7 +92,7 @@ public static SKMatrix44 CreateTranslation (float x, float y, float z) => /// The amount, along the y-axis, to scale. /// The amount, along the z-axis, to scale. /// Returns the new scale matrix. - /// This is equivalent to creating an uninitialized matrix and passing the values to . + /// This is equivalent to creating an uninitialized matrix and passing the values to . public static SKMatrix44 CreateScale (float x, float y, float z) => Matrix4x4.CreateScale (x, y, z); @@ -109,7 +109,7 @@ public static SKMatrix44 CreateScale (float x, float y, float z, float pivotX, f /// The z-axis to rotate around. /// The amount, in radians, to rotate by. /// Returns the new rotation matrix. - /// This is equivalent to creating an uninitialized matrix and passing the values to . + /// This is equivalent to creating an uninitialized matrix and passing the values to . public static SKMatrix44 CreateRotation (float x, float y, float z, float radians) => Matrix4x4.CreateFromAxisAngle (new Vector3 (x, y, z), radians); @@ -141,7 +141,7 @@ public static SKMatrix44 CreateRotation (float x, float y, float z, float radian /// The z-axis to rotate around. /// The amount, in degrees, to rotate by. /// Returns the new rotation matrix. - /// This is equivalent to creating an uninitialized matrix and passing the values to . + /// This is equivalent to creating an uninitialized matrix and passing the values to . public static SKMatrix44 CreateRotationDegrees (float x, float y, float z, float degrees) => Matrix4x4.CreateFromAxisAngle (new Vector3 (x, y, z), degrees * DegreesToRadians); diff --git a/binding/SkiaSharp/SKPath.cs b/binding/SkiaSharp/SKPath.cs index f25cf3d1a3..ab67de1303 100644 --- a/binding/SkiaSharp/SKPath.cs +++ b/binding/SkiaSharp/SKPath.cs @@ -100,25 +100,25 @@ public SKPathFillType FillType { /// /// Gets a value indicating whether the path is a single oval or circle. /// - /// See also . + /// See also . public bool IsOval => SkiaApi.sk_path_is_oval (Handle, null); /// /// Gets a value indicating whether the path is a single, round rectangle. /// - /// See also . + /// See also . public bool IsRoundRect => SkiaApi.sk_path_is_rrect (Handle, IntPtr.Zero); /// /// Gets a value indicating whether the path is a single, straight line. /// - /// See also . + /// See also . public bool IsLine => SkiaApi.sk_path_is_line (Handle, null); /// /// Gets a value indicating whether the path is a single rectangle. /// - /// See also and . + /// See also and . public bool IsRect => SkiaApi.sk_path_is_rect (Handle, null, null, null); /// @@ -354,14 +354,14 @@ public void MoveTo (float x, float y) => SkiaApi.sk_path_move_to (Handle, x, y); /// - /// Same as but the coordinates are considered relative to the last point on this contour. + /// Same as but the coordinates are considered relative to the last point on this contour. /// /// The amount to add to the coordinates of the last point on this contour, to specify the start of a new contour. public void RMoveTo (SKPoint point) => SkiaApi.sk_path_rmove_to (Handle, point.X, point.Y); /// - /// Same as but the coordinates are considered relative to the last point on this contour. + /// Same as but the coordinates are considered relative to the last point on this contour. /// /// The amount to add to the x-coordinate of the last point on this contour, to specify the start of a new contour. /// The amount to add to the x-coordinate of the last point on this contour, to specify the start of a new contour. @@ -388,7 +388,7 @@ public void LineTo (float x, float y) => SkiaApi.sk_path_line_to (Handle, x, y); /// - /// Same as but the coordinates are considered relative to the last point on this contour. + /// Same as but the coordinates are considered relative to the last point on this contour. /// /// The amount to add to the coordinates of the last point on this contour, to specify the end of a line. /// If no call has been made for this contour, @@ -397,7 +397,7 @@ public void RLineTo (SKPoint point) => SkiaApi.sk_path_rline_to (Handle, point.X, point.Y); /// - /// Same as but the coordinates are considered relative to the last point on this contour. + /// Same as but the coordinates are considered relative to the last point on this contour. /// /// The amount to add to the x-coordinate of the last point on this contour, to specify the end of a line. /// The amount to add to the y-coordinate of the last point on this contour, to specify the end of a line. @@ -433,7 +433,7 @@ public void QuadTo (float x0, float y0, float x1, float y1) => SkiaApi.sk_path_quad_to (Handle, x0, y0, x1, y1); /// - /// Same as but the coordinates are considered relative to the last point on this contour. + /// Same as but the coordinates are considered relative to the last point on this contour. /// /// The amount to add to the coordinates of the last point on this contour, to specify the control point on a quadratic curve. /// The amount to add to the coordinates of the last point on this contour, to specify end point on a quadratic curve. @@ -443,7 +443,7 @@ public void RQuadTo (SKPoint point0, SKPoint point1) => SkiaApi.sk_path_rquad_to (Handle, point0.X, point0.Y, point1.X, point1.Y); /// - /// Same as but the coordinates are considered relative to the last point on this contour. + /// Same as but the coordinates are considered relative to the last point on this contour. /// /// The amount to add to the x-coordinate of the last point on this contour, to specify the control point on a quadratic curve. /// The amount to add to the y-coordinate of the last point on this contour, to specify the control point on a quadratic curve. @@ -479,7 +479,7 @@ public void ConicTo (float x0, float y0, float x1, float y1, float w) => SkiaApi.sk_path_conic_to (Handle, x0, y0, x1, y1, w); /// - /// Same as but the coordinates are considered relative to the last point on this contour. + /// Same as but the coordinates are considered relative to the last point on this contour. /// /// The amount to add to the coordinates of the last point on this contour, to specify the control point of the conic curve. /// The amount to add to the coordinates of the last point on this contour, to specify the end point of the conic curve. @@ -490,7 +490,7 @@ public void RConicTo (SKPoint point0, SKPoint point1, float w) => SkiaApi.sk_path_rconic_to (Handle, point0.X, point0.Y, point1.X, point1.Y, w); /// - /// Same as but the coordinates are considered relative to the last point on this contour. + /// Same as but the coordinates are considered relative to the last point on this contour. /// /// The amount to add to the x-coordinate of the last point on this contour, to specify the control point of the conic curve. /// The amount to add to the y-coordinate of the last point on this contour, to specify the control point of the conic curve. @@ -528,7 +528,7 @@ public void CubicTo (float x0, float y0, float x1, float y1, float x2, float y2) SkiaApi.sk_path_cubic_to (Handle, x0, y0, x1, y1, x2, y2); /// - /// Same as but the coordinates are considered relative to the last point on this contour. + /// Same as but the coordinates are considered relative to the last point on this contour. /// /// The amount to add to the coordinates of the last point on this contour, to specify the 1st control point on a cubic curve. /// The amount to add to the coordinates of the last point on this contour, to specify the 2nd control point on a cubic curve. @@ -539,7 +539,7 @@ public void RCubicTo (SKPoint point0, SKPoint point1, SKPoint point2) => SkiaApi.sk_path_rcubic_to (Handle, point0.X, point0.Y, point1.X, point1.Y, point2.X, point2.Y); /// - /// Same as but the coordinates are considered relative to the last point on this contour. + /// Same as but the coordinates are considered relative to the last point on this contour. /// /// The amount to add to the x-coordinate of the last point on this contour, to specify the 1st control point on a cubic curve. /// The amount to add to the y-coordinate of the last point on this contour, to specify the 1st control point on a cubic curve. @@ -613,7 +613,7 @@ public void ArcTo (float x1, float y1, float x2, float y2, float radius) => SkiaApi.sk_path_arc_to_with_points (Handle, x1, y1, x2, y2, radius); /// - /// The same as , but the coordinates are considered relative to the last point on this contour. + /// The same as , but the coordinates are considered relative to the last point on this contour. /// /// The radius. /// The angle in degrees relative to the x-axis. @@ -624,7 +624,7 @@ public void RArcTo (SKPoint r, float xAxisRotate, SKPathArcSize largeArc, SKPath SkiaApi.sk_path_rarc_to (Handle, r.X, r.Y, xAxisRotate, largeArc, sweep, xy.X, xy.Y); /// - /// The same as , but the coordinates are considered relative to the last point on this contour. + /// The same as , but the coordinates are considered relative to the last point on this contour. /// /// The radius in the x-direction. /// The radius in the y-direction. @@ -670,7 +670,7 @@ public void AddRect (SKRect rect, SKPathDirection direction = SKPathDirection.Cl /// /// The rectangle to add as a closed contour to the path /// The direction to wind the rectangle's contour. - /// Initial point of the contour (initial ), expressed as a corner index, starting in the upper-left position, clock-wise. Must be in the range of 0..3. + /// Initial point of the contour (initial ), expressed as a corner index, starting in the upper-left position, clock-wise. Must be in the range of 0..3. /// Add a closed rectangle contour to the path with an initial point of the contour (startIndex) expressed as a corner index. public void AddRect (SKRect rect, SKPathDirection direction, uint startIndex) { @@ -697,7 +697,7 @@ public void AddRoundRect (SKRoundRect rect, SKPathDirection direction = SKPathDi /// /// The rounded rectangle. /// The direction to wind the rectangle's contour. - /// Initial point of the contour (initial ), expressed as an index of the radii minor/major points, ordered clock-wise. Must be in the range of 0..7. + /// Initial point of the contour (initial ), expressed as an index of the radii minor/major points, ordered clock-wise. Must be in the range of 0..7. public void AddRoundRect (SKRoundRect rect, SKPathDirection direction, uint startIndex) { if (rect == null) @@ -909,7 +909,7 @@ public RawIterator CreateRawIterator () => /// /// The second operand. /// The logical operator. - /// The path that will be used to set the result to. The current path will be . + /// The path that will be used to set the result to. The current path will be . /// Returns true if the operation was successful, otherwise false. public bool Op (SKPath other, SKPathOp op, SKPath result) { @@ -969,7 +969,7 @@ public SKPath Simplify () } /// - /// Gets the "tight" bounds of the path. Unlike , the control points of curves are excluded. + /// Gets the "tight" bounds of the path. Unlike , the control points of curves are excluded. /// /// The tight bounds of the path. /// Returns true if the bounds could be computed, otherwise false. @@ -1133,10 +1133,10 @@ public float ConicWeight () => SkiaApi.sk_path_iter_conic_weight (Handle); /// - /// Returns a value indicating whether the last call to returns a line which was the result of a command. + /// Returns a value indicating whether the last call to returns a line which was the result of a command. /// - /// Returns true if the last call to returned a line which was the result of a command. - /// If the call to returned a different value than , the result is undefined. + /// Returns true if the last call to returned a line which was the result of a command. + /// If the call to returned a different value than , the result is undefined. public bool IsCloseLine () => SkiaApi.sk_path_iter_is_close_line (Handle) != 0; @@ -1193,7 +1193,7 @@ public SKPathVerb Next (Span points) /// /// Returns the weight for the current conic. /// - /// Only valid if the current segment returned by was . + /// Only valid if the current segment returned by was . public float ConicWeight () => SkiaApi.sk_path_rawiter_conic_weight (Handle); diff --git a/binding/SkiaSharp/SKPathMeasure.cs b/binding/SkiaSharp/SKPathMeasure.cs index 1c14364eba..3e4980a68b 100644 --- a/binding/SkiaSharp/SKPathMeasure.cs +++ b/binding/SkiaSharp/SKPathMeasure.cs @@ -31,7 +31,7 @@ public SKPathMeasure () /// The path to use, or null. /// Controls whether or not the path is treated as closed. /// Controls the precision of the measure. Values greater 1 increase the precision (and possibly slow down the computation). - /// The path must remain valid for the lifetime of the measure object, or until is called with a different path (or null), since the measure object keeps a reference to the path object (does not copy its data). + /// The path must remain valid for the lifetime of the measure object, or until is called with a different path (or null), since the measure object keeps a reference to the path object (does not copy its data). public SKPathMeasure (SKPath path, bool forceClosed = false, float resScale = 1) : this (IntPtr.Zero, true) { @@ -84,7 +84,7 @@ public void SetPath (SKPath path) => /// /// The path to use, or null. /// Controls whether or not the path is treated as closed. - /// The path must remain valid for the lifetime of the measure object, or until is called with a different path (or null), since the measure object keeps a reference to the path object (does not copy its data). + /// The path must remain valid for the lifetime of the measure object, or until is called with a different path (or null), since the measure object keeps a reference to the path object (does not copy its data). public void SetPath (SKPath path, bool forceClosed) { SkiaApi.sk_pathmeasure_set_path (Handle, path == null ? IntPtr.Zero : path.Handle, forceClosed); @@ -190,7 +190,7 @@ public bool GetMatrix (float distance, out SKMatrix matrix, SKPathMeasureMatrixF /// The starting offset of the segment. /// The end offset of the segment. /// The path to hold the new segment. - /// If true, begin the path segment with a . + /// If true, begin the path segment with a . /// Returns false if the segment is zero-length, otherwise returns true. /// The start and stop parameters are pinned to 0... public bool GetSegment (float start, float stop, SKPath dst, bool startWithMoveTo) diff --git a/binding/SkiaSharp/SKSurface.cs b/binding/SkiaSharp/SKSurface.cs index b248618903..7cb4aefce1 100644 --- a/binding/SkiaSharp/SKSurface.cs +++ b/binding/SkiaSharp/SKSurface.cs @@ -660,7 +660,7 @@ public static SKSurface Create (GRRecordingContext context, MetalKit.MTKView vie /// The desired width for the surface. /// The desired height for the surface. /// Returns the new surface if it could be created, otherwise . - /// Drawing to the returned from has no effect. Calling on the returned returns . + /// Drawing to the returned from has no effect. Calling on the returned returns . public static SKSurface CreateNull (int width, int height) => GetObject (SkiaApi.sk_surface_new_null (width, height)); diff --git a/binding/SkiaSharp/SKVertices.cs b/binding/SkiaSharp/SKVertices.cs index 66e3e17253..bcc5a3f63e 100644 --- a/binding/SkiaSharp/SKVertices.cs +++ b/binding/SkiaSharp/SKVertices.cs @@ -9,7 +9,7 @@ namespace SkiaSharp { /// - /// Represents an immutable set of vertex data that can be used with . + /// Represents an immutable set of vertex data that can be used with . /// public unsafe class SKVertices : SKObject, ISKNonVirtualReferenceCounted, ISKSkipObjectRegistration { diff --git a/binding/SkiaSharp/SkiaApi.generated.cs b/binding/SkiaSharp/SkiaApi.generated.cs index f4551784aa..9f7a336b76 100644 --- a/binding/SkiaSharp/SkiaApi.generated.cs +++ b/binding/SkiaSharp/SkiaApi.generated.cs @@ -19125,7 +19125,7 @@ public readonly override int GetHashCode () // sk_highcontrastconfig_t /// - /// High contrast configuration settings for use with . + /// High contrast configuration settings for use with . /// [StructLayout (LayoutKind.Sequential)] public unsafe partial struct SKHighContrastConfig : IEquatable { @@ -20241,7 +20241,7 @@ public readonly override int GetHashCode () /// /// Represents an ordered pair of floating-point x- and y-coordinates that defines a point in a two-dimensional plane. /// - /// To convert a to a , use or . + /// To convert a to a , use or . [StructLayout (LayoutKind.Sequential)] public unsafe partial struct SKPoint : IEquatable { // public float x @@ -20939,7 +20939,7 @@ public enum SKAlphaType { // sk_bitmap_allocflags_t /// - /// Flags to use with . + /// Flags to use with . /// [Flags] public enum SKBitmapAllocFlags { @@ -21120,7 +21120,7 @@ public enum SKBlendMode { // sk_blurstyle_t /// - /// Blur types for the method and its overloads. + /// Blur types for the method and its overloads. /// public enum SKBlurStyle { // NORMAL_SK_BLUR_STYLE = 0 @@ -21176,7 +21176,7 @@ public enum SKClipOperation { // sk_codec_result_t /// - /// Used to describe the result of a call to or one of the overloads that accepts a . + /// Used to describe the result of a call to or one of the overloads that accepts a . /// /// Result is the union of possible results from subclasses. public enum SKCodecResult { @@ -21252,7 +21252,7 @@ public enum SKCodecScanlineOrder { // sk_codec_zero_initialized_t /// - /// Whether or not the memory passed to (or one of the overloads that accepts a ) is zero initialized + /// Whether or not the memory passed to (or one of the overloads that accepts a ) is zero initialized /// public enum SKZeroInitialized { // YES_SK_CODEC_ZERO_INITIALIZED = 0 @@ -21826,36 +21826,36 @@ public enum SKPathSegmentMask { /// /// Verbs contained in an . /// - /// In the description below, the number of points returned represents the number of valid entries on the return array of points that is passed to or . + /// In the description below, the number of points returned represents the number of valid entries on the return array of points that is passed to or . public enum SKPathVerb { // MOVE_SK_PATH_VERB = 0 /// - /// Move command, a call to or will return a single point. + /// Move command, a call to or will return a single point. /// Move = 0, // LINE_SK_PATH_VERB = 1 /// - /// Line path, a call to or will return two points. + /// Line path, a call to or will return two points. /// Line = 1, // QUAD_SK_PATH_VERB = 2 /// - /// Quad command, a call to or will return three points. + /// Quad command, a call to or will return three points. /// Quad = 2, // CONIC_SK_PATH_VERB = 3 /// - /// Conic path, a call to or will return three points, plus the point. + /// Conic path, a call to or will return three points, plus the point. /// Conic = 3, // CUBIC_SK_PATH_VERB = 4 /// - /// Cubic path, a call to or will return four points. + /// Cubic path, a call to or will return four points. /// Cubic = 4, // CLOSE_SK_PATH_VERB = 5 /// - /// Close path, a call to or will return one point (contour's point). + /// Close path, a call to or will return one point (contour's point). /// Close = 5, // DONE_SK_PATH_VERB = 6 @@ -21869,7 +21869,7 @@ public enum SKPathVerb { /// /// Flags to indicate how to compute a matrix from a position along a path. /// - /// This is used with . + /// This is used with . [Flags] public enum SKPathMeasureMatrixFlags { // GET_POSITION_SK_PATHMEASURE_MATRIXFLAGS = 0x01 @@ -21891,7 +21891,7 @@ public enum SKPathMeasureMatrixFlags { // sk_pathop_t /// - /// The logical operations that can be performed when combining two paths using . + /// The logical operations that can be performed when combining two paths using . /// public enum SKPathOp { // DIFFERENCE_SK_PATHOP = 0 @@ -21999,7 +21999,7 @@ public enum SKPngEncoderFilterFlags { // sk_point_mode_t /// - /// Possible values to interpret the incoming array of points for the method. + /// Possible values to interpret the incoming array of points for the method. /// public enum SKPointMode { // POINTS_SK_POINT_MODE = 0 @@ -22312,7 +22312,7 @@ public enum SKTextEncoding { // sk_vertices_vertex_mode_t /// - /// Various mode with which to interpret triangles when invoking . + /// Various mode with which to interpret triangles when invoking . /// public enum SKVertexMode { // TRIANGLES_SK_VERTICES_VERTEX_MODE = 0 diff --git a/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Controls/RendererTypes.cs b/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Controls/RendererTypes.cs index 4c377739fd..f8b1d3876a 100644 --- a/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Controls/RendererTypes.cs +++ b/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Controls/RendererTypes.cs @@ -5,7 +5,6 @@ namespace SkiaSharp.Views.Maui.Controls { - /// public class GetPropertyValueEventArgs : EventArgs { public T Value { get; set; } diff --git a/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Controls/SKCanvasView.cs b/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Controls/SKCanvasView.cs index 9f4cb6172a..bafc35092a 100644 --- a/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Controls/SKCanvasView.cs +++ b/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Controls/SKCanvasView.cs @@ -8,38 +8,87 @@ namespace SkiaSharp.Views.Maui.Controls { + /// + /// A view that can be drawn on using SkiaSharp drawing commands. + /// public partial class SKCanvasView : View, ISKCanvasView { + /// + /// Implements the property, and allows the class to bind it to properties on other objects at run time. + /// public static readonly BindableProperty IgnorePixelScalingProperty = BindableProperty.Create(nameof(IgnorePixelScaling), typeof(bool), typeof(SKCanvasView), false); + /// + /// Implements the property, and allows the class to bind it to properties on other objects at run time. + /// public static readonly BindableProperty EnableTouchEventsProperty = BindableProperty.Create(nameof(EnableTouchEvents), typeof(bool), typeof(SKCanvasView), false); private SKSizeI lastCanvasSize; + /// + /// Creates a new instance of the view. + /// public SKCanvasView() { } + /// + /// Occurs when the the canvas needs to be redrawn. + /// + /// There are two ways to draw on this surface: by overriding the + /// + /// method, or by attaching a handler to the + /// + /// event. + /// ## Examples + /// ```csharp + /// myView.PaintSurface += (sender, e) => { + /// var surface = e.Surface; + /// var surfaceWidth = e.Info.Width; + /// var surfaceHeight = e.Info.Height; + /// var canvas = surface.Canvas; + /// // draw on the canvas + /// canvas.Flush (); + /// }; + /// ``` public event EventHandler? PaintSurface; + /// + /// Occurs when the the canvas received a touch event. + /// public event EventHandler? Touch; + /// + /// Gets the current canvas size. + /// + /// The canvas size may be different to the view size as a result of the current device's pixel density. public SKSize CanvasSize => lastCanvasSize; + /// + /// Gets or sets a value indicating whether the drawing canvas should be resized on high resolution displays. + /// + /// By default, when false, the canvas is resized to 1 canvas pixel per display pixel. When true, the canvas is resized to device independent pixels, and then stretched to fill the view. Although performance is improved and all objects are the same size on different display densities, blurring and pixelation may occur. public bool IgnorePixelScaling { get => (bool)GetValue(IgnorePixelScalingProperty); set => SetValue(IgnorePixelScalingProperty, value); } + /// + /// Gets or sets a value indicating whether or not to enable touch events for this view. + /// public bool EnableTouchEvents { get => (bool)GetValue(EnableTouchEventsProperty); set => SetValue(EnableTouchEventsProperty, value); } + /// + /// Informs the canvas that it needs to redraw itself. + /// + /// This needs to be called from the main thread. public void InvalidateSurface() { Handler?.Invoke(nameof(ISKCanvasView.InvalidateSurface)); diff --git a/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Controls/SKGLView.cs b/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Controls/SKGLView.cs index c6ece74ee5..b05ed56dc2 100644 --- a/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Controls/SKGLView.cs +++ b/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Controls/SKGLView.cs @@ -71,7 +71,7 @@ public bool EnableTouchEvents /// Occurs when the surface needs to be redrawn. /// /// There are two ways to draw on this surface: by overriding the - /// + /// /// method, or by attaching a handler to the /// /// event. diff --git a/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Controls/SKImageSource.cs b/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Controls/SKImageSource.cs index 7249d28141..9e1f1db1b0 100644 --- a/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Controls/SKImageSource.cs +++ b/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Controls/SKImageSource.cs @@ -5,22 +5,39 @@ namespace SkiaSharp.Views.Maui.Controls { + /// + /// Represents a image source. + /// public sealed partial class SKImageImageSource : ImageSource, ISKImageImageSource { + /// + /// Identifies the dependency property. + /// public static readonly BindableProperty ImageProperty = BindableProperty.Create(nameof(Image), typeof(SKImage), typeof(SKImageImageSource), default(SKImage)); + /// + /// Gets or sets the underlying of the image source. + /// public SKImage Image { get { return (SKImage)GetValue(ImageProperty); } set { SetValue(ImageProperty, value); } } + /// + /// Request a cancel of the ImageSource loading. + /// + /// An awaitable Task with a result indicating if the Task was successfully cancelled. public override Task Cancel() { return Task.FromResult(false); } - /// + /// + /// Allows implicit casting from a . + /// + /// The image to use when creating the ImageSource. + /// Returns a new instance of with the property set to the image. public static implicit operator SKImageImageSource(SKImage image) { return new SKImageImageSource @@ -29,7 +46,11 @@ public static implicit operator SKImageImageSource(SKImage image) }; } - /// + /// + /// Allows implicit casting to a . + /// + /// The ImageSource to retrieve the image from. + /// Returns the underlying of the ImageSource. public static implicit operator SKImage(SKImageImageSource source) { return source?.Image; @@ -43,22 +64,39 @@ protected override void OnPropertyChanged(string propertyName = null) } } + /// + /// Represents a image source. + /// public sealed partial class SKBitmapImageSource : ImageSource, ISKBitmapImageSource { + /// + /// Identifies the dependency property. + /// public static readonly BindableProperty BitmapProperty = BindableProperty.Create(nameof(Bitmap), typeof(SKBitmap), typeof(SKBitmapImageSource), default(SKBitmap)); + /// + /// Gets or sets the underlying of the image source. + /// public SKBitmap Bitmap { get { return (SKBitmap)GetValue(BitmapProperty); } set { SetValue(BitmapProperty, value); } } + /// + /// Request a cancel of the ImageSource loading. + /// + /// An awaitable Task with a result indicating if the Task was successfully cancelled. public override Task Cancel() { return Task.FromResult(false); } - /// + /// + /// Allows implicit casting from a . + /// + /// The bitmap to use when creating the ImageSource. + /// Returns a new instance of with the property set to the bitmap. public static implicit operator SKBitmapImageSource(SKBitmap bitmap) { return new SKBitmapImageSource @@ -67,7 +105,11 @@ public static implicit operator SKBitmapImageSource(SKBitmap bitmap) }; } - /// + /// + /// Allows implicit casting to a . + /// + /// The ImageSource to retrieve the bitmap from. + /// Returns the underlying of the ImageSource. public static implicit operator SKBitmap(SKBitmapImageSource source) { return source?.Bitmap; @@ -81,22 +123,39 @@ protected override void OnPropertyChanged(string propertyName = null) } } + /// + /// Represents a image source. + /// public sealed partial class SKPixmapImageSource : ImageSource, ISKPixmapImageSource { + /// + /// Identifies the dependency property. + /// public static readonly BindableProperty PixmapProperty = BindableProperty.Create(nameof(Pixmap), typeof(SKPixmap), typeof(SKPixmapImageSource), default(SKPixmap)); + /// + /// Gets or sets the underlying of the image source. + /// public SKPixmap Pixmap { get { return (SKPixmap)GetValue(PixmapProperty); } set { SetValue(PixmapProperty, value); } } + /// + /// Request a cancel of the ImageSource loading. + /// + /// An awaitable Task with a result indicating if the Task was successfully cancelled. public override Task Cancel() { return Task.FromResult(false); } - /// + /// + /// Allows implicit casting from a . + /// + /// The pixmap to use when creating the ImageSource. + /// Returns a new instance of with the property set to the bitmap. public static implicit operator SKPixmapImageSource(SKPixmap pixmap) { return new SKPixmapImageSource @@ -105,7 +164,11 @@ public static implicit operator SKPixmapImageSource(SKPixmap pixmap) }; } - /// + /// + /// Allows implicit casting to a . + /// + /// The ImageSource to retrieve the pixmap from. + /// Returns the underlying of the ImageSource. public static implicit operator SKPixmap(SKPixmapImageSource source) { return source?.Pixmap; @@ -119,30 +182,53 @@ protected override void OnPropertyChanged(string propertyName = null) } } + /// + /// Represents a image source. + /// public sealed partial class SKPictureImageSource : ImageSource, ISKPictureImageSource { + /// + /// Identifies the dependency property. + /// public static readonly BindableProperty PictureProperty = BindableProperty.Create(nameof(Picture), typeof(SKPicture), typeof(SKPictureImageSource), default(SKPicture)); + /// + /// Identifies the dependency property. + /// public static readonly BindableProperty DimensionsProperty = BindableProperty.Create(nameof(Dimensions), typeof(SKSizeI), typeof(SKPictureImageSource), default(SKSizeI)); + /// + /// Gets or sets the underlying of the image source. + /// public SKPicture Picture { get { return (SKPicture)GetValue(PictureProperty); } set { SetValue(PictureProperty, value); } } + /// + /// Gets or sets the dimensions of the underlying picture. + /// public SKSizeI Dimensions { get { return (SKSizeI)GetValue(DimensionsProperty); } set { SetValue(DimensionsProperty, value); } } + /// + /// Request a cancel of the ImageSource loading. + /// + /// An awaitable Task with a result indicating if the Task was successfully cancelled. public override Task Cancel() { return Task.FromResult(false); } - /// + /// + /// Allows explicit casting to a . + /// + /// The ImageSource to retrieve the picture from. + /// Returns the underlying of the ImageSource. public static explicit operator SKPicture(SKPictureImageSource source) { return source?.Picture; diff --git a/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/Extensions.cs b/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/Extensions.cs index 9fbdab8133..72a1940709 100644 --- a/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/Extensions.cs +++ b/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/Extensions.cs @@ -2,6 +2,9 @@ namespace SkiaSharp.Views.Maui { + /// + /// Various extension methods to convert between SkiaSharp types and Microsoft.Maui types. + /// public static class Extensions { // Point diff --git a/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/SKPaintGLSurfaceEventArgs.cs b/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/SKPaintGLSurfaceEventArgs.cs index 160227c550..424d8b2be8 100644 --- a/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/SKPaintGLSurfaceEventArgs.cs +++ b/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/SKPaintGLSurfaceEventArgs.cs @@ -5,19 +5,28 @@ namespace SkiaSharp.Views.Maui { + /// + /// Provides data for the event. + /// public class SKPaintGLSurfaceEventArgs : EventArgs { - /// - /// + /// + /// Creates a new instance of the event arguments. + /// + /// The surface that is being drawn on. + /// The render target that is currently being drawn. public SKPaintGLSurfaceEventArgs(SKSurface surface, GRBackendRenderTarget renderTarget) : this(surface, renderTarget, GRSurfaceOrigin.BottomLeft, SKColorType.Rgba8888) { } - /// - /// - /// - /// + /// + /// Creates a new instance of the event arguments. + /// + /// The surface that is being drawn on. + /// The render target that is currently being drawn. + /// The surface origin of the render target. + /// The color type of the render target. public SKPaintGLSurfaceEventArgs(SKSurface surface, GRBackendRenderTarget renderTarget, GRSurfaceOrigin origin, SKColorType colorType) { Surface = surface; @@ -43,12 +52,24 @@ public SKPaintGLSurfaceEventArgs(SKSurface surface, GRBackendRenderTarget render RawInfo = rawInfo; } + /// + /// Gets the surface that is currently being drawn on. + /// public SKSurface Surface { get; private set; } + /// + /// Gets the render target that is currently being drawn. + /// public GRBackendRenderTarget BackendRenderTarget { get; private set; } + /// + /// Gets the color type of the render target. + /// public SKColorType ColorType { get; private set; } + /// + /// Gets the surface origin of the render target. + /// public GRSurfaceOrigin Origin { get; private set; } public SKImageInfo Info { get; private set; } diff --git a/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/SKPaintSurfaceEventArgs.cs b/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/SKPaintSurfaceEventArgs.cs index d1789b0a69..2f2e71704b 100644 --- a/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/SKPaintSurfaceEventArgs.cs +++ b/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/SKPaintSurfaceEventArgs.cs @@ -4,18 +4,21 @@ namespace SkiaSharp.Views.Maui { + /// + /// Provides data for the event. + /// public class SKPaintSurfaceEventArgs : EventArgs { - /// - /// + /// + /// Creates a new instance of the event arguments. + /// + /// The surface that is being drawn on. + /// The information about the surface. public SKPaintSurfaceEventArgs(SKSurface surface, SKImageInfo info) : this(surface, info, info) { } - /// - /// - /// public SKPaintSurfaceEventArgs(SKSurface surface, SKImageInfo info, SKImageInfo rawInfo) { Surface = surface; @@ -23,8 +26,14 @@ public SKPaintSurfaceEventArgs(SKSurface surface, SKImageInfo info, SKImageInfo RawInfo = rawInfo; } + /// + /// Gets the surface that is currently being drawn on. + /// public SKSurface Surface { get; } + /// + /// Gets the information about the surface that is currently being drawn. + /// public SKImageInfo Info { get; } public SKImageInfo RawInfo { get; } diff --git a/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/SKTouchEventArgs.cs b/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/SKTouchEventArgs.cs index a6e5e4c2ed..b82ffd0511 100644 --- a/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/SKTouchEventArgs.cs +++ b/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/SKTouchEventArgs.cs @@ -4,48 +4,64 @@ namespace SkiaSharp.Views.Maui { + /// + /// Provides data for the or event. + /// public class SKTouchEventArgs : EventArgs { - /// - /// - /// - /// + /// + /// Creates a new instance of the event arguments. + /// + /// The ID used to track the touch event. + /// The type of touch action that initiated this event. + /// The location of the touch. + /// Whether or not the touch device is in contact with the screen. + /// This constructor sets the to and the to . public SKTouchEventArgs(long id, SKTouchAction type, SKPoint location, bool inContact) : this(id, type, SKMouseButton.Left, SKTouchDeviceType.Touch, location, inContact, 0, 1) { } - /// - /// - /// - /// - /// - /// + /// + /// Creates a new instance of the event arguments. + /// + /// The ID used to track the touch event. + /// The type of touch action that initiated this event. + /// The mouse button used to raise the touch event. + /// The touch device used to raise the touch event. + /// The location of the touch. + /// Whether or not the touch device is in contact with the screen, or the mouse button pressed. public SKTouchEventArgs(long id, SKTouchAction type, SKMouseButton mouseButton, SKTouchDeviceType deviceType, SKPoint location, bool inContact) : this(id, type, mouseButton, deviceType, location, inContact, 0, 1) { } - /// - /// - /// - /// - /// - /// - /// + /// + /// Creates a new instance of the event arguments. + /// + /// The ID used to track the touch event. + /// The type of touch action that initiated this event. + /// The mouse button used to raise the touch event. + /// The touch device used to raise the touch event. + /// The location of the touch. + /// Whether or not the touch device is in contact with the screen, or the mouse button pressed. + /// The amount the wheel was scrolled. public SKTouchEventArgs(long id, SKTouchAction type, SKMouseButton mouseButton, SKTouchDeviceType deviceType, SKPoint location, bool inContact, int wheelDelta) : this(id, type, mouseButton, deviceType, location, inContact, wheelDelta, 1) { } - /// - /// - /// - /// - /// - /// - /// - /// + /// + /// Creates a new instance of the event arguments. + /// + /// The ID used to track the touch event. + /// The type of touch action that initiated this event. + /// The mouse button used to raise the touch event. + /// The touch device used to raise the touch event. + /// The location of the touch. + /// Whether or not the touch device is in contact with the screen, or the mouse button pressed. + /// The amount the wheel was scrolled. + /// The pressure of the touch event. public SKTouchEventArgs(long id, SKTouchAction type, SKMouseButton mouseButton, SKTouchDeviceType deviceType, SKPoint location, bool inContact, int wheelDelta, float pressure) { Id = id; @@ -58,54 +74,139 @@ public SKTouchEventArgs(long id, SKTouchAction type, SKMouseButton mouseButton, Pressure = pressure; } + /// + /// Gets or sets a value indicating whether the event has been handled and should not propagate further. + /// public bool Handled { get; set; } + /// + /// Gets the ID that can be used to track this particular event. + /// + /// This ID represents the finger/pointer ID or mouse button number that initiated the event. This ID will remain the same for the duration of the touch operation. public long Id { get; private set; } + /// + /// Gets a value indicating which type of touch action resulted in this event being raised. + /// public SKTouchAction ActionType { get; private set; } + /// + /// Gets a value indicating which type of touch device was used to raise this event. + /// public SKTouchDeviceType DeviceType { get; private set; } + /// + /// Gets a value indicating which mouse button resulted in this event being raised. + /// + /// If the mouse was used, then this property will indicate which button was pressed. If a finger (touch) or pen was used, then this property will indicate left button. public SKMouseButton MouseButton { get; private set; } + /// + /// Gets the location of the touch on the view (in pixel coordinates). + /// public SKPoint Location { get; private set; } + /// + /// Gets a value indicating whether the device is touching the screen, or being pressed, at the current time. + /// public bool InContact { get; private set; } + /// + /// Gets the amount that the mouse wheel was scrolled. + /// public int WheelDelta { get; private set; } + /// + /// Gets the pressure of the touch event. + /// + /// The pressure generally ranges from 0 (no pressure at all) to 1 (normal pressure), however values higher than 1 may be generated depending on the calibration of the input device. public float Pressure { get; private set; } + /// + /// Returns a string that represents the current object. + /// + /// A string that represents the current object. public override string ToString() { return $"{{ActionType={ActionType}, DeviceType={DeviceType}, Handled={Handled}, Id={Id}, InContact={InContact}, Location={Location}, MouseButton={MouseButton}, WheelDelta={WheelDelta}, Pressure={Pressure}}}"; } } + /// + /// Specifies constants that define which touch/mouse action took place. + /// public enum SKTouchAction { + /// + /// The touch/mouse entered the view. + /// Entered, + /// + /// A finger or pen was touched on the screen, or a mouse button was pressed. + /// Pressed, + /// + /// The touch (while down) or mouse (pressed or released) moved in the view. + /// Moved, + /// + /// A finger or pen was lifted off the screen, or a mouse button was released. + /// Released, + /// + /// The touch/mouse operation was cancelled. + /// Cancelled, + /// + /// The touch/mouse exited the view. + /// Exited, + /// + /// The mouse wheel was scrolled. + /// WheelChanged, } + /// + /// Specifies constants that define which touch device was used. + /// public enum SKTouchDeviceType { + /// + /// A finger on the screen was being used when the event was raised. + /// Touch, + /// + /// A mouse was being used when the event was raised. + /// Mouse, + /// + /// A pen on the screen was being used when the event was raised. + /// Pen } + /// + /// Specifies constants that define which mouse button was pressed. + /// public enum SKMouseButton { + /// + /// An unknown mouse button was pressed. + /// Unknown, + /// + /// The left mouse button was pressed, or, a finger/pen was touched on the screen. + /// Left, + /// + /// The middle mouse button was pressed. + /// Middle, + /// + /// The right mouse button was pressed. + /// Right } } diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/GLTextureView.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/GLTextureView.cs index e91f77d4f5..ab248e3673 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/GLTextureView.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/GLTextureView.cs @@ -142,7 +142,7 @@ public void SetRenderer(IRenderer renderer) /// Install a custom context factory. /// /// The custom context factory. - /// If this method is called, it must be called before is called. + /// If this method is called, it must be called before is called. public void SetEGLContextFactory(IEGLContextFactory factory) { CheckRenderThreadState(); @@ -153,7 +153,7 @@ public void SetEGLContextFactory(IEGLContextFactory factory) /// Install a custom window surface factory. /// /// The custom window surface factory. - /// If this method is called, it must be called before is called. + /// If this method is called, it must be called before is called. public void SetEGLWindowSurfaceFactory(IEGLWindowSurfaceFactory factory) { CheckRenderThreadState(); @@ -209,7 +209,7 @@ public void SetEGLConfigChooser(int redSize, int greenSize, int blueSize, int al /// Inform the default context factory and default config chooser which context client version to pick. /// /// The context client version to choose. Use 2 for OpenGL ES 2.0 - /// If this method is called, it must be called before is called. + /// If this method is called, it must be called before is called. public void SetEGLContextClientVersion(int version) { CheckRenderThreadState(); From 8004c41e61c8ded3993e0aca32ee42fae29c77fd Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Fri, 5 Sep 2025 17:32:08 +0200 Subject: [PATCH 18/35] tizen --- .../SKImageSource.cs | 38 +++++++++---------- .../Platform/Tizen/CustomRenderingView.cs | 13 +++++++ .../Platform/Tizen/RenderingMode.cs | 9 +++++ .../Platform/Tizen/SKCanvasView.cs | 26 +++++++++++++ .../Platform/Tizen/SKGLSurfaceView.cs | 25 ++++++++++++ .../Platform/Tizen/ScalingInfo.cs | 23 +++++++++++ .../Platform/Tizen/TizenExtensions.cs | 38 +++++++++++++++++++ 7 files changed, 153 insertions(+), 19 deletions(-) diff --git a/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Controls/SKImageSource.cs b/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Controls/SKImageSource.cs index 9e1f1db1b0..44ffb664d4 100644 --- a/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Controls/SKImageSource.cs +++ b/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Controls/SKImageSource.cs @@ -6,7 +6,7 @@ namespace SkiaSharp.Views.Maui.Controls { /// - /// Represents a image source. + /// Represents a image source. /// public sealed partial class SKImageImageSource : ImageSource, ISKImageImageSource { @@ -16,7 +16,7 @@ public sealed partial class SKImageImageSource : ImageSource, ISKImageImageSourc public static readonly BindableProperty ImageProperty = BindableProperty.Create(nameof(Image), typeof(SKImage), typeof(SKImageImageSource), default(SKImage)); /// - /// Gets or sets the underlying of the image source. + /// Gets or sets the underlying of the image source. /// public SKImage Image { @@ -34,7 +34,7 @@ public override Task Cancel() } /// - /// Allows implicit casting from a . + /// Allows implicit casting from a . /// /// The image to use when creating the ImageSource. /// Returns a new instance of with the property set to the image. @@ -47,10 +47,10 @@ public static implicit operator SKImageImageSource(SKImage image) } /// - /// Allows implicit casting to a . + /// Allows implicit casting to a . /// /// The ImageSource to retrieve the image from. - /// Returns the underlying of the ImageSource. + /// Returns the underlying of the ImageSource. public static implicit operator SKImage(SKImageImageSource source) { return source?.Image; @@ -65,7 +65,7 @@ protected override void OnPropertyChanged(string propertyName = null) } /// - /// Represents a image source. + /// Represents a image source. /// public sealed partial class SKBitmapImageSource : ImageSource, ISKBitmapImageSource { @@ -75,7 +75,7 @@ public sealed partial class SKBitmapImageSource : ImageSource, ISKBitmapImageSou public static readonly BindableProperty BitmapProperty = BindableProperty.Create(nameof(Bitmap), typeof(SKBitmap), typeof(SKBitmapImageSource), default(SKBitmap)); /// - /// Gets or sets the underlying of the image source. + /// Gets or sets the underlying of the image source. /// public SKBitmap Bitmap { @@ -93,7 +93,7 @@ public override Task Cancel() } /// - /// Allows implicit casting from a . + /// Allows implicit casting from a . /// /// The bitmap to use when creating the ImageSource. /// Returns a new instance of with the property set to the bitmap. @@ -106,10 +106,10 @@ public static implicit operator SKBitmapImageSource(SKBitmap bitmap) } /// - /// Allows implicit casting to a . + /// Allows implicit casting to a . /// /// The ImageSource to retrieve the bitmap from. - /// Returns the underlying of the ImageSource. + /// Returns the underlying of the ImageSource. public static implicit operator SKBitmap(SKBitmapImageSource source) { return source?.Bitmap; @@ -124,7 +124,7 @@ protected override void OnPropertyChanged(string propertyName = null) } /// - /// Represents a image source. + /// Represents a image source. /// public sealed partial class SKPixmapImageSource : ImageSource, ISKPixmapImageSource { @@ -134,7 +134,7 @@ public sealed partial class SKPixmapImageSource : ImageSource, ISKPixmapImageSou public static readonly BindableProperty PixmapProperty = BindableProperty.Create(nameof(Pixmap), typeof(SKPixmap), typeof(SKPixmapImageSource), default(SKPixmap)); /// - /// Gets or sets the underlying of the image source. + /// Gets or sets the underlying of the image source. /// public SKPixmap Pixmap { @@ -152,7 +152,7 @@ public override Task Cancel() } /// - /// Allows implicit casting from a . + /// Allows implicit casting from a . /// /// The pixmap to use when creating the ImageSource. /// Returns a new instance of with the property set to the bitmap. @@ -165,10 +165,10 @@ public static implicit operator SKPixmapImageSource(SKPixmap pixmap) } /// - /// Allows implicit casting to a . + /// Allows implicit casting to a . /// /// The ImageSource to retrieve the pixmap from. - /// Returns the underlying of the ImageSource. + /// Returns the underlying of the ImageSource. public static implicit operator SKPixmap(SKPixmapImageSource source) { return source?.Pixmap; @@ -183,7 +183,7 @@ protected override void OnPropertyChanged(string propertyName = null) } /// - /// Represents a image source. + /// Represents a image source. /// public sealed partial class SKPictureImageSource : ImageSource, ISKPictureImageSource { @@ -198,7 +198,7 @@ public sealed partial class SKPictureImageSource : ImageSource, ISKPictureImageS public static readonly BindableProperty DimensionsProperty = BindableProperty.Create(nameof(Dimensions), typeof(SKSizeI), typeof(SKPictureImageSource), default(SKSizeI)); /// - /// Gets or sets the underlying of the image source. + /// Gets or sets the underlying of the image source. /// public SKPicture Picture { @@ -225,10 +225,10 @@ public override Task Cancel() } /// - /// Allows explicit casting to a . + /// Allows explicit casting to a . /// /// The ImageSource to retrieve the picture from. - /// Returns the underlying of the ImageSource. + /// Returns the underlying of the ImageSource. public static explicit operator SKPicture(SKPictureImageSource source) { return source?.Picture; diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/CustomRenderingView.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/CustomRenderingView.cs index 528aea874c..bfaebef89e 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/CustomRenderingView.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/CustomRenderingView.cs @@ -4,6 +4,9 @@ namespace SkiaSharp.Views.Tizen { + /// + /// An abstract view that can be inherited from to allow drawing on using SkiaSharp drawing commands. + /// public abstract class CustomRenderingView : Widget { private readonly Evas.ImagePixelsSetCallback redrawCallback; @@ -20,8 +23,15 @@ public CustomRenderingView(EvasObject parent) redrawCallback = (d, o) => OnDrawFrame(); } + /// + /// Gets the current canvas size. + /// + /// The canvas size may be different to the view size as a result of the current device's pixel density. public SKSize CanvasSize => GetSurfaceSize(); + /// + /// Gets or sets the rendering mode. + /// public RenderingMode RenderingMode { get { return renderingMode; } @@ -39,6 +49,9 @@ public RenderingMode RenderingMode } } + /// + /// Invalidates the entire surface of the control and causes the control to be redrawn. + /// public void Invalidate() { if (RenderingMode == RenderingMode.WhenDirty) diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/RenderingMode.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/RenderingMode.cs index 69ae349e95..d9db49f5b1 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/RenderingMode.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/RenderingMode.cs @@ -1,8 +1,17 @@ namespace SkiaSharp.Views.Tizen { + /// + /// Various options for rendering a view. + /// public enum RenderingMode { + /// + /// The view is repainted continuously. + /// Continuously, + /// + /// The view only redraws the surface when the it is created, resized, or when is called. + /// WhenDirty, } } diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/SKCanvasView.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/SKCanvasView.cs index 7b3201a54f..2510d4d548 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/SKCanvasView.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/SKCanvasView.cs @@ -4,6 +4,9 @@ namespace SkiaSharp.Views.Tizen { + /// + /// A view that can be drawn on using SkiaSharp drawing commands. + /// public class SKCanvasView : CustomRenderingView { private bool ignorePixelScaling; @@ -16,6 +19,10 @@ public SKCanvasView(EvasObject parent) info = new SKImageInfo(0, 0, SKImageInfo.PlatformColorType, SKAlphaType.Premul); } + /// + /// Gets or sets a value indicating whether the drawing canvas should be resized on high resolution displays. + /// + /// By default, when , the canvas is resized to 1 canvas pixel per display pixel. When , the canvas is resized to device independent pixels, and then stretched to fill the view. Although performance is improved and all objects are the same size on different display densities, blurring and pixelation may occur. public bool IgnorePixelScaling { get => ignorePixelScaling; @@ -30,6 +37,25 @@ public bool IgnorePixelScaling } } + /// + /// Occurs when the surface needs to be redrawn. + /// + /// There are two ways to draw on this surface: by overriding the + /// + /// method, or by attaching a handler to the + /// + /// event. + /// ## Examples + /// ```csharp + /// myView.PaintSurface += (sender, e) => { + /// var surface = e.Surface; + /// var surfaceWidth = e.Info.Width; + /// var surfaceHeight = e.Info.Height; + /// var canvas = surface.Canvas; + /// // draw on the canvas + /// canvas.Flush (); + /// }; + /// ``` public event EventHandler PaintSurface; protected override SKSizeI GetSurfaceSize() => canvasSize; diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/SKGLSurfaceView.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/SKGLSurfaceView.cs index 00349cd8c9..576ed7ea02 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/SKGLSurfaceView.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/SKGLSurfaceView.cs @@ -7,6 +7,9 @@ namespace SkiaSharp.Views.Tizen { + /// + /// A hardware-accelerated view that can be drawn on using SkiaSharp drawing commands. + /// public class SKGLSurfaceView : CustomRenderingView { private const GRSurfaceOrigin surfaceOrigin = GRSurfaceOrigin.BottomLeft; @@ -40,8 +43,30 @@ public SKGLSurfaceView(EvasObject parent) }; } + /// + /// Occurs when the surface needs to be redrawn. + /// + /// There are two ways to draw on this surface: by overriding the + /// + /// method, or by attaching a handler to the + /// + /// event. + /// ## Examples + /// ```csharp + /// myView.PaintSurface += (sender, e) => { + /// var surface = e.Surface; + /// var surfaceWidth = e.BackendRenderTarget.Width; + /// var surfaceHeight = e.BackendRenderTarget.Height; + /// var canvas = surface.Canvas; + /// // draw on the canvas + /// canvas.Flush (); + /// }; + /// ``` public event EventHandler PaintSurface; + /// + /// Gets the current GPU context. + /// public GRContext GRContext => context; protected override SKSizeI GetSurfaceSize() => surfaceSize; diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/ScalingInfo.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/ScalingInfo.cs index b06517deef..430ca94a26 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/ScalingInfo.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/ScalingInfo.cs @@ -4,6 +4,9 @@ namespace SkiaSharp.Views.Tizen { + /// + /// A utility class that can be used to determine screen densities. + /// public static class ScalingInfo { private static readonly Lazy profile = new Lazy(() => Elementary.GetProfile()); @@ -25,16 +28,36 @@ public static class ScalingInfo private static double? scalingFactorOverride; + /// + /// Gets the device profile. + /// public static string Profile => profile.Value; + /// + /// Gets the DPI of the screen. + /// public static int Dpi => dpi.Value; + /// + /// The scaling factor to convert between raw pixels and device-independent pixels. + /// public static double ScalingFactor => scalingFactorOverride ?? scalingFactor.Value; + /// + /// Convert from raw pixels into device-independent pixels. + /// + /// The raw pixel dimension. + /// Returns the device-independent pixel dimension. public static double FromPixel(double v) => v / ScalingFactor; + /// + /// Convert from device-independent pixels into raw pixels. + /// + /// The device-independent pixel dimension. + /// Returns the raw pixel dimension. public static double ToPixel(double v) => v * ScalingFactor; + /// public static void SetScalingFactor(double? scalingFactor) { scalingFactorOverride = scalingFactor; diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/TizenExtensions.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/TizenExtensions.cs index 087cc7eab8..36f318e491 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/TizenExtensions.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/TizenExtensions.cs @@ -2,6 +2,9 @@ namespace SkiaSharp.Views.Tizen { + /// + /// Various extension methods to convert between SkiaSharp types and Tizen types. + /// public static class TizenExtensions { // Point @@ -26,11 +29,21 @@ public static SKPointI ToSKPointI(this global::Tizen.NUI.Position2D point) return new SKPointI(point.X, point.Y); } + /// + /// Converts a SkiaSharp point into a Tizen point. + /// + /// The SkiaSharp point. + /// Returns a Tizen point. public static Point ToPoint(this SKPoint point) { return new Point { X = (int)point.X, Y = (int)point.Y }; } + /// + /// Converts a SkiaSharp point into a Tizen point. + /// + /// The SkiaSharp point. + /// Returns a Tizen point. public static Point ToPoint(this SKPointI point) { return new Point { X = point.X, Y = point.Y }; @@ -58,11 +71,21 @@ public static SKSizeI ToSKSizeI(this global::Tizen.NUI.Size2D size) return new SKSizeI(size.Width, size.Height); } + /// + /// Converts a SkiaSharp size into a Tizen size. + /// + /// The SkiaSharp size. + /// Returns a Tizen size. public static Size ToSize(this SKSize size) { return new Size((int)size.Width, (int)size.Height); } + /// + /// Converts a SkiaSharp size into a Tizen size. + /// + /// The SkiaSharp size. + /// Returns a Tizen size. public static Size ToSize(this SKSizeI size) { return new Size(size.Width, size.Height); @@ -90,11 +113,21 @@ public static SKRectI ToSKRectI(this global::Tizen.NUI.Rectangle rect) return SKRectI.Create(rect.X, rect.Y, rect.Width, rect.Height); } + /// + /// Converts a SkiaSharp rectangle into a Tizen rectangle. + /// + /// The SkiaSharp rectangle. + /// Returns a Tizen rectangle. public static Rect ToRect(this SKRect rect) { return new Rect((int)rect.Left, (int)rect.Top, (int)rect.Right, (int)rect.Bottom); } + /// + /// Converts a SkiaSharp rectangle into a Tizen rectangle. + /// + /// The SkiaSharp rectangle. + /// Returns a Tizen rectangle. public static Rect ToRect(this SKRectI rect) { return new Rect(rect.Left, rect.Top, rect.Right, rect.Bottom); @@ -112,6 +145,11 @@ public static SKColorF ToSKColorF(this global::Tizen.NUI.Color color) return new SKColorF(color.R, color.G, color.B, color.A); } + /// + /// Converts a SkiaSharp color into a Tizen color. + /// + /// The SkiaSharp color. + /// Returns a Tizen color. public static Color ToColor(this SKColor color) { return Color.FromRgba(color.Red, color.Green, color.Blue, color.Alpha); From 841ecd566e4c8b3f7d749e63f1a4cf1aad7139e5 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Fri, 5 Sep 2025 17:34:24 +0200 Subject: [PATCH 19/35] Removed submodule docs --- .gitmodules | 4 ---- docs | 1 - 2 files changed, 5 deletions(-) delete mode 160000 docs diff --git a/.gitmodules b/.gitmodules index 3048e4eee1..915a6b5915 100644 --- a/.gitmodules +++ b/.gitmodules @@ -6,7 +6,3 @@ path = externals/depot_tools url = https://chromium.googlesource.com/chromium/tools/depot_tools.git branch = master -[submodule "docs"] - path = docs - url = https://github.com/mono/SkiaSharp-API-docs - branch = master diff --git a/docs b/docs deleted file mode 160000 index 726b6ce666..0000000000 --- a/docs +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 726b6ce666ad66b16bfd2ab1b4fcba5b4d468bc8 From c2d20a3d15052bd60c70f9977c325b9c92d6772a Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Fri, 5 Sep 2025 17:35:09 +0200 Subject: [PATCH 20/35] Delete API.Docs.Migration.Checklist.md --- API.Docs.Migration.Checklist.md | 5826 ------------------------------- 1 file changed, 5826 deletions(-) delete mode 100644 API.Docs.Migration.Checklist.md diff --git a/API.Docs.Migration.Checklist.md b/API.Docs.Migration.Checklist.md deleted file mode 100644 index 6848979474..0000000000 --- a/API.Docs.Migration.Checklist.md +++ /dev/null @@ -1,5826 +0,0 @@ -# API Docs Migration Checklist - -> Generated: 2025-09-01 23:55 +02:00 -> Source: docs/SkiaSharpAPI - -## Namespace HarfBuzzSharp - -- [ ] HarfBuzzSharp.Blob - - [ ] M:HarfBuzzSharp.Blob.#ctor(System.IntPtr,System.Int32,HarfBuzzSharp.MemoryMode,HarfBuzzSharp.ReleaseDelegate) - - [ ] M:HarfBuzzSharp.Blob.#ctor(System.IntPtr,System.Int32,HarfBuzzSharp.MemoryMode) - - [ ] M:HarfBuzzSharp.Blob.#ctor(System.IntPtr,System.UInt32,HarfBuzzSharp.MemoryMode,System.Object,HarfBuzzSharp.BlobReleaseDelegate) - - [ ] M:HarfBuzzSharp.Blob.AsSpan - - [ ] M:HarfBuzzSharp.Blob.AsStream - - [ ] M:HarfBuzzSharp.Blob.Dispose(System.Boolean) - - [ ] M:HarfBuzzSharp.Blob.DisposeHandler - - [ ] M:HarfBuzzSharp.Blob.FromFile(System.String) - - [ ] M:HarfBuzzSharp.Blob.FromStream(System.IO.Stream) - - [ ] M:HarfBuzzSharp.Blob.MakeImmutable - - [ ] P:HarfBuzzSharp.Blob.Empty - - [ ] P:HarfBuzzSharp.Blob.FaceCount - - [ ] P:HarfBuzzSharp.Blob.IsImmutable - - [ ] P:HarfBuzzSharp.Blob.Length -- [ ] HarfBuzzSharp.BlobReleaseDelegate -- [ ] HarfBuzzSharp.Buffer - - [ ] F:HarfBuzzSharp.Buffer.DefaultReplacementCodepoint - - [ ] M:HarfBuzzSharp.Buffer.#ctor - - [ ] M:HarfBuzzSharp.Buffer.Add(System.Int32,System.Int32) - - [ ] M:HarfBuzzSharp.Buffer.Add(System.UInt32,System.UInt32) - - [ ] M:HarfBuzzSharp.Buffer.AddCodepoints(System.IntPtr,System.Int32,System.Int32,System.Int32) - - [ ] M:HarfBuzzSharp.Buffer.AddCodepoints(System.IntPtr,System.Int32) - - [ ] M:HarfBuzzSharp.Buffer.AddCodepoints(System.ReadOnlySpan{System.Int32},System.Int32,System.Int32) - - [ ] M:HarfBuzzSharp.Buffer.AddCodepoints(System.ReadOnlySpan{System.Int32}) - - [ ] M:HarfBuzzSharp.Buffer.AddCodepoints(System.ReadOnlySpan{System.UInt32},System.Int32,System.Int32) - - [ ] M:HarfBuzzSharp.Buffer.AddCodepoints(System.ReadOnlySpan{System.UInt32}) - - [ ] M:HarfBuzzSharp.Buffer.AddUtf16(System.IntPtr,System.Int32,System.Int32,System.Int32) - - [ ] M:HarfBuzzSharp.Buffer.AddUtf16(System.IntPtr,System.Int32) - - [ ] M:HarfBuzzSharp.Buffer.AddUtf16(System.ReadOnlySpan{System.Byte}) - - [ ] M:HarfBuzzSharp.Buffer.AddUtf16(System.ReadOnlySpan{System.Char},System.Int32,System.Int32) - - [ ] M:HarfBuzzSharp.Buffer.AddUtf16(System.ReadOnlySpan{System.Char}) - - [ ] M:HarfBuzzSharp.Buffer.AddUtf16(System.String,System.Int32,System.Int32) - - [ ] M:HarfBuzzSharp.Buffer.AddUtf16(System.String) - - [ ] M:HarfBuzzSharp.Buffer.AddUtf32(System.IntPtr,System.Int32,System.Int32,System.Int32) - - [ ] M:HarfBuzzSharp.Buffer.AddUtf32(System.IntPtr,System.Int32) - - [ ] M:HarfBuzzSharp.Buffer.AddUtf32(System.ReadOnlySpan{System.Byte}) - - [ ] M:HarfBuzzSharp.Buffer.AddUtf32(System.ReadOnlySpan{System.Int32},System.Int32,System.Int32) - - [ ] M:HarfBuzzSharp.Buffer.AddUtf32(System.ReadOnlySpan{System.Int32}) - - [ ] M:HarfBuzzSharp.Buffer.AddUtf32(System.ReadOnlySpan{System.UInt32},System.Int32,System.Int32) - - [ ] M:HarfBuzzSharp.Buffer.AddUtf32(System.ReadOnlySpan{System.UInt32}) - - [ ] M:HarfBuzzSharp.Buffer.AddUtf32(System.String) - - [ ] M:HarfBuzzSharp.Buffer.AddUtf8(System.Byte[]) - - [ ] M:HarfBuzzSharp.Buffer.AddUtf8(System.IntPtr,System.Int32,System.Int32,System.Int32) - - [ ] M:HarfBuzzSharp.Buffer.AddUtf8(System.IntPtr,System.Int32) - - [ ] M:HarfBuzzSharp.Buffer.AddUtf8(System.ReadOnlySpan{System.Byte},System.Int32,System.Int32) - - [ ] M:HarfBuzzSharp.Buffer.AddUtf8(System.ReadOnlySpan{System.Byte}) - - [ ] M:HarfBuzzSharp.Buffer.AddUtf8(System.String) - - [ ] M:HarfBuzzSharp.Buffer.Append(HarfBuzzSharp.Buffer,System.Int32,System.Int32) - - [ ] M:HarfBuzzSharp.Buffer.Append(HarfBuzzSharp.Buffer) - - [ ] M:HarfBuzzSharp.Buffer.ClearContents - - [ ] M:HarfBuzzSharp.Buffer.DeserializeGlyphs(System.String,HarfBuzzSharp.Font,HarfBuzzSharp.SerializeFormat) - - [ ] M:HarfBuzzSharp.Buffer.DeserializeGlyphs(System.String,HarfBuzzSharp.Font) - - [ ] M:HarfBuzzSharp.Buffer.DeserializeGlyphs(System.String) - - [ ] M:HarfBuzzSharp.Buffer.Dispose(System.Boolean) - - [ ] M:HarfBuzzSharp.Buffer.DisposeHandler - - [ ] M:HarfBuzzSharp.Buffer.GetGlyphInfoSpan - - [ ] M:HarfBuzzSharp.Buffer.GetGlyphPositionSpan - - [ ] M:HarfBuzzSharp.Buffer.GuessSegmentProperties - - [ ] M:HarfBuzzSharp.Buffer.NormalizeGlyphs - - [ ] M:HarfBuzzSharp.Buffer.Reset - - [ ] M:HarfBuzzSharp.Buffer.Reverse - - [ ] M:HarfBuzzSharp.Buffer.ReverseClusters - - [ ] M:HarfBuzzSharp.Buffer.ReverseRange(System.Int32,System.Int32) - - [ ] M:HarfBuzzSharp.Buffer.SerializeGlyphs - - [ ] M:HarfBuzzSharp.Buffer.SerializeGlyphs(HarfBuzzSharp.Font,HarfBuzzSharp.SerializeFormat,HarfBuzzSharp.SerializeFlag) - - [ ] M:HarfBuzzSharp.Buffer.SerializeGlyphs(HarfBuzzSharp.Font) - - [ ] M:HarfBuzzSharp.Buffer.SerializeGlyphs(System.Int32,System.Int32,HarfBuzzSharp.Font,HarfBuzzSharp.SerializeFormat,HarfBuzzSharp.SerializeFlag) - - [ ] M:HarfBuzzSharp.Buffer.SerializeGlyphs(System.Int32,System.Int32) - - [ ] P:HarfBuzzSharp.Buffer.ClusterLevel - - [ ] P:HarfBuzzSharp.Buffer.ContentType - - [ ] P:HarfBuzzSharp.Buffer.Direction - - [ ] P:HarfBuzzSharp.Buffer.Flags - - [ ] P:HarfBuzzSharp.Buffer.GlyphInfos - - [ ] P:HarfBuzzSharp.Buffer.GlyphPositions - - [ ] P:HarfBuzzSharp.Buffer.InvisibleGlyph - - [ ] P:HarfBuzzSharp.Buffer.Language - - [ ] P:HarfBuzzSharp.Buffer.Length - - [ ] P:HarfBuzzSharp.Buffer.ReplacementCodepoint - - [ ] P:HarfBuzzSharp.Buffer.Script - - [ ] P:HarfBuzzSharp.Buffer.UnicodeFunctions -- [ ] HarfBuzzSharp.BufferDiffFlags - - [ ] F:HarfBuzzSharp.BufferDiffFlags.ClusterMismatch - - [ ] F:HarfBuzzSharp.BufferDiffFlags.CodepointMismatch - - [ ] F:HarfBuzzSharp.BufferDiffFlags.ContentTypeMismatch - - [ ] F:HarfBuzzSharp.BufferDiffFlags.DottedCirclePresent - - [ ] F:HarfBuzzSharp.BufferDiffFlags.Equal - - [ ] F:HarfBuzzSharp.BufferDiffFlags.GlyphFlagsMismatch - - [ ] F:HarfBuzzSharp.BufferDiffFlags.LengthMismatch - - [ ] F:HarfBuzzSharp.BufferDiffFlags.NotdefPresent - - [ ] F:HarfBuzzSharp.BufferDiffFlags.PositionMismatch -- [ ] HarfBuzzSharp.BufferFlags - - [ ] F:HarfBuzzSharp.BufferFlags.BeginningOfText - - [ ] F:HarfBuzzSharp.BufferFlags.Default - - [ ] F:HarfBuzzSharp.BufferFlags.DoNotInsertDottedCircle - - [ ] F:HarfBuzzSharp.BufferFlags.EndOfText - - [ ] F:HarfBuzzSharp.BufferFlags.PreserveDefaultIgnorables - - [ ] F:HarfBuzzSharp.BufferFlags.RemoveDefaultIgnorables -- [ ] HarfBuzzSharp.ClusterLevel - - [ ] F:HarfBuzzSharp.ClusterLevel.Characters - - [ ] F:HarfBuzzSharp.ClusterLevel.Default - - [ ] F:HarfBuzzSharp.ClusterLevel.MonotoneCharacters - - [ ] F:HarfBuzzSharp.ClusterLevel.MonotoneGraphemes -- [ ] HarfBuzzSharp.CombiningClassDelegate -- [ ] HarfBuzzSharp.ComposeDelegate -- [ ] HarfBuzzSharp.ContentType - - [ ] F:HarfBuzzSharp.ContentType.Glyphs - - [ ] F:HarfBuzzSharp.ContentType.Invalid - - [ ] F:HarfBuzzSharp.ContentType.Unicode -- [ ] HarfBuzzSharp.DecomposeDelegate -- [ ] HarfBuzzSharp.Direction - - [ ] F:HarfBuzzSharp.Direction.BottomToTop - - [ ] F:HarfBuzzSharp.Direction.Invalid - - [ ] F:HarfBuzzSharp.Direction.LeftToRight - - [ ] F:HarfBuzzSharp.Direction.RightToLeft - - [ ] F:HarfBuzzSharp.Direction.TopToBottom -- [ ] HarfBuzzSharp.Face - - [ ] M:HarfBuzzSharp.Face.#ctor(HarfBuzzSharp.Blob,System.Int32) - - [ ] M:HarfBuzzSharp.Face.#ctor(HarfBuzzSharp.Blob,System.UInt32) - - [ ] M:HarfBuzzSharp.Face.#ctor(HarfBuzzSharp.GetTableDelegate,HarfBuzzSharp.ReleaseDelegate) - - [ ] M:HarfBuzzSharp.Face.#ctor(HarfBuzzSharp.GetTableDelegate) - - [ ] M:HarfBuzzSharp.Face.Dispose(System.Boolean) - - [ ] M:HarfBuzzSharp.Face.DisposeHandler - - [ ] M:HarfBuzzSharp.Face.MakeImmutable - - [ ] M:HarfBuzzSharp.Face.ReferenceTable(HarfBuzzSharp.Tag) - - [ ] P:HarfBuzzSharp.Face.Empty - - [ ] P:HarfBuzzSharp.Face.GlyphCount - - [ ] P:HarfBuzzSharp.Face.Index - - [ ] P:HarfBuzzSharp.Face.IsImmutable - - [ ] P:HarfBuzzSharp.Face.Tables - - [ ] P:HarfBuzzSharp.Face.UnitsPerEm -- [ ] HarfBuzzSharp.Feature - - [ ] M:HarfBuzzSharp.Feature.#ctor(HarfBuzzSharp.Tag,System.UInt32,System.UInt32,System.UInt32) - - [ ] M:HarfBuzzSharp.Feature.#ctor(HarfBuzzSharp.Tag,System.UInt32) - - [ ] M:HarfBuzzSharp.Feature.#ctor(HarfBuzzSharp.Tag) - - [ ] M:HarfBuzzSharp.Feature.Equals(HarfBuzzSharp.Feature) - - [ ] M:HarfBuzzSharp.Feature.Equals(System.Object) - - [ ] M:HarfBuzzSharp.Feature.GetHashCode - - [ ] M:HarfBuzzSharp.Feature.op_Equality(HarfBuzzSharp.Feature,HarfBuzzSharp.Feature) - - [ ] M:HarfBuzzSharp.Feature.op_Inequality(HarfBuzzSharp.Feature,HarfBuzzSharp.Feature) - - [ ] M:HarfBuzzSharp.Feature.Parse(System.String) - - [ ] M:HarfBuzzSharp.Feature.ToString - - [ ] M:HarfBuzzSharp.Feature.TryParse(System.String,HarfBuzzSharp.Feature@) - - [ ] P:HarfBuzzSharp.Feature.End - - [ ] P:HarfBuzzSharp.Feature.Start - - [ ] P:HarfBuzzSharp.Feature.Tag - - [ ] P:HarfBuzzSharp.Feature.Value -- [ ] HarfBuzzSharp.Font - - [ ] M:HarfBuzzSharp.Font.#ctor(HarfBuzzSharp.Face) - - [ ] M:HarfBuzzSharp.Font.#ctor(HarfBuzzSharp.Font) - - [ ] M:HarfBuzzSharp.Font.Dispose(System.Boolean) - - [ ] M:HarfBuzzSharp.Font.DisposeHandler - - [ ] M:HarfBuzzSharp.Font.GetFontExtentsForDirection(HarfBuzzSharp.Direction) - - [ ] M:HarfBuzzSharp.Font.GetGlyphAdvanceForDirection(System.UInt32,HarfBuzzSharp.Direction,System.Int32@,System.Int32@) - - [ ] M:HarfBuzzSharp.Font.GetGlyphAdvancesForDirection(System.IntPtr,System.Int32,HarfBuzzSharp.Direction) - - [ ] M:HarfBuzzSharp.Font.GetGlyphAdvancesForDirection(System.ReadOnlySpan{System.UInt32},HarfBuzzSharp.Direction) - - [ ] M:HarfBuzzSharp.Font.GetHorizontalGlyphAdvance(System.UInt32) - - [ ] M:HarfBuzzSharp.Font.GetHorizontalGlyphAdvances(System.IntPtr,System.Int32) - - [ ] M:HarfBuzzSharp.Font.GetHorizontalGlyphAdvances(System.ReadOnlySpan{System.UInt32}) - - [ ] M:HarfBuzzSharp.Font.GetHorizontalGlyphKerning(System.UInt32,System.UInt32) - - [ ] M:HarfBuzzSharp.Font.GetScale(System.Int32@,System.Int32@) - - [ ] M:HarfBuzzSharp.Font.GetVerticalGlyphAdvance(System.UInt32) - - [ ] M:HarfBuzzSharp.Font.GetVerticalGlyphAdvances(System.IntPtr,System.Int32) - - [ ] M:HarfBuzzSharp.Font.GetVerticalGlyphAdvances(System.ReadOnlySpan{System.UInt32}) - - [ ] M:HarfBuzzSharp.Font.GlyphToString(System.UInt32) - - [ ] M:HarfBuzzSharp.Font.SetFontFunctions(HarfBuzzSharp.FontFunctions,System.Object,HarfBuzzSharp.ReleaseDelegate) - - [ ] M:HarfBuzzSharp.Font.SetFontFunctions(HarfBuzzSharp.FontFunctions,System.Object) - - [ ] M:HarfBuzzSharp.Font.SetFontFunctions(HarfBuzzSharp.FontFunctions) - - [ ] M:HarfBuzzSharp.Font.SetFunctionsOpenType - - [ ] M:HarfBuzzSharp.Font.SetScale(System.Int32,System.Int32) - - [ ] M:HarfBuzzSharp.Font.Shape(HarfBuzzSharp.Buffer,HarfBuzzSharp.Feature[]) - - [ ] M:HarfBuzzSharp.Font.Shape(HarfBuzzSharp.Buffer,System.Collections.Generic.IReadOnlyList{HarfBuzzSharp.Feature},System.Collections.Generic.IReadOnlyList{System.String}) - - [ ] M:HarfBuzzSharp.Font.TryGetGlyph(System.Int32,System.UInt32,System.UInt32@) - - [ ] M:HarfBuzzSharp.Font.TryGetGlyph(System.Int32,System.UInt32@) - - [ ] M:HarfBuzzSharp.Font.TryGetGlyph(System.UInt32,System.UInt32,System.UInt32@) - - [ ] M:HarfBuzzSharp.Font.TryGetGlyph(System.UInt32,System.UInt32@) - - [ ] M:HarfBuzzSharp.Font.TryGetGlyphContourPoint(System.UInt32,System.UInt32,System.Int32@,System.Int32@) - - [ ] M:HarfBuzzSharp.Font.TryGetGlyphContourPointForOrigin(System.UInt32,System.UInt32,HarfBuzzSharp.Direction,System.Int32@,System.Int32@) - - [ ] M:HarfBuzzSharp.Font.TryGetGlyphExtents(System.UInt32,HarfBuzzSharp.GlyphExtents@) - - [ ] M:HarfBuzzSharp.Font.TryGetGlyphFromName(System.String,System.UInt32@) - - [ ] M:HarfBuzzSharp.Font.TryGetGlyphFromString(System.String,System.UInt32@) - - [ ] M:HarfBuzzSharp.Font.TryGetGlyphName(System.UInt32,System.String@) - - [ ] M:HarfBuzzSharp.Font.TryGetHorizontalFontExtents(HarfBuzzSharp.FontExtents@) - - [ ] M:HarfBuzzSharp.Font.TryGetHorizontalGlyphOrigin(System.UInt32,System.Int32@,System.Int32@) - - [ ] M:HarfBuzzSharp.Font.TryGetNominalGlyph(System.Int32,System.UInt32@) - - [ ] M:HarfBuzzSharp.Font.TryGetNominalGlyph(System.UInt32,System.UInt32@) - - [ ] M:HarfBuzzSharp.Font.TryGetVariationGlyph(System.Int32,System.UInt32,System.UInt32@) - - [ ] M:HarfBuzzSharp.Font.TryGetVariationGlyph(System.Int32,System.UInt32@) - - [ ] M:HarfBuzzSharp.Font.TryGetVariationGlyph(System.UInt32,System.UInt32,System.UInt32@) - - [ ] M:HarfBuzzSharp.Font.TryGetVariationGlyph(System.UInt32,System.UInt32@) - - [ ] M:HarfBuzzSharp.Font.TryGetVerticalFontExtents(HarfBuzzSharp.FontExtents@) - - [ ] M:HarfBuzzSharp.Font.TryGetVerticalGlyphOrigin(System.UInt32,System.Int32@,System.Int32@) - - [ ] P:HarfBuzzSharp.Font.OpenTypeMetrics - - [ ] P:HarfBuzzSharp.Font.Parent - - [ ] P:HarfBuzzSharp.Font.SupportedShapers -- [ ] HarfBuzzSharp.FontExtents - - [ ] M:HarfBuzzSharp.FontExtents.Equals(HarfBuzzSharp.FontExtents) - - [ ] M:HarfBuzzSharp.FontExtents.Equals(System.Object) - - [ ] M:HarfBuzzSharp.FontExtents.GetHashCode - - [ ] M:HarfBuzzSharp.FontExtents.op_Equality(HarfBuzzSharp.FontExtents,HarfBuzzSharp.FontExtents) - - [ ] M:HarfBuzzSharp.FontExtents.op_Inequality(HarfBuzzSharp.FontExtents,HarfBuzzSharp.FontExtents) - - [ ] P:HarfBuzzSharp.FontExtents.Ascender - - [ ] P:HarfBuzzSharp.FontExtents.Descender - - [ ] P:HarfBuzzSharp.FontExtents.LineGap -- [ ] HarfBuzzSharp.FontExtentsDelegate -- [ ] HarfBuzzSharp.FontFunctions - - [ ] M:HarfBuzzSharp.FontFunctions.#ctor - - [ ] M:HarfBuzzSharp.FontFunctions.Dispose(System.Boolean) - - [ ] M:HarfBuzzSharp.FontFunctions.DisposeHandler - - [ ] M:HarfBuzzSharp.FontFunctions.MakeImmutable - - [ ] M:HarfBuzzSharp.FontFunctions.SetGlyphContourPointDelegate(HarfBuzzSharp.GlyphContourPointDelegate,HarfBuzzSharp.ReleaseDelegate) - - [ ] M:HarfBuzzSharp.FontFunctions.SetGlyphExtentsDelegate(HarfBuzzSharp.GlyphExtentsDelegate,HarfBuzzSharp.ReleaseDelegate) - - [ ] M:HarfBuzzSharp.FontFunctions.SetGlyphFromNameDelegate(HarfBuzzSharp.GlyphFromNameDelegate,HarfBuzzSharp.ReleaseDelegate) - - [ ] M:HarfBuzzSharp.FontFunctions.SetGlyphNameDelegate(HarfBuzzSharp.GlyphNameDelegate,HarfBuzzSharp.ReleaseDelegate) - - [ ] M:HarfBuzzSharp.FontFunctions.SetHorizontalFontExtentsDelegate(HarfBuzzSharp.FontExtentsDelegate,HarfBuzzSharp.ReleaseDelegate) - - [ ] M:HarfBuzzSharp.FontFunctions.SetHorizontalGlyphAdvanceDelegate(HarfBuzzSharp.GlyphAdvanceDelegate,HarfBuzzSharp.ReleaseDelegate) - - [ ] M:HarfBuzzSharp.FontFunctions.SetHorizontalGlyphAdvancesDelegate(HarfBuzzSharp.GlyphAdvancesDelegate,HarfBuzzSharp.ReleaseDelegate) - - [ ] M:HarfBuzzSharp.FontFunctions.SetHorizontalGlyphKerningDelegate(HarfBuzzSharp.GlyphKerningDelegate,HarfBuzzSharp.ReleaseDelegate) - - [ ] M:HarfBuzzSharp.FontFunctions.SetHorizontalGlyphOriginDelegate(HarfBuzzSharp.GlyphOriginDelegate,HarfBuzzSharp.ReleaseDelegate) - - [ ] M:HarfBuzzSharp.FontFunctions.SetNominalGlyphDelegate(HarfBuzzSharp.NominalGlyphDelegate,HarfBuzzSharp.ReleaseDelegate) - - [ ] M:HarfBuzzSharp.FontFunctions.SetNominalGlyphsDelegate(HarfBuzzSharp.NominalGlyphsDelegate,HarfBuzzSharp.ReleaseDelegate) - - [ ] M:HarfBuzzSharp.FontFunctions.SetVariationGlyphDelegate(HarfBuzzSharp.VariationGlyphDelegate,HarfBuzzSharp.ReleaseDelegate) - - [ ] M:HarfBuzzSharp.FontFunctions.SetVerticalFontExtentsDelegate(HarfBuzzSharp.FontExtentsDelegate,HarfBuzzSharp.ReleaseDelegate) - - [ ] M:HarfBuzzSharp.FontFunctions.SetVerticalGlyphAdvanceDelegate(HarfBuzzSharp.GlyphAdvanceDelegate,HarfBuzzSharp.ReleaseDelegate) - - [ ] M:HarfBuzzSharp.FontFunctions.SetVerticalGlyphAdvancesDelegate(HarfBuzzSharp.GlyphAdvancesDelegate,HarfBuzzSharp.ReleaseDelegate) - - [ ] M:HarfBuzzSharp.FontFunctions.SetVerticalGlyphOriginDelegate(HarfBuzzSharp.GlyphOriginDelegate,HarfBuzzSharp.ReleaseDelegate) - - [ ] P:HarfBuzzSharp.FontFunctions.Empty - - [ ] P:HarfBuzzSharp.FontFunctions.IsImmutable -- [ ] HarfBuzzSharp.GeneralCategoryDelegate -- [ ] HarfBuzzSharp.GetTableDelegate -- [ ] HarfBuzzSharp.GlyphAdvanceDelegate -- [ ] HarfBuzzSharp.GlyphAdvancesDelegate -- [ ] HarfBuzzSharp.GlyphContourPointDelegate -- [ ] HarfBuzzSharp.GlyphExtents - - [ ] M:HarfBuzzSharp.GlyphExtents.Equals(HarfBuzzSharp.GlyphExtents) - - [ ] M:HarfBuzzSharp.GlyphExtents.Equals(System.Object) - - [ ] M:HarfBuzzSharp.GlyphExtents.GetHashCode - - [ ] M:HarfBuzzSharp.GlyphExtents.op_Equality(HarfBuzzSharp.GlyphExtents,HarfBuzzSharp.GlyphExtents) - - [ ] M:HarfBuzzSharp.GlyphExtents.op_Inequality(HarfBuzzSharp.GlyphExtents,HarfBuzzSharp.GlyphExtents) - - [ ] P:HarfBuzzSharp.GlyphExtents.Height - - [ ] P:HarfBuzzSharp.GlyphExtents.Width - - [ ] P:HarfBuzzSharp.GlyphExtents.XBearing - - [ ] P:HarfBuzzSharp.GlyphExtents.YBearing -- [ ] HarfBuzzSharp.GlyphExtentsDelegate -- [ ] HarfBuzzSharp.GlyphFlags - - [ ] F:HarfBuzzSharp.GlyphFlags.Defined - - [ ] F:HarfBuzzSharp.GlyphFlags.UnsafeToBreak -- [ ] HarfBuzzSharp.GlyphFromNameDelegate -- [ ] HarfBuzzSharp.GlyphInfo - - [ ] M:HarfBuzzSharp.GlyphInfo.Equals(HarfBuzzSharp.GlyphInfo) - - [ ] M:HarfBuzzSharp.GlyphInfo.Equals(System.Object) - - [ ] M:HarfBuzzSharp.GlyphInfo.GetHashCode - - [ ] M:HarfBuzzSharp.GlyphInfo.op_Equality(HarfBuzzSharp.GlyphInfo,HarfBuzzSharp.GlyphInfo) - - [ ] M:HarfBuzzSharp.GlyphInfo.op_Inequality(HarfBuzzSharp.GlyphInfo,HarfBuzzSharp.GlyphInfo) - - [ ] P:HarfBuzzSharp.GlyphInfo.Cluster - - [ ] P:HarfBuzzSharp.GlyphInfo.Codepoint - - [ ] P:HarfBuzzSharp.GlyphInfo.GlyphFlags - - [ ] P:HarfBuzzSharp.GlyphInfo.Mask -- [ ] HarfBuzzSharp.GlyphKerningDelegate -- [ ] HarfBuzzSharp.GlyphNameDelegate -- [ ] HarfBuzzSharp.GlyphOriginDelegate -- [ ] HarfBuzzSharp.GlyphPosition - - [ ] M:HarfBuzzSharp.GlyphPosition.Equals(HarfBuzzSharp.GlyphPosition) - - [ ] M:HarfBuzzSharp.GlyphPosition.Equals(System.Object) - - [ ] M:HarfBuzzSharp.GlyphPosition.GetHashCode - - [ ] M:HarfBuzzSharp.GlyphPosition.op_Equality(HarfBuzzSharp.GlyphPosition,HarfBuzzSharp.GlyphPosition) - - [ ] M:HarfBuzzSharp.GlyphPosition.op_Inequality(HarfBuzzSharp.GlyphPosition,HarfBuzzSharp.GlyphPosition) - - [ ] P:HarfBuzzSharp.GlyphPosition.XAdvance - - [ ] P:HarfBuzzSharp.GlyphPosition.XOffset - - [ ] P:HarfBuzzSharp.GlyphPosition.YAdvance - - [ ] P:HarfBuzzSharp.GlyphPosition.YOffset -- [ ] HarfBuzzSharp.Language - - [ ] M:HarfBuzzSharp.Language.#ctor(System.Globalization.CultureInfo) - - [ ] M:HarfBuzzSharp.Language.#ctor(System.String) - - [ ] M:HarfBuzzSharp.Language.Equals(System.Object) - - [ ] M:HarfBuzzSharp.Language.GetHashCode - - [ ] M:HarfBuzzSharp.Language.ToString - - [ ] P:HarfBuzzSharp.Language.Default - - [ ] P:HarfBuzzSharp.Language.Name -- [ ] HarfBuzzSharp.MemoryMode - - [ ] F:HarfBuzzSharp.MemoryMode.Duplicate - - [ ] F:HarfBuzzSharp.MemoryMode.ReadOnly - - [ ] F:HarfBuzzSharp.MemoryMode.ReadOnlyMayMakeWriteable - - [ ] F:HarfBuzzSharp.MemoryMode.Writeable -- [ ] HarfBuzzSharp.MirroringDelegate -- [ ] HarfBuzzSharp.NativeObject - - [ ] M:HarfBuzzSharp.NativeObject.Dispose - - [ ] M:HarfBuzzSharp.NativeObject.Dispose(System.Boolean) - - [ ] M:HarfBuzzSharp.NativeObject.DisposeHandler - - [ ] M:HarfBuzzSharp.NativeObject.Finalize - - [ ] P:HarfBuzzSharp.NativeObject.Handle -- [ ] HarfBuzzSharp.NominalGlyphDelegate -- [ ] HarfBuzzSharp.NominalGlyphsDelegate -- [ ] HarfBuzzSharp.OpenTypeColorLayer - - [ ] M:HarfBuzzSharp.OpenTypeColorLayer.Equals(HarfBuzzSharp.OpenTypeColorLayer) - - [ ] M:HarfBuzzSharp.OpenTypeColorLayer.Equals(System.Object) - - [ ] M:HarfBuzzSharp.OpenTypeColorLayer.GetHashCode - - [ ] M:HarfBuzzSharp.OpenTypeColorLayer.op_Equality(HarfBuzzSharp.OpenTypeColorLayer,HarfBuzzSharp.OpenTypeColorLayer) - - [ ] M:HarfBuzzSharp.OpenTypeColorLayer.op_Inequality(HarfBuzzSharp.OpenTypeColorLayer,HarfBuzzSharp.OpenTypeColorLayer) - - [ ] P:HarfBuzzSharp.OpenTypeColorLayer.ColorIndex - - [ ] P:HarfBuzzSharp.OpenTypeColorLayer.Glyph -- [ ] HarfBuzzSharp.OpenTypeColorPaletteFlags - - [ ] F:HarfBuzzSharp.OpenTypeColorPaletteFlags.Default - - [ ] F:HarfBuzzSharp.OpenTypeColorPaletteFlags.UsableWithDarkBackground - - [ ] F:HarfBuzzSharp.OpenTypeColorPaletteFlags.UsableWithLightBackground -- [ ] HarfBuzzSharp.OpenTypeLayoutBaselineTag - - [ ] F:HarfBuzzSharp.OpenTypeLayoutBaselineTag.Hanging - - [ ] F:HarfBuzzSharp.OpenTypeLayoutBaselineTag.IdeoEmboxBottomOrLeft - - [ ] F:HarfBuzzSharp.OpenTypeLayoutBaselineTag.IdeoEmboxTopOrRight - - [ ] F:HarfBuzzSharp.OpenTypeLayoutBaselineTag.IdeoFaceBottomOrLeft - - [ ] F:HarfBuzzSharp.OpenTypeLayoutBaselineTag.IdeoFaceTopOrRight - - [ ] F:HarfBuzzSharp.OpenTypeLayoutBaselineTag.Math - - [ ] F:HarfBuzzSharp.OpenTypeLayoutBaselineTag.Roman -- [ ] HarfBuzzSharp.OpenTypeLayoutGlyphClass - - [ ] F:HarfBuzzSharp.OpenTypeLayoutGlyphClass.BaseGlyph - - [ ] F:HarfBuzzSharp.OpenTypeLayoutGlyphClass.Component - - [ ] F:HarfBuzzSharp.OpenTypeLayoutGlyphClass.Ligature - - [ ] F:HarfBuzzSharp.OpenTypeLayoutGlyphClass.Mark - - [ ] F:HarfBuzzSharp.OpenTypeLayoutGlyphClass.Unclassified -- [ ] HarfBuzzSharp.OpenTypeMathConstant - - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.AccentBaseHeight - - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.AxisHeight - - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.DelimitedSubFormulaMinHeight - - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.DisplayOperatorMinHeight - - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.FlattenedAccentBaseHeight - - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.FractionDenomDisplayStyleGapMin - - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.FractionDenominatorDisplayStyleShiftDown - - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.FractionDenominatorGapMin - - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.FractionDenominatorShiftDown - - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.FractionNumDisplayStyleGapMin - - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.FractionNumeratorDisplayStyleShiftUp - - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.FractionNumeratorGapMin - - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.FractionNumeratorShiftUp - - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.FractionRuleThickness - - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.LowerLimitBaselineDropMin - - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.LowerLimitGapMin - - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.MathLeading - - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.OverbarExtraAscender - - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.OverbarRuleThickness - - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.OverbarVerticalGap - - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.RadicalDegreeBottomRaisePercent - - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.RadicalDisplayStyleVerticalGap - - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.RadicalExtraAscender - - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.RadicalKernAfterDegree - - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.RadicalKernBeforeDegree - - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.RadicalRuleThickness - - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.RadicalVerticalGap - - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.ScriptPercentScaleDown - - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.ScriptScriptPercentScaleDown - - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.SkewedFractionHorizontalGap - - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.SkewedFractionVerticalGap - - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.SpaceAfterScript - - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.StackBottomDisplayStyleShiftDown - - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.StackBottomShiftDown - - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.StackDisplayStyleGapMin - - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.StackGapMin - - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.StackTopDisplayStyleShiftUp - - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.StackTopShiftUp - - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.StretchStackBottomShiftDown - - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.StretchStackGapAboveMin - - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.StretchStackGapBelowMin - - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.StretchStackTopShiftUp - - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.SubscriptBaselineDropMin - - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.SubscriptShiftDown - - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.SubscriptTopMax - - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.SubSuperscriptGapMin - - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.SuperscriptBaselineDropMax - - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.SuperscriptBottomMaxWithSubscript - - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.SuperscriptBottomMin - - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.SuperscriptShiftUp - - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.SuperscriptShiftUpCramped - - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.UnderbarExtraDescender - - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.UnderbarRuleThickness - - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.UnderbarVerticalGap - - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.UpperLimitBaselineRiseMin - - [ ] F:HarfBuzzSharp.OpenTypeMathConstant.UpperLimitGapMin -- [ ] HarfBuzzSharp.OpenTypeMathGlyphPart - - [ ] M:HarfBuzzSharp.OpenTypeMathGlyphPart.Equals(HarfBuzzSharp.OpenTypeMathGlyphPart) - - [ ] M:HarfBuzzSharp.OpenTypeMathGlyphPart.Equals(System.Object) - - [ ] M:HarfBuzzSharp.OpenTypeMathGlyphPart.GetHashCode - - [ ] M:HarfBuzzSharp.OpenTypeMathGlyphPart.op_Equality(HarfBuzzSharp.OpenTypeMathGlyphPart,HarfBuzzSharp.OpenTypeMathGlyphPart) - - [ ] M:HarfBuzzSharp.OpenTypeMathGlyphPart.op_Inequality(HarfBuzzSharp.OpenTypeMathGlyphPart,HarfBuzzSharp.OpenTypeMathGlyphPart) - - [ ] P:HarfBuzzSharp.OpenTypeMathGlyphPart.EndConnectorLength - - [ ] P:HarfBuzzSharp.OpenTypeMathGlyphPart.Flags - - [ ] P:HarfBuzzSharp.OpenTypeMathGlyphPart.FullAdvance - - [ ] P:HarfBuzzSharp.OpenTypeMathGlyphPart.Glyph - - [ ] P:HarfBuzzSharp.OpenTypeMathGlyphPart.StartConnectorLength -- [ ] HarfBuzzSharp.OpenTypeMathGlyphPartFlags - - [ ] F:HarfBuzzSharp.OpenTypeMathGlyphPartFlags.Extender -- [ ] HarfBuzzSharp.OpenTypeMathGlyphVariant - - [ ] M:HarfBuzzSharp.OpenTypeMathGlyphVariant.Equals(HarfBuzzSharp.OpenTypeMathGlyphVariant) - - [ ] M:HarfBuzzSharp.OpenTypeMathGlyphVariant.Equals(System.Object) - - [ ] M:HarfBuzzSharp.OpenTypeMathGlyphVariant.GetHashCode - - [ ] M:HarfBuzzSharp.OpenTypeMathGlyphVariant.op_Equality(HarfBuzzSharp.OpenTypeMathGlyphVariant,HarfBuzzSharp.OpenTypeMathGlyphVariant) - - [ ] M:HarfBuzzSharp.OpenTypeMathGlyphVariant.op_Inequality(HarfBuzzSharp.OpenTypeMathGlyphVariant,HarfBuzzSharp.OpenTypeMathGlyphVariant) - - [ ] P:HarfBuzzSharp.OpenTypeMathGlyphVariant.Advance - - [ ] P:HarfBuzzSharp.OpenTypeMathGlyphVariant.Glyph -- [ ] HarfBuzzSharp.OpenTypeMathKern - - [ ] F:HarfBuzzSharp.OpenTypeMathKern.BottomLeft - - [ ] F:HarfBuzzSharp.OpenTypeMathKern.BottomRight - - [ ] F:HarfBuzzSharp.OpenTypeMathKern.TopLeft - - [ ] F:HarfBuzzSharp.OpenTypeMathKern.TopRight -- [ ] HarfBuzzSharp.OpenTypeMetaTag - - [ ] F:HarfBuzzSharp.OpenTypeMetaTag.DesignLanguages - - [ ] F:HarfBuzzSharp.OpenTypeMetaTag.SupportedLanguages -- [ ] HarfBuzzSharp.OpenTypeMetrics - - [ ] M:HarfBuzzSharp.OpenTypeMetrics.#ctor(HarfBuzzSharp.Font) - - [ ] M:HarfBuzzSharp.OpenTypeMetrics.GetVariation(HarfBuzzSharp.OpenTypeMetricsTag) - - [ ] M:HarfBuzzSharp.OpenTypeMetrics.GetXVariation(HarfBuzzSharp.OpenTypeMetricsTag) - - [ ] M:HarfBuzzSharp.OpenTypeMetrics.GetYVariation(HarfBuzzSharp.OpenTypeMetricsTag) - - [ ] M:HarfBuzzSharp.OpenTypeMetrics.TryGetPosition(HarfBuzzSharp.OpenTypeMetricsTag,System.Int32@) -- [ ] HarfBuzzSharp.OpenTypeMetricsTag - - [ ] F:HarfBuzzSharp.OpenTypeMetricsTag.CapHeight - - [ ] F:HarfBuzzSharp.OpenTypeMetricsTag.HorizontalAscender - - [ ] F:HarfBuzzSharp.OpenTypeMetricsTag.HorizontalCaretOffset - - [ ] F:HarfBuzzSharp.OpenTypeMetricsTag.HorizontalCaretRise - - [ ] F:HarfBuzzSharp.OpenTypeMetricsTag.HorizontalCaretRun - - [ ] F:HarfBuzzSharp.OpenTypeMetricsTag.HorizontalClippingAscent - - [ ] F:HarfBuzzSharp.OpenTypeMetricsTag.HorizontalClippingDescent - - [ ] F:HarfBuzzSharp.OpenTypeMetricsTag.HorizontalDescender - - [ ] F:HarfBuzzSharp.OpenTypeMetricsTag.HorizontalLineGap - - [ ] F:HarfBuzzSharp.OpenTypeMetricsTag.StrikeoutOffset - - [ ] F:HarfBuzzSharp.OpenTypeMetricsTag.StrikeoutSize - - [ ] F:HarfBuzzSharp.OpenTypeMetricsTag.SubScriptEmXOffset - - [ ] F:HarfBuzzSharp.OpenTypeMetricsTag.SubScriptEmXSize - - [ ] F:HarfBuzzSharp.OpenTypeMetricsTag.SubScriptEmYOffset - - [ ] F:HarfBuzzSharp.OpenTypeMetricsTag.SubScriptEmYSize - - [ ] F:HarfBuzzSharp.OpenTypeMetricsTag.SuperScriptEmXOffset - - [ ] F:HarfBuzzSharp.OpenTypeMetricsTag.SuperScriptEmXSize - - [ ] F:HarfBuzzSharp.OpenTypeMetricsTag.SuperScriptEmYOffset - - [ ] F:HarfBuzzSharp.OpenTypeMetricsTag.SuperScriptEmYSize - - [ ] F:HarfBuzzSharp.OpenTypeMetricsTag.UnderlineOffset - - [ ] F:HarfBuzzSharp.OpenTypeMetricsTag.UnderlineSize - - [ ] F:HarfBuzzSharp.OpenTypeMetricsTag.VerticalAscender - - [ ] F:HarfBuzzSharp.OpenTypeMetricsTag.VerticalCaretOffset - - [ ] F:HarfBuzzSharp.OpenTypeMetricsTag.VerticalCaretRise - - [ ] F:HarfBuzzSharp.OpenTypeMetricsTag.VerticalCaretRun - - [ ] F:HarfBuzzSharp.OpenTypeMetricsTag.VerticalDescender - - [ ] F:HarfBuzzSharp.OpenTypeMetricsTag.VerticalLineGap - - [ ] F:HarfBuzzSharp.OpenTypeMetricsTag.XHeight -- [ ] HarfBuzzSharp.OpenTypeNameEntry - - [ ] M:HarfBuzzSharp.OpenTypeNameEntry.Equals(HarfBuzzSharp.OpenTypeNameEntry) - - [ ] M:HarfBuzzSharp.OpenTypeNameEntry.Equals(System.Object) - - [ ] M:HarfBuzzSharp.OpenTypeNameEntry.GetHashCode - - [ ] M:HarfBuzzSharp.OpenTypeNameEntry.op_Equality(HarfBuzzSharp.OpenTypeNameEntry,HarfBuzzSharp.OpenTypeNameEntry) - - [ ] M:HarfBuzzSharp.OpenTypeNameEntry.op_Inequality(HarfBuzzSharp.OpenTypeNameEntry,HarfBuzzSharp.OpenTypeNameEntry) - - [ ] P:HarfBuzzSharp.OpenTypeNameEntry.Language - - [ ] P:HarfBuzzSharp.OpenTypeNameEntry.NameId - - [ ] P:HarfBuzzSharp.OpenTypeNameEntry.Var -- [ ] HarfBuzzSharp.OpenTypeNameId - - [ ] F:HarfBuzzSharp.OpenTypeNameId.CidFindFontName - - [ ] F:HarfBuzzSharp.OpenTypeNameId.Copyright - - [ ] F:HarfBuzzSharp.OpenTypeNameId.DarkBackground - - [ ] F:HarfBuzzSharp.OpenTypeNameId.Description - - [ ] F:HarfBuzzSharp.OpenTypeNameId.Designer - - [ ] F:HarfBuzzSharp.OpenTypeNameId.DesignerUrl - - [ ] F:HarfBuzzSharp.OpenTypeNameId.FontFamily - - [ ] F:HarfBuzzSharp.OpenTypeNameId.FontSubfamily - - [ ] F:HarfBuzzSharp.OpenTypeNameId.FullName - - [ ] F:HarfBuzzSharp.OpenTypeNameId.Invalid - - [ ] F:HarfBuzzSharp.OpenTypeNameId.License - - [ ] F:HarfBuzzSharp.OpenTypeNameId.LicenseUrl - - [ ] F:HarfBuzzSharp.OpenTypeNameId.LightBackground - - [ ] F:HarfBuzzSharp.OpenTypeNameId.MacFullName - - [ ] F:HarfBuzzSharp.OpenTypeNameId.Manufacturer - - [ ] F:HarfBuzzSharp.OpenTypeNameId.PostscriptName - - [ ] F:HarfBuzzSharp.OpenTypeNameId.SampleText - - [ ] F:HarfBuzzSharp.OpenTypeNameId.Trademark - - [ ] F:HarfBuzzSharp.OpenTypeNameId.TypographicFamily - - [ ] F:HarfBuzzSharp.OpenTypeNameId.TypographicSubfamily - - [ ] F:HarfBuzzSharp.OpenTypeNameId.UniqueId - - [ ] F:HarfBuzzSharp.OpenTypeNameId.VariationsPostscriptPrefix - - [ ] F:HarfBuzzSharp.OpenTypeNameId.VendorUrl - - [ ] F:HarfBuzzSharp.OpenTypeNameId.VersionString - - [ ] F:HarfBuzzSharp.OpenTypeNameId.WwsFamily - - [ ] F:HarfBuzzSharp.OpenTypeNameId.WwsSubfamily -- [ ] HarfBuzzSharp.OpenTypeVarAxis - - [ ] M:HarfBuzzSharp.OpenTypeVarAxis.Equals(HarfBuzzSharp.OpenTypeVarAxis) - - [ ] M:HarfBuzzSharp.OpenTypeVarAxis.Equals(System.Object) - - [ ] M:HarfBuzzSharp.OpenTypeVarAxis.GetHashCode - - [ ] M:HarfBuzzSharp.OpenTypeVarAxis.op_Equality(HarfBuzzSharp.OpenTypeVarAxis,HarfBuzzSharp.OpenTypeVarAxis) - - [ ] M:HarfBuzzSharp.OpenTypeVarAxis.op_Inequality(HarfBuzzSharp.OpenTypeVarAxis,HarfBuzzSharp.OpenTypeVarAxis) - - [ ] P:HarfBuzzSharp.OpenTypeVarAxis.DefaultValue - - [ ] P:HarfBuzzSharp.OpenTypeVarAxis.MaxValue - - [ ] P:HarfBuzzSharp.OpenTypeVarAxis.MinValue - - [ ] P:HarfBuzzSharp.OpenTypeVarAxis.NameId - - [ ] P:HarfBuzzSharp.OpenTypeVarAxis.Tag -- [ ] HarfBuzzSharp.OpenTypeVarAxisFlags - - [ ] F:HarfBuzzSharp.OpenTypeVarAxisFlags.Hidden -- [ ] HarfBuzzSharp.OpenTypeVarAxisInfo - - [ ] M:HarfBuzzSharp.OpenTypeVarAxisInfo.Equals(HarfBuzzSharp.OpenTypeVarAxisInfo) - - [ ] M:HarfBuzzSharp.OpenTypeVarAxisInfo.Equals(System.Object) - - [ ] M:HarfBuzzSharp.OpenTypeVarAxisInfo.GetHashCode - - [ ] M:HarfBuzzSharp.OpenTypeVarAxisInfo.op_Equality(HarfBuzzSharp.OpenTypeVarAxisInfo,HarfBuzzSharp.OpenTypeVarAxisInfo) - - [ ] M:HarfBuzzSharp.OpenTypeVarAxisInfo.op_Inequality(HarfBuzzSharp.OpenTypeVarAxisInfo,HarfBuzzSharp.OpenTypeVarAxisInfo) - - [ ] P:HarfBuzzSharp.OpenTypeVarAxisInfo.AxisIndex - - [ ] P:HarfBuzzSharp.OpenTypeVarAxisInfo.DefaultValue - - [ ] P:HarfBuzzSharp.OpenTypeVarAxisInfo.Flags - - [ ] P:HarfBuzzSharp.OpenTypeVarAxisInfo.MaxValue - - [ ] P:HarfBuzzSharp.OpenTypeVarAxisInfo.MinValue - - [ ] P:HarfBuzzSharp.OpenTypeVarAxisInfo.NameId - - [ ] P:HarfBuzzSharp.OpenTypeVarAxisInfo.Tag -- [ ] HarfBuzzSharp.ReleaseDelegate -- [ ] HarfBuzzSharp.Script - - [ ] F:HarfBuzzSharp.Script.Adlam - - [ ] F:HarfBuzzSharp.Script.Ahom - - [ ] F:HarfBuzzSharp.Script.AnatolianHieroglyphs - - [ ] F:HarfBuzzSharp.Script.Arabic - - [ ] F:HarfBuzzSharp.Script.Armenian - - [ ] F:HarfBuzzSharp.Script.Avestan - - [ ] F:HarfBuzzSharp.Script.Balinese - - [ ] F:HarfBuzzSharp.Script.Bamum - - [ ] F:HarfBuzzSharp.Script.BassaVah - - [ ] F:HarfBuzzSharp.Script.Batak - - [ ] F:HarfBuzzSharp.Script.Bengali - - [ ] F:HarfBuzzSharp.Script.Bhaiksuki - - [ ] F:HarfBuzzSharp.Script.Bopomofo - - [ ] F:HarfBuzzSharp.Script.Brahmi - - [ ] F:HarfBuzzSharp.Script.Braille - - [ ] F:HarfBuzzSharp.Script.Buginese - - [ ] F:HarfBuzzSharp.Script.Buhid - - [ ] F:HarfBuzzSharp.Script.CanadianSyllabics - - [ ] F:HarfBuzzSharp.Script.Carian - - [ ] F:HarfBuzzSharp.Script.CaucasianAlbanian - - [ ] F:HarfBuzzSharp.Script.Chakma - - [ ] F:HarfBuzzSharp.Script.Cham - - [ ] F:HarfBuzzSharp.Script.Cherokee - - [ ] F:HarfBuzzSharp.Script.Common - - [ ] F:HarfBuzzSharp.Script.Coptic - - [ ] F:HarfBuzzSharp.Script.Cuneiform - - [ ] F:HarfBuzzSharp.Script.Cypriot - - [ ] F:HarfBuzzSharp.Script.Cyrillic - - [ ] F:HarfBuzzSharp.Script.Deseret - - [ ] F:HarfBuzzSharp.Script.Devanagari - - [ ] F:HarfBuzzSharp.Script.Dogra - - [ ] F:HarfBuzzSharp.Script.Duployan - - [ ] F:HarfBuzzSharp.Script.EgyptianHieroglyphs - - [ ] F:HarfBuzzSharp.Script.Elbasan - - [ ] F:HarfBuzzSharp.Script.Ethiopic - - [ ] F:HarfBuzzSharp.Script.Georgian - - [ ] F:HarfBuzzSharp.Script.Glagolitic - - [ ] F:HarfBuzzSharp.Script.Gothic - - [ ] F:HarfBuzzSharp.Script.Grantha - - [ ] F:HarfBuzzSharp.Script.Greek - - [ ] F:HarfBuzzSharp.Script.Gujarati - - [ ] F:HarfBuzzSharp.Script.GunjalaGondi - - [ ] F:HarfBuzzSharp.Script.Gurmukhi - - [ ] F:HarfBuzzSharp.Script.Han - - [ ] F:HarfBuzzSharp.Script.Hangul - - [ ] F:HarfBuzzSharp.Script.HanifiRohingya - - [ ] F:HarfBuzzSharp.Script.Hanunoo - - [ ] F:HarfBuzzSharp.Script.Hatran - - [ ] F:HarfBuzzSharp.Script.Hebrew - - [ ] F:HarfBuzzSharp.Script.Hiragana - - [ ] F:HarfBuzzSharp.Script.ImperialAramaic - - [ ] F:HarfBuzzSharp.Script.Inherited - - [ ] F:HarfBuzzSharp.Script.InscriptionalPahlavi - - [ ] F:HarfBuzzSharp.Script.InscriptionalParthian - - [ ] F:HarfBuzzSharp.Script.Invalid - - [ ] F:HarfBuzzSharp.Script.Javanese - - [ ] F:HarfBuzzSharp.Script.Kaithi - - [ ] F:HarfBuzzSharp.Script.Kannada - - [ ] F:HarfBuzzSharp.Script.Katakana - - [ ] F:HarfBuzzSharp.Script.KayahLi - - [ ] F:HarfBuzzSharp.Script.Kharoshthi - - [ ] F:HarfBuzzSharp.Script.Khmer - - [ ] F:HarfBuzzSharp.Script.Khojki - - [ ] F:HarfBuzzSharp.Script.Khudawadi - - [ ] F:HarfBuzzSharp.Script.Lao - - [ ] F:HarfBuzzSharp.Script.Latin - - [ ] F:HarfBuzzSharp.Script.Lepcha - - [ ] F:HarfBuzzSharp.Script.Limbu - - [ ] F:HarfBuzzSharp.Script.LinearA - - [ ] F:HarfBuzzSharp.Script.LinearB - - [ ] F:HarfBuzzSharp.Script.Lisu - - [ ] F:HarfBuzzSharp.Script.Lycian - - [ ] F:HarfBuzzSharp.Script.Lydian - - [ ] F:HarfBuzzSharp.Script.Mahajani - - [ ] F:HarfBuzzSharp.Script.Makasar - - [ ] F:HarfBuzzSharp.Script.Malayalam - - [ ] F:HarfBuzzSharp.Script.Mandaic - - [ ] F:HarfBuzzSharp.Script.Manichaean - - [ ] F:HarfBuzzSharp.Script.Marchen - - [ ] F:HarfBuzzSharp.Script.MasaramGondi - - [ ] F:HarfBuzzSharp.Script.MaxValue - - [ ] F:HarfBuzzSharp.Script.MaxValueSigned - - [ ] F:HarfBuzzSharp.Script.Medefaidrin - - [ ] F:HarfBuzzSharp.Script.MeeteiMayek - - [ ] F:HarfBuzzSharp.Script.MendeKikakui - - [ ] F:HarfBuzzSharp.Script.MeroiticCursive - - [ ] F:HarfBuzzSharp.Script.MeroiticHieroglyphs - - [ ] F:HarfBuzzSharp.Script.Miao - - [ ] F:HarfBuzzSharp.Script.Modi - - [ ] F:HarfBuzzSharp.Script.Mongolian - - [ ] F:HarfBuzzSharp.Script.Mro - - [ ] F:HarfBuzzSharp.Script.Multani - - [ ] F:HarfBuzzSharp.Script.Myanmar - - [ ] F:HarfBuzzSharp.Script.Nabataean - - [ ] F:HarfBuzzSharp.Script.Newa - - [ ] F:HarfBuzzSharp.Script.NewTaiLue - - [ ] F:HarfBuzzSharp.Script.Nko - - [ ] F:HarfBuzzSharp.Script.Nushu - - [ ] F:HarfBuzzSharp.Script.Ogham - - [ ] F:HarfBuzzSharp.Script.OlChiki - - [ ] F:HarfBuzzSharp.Script.OldHungarian - - [ ] F:HarfBuzzSharp.Script.OldItalic - - [ ] F:HarfBuzzSharp.Script.OldNorthArabian - - [ ] F:HarfBuzzSharp.Script.OldPermic - - [ ] F:HarfBuzzSharp.Script.OldPersian - - [ ] F:HarfBuzzSharp.Script.OldSogdian - - [ ] F:HarfBuzzSharp.Script.OldSouthArabian - - [ ] F:HarfBuzzSharp.Script.OldTurkic - - [ ] F:HarfBuzzSharp.Script.Oriya - - [ ] F:HarfBuzzSharp.Script.Osage - - [ ] F:HarfBuzzSharp.Script.Osmanya - - [ ] F:HarfBuzzSharp.Script.PahawhHmong - - [ ] F:HarfBuzzSharp.Script.Palmyrene - - [ ] F:HarfBuzzSharp.Script.PauCinHau - - [ ] F:HarfBuzzSharp.Script.PhagsPa - - [ ] F:HarfBuzzSharp.Script.Phoenician - - [ ] F:HarfBuzzSharp.Script.PsalterPahlavi - - [ ] F:HarfBuzzSharp.Script.Rejang - - [ ] F:HarfBuzzSharp.Script.Runic - - [ ] F:HarfBuzzSharp.Script.Samaritan - - [ ] F:HarfBuzzSharp.Script.Saurashtra - - [ ] F:HarfBuzzSharp.Script.Sharada - - [ ] F:HarfBuzzSharp.Script.Shavian - - [ ] F:HarfBuzzSharp.Script.Siddham - - [ ] F:HarfBuzzSharp.Script.Signwriting - - [ ] F:HarfBuzzSharp.Script.Sinhala - - [ ] F:HarfBuzzSharp.Script.Sogdian - - [ ] F:HarfBuzzSharp.Script.SoraSompeng - - [ ] F:HarfBuzzSharp.Script.Soyombo - - [ ] F:HarfBuzzSharp.Script.Sundanese - - [ ] F:HarfBuzzSharp.Script.SylotiNagri - - [ ] F:HarfBuzzSharp.Script.Syriac - - [ ] F:HarfBuzzSharp.Script.Tagalog - - [ ] F:HarfBuzzSharp.Script.Tagbanwa - - [ ] F:HarfBuzzSharp.Script.TaiLe - - [ ] F:HarfBuzzSharp.Script.TaiTham - - [ ] F:HarfBuzzSharp.Script.TaiViet - - [ ] F:HarfBuzzSharp.Script.Takri - - [ ] F:HarfBuzzSharp.Script.Tamil - - [ ] F:HarfBuzzSharp.Script.Tangut - - [ ] F:HarfBuzzSharp.Script.Telugu - - [ ] F:HarfBuzzSharp.Script.Thaana - - [ ] F:HarfBuzzSharp.Script.Thai - - [ ] F:HarfBuzzSharp.Script.Tibetan - - [ ] F:HarfBuzzSharp.Script.Tifinagh - - [ ] F:HarfBuzzSharp.Script.Tirhuta - - [ ] F:HarfBuzzSharp.Script.Ugaritic - - [ ] F:HarfBuzzSharp.Script.Unknown - - [ ] F:HarfBuzzSharp.Script.Vai - - [ ] F:HarfBuzzSharp.Script.WarangCiti - - [ ] F:HarfBuzzSharp.Script.Yi - - [ ] F:HarfBuzzSharp.Script.ZanabazarSquare - - [ ] M:HarfBuzzSharp.Script.Equals(HarfBuzzSharp.Script) - - [ ] M:HarfBuzzSharp.Script.Equals(System.Object) - - [ ] M:HarfBuzzSharp.Script.GetHashCode - - [ ] M:HarfBuzzSharp.Script.op_Implicit(HarfBuzzSharp.Script)~System.UInt32 - - [ ] M:HarfBuzzSharp.Script.op_Implicit(System.UInt32)~HarfBuzzSharp.Script - - [ ] M:HarfBuzzSharp.Script.Parse(System.String) - - [ ] M:HarfBuzzSharp.Script.ToString - - [ ] M:HarfBuzzSharp.Script.TryParse(System.String,HarfBuzzSharp.Script@) - - [ ] P:HarfBuzzSharp.Script.HorizontalDirection -- [ ] HarfBuzzSharp.ScriptDelegate -- [ ] HarfBuzzSharp.SerializeFlag - - [ ] F:HarfBuzzSharp.SerializeFlag.Default - - [ ] F:HarfBuzzSharp.SerializeFlag.GlyphExtents - - [ ] F:HarfBuzzSharp.SerializeFlag.GlyphFlags - - [ ] F:HarfBuzzSharp.SerializeFlag.NoAdvances - - [ ] F:HarfBuzzSharp.SerializeFlag.NoClusters - - [ ] F:HarfBuzzSharp.SerializeFlag.NoGlyphNames - - [ ] F:HarfBuzzSharp.SerializeFlag.NoPositions -- [ ] HarfBuzzSharp.SerializeFormat - - [ ] F:HarfBuzzSharp.SerializeFormat.Invalid - - [ ] F:HarfBuzzSharp.SerializeFormat.Json - - [ ] F:HarfBuzzSharp.SerializeFormat.Text -- [ ] HarfBuzzSharp.Tag - - [ ] F:HarfBuzzSharp.Tag.Max - - [ ] F:HarfBuzzSharp.Tag.MaxSigned - - [ ] F:HarfBuzzSharp.Tag.None - - [ ] M:HarfBuzzSharp.Tag.#ctor(System.Char,System.Char,System.Char,System.Char) - - [ ] M:HarfBuzzSharp.Tag.Equals(HarfBuzzSharp.Tag) - - [ ] M:HarfBuzzSharp.Tag.Equals(System.Object) - - [ ] M:HarfBuzzSharp.Tag.GetHashCode - - [ ] M:HarfBuzzSharp.Tag.op_Implicit(HarfBuzzSharp.Tag)~System.UInt32 - - [ ] M:HarfBuzzSharp.Tag.op_Implicit(System.UInt32)~HarfBuzzSharp.Tag - - [ ] M:HarfBuzzSharp.Tag.Parse(System.String) - - [ ] M:HarfBuzzSharp.Tag.ToString -- [ ] HarfBuzzSharp.UnicodeCombiningClass - - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.Above - - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.AboveLeft - - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.AboveRight - - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.AttachedAbove - - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.AttachedAboveRight - - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.AttachedBelow - - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.AttachedBelowLeft - - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.Below - - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.BelowLeft - - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.BelowRight - - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC10 - - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC103 - - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC107 - - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC11 - - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC118 - - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC12 - - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC122 - - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC129 - - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC13 - - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC130 - - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC133 - - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC14 - - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC15 - - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC16 - - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC17 - - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC18 - - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC19 - - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC20 - - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC21 - - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC22 - - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC23 - - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC24 - - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC25 - - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC26 - - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC27 - - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC28 - - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC29 - - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC30 - - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC31 - - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC32 - - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC33 - - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC34 - - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC35 - - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC36 - - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC84 - - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.CCC91 - - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.DoubleAbove - - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.DoubleBelow - - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.Invalid - - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.IotaSubscript - - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.KanaVoicing - - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.Left - - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.NotReordered - - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.Nukta - - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.Overlay - - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.Right - - [ ] F:HarfBuzzSharp.UnicodeCombiningClass.Virama -- [ ] HarfBuzzSharp.UnicodeFunctions - - [ ] M:HarfBuzzSharp.UnicodeFunctions.#ctor(HarfBuzzSharp.UnicodeFunctions) - - [ ] M:HarfBuzzSharp.UnicodeFunctions.Dispose(System.Boolean) - - [ ] M:HarfBuzzSharp.UnicodeFunctions.DisposeHandler - - [ ] M:HarfBuzzSharp.UnicodeFunctions.GetCombiningClass(System.Int32) - - [ ] M:HarfBuzzSharp.UnicodeFunctions.GetCombiningClass(System.UInt32) - - [ ] M:HarfBuzzSharp.UnicodeFunctions.GetGeneralCategory(System.Int32) - - [ ] M:HarfBuzzSharp.UnicodeFunctions.GetGeneralCategory(System.UInt32) - - [ ] M:HarfBuzzSharp.UnicodeFunctions.GetMirroring(System.Int32) - - [ ] M:HarfBuzzSharp.UnicodeFunctions.GetMirroring(System.UInt32) - - [ ] M:HarfBuzzSharp.UnicodeFunctions.GetScript(System.Int32) - - [ ] M:HarfBuzzSharp.UnicodeFunctions.GetScript(System.UInt32) - - [ ] M:HarfBuzzSharp.UnicodeFunctions.MakeImmutable - - [ ] M:HarfBuzzSharp.UnicodeFunctions.SetCombiningClassDelegate(HarfBuzzSharp.CombiningClassDelegate,HarfBuzzSharp.ReleaseDelegate) - - [ ] M:HarfBuzzSharp.UnicodeFunctions.SetComposeDelegate(HarfBuzzSharp.ComposeDelegate,HarfBuzzSharp.ReleaseDelegate) - - [ ] M:HarfBuzzSharp.UnicodeFunctions.SetDecomposeDelegate(HarfBuzzSharp.DecomposeDelegate,HarfBuzzSharp.ReleaseDelegate) - - [ ] M:HarfBuzzSharp.UnicodeFunctions.SetGeneralCategoryDelegate(HarfBuzzSharp.GeneralCategoryDelegate,HarfBuzzSharp.ReleaseDelegate) - - [ ] M:HarfBuzzSharp.UnicodeFunctions.SetMirroringDelegate(HarfBuzzSharp.MirroringDelegate,HarfBuzzSharp.ReleaseDelegate) - - [ ] M:HarfBuzzSharp.UnicodeFunctions.SetScriptDelegate(HarfBuzzSharp.ScriptDelegate,HarfBuzzSharp.ReleaseDelegate) - - [ ] M:HarfBuzzSharp.UnicodeFunctions.TryCompose(System.Int32,System.Int32,System.Int32@) - - [ ] M:HarfBuzzSharp.UnicodeFunctions.TryCompose(System.UInt32,System.UInt32,System.UInt32@) - - [ ] M:HarfBuzzSharp.UnicodeFunctions.TryDecompose(System.Int32,System.Int32@,System.Int32@) - - [ ] M:HarfBuzzSharp.UnicodeFunctions.TryDecompose(System.UInt32,System.UInt32@,System.UInt32@) - - [ ] P:HarfBuzzSharp.UnicodeFunctions.Default - - [ ] P:HarfBuzzSharp.UnicodeFunctions.Empty - - [ ] P:HarfBuzzSharp.UnicodeFunctions.IsImmutable - - [ ] P:HarfBuzzSharp.UnicodeFunctions.Parent -- [ ] HarfBuzzSharp.UnicodeGeneralCategory - - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.ClosePunctuation - - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.ConnectPunctuation - - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.Control - - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.CurrencySymbol - - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.DashPunctuation - - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.DecimalNumber - - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.EnclosingMark - - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.FinalPunctuation - - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.Format - - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.InitialPunctuation - - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.LetterNumber - - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.LineSeparator - - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.LowercaseLetter - - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.MathSymbol - - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.ModifierLetter - - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.ModifierSymbol - - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.NonSpacingMark - - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.OpenPunctuation - - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.OtherLetter - - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.OtherNumber - - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.OtherPunctuation - - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.OtherSymbol - - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.ParagraphSeparator - - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.PrivateUse - - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.SpaceSeparator - - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.SpacingMark - - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.Surrogate - - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.TitlecaseLetter - - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.Unassigned - - [ ] F:HarfBuzzSharp.UnicodeGeneralCategory.UppercaseLetter -- [ ] HarfBuzzSharp.Variation - - [ ] M:HarfBuzzSharp.Variation.Equals(HarfBuzzSharp.Variation) - - [ ] M:HarfBuzzSharp.Variation.Equals(System.Object) - - [ ] M:HarfBuzzSharp.Variation.GetHashCode - - [ ] M:HarfBuzzSharp.Variation.op_Equality(HarfBuzzSharp.Variation,HarfBuzzSharp.Variation) - - [ ] M:HarfBuzzSharp.Variation.op_Inequality(HarfBuzzSharp.Variation,HarfBuzzSharp.Variation) - - [ ] P:HarfBuzzSharp.Variation.Tag - - [ ] P:HarfBuzzSharp.Variation.Value -- [ ] HarfBuzzSharp.VariationGlyphDelegate - -## Namespace HarfBuzzSharp.Internals - -- [ ] HarfBuzzSharp.Internals.PlatformConfiguration - - [ ] P:HarfBuzzSharp.Internals.PlatformConfiguration.Is64Bit - - [ ] P:HarfBuzzSharp.Internals.PlatformConfiguration.IsArm - - [ ] P:HarfBuzzSharp.Internals.PlatformConfiguration.IsGlibc - - [ ] P:HarfBuzzSharp.Internals.PlatformConfiguration.IsLinux - - [ ] P:HarfBuzzSharp.Internals.PlatformConfiguration.IsMac - - [ ] P:HarfBuzzSharp.Internals.PlatformConfiguration.IsUnix - - [ ] P:HarfBuzzSharp.Internals.PlatformConfiguration.IsWindows - - [ ] P:HarfBuzzSharp.Internals.PlatformConfiguration.LinuxFlavor - -## Namespace SkiaSharp - -- [ ] SkiaSharp.GRBackend - - [ ] F:SkiaSharp.GRBackend.Dawn - - [ ] F:SkiaSharp.GRBackend.Direct3D - - [ ] F:SkiaSharp.GRBackend.Metal - - [ ] F:SkiaSharp.GRBackend.OpenGL - - [ ] F:SkiaSharp.GRBackend.Vulkan -- [ ] SkiaSharp.GRBackendRenderTarget - - [ ] M:SkiaSharp.GRBackendRenderTarget.#ctor(SkiaSharp.GRBackend,SkiaSharp.GRBackendRenderTargetDesc) - - [ ] M:SkiaSharp.GRBackendRenderTarget.#ctor(System.Int32,System.Int32,System.Int32,SkiaSharp.GRVkImageInfo) - - [ ] M:SkiaSharp.GRBackendRenderTarget.#ctor(System.Int32,System.Int32,System.Int32,System.Int32,SkiaSharp.GRGlFramebufferInfo) - - [ ] M:SkiaSharp.GRBackendRenderTarget.Dispose(System.Boolean) - - [ ] M:SkiaSharp.GRBackendRenderTarget.DisposeNative - - [ ] M:SkiaSharp.GRBackendRenderTarget.GetGlFramebufferInfo - - [ ] M:SkiaSharp.GRBackendRenderTarget.GetGlFramebufferInfo(SkiaSharp.GRGlFramebufferInfo@) - - [ ] P:SkiaSharp.GRBackendRenderTarget.Backend - - [ ] P:SkiaSharp.GRBackendRenderTarget.Height - - [ ] P:SkiaSharp.GRBackendRenderTarget.IsValid - - [ ] P:SkiaSharp.GRBackendRenderTarget.Rect - - [ ] P:SkiaSharp.GRBackendRenderTarget.SampleCount - - [ ] P:SkiaSharp.GRBackendRenderTarget.Size - - [ ] P:SkiaSharp.GRBackendRenderTarget.StencilBits - - [ ] P:SkiaSharp.GRBackendRenderTarget.Width -- [ ] SkiaSharp.GRBackendRenderTargetDesc - - [ ] M:SkiaSharp.GRBackendRenderTargetDesc.Equals(SkiaSharp.GRBackendRenderTargetDesc) - - [ ] M:SkiaSharp.GRBackendRenderTargetDesc.Equals(System.Object) - - [ ] M:SkiaSharp.GRBackendRenderTargetDesc.GetHashCode - - [ ] M:SkiaSharp.GRBackendRenderTargetDesc.op_Equality(SkiaSharp.GRBackendRenderTargetDesc,SkiaSharp.GRBackendRenderTargetDesc) - - [ ] M:SkiaSharp.GRBackendRenderTargetDesc.op_Inequality(SkiaSharp.GRBackendRenderTargetDesc,SkiaSharp.GRBackendRenderTargetDesc) - - [ ] P:SkiaSharp.GRBackendRenderTargetDesc.Config - - [ ] P:SkiaSharp.GRBackendRenderTargetDesc.Height - - [ ] P:SkiaSharp.GRBackendRenderTargetDesc.Origin - - [ ] P:SkiaSharp.GRBackendRenderTargetDesc.Rect - - [ ] P:SkiaSharp.GRBackendRenderTargetDesc.RenderTargetHandle - - [ ] P:SkiaSharp.GRBackendRenderTargetDesc.SampleCount - - [ ] P:SkiaSharp.GRBackendRenderTargetDesc.Size - - [ ] P:SkiaSharp.GRBackendRenderTargetDesc.StencilBits - - [ ] P:SkiaSharp.GRBackendRenderTargetDesc.Width -- [ ] SkiaSharp.GRBackendState - - [ ] F:SkiaSharp.GRBackendState.All - - [ ] F:SkiaSharp.GRBackendState.None -- [ ] SkiaSharp.GRBackendTexture - - [ ] M:SkiaSharp.GRBackendTexture.#ctor(SkiaSharp.GRBackendTextureDesc) - - [ ] M:SkiaSharp.GRBackendTexture.#ctor(SkiaSharp.GRGlBackendTextureDesc) - - [ ] M:SkiaSharp.GRBackendTexture.#ctor(System.Int32,System.Int32,SkiaSharp.GRVkImageInfo) - - [ ] M:SkiaSharp.GRBackendTexture.#ctor(System.Int32,System.Int32,System.Boolean,SkiaSharp.GRGlTextureInfo) - - [ ] M:SkiaSharp.GRBackendTexture.Dispose(System.Boolean) - - [ ] M:SkiaSharp.GRBackendTexture.DisposeNative - - [ ] M:SkiaSharp.GRBackendTexture.GetGlTextureInfo - - [ ] M:SkiaSharp.GRBackendTexture.GetGlTextureInfo(SkiaSharp.GRGlTextureInfo@) - - [ ] P:SkiaSharp.GRBackendTexture.Backend - - [ ] P:SkiaSharp.GRBackendTexture.HasMipMaps - - [ ] P:SkiaSharp.GRBackendTexture.Height - - [ ] P:SkiaSharp.GRBackendTexture.IsValid - - [ ] P:SkiaSharp.GRBackendTexture.Rect - - [ ] P:SkiaSharp.GRBackendTexture.Size - - [ ] P:SkiaSharp.GRBackendTexture.Width -- [ ] SkiaSharp.GRBackendTextureDesc - - [ ] M:SkiaSharp.GRBackendTextureDesc.Equals(SkiaSharp.GRBackendTextureDesc) - - [ ] M:SkiaSharp.GRBackendTextureDesc.Equals(System.Object) - - [ ] M:SkiaSharp.GRBackendTextureDesc.GetHashCode - - [ ] M:SkiaSharp.GRBackendTextureDesc.op_Equality(SkiaSharp.GRBackendTextureDesc,SkiaSharp.GRBackendTextureDesc) - - [ ] M:SkiaSharp.GRBackendTextureDesc.op_Inequality(SkiaSharp.GRBackendTextureDesc,SkiaSharp.GRBackendTextureDesc) - - [ ] P:SkiaSharp.GRBackendTextureDesc.Config - - [ ] P:SkiaSharp.GRBackendTextureDesc.Flags - - [ ] P:SkiaSharp.GRBackendTextureDesc.Height - - [ ] P:SkiaSharp.GRBackendTextureDesc.Origin - - [ ] P:SkiaSharp.GRBackendTextureDesc.Rect - - [ ] P:SkiaSharp.GRBackendTextureDesc.SampleCount - - [ ] P:SkiaSharp.GRBackendTextureDesc.Size - - [ ] P:SkiaSharp.GRBackendTextureDesc.TextureHandle - - [ ] P:SkiaSharp.GRBackendTextureDesc.Width -- [ ] SkiaSharp.GRBackendTextureDescFlags - - [ ] F:SkiaSharp.GRBackendTextureDescFlags.None - - [ ] F:SkiaSharp.GRBackendTextureDescFlags.RenderTarget -- [ ] SkiaSharp.GRContext - - [ ] M:SkiaSharp.GRContext.AbandonContext(System.Boolean) - - [ ] M:SkiaSharp.GRContext.Create(SkiaSharp.GRBackend,SkiaSharp.GRGlInterface,SkiaSharp.GRContextOptions) - - [ ] M:SkiaSharp.GRContext.Create(SkiaSharp.GRBackend,SkiaSharp.GRGlInterface) - - [ ] M:SkiaSharp.GRContext.Create(SkiaSharp.GRBackend,System.IntPtr,SkiaSharp.GRContextOptions) - - [ ] M:SkiaSharp.GRContext.Create(SkiaSharp.GRBackend,System.IntPtr) - - [ ] M:SkiaSharp.GRContext.Create(SkiaSharp.GRBackend) - - [ ] M:SkiaSharp.GRContext.CreateGl - - [ ] M:SkiaSharp.GRContext.CreateGl(SkiaSharp.GRContextOptions) - - [ ] M:SkiaSharp.GRContext.CreateGl(SkiaSharp.GRGlInterface,SkiaSharp.GRContextOptions) - - [ ] M:SkiaSharp.GRContext.CreateGl(SkiaSharp.GRGlInterface) - - [ ] M:SkiaSharp.GRContext.CreateVulkan(SkiaSharp.GRVkBackendContext,SkiaSharp.GRContextOptions) - - [ ] M:SkiaSharp.GRContext.CreateVulkan(SkiaSharp.GRVkBackendContext) - - [ ] M:SkiaSharp.GRContext.Dispose(System.Boolean) - - [ ] M:SkiaSharp.GRContext.DisposeNative - - [ ] M:SkiaSharp.GRContext.DumpMemoryStatistics(SkiaSharp.SKTraceMemoryDump) - - [ ] M:SkiaSharp.GRContext.Flush - - [ ] M:SkiaSharp.GRContext.Flush(System.Boolean,System.Boolean) - - [ ] M:SkiaSharp.GRContext.GetMaxSurfaceSampleCount(SkiaSharp.SKColorType) - - [ ] M:SkiaSharp.GRContext.GetRecommendedSampleCount(SkiaSharp.GRPixelConfig,System.Single) - - [ ] M:SkiaSharp.GRContext.GetResourceCacheLimit - - [ ] M:SkiaSharp.GRContext.GetResourceCacheLimits(System.Int32@,System.Int64@) - - [ ] M:SkiaSharp.GRContext.GetResourceCacheUsage(System.Int32@,System.Int64@) - - [ ] M:SkiaSharp.GRContext.PurgeResources - - [ ] M:SkiaSharp.GRContext.PurgeUnlockedResources(System.Boolean) - - [ ] M:SkiaSharp.GRContext.PurgeUnlockedResources(System.Int64,System.Boolean) - - [ ] M:SkiaSharp.GRContext.PurgeUnusedResources(System.Int64) - - [ ] M:SkiaSharp.GRContext.ResetContext(SkiaSharp.GRBackendState) - - [ ] M:SkiaSharp.GRContext.ResetContext(SkiaSharp.GRGlBackendState) - - [ ] M:SkiaSharp.GRContext.ResetContext(System.UInt32) - - [ ] M:SkiaSharp.GRContext.SetResourceCacheLimit(System.Int64) - - [ ] M:SkiaSharp.GRContext.SetResourceCacheLimits(System.Int32,System.Int64) - - [ ] M:SkiaSharp.GRContext.Submit(System.Boolean) - - [ ] P:SkiaSharp.GRContext.Backend - - [ ] P:SkiaSharp.GRContext.IsAbandoned -- [ ] SkiaSharp.GRContextOptions - - [ ] M:SkiaSharp.GRContextOptions.#ctor - - [ ] P:SkiaSharp.GRContextOptions.AllowPathMaskCaching - - [ ] P:SkiaSharp.GRContextOptions.AvoidStencilBuffers - - [ ] P:SkiaSharp.GRContextOptions.BufferMapThreshold - - [ ] P:SkiaSharp.GRContextOptions.Default - - [ ] P:SkiaSharp.GRContextOptions.DisableGpuYuvConversion - - [ ] P:SkiaSharp.GRContextOptions.DoManualMipmapping - - [ ] P:SkiaSharp.GRContextOptions.EnableInstancedRendering - - [ ] P:SkiaSharp.GRContextOptions.GlyphCacheTextureMaximumBytes - - [ ] P:SkiaSharp.GRContextOptions.GpuPathRenderers - - [ ] P:SkiaSharp.GRContextOptions.ImmediateMode - - [ ] P:SkiaSharp.GRContextOptions.MaxTextureSizeOverride - - [ ] P:SkiaSharp.GRContextOptions.MaxTileSizeOverride - - [ ] P:SkiaSharp.GRContextOptions.RequireDecodeDisableForSrgb - - [ ] P:SkiaSharp.GRContextOptions.RuntimeProgramCacheSize - - [ ] P:SkiaSharp.GRContextOptions.SuppressDualSourceBlending - - [ ] P:SkiaSharp.GRContextOptions.SuppressPathRendering - - [ ] P:SkiaSharp.GRContextOptions.SuppressPrints - - [ ] P:SkiaSharp.GRContextOptions.UseDrawInsteadOfPartialRenderTargetWrite - - [ ] P:SkiaSharp.GRContextOptions.UseShaderSwizzling - - [ ] P:SkiaSharp.GRContextOptions.WireframeMode -- [ ] SkiaSharp.GRContextOptionsGpuPathRenderers - - [ ] F:SkiaSharp.GRContextOptionsGpuPathRenderers.AaConvex - - [ ] F:SkiaSharp.GRContextOptionsGpuPathRenderers.AaHairline - - [ ] F:SkiaSharp.GRContextOptionsGpuPathRenderers.AaLinearizing - - [ ] F:SkiaSharp.GRContextOptionsGpuPathRenderers.All - - [ ] F:SkiaSharp.GRContextOptionsGpuPathRenderers.DashLine - - [ ] F:SkiaSharp.GRContextOptionsGpuPathRenderers.Default - - [ ] F:SkiaSharp.GRContextOptionsGpuPathRenderers.Msaa - - [ ] F:SkiaSharp.GRContextOptionsGpuPathRenderers.None - - [ ] F:SkiaSharp.GRContextOptionsGpuPathRenderers.Small - - [ ] F:SkiaSharp.GRContextOptionsGpuPathRenderers.StencilAndCover - - [ ] F:SkiaSharp.GRContextOptionsGpuPathRenderers.Tessellating -- [ ] SkiaSharp.GRGlBackendState - - [ ] F:SkiaSharp.GRGlBackendState.All - - [ ] F:SkiaSharp.GRGlBackendState.Blend - - [ ] F:SkiaSharp.GRGlBackendState.FixedFunction - - [ ] F:SkiaSharp.GRGlBackendState.Misc - - [ ] F:SkiaSharp.GRGlBackendState.MSAAEnable - - [ ] F:SkiaSharp.GRGlBackendState.None - - [ ] F:SkiaSharp.GRGlBackendState.PathRendering - - [ ] F:SkiaSharp.GRGlBackendState.PixelStore - - [ ] F:SkiaSharp.GRGlBackendState.Program - - [ ] F:SkiaSharp.GRGlBackendState.RenderTarget - - [ ] F:SkiaSharp.GRGlBackendState.Stencil - - [ ] F:SkiaSharp.GRGlBackendState.TextureBinding - - [ ] F:SkiaSharp.GRGlBackendState.Vertex - - [ ] F:SkiaSharp.GRGlBackendState.View -- [ ] SkiaSharp.GRGlBackendTextureDesc - - [ ] M:SkiaSharp.GRGlBackendTextureDesc.Equals(SkiaSharp.GRGlBackendTextureDesc) - - [ ] M:SkiaSharp.GRGlBackendTextureDesc.Equals(System.Object) - - [ ] M:SkiaSharp.GRGlBackendTextureDesc.GetHashCode - - [ ] M:SkiaSharp.GRGlBackendTextureDesc.op_Equality(SkiaSharp.GRGlBackendTextureDesc,SkiaSharp.GRGlBackendTextureDesc) - - [ ] M:SkiaSharp.GRGlBackendTextureDesc.op_Inequality(SkiaSharp.GRGlBackendTextureDesc,SkiaSharp.GRGlBackendTextureDesc) - - [ ] P:SkiaSharp.GRGlBackendTextureDesc.Config - - [ ] P:SkiaSharp.GRGlBackendTextureDesc.Flags - - [ ] P:SkiaSharp.GRGlBackendTextureDesc.Height - - [ ] P:SkiaSharp.GRGlBackendTextureDesc.Origin - - [ ] P:SkiaSharp.GRGlBackendTextureDesc.Rect - - [ ] P:SkiaSharp.GRGlBackendTextureDesc.SampleCount - - [ ] P:SkiaSharp.GRGlBackendTextureDesc.Size - - [ ] P:SkiaSharp.GRGlBackendTextureDesc.TextureHandle - - [ ] P:SkiaSharp.GRGlBackendTextureDesc.Width -- [ ] SkiaSharp.GRGlFramebufferInfo - - [ ] M:SkiaSharp.GRGlFramebufferInfo.#ctor(System.UInt32,System.UInt32) - - [ ] M:SkiaSharp.GRGlFramebufferInfo.#ctor(System.UInt32) - - [ ] M:SkiaSharp.GRGlFramebufferInfo.Equals(SkiaSharp.GRGlFramebufferInfo) - - [ ] M:SkiaSharp.GRGlFramebufferInfo.Equals(System.Object) - - [ ] M:SkiaSharp.GRGlFramebufferInfo.GetHashCode - - [ ] M:SkiaSharp.GRGlFramebufferInfo.op_Equality(SkiaSharp.GRGlFramebufferInfo,SkiaSharp.GRGlFramebufferInfo) - - [ ] M:SkiaSharp.GRGlFramebufferInfo.op_Inequality(SkiaSharp.GRGlFramebufferInfo,SkiaSharp.GRGlFramebufferInfo) - - [ ] P:SkiaSharp.GRGlFramebufferInfo.Format - - [ ] P:SkiaSharp.GRGlFramebufferInfo.FramebufferObjectId -- [ ] SkiaSharp.GRGlGetProcDelegate -- [ ] SkiaSharp.GRGlGetProcedureAddressDelegate -- [ ] SkiaSharp.GRGlInterface - - [ ] M:SkiaSharp.GRGlInterface.AssembleAngleInterface(SkiaSharp.GRGlGetProcDelegate) - - [ ] M:SkiaSharp.GRGlInterface.AssembleAngleInterface(System.Object,SkiaSharp.GRGlGetProcDelegate) - - [ ] M:SkiaSharp.GRGlInterface.AssembleGlesInterface(SkiaSharp.GRGlGetProcDelegate) - - [ ] M:SkiaSharp.GRGlInterface.AssembleGlesInterface(System.Object,SkiaSharp.GRGlGetProcDelegate) - - [ ] M:SkiaSharp.GRGlInterface.AssembleGlInterface(SkiaSharp.GRGlGetProcDelegate) - - [ ] M:SkiaSharp.GRGlInterface.AssembleGlInterface(System.Object,SkiaSharp.GRGlGetProcDelegate) - - [ ] M:SkiaSharp.GRGlInterface.AssembleInterface(SkiaSharp.GRGlGetProcDelegate) - - [ ] M:SkiaSharp.GRGlInterface.AssembleInterface(System.Object,SkiaSharp.GRGlGetProcDelegate) - - [ ] M:SkiaSharp.GRGlInterface.Clone - - [ ] M:SkiaSharp.GRGlInterface.Create - - [ ] M:SkiaSharp.GRGlInterface.Create(SkiaSharp.GRGlGetProcedureAddressDelegate) - - [ ] M:SkiaSharp.GRGlInterface.CreateAngle - - [ ] M:SkiaSharp.GRGlInterface.CreateAngle(SkiaSharp.GRGlGetProcedureAddressDelegate) - - [ ] M:SkiaSharp.GRGlInterface.CreateDefaultInterface - - [ ] M:SkiaSharp.GRGlInterface.CreateEvas(System.IntPtr) - - [ ] M:SkiaSharp.GRGlInterface.CreateGles(SkiaSharp.GRGlGetProcedureAddressDelegate) - - [ ] M:SkiaSharp.GRGlInterface.CreateNativeAngleInterface - - [ ] M:SkiaSharp.GRGlInterface.CreateNativeEvasInterface(System.IntPtr) - - [ ] M:SkiaSharp.GRGlInterface.CreateNativeGlInterface - - [ ] M:SkiaSharp.GRGlInterface.CreateOpenGl(SkiaSharp.GRGlGetProcedureAddressDelegate) - - [ ] M:SkiaSharp.GRGlInterface.CreateWebGl(SkiaSharp.GRGlGetProcedureAddressDelegate) - - [ ] M:SkiaSharp.GRGlInterface.Dispose(System.Boolean) - - [ ] M:SkiaSharp.GRGlInterface.HasExtension(System.String) - - [ ] M:SkiaSharp.GRGlInterface.Validate -- [ ] SkiaSharp.GRGlTextureInfo - - [ ] M:SkiaSharp.GRGlTextureInfo.#ctor(System.UInt32,System.UInt32,System.UInt32) - - [ ] M:SkiaSharp.GRGlTextureInfo.#ctor(System.UInt32,System.UInt32) - - [ ] M:SkiaSharp.GRGlTextureInfo.Equals(SkiaSharp.GRGlTextureInfo) - - [ ] M:SkiaSharp.GRGlTextureInfo.Equals(System.Object) - - [ ] M:SkiaSharp.GRGlTextureInfo.GetHashCode - - [ ] M:SkiaSharp.GRGlTextureInfo.op_Equality(SkiaSharp.GRGlTextureInfo,SkiaSharp.GRGlTextureInfo) - - [ ] M:SkiaSharp.GRGlTextureInfo.op_Inequality(SkiaSharp.GRGlTextureInfo,SkiaSharp.GRGlTextureInfo) - - [ ] P:SkiaSharp.GRGlTextureInfo.Format - - [ ] P:SkiaSharp.GRGlTextureInfo.Id - - [ ] P:SkiaSharp.GRGlTextureInfo.Target -- [ ] SkiaSharp.GRPixelConfig - - [ ] F:SkiaSharp.GRPixelConfig.Alpha16 - - [ ] F:SkiaSharp.GRPixelConfig.Alpha8 - - [ ] F:SkiaSharp.GRPixelConfig.Alpha8AsAlpha - - [ ] F:SkiaSharp.GRPixelConfig.Alpha8AsRed - - [ ] F:SkiaSharp.GRPixelConfig.AlphaHalf - - [ ] F:SkiaSharp.GRPixelConfig.AlphaHalfAsLum - - [ ] F:SkiaSharp.GRPixelConfig.AlphaHalfAsRed - - [ ] F:SkiaSharp.GRPixelConfig.Bgra8888 - - [ ] F:SkiaSharp.GRPixelConfig.Gray8 - - [ ] F:SkiaSharp.GRPixelConfig.Gray8AsLum - - [ ] F:SkiaSharp.GRPixelConfig.Gray8AsRed - - [ ] F:SkiaSharp.GRPixelConfig.Rg1616 - - [ ] F:SkiaSharp.GRPixelConfig.Rg88 - - [ ] F:SkiaSharp.GRPixelConfig.Rgb565 - - [ ] F:SkiaSharp.GRPixelConfig.Rgb888 - - [ ] F:SkiaSharp.GRPixelConfig.Rgb888x - - [ ] F:SkiaSharp.GRPixelConfig.Rgba1010102 - - [ ] F:SkiaSharp.GRPixelConfig.Rgba16161616 - - [ ] F:SkiaSharp.GRPixelConfig.Rgba4444 - - [ ] F:SkiaSharp.GRPixelConfig.Rgba8888 - - [ ] F:SkiaSharp.GRPixelConfig.Rgba8888SInt - - [ ] F:SkiaSharp.GRPixelConfig.RgbaFloat - - [ ] F:SkiaSharp.GRPixelConfig.RgbaHalf - - [ ] F:SkiaSharp.GRPixelConfig.RgbaHalfClamped - - [ ] F:SkiaSharp.GRPixelConfig.RgbEtc1 - - [ ] F:SkiaSharp.GRPixelConfig.RgFloat - - [ ] F:SkiaSharp.GRPixelConfig.RgHalf - - [ ] F:SkiaSharp.GRPixelConfig.Sbgra8888 - - [ ] F:SkiaSharp.GRPixelConfig.Srgba8888 - - [ ] F:SkiaSharp.GRPixelConfig.Unknown -- [ ] SkiaSharp.GRRecordingContext - - [ ] M:SkiaSharp.GRRecordingContext.GetMaxSurfaceSampleCount(SkiaSharp.SKColorType) - - [ ] P:SkiaSharp.GRRecordingContext.Backend -- [ ] SkiaSharp.GRSharpVkBackendContext - - [ ] M:SkiaSharp.GRSharpVkBackendContext.#ctor - - [ ] M:SkiaSharp.GRSharpVkBackendContext.Dispose(System.Boolean) - - [ ] P:SkiaSharp.GRSharpVkBackendContext.GetProcedureAddress - - [ ] P:SkiaSharp.GRSharpVkBackendContext.VkDevice - - [ ] P:SkiaSharp.GRSharpVkBackendContext.VkInstance - - [ ] P:SkiaSharp.GRSharpVkBackendContext.VkPhysicalDevice - - [ ] P:SkiaSharp.GRSharpVkBackendContext.VkPhysicalDeviceFeatures - - [ ] P:SkiaSharp.GRSharpVkBackendContext.VkQueue -- [ ] SkiaSharp.GRSharpVkGetProcedureAddressDelegate -- [ ] SkiaSharp.GRSurfaceOrigin - - [ ] F:SkiaSharp.GRSurfaceOrigin.BottomLeft - - [ ] F:SkiaSharp.GRSurfaceOrigin.TopLeft -- [ ] SkiaSharp.GRVkAlloc - - [ ] M:SkiaSharp.GRVkAlloc.Equals(SkiaSharp.GRVkAlloc) - - [ ] M:SkiaSharp.GRVkAlloc.Equals(System.Object) - - [ ] M:SkiaSharp.GRVkAlloc.GetHashCode - - [ ] M:SkiaSharp.GRVkAlloc.op_Equality(SkiaSharp.GRVkAlloc,SkiaSharp.GRVkAlloc) - - [ ] M:SkiaSharp.GRVkAlloc.op_Inequality(SkiaSharp.GRVkAlloc,SkiaSharp.GRVkAlloc) - - [ ] P:SkiaSharp.GRVkAlloc.BackendMemory - - [ ] P:SkiaSharp.GRVkAlloc.Flags - - [ ] P:SkiaSharp.GRVkAlloc.Memory - - [ ] P:SkiaSharp.GRVkAlloc.Offset - - [ ] P:SkiaSharp.GRVkAlloc.Size -- [ ] SkiaSharp.GRVkBackendContext - - [ ] M:SkiaSharp.GRVkBackendContext.#ctor - - [ ] M:SkiaSharp.GRVkBackendContext.Dispose - - [ ] M:SkiaSharp.GRVkBackendContext.Dispose(System.Boolean) - - [ ] P:SkiaSharp.GRVkBackendContext.Extensions - - [ ] P:SkiaSharp.GRVkBackendContext.GetProcedureAddress - - [ ] P:SkiaSharp.GRVkBackendContext.GraphicsQueueIndex - - [ ] P:SkiaSharp.GRVkBackendContext.MaxAPIVersion - - [ ] P:SkiaSharp.GRVkBackendContext.ProtectedContext - - [ ] P:SkiaSharp.GRVkBackendContext.VkDevice - - [ ] P:SkiaSharp.GRVkBackendContext.VkInstance - - [ ] P:SkiaSharp.GRVkBackendContext.VkPhysicalDevice - - [ ] P:SkiaSharp.GRVkBackendContext.VkPhysicalDeviceFeatures - - [ ] P:SkiaSharp.GRVkBackendContext.VkPhysicalDeviceFeatures2 - - [ ] P:SkiaSharp.GRVkBackendContext.VkQueue -- [ ] SkiaSharp.GRVkExtensions - - [ ] M:SkiaSharp.GRVkExtensions.Create(SkiaSharp.GRVkGetProcedureAddressDelegate,System.IntPtr,System.IntPtr,System.String[],System.String[]) - - [ ] M:SkiaSharp.GRVkExtensions.DisposeNative - - [ ] M:SkiaSharp.GRVkExtensions.HasExtension(System.String,System.Int32) - - [ ] M:SkiaSharp.GRVkExtensions.Initialize(SkiaSharp.GRVkGetProcedureAddressDelegate,System.IntPtr,System.IntPtr,System.String[],System.String[]) - - [ ] M:SkiaSharp.GRVkExtensions.Initialize(SkiaSharp.GRVkGetProcedureAddressDelegate,System.IntPtr,System.IntPtr) -- [ ] SkiaSharp.GRVkExtensionsSharpVkExtensions - - [ ] M:SkiaSharp.GRVkExtensionsSharpVkExtensions.Initialize(SkiaSharp.GRVkExtensions,SkiaSharp.GRSharpVkGetProcedureAddressDelegate,SharpVk.Instance,SharpVk.PhysicalDevice,System.String[],System.String[]) - - [ ] M:SkiaSharp.GRVkExtensionsSharpVkExtensions.Initialize(SkiaSharp.GRVkExtensions,SkiaSharp.GRSharpVkGetProcedureAddressDelegate,SharpVk.Instance,SharpVk.PhysicalDevice) -- [ ] SkiaSharp.GRVkGetProcedureAddressDelegate -- [ ] SkiaSharp.GRVkImageInfo - - [ ] M:SkiaSharp.GRVkImageInfo.Equals(SkiaSharp.GRVkImageInfo) - - [ ] M:SkiaSharp.GRVkImageInfo.Equals(System.Object) - - [ ] M:SkiaSharp.GRVkImageInfo.GetHashCode - - [ ] M:SkiaSharp.GRVkImageInfo.op_Equality(SkiaSharp.GRVkImageInfo,SkiaSharp.GRVkImageInfo) - - [ ] M:SkiaSharp.GRVkImageInfo.op_Inequality(SkiaSharp.GRVkImageInfo,SkiaSharp.GRVkImageInfo) - - [ ] P:SkiaSharp.GRVkImageInfo.Alloc - - [ ] P:SkiaSharp.GRVkImageInfo.CurrentQueueFamily - - [ ] P:SkiaSharp.GRVkImageInfo.Format - - [ ] P:SkiaSharp.GRVkImageInfo.Image - - [ ] P:SkiaSharp.GRVkImageInfo.ImageLayout - - [ ] P:SkiaSharp.GRVkImageInfo.ImageTiling - - [ ] P:SkiaSharp.GRVkImageInfo.ImageUsageFlags - - [ ] P:SkiaSharp.GRVkImageInfo.LevelCount - - [ ] P:SkiaSharp.GRVkImageInfo.Protected - - [ ] P:SkiaSharp.GRVkImageInfo.SampleCount - - [ ] P:SkiaSharp.GRVkImageInfo.SharingMode - - [ ] P:SkiaSharp.GRVkImageInfo.YcbcrConversionInfo -- [ ] SkiaSharp.GrVkYcbcrConversionInfo - - [ ] M:SkiaSharp.GrVkYcbcrConversionInfo.Equals(SkiaSharp.GrVkYcbcrConversionInfo) - - [ ] M:SkiaSharp.GrVkYcbcrConversionInfo.Equals(System.Object) - - [ ] M:SkiaSharp.GrVkYcbcrConversionInfo.GetHashCode - - [ ] M:SkiaSharp.GrVkYcbcrConversionInfo.op_Equality(SkiaSharp.GrVkYcbcrConversionInfo,SkiaSharp.GrVkYcbcrConversionInfo) - - [ ] M:SkiaSharp.GrVkYcbcrConversionInfo.op_Inequality(SkiaSharp.GrVkYcbcrConversionInfo,SkiaSharp.GrVkYcbcrConversionInfo) - - [ ] P:SkiaSharp.GrVkYcbcrConversionInfo.ChromaFilter - - [ ] P:SkiaSharp.GrVkYcbcrConversionInfo.ExternalFormat - - [ ] P:SkiaSharp.GrVkYcbcrConversionInfo.ForceExplicitReconstruction - - [ ] P:SkiaSharp.GrVkYcbcrConversionInfo.Format - - [ ] P:SkiaSharp.GrVkYcbcrConversionInfo.FormatFeatures - - [ ] P:SkiaSharp.GrVkYcbcrConversionInfo.XChromaOffset - - [ ] P:SkiaSharp.GrVkYcbcrConversionInfo.YcbcrModel - - [ ] P:SkiaSharp.GrVkYcbcrConversionInfo.YcbcrRange - - [ ] P:SkiaSharp.GrVkYcbcrConversionInfo.YChromaOffset -- [ ] SkiaSharp.SK3dView - - [ ] M:SkiaSharp.SK3dView.#ctor - - [ ] M:SkiaSharp.SK3dView.ApplyToCanvas(SkiaSharp.SKCanvas) - - [ ] M:SkiaSharp.SK3dView.Dispose(System.Boolean) - - [ ] M:SkiaSharp.SK3dView.DisposeNative - - [ ] M:SkiaSharp.SK3dView.DotWithNormal(System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SK3dView.GetMatrix(SkiaSharp.SKMatrix@) - - [ ] M:SkiaSharp.SK3dView.Restore - - [ ] M:SkiaSharp.SK3dView.RotateXDegrees(System.Single) - - [ ] M:SkiaSharp.SK3dView.RotateXRadians(System.Single) - - [ ] M:SkiaSharp.SK3dView.RotateYDegrees(System.Single) - - [ ] M:SkiaSharp.SK3dView.RotateYRadians(System.Single) - - [ ] M:SkiaSharp.SK3dView.RotateZDegrees(System.Single) - - [ ] M:SkiaSharp.SK3dView.RotateZRadians(System.Single) - - [ ] M:SkiaSharp.SK3dView.Save - - [ ] M:SkiaSharp.SK3dView.Translate(System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SK3dView.TranslateX(System.Single) - - [ ] M:SkiaSharp.SK3dView.TranslateY(System.Single) - - [ ] M:SkiaSharp.SK3dView.TranslateZ(System.Single) - - [ ] P:SkiaSharp.SK3dView.Matrix -- [ ] SkiaSharp.SKAbstractManagedStream - - [ ] M:SkiaSharp.SKAbstractManagedStream.#ctor - - [ ] M:SkiaSharp.SKAbstractManagedStream.#ctor(System.Boolean) - - [ ] M:SkiaSharp.SKAbstractManagedStream.Dispose(System.Boolean) - - [ ] M:SkiaSharp.SKAbstractManagedStream.DisposeNative - - [ ] M:SkiaSharp.SKAbstractManagedStream.OnCreateNew - - [ ] M:SkiaSharp.SKAbstractManagedStream.OnDuplicate - - [ ] M:SkiaSharp.SKAbstractManagedStream.OnFork - - [ ] M:SkiaSharp.SKAbstractManagedStream.OnGetLength - - [ ] M:SkiaSharp.SKAbstractManagedStream.OnGetPosition - - [ ] M:SkiaSharp.SKAbstractManagedStream.OnHasLength - - [ ] M:SkiaSharp.SKAbstractManagedStream.OnHasPosition - - [ ] M:SkiaSharp.SKAbstractManagedStream.OnIsAtEnd - - [ ] M:SkiaSharp.SKAbstractManagedStream.OnMove(System.Int32) - - [ ] M:SkiaSharp.SKAbstractManagedStream.OnPeek(System.IntPtr,System.IntPtr) - - [ ] M:SkiaSharp.SKAbstractManagedStream.OnRead(System.IntPtr,System.IntPtr) - - [ ] M:SkiaSharp.SKAbstractManagedStream.OnRewind - - [ ] M:SkiaSharp.SKAbstractManagedStream.OnSeek(System.IntPtr) -- [ ] SkiaSharp.SKAbstractManagedWStream - - [ ] M:SkiaSharp.SKAbstractManagedWStream.#ctor - - [ ] M:SkiaSharp.SKAbstractManagedWStream.#ctor(System.Boolean) - - [ ] M:SkiaSharp.SKAbstractManagedWStream.Dispose(System.Boolean) - - [ ] M:SkiaSharp.SKAbstractManagedWStream.DisposeNative - - [ ] M:SkiaSharp.SKAbstractManagedWStream.OnBytesWritten - - [ ] M:SkiaSharp.SKAbstractManagedWStream.OnFlush - - [ ] M:SkiaSharp.SKAbstractManagedWStream.OnWrite(System.IntPtr,System.IntPtr) -- [ ] SkiaSharp.SKAlphaType - - [ ] F:SkiaSharp.SKAlphaType.Opaque - - [ ] F:SkiaSharp.SKAlphaType.Premul - - [ ] F:SkiaSharp.SKAlphaType.Unknown - - [ ] F:SkiaSharp.SKAlphaType.Unpremul -- [ ] SkiaSharp.SKAutoCanvasRestore - - [ ] M:SkiaSharp.SKAutoCanvasRestore.#ctor(SkiaSharp.SKCanvas,System.Boolean) - - [ ] M:SkiaSharp.SKAutoCanvasRestore.#ctor(SkiaSharp.SKCanvas) - - [ ] M:SkiaSharp.SKAutoCanvasRestore.Dispose - - [ ] M:SkiaSharp.SKAutoCanvasRestore.Restore -- [ ] SkiaSharp.SKAutoCoInitialize - - [ ] M:SkiaSharp.SKAutoCoInitialize.#ctor - - [ ] M:SkiaSharp.SKAutoCoInitialize.Dispose - - [ ] M:SkiaSharp.SKAutoCoInitialize.Uninitialize - - [ ] P:SkiaSharp.SKAutoCoInitialize.Initialized -- [ ] SkiaSharp.SKAutoMaskFreeImage - - [ ] M:SkiaSharp.SKAutoMaskFreeImage.#ctor(System.IntPtr) - - [ ] M:SkiaSharp.SKAutoMaskFreeImage.Dispose -- [ ] SkiaSharp.SKBitmap - - [ ] M:SkiaSharp.SKBitmap.#ctor - - [ ] M:SkiaSharp.SKBitmap.#ctor(SkiaSharp.SKImageInfo,SkiaSharp.SKBitmapAllocFlags) - - [ ] M:SkiaSharp.SKBitmap.#ctor(SkiaSharp.SKImageInfo,SkiaSharp.SKColorTable,SkiaSharp.SKBitmapAllocFlags) - - [ ] M:SkiaSharp.SKBitmap.#ctor(SkiaSharp.SKImageInfo,SkiaSharp.SKColorTable) - - [ ] M:SkiaSharp.SKBitmap.#ctor(SkiaSharp.SKImageInfo,System.Int32) - - [ ] M:SkiaSharp.SKBitmap.#ctor(SkiaSharp.SKImageInfo) - - [ ] M:SkiaSharp.SKBitmap.#ctor(System.Int32,System.Int32,SkiaSharp.SKColorType,SkiaSharp.SKAlphaType,SkiaSharp.SKColorSpace) - - [ ] M:SkiaSharp.SKBitmap.#ctor(System.Int32,System.Int32,SkiaSharp.SKColorType,SkiaSharp.SKAlphaType) - - [ ] M:SkiaSharp.SKBitmap.#ctor(System.Int32,System.Int32,System.Boolean) - - [ ] M:SkiaSharp.SKBitmap.CanCopyTo(SkiaSharp.SKColorType) - - [ ] M:SkiaSharp.SKBitmap.Copy - - [ ] M:SkiaSharp.SKBitmap.Copy(SkiaSharp.SKColorType) - - [ ] M:SkiaSharp.SKBitmap.CopyTo(SkiaSharp.SKBitmap,SkiaSharp.SKColorType) - - [ ] M:SkiaSharp.SKBitmap.CopyTo(SkiaSharp.SKBitmap) - - [ ] M:SkiaSharp.SKBitmap.Decode(SkiaSharp.SKCodec,SkiaSharp.SKImageInfo) - - [ ] M:SkiaSharp.SKBitmap.Decode(SkiaSharp.SKCodec) - - [ ] M:SkiaSharp.SKBitmap.Decode(SkiaSharp.SKData,SkiaSharp.SKImageInfo) - - [ ] M:SkiaSharp.SKBitmap.Decode(SkiaSharp.SKData) - - [ ] M:SkiaSharp.SKBitmap.Decode(SkiaSharp.SKStream,SkiaSharp.SKImageInfo) - - [ ] M:SkiaSharp.SKBitmap.Decode(SkiaSharp.SKStream) - - [ ] M:SkiaSharp.SKBitmap.Decode(System.Byte[],SkiaSharp.SKImageInfo) - - [ ] M:SkiaSharp.SKBitmap.Decode(System.Byte[]) - - [ ] M:SkiaSharp.SKBitmap.Decode(System.IO.Stream,SkiaSharp.SKImageInfo) - - [ ] M:SkiaSharp.SKBitmap.Decode(System.IO.Stream) - - [ ] M:SkiaSharp.SKBitmap.Decode(System.ReadOnlySpan{System.Byte},SkiaSharp.SKImageInfo) - - [ ] M:SkiaSharp.SKBitmap.Decode(System.ReadOnlySpan{System.Byte}) - - [ ] M:SkiaSharp.SKBitmap.Decode(System.String,SkiaSharp.SKImageInfo) - - [ ] M:SkiaSharp.SKBitmap.Decode(System.String) - - [ ] M:SkiaSharp.SKBitmap.DecodeBounds(SkiaSharp.SKData) - - [ ] M:SkiaSharp.SKBitmap.DecodeBounds(SkiaSharp.SKStream) - - [ ] M:SkiaSharp.SKBitmap.DecodeBounds(System.Byte[]) - - [ ] M:SkiaSharp.SKBitmap.DecodeBounds(System.IO.Stream) - - [ ] M:SkiaSharp.SKBitmap.DecodeBounds(System.ReadOnlySpan{System.Byte}) - - [ ] M:SkiaSharp.SKBitmap.DecodeBounds(System.String) - - [ ] M:SkiaSharp.SKBitmap.Dispose(System.Boolean) - - [ ] M:SkiaSharp.SKBitmap.DisposeNative - - [ ] M:SkiaSharp.SKBitmap.Encode(SkiaSharp.SKEncodedImageFormat,System.Int32) - - [ ] M:SkiaSharp.SKBitmap.Encode(SkiaSharp.SKWStream,SkiaSharp.SKEncodedImageFormat,System.Int32) - - [ ] M:SkiaSharp.SKBitmap.Encode(System.IO.Stream,SkiaSharp.SKEncodedImageFormat,System.Int32) - - [ ] M:SkiaSharp.SKBitmap.Erase(SkiaSharp.SKColor,SkiaSharp.SKRectI) - - [ ] M:SkiaSharp.SKBitmap.Erase(SkiaSharp.SKColor) - - [ ] M:SkiaSharp.SKBitmap.ExtractAlpha(SkiaSharp.SKBitmap,SkiaSharp.SKPaint,SkiaSharp.SKPointI@) - - [ ] M:SkiaSharp.SKBitmap.ExtractAlpha(SkiaSharp.SKBitmap,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKBitmap.ExtractAlpha(SkiaSharp.SKBitmap,SkiaSharp.SKPointI@) - - [ ] M:SkiaSharp.SKBitmap.ExtractAlpha(SkiaSharp.SKBitmap) - - [ ] M:SkiaSharp.SKBitmap.ExtractSubset(SkiaSharp.SKBitmap,SkiaSharp.SKRectI) - - [ ] M:SkiaSharp.SKBitmap.FromImage(SkiaSharp.SKImage) - - [ ] M:SkiaSharp.SKBitmap.GetAddr(System.Int32,System.Int32) - - [ ] M:SkiaSharp.SKBitmap.GetAddr16(System.Int32,System.Int32) - - [ ] M:SkiaSharp.SKBitmap.GetAddr32(System.Int32,System.Int32) - - [ ] M:SkiaSharp.SKBitmap.GetAddr8(System.Int32,System.Int32) - - [ ] M:SkiaSharp.SKBitmap.GetAddress(System.Int32,System.Int32) - - [ ] M:SkiaSharp.SKBitmap.GetIndex8Color(System.Int32,System.Int32) - - [ ] M:SkiaSharp.SKBitmap.GetPixel(System.Int32,System.Int32) - - [ ] M:SkiaSharp.SKBitmap.GetPixels - - [ ] M:SkiaSharp.SKBitmap.GetPixels(System.IntPtr@) - - [ ] M:SkiaSharp.SKBitmap.GetPixelSpan - - [ ] M:SkiaSharp.SKBitmap.InstallMaskPixels(SkiaSharp.SKMask) - - [ ] M:SkiaSharp.SKBitmap.InstallPixels(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32,SkiaSharp.SKBitmapReleaseDelegate,System.Object) - - [ ] M:SkiaSharp.SKBitmap.InstallPixels(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32,SkiaSharp.SKBitmapReleaseDelegate) - - [ ] M:SkiaSharp.SKBitmap.InstallPixels(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32,SkiaSharp.SKColorTable,SkiaSharp.SKBitmapReleaseDelegate,System.Object) - - [ ] M:SkiaSharp.SKBitmap.InstallPixels(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32,SkiaSharp.SKColorTable) - - [ ] M:SkiaSharp.SKBitmap.InstallPixels(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32) - - [ ] M:SkiaSharp.SKBitmap.InstallPixels(SkiaSharp.SKImageInfo,System.IntPtr) - - [ ] M:SkiaSharp.SKBitmap.InstallPixels(SkiaSharp.SKPixmap) - - [ ] M:SkiaSharp.SKBitmap.NotifyPixelsChanged - - [ ] M:SkiaSharp.SKBitmap.PeekPixels - - [ ] M:SkiaSharp.SKBitmap.PeekPixels(SkiaSharp.SKPixmap) - - [ ] M:SkiaSharp.SKBitmap.Reset - - [ ] M:SkiaSharp.SKBitmap.Resize(SkiaSharp.SKBitmap,SkiaSharp.SKBitmap,SkiaSharp.SKBitmapResizeMethod) - - [ ] M:SkiaSharp.SKBitmap.Resize(SkiaSharp.SKBitmap,SkiaSharp.SKBitmapResizeMethod) - - [ ] M:SkiaSharp.SKBitmap.Resize(SkiaSharp.SKImageInfo,SkiaSharp.SKBitmapResizeMethod) - - [ ] M:SkiaSharp.SKBitmap.Resize(SkiaSharp.SKImageInfo,SkiaSharp.SKFilterQuality) - - [ ] M:SkiaSharp.SKBitmap.Resize(SkiaSharp.SKSizeI,SkiaSharp.SKFilterQuality) - - [ ] M:SkiaSharp.SKBitmap.ScalePixels(SkiaSharp.SKBitmap,SkiaSharp.SKFilterQuality) - - [ ] M:SkiaSharp.SKBitmap.ScalePixels(SkiaSharp.SKPixmap,SkiaSharp.SKFilterQuality) - - [ ] M:SkiaSharp.SKBitmap.SetColorTable(SkiaSharp.SKColorTable) - - [ ] M:SkiaSharp.SKBitmap.SetImmutable - - [ ] M:SkiaSharp.SKBitmap.SetPixel(System.Int32,System.Int32,SkiaSharp.SKColor) - - [ ] M:SkiaSharp.SKBitmap.SetPixels(System.IntPtr,SkiaSharp.SKColorTable) - - [ ] M:SkiaSharp.SKBitmap.SetPixels(System.IntPtr) - - [ ] M:SkiaSharp.SKBitmap.ToShader - - [ ] M:SkiaSharp.SKBitmap.ToShader(SkiaSharp.SKShaderTileMode,SkiaSharp.SKShaderTileMode,SkiaSharp.SKMatrix) - - [ ] M:SkiaSharp.SKBitmap.ToShader(SkiaSharp.SKShaderTileMode,SkiaSharp.SKShaderTileMode) - - [ ] M:SkiaSharp.SKBitmap.TryAllocPixels(SkiaSharp.SKImageInfo,SkiaSharp.SKBitmapAllocFlags) - - [ ] M:SkiaSharp.SKBitmap.TryAllocPixels(SkiaSharp.SKImageInfo,System.Int32) - - [ ] M:SkiaSharp.SKBitmap.TryAllocPixels(SkiaSharp.SKImageInfo) - - [ ] P:SkiaSharp.SKBitmap.AlphaType - - [ ] P:SkiaSharp.SKBitmap.ByteCount - - [ ] P:SkiaSharp.SKBitmap.Bytes - - [ ] P:SkiaSharp.SKBitmap.BytesPerPixel - - [ ] P:SkiaSharp.SKBitmap.ColorSpace - - [ ] P:SkiaSharp.SKBitmap.ColorTable - - [ ] P:SkiaSharp.SKBitmap.ColorType - - [ ] P:SkiaSharp.SKBitmap.DrawsNothing - - [ ] P:SkiaSharp.SKBitmap.Height - - [ ] P:SkiaSharp.SKBitmap.Info - - [ ] P:SkiaSharp.SKBitmap.IsEmpty - - [ ] P:SkiaSharp.SKBitmap.IsImmutable - - [ ] P:SkiaSharp.SKBitmap.IsNull - - [ ] P:SkiaSharp.SKBitmap.IsVolatile - - [ ] P:SkiaSharp.SKBitmap.Pixels - - [ ] P:SkiaSharp.SKBitmap.ReadyToDraw - - [ ] P:SkiaSharp.SKBitmap.RowBytes - - [ ] P:SkiaSharp.SKBitmap.Width -- [ ] SkiaSharp.SKBitmapAllocFlags - - [ ] F:SkiaSharp.SKBitmapAllocFlags.None - - [ ] F:SkiaSharp.SKBitmapAllocFlags.ZeroPixels -- [ ] SkiaSharp.SKBitmapReleaseDelegate -- [ ] SkiaSharp.SKBitmapResizeMethod - - [ ] F:SkiaSharp.SKBitmapResizeMethod.Box - - [ ] F:SkiaSharp.SKBitmapResizeMethod.Hamming - - [ ] F:SkiaSharp.SKBitmapResizeMethod.Lanczos3 - - [ ] F:SkiaSharp.SKBitmapResizeMethod.Mitchell - - [ ] F:SkiaSharp.SKBitmapResizeMethod.Triangle -- [ ] SkiaSharp.SKBlendMode - - [ ] F:SkiaSharp.SKBlendMode.Clear - - [ ] F:SkiaSharp.SKBlendMode.Color - - [ ] F:SkiaSharp.SKBlendMode.ColorBurn - - [ ] F:SkiaSharp.SKBlendMode.ColorDodge - - [ ] F:SkiaSharp.SKBlendMode.Darken - - [ ] F:SkiaSharp.SKBlendMode.Difference - - [ ] F:SkiaSharp.SKBlendMode.Dst - - [ ] F:SkiaSharp.SKBlendMode.DstATop - - [ ] F:SkiaSharp.SKBlendMode.DstIn - - [ ] F:SkiaSharp.SKBlendMode.DstOut - - [ ] F:SkiaSharp.SKBlendMode.DstOver - - [ ] F:SkiaSharp.SKBlendMode.Exclusion - - [ ] F:SkiaSharp.SKBlendMode.HardLight - - [ ] F:SkiaSharp.SKBlendMode.Hue - - [ ] F:SkiaSharp.SKBlendMode.Lighten - - [ ] F:SkiaSharp.SKBlendMode.Luminosity - - [ ] F:SkiaSharp.SKBlendMode.Modulate - - [ ] F:SkiaSharp.SKBlendMode.Multiply - - [ ] F:SkiaSharp.SKBlendMode.Overlay - - [ ] F:SkiaSharp.SKBlendMode.Plus - - [ ] F:SkiaSharp.SKBlendMode.Saturation - - [ ] F:SkiaSharp.SKBlendMode.Screen - - [ ] F:SkiaSharp.SKBlendMode.SoftLight - - [ ] F:SkiaSharp.SKBlendMode.Src - - [ ] F:SkiaSharp.SKBlendMode.SrcATop - - [ ] F:SkiaSharp.SKBlendMode.SrcIn - - [ ] F:SkiaSharp.SKBlendMode.SrcOut - - [ ] F:SkiaSharp.SKBlendMode.SrcOver - - [ ] F:SkiaSharp.SKBlendMode.Xor -- [ ] SkiaSharp.SKBlurMaskFilterFlags - - [ ] F:SkiaSharp.SKBlurMaskFilterFlags.All - - [ ] F:SkiaSharp.SKBlurMaskFilterFlags.HighQuality - - [ ] F:SkiaSharp.SKBlurMaskFilterFlags.IgnoreTransform - - [ ] F:SkiaSharp.SKBlurMaskFilterFlags.None -- [ ] SkiaSharp.SKBlurStyle - - [ ] F:SkiaSharp.SKBlurStyle.Inner - - [ ] F:SkiaSharp.SKBlurStyle.Normal - - [ ] F:SkiaSharp.SKBlurStyle.Outer - - [ ] F:SkiaSharp.SKBlurStyle.Solid -- [ ] SkiaSharp.SKCanvas - - [ ] M:SkiaSharp.SKCanvas.#ctor(SkiaSharp.SKBitmap) - - [ ] M:SkiaSharp.SKCanvas.Clear - - [ ] M:SkiaSharp.SKCanvas.Clear(SkiaSharp.SKColor) - - [ ] M:SkiaSharp.SKCanvas.Clear(SkiaSharp.SKColorF) - - [ ] M:SkiaSharp.SKCanvas.ClipPath(SkiaSharp.SKPath,SkiaSharp.SKClipOperation,System.Boolean) - - [ ] M:SkiaSharp.SKCanvas.ClipRect(SkiaSharp.SKRect,SkiaSharp.SKClipOperation,System.Boolean) - - [ ] M:SkiaSharp.SKCanvas.ClipRegion(SkiaSharp.SKRegion,SkiaSharp.SKClipOperation) - - [ ] M:SkiaSharp.SKCanvas.ClipRoundRect(SkiaSharp.SKRoundRect,SkiaSharp.SKClipOperation,System.Boolean) - - [ ] M:SkiaSharp.SKCanvas.Concat(SkiaSharp.SKMatrix@) - - [ ] M:SkiaSharp.SKCanvas.Discard - - [ ] M:SkiaSharp.SKCanvas.Dispose(System.Boolean) - - [ ] M:SkiaSharp.SKCanvas.DisposeNative - - [ ] M:SkiaSharp.SKCanvas.DrawAnnotation(SkiaSharp.SKRect,System.String,SkiaSharp.SKData) - - [ ] M:SkiaSharp.SKCanvas.DrawArc(SkiaSharp.SKRect,System.Single,System.Single,System.Boolean,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawAtlas(SkiaSharp.SKImage,SkiaSharp.SKRect[],SkiaSharp.SKRotationScaleMatrix[],SkiaSharp.SKColor[],SkiaSharp.SKBlendMode,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawAtlas(SkiaSharp.SKImage,SkiaSharp.SKRect[],SkiaSharp.SKRotationScaleMatrix[],SkiaSharp.SKColor[],SkiaSharp.SKBlendMode,SkiaSharp.SKRect,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawAtlas(SkiaSharp.SKImage,SkiaSharp.SKRect[],SkiaSharp.SKRotationScaleMatrix[],SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawBitmap(SkiaSharp.SKBitmap,SkiaSharp.SKPoint,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawBitmap(SkiaSharp.SKBitmap,SkiaSharp.SKRect,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawBitmap(SkiaSharp.SKBitmap,SkiaSharp.SKRect,SkiaSharp.SKRect,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawBitmap(SkiaSharp.SKBitmap,System.Single,System.Single,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawBitmapLattice(SkiaSharp.SKBitmap,SkiaSharp.SKLattice,SkiaSharp.SKRect,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawBitmapLattice(SkiaSharp.SKBitmap,System.Int32[],System.Int32[],SkiaSharp.SKRect,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawBitmapNinePatch(SkiaSharp.SKBitmap,SkiaSharp.SKRectI,SkiaSharp.SKRect,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawCircle(SkiaSharp.SKPoint,System.Single,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawCircle(System.Single,System.Single,System.Single,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawColor(SkiaSharp.SKColor,SkiaSharp.SKBlendMode) - - [ ] M:SkiaSharp.SKCanvas.DrawColor(SkiaSharp.SKColorF,SkiaSharp.SKBlendMode) - - [ ] M:SkiaSharp.SKCanvas.DrawDrawable(SkiaSharp.SKDrawable,SkiaSharp.SKMatrix@) - - [ ] M:SkiaSharp.SKCanvas.DrawDrawable(SkiaSharp.SKDrawable,SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.SKCanvas.DrawDrawable(SkiaSharp.SKDrawable,System.Single,System.Single) - - [ ] M:SkiaSharp.SKCanvas.DrawImage(SkiaSharp.SKImage,SkiaSharp.SKPoint,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawImage(SkiaSharp.SKImage,SkiaSharp.SKRect,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawImage(SkiaSharp.SKImage,SkiaSharp.SKRect,SkiaSharp.SKRect,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawImage(SkiaSharp.SKImage,System.Single,System.Single,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawImageLattice(SkiaSharp.SKImage,SkiaSharp.SKLattice,SkiaSharp.SKRect,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawImageLattice(SkiaSharp.SKImage,System.Int32[],System.Int32[],SkiaSharp.SKRect,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawImageNinePatch(SkiaSharp.SKImage,SkiaSharp.SKRectI,SkiaSharp.SKRect,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawLine(SkiaSharp.SKPoint,SkiaSharp.SKPoint,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawLine(System.Single,System.Single,System.Single,System.Single,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawLinkDestinationAnnotation(SkiaSharp.SKRect,SkiaSharp.SKData) - - [ ] M:SkiaSharp.SKCanvas.DrawLinkDestinationAnnotation(SkiaSharp.SKRect,System.String) - - [ ] M:SkiaSharp.SKCanvas.DrawNamedDestinationAnnotation(SkiaSharp.SKPoint,SkiaSharp.SKData) - - [ ] M:SkiaSharp.SKCanvas.DrawNamedDestinationAnnotation(SkiaSharp.SKPoint,System.String) - - [ ] M:SkiaSharp.SKCanvas.DrawOval(SkiaSharp.SKPoint,SkiaSharp.SKSize,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawOval(SkiaSharp.SKRect,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawOval(System.Single,System.Single,System.Single,System.Single,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawPaint(SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawPatch(SkiaSharp.SKPoint[],SkiaSharp.SKColor[],SkiaSharp.SKPoint[],SkiaSharp.SKBlendMode,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawPatch(SkiaSharp.SKPoint[],SkiaSharp.SKColor[],SkiaSharp.SKPoint[],SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawPath(SkiaSharp.SKPath,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawPicture(SkiaSharp.SKPicture,SkiaSharp.SKMatrix@,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawPicture(SkiaSharp.SKPicture,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawPicture(SkiaSharp.SKPicture,SkiaSharp.SKPoint,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawPicture(SkiaSharp.SKPicture,System.Single,System.Single,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawPoint(SkiaSharp.SKPoint,SkiaSharp.SKColor) - - [ ] M:SkiaSharp.SKCanvas.DrawPoint(SkiaSharp.SKPoint,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawPoint(System.Single,System.Single,SkiaSharp.SKColor) - - [ ] M:SkiaSharp.SKCanvas.DrawPoint(System.Single,System.Single,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawPoints(SkiaSharp.SKPointMode,SkiaSharp.SKPoint[],SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawPositionedText(System.Byte[],SkiaSharp.SKPoint[],SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawPositionedText(System.IntPtr,System.Int32,SkiaSharp.SKPoint[],SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawPositionedText(System.String,SkiaSharp.SKPoint[],SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawRect(SkiaSharp.SKRect,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawRect(System.Single,System.Single,System.Single,System.Single,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawRegion(SkiaSharp.SKRegion,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawRoundRect(SkiaSharp.SKRect,SkiaSharp.SKSize,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawRoundRect(SkiaSharp.SKRect,System.Single,System.Single,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawRoundRect(SkiaSharp.SKRoundRect,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawRoundRect(System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawRoundRectDifference(SkiaSharp.SKRoundRect,SkiaSharp.SKRoundRect,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawSurface(SkiaSharp.SKSurface,SkiaSharp.SKPoint,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawSurface(SkiaSharp.SKSurface,System.Single,System.Single,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawText(SkiaSharp.SKTextBlob,System.Single,System.Single,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawText(System.Byte[],SkiaSharp.SKPoint,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawText(System.Byte[],System.Single,System.Single,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawText(System.IntPtr,System.Int32,SkiaSharp.SKPoint,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawText(System.IntPtr,System.Int32,System.Single,System.Single,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawText(System.String,SkiaSharp.SKPoint,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawText(System.String,System.Single,System.Single,SkiaSharp.SKFont,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawText(System.String,System.Single,System.Single,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawTextOnPath(System.Byte[],SkiaSharp.SKPath,SkiaSharp.SKPoint,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawTextOnPath(System.Byte[],SkiaSharp.SKPath,System.Single,System.Single,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawTextOnPath(System.IntPtr,System.Int32,SkiaSharp.SKPath,SkiaSharp.SKPoint,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawTextOnPath(System.IntPtr,System.Int32,SkiaSharp.SKPath,System.Single,System.Single,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawTextOnPath(System.String,SkiaSharp.SKPath,SkiaSharp.SKPoint,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawTextOnPath(System.String,SkiaSharp.SKPath,SkiaSharp.SKPoint,System.Boolean,SkiaSharp.SKFont,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawTextOnPath(System.String,SkiaSharp.SKPath,SkiaSharp.SKPoint,System.Boolean,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawTextOnPath(System.String,SkiaSharp.SKPath,System.Single,System.Single,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawUrlAnnotation(SkiaSharp.SKRect,SkiaSharp.SKData) - - [ ] M:SkiaSharp.SKCanvas.DrawUrlAnnotation(SkiaSharp.SKRect,System.String) - - [ ] M:SkiaSharp.SKCanvas.DrawVertices(SkiaSharp.SKVertexMode,SkiaSharp.SKPoint[],SkiaSharp.SKColor[],SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawVertices(SkiaSharp.SKVertexMode,SkiaSharp.SKPoint[],SkiaSharp.SKPoint[],SkiaSharp.SKColor[],SkiaSharp.SKBlendMode,System.UInt16[],SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawVertices(SkiaSharp.SKVertexMode,SkiaSharp.SKPoint[],SkiaSharp.SKPoint[],SkiaSharp.SKColor[],SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawVertices(SkiaSharp.SKVertexMode,SkiaSharp.SKPoint[],SkiaSharp.SKPoint[],SkiaSharp.SKColor[],System.UInt16[],SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.DrawVertices(SkiaSharp.SKVertices,SkiaSharp.SKBlendMode,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.Flush - - [ ] M:SkiaSharp.SKCanvas.GetDeviceClipBounds(SkiaSharp.SKRectI@) - - [ ] M:SkiaSharp.SKCanvas.GetLocalClipBounds(SkiaSharp.SKRect@) - - [ ] M:SkiaSharp.SKCanvas.QuickReject(SkiaSharp.SKPath) - - [ ] M:SkiaSharp.SKCanvas.QuickReject(SkiaSharp.SKRect) - - [ ] M:SkiaSharp.SKCanvas.ResetMatrix - - [ ] M:SkiaSharp.SKCanvas.Restore - - [ ] M:SkiaSharp.SKCanvas.RestoreToCount(System.Int32) - - [ ] M:SkiaSharp.SKCanvas.RotateDegrees(System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKCanvas.RotateDegrees(System.Single) - - [ ] M:SkiaSharp.SKCanvas.RotateRadians(System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKCanvas.RotateRadians(System.Single) - - [ ] M:SkiaSharp.SKCanvas.Save - - [ ] M:SkiaSharp.SKCanvas.SaveLayer - - [ ] M:SkiaSharp.SKCanvas.SaveLayer(SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.SaveLayer(SkiaSharp.SKRect,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKCanvas.Scale(SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.SKCanvas.Scale(System.Single,System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKCanvas.Scale(System.Single,System.Single) - - [ ] M:SkiaSharp.SKCanvas.Scale(System.Single) - - [ ] M:SkiaSharp.SKCanvas.SetMatrix(SkiaSharp.SKMatrix) - - [ ] M:SkiaSharp.SKCanvas.Skew(SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.SKCanvas.Skew(System.Single,System.Single) - - [ ] M:SkiaSharp.SKCanvas.Translate(SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.SKCanvas.Translate(System.Single,System.Single) - - [ ] P:SkiaSharp.SKCanvas.DeviceClipBounds - - [ ] P:SkiaSharp.SKCanvas.IsClipEmpty - - [ ] P:SkiaSharp.SKCanvas.IsClipRect - - [ ] P:SkiaSharp.SKCanvas.LocalClipBounds - - [ ] P:SkiaSharp.SKCanvas.SaveCount - - [ ] P:SkiaSharp.SKCanvas.TotalMatrix -- [ ] SkiaSharp.SKClipOperation - - [ ] F:SkiaSharp.SKClipOperation.Difference - - [ ] F:SkiaSharp.SKClipOperation.Intersect -- [ ] SkiaSharp.SKCodec - - [ ] M:SkiaSharp.SKCodec.Create(SkiaSharp.SKData) - - [ ] M:SkiaSharp.SKCodec.Create(SkiaSharp.SKStream,SkiaSharp.SKCodecResult@) - - [ ] M:SkiaSharp.SKCodec.Create(SkiaSharp.SKStream) - - [ ] M:SkiaSharp.SKCodec.Create(System.IO.Stream,SkiaSharp.SKCodecResult@) - - [ ] M:SkiaSharp.SKCodec.Create(System.IO.Stream) - - [ ] M:SkiaSharp.SKCodec.Create(System.String,SkiaSharp.SKCodecResult@) - - [ ] M:SkiaSharp.SKCodec.Create(System.String) - - [ ] M:SkiaSharp.SKCodec.Dispose(System.Boolean) - - [ ] M:SkiaSharp.SKCodec.DisposeNative - - [ ] M:SkiaSharp.SKCodec.GetFrameInfo(System.Int32,SkiaSharp.SKCodecFrameInfo@) - - [ ] M:SkiaSharp.SKCodec.GetOutputScanline(System.Int32) - - [ ] M:SkiaSharp.SKCodec.GetPixels(SkiaSharp.SKImageInfo,System.Byte[]) - - [ ] M:SkiaSharp.SKCodec.GetPixels(SkiaSharp.SKImageInfo,System.Byte[]@) - - [ ] M:SkiaSharp.SKCodec.GetPixels(SkiaSharp.SKImageInfo,System.IntPtr,SkiaSharp.SKCodecOptions,SkiaSharp.SKColorTable,System.Int32@) - - [ ] M:SkiaSharp.SKCodec.GetPixels(SkiaSharp.SKImageInfo,System.IntPtr,SkiaSharp.SKCodecOptions,System.IntPtr,System.Int32@) - - [ ] M:SkiaSharp.SKCodec.GetPixels(SkiaSharp.SKImageInfo,System.IntPtr,SkiaSharp.SKCodecOptions) - - [ ] M:SkiaSharp.SKCodec.GetPixels(SkiaSharp.SKImageInfo,System.IntPtr,SkiaSharp.SKColorTable,System.Int32@) - - [ ] M:SkiaSharp.SKCodec.GetPixels(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32,SkiaSharp.SKCodecOptions,SkiaSharp.SKColorTable,System.Int32@) - - [ ] M:SkiaSharp.SKCodec.GetPixels(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32,SkiaSharp.SKCodecOptions,System.IntPtr,System.Int32@) - - [ ] M:SkiaSharp.SKCodec.GetPixels(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32,SkiaSharp.SKCodecOptions) - - [ ] M:SkiaSharp.SKCodec.GetPixels(SkiaSharp.SKImageInfo,System.IntPtr,System.IntPtr,System.Int32@) - - [ ] M:SkiaSharp.SKCodec.GetPixels(SkiaSharp.SKImageInfo,System.IntPtr) - - [ ] M:SkiaSharp.SKCodec.GetPixels(System.Byte[]@) - - [ ] M:SkiaSharp.SKCodec.GetScaledDimensions(System.Single) - - [ ] M:SkiaSharp.SKCodec.GetScanlines(System.IntPtr,System.Int32,System.Int32) - - [ ] M:SkiaSharp.SKCodec.GetValidSubset(SkiaSharp.SKRectI@) - - [ ] M:SkiaSharp.SKCodec.IncrementalDecode - - [ ] M:SkiaSharp.SKCodec.IncrementalDecode(System.Int32@) - - [ ] M:SkiaSharp.SKCodec.SkipScanlines(System.Int32) - - [ ] M:SkiaSharp.SKCodec.StartIncrementalDecode(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32,SkiaSharp.SKCodecOptions,SkiaSharp.SKColorTable,System.Int32@) - - [ ] M:SkiaSharp.SKCodec.StartIncrementalDecode(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32,SkiaSharp.SKCodecOptions,System.IntPtr,System.Int32@) - - [ ] M:SkiaSharp.SKCodec.StartIncrementalDecode(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32,SkiaSharp.SKCodecOptions) - - [ ] M:SkiaSharp.SKCodec.StartIncrementalDecode(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32) - - [ ] M:SkiaSharp.SKCodec.StartScanlineDecode(SkiaSharp.SKImageInfo,SkiaSharp.SKCodecOptions,SkiaSharp.SKColorTable,System.Int32@) - - [ ] M:SkiaSharp.SKCodec.StartScanlineDecode(SkiaSharp.SKImageInfo,SkiaSharp.SKCodecOptions,System.IntPtr,System.Int32@) - - [ ] M:SkiaSharp.SKCodec.StartScanlineDecode(SkiaSharp.SKImageInfo,SkiaSharp.SKCodecOptions) - - [ ] M:SkiaSharp.SKCodec.StartScanlineDecode(SkiaSharp.SKImageInfo) - - [ ] P:SkiaSharp.SKCodec.EncodedFormat - - [ ] P:SkiaSharp.SKCodec.EncodedInfo - - [ ] P:SkiaSharp.SKCodec.EncodedOrigin - - [ ] P:SkiaSharp.SKCodec.FrameCount - - [ ] P:SkiaSharp.SKCodec.FrameInfo - - [ ] P:SkiaSharp.SKCodec.Info - - [ ] P:SkiaSharp.SKCodec.MinBufferedBytesNeeded - - [ ] P:SkiaSharp.SKCodec.NextScanline - - [ ] P:SkiaSharp.SKCodec.Origin - - [ ] P:SkiaSharp.SKCodec.Pixels - - [ ] P:SkiaSharp.SKCodec.RepetitionCount - - [ ] P:SkiaSharp.SKCodec.ScanlineOrder -- [ ] SkiaSharp.SKCodecAnimationDisposalMethod - - [ ] F:SkiaSharp.SKCodecAnimationDisposalMethod.Keep - - [ ] F:SkiaSharp.SKCodecAnimationDisposalMethod.RestoreBackgroundColor - - [ ] F:SkiaSharp.SKCodecAnimationDisposalMethod.RestorePrevious -- [ ] SkiaSharp.SKCodecFrameInfo - - [ ] M:SkiaSharp.SKCodecFrameInfo.Equals(SkiaSharp.SKCodecFrameInfo) - - [ ] M:SkiaSharp.SKCodecFrameInfo.Equals(System.Object) - - [ ] M:SkiaSharp.SKCodecFrameInfo.GetHashCode - - [ ] M:SkiaSharp.SKCodecFrameInfo.op_Equality(SkiaSharp.SKCodecFrameInfo,SkiaSharp.SKCodecFrameInfo) - - [ ] M:SkiaSharp.SKCodecFrameInfo.op_Inequality(SkiaSharp.SKCodecFrameInfo,SkiaSharp.SKCodecFrameInfo) - - [ ] P:SkiaSharp.SKCodecFrameInfo.AlphaType - - [ ] P:SkiaSharp.SKCodecFrameInfo.DisposalMethod - - [ ] P:SkiaSharp.SKCodecFrameInfo.Duration - - [ ] P:SkiaSharp.SKCodecFrameInfo.FullyRecieved - - [ ] P:SkiaSharp.SKCodecFrameInfo.RequiredFrame -- [ ] SkiaSharp.SKCodecOptions - - [ ] F:SkiaSharp.SKCodecOptions.Default - - [ ] M:SkiaSharp.SKCodecOptions.#ctor(SkiaSharp.SKRectI) - - [ ] M:SkiaSharp.SKCodecOptions.#ctor(SkiaSharp.SKZeroInitialized,SkiaSharp.SKRectI) - - [ ] M:SkiaSharp.SKCodecOptions.#ctor(SkiaSharp.SKZeroInitialized) - - [ ] M:SkiaSharp.SKCodecOptions.#ctor(System.Int32,System.Boolean) - - [ ] M:SkiaSharp.SKCodecOptions.#ctor(System.Int32,System.Int32) - - [ ] M:SkiaSharp.SKCodecOptions.#ctor(System.Int32) - - [ ] M:SkiaSharp.SKCodecOptions.Equals(SkiaSharp.SKCodecOptions) - - [ ] M:SkiaSharp.SKCodecOptions.Equals(System.Object) - - [ ] M:SkiaSharp.SKCodecOptions.GetHashCode - - [ ] M:SkiaSharp.SKCodecOptions.op_Equality(SkiaSharp.SKCodecOptions,SkiaSharp.SKCodecOptions) - - [ ] M:SkiaSharp.SKCodecOptions.op_Inequality(SkiaSharp.SKCodecOptions,SkiaSharp.SKCodecOptions) - - [ ] P:SkiaSharp.SKCodecOptions.FrameIndex - - [ ] P:SkiaSharp.SKCodecOptions.HasPriorFrame - - [ ] P:SkiaSharp.SKCodecOptions.HasSubset - - [ ] P:SkiaSharp.SKCodecOptions.PremulBehavior - - [ ] P:SkiaSharp.SKCodecOptions.PriorFrame - - [ ] P:SkiaSharp.SKCodecOptions.Subset - - [ ] P:SkiaSharp.SKCodecOptions.ZeroInitialized -- [ ] SkiaSharp.SKCodecOrigin - - [ ] F:SkiaSharp.SKCodecOrigin.BottomLeft - - [ ] F:SkiaSharp.SKCodecOrigin.BottomRight - - [ ] F:SkiaSharp.SKCodecOrigin.LeftBottom - - [ ] F:SkiaSharp.SKCodecOrigin.LeftTop - - [ ] F:SkiaSharp.SKCodecOrigin.RightBottom - - [ ] F:SkiaSharp.SKCodecOrigin.RightTop - - [ ] F:SkiaSharp.SKCodecOrigin.TopLeft - - [ ] F:SkiaSharp.SKCodecOrigin.TopRight -- [ ] SkiaSharp.SKCodecResult - - [ ] F:SkiaSharp.SKCodecResult.CouldNotRewind - - [ ] F:SkiaSharp.SKCodecResult.ErrorInInput - - [ ] F:SkiaSharp.SKCodecResult.IncompleteInput - - [ ] F:SkiaSharp.SKCodecResult.InternalError - - [ ] F:SkiaSharp.SKCodecResult.InvalidConversion - - [ ] F:SkiaSharp.SKCodecResult.InvalidInput - - [ ] F:SkiaSharp.SKCodecResult.InvalidParameters - - [ ] F:SkiaSharp.SKCodecResult.InvalidScale - - [ ] F:SkiaSharp.SKCodecResult.Success - - [ ] F:SkiaSharp.SKCodecResult.Unimplemented -- [ ] SkiaSharp.SKCodecScanlineOrder - - [ ] F:SkiaSharp.SKCodecScanlineOrder.BottomUp - - [ ] F:SkiaSharp.SKCodecScanlineOrder.TopDown -- [ ] SkiaSharp.SKColor - - [ ] F:SkiaSharp.SKColor.Empty - - [ ] M:SkiaSharp.SKColor.#ctor(System.Byte,System.Byte,System.Byte,System.Byte) - - [ ] M:SkiaSharp.SKColor.#ctor(System.Byte,System.Byte,System.Byte) - - [ ] M:SkiaSharp.SKColor.#ctor(System.UInt32) - - [ ] M:SkiaSharp.SKColor.Equals(SkiaSharp.SKColor) - - [ ] M:SkiaSharp.SKColor.Equals(System.Object) - - [ ] M:SkiaSharp.SKColor.FromHsl(System.Single,System.Single,System.Single,System.Byte) - - [ ] M:SkiaSharp.SKColor.FromHsv(System.Single,System.Single,System.Single,System.Byte) - - [ ] M:SkiaSharp.SKColor.GetHashCode - - [ ] M:SkiaSharp.SKColor.op_Equality(SkiaSharp.SKColor,SkiaSharp.SKColor) - - [ ] M:SkiaSharp.SKColor.op_Explicit(SkiaSharp.SKColor)~System.UInt32 - - [ ] M:SkiaSharp.SKColor.op_Implicit(System.UInt32)~SkiaSharp.SKColor - - [ ] M:SkiaSharp.SKColor.op_Inequality(SkiaSharp.SKColor,SkiaSharp.SKColor) - - [ ] M:SkiaSharp.SKColor.Parse(System.String) - - [ ] M:SkiaSharp.SKColor.ToHsl(System.Single@,System.Single@,System.Single@) - - [ ] M:SkiaSharp.SKColor.ToHsv(System.Single@,System.Single@,System.Single@) - - [ ] M:SkiaSharp.SKColor.ToString - - [ ] M:SkiaSharp.SKColor.TryParse(System.String,SkiaSharp.SKColor@) - - [ ] M:SkiaSharp.SKColor.WithAlpha(System.Byte) - - [ ] M:SkiaSharp.SKColor.WithBlue(System.Byte) - - [ ] M:SkiaSharp.SKColor.WithGreen(System.Byte) - - [ ] M:SkiaSharp.SKColor.WithRed(System.Byte) - - [ ] P:SkiaSharp.SKColor.Alpha - - [ ] P:SkiaSharp.SKColor.Blue - - [ ] P:SkiaSharp.SKColor.Green - - [ ] P:SkiaSharp.SKColor.Hue - - [ ] P:SkiaSharp.SKColor.Red -- [ ] SkiaSharp.SKColorChannel - - [ ] F:SkiaSharp.SKColorChannel.A - - [ ] F:SkiaSharp.SKColorChannel.B - - [ ] F:SkiaSharp.SKColorChannel.G - - [ ] F:SkiaSharp.SKColorChannel.R -- [ ] SkiaSharp.SKColorF - - [ ] F:SkiaSharp.SKColorF.Empty - - [ ] M:SkiaSharp.SKColorF.#ctor(System.Single,System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKColorF.#ctor(System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKColorF.Clamp - - [ ] M:SkiaSharp.SKColorF.Equals(SkiaSharp.SKColorF) - - [ ] M:SkiaSharp.SKColorF.Equals(System.Object) - - [ ] M:SkiaSharp.SKColorF.FromHsl(System.Single,System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKColorF.FromHsv(System.Single,System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKColorF.GetHashCode - - [ ] M:SkiaSharp.SKColorF.op_Equality(SkiaSharp.SKColorF,SkiaSharp.SKColorF) - - [ ] M:SkiaSharp.SKColorF.op_Explicit(SkiaSharp.SKColorF)~SkiaSharp.SKColor - - [ ] M:SkiaSharp.SKColorF.op_Implicit(SkiaSharp.SKColor)~SkiaSharp.SKColorF - - [ ] M:SkiaSharp.SKColorF.op_Inequality(SkiaSharp.SKColorF,SkiaSharp.SKColorF) - - [ ] M:SkiaSharp.SKColorF.ToHsl(System.Single@,System.Single@,System.Single@) - - [ ] M:SkiaSharp.SKColorF.ToHsv(System.Single@,System.Single@,System.Single@) - - [ ] M:SkiaSharp.SKColorF.ToString - - [ ] M:SkiaSharp.SKColorF.WithAlpha(System.Single) - - [ ] M:SkiaSharp.SKColorF.WithBlue(System.Single) - - [ ] M:SkiaSharp.SKColorF.WithGreen(System.Single) - - [ ] M:SkiaSharp.SKColorF.WithRed(System.Single) - - [ ] P:SkiaSharp.SKColorF.Alpha - - [ ] P:SkiaSharp.SKColorF.Blue - - [ ] P:SkiaSharp.SKColorF.Green - - [ ] P:SkiaSharp.SKColorF.Hue - - [ ] P:SkiaSharp.SKColorF.Red -- [ ] SkiaSharp.SKColorFilter - - [ ] F:SkiaSharp.SKColorFilter.ColorMatrixSize - - [ ] F:SkiaSharp.SKColorFilter.TableMaxLength - - [ ] M:SkiaSharp.SKColorFilter.CreateBlendMode(SkiaSharp.SKColor,SkiaSharp.SKBlendMode) - - [ ] M:SkiaSharp.SKColorFilter.CreateColorMatrix(System.Single[]) - - [ ] M:SkiaSharp.SKColorFilter.CreateCompose(SkiaSharp.SKColorFilter,SkiaSharp.SKColorFilter) - - [ ] M:SkiaSharp.SKColorFilter.CreateHighContrast(SkiaSharp.SKHighContrastConfig) - - [ ] M:SkiaSharp.SKColorFilter.CreateHighContrast(System.Boolean,SkiaSharp.SKHighContrastConfigInvertStyle,System.Single) - - [ ] M:SkiaSharp.SKColorFilter.CreateLighting(SkiaSharp.SKColor,SkiaSharp.SKColor) - - [ ] M:SkiaSharp.SKColorFilter.CreateLumaColor - - [ ] M:SkiaSharp.SKColorFilter.CreateTable(System.Byte[],System.Byte[],System.Byte[],System.Byte[]) - - [ ] M:SkiaSharp.SKColorFilter.CreateTable(System.Byte[]) - - [ ] M:SkiaSharp.SKColorFilter.Dispose(System.Boolean) -- [ ] SkiaSharp.SKColors - - [ ] F:SkiaSharp.SKColors.AliceBlue - - [ ] F:SkiaSharp.SKColors.AntiqueWhite - - [ ] F:SkiaSharp.SKColors.Aqua - - [ ] F:SkiaSharp.SKColors.Aquamarine - - [ ] F:SkiaSharp.SKColors.Azure - - [ ] F:SkiaSharp.SKColors.Beige - - [ ] F:SkiaSharp.SKColors.Bisque - - [ ] F:SkiaSharp.SKColors.Black - - [ ] F:SkiaSharp.SKColors.BlanchedAlmond - - [ ] F:SkiaSharp.SKColors.Blue - - [ ] F:SkiaSharp.SKColors.BlueViolet - - [ ] F:SkiaSharp.SKColors.Brown - - [ ] F:SkiaSharp.SKColors.BurlyWood - - [ ] F:SkiaSharp.SKColors.CadetBlue - - [ ] F:SkiaSharp.SKColors.Chartreuse - - [ ] F:SkiaSharp.SKColors.Chocolate - - [ ] F:SkiaSharp.SKColors.Coral - - [ ] F:SkiaSharp.SKColors.CornflowerBlue - - [ ] F:SkiaSharp.SKColors.Cornsilk - - [ ] F:SkiaSharp.SKColors.Crimson - - [ ] F:SkiaSharp.SKColors.Cyan - - [ ] F:SkiaSharp.SKColors.DarkBlue - - [ ] F:SkiaSharp.SKColors.DarkCyan - - [ ] F:SkiaSharp.SKColors.DarkGoldenrod - - [ ] F:SkiaSharp.SKColors.DarkGray - - [ ] F:SkiaSharp.SKColors.DarkGreen - - [ ] F:SkiaSharp.SKColors.DarkKhaki - - [ ] F:SkiaSharp.SKColors.DarkMagenta - - [ ] F:SkiaSharp.SKColors.DarkOliveGreen - - [ ] F:SkiaSharp.SKColors.DarkOrange - - [ ] F:SkiaSharp.SKColors.DarkOrchid - - [ ] F:SkiaSharp.SKColors.DarkRed - - [ ] F:SkiaSharp.SKColors.DarkSalmon - - [ ] F:SkiaSharp.SKColors.DarkSeaGreen - - [ ] F:SkiaSharp.SKColors.DarkSlateBlue - - [ ] F:SkiaSharp.SKColors.DarkSlateGray - - [ ] F:SkiaSharp.SKColors.DarkTurquoise - - [ ] F:SkiaSharp.SKColors.DarkViolet - - [ ] F:SkiaSharp.SKColors.DeepPink - - [ ] F:SkiaSharp.SKColors.DeepSkyBlue - - [ ] F:SkiaSharp.SKColors.DimGray - - [ ] F:SkiaSharp.SKColors.DodgerBlue - - [ ] F:SkiaSharp.SKColors.Firebrick - - [ ] F:SkiaSharp.SKColors.FloralWhite - - [ ] F:SkiaSharp.SKColors.ForestGreen - - [ ] F:SkiaSharp.SKColors.Fuchsia - - [ ] F:SkiaSharp.SKColors.Gainsboro - - [ ] F:SkiaSharp.SKColors.GhostWhite - - [ ] F:SkiaSharp.SKColors.Gold - - [ ] F:SkiaSharp.SKColors.Goldenrod - - [ ] F:SkiaSharp.SKColors.Gray - - [ ] F:SkiaSharp.SKColors.Green - - [ ] F:SkiaSharp.SKColors.GreenYellow - - [ ] F:SkiaSharp.SKColors.Honeydew - - [ ] F:SkiaSharp.SKColors.HotPink - - [ ] F:SkiaSharp.SKColors.IndianRed - - [ ] F:SkiaSharp.SKColors.Indigo - - [ ] F:SkiaSharp.SKColors.Ivory - - [ ] F:SkiaSharp.SKColors.Khaki - - [ ] F:SkiaSharp.SKColors.Lavender - - [ ] F:SkiaSharp.SKColors.LavenderBlush - - [ ] F:SkiaSharp.SKColors.LawnGreen - - [ ] F:SkiaSharp.SKColors.LemonChiffon - - [ ] F:SkiaSharp.SKColors.LightBlue - - [ ] F:SkiaSharp.SKColors.LightCoral - - [ ] F:SkiaSharp.SKColors.LightCyan - - [ ] F:SkiaSharp.SKColors.LightGoldenrodYellow - - [ ] F:SkiaSharp.SKColors.LightGray - - [ ] F:SkiaSharp.SKColors.LightGreen - - [ ] F:SkiaSharp.SKColors.LightPink - - [ ] F:SkiaSharp.SKColors.LightSalmon - - [ ] F:SkiaSharp.SKColors.LightSeaGreen - - [ ] F:SkiaSharp.SKColors.LightSkyBlue - - [ ] F:SkiaSharp.SKColors.LightSlateGray - - [ ] F:SkiaSharp.SKColors.LightSteelBlue - - [ ] F:SkiaSharp.SKColors.LightYellow - - [ ] F:SkiaSharp.SKColors.Lime - - [ ] F:SkiaSharp.SKColors.LimeGreen - - [ ] F:SkiaSharp.SKColors.Linen - - [ ] F:SkiaSharp.SKColors.Magenta - - [ ] F:SkiaSharp.SKColors.Maroon - - [ ] F:SkiaSharp.SKColors.MediumAquamarine - - [ ] F:SkiaSharp.SKColors.MediumBlue - - [ ] F:SkiaSharp.SKColors.MediumOrchid - - [ ] F:SkiaSharp.SKColors.MediumPurple - - [ ] F:SkiaSharp.SKColors.MediumSeaGreen - - [ ] F:SkiaSharp.SKColors.MediumSlateBlue - - [ ] F:SkiaSharp.SKColors.MediumSpringGreen - - [ ] F:SkiaSharp.SKColors.MediumTurquoise - - [ ] F:SkiaSharp.SKColors.MediumVioletRed - - [ ] F:SkiaSharp.SKColors.MidnightBlue - - [ ] F:SkiaSharp.SKColors.MintCream - - [ ] F:SkiaSharp.SKColors.MistyRose - - [ ] F:SkiaSharp.SKColors.Moccasin - - [ ] F:SkiaSharp.SKColors.NavajoWhite - - [ ] F:SkiaSharp.SKColors.Navy - - [ ] F:SkiaSharp.SKColors.OldLace - - [ ] F:SkiaSharp.SKColors.Olive - - [ ] F:SkiaSharp.SKColors.OliveDrab - - [ ] F:SkiaSharp.SKColors.Orange - - [ ] F:SkiaSharp.SKColors.OrangeRed - - [ ] F:SkiaSharp.SKColors.Orchid - - [ ] F:SkiaSharp.SKColors.PaleGoldenrod - - [ ] F:SkiaSharp.SKColors.PaleGreen - - [ ] F:SkiaSharp.SKColors.PaleTurquoise - - [ ] F:SkiaSharp.SKColors.PaleVioletRed - - [ ] F:SkiaSharp.SKColors.PapayaWhip - - [ ] F:SkiaSharp.SKColors.PeachPuff - - [ ] F:SkiaSharp.SKColors.Peru - - [ ] F:SkiaSharp.SKColors.Pink - - [ ] F:SkiaSharp.SKColors.Plum - - [ ] F:SkiaSharp.SKColors.PowderBlue - - [ ] F:SkiaSharp.SKColors.Purple - - [ ] F:SkiaSharp.SKColors.Red - - [ ] F:SkiaSharp.SKColors.RosyBrown - - [ ] F:SkiaSharp.SKColors.RoyalBlue - - [ ] F:SkiaSharp.SKColors.SaddleBrown - - [ ] F:SkiaSharp.SKColors.Salmon - - [ ] F:SkiaSharp.SKColors.SandyBrown - - [ ] F:SkiaSharp.SKColors.SeaGreen - - [ ] F:SkiaSharp.SKColors.SeaShell - - [ ] F:SkiaSharp.SKColors.Sienna - - [ ] F:SkiaSharp.SKColors.Silver - - [ ] F:SkiaSharp.SKColors.SkyBlue - - [ ] F:SkiaSharp.SKColors.SlateBlue - - [ ] F:SkiaSharp.SKColors.SlateGray - - [ ] F:SkiaSharp.SKColors.Snow - - [ ] F:SkiaSharp.SKColors.SpringGreen - - [ ] F:SkiaSharp.SKColors.SteelBlue - - [ ] F:SkiaSharp.SKColors.Tan - - [ ] F:SkiaSharp.SKColors.Teal - - [ ] F:SkiaSharp.SKColors.Thistle - - [ ] F:SkiaSharp.SKColors.Tomato - - [ ] F:SkiaSharp.SKColors.Transparent - - [ ] F:SkiaSharp.SKColors.Turquoise - - [ ] F:SkiaSharp.SKColors.Violet - - [ ] F:SkiaSharp.SKColors.Wheat - - [ ] F:SkiaSharp.SKColors.White - - [ ] F:SkiaSharp.SKColors.WhiteSmoke - - [ ] F:SkiaSharp.SKColors.Yellow - - [ ] F:SkiaSharp.SKColors.YellowGreen - - [ ] P:SkiaSharp.SKColors.Empty -- [ ] SkiaSharp.SKColorSpace - - [ ] M:SkiaSharp.SKColorSpace.CreateIcc(SkiaSharp.SKColorSpaceIccProfile) - - [ ] M:SkiaSharp.SKColorSpace.CreateIcc(SkiaSharp.SKData) - - [ ] M:SkiaSharp.SKColorSpace.CreateIcc(System.Byte[],System.Int64) - - [ ] M:SkiaSharp.SKColorSpace.CreateIcc(System.Byte[]) - - [ ] M:SkiaSharp.SKColorSpace.CreateIcc(System.IntPtr,System.Int64) - - [ ] M:SkiaSharp.SKColorSpace.CreateIcc(System.ReadOnlySpan{System.Byte}) - - [ ] M:SkiaSharp.SKColorSpace.CreateRgb(SkiaSharp.SKColorSpaceRenderTargetGamma,SkiaSharp.SKColorSpaceGamut,SkiaSharp.SKColorSpaceFlags) - - [ ] M:SkiaSharp.SKColorSpace.CreateRgb(SkiaSharp.SKColorSpaceRenderTargetGamma,SkiaSharp.SKColorSpaceGamut) - - [ ] M:SkiaSharp.SKColorSpace.CreateRgb(SkiaSharp.SKColorSpaceRenderTargetGamma,SkiaSharp.SKMatrix44,SkiaSharp.SKColorSpaceFlags) - - [ ] M:SkiaSharp.SKColorSpace.CreateRgb(SkiaSharp.SKColorSpaceRenderTargetGamma,SkiaSharp.SKMatrix44) - - [ ] M:SkiaSharp.SKColorSpace.CreateRgb(SkiaSharp.SKColorSpaceTransferFn,SkiaSharp.SKColorSpaceGamut,SkiaSharp.SKColorSpaceFlags) - - [ ] M:SkiaSharp.SKColorSpace.CreateRgb(SkiaSharp.SKColorSpaceTransferFn,SkiaSharp.SKColorSpaceGamut) - - [ ] M:SkiaSharp.SKColorSpace.CreateRgb(SkiaSharp.SKColorSpaceTransferFn,SkiaSharp.SKColorSpaceXyz) - - [ ] M:SkiaSharp.SKColorSpace.CreateRgb(SkiaSharp.SKColorSpaceTransferFn,SkiaSharp.SKMatrix44,SkiaSharp.SKColorSpaceFlags) - - [ ] M:SkiaSharp.SKColorSpace.CreateRgb(SkiaSharp.SKColorSpaceTransferFn,SkiaSharp.SKMatrix44) - - [ ] M:SkiaSharp.SKColorSpace.CreateRgb(SkiaSharp.SKNamedGamma,SkiaSharp.SKColorSpaceGamut) - - [ ] M:SkiaSharp.SKColorSpace.CreateRgb(SkiaSharp.SKNamedGamma,SkiaSharp.SKMatrix44) - - [ ] M:SkiaSharp.SKColorSpace.CreateSrgb - - [ ] M:SkiaSharp.SKColorSpace.CreateSrgbLinear - - [ ] M:SkiaSharp.SKColorSpace.Dispose(System.Boolean) - - [ ] M:SkiaSharp.SKColorSpace.Equal(SkiaSharp.SKColorSpace,SkiaSharp.SKColorSpace) - - [ ] M:SkiaSharp.SKColorSpace.FromXyzD50 - - [ ] M:SkiaSharp.SKColorSpace.GetNumericalTransferFunction - - [ ] M:SkiaSharp.SKColorSpace.GetNumericalTransferFunction(SkiaSharp.SKColorSpaceTransferFn@) - - [ ] M:SkiaSharp.SKColorSpace.ToColorSpaceXyz - - [ ] M:SkiaSharp.SKColorSpace.ToColorSpaceXyz(SkiaSharp.SKColorSpaceXyz@) - - [ ] M:SkiaSharp.SKColorSpace.ToLinearGamma - - [ ] M:SkiaSharp.SKColorSpace.ToProfile - - [ ] M:SkiaSharp.SKColorSpace.ToSrgbGamma - - [ ] M:SkiaSharp.SKColorSpace.ToXyzD50 - - [ ] M:SkiaSharp.SKColorSpace.ToXyzD50(SkiaSharp.SKMatrix44) - - [ ] P:SkiaSharp.SKColorSpace.GammaIsCloseToSrgb - - [ ] P:SkiaSharp.SKColorSpace.GammaIsLinear - - [ ] P:SkiaSharp.SKColorSpace.IsNumericalTransferFunction - - [ ] P:SkiaSharp.SKColorSpace.IsSrgb - - [ ] P:SkiaSharp.SKColorSpace.NamedGamma - - [ ] P:SkiaSharp.SKColorSpace.Type -- [ ] SkiaSharp.SKColorSpaceFlags - - [ ] F:SkiaSharp.SKColorSpaceFlags.None - - [ ] F:SkiaSharp.SKColorSpaceFlags.NonLinearBlending -- [ ] SkiaSharp.SKColorSpaceGamut - - [ ] F:SkiaSharp.SKColorSpaceGamut.AdobeRgb - - [ ] F:SkiaSharp.SKColorSpaceGamut.Dcip3D65 - - [ ] F:SkiaSharp.SKColorSpaceGamut.Rec2020 - - [ ] F:SkiaSharp.SKColorSpaceGamut.Srgb -- [ ] SkiaSharp.SKColorSpaceIccProfile - - [ ] M:SkiaSharp.SKColorSpaceIccProfile.#ctor - - [ ] M:SkiaSharp.SKColorSpaceIccProfile.Create(SkiaSharp.SKData) - - [ ] M:SkiaSharp.SKColorSpaceIccProfile.Create(System.Byte[]) - - [ ] M:SkiaSharp.SKColorSpaceIccProfile.Create(System.IntPtr,System.Int64) - - [ ] M:SkiaSharp.SKColorSpaceIccProfile.Create(System.ReadOnlySpan{System.Byte}) - - [ ] M:SkiaSharp.SKColorSpaceIccProfile.DisposeNative - - [ ] M:SkiaSharp.SKColorSpaceIccProfile.ToColorSpaceXyz - - [ ] M:SkiaSharp.SKColorSpaceIccProfile.ToColorSpaceXyz(SkiaSharp.SKColorSpaceXyz@) - - [ ] P:SkiaSharp.SKColorSpaceIccProfile.Buffer - - [ ] P:SkiaSharp.SKColorSpaceIccProfile.Size -- [ ] SkiaSharp.SKColorSpacePrimaries - - [ ] F:SkiaSharp.SKColorSpacePrimaries.Empty - - [ ] M:SkiaSharp.SKColorSpacePrimaries.#ctor(System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKColorSpacePrimaries.#ctor(System.Single[]) - - [ ] M:SkiaSharp.SKColorSpacePrimaries.Equals(SkiaSharp.SKColorSpacePrimaries) - - [ ] M:SkiaSharp.SKColorSpacePrimaries.Equals(System.Object) - - [ ] M:SkiaSharp.SKColorSpacePrimaries.GetHashCode - - [ ] M:SkiaSharp.SKColorSpacePrimaries.op_Equality(SkiaSharp.SKColorSpacePrimaries,SkiaSharp.SKColorSpacePrimaries) - - [ ] M:SkiaSharp.SKColorSpacePrimaries.op_Inequality(SkiaSharp.SKColorSpacePrimaries,SkiaSharp.SKColorSpacePrimaries) - - [ ] M:SkiaSharp.SKColorSpacePrimaries.ToColorSpaceXyz - - [ ] M:SkiaSharp.SKColorSpacePrimaries.ToColorSpaceXyz(SkiaSharp.SKColorSpaceXyz@) - - [ ] M:SkiaSharp.SKColorSpacePrimaries.ToXyzD50 - - [ ] M:SkiaSharp.SKColorSpacePrimaries.ToXyzD50(SkiaSharp.SKMatrix44) - - [ ] P:SkiaSharp.SKColorSpacePrimaries.BX - - [ ] P:SkiaSharp.SKColorSpacePrimaries.BY - - [ ] P:SkiaSharp.SKColorSpacePrimaries.GX - - [ ] P:SkiaSharp.SKColorSpacePrimaries.GY - - [ ] P:SkiaSharp.SKColorSpacePrimaries.RX - - [ ] P:SkiaSharp.SKColorSpacePrimaries.RY - - [ ] P:SkiaSharp.SKColorSpacePrimaries.Values - - [ ] P:SkiaSharp.SKColorSpacePrimaries.WX - - [ ] P:SkiaSharp.SKColorSpacePrimaries.WY -- [ ] SkiaSharp.SKColorSpaceRenderTargetGamma - - [ ] F:SkiaSharp.SKColorSpaceRenderTargetGamma.Linear - - [ ] F:SkiaSharp.SKColorSpaceRenderTargetGamma.Srgb -- [ ] SkiaSharp.SKColorSpaceTransferFn - - [ ] F:SkiaSharp.SKColorSpaceTransferFn.Empty - - [ ] M:SkiaSharp.SKColorSpaceTransferFn.#ctor(System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKColorSpaceTransferFn.#ctor(System.Single[]) - - [ ] M:SkiaSharp.SKColorSpaceTransferFn.Equals(SkiaSharp.SKColorSpaceTransferFn) - - [ ] M:SkiaSharp.SKColorSpaceTransferFn.Equals(System.Object) - - [ ] M:SkiaSharp.SKColorSpaceTransferFn.GetHashCode - - [ ] M:SkiaSharp.SKColorSpaceTransferFn.Invert - - [ ] M:SkiaSharp.SKColorSpaceTransferFn.op_Equality(SkiaSharp.SKColorSpaceTransferFn,SkiaSharp.SKColorSpaceTransferFn) - - [ ] M:SkiaSharp.SKColorSpaceTransferFn.op_Inequality(SkiaSharp.SKColorSpaceTransferFn,SkiaSharp.SKColorSpaceTransferFn) - - [ ] M:SkiaSharp.SKColorSpaceTransferFn.Transform(System.Single) - - [ ] P:SkiaSharp.SKColorSpaceTransferFn.A - - [ ] P:SkiaSharp.SKColorSpaceTransferFn.B - - [ ] P:SkiaSharp.SKColorSpaceTransferFn.C - - [ ] P:SkiaSharp.SKColorSpaceTransferFn.D - - [ ] P:SkiaSharp.SKColorSpaceTransferFn.E - - [ ] P:SkiaSharp.SKColorSpaceTransferFn.F - - [ ] P:SkiaSharp.SKColorSpaceTransferFn.G - - [ ] P:SkiaSharp.SKColorSpaceTransferFn.Hlg - - [ ] P:SkiaSharp.SKColorSpaceTransferFn.Linear - - [ ] P:SkiaSharp.SKColorSpaceTransferFn.Pq - - [ ] P:SkiaSharp.SKColorSpaceTransferFn.Rec2020 - - [ ] P:SkiaSharp.SKColorSpaceTransferFn.Srgb - - [ ] P:SkiaSharp.SKColorSpaceTransferFn.TwoDotTwo - - [ ] P:SkiaSharp.SKColorSpaceTransferFn.Values -- [ ] SkiaSharp.SKColorSpaceType - - [ ] F:SkiaSharp.SKColorSpaceType.Cmyk - - [ ] F:SkiaSharp.SKColorSpaceType.Gray - - [ ] F:SkiaSharp.SKColorSpaceType.Rgb -- [ ] SkiaSharp.SKColorSpaceXyz - - [ ] F:SkiaSharp.SKColorSpaceXyz.Empty - - [ ] M:SkiaSharp.SKColorSpaceXyz.#ctor(System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKColorSpaceXyz.#ctor(System.Single) - - [ ] M:SkiaSharp.SKColorSpaceXyz.#ctor(System.Single[]) - - [ ] M:SkiaSharp.SKColorSpaceXyz.Concat(SkiaSharp.SKColorSpaceXyz,SkiaSharp.SKColorSpaceXyz) - - [ ] M:SkiaSharp.SKColorSpaceXyz.Equals(SkiaSharp.SKColorSpaceXyz) - - [ ] M:SkiaSharp.SKColorSpaceXyz.Equals(System.Object) - - [ ] M:SkiaSharp.SKColorSpaceXyz.GetHashCode - - [ ] M:SkiaSharp.SKColorSpaceXyz.Invert - - [ ] M:SkiaSharp.SKColorSpaceXyz.op_Equality(SkiaSharp.SKColorSpaceXyz,SkiaSharp.SKColorSpaceXyz) - - [ ] M:SkiaSharp.SKColorSpaceXyz.op_Inequality(SkiaSharp.SKColorSpaceXyz,SkiaSharp.SKColorSpaceXyz) - - [ ] P:SkiaSharp.SKColorSpaceXyz.AdobeRgb - - [ ] P:SkiaSharp.SKColorSpaceXyz.Dcip3 - - [ ] P:SkiaSharp.SKColorSpaceXyz.DisplayP3 - - [ ] P:SkiaSharp.SKColorSpaceXyz.Item(System.Int32,System.Int32) - - [ ] P:SkiaSharp.SKColorSpaceXyz.Rec2020 - - [ ] P:SkiaSharp.SKColorSpaceXyz.Srgb - - [ ] P:SkiaSharp.SKColorSpaceXyz.Values - - [ ] P:SkiaSharp.SKColorSpaceXyz.Xyz -- [ ] SkiaSharp.SKColorTable - - [ ] F:SkiaSharp.SKColorTable.MaxLength - - [ ] M:SkiaSharp.SKColorTable.#ctor - - [ ] M:SkiaSharp.SKColorTable.#ctor(SkiaSharp.SKColor[],System.Int32) - - [ ] M:SkiaSharp.SKColorTable.#ctor(SkiaSharp.SKColor[]) - - [ ] M:SkiaSharp.SKColorTable.#ctor(SkiaSharp.SKPMColor[],System.Int32) - - [ ] M:SkiaSharp.SKColorTable.#ctor(SkiaSharp.SKPMColor[]) - - [ ] M:SkiaSharp.SKColorTable.#ctor(System.Int32) - - [ ] M:SkiaSharp.SKColorTable.Dispose(System.Boolean) - - [ ] M:SkiaSharp.SKColorTable.GetUnPreMultipliedColor(System.Int32) - - [ ] M:SkiaSharp.SKColorTable.ReadColors - - [ ] P:SkiaSharp.SKColorTable.Colors - - [ ] P:SkiaSharp.SKColorTable.Count - - [ ] P:SkiaSharp.SKColorTable.Item(System.Int32) - - [ ] P:SkiaSharp.SKColorTable.UnPreMultipledColors -- [ ] SkiaSharp.SKColorType - - [ ] F:SkiaSharp.SKColorType.Alpha16 - - [ ] F:SkiaSharp.SKColorType.Alpha8 - - [ ] F:SkiaSharp.SKColorType.AlphaF16 - - [ ] F:SkiaSharp.SKColorType.Argb4444 - - [ ] F:SkiaSharp.SKColorType.Bgr101010x - - [ ] F:SkiaSharp.SKColorType.Bgra1010102 - - [ ] F:SkiaSharp.SKColorType.Bgra8888 - - [ ] F:SkiaSharp.SKColorType.Gray8 - - [ ] F:SkiaSharp.SKColorType.Index8 - - [ ] F:SkiaSharp.SKColorType.Rg1616 - - [ ] F:SkiaSharp.SKColorType.Rg88 - - [ ] F:SkiaSharp.SKColorType.Rgb101010x - - [ ] F:SkiaSharp.SKColorType.Rgb565 - - [ ] F:SkiaSharp.SKColorType.Rgb888x - - [ ] F:SkiaSharp.SKColorType.Rgba1010102 - - [ ] F:SkiaSharp.SKColorType.Rgba16161616 - - [ ] F:SkiaSharp.SKColorType.Rgba8888 - - [ ] F:SkiaSharp.SKColorType.RgbaF16 - - [ ] F:SkiaSharp.SKColorType.RgbaF16Clamped - - [ ] F:SkiaSharp.SKColorType.RgbaF32 - - [ ] F:SkiaSharp.SKColorType.RgF16 - - [ ] F:SkiaSharp.SKColorType.Unknown -- [ ] SkiaSharp.SKCropRectFlags - - [ ] F:SkiaSharp.SKCropRectFlags.HasAll - - [ ] F:SkiaSharp.SKCropRectFlags.HasHeight - - [ ] F:SkiaSharp.SKCropRectFlags.HasLeft - - [ ] F:SkiaSharp.SKCropRectFlags.HasNone - - [ ] F:SkiaSharp.SKCropRectFlags.HasTop - - [ ] F:SkiaSharp.SKCropRectFlags.HasWidth -- [ ] SkiaSharp.SKData - - [ ] M:SkiaSharp.SKData.AsSpan - - [ ] M:SkiaSharp.SKData.AsStream - - [ ] M:SkiaSharp.SKData.AsStream(System.Boolean) - - [ ] M:SkiaSharp.SKData.Create(SkiaSharp.SKStream,System.Int32) - - [ ] M:SkiaSharp.SKData.Create(SkiaSharp.SKStream,System.Int64) - - [ ] M:SkiaSharp.SKData.Create(SkiaSharp.SKStream,System.UInt64) - - [ ] M:SkiaSharp.SKData.Create(SkiaSharp.SKStream) - - [ ] M:SkiaSharp.SKData.Create(System.Int32) - - [ ] M:SkiaSharp.SKData.Create(System.Int64) - - [ ] M:SkiaSharp.SKData.Create(System.IntPtr,System.Int32,SkiaSharp.SKDataReleaseDelegate,System.Object) - - [ ] M:SkiaSharp.SKData.Create(System.IntPtr,System.Int32,SkiaSharp.SKDataReleaseDelegate) - - [ ] M:SkiaSharp.SKData.Create(System.IntPtr,System.Int32) - - [ ] M:SkiaSharp.SKData.Create(System.IO.Stream,System.Int32) - - [ ] M:SkiaSharp.SKData.Create(System.IO.Stream,System.Int64) - - [ ] M:SkiaSharp.SKData.Create(System.IO.Stream,System.UInt64) - - [ ] M:SkiaSharp.SKData.Create(System.IO.Stream) - - [ ] M:SkiaSharp.SKData.Create(System.String) - - [ ] M:SkiaSharp.SKData.Create(System.UInt64) - - [ ] M:SkiaSharp.SKData.CreateCopy(System.Byte[],System.UInt64) - - [ ] M:SkiaSharp.SKData.CreateCopy(System.Byte[]) - - [ ] M:SkiaSharp.SKData.CreateCopy(System.IntPtr,System.Int32) - - [ ] M:SkiaSharp.SKData.CreateCopy(System.IntPtr,System.Int64) - - [ ] M:SkiaSharp.SKData.CreateCopy(System.IntPtr,System.UInt64) - - [ ] M:SkiaSharp.SKData.CreateCopy(System.ReadOnlySpan{System.Byte}) - - [ ] M:SkiaSharp.SKData.Dispose(System.Boolean) - - [ ] M:SkiaSharp.SKData.SaveTo(System.IO.Stream) - - [ ] M:SkiaSharp.SKData.Subset(System.UInt64,System.UInt64) - - [ ] M:SkiaSharp.SKData.ToArray - - [ ] P:SkiaSharp.SKData.Data - - [ ] P:SkiaSharp.SKData.Empty - - [ ] P:SkiaSharp.SKData.IsEmpty - - [ ] P:SkiaSharp.SKData.Size - - [ ] P:SkiaSharp.SKData.Span -- [ ] SkiaSharp.SKDataReleaseDelegate -- [ ] SkiaSharp.SKDisplacementMapEffectChannelSelectorType - - [ ] F:SkiaSharp.SKDisplacementMapEffectChannelSelectorType.A - - [ ] F:SkiaSharp.SKDisplacementMapEffectChannelSelectorType.B - - [ ] F:SkiaSharp.SKDisplacementMapEffectChannelSelectorType.G - - [ ] F:SkiaSharp.SKDisplacementMapEffectChannelSelectorType.R - - [ ] F:SkiaSharp.SKDisplacementMapEffectChannelSelectorType.Unknown -- [ ] SkiaSharp.SKDocument - - [ ] F:SkiaSharp.SKDocument.DefaultRasterDpi - - [ ] M:SkiaSharp.SKDocument.Abort - - [ ] M:SkiaSharp.SKDocument.BeginPage(System.Single,System.Single,SkiaSharp.SKRect) - - [ ] M:SkiaSharp.SKDocument.BeginPage(System.Single,System.Single) - - [ ] M:SkiaSharp.SKDocument.Close - - [ ] M:SkiaSharp.SKDocument.CreatePdf(SkiaSharp.SKWStream,SkiaSharp.SKDocumentPdfMetadata,System.Single) - - [ ] M:SkiaSharp.SKDocument.CreatePdf(SkiaSharp.SKWStream,SkiaSharp.SKDocumentPdfMetadata) - - [ ] M:SkiaSharp.SKDocument.CreatePdf(SkiaSharp.SKWStream,System.Single) - - [ ] M:SkiaSharp.SKDocument.CreatePdf(SkiaSharp.SKWStream) - - [ ] M:SkiaSharp.SKDocument.CreatePdf(System.IO.Stream,SkiaSharp.SKDocumentPdfMetadata) - - [ ] M:SkiaSharp.SKDocument.CreatePdf(System.IO.Stream,System.Single) - - [ ] M:SkiaSharp.SKDocument.CreatePdf(System.IO.Stream) - - [ ] M:SkiaSharp.SKDocument.CreatePdf(System.String,SkiaSharp.SKDocumentPdfMetadata) - - [ ] M:SkiaSharp.SKDocument.CreatePdf(System.String,System.Single) - - [ ] M:SkiaSharp.SKDocument.CreatePdf(System.String) - - [ ] M:SkiaSharp.SKDocument.CreateXps(SkiaSharp.SKWStream,System.Single) - - [ ] M:SkiaSharp.SKDocument.CreateXps(SkiaSharp.SKWStream) - - [ ] M:SkiaSharp.SKDocument.CreateXps(System.IO.Stream,System.Single) - - [ ] M:SkiaSharp.SKDocument.CreateXps(System.IO.Stream) - - [ ] M:SkiaSharp.SKDocument.CreateXps(System.String,System.Single) - - [ ] M:SkiaSharp.SKDocument.CreateXps(System.String) - - [ ] M:SkiaSharp.SKDocument.Dispose(System.Boolean) - - [ ] M:SkiaSharp.SKDocument.EndPage -- [ ] SkiaSharp.SKDocumentPdfMetadata - - [ ] F:SkiaSharp.SKDocumentPdfMetadata.Default - - [ ] F:SkiaSharp.SKDocumentPdfMetadata.DefaultEncodingQuality - - [ ] F:SkiaSharp.SKDocumentPdfMetadata.DefaultRasterDpi - - [ ] M:SkiaSharp.SKDocumentPdfMetadata.#ctor(System.Int32) - - [ ] M:SkiaSharp.SKDocumentPdfMetadata.#ctor(System.Single,System.Int32) - - [ ] M:SkiaSharp.SKDocumentPdfMetadata.#ctor(System.Single) - - [ ] M:SkiaSharp.SKDocumentPdfMetadata.Equals(SkiaSharp.SKDocumentPdfMetadata) - - [ ] M:SkiaSharp.SKDocumentPdfMetadata.Equals(System.Object) - - [ ] M:SkiaSharp.SKDocumentPdfMetadata.GetHashCode - - [ ] M:SkiaSharp.SKDocumentPdfMetadata.op_Equality(SkiaSharp.SKDocumentPdfMetadata,SkiaSharp.SKDocumentPdfMetadata) - - [ ] M:SkiaSharp.SKDocumentPdfMetadata.op_Inequality(SkiaSharp.SKDocumentPdfMetadata,SkiaSharp.SKDocumentPdfMetadata) - - [ ] P:SkiaSharp.SKDocumentPdfMetadata.Author - - [ ] P:SkiaSharp.SKDocumentPdfMetadata.Creation - - [ ] P:SkiaSharp.SKDocumentPdfMetadata.Creator - - [ ] P:SkiaSharp.SKDocumentPdfMetadata.EncodingQuality - - [ ] P:SkiaSharp.SKDocumentPdfMetadata.Keywords - - [ ] P:SkiaSharp.SKDocumentPdfMetadata.Modified - - [ ] P:SkiaSharp.SKDocumentPdfMetadata.PdfA - - [ ] P:SkiaSharp.SKDocumentPdfMetadata.Producer - - [ ] P:SkiaSharp.SKDocumentPdfMetadata.RasterDpi - - [ ] P:SkiaSharp.SKDocumentPdfMetadata.Subject - - [ ] P:SkiaSharp.SKDocumentPdfMetadata.Title -- [ ] SkiaSharp.SKDrawable - - [ ] M:SkiaSharp.SKDrawable.#ctor - - [ ] M:SkiaSharp.SKDrawable.#ctor(System.Boolean) - - [ ] M:SkiaSharp.SKDrawable.Dispose(System.Boolean) - - [ ] M:SkiaSharp.SKDrawable.DisposeNative - - [ ] M:SkiaSharp.SKDrawable.Draw(SkiaSharp.SKCanvas,SkiaSharp.SKMatrix@) - - [ ] M:SkiaSharp.SKDrawable.Draw(SkiaSharp.SKCanvas,System.Single,System.Single) - - [ ] M:SkiaSharp.SKDrawable.NotifyDrawingChanged - - [ ] M:SkiaSharp.SKDrawable.OnDraw(SkiaSharp.SKCanvas) - - [ ] M:SkiaSharp.SKDrawable.OnGetBounds - - [ ] M:SkiaSharp.SKDrawable.OnSnapshot - - [ ] M:SkiaSharp.SKDrawable.Snapshot - - [ ] P:SkiaSharp.SKDrawable.Bounds - - [ ] P:SkiaSharp.SKDrawable.GenerationId -- [ ] SkiaSharp.SKDropShadowImageFilterShadowMode - - [ ] F:SkiaSharp.SKDropShadowImageFilterShadowMode.DrawShadowAndForeground - - [ ] F:SkiaSharp.SKDropShadowImageFilterShadowMode.DrawShadowOnly -- [ ] SkiaSharp.SKDynamicMemoryWStream - - [ ] M:SkiaSharp.SKDynamicMemoryWStream.#ctor - - [ ] M:SkiaSharp.SKDynamicMemoryWStream.CopyTo(SkiaSharp.SKWStream) - - [ ] M:SkiaSharp.SKDynamicMemoryWStream.CopyTo(System.IntPtr) - - [ ] M:SkiaSharp.SKDynamicMemoryWStream.CopyTo(System.IO.Stream) - - [ ] M:SkiaSharp.SKDynamicMemoryWStream.CopyTo(System.Span{System.Byte}) - - [ ] M:SkiaSharp.SKDynamicMemoryWStream.CopyToData - - [ ] M:SkiaSharp.SKDynamicMemoryWStream.DetachAsData - - [ ] M:SkiaSharp.SKDynamicMemoryWStream.DetachAsStream - - [ ] M:SkiaSharp.SKDynamicMemoryWStream.Dispose(System.Boolean) - - [ ] M:SkiaSharp.SKDynamicMemoryWStream.DisposeNative -- [ ] SkiaSharp.SKEncodedImageFormat - - [ ] F:SkiaSharp.SKEncodedImageFormat.Astc - - [ ] F:SkiaSharp.SKEncodedImageFormat.Avif - - [ ] F:SkiaSharp.SKEncodedImageFormat.Bmp - - [ ] F:SkiaSharp.SKEncodedImageFormat.Dng - - [ ] F:SkiaSharp.SKEncodedImageFormat.Gif - - [ ] F:SkiaSharp.SKEncodedImageFormat.Heif - - [ ] F:SkiaSharp.SKEncodedImageFormat.Ico - - [ ] F:SkiaSharp.SKEncodedImageFormat.Jpeg - - [ ] F:SkiaSharp.SKEncodedImageFormat.Ktx - - [ ] F:SkiaSharp.SKEncodedImageFormat.Pkm - - [ ] F:SkiaSharp.SKEncodedImageFormat.Png - - [ ] F:SkiaSharp.SKEncodedImageFormat.Wbmp - - [ ] F:SkiaSharp.SKEncodedImageFormat.Webp -- [ ] SkiaSharp.SKEncodedInfo - - [ ] M:SkiaSharp.SKEncodedInfo.#ctor(SkiaSharp.SKEncodedInfoColor,SkiaSharp.SKEncodedInfoAlpha,System.Byte) - - [ ] M:SkiaSharp.SKEncodedInfo.#ctor(SkiaSharp.SKEncodedInfoColor) - - [ ] P:SkiaSharp.SKEncodedInfo.Alpha - - [ ] P:SkiaSharp.SKEncodedInfo.BitsPerComponent - - [ ] P:SkiaSharp.SKEncodedInfo.BitsPerPixel - - [ ] P:SkiaSharp.SKEncodedInfo.Color -- [ ] SkiaSharp.SKEncodedInfoAlpha - - [ ] F:SkiaSharp.SKEncodedInfoAlpha.Binary - - [ ] F:SkiaSharp.SKEncodedInfoAlpha.Opaque - - [ ] F:SkiaSharp.SKEncodedInfoAlpha.Unpremul -- [ ] SkiaSharp.SKEncodedInfoColor - - [ ] F:SkiaSharp.SKEncodedInfoColor.Bgr - - [ ] F:SkiaSharp.SKEncodedInfoColor.Bgra - - [ ] F:SkiaSharp.SKEncodedInfoColor.Bgrx - - [ ] F:SkiaSharp.SKEncodedInfoColor.Gray - - [ ] F:SkiaSharp.SKEncodedInfoColor.GrayAlpha - - [ ] F:SkiaSharp.SKEncodedInfoColor.InvertedCmyk - - [ ] F:SkiaSharp.SKEncodedInfoColor.Palette - - [ ] F:SkiaSharp.SKEncodedInfoColor.Rgb - - [ ] F:SkiaSharp.SKEncodedInfoColor.Rgba - - [ ] F:SkiaSharp.SKEncodedInfoColor.Ycck - - [ ] F:SkiaSharp.SKEncodedInfoColor.Yuv - - [ ] F:SkiaSharp.SKEncodedInfoColor.Yuva -- [ ] SkiaSharp.SKEncodedOrigin - - [ ] F:SkiaSharp.SKEncodedOrigin.BottomLeft - - [ ] F:SkiaSharp.SKEncodedOrigin.BottomRight - - [ ] F:SkiaSharp.SKEncodedOrigin.Default - - [ ] F:SkiaSharp.SKEncodedOrigin.LeftBottom - - [ ] F:SkiaSharp.SKEncodedOrigin.LeftTop - - [ ] F:SkiaSharp.SKEncodedOrigin.RightBottom - - [ ] F:SkiaSharp.SKEncodedOrigin.RightTop - - [ ] F:SkiaSharp.SKEncodedOrigin.TopLeft - - [ ] F:SkiaSharp.SKEncodedOrigin.TopRight -- [ ] SkiaSharp.SKEncoding - - [ ] F:SkiaSharp.SKEncoding.Utf16 - - [ ] F:SkiaSharp.SKEncoding.Utf32 - - [ ] F:SkiaSharp.SKEncoding.Utf8 -- [ ] SkiaSharp.SKFileStream - - [ ] M:SkiaSharp.SKFileStream.#ctor(System.String) - - [ ] M:SkiaSharp.SKFileStream.Dispose(System.Boolean) - - [ ] M:SkiaSharp.SKFileStream.DisposeNative - - [ ] M:SkiaSharp.SKFileStream.IsPathSupported(System.String) - - [ ] M:SkiaSharp.SKFileStream.OpenStream(System.String) - - [ ] P:SkiaSharp.SKFileStream.IsValid -- [ ] SkiaSharp.SKFileWStream - - [ ] M:SkiaSharp.SKFileWStream.#ctor(System.String) - - [ ] M:SkiaSharp.SKFileWStream.Dispose(System.Boolean) - - [ ] M:SkiaSharp.SKFileWStream.DisposeNative - - [ ] M:SkiaSharp.SKFileWStream.IsPathSupported(System.String) - - [ ] M:SkiaSharp.SKFileWStream.OpenStream(System.String) - - [ ] P:SkiaSharp.SKFileWStream.IsValid -- [ ] SkiaSharp.SKFilterQuality - - [ ] F:SkiaSharp.SKFilterQuality.High - - [ ] F:SkiaSharp.SKFilterQuality.Low - - [ ] F:SkiaSharp.SKFilterQuality.Medium - - [ ] F:SkiaSharp.SKFilterQuality.None -- [ ] SkiaSharp.SKFont - - [ ] M:SkiaSharp.SKFont.#ctor - - [ ] M:SkiaSharp.SKFont.#ctor(SkiaSharp.SKTypeface,System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKFont.ContainsGlyph(System.Int32) - - [ ] M:SkiaSharp.SKFont.ContainsGlyphs(System.IntPtr,System.Int32,SkiaSharp.SKTextEncoding) - - [ ] M:SkiaSharp.SKFont.ContainsGlyphs(System.ReadOnlySpan{System.Byte},SkiaSharp.SKTextEncoding) - - [ ] M:SkiaSharp.SKFont.ContainsGlyphs(System.ReadOnlySpan{System.Char}) - - [ ] M:SkiaSharp.SKFont.ContainsGlyphs(System.ReadOnlySpan{System.Int32}) - - [ ] M:SkiaSharp.SKFont.ContainsGlyphs(System.String) - - [ ] M:SkiaSharp.SKFont.CountGlyphs(System.IntPtr,System.Int32,SkiaSharp.SKTextEncoding) - - [ ] M:SkiaSharp.SKFont.CountGlyphs(System.ReadOnlySpan{System.Byte},SkiaSharp.SKTextEncoding) - - [ ] M:SkiaSharp.SKFont.CountGlyphs(System.ReadOnlySpan{System.Char}) - - [ ] M:SkiaSharp.SKFont.CountGlyphs(System.String) - - [ ] M:SkiaSharp.SKFont.DisposeNative - - [ ] M:SkiaSharp.SKFont.GetFontMetrics(SkiaSharp.SKFontMetrics@) - - [ ] M:SkiaSharp.SKFont.GetGlyph(System.Int32) - - [ ] M:SkiaSharp.SKFont.GetGlyphOffsets(System.ReadOnlySpan{System.UInt16},System.Span{System.Single},System.Single) - - [ ] M:SkiaSharp.SKFont.GetGlyphPath(System.UInt16) - - [ ] M:SkiaSharp.SKFont.GetGlyphPaths(System.ReadOnlySpan{System.UInt16},SkiaSharp.SKGlyphPathDelegate) - - [ ] M:SkiaSharp.SKFont.GetGlyphPositions(System.ReadOnlySpan{System.UInt16},System.Span{SkiaSharp.SKPoint},SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.SKFont.GetGlyphs(System.IntPtr,System.Int32,SkiaSharp.SKTextEncoding,System.Span{System.UInt16}) - - [ ] M:SkiaSharp.SKFont.GetGlyphs(System.ReadOnlySpan{System.Byte},SkiaSharp.SKTextEncoding,System.Span{System.UInt16}) - - [ ] M:SkiaSharp.SKFont.GetGlyphs(System.ReadOnlySpan{System.Char},System.Span{System.UInt16}) - - [ ] M:SkiaSharp.SKFont.GetGlyphs(System.ReadOnlySpan{System.Int32},System.Span{System.UInt16}) - - [ ] M:SkiaSharp.SKFont.GetGlyphs(System.String,System.Span{System.UInt16}) - - [ ] M:SkiaSharp.SKFont.GetGlyphWidths(System.ReadOnlySpan{System.UInt16},System.Span{System.Single},System.Span{SkiaSharp.SKRect},SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKFont.MeasureText(System.ReadOnlySpan{System.UInt16},SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKFont.MeasureText(System.ReadOnlySpan{System.UInt16},SkiaSharp.SKRect@,SkiaSharp.SKPaint) - - [ ] P:SkiaSharp.SKFont.BaselineSnap - - [ ] P:SkiaSharp.SKFont.Edging - - [ ] P:SkiaSharp.SKFont.EmbeddedBitmaps - - [ ] P:SkiaSharp.SKFont.Embolden - - [ ] P:SkiaSharp.SKFont.ForceAutoHinting - - [ ] P:SkiaSharp.SKFont.Hinting - - [ ] P:SkiaSharp.SKFont.LinearMetrics - - [ ] P:SkiaSharp.SKFont.Metrics - - [ ] P:SkiaSharp.SKFont.ScaleX - - [ ] P:SkiaSharp.SKFont.Size - - [ ] P:SkiaSharp.SKFont.SkewX - - [ ] P:SkiaSharp.SKFont.Spacing - - [ ] P:SkiaSharp.SKFont.Subpixel - - [ ] P:SkiaSharp.SKFont.Typeface -- [ ] SkiaSharp.SKFontEdging - - [ ] F:SkiaSharp.SKFontEdging.Alias - - [ ] F:SkiaSharp.SKFontEdging.Antialias - - [ ] F:SkiaSharp.SKFontEdging.SubpixelAntialias -- [ ] SkiaSharp.SKFontHinting - - [ ] F:SkiaSharp.SKFontHinting.Full - - [ ] F:SkiaSharp.SKFontHinting.None - - [ ] F:SkiaSharp.SKFontHinting.Normal - - [ ] F:SkiaSharp.SKFontHinting.Slight -- [ ] SkiaSharp.SKFontManager - - [ ] M:SkiaSharp.SKFontManager.CreateDefault - - [ ] M:SkiaSharp.SKFontManager.CreateTypeface(SkiaSharp.SKData,System.Int32) - - [ ] M:SkiaSharp.SKFontManager.CreateTypeface(SkiaSharp.SKStreamAsset,System.Int32) - - [ ] M:SkiaSharp.SKFontManager.CreateTypeface(System.IO.Stream,System.Int32) - - [ ] M:SkiaSharp.SKFontManager.CreateTypeface(System.String,System.Int32) - - [ ] M:SkiaSharp.SKFontManager.Dispose(System.Boolean) - - [ ] M:SkiaSharp.SKFontManager.GetFamilyName(System.Int32) - - [ ] M:SkiaSharp.SKFontManager.GetFontFamilies - - [ ] M:SkiaSharp.SKFontManager.GetFontStyles(System.Int32) - - [ ] M:SkiaSharp.SKFontManager.GetFontStyles(System.String) - - [ ] M:SkiaSharp.SKFontManager.MatchCharacter(System.Char) - - [ ] M:SkiaSharp.SKFontManager.MatchCharacter(System.Int32) - - [ ] M:SkiaSharp.SKFontManager.MatchCharacter(System.String,SkiaSharp.SKFontStyle,System.String[],System.Int32) - - [ ] M:SkiaSharp.SKFontManager.MatchCharacter(System.String,SkiaSharp.SKFontStyleWeight,SkiaSharp.SKFontStyleWidth,SkiaSharp.SKFontStyleSlant,System.String[],System.Char) - - [ ] M:SkiaSharp.SKFontManager.MatchCharacter(System.String,SkiaSharp.SKFontStyleWeight,SkiaSharp.SKFontStyleWidth,SkiaSharp.SKFontStyleSlant,System.String[],System.Int32) - - [ ] M:SkiaSharp.SKFontManager.MatchCharacter(System.String,System.Char) - - [ ] M:SkiaSharp.SKFontManager.MatchCharacter(System.String,System.Int32,System.Int32,SkiaSharp.SKFontStyleSlant,System.String[],System.Int32) - - [ ] M:SkiaSharp.SKFontManager.MatchCharacter(System.String,System.Int32) - - [ ] M:SkiaSharp.SKFontManager.MatchCharacter(System.String,System.String[],System.Char) - - [ ] M:SkiaSharp.SKFontManager.MatchCharacter(System.String,System.String[],System.Int32) - - [ ] M:SkiaSharp.SKFontManager.MatchFamily(System.String,SkiaSharp.SKFontStyle) - - [ ] M:SkiaSharp.SKFontManager.MatchFamily(System.String) - - [ ] M:SkiaSharp.SKFontManager.MatchTypeface(SkiaSharp.SKTypeface,SkiaSharp.SKFontStyle) - - [ ] P:SkiaSharp.SKFontManager.Default - - [ ] P:SkiaSharp.SKFontManager.FontFamilies - - [ ] P:SkiaSharp.SKFontManager.FontFamilyCount -- [ ] SkiaSharp.SKFontMetrics - - [ ] M:SkiaSharp.SKFontMetrics.Equals(SkiaSharp.SKFontMetrics) - - [ ] M:SkiaSharp.SKFontMetrics.Equals(System.Object) - - [ ] M:SkiaSharp.SKFontMetrics.GetHashCode - - [ ] M:SkiaSharp.SKFontMetrics.op_Equality(SkiaSharp.SKFontMetrics,SkiaSharp.SKFontMetrics) - - [ ] M:SkiaSharp.SKFontMetrics.op_Inequality(SkiaSharp.SKFontMetrics,SkiaSharp.SKFontMetrics) - - [ ] P:SkiaSharp.SKFontMetrics.Ascent - - [ ] P:SkiaSharp.SKFontMetrics.AverageCharacterWidth - - [ ] P:SkiaSharp.SKFontMetrics.Bottom - - [ ] P:SkiaSharp.SKFontMetrics.CapHeight - - [ ] P:SkiaSharp.SKFontMetrics.Descent - - [ ] P:SkiaSharp.SKFontMetrics.Leading - - [ ] P:SkiaSharp.SKFontMetrics.MaxCharacterWidth - - [ ] P:SkiaSharp.SKFontMetrics.StrikeoutPosition - - [ ] P:SkiaSharp.SKFontMetrics.StrikeoutThickness - - [ ] P:SkiaSharp.SKFontMetrics.Top - - [ ] P:SkiaSharp.SKFontMetrics.UnderlinePosition - - [ ] P:SkiaSharp.SKFontMetrics.UnderlineThickness - - [ ] P:SkiaSharp.SKFontMetrics.XHeight - - [ ] P:SkiaSharp.SKFontMetrics.XMax - - [ ] P:SkiaSharp.SKFontMetrics.XMin -- [ ] SkiaSharp.SKFontStyle - - [ ] M:SkiaSharp.SKFontStyle.#ctor - - [ ] M:SkiaSharp.SKFontStyle.#ctor(SkiaSharp.SKFontStyleWeight,SkiaSharp.SKFontStyleWidth,SkiaSharp.SKFontStyleSlant) - - [ ] M:SkiaSharp.SKFontStyle.#ctor(System.Int32,System.Int32,SkiaSharp.SKFontStyleSlant) - - [ ] M:SkiaSharp.SKFontStyle.Dispose(System.Boolean) - - [ ] M:SkiaSharp.SKFontStyle.DisposeNative - - [ ] P:SkiaSharp.SKFontStyle.Bold - - [ ] P:SkiaSharp.SKFontStyle.BoldItalic - - [ ] P:SkiaSharp.SKFontStyle.Italic - - [ ] P:SkiaSharp.SKFontStyle.Normal - - [ ] P:SkiaSharp.SKFontStyle.Slant - - [ ] P:SkiaSharp.SKFontStyle.Weight - - [ ] P:SkiaSharp.SKFontStyle.Width -- [ ] SkiaSharp.SKFontStyleSet - - [ ] M:SkiaSharp.SKFontStyleSet.#ctor - - [ ] M:SkiaSharp.SKFontStyleSet.CreateTypeface(SkiaSharp.SKFontStyle) - - [ ] M:SkiaSharp.SKFontStyleSet.CreateTypeface(System.Int32) - - [ ] M:SkiaSharp.SKFontStyleSet.Dispose(System.Boolean) - - [ ] M:SkiaSharp.SKFontStyleSet.GetEnumerator - - [ ] M:SkiaSharp.SKFontStyleSet.GetStyleName(System.Int32) - - [ ] M:SkiaSharp.SKFontStyleSet.System#Collections#IEnumerable#GetEnumerator - - [ ] P:SkiaSharp.SKFontStyleSet.Count - - [ ] P:SkiaSharp.SKFontStyleSet.Item(System.Int32) -- [ ] SkiaSharp.SKFontStyleSlant - - [ ] F:SkiaSharp.SKFontStyleSlant.Italic - - [ ] F:SkiaSharp.SKFontStyleSlant.Oblique - - [ ] F:SkiaSharp.SKFontStyleSlant.Upright -- [ ] SkiaSharp.SKFontStyleWeight - - [ ] F:SkiaSharp.SKFontStyleWeight.Black - - [ ] F:SkiaSharp.SKFontStyleWeight.Bold - - [ ] F:SkiaSharp.SKFontStyleWeight.ExtraBlack - - [ ] F:SkiaSharp.SKFontStyleWeight.ExtraBold - - [ ] F:SkiaSharp.SKFontStyleWeight.ExtraLight - - [ ] F:SkiaSharp.SKFontStyleWeight.Invisible - - [ ] F:SkiaSharp.SKFontStyleWeight.Light - - [ ] F:SkiaSharp.SKFontStyleWeight.Medium - - [ ] F:SkiaSharp.SKFontStyleWeight.Normal - - [ ] F:SkiaSharp.SKFontStyleWeight.SemiBold - - [ ] F:SkiaSharp.SKFontStyleWeight.Thin -- [ ] SkiaSharp.SKFontStyleWidth - - [ ] F:SkiaSharp.SKFontStyleWidth.Condensed - - [ ] F:SkiaSharp.SKFontStyleWidth.Expanded - - [ ] F:SkiaSharp.SKFontStyleWidth.ExtraCondensed - - [ ] F:SkiaSharp.SKFontStyleWidth.ExtraExpanded - - [ ] F:SkiaSharp.SKFontStyleWidth.Normal - - [ ] F:SkiaSharp.SKFontStyleWidth.SemiCondensed - - [ ] F:SkiaSharp.SKFontStyleWidth.SemiExpanded - - [ ] F:SkiaSharp.SKFontStyleWidth.UltraCondensed - - [ ] F:SkiaSharp.SKFontStyleWidth.UltraExpanded -- [ ] SkiaSharp.SKFrontBufferedManagedStream - - [ ] M:SkiaSharp.SKFrontBufferedManagedStream.#ctor(SkiaSharp.SKStream,System.Int32,System.Boolean) - - [ ] M:SkiaSharp.SKFrontBufferedManagedStream.#ctor(SkiaSharp.SKStream,System.Int32) - - [ ] M:SkiaSharp.SKFrontBufferedManagedStream.#ctor(System.IO.Stream,System.Int32,System.Boolean) - - [ ] M:SkiaSharp.SKFrontBufferedManagedStream.#ctor(System.IO.Stream,System.Int32) - - [ ] M:SkiaSharp.SKFrontBufferedManagedStream.Dispose(System.Boolean) - - [ ] M:SkiaSharp.SKFrontBufferedManagedStream.DisposeManaged - - [ ] M:SkiaSharp.SKFrontBufferedManagedStream.OnCreateNew - - [ ] M:SkiaSharp.SKFrontBufferedManagedStream.OnGetLength - - [ ] M:SkiaSharp.SKFrontBufferedManagedStream.OnGetPosition - - [ ] M:SkiaSharp.SKFrontBufferedManagedStream.OnHasLength - - [ ] M:SkiaSharp.SKFrontBufferedManagedStream.OnHasPosition - - [ ] M:SkiaSharp.SKFrontBufferedManagedStream.OnIsAtEnd - - [ ] M:SkiaSharp.SKFrontBufferedManagedStream.OnMove(System.Int32) - - [ ] M:SkiaSharp.SKFrontBufferedManagedStream.OnPeek(System.IntPtr,System.IntPtr) - - [ ] M:SkiaSharp.SKFrontBufferedManagedStream.OnRead(System.IntPtr,System.IntPtr) - - [ ] M:SkiaSharp.SKFrontBufferedManagedStream.OnRewind - - [ ] M:SkiaSharp.SKFrontBufferedManagedStream.OnSeek(System.IntPtr) -- [ ] SkiaSharp.SKFrontBufferedStream - - [ ] F:SkiaSharp.SKFrontBufferedStream.DefaultBufferSize - - [ ] M:SkiaSharp.SKFrontBufferedStream.#ctor(System.IO.Stream,System.Boolean) - - [ ] M:SkiaSharp.SKFrontBufferedStream.#ctor(System.IO.Stream,System.Int64,System.Boolean) - - [ ] M:SkiaSharp.SKFrontBufferedStream.#ctor(System.IO.Stream,System.Int64) - - [ ] M:SkiaSharp.SKFrontBufferedStream.#ctor(System.IO.Stream) - - [ ] M:SkiaSharp.SKFrontBufferedStream.Dispose(System.Boolean) - - [ ] M:SkiaSharp.SKFrontBufferedStream.Flush - - [ ] M:SkiaSharp.SKFrontBufferedStream.Read(System.Byte[],System.Int32,System.Int32) - - [ ] M:SkiaSharp.SKFrontBufferedStream.Seek(System.Int64,System.IO.SeekOrigin) - - [ ] M:SkiaSharp.SKFrontBufferedStream.SetLength(System.Int64) - - [ ] M:SkiaSharp.SKFrontBufferedStream.Write(System.Byte[],System.Int32,System.Int32) - - [ ] P:SkiaSharp.SKFrontBufferedStream.CanRead - - [ ] P:SkiaSharp.SKFrontBufferedStream.CanSeek - - [ ] P:SkiaSharp.SKFrontBufferedStream.CanWrite - - [ ] P:SkiaSharp.SKFrontBufferedStream.Length - - [ ] P:SkiaSharp.SKFrontBufferedStream.Position -- [ ] SkiaSharp.SKGlyphPathDelegate -- [ ] SkiaSharp.SKGraphics - - [ ] M:SkiaSharp.SKGraphics.DumpMemoryStatistics(SkiaSharp.SKTraceMemoryDump) - - [ ] M:SkiaSharp.SKGraphics.GetFontCacheCountLimit - - [ ] M:SkiaSharp.SKGraphics.GetFontCacheCountUsed - - [ ] M:SkiaSharp.SKGraphics.GetFontCacheLimit - - [ ] M:SkiaSharp.SKGraphics.GetFontCachePointSizeLimit - - [ ] M:SkiaSharp.SKGraphics.GetFontCacheUsed - - [ ] M:SkiaSharp.SKGraphics.GetResourceCacheSingleAllocationByteLimit - - [ ] M:SkiaSharp.SKGraphics.GetResourceCacheTotalByteLimit - - [ ] M:SkiaSharp.SKGraphics.GetResourceCacheTotalBytesUsed - - [ ] M:SkiaSharp.SKGraphics.Init - - [ ] M:SkiaSharp.SKGraphics.PurgeAllCaches - - [ ] M:SkiaSharp.SKGraphics.PurgeFontCache - - [ ] M:SkiaSharp.SKGraphics.PurgeResourceCache - - [ ] M:SkiaSharp.SKGraphics.SetFontCacheCountLimit(System.Int32) - - [ ] M:SkiaSharp.SKGraphics.SetFontCacheLimit(System.Int64) - - [ ] M:SkiaSharp.SKGraphics.SetFontCachePointSizeLimit(System.Int32) - - [ ] M:SkiaSharp.SKGraphics.SetResourceCacheSingleAllocationByteLimit(System.Int64) - - [ ] M:SkiaSharp.SKGraphics.SetResourceCacheTotalByteLimit(System.Int64) -- [ ] SkiaSharp.SKHighContrastConfig - - [ ] F:SkiaSharp.SKHighContrastConfig.Default - - [ ] M:SkiaSharp.SKHighContrastConfig.#ctor(System.Boolean,SkiaSharp.SKHighContrastConfigInvertStyle,System.Single) - - [ ] M:SkiaSharp.SKHighContrastConfig.Equals(SkiaSharp.SKHighContrastConfig) - - [ ] M:SkiaSharp.SKHighContrastConfig.Equals(System.Object) - - [ ] M:SkiaSharp.SKHighContrastConfig.GetHashCode - - [ ] M:SkiaSharp.SKHighContrastConfig.op_Equality(SkiaSharp.SKHighContrastConfig,SkiaSharp.SKHighContrastConfig) - - [ ] M:SkiaSharp.SKHighContrastConfig.op_Inequality(SkiaSharp.SKHighContrastConfig,SkiaSharp.SKHighContrastConfig) - - [ ] P:SkiaSharp.SKHighContrastConfig.Contrast - - [ ] P:SkiaSharp.SKHighContrastConfig.Grayscale - - [ ] P:SkiaSharp.SKHighContrastConfig.InvertStyle - - [ ] P:SkiaSharp.SKHighContrastConfig.IsValid -- [ ] SkiaSharp.SKHighContrastConfigInvertStyle - - [ ] F:SkiaSharp.SKHighContrastConfigInvertStyle.InvertBrightness - - [ ] F:SkiaSharp.SKHighContrastConfigInvertStyle.InvertLightness - - [ ] F:SkiaSharp.SKHighContrastConfigInvertStyle.NoInvert -- [ ] SkiaSharp.SKHorizontalRunBuffer - - [ ] M:SkiaSharp.SKHorizontalRunBuffer.GetPositionSpan - - [ ] M:SkiaSharp.SKHorizontalRunBuffer.SetPositions(System.ReadOnlySpan{System.Single}) -- [ ] SkiaSharp.SkiaExtensions - - [ ] M:SkiaSharp.SkiaExtensions.GetAlphaType(SkiaSharp.SKColorType,SkiaSharp.SKAlphaType) - - [ ] M:SkiaSharp.SkiaExtensions.GetBytesPerPixel(SkiaSharp.SKColorType) - - [ ] M:SkiaSharp.SkiaExtensions.IsBgr(SkiaSharp.SKPixelGeometry) - - [ ] M:SkiaSharp.SkiaExtensions.IsHorizontal(SkiaSharp.SKPixelGeometry) - - [ ] M:SkiaSharp.SkiaExtensions.IsRgb(SkiaSharp.SKPixelGeometry) - - [ ] M:SkiaSharp.SkiaExtensions.IsVertical(SkiaSharp.SKPixelGeometry) - - [ ] M:SkiaSharp.SkiaExtensions.ToColorChannel(SkiaSharp.SKDisplacementMapEffectChannelSelectorType) - - [ ] M:SkiaSharp.SkiaExtensions.ToColorSpaceTransferFn(SkiaSharp.SKColorSpaceRenderTargetGamma) - - [ ] M:SkiaSharp.SkiaExtensions.ToColorSpaceTransferFn(SkiaSharp.SKNamedGamma) - - [ ] M:SkiaSharp.SkiaExtensions.ToColorSpaceXyz(SkiaSharp.SKColorSpaceGamut) - - [ ] M:SkiaSharp.SkiaExtensions.ToColorSpaceXyz(SkiaSharp.SKMatrix44) - - [ ] M:SkiaSharp.SkiaExtensions.ToColorType(SkiaSharp.GRPixelConfig) - - [ ] M:SkiaSharp.SkiaExtensions.ToFilterQuality(SkiaSharp.SKBitmapResizeMethod) - - [ ] M:SkiaSharp.SkiaExtensions.ToGlSizedFormat(SkiaSharp.GRPixelConfig) - - [ ] M:SkiaSharp.SkiaExtensions.ToGlSizedFormat(SkiaSharp.SKColorType) - - [ ] M:SkiaSharp.SkiaExtensions.ToPixelConfig(SkiaSharp.SKColorType) - - [ ] M:SkiaSharp.SkiaExtensions.ToShaderTileMode(SkiaSharp.SKMatrixConvolutionTileMode) - - [ ] M:SkiaSharp.SkiaExtensions.ToTextEncoding(SkiaSharp.SKEncoding) -- [ ] SkiaSharp.SkiaSharpVersion - - [ ] M:SkiaSharp.SkiaSharpVersion.CheckNativeLibraryCompatible(System.Boolean) - - [ ] P:SkiaSharp.SkiaSharpVersion.Native - - [ ] P:SkiaSharp.SkiaSharpVersion.NativeMinimum -- [ ] SkiaSharp.SKImage - - [ ] M:SkiaSharp.SKImage.ApplyImageFilter(SkiaSharp.GRContext,SkiaSharp.SKImageFilter,SkiaSharp.SKRectI,SkiaSharp.SKRectI,SkiaSharp.SKRectI@,SkiaSharp.SKPointI@) - - [ ] M:SkiaSharp.SKImage.ApplyImageFilter(SkiaSharp.GRRecordingContext,SkiaSharp.SKImageFilter,SkiaSharp.SKRectI,SkiaSharp.SKRectI,SkiaSharp.SKRectI@,SkiaSharp.SKPointI@) - - [ ] M:SkiaSharp.SKImage.ApplyImageFilter(SkiaSharp.SKImageFilter,SkiaSharp.SKRectI,SkiaSharp.SKRectI,SkiaSharp.SKRectI@,SkiaSharp.SKPoint@) - - [ ] M:SkiaSharp.SKImage.ApplyImageFilter(SkiaSharp.SKImageFilter,SkiaSharp.SKRectI,SkiaSharp.SKRectI,SkiaSharp.SKRectI@,SkiaSharp.SKPointI@) - - [ ] M:SkiaSharp.SKImage.Create(SkiaSharp.SKImageInfo) - - [ ] M:SkiaSharp.SKImage.Dispose(System.Boolean) - - [ ] M:SkiaSharp.SKImage.Encode - - [ ] M:SkiaSharp.SKImage.Encode(SkiaSharp.SKEncodedImageFormat,System.Int32) - - [ ] M:SkiaSharp.SKImage.Encode(SkiaSharp.SKPixelSerializer) - - [ ] M:SkiaSharp.SKImage.FromAdoptedTexture(SkiaSharp.GRContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.SKAlphaType,SkiaSharp.SKColorSpace) - - [ ] M:SkiaSharp.SKImage.FromAdoptedTexture(SkiaSharp.GRContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.SKAlphaType) - - [ ] M:SkiaSharp.SKImage.FromAdoptedTexture(SkiaSharp.GRContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType) - - [ ] M:SkiaSharp.SKImage.FromAdoptedTexture(SkiaSharp.GRContext,SkiaSharp.GRBackendTexture,SkiaSharp.SKColorType) - - [ ] M:SkiaSharp.SKImage.FromAdoptedTexture(SkiaSharp.GRContext,SkiaSharp.GRBackendTextureDesc,SkiaSharp.SKAlphaType) - - [ ] M:SkiaSharp.SKImage.FromAdoptedTexture(SkiaSharp.GRContext,SkiaSharp.GRBackendTextureDesc) - - [ ] M:SkiaSharp.SKImage.FromAdoptedTexture(SkiaSharp.GRContext,SkiaSharp.GRGlBackendTextureDesc,SkiaSharp.SKAlphaType) - - [ ] M:SkiaSharp.SKImage.FromAdoptedTexture(SkiaSharp.GRContext,SkiaSharp.GRGlBackendTextureDesc) - - [ ] M:SkiaSharp.SKImage.FromAdoptedTexture(SkiaSharp.GRRecordingContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.SKAlphaType,SkiaSharp.SKColorSpace) - - [ ] M:SkiaSharp.SKImage.FromAdoptedTexture(SkiaSharp.GRRecordingContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.SKAlphaType) - - [ ] M:SkiaSharp.SKImage.FromAdoptedTexture(SkiaSharp.GRRecordingContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType) - - [ ] M:SkiaSharp.SKImage.FromAdoptedTexture(SkiaSharp.GRRecordingContext,SkiaSharp.GRBackendTexture,SkiaSharp.SKColorType) - - [ ] M:SkiaSharp.SKImage.FromBitmap(SkiaSharp.SKBitmap) - - [ ] M:SkiaSharp.SKImage.FromEncodedData(SkiaSharp.SKData,SkiaSharp.SKRectI) - - [ ] M:SkiaSharp.SKImage.FromEncodedData(SkiaSharp.SKData) - - [ ] M:SkiaSharp.SKImage.FromEncodedData(SkiaSharp.SKStream) - - [ ] M:SkiaSharp.SKImage.FromEncodedData(System.Byte[]) - - [ ] M:SkiaSharp.SKImage.FromEncodedData(System.IO.Stream) - - [ ] M:SkiaSharp.SKImage.FromEncodedData(System.ReadOnlySpan{System.Byte}) - - [ ] M:SkiaSharp.SKImage.FromEncodedData(System.String) - - [ ] M:SkiaSharp.SKImage.FromPicture(SkiaSharp.SKPicture,SkiaSharp.SKSizeI,SkiaSharp.SKMatrix,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKImage.FromPicture(SkiaSharp.SKPicture,SkiaSharp.SKSizeI,SkiaSharp.SKMatrix) - - [ ] M:SkiaSharp.SKImage.FromPicture(SkiaSharp.SKPicture,SkiaSharp.SKSizeI,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKImage.FromPicture(SkiaSharp.SKPicture,SkiaSharp.SKSizeI) - - [ ] M:SkiaSharp.SKImage.FromPixelCopy(SkiaSharp.SKImageInfo,SkiaSharp.SKStream,System.Int32) - - [ ] M:SkiaSharp.SKImage.FromPixelCopy(SkiaSharp.SKImageInfo,SkiaSharp.SKStream) - - [ ] M:SkiaSharp.SKImage.FromPixelCopy(SkiaSharp.SKImageInfo,System.Byte[],System.Int32) - - [ ] M:SkiaSharp.SKImage.FromPixelCopy(SkiaSharp.SKImageInfo,System.Byte[]) - - [ ] M:SkiaSharp.SKImage.FromPixelCopy(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32,SkiaSharp.SKColorTable) - - [ ] M:SkiaSharp.SKImage.FromPixelCopy(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32) - - [ ] M:SkiaSharp.SKImage.FromPixelCopy(SkiaSharp.SKImageInfo,System.IntPtr) - - [ ] M:SkiaSharp.SKImage.FromPixelCopy(SkiaSharp.SKImageInfo,System.IO.Stream,System.Int32) - - [ ] M:SkiaSharp.SKImage.FromPixelCopy(SkiaSharp.SKImageInfo,System.IO.Stream) - - [ ] M:SkiaSharp.SKImage.FromPixelCopy(SkiaSharp.SKImageInfo,System.ReadOnlySpan{System.Byte},System.Int32) - - [ ] M:SkiaSharp.SKImage.FromPixelCopy(SkiaSharp.SKImageInfo,System.ReadOnlySpan{System.Byte}) - - [ ] M:SkiaSharp.SKImage.FromPixelCopy(SkiaSharp.SKPixmap) - - [ ] M:SkiaSharp.SKImage.FromPixelData(SkiaSharp.SKImageInfo,SkiaSharp.SKData,System.Int32) - - [ ] M:SkiaSharp.SKImage.FromPixels(SkiaSharp.SKImageInfo,SkiaSharp.SKData,System.Int32) - - [ ] M:SkiaSharp.SKImage.FromPixels(SkiaSharp.SKImageInfo,SkiaSharp.SKData) - - [ ] M:SkiaSharp.SKImage.FromPixels(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32) - - [ ] M:SkiaSharp.SKImage.FromPixels(SkiaSharp.SKImageInfo,System.IntPtr) - - [ ] M:SkiaSharp.SKImage.FromPixels(SkiaSharp.SKPixmap,SkiaSharp.SKImageRasterReleaseDelegate,System.Object) - - [ ] M:SkiaSharp.SKImage.FromPixels(SkiaSharp.SKPixmap,SkiaSharp.SKImageRasterReleaseDelegate) - - [ ] M:SkiaSharp.SKImage.FromPixels(SkiaSharp.SKPixmap) - - [ ] M:SkiaSharp.SKImage.FromTexture(SkiaSharp.GRContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.SKAlphaType,SkiaSharp.SKColorSpace,SkiaSharp.SKImageTextureReleaseDelegate,System.Object) - - [ ] M:SkiaSharp.SKImage.FromTexture(SkiaSharp.GRContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.SKAlphaType,SkiaSharp.SKColorSpace,SkiaSharp.SKImageTextureReleaseDelegate) - - [ ] M:SkiaSharp.SKImage.FromTexture(SkiaSharp.GRContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.SKAlphaType,SkiaSharp.SKColorSpace) - - [ ] M:SkiaSharp.SKImage.FromTexture(SkiaSharp.GRContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.SKAlphaType) - - [ ] M:SkiaSharp.SKImage.FromTexture(SkiaSharp.GRContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType) - - [ ] M:SkiaSharp.SKImage.FromTexture(SkiaSharp.GRContext,SkiaSharp.GRBackendTexture,SkiaSharp.SKColorType) - - [ ] M:SkiaSharp.SKImage.FromTexture(SkiaSharp.GRContext,SkiaSharp.GRBackendTextureDesc,SkiaSharp.SKAlphaType,SkiaSharp.SKImageTextureReleaseDelegate,System.Object) - - [ ] M:SkiaSharp.SKImage.FromTexture(SkiaSharp.GRContext,SkiaSharp.GRBackendTextureDesc,SkiaSharp.SKAlphaType,SkiaSharp.SKImageTextureReleaseDelegate) - - [ ] M:SkiaSharp.SKImage.FromTexture(SkiaSharp.GRContext,SkiaSharp.GRBackendTextureDesc,SkiaSharp.SKAlphaType) - - [ ] M:SkiaSharp.SKImage.FromTexture(SkiaSharp.GRContext,SkiaSharp.GRBackendTextureDesc) - - [ ] M:SkiaSharp.SKImage.FromTexture(SkiaSharp.GRContext,SkiaSharp.GRGlBackendTextureDesc,SkiaSharp.SKAlphaType,SkiaSharp.SKImageTextureReleaseDelegate,System.Object) - - [ ] M:SkiaSharp.SKImage.FromTexture(SkiaSharp.GRContext,SkiaSharp.GRGlBackendTextureDesc,SkiaSharp.SKAlphaType,SkiaSharp.SKImageTextureReleaseDelegate) - - [ ] M:SkiaSharp.SKImage.FromTexture(SkiaSharp.GRContext,SkiaSharp.GRGlBackendTextureDesc,SkiaSharp.SKAlphaType) - - [ ] M:SkiaSharp.SKImage.FromTexture(SkiaSharp.GRContext,SkiaSharp.GRGlBackendTextureDesc) - - [ ] M:SkiaSharp.SKImage.FromTexture(SkiaSharp.GRRecordingContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.SKAlphaType,SkiaSharp.SKColorSpace,SkiaSharp.SKImageTextureReleaseDelegate,System.Object) - - [ ] M:SkiaSharp.SKImage.FromTexture(SkiaSharp.GRRecordingContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.SKAlphaType,SkiaSharp.SKColorSpace,SkiaSharp.SKImageTextureReleaseDelegate) - - [ ] M:SkiaSharp.SKImage.FromTexture(SkiaSharp.GRRecordingContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.SKAlphaType,SkiaSharp.SKColorSpace) - - [ ] M:SkiaSharp.SKImage.FromTexture(SkiaSharp.GRRecordingContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.SKAlphaType) - - [ ] M:SkiaSharp.SKImage.FromTexture(SkiaSharp.GRRecordingContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType) - - [ ] M:SkiaSharp.SKImage.FromTexture(SkiaSharp.GRRecordingContext,SkiaSharp.GRBackendTexture,SkiaSharp.SKColorType) - - [ ] M:SkiaSharp.SKImage.IsValid(SkiaSharp.GRContext) - - [ ] M:SkiaSharp.SKImage.IsValid(SkiaSharp.GRRecordingContext) - - [ ] M:SkiaSharp.SKImage.PeekPixels - - [ ] M:SkiaSharp.SKImage.PeekPixels(SkiaSharp.SKPixmap) - - [ ] M:SkiaSharp.SKImage.ReadPixels(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32,System.Int32,System.Int32,SkiaSharp.SKImageCachingHint) - - [ ] M:SkiaSharp.SKImage.ReadPixels(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32,System.Int32,System.Int32) - - [ ] M:SkiaSharp.SKImage.ReadPixels(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32) - - [ ] M:SkiaSharp.SKImage.ReadPixels(SkiaSharp.SKImageInfo,System.IntPtr) - - [ ] M:SkiaSharp.SKImage.ReadPixels(SkiaSharp.SKPixmap,System.Int32,System.Int32,SkiaSharp.SKImageCachingHint) - - [ ] M:SkiaSharp.SKImage.ReadPixels(SkiaSharp.SKPixmap,System.Int32,System.Int32) - - [ ] M:SkiaSharp.SKImage.ReadPixels(SkiaSharp.SKPixmap) - - [ ] M:SkiaSharp.SKImage.ScalePixels(SkiaSharp.SKPixmap,SkiaSharp.SKFilterQuality,SkiaSharp.SKImageCachingHint) - - [ ] M:SkiaSharp.SKImage.ScalePixels(SkiaSharp.SKPixmap,SkiaSharp.SKFilterQuality) - - [ ] M:SkiaSharp.SKImage.Subset(SkiaSharp.SKRectI) - - [ ] M:SkiaSharp.SKImage.ToRasterImage - - [ ] M:SkiaSharp.SKImage.ToRasterImage(System.Boolean) - - [ ] M:SkiaSharp.SKImage.ToShader - - [ ] M:SkiaSharp.SKImage.ToShader(SkiaSharp.SKShaderTileMode,SkiaSharp.SKShaderTileMode,SkiaSharp.SKMatrix) - - [ ] M:SkiaSharp.SKImage.ToShader(SkiaSharp.SKShaderTileMode,SkiaSharp.SKShaderTileMode) - - [ ] M:SkiaSharp.SKImage.ToTextureImage(SkiaSharp.GRContext,SkiaSharp.SKColorSpace) - - [ ] M:SkiaSharp.SKImage.ToTextureImage(SkiaSharp.GRContext,System.Boolean) - - [ ] M:SkiaSharp.SKImage.ToTextureImage(SkiaSharp.GRContext) - - [ ] P:SkiaSharp.SKImage.AlphaType - - [ ] P:SkiaSharp.SKImage.ColorSpace - - [ ] P:SkiaSharp.SKImage.ColorType - - [ ] P:SkiaSharp.SKImage.EncodedData - - [ ] P:SkiaSharp.SKImage.Height - - [ ] P:SkiaSharp.SKImage.Info - - [ ] P:SkiaSharp.SKImage.IsAlphaOnly - - [ ] P:SkiaSharp.SKImage.IsLazyGenerated - - [ ] P:SkiaSharp.SKImage.IsTextureBacked - - [ ] P:SkiaSharp.SKImage.UniqueId - - [ ] P:SkiaSharp.SKImage.Width -- [ ] SkiaSharp.SKImageCachingHint - - [ ] F:SkiaSharp.SKImageCachingHint.Allow - - [ ] F:SkiaSharp.SKImageCachingHint.Disallow -- [ ] SkiaSharp.SKImageFilter - - [ ] M:SkiaSharp.SKImageFilter.CreateAlphaThreshold(SkiaSharp.SKRectI,System.Single,System.Single,SkiaSharp.SKImageFilter) - - [ ] M:SkiaSharp.SKImageFilter.CreateAlphaThreshold(SkiaSharp.SKRegion,System.Single,System.Single,SkiaSharp.SKImageFilter) - - [ ] M:SkiaSharp.SKImageFilter.CreateArithmetic(System.Single,System.Single,System.Single,System.Single,System.Boolean,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter.CropRect) - - [ ] M:SkiaSharp.SKImageFilter.CreateBlendMode(SkiaSharp.SKBlendMode,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter.CropRect) - - [ ] M:SkiaSharp.SKImageFilter.CreateBlur(System.Single,System.Single,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter.CropRect) - - [ ] M:SkiaSharp.SKImageFilter.CreateBlur(System.Single,System.Single,SkiaSharp.SKShaderTileMode,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter.CropRect) - - [ ] M:SkiaSharp.SKImageFilter.CreateColorFilter(SkiaSharp.SKColorFilter,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter.CropRect) - - [ ] M:SkiaSharp.SKImageFilter.CreateCompose(SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter) - - [ ] M:SkiaSharp.SKImageFilter.CreateDilate(System.Int32,System.Int32,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter.CropRect) - - [ ] M:SkiaSharp.SKImageFilter.CreateDilate(System.Single,System.Single,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter.CropRect) - - [ ] M:SkiaSharp.SKImageFilter.CreateDisplacementMapEffect(SkiaSharp.SKColorChannel,SkiaSharp.SKColorChannel,System.Single,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter.CropRect) - - [ ] M:SkiaSharp.SKImageFilter.CreateDisplacementMapEffect(SkiaSharp.SKDisplacementMapEffectChannelSelectorType,SkiaSharp.SKDisplacementMapEffectChannelSelectorType,System.Single,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter.CropRect) - - [ ] M:SkiaSharp.SKImageFilter.CreateDistantLitDiffuse(SkiaSharp.SKPoint3,SkiaSharp.SKColor,System.Single,System.Single,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter.CropRect) - - [ ] M:SkiaSharp.SKImageFilter.CreateDistantLitSpecular(SkiaSharp.SKPoint3,SkiaSharp.SKColor,System.Single,System.Single,System.Single,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter.CropRect) - - [ ] M:SkiaSharp.SKImageFilter.CreateDropShadow(System.Single,System.Single,System.Single,System.Single,SkiaSharp.SKColor,SkiaSharp.SKDropShadowImageFilterShadowMode,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter.CropRect) - - [ ] M:SkiaSharp.SKImageFilter.CreateDropShadow(System.Single,System.Single,System.Single,System.Single,SkiaSharp.SKColor,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter.CropRect) - - [ ] M:SkiaSharp.SKImageFilter.CreateDropShadowOnly(System.Single,System.Single,System.Single,System.Single,SkiaSharp.SKColor,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter.CropRect) - - [ ] M:SkiaSharp.SKImageFilter.CreateErode(System.Int32,System.Int32,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter.CropRect) - - [ ] M:SkiaSharp.SKImageFilter.CreateErode(System.Single,System.Single,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter.CropRect) - - [ ] M:SkiaSharp.SKImageFilter.CreateImage(SkiaSharp.SKImage,SkiaSharp.SKRect,SkiaSharp.SKRect,SkiaSharp.SKFilterQuality) - - [ ] M:SkiaSharp.SKImageFilter.CreateImage(SkiaSharp.SKImage) - - [ ] M:SkiaSharp.SKImageFilter.CreateMagnifier(SkiaSharp.SKRect,System.Single,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter.CropRect) - - [ ] M:SkiaSharp.SKImageFilter.CreateMatrix(SkiaSharp.SKMatrix,SkiaSharp.SKFilterQuality,SkiaSharp.SKImageFilter) - - [ ] M:SkiaSharp.SKImageFilter.CreateMatrixConvolution(SkiaSharp.SKSizeI,System.Single[],System.Single,System.Single,SkiaSharp.SKPointI,SkiaSharp.SKMatrixConvolutionTileMode,System.Boolean,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter.CropRect) - - [ ] M:SkiaSharp.SKImageFilter.CreateMatrixConvolution(SkiaSharp.SKSizeI,System.Single[],System.Single,System.Single,SkiaSharp.SKPointI,SkiaSharp.SKShaderTileMode,System.Boolean,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter.CropRect) - - [ ] M:SkiaSharp.SKImageFilter.CreateMerge(SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter,SkiaSharp.SKBlendMode,SkiaSharp.SKImageFilter.CropRect) - - [ ] M:SkiaSharp.SKImageFilter.CreateMerge(SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter.CropRect) - - [ ] M:SkiaSharp.SKImageFilter.CreateMerge(SkiaSharp.SKImageFilter[],SkiaSharp.SKBlendMode[],SkiaSharp.SKImageFilter.CropRect) - - [ ] M:SkiaSharp.SKImageFilter.CreateMerge(SkiaSharp.SKImageFilter[],SkiaSharp.SKImageFilter.CropRect) - - [ ] M:SkiaSharp.SKImageFilter.CreateOffset(System.Single,System.Single,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter.CropRect) - - [ ] M:SkiaSharp.SKImageFilter.CreatePaint(SkiaSharp.SKPaint,SkiaSharp.SKImageFilter.CropRect) - - [ ] M:SkiaSharp.SKImageFilter.CreatePicture(SkiaSharp.SKPicture,SkiaSharp.SKRect) - - [ ] M:SkiaSharp.SKImageFilter.CreatePicture(SkiaSharp.SKPicture) - - [ ] M:SkiaSharp.SKImageFilter.CreatePictureForLocalspace(SkiaSharp.SKPicture,SkiaSharp.SKRect,SkiaSharp.SKFilterQuality) - - [ ] M:SkiaSharp.SKImageFilter.CreatePointLitDiffuse(SkiaSharp.SKPoint3,SkiaSharp.SKColor,System.Single,System.Single,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter.CropRect) - - [ ] M:SkiaSharp.SKImageFilter.CreatePointLitSpecular(SkiaSharp.SKPoint3,SkiaSharp.SKColor,System.Single,System.Single,System.Single,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter.CropRect) - - [ ] M:SkiaSharp.SKImageFilter.CreateSpotLitDiffuse(SkiaSharp.SKPoint3,SkiaSharp.SKPoint3,System.Single,System.Single,SkiaSharp.SKColor,System.Single,System.Single,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter.CropRect) - - [ ] M:SkiaSharp.SKImageFilter.CreateSpotLitSpecular(SkiaSharp.SKPoint3,SkiaSharp.SKPoint3,System.Single,System.Single,SkiaSharp.SKColor,System.Single,System.Single,System.Single,SkiaSharp.SKImageFilter,SkiaSharp.SKImageFilter.CropRect) - - [ ] M:SkiaSharp.SKImageFilter.CreateTile(SkiaSharp.SKRect,SkiaSharp.SKRect,SkiaSharp.SKImageFilter) - - [ ] M:SkiaSharp.SKImageFilter.Dispose(System.Boolean) -- [ ] SkiaSharp.SKImageFilter.CropRect - - [ ] M:SkiaSharp.SKImageFilter.CropRect.#ctor - - [ ] M:SkiaSharp.SKImageFilter.CropRect.#ctor(SkiaSharp.SKRect,SkiaSharp.SKCropRectFlags) - - [ ] M:SkiaSharp.SKImageFilter.CropRect.Dispose(System.Boolean) - - [ ] M:SkiaSharp.SKImageFilter.CropRect.DisposeNative - - [ ] P:SkiaSharp.SKImageFilter.CropRect.Flags - - [ ] P:SkiaSharp.SKImageFilter.CropRect.Rect -- [ ] SkiaSharp.SKImageInfo - - [ ] F:SkiaSharp.SKImageInfo.Empty - - [ ] F:SkiaSharp.SKImageInfo.PlatformColorAlphaShift - - [ ] F:SkiaSharp.SKImageInfo.PlatformColorBlueShift - - [ ] F:SkiaSharp.SKImageInfo.PlatformColorGreenShift - - [ ] F:SkiaSharp.SKImageInfo.PlatformColorRedShift - - [ ] F:SkiaSharp.SKImageInfo.PlatformColorType - - [ ] M:SkiaSharp.SKImageInfo.#ctor(System.Int32,System.Int32,SkiaSharp.SKColorType,SkiaSharp.SKAlphaType,SkiaSharp.SKColorSpace) - - [ ] M:SkiaSharp.SKImageInfo.#ctor(System.Int32,System.Int32,SkiaSharp.SKColorType,SkiaSharp.SKAlphaType) - - [ ] M:SkiaSharp.SKImageInfo.#ctor(System.Int32,System.Int32,SkiaSharp.SKColorType) - - [ ] M:SkiaSharp.SKImageInfo.#ctor(System.Int32,System.Int32) - - [ ] M:SkiaSharp.SKImageInfo.Equals(SkiaSharp.SKImageInfo) - - [ ] M:SkiaSharp.SKImageInfo.Equals(System.Object) - - [ ] M:SkiaSharp.SKImageInfo.GetHashCode - - [ ] M:SkiaSharp.SKImageInfo.op_Equality(SkiaSharp.SKImageInfo,SkiaSharp.SKImageInfo) - - [ ] M:SkiaSharp.SKImageInfo.op_Inequality(SkiaSharp.SKImageInfo,SkiaSharp.SKImageInfo) - - [ ] M:SkiaSharp.SKImageInfo.WithAlphaType(SkiaSharp.SKAlphaType) - - [ ] M:SkiaSharp.SKImageInfo.WithColorSpace(SkiaSharp.SKColorSpace) - - [ ] M:SkiaSharp.SKImageInfo.WithColorType(SkiaSharp.SKColorType) - - [ ] M:SkiaSharp.SKImageInfo.WithSize(SkiaSharp.SKSizeI) - - [ ] M:SkiaSharp.SKImageInfo.WithSize(System.Int32,System.Int32) - - [ ] P:SkiaSharp.SKImageInfo.AlphaType - - [ ] P:SkiaSharp.SKImageInfo.BitsPerPixel - - [ ] P:SkiaSharp.SKImageInfo.BytesPerPixel - - [ ] P:SkiaSharp.SKImageInfo.BytesSize - - [ ] P:SkiaSharp.SKImageInfo.BytesSize64 - - [ ] P:SkiaSharp.SKImageInfo.ColorSpace - - [ ] P:SkiaSharp.SKImageInfo.ColorType - - [ ] P:SkiaSharp.SKImageInfo.Height - - [ ] P:SkiaSharp.SKImageInfo.IsEmpty - - [ ] P:SkiaSharp.SKImageInfo.IsOpaque - - [ ] P:SkiaSharp.SKImageInfo.Rect - - [ ] P:SkiaSharp.SKImageInfo.RowBytes - - [ ] P:SkiaSharp.SKImageInfo.RowBytes64 - - [ ] P:SkiaSharp.SKImageInfo.Size - - [ ] P:SkiaSharp.SKImageInfo.Width -- [ ] SkiaSharp.SKImageRasterReleaseDelegate -- [ ] SkiaSharp.SKImageTextureReleaseDelegate -- [ ] SkiaSharp.SKJpegEncoderAlphaOption - - [ ] F:SkiaSharp.SKJpegEncoderAlphaOption.BlendOnBlack - - [ ] F:SkiaSharp.SKJpegEncoderAlphaOption.Ignore -- [ ] SkiaSharp.SKJpegEncoderDownsample - - [ ] F:SkiaSharp.SKJpegEncoderDownsample.Downsample420 - - [ ] F:SkiaSharp.SKJpegEncoderDownsample.Downsample422 - - [ ] F:SkiaSharp.SKJpegEncoderDownsample.Downsample444 -- [ ] SkiaSharp.SKJpegEncoderOptions - - [ ] F:SkiaSharp.SKJpegEncoderOptions.Default - - [ ] M:SkiaSharp.SKJpegEncoderOptions.#ctor(System.Int32,SkiaSharp.SKJpegEncoderDownsample,SkiaSharp.SKJpegEncoderAlphaOption,SkiaSharp.SKTransferFunctionBehavior) - - [ ] M:SkiaSharp.SKJpegEncoderOptions.#ctor(System.Int32,SkiaSharp.SKJpegEncoderDownsample,SkiaSharp.SKJpegEncoderAlphaOption) - - [ ] M:SkiaSharp.SKJpegEncoderOptions.Equals(SkiaSharp.SKJpegEncoderOptions) - - [ ] M:SkiaSharp.SKJpegEncoderOptions.Equals(System.Object) - - [ ] M:SkiaSharp.SKJpegEncoderOptions.GetHashCode - - [ ] M:SkiaSharp.SKJpegEncoderOptions.op_Equality(SkiaSharp.SKJpegEncoderOptions,SkiaSharp.SKJpegEncoderOptions) - - [ ] M:SkiaSharp.SKJpegEncoderOptions.op_Inequality(SkiaSharp.SKJpegEncoderOptions,SkiaSharp.SKJpegEncoderOptions) - - [ ] P:SkiaSharp.SKJpegEncoderOptions.AlphaOption - - [ ] P:SkiaSharp.SKJpegEncoderOptions.BlendBehavior - - [ ] P:SkiaSharp.SKJpegEncoderOptions.Downsample - - [ ] P:SkiaSharp.SKJpegEncoderOptions.Quality -- [ ] SkiaSharp.SKLattice - - [ ] M:SkiaSharp.SKLattice.Equals(SkiaSharp.SKLattice) - - [ ] M:SkiaSharp.SKLattice.Equals(System.Object) - - [ ] M:SkiaSharp.SKLattice.GetHashCode - - [ ] M:SkiaSharp.SKLattice.op_Equality(SkiaSharp.SKLattice,SkiaSharp.SKLattice) - - [ ] M:SkiaSharp.SKLattice.op_Inequality(SkiaSharp.SKLattice,SkiaSharp.SKLattice) - - [ ] P:SkiaSharp.SKLattice.Bounds - - [ ] P:SkiaSharp.SKLattice.Colors - - [ ] P:SkiaSharp.SKLattice.Flags - - [ ] P:SkiaSharp.SKLattice.RectTypes - - [ ] P:SkiaSharp.SKLattice.XDivs - - [ ] P:SkiaSharp.SKLattice.YDivs -- [ ] SkiaSharp.SKLatticeFlags - - [ ] F:SkiaSharp.SKLatticeFlags.Default - - [ ] F:SkiaSharp.SKLatticeFlags.Transparent -- [ ] SkiaSharp.SKLatticeRectType - - [ ] F:SkiaSharp.SKLatticeRectType.Default - - [ ] F:SkiaSharp.SKLatticeRectType.FixedColor - - [ ] F:SkiaSharp.SKLatticeRectType.Transparent -- [ ] SkiaSharp.SKManagedPixelSerializer - - [ ] M:SkiaSharp.SKManagedPixelSerializer.#ctor - - [ ] M:SkiaSharp.SKManagedPixelSerializer.OnEncode(SkiaSharp.SKPixmap) - - [ ] M:SkiaSharp.SKManagedPixelSerializer.OnUseEncodedData(System.IntPtr,System.IntPtr) -- [ ] SkiaSharp.SKManagedStream - - [ ] M:SkiaSharp.SKManagedStream.#ctor(System.IO.Stream,System.Boolean) - - [ ] M:SkiaSharp.SKManagedStream.#ctor(System.IO.Stream) - - [ ] M:SkiaSharp.SKManagedStream.CopyTo(SkiaSharp.SKWStream) - - [ ] M:SkiaSharp.SKManagedStream.Dispose(System.Boolean) - - [ ] M:SkiaSharp.SKManagedStream.DisposeManaged - - [ ] M:SkiaSharp.SKManagedStream.OnCreateNew - - [ ] M:SkiaSharp.SKManagedStream.OnDuplicate - - [ ] M:SkiaSharp.SKManagedStream.OnFork - - [ ] M:SkiaSharp.SKManagedStream.OnGetLength - - [ ] M:SkiaSharp.SKManagedStream.OnGetPosition - - [ ] M:SkiaSharp.SKManagedStream.OnHasLength - - [ ] M:SkiaSharp.SKManagedStream.OnHasPosition - - [ ] M:SkiaSharp.SKManagedStream.OnIsAtEnd - - [ ] M:SkiaSharp.SKManagedStream.OnMove(System.Int32) - - [ ] M:SkiaSharp.SKManagedStream.OnPeek(System.IntPtr,System.IntPtr) - - [ ] M:SkiaSharp.SKManagedStream.OnRead(System.IntPtr,System.IntPtr) - - [ ] M:SkiaSharp.SKManagedStream.OnRewind - - [ ] M:SkiaSharp.SKManagedStream.OnSeek(System.IntPtr) - - [ ] M:SkiaSharp.SKManagedStream.ToMemoryStream -- [ ] SkiaSharp.SKManagedWStream - - [ ] M:SkiaSharp.SKManagedWStream.#ctor(System.IO.Stream,System.Boolean) - - [ ] M:SkiaSharp.SKManagedWStream.#ctor(System.IO.Stream) - - [ ] M:SkiaSharp.SKManagedWStream.Dispose(System.Boolean) - - [ ] M:SkiaSharp.SKManagedWStream.DisposeManaged - - [ ] M:SkiaSharp.SKManagedWStream.OnBytesWritten - - [ ] M:SkiaSharp.SKManagedWStream.OnFlush - - [ ] M:SkiaSharp.SKManagedWStream.OnWrite(System.IntPtr,System.IntPtr) -- [ ] SkiaSharp.SKMask - - [ ] M:SkiaSharp.SKMask.#ctor(SkiaSharp.SKRectI,System.UInt32,SkiaSharp.SKMaskFormat) - - [ ] M:SkiaSharp.SKMask.#ctor(System.IntPtr,SkiaSharp.SKRectI,System.UInt32,SkiaSharp.SKMaskFormat) - - [ ] M:SkiaSharp.SKMask.AllocateImage - - [ ] M:SkiaSharp.SKMask.AllocateImage(System.Int64) - - [ ] M:SkiaSharp.SKMask.ComputeImageSize - - [ ] M:SkiaSharp.SKMask.ComputeTotalImageSize - - [ ] M:SkiaSharp.SKMask.Create(System.Byte[],SkiaSharp.SKRectI,System.UInt32,SkiaSharp.SKMaskFormat) - - [ ] M:SkiaSharp.SKMask.Create(System.ReadOnlySpan{System.Byte},SkiaSharp.SKRectI,System.UInt32,SkiaSharp.SKMaskFormat) - - [ ] M:SkiaSharp.SKMask.Equals(SkiaSharp.SKMask) - - [ ] M:SkiaSharp.SKMask.Equals(System.Object) - - [ ] M:SkiaSharp.SKMask.FreeImage - - [ ] M:SkiaSharp.SKMask.FreeImage(System.IntPtr) - - [ ] M:SkiaSharp.SKMask.GetAddr(System.Int32,System.Int32) - - [ ] M:SkiaSharp.SKMask.GetAddr1(System.Int32,System.Int32) - - [ ] M:SkiaSharp.SKMask.GetAddr16(System.Int32,System.Int32) - - [ ] M:SkiaSharp.SKMask.GetAddr32(System.Int32,System.Int32) - - [ ] M:SkiaSharp.SKMask.GetAddr8(System.Int32,System.Int32) - - [ ] M:SkiaSharp.SKMask.GetHashCode - - [ ] M:SkiaSharp.SKMask.GetImageSpan - - [ ] M:SkiaSharp.SKMask.op_Equality(SkiaSharp.SKMask,SkiaSharp.SKMask) - - [ ] M:SkiaSharp.SKMask.op_Inequality(SkiaSharp.SKMask,SkiaSharp.SKMask) - - [ ] P:SkiaSharp.SKMask.Bounds - - [ ] P:SkiaSharp.SKMask.Format - - [ ] P:SkiaSharp.SKMask.Image - - [ ] P:SkiaSharp.SKMask.IsEmpty - - [ ] P:SkiaSharp.SKMask.RowBytes -- [ ] SkiaSharp.SKMaskFilter - - [ ] F:SkiaSharp.SKMaskFilter.TableMaxLength - - [ ] M:SkiaSharp.SKMaskFilter.ConvertRadiusToSigma(System.Single) - - [ ] M:SkiaSharp.SKMaskFilter.ConvertSigmaToRadius(System.Single) - - [ ] M:SkiaSharp.SKMaskFilter.CreateBlur(SkiaSharp.SKBlurStyle,System.Single,SkiaSharp.SKBlurMaskFilterFlags) - - [ ] M:SkiaSharp.SKMaskFilter.CreateBlur(SkiaSharp.SKBlurStyle,System.Single,SkiaSharp.SKRect,SkiaSharp.SKBlurMaskFilterFlags) - - [ ] M:SkiaSharp.SKMaskFilter.CreateBlur(SkiaSharp.SKBlurStyle,System.Single,SkiaSharp.SKRect,System.Boolean) - - [ ] M:SkiaSharp.SKMaskFilter.CreateBlur(SkiaSharp.SKBlurStyle,System.Single,SkiaSharp.SKRect) - - [ ] M:SkiaSharp.SKMaskFilter.CreateBlur(SkiaSharp.SKBlurStyle,System.Single,System.Boolean) - - [ ] M:SkiaSharp.SKMaskFilter.CreateBlur(SkiaSharp.SKBlurStyle,System.Single) - - [ ] M:SkiaSharp.SKMaskFilter.CreateClip(System.Byte,System.Byte) - - [ ] M:SkiaSharp.SKMaskFilter.CreateGamma(System.Single) - - [ ] M:SkiaSharp.SKMaskFilter.CreateTable(System.Byte[]) - - [ ] M:SkiaSharp.SKMaskFilter.Dispose(System.Boolean) -- [ ] SkiaSharp.SKMaskFormat - - [ ] F:SkiaSharp.SKMaskFormat.A8 - - [ ] F:SkiaSharp.SKMaskFormat.Argb32 - - [ ] F:SkiaSharp.SKMaskFormat.BW - - [ ] F:SkiaSharp.SKMaskFormat.Lcd16 - - [ ] F:SkiaSharp.SKMaskFormat.Sdf - - [ ] F:SkiaSharp.SKMaskFormat.ThreeD -- [ ] SkiaSharp.SKMatrix - - [ ] F:SkiaSharp.SKMatrix.Empty - - [ ] F:SkiaSharp.SKMatrix.Identity - - [ ] M:SkiaSharp.SKMatrix.#ctor(System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKMatrix.#ctor(System.Single[]) - - [ ] M:SkiaSharp.SKMatrix.Concat(SkiaSharp.SKMatrix,SkiaSharp.SKMatrix) - - [ ] M:SkiaSharp.SKMatrix.Concat(SkiaSharp.SKMatrix@,SkiaSharp.SKMatrix,SkiaSharp.SKMatrix) - - [ ] M:SkiaSharp.SKMatrix.Concat(SkiaSharp.SKMatrix@,SkiaSharp.SKMatrix@,SkiaSharp.SKMatrix@) - - [ ] M:SkiaSharp.SKMatrix.CreateIdentity - - [ ] M:SkiaSharp.SKMatrix.CreateRotation(System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKMatrix.CreateRotation(System.Single) - - [ ] M:SkiaSharp.SKMatrix.CreateRotationDegrees(System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKMatrix.CreateRotationDegrees(System.Single) - - [ ] M:SkiaSharp.SKMatrix.CreateScale(System.Single,System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKMatrix.CreateScale(System.Single,System.Single) - - [ ] M:SkiaSharp.SKMatrix.CreateScaleTranslation(System.Single,System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKMatrix.CreateSkew(System.Single,System.Single) - - [ ] M:SkiaSharp.SKMatrix.CreateTranslation(System.Single,System.Single) - - [ ] M:SkiaSharp.SKMatrix.Equals(SkiaSharp.SKMatrix) - - [ ] M:SkiaSharp.SKMatrix.Equals(System.Object) - - [ ] M:SkiaSharp.SKMatrix.GetHashCode - - [ ] M:SkiaSharp.SKMatrix.GetValues(System.Single[]) - - [ ] M:SkiaSharp.SKMatrix.Invert - - [ ] M:SkiaSharp.SKMatrix.MakeIdentity - - [ ] M:SkiaSharp.SKMatrix.MakeRotation(System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKMatrix.MakeRotation(System.Single) - - [ ] M:SkiaSharp.SKMatrix.MakeRotationDegrees(System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKMatrix.MakeRotationDegrees(System.Single) - - [ ] M:SkiaSharp.SKMatrix.MakeScale(System.Single,System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKMatrix.MakeScale(System.Single,System.Single) - - [ ] M:SkiaSharp.SKMatrix.MakeSkew(System.Single,System.Single) - - [ ] M:SkiaSharp.SKMatrix.MakeTranslation(System.Single,System.Single) - - [ ] M:SkiaSharp.SKMatrix.MapPoint(SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.SKMatrix.MapPoint(System.Single,System.Single) - - [ ] M:SkiaSharp.SKMatrix.MapPoints(SkiaSharp.SKPoint[],SkiaSharp.SKPoint[]) - - [ ] M:SkiaSharp.SKMatrix.MapPoints(SkiaSharp.SKPoint[]) - - [ ] M:SkiaSharp.SKMatrix.MapRadius(System.Single) - - [ ] M:SkiaSharp.SKMatrix.MapRect(SkiaSharp.SKMatrix@,SkiaSharp.SKRect@,SkiaSharp.SKRect@) - - [ ] M:SkiaSharp.SKMatrix.MapRect(SkiaSharp.SKRect) - - [ ] M:SkiaSharp.SKMatrix.MapVector(SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.SKMatrix.MapVector(System.Single,System.Single) - - [ ] M:SkiaSharp.SKMatrix.MapVectors(SkiaSharp.SKPoint[],SkiaSharp.SKPoint[]) - - [ ] M:SkiaSharp.SKMatrix.MapVectors(SkiaSharp.SKPoint[]) - - [ ] M:SkiaSharp.SKMatrix.op_Equality(SkiaSharp.SKMatrix,SkiaSharp.SKMatrix) - - [ ] M:SkiaSharp.SKMatrix.op_Inequality(SkiaSharp.SKMatrix,SkiaSharp.SKMatrix) - - [ ] M:SkiaSharp.SKMatrix.PostConcat(SkiaSharp.SKMatrix) - - [ ] M:SkiaSharp.SKMatrix.PostConcat(SkiaSharp.SKMatrix@,SkiaSharp.SKMatrix) - - [ ] M:SkiaSharp.SKMatrix.PostConcat(SkiaSharp.SKMatrix@,SkiaSharp.SKMatrix@) - - [ ] M:SkiaSharp.SKMatrix.PreConcat(SkiaSharp.SKMatrix) - - [ ] M:SkiaSharp.SKMatrix.PreConcat(SkiaSharp.SKMatrix@,SkiaSharp.SKMatrix) - - [ ] M:SkiaSharp.SKMatrix.PreConcat(SkiaSharp.SKMatrix@,SkiaSharp.SKMatrix@) - - [ ] M:SkiaSharp.SKMatrix.Rotate(SkiaSharp.SKMatrix@,System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKMatrix.Rotate(SkiaSharp.SKMatrix@,System.Single) - - [ ] M:SkiaSharp.SKMatrix.RotateDegrees(SkiaSharp.SKMatrix@,System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKMatrix.RotateDegrees(SkiaSharp.SKMatrix@,System.Single) - - [ ] M:SkiaSharp.SKMatrix.SetScaleTranslate(System.Single,System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKMatrix.TryInvert(SkiaSharp.SKMatrix@) - - [ ] P:SkiaSharp.SKMatrix.IsIdentity - - [ ] P:SkiaSharp.SKMatrix.IsInvertible - - [ ] P:SkiaSharp.SKMatrix.Persp0 - - [ ] P:SkiaSharp.SKMatrix.Persp1 - - [ ] P:SkiaSharp.SKMatrix.Persp2 - - [ ] P:SkiaSharp.SKMatrix.ScaleX - - [ ] P:SkiaSharp.SKMatrix.ScaleY - - [ ] P:SkiaSharp.SKMatrix.SkewX - - [ ] P:SkiaSharp.SKMatrix.SkewY - - [ ] P:SkiaSharp.SKMatrix.TransX - - [ ] P:SkiaSharp.SKMatrix.TransY - - [ ] P:SkiaSharp.SKMatrix.Values -- [ ] SkiaSharp.SKMatrix44 - - [ ] M:SkiaSharp.SKMatrix44.#ctor - - [ ] M:SkiaSharp.SKMatrix44.#ctor(SkiaSharp.SKMatrix) - - [ ] M:SkiaSharp.SKMatrix44.#ctor(SkiaSharp.SKMatrix44,SkiaSharp.SKMatrix44) - - [ ] M:SkiaSharp.SKMatrix44.#ctor(SkiaSharp.SKMatrix44) - - [ ] M:SkiaSharp.SKMatrix44.CreateIdentity - - [ ] M:SkiaSharp.SKMatrix44.CreateRotation(System.Single,System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKMatrix44.CreateRotationDegrees(System.Single,System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKMatrix44.CreateScale(System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKMatrix44.CreateTranslate(System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKMatrix44.CreateTranslation(System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKMatrix44.Determinant - - [ ] M:SkiaSharp.SKMatrix44.Dispose(System.Boolean) - - [ ] M:SkiaSharp.SKMatrix44.DisposeNative - - [ ] M:SkiaSharp.SKMatrix44.Equal(SkiaSharp.SKMatrix44,SkiaSharp.SKMatrix44) - - [ ] M:SkiaSharp.SKMatrix44.FromColumnMajor(System.Single[]) - - [ ] M:SkiaSharp.SKMatrix44.FromRowMajor(System.Single[]) - - [ ] M:SkiaSharp.SKMatrix44.Invert - - [ ] M:SkiaSharp.SKMatrix44.Invert(SkiaSharp.SKMatrix44) - - [ ] M:SkiaSharp.SKMatrix44.MapPoint(SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.SKMatrix44.MapPoints(SkiaSharp.SKPoint[]) - - [ ] M:SkiaSharp.SKMatrix44.MapScalars(System.Single,System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKMatrix44.MapScalars(System.Single[],System.Single[]) - - [ ] M:SkiaSharp.SKMatrix44.MapScalars(System.Single[]) - - [ ] M:SkiaSharp.SKMatrix44.MapVector2(System.Single[],System.Single[]) - - [ ] M:SkiaSharp.SKMatrix44.MapVector2(System.Single[]) - - [ ] M:SkiaSharp.SKMatrix44.op_Implicit(SkiaSharp.SKMatrix)~SkiaSharp.SKMatrix44 - - [ ] M:SkiaSharp.SKMatrix44.PostConcat(SkiaSharp.SKMatrix44) - - [ ] M:SkiaSharp.SKMatrix44.PostScale(System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKMatrix44.PostTranslate(System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKMatrix44.PreConcat(SkiaSharp.SKMatrix44) - - [ ] M:SkiaSharp.SKMatrix44.PreScale(System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKMatrix44.Preserves2DAxisAlignment(System.Single) - - [ ] M:SkiaSharp.SKMatrix44.PreTranslate(System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKMatrix44.Set3x3ColumnMajor(System.Single[]) - - [ ] M:SkiaSharp.SKMatrix44.Set3x3RowMajor(System.Single[]) - - [ ] M:SkiaSharp.SKMatrix44.SetColumnMajor(System.Single[]) - - [ ] M:SkiaSharp.SKMatrix44.SetConcat(SkiaSharp.SKMatrix44,SkiaSharp.SKMatrix44) - - [ ] M:SkiaSharp.SKMatrix44.SetIdentity - - [ ] M:SkiaSharp.SKMatrix44.SetRotationAbout(System.Single,System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKMatrix44.SetRotationAboutDegrees(System.Single,System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKMatrix44.SetRotationAboutUnit(System.Single,System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKMatrix44.SetRowMajor(System.Single[]) - - [ ] M:SkiaSharp.SKMatrix44.SetScale(System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKMatrix44.SetTranslate(System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKMatrix44.ToColumnMajor - - [ ] M:SkiaSharp.SKMatrix44.ToColumnMajor(System.Single[]) - - [ ] M:SkiaSharp.SKMatrix44.ToRowMajor - - [ ] M:SkiaSharp.SKMatrix44.ToRowMajor(System.Single[]) - - [ ] M:SkiaSharp.SKMatrix44.Transpose - - [ ] P:SkiaSharp.SKMatrix44.IsInvertible - - [ ] P:SkiaSharp.SKMatrix44.Item(System.Int32,System.Int32) - - [ ] P:SkiaSharp.SKMatrix44.Matrix - - [ ] P:SkiaSharp.SKMatrix44.Type -- [ ] SkiaSharp.SKMatrix44TypeMask - - [ ] F:SkiaSharp.SKMatrix44TypeMask.Affine - - [ ] F:SkiaSharp.SKMatrix44TypeMask.Identity - - [ ] F:SkiaSharp.SKMatrix44TypeMask.Perspective - - [ ] F:SkiaSharp.SKMatrix44TypeMask.Scale - - [ ] F:SkiaSharp.SKMatrix44TypeMask.Translate -- [ ] SkiaSharp.SKMatrixConvolutionTileMode - - [ ] F:SkiaSharp.SKMatrixConvolutionTileMode.Clamp - - [ ] F:SkiaSharp.SKMatrixConvolutionTileMode.ClampToBlack - - [ ] F:SkiaSharp.SKMatrixConvolutionTileMode.Repeat -- [ ] SkiaSharp.SKMemoryStream - - [ ] M:SkiaSharp.SKMemoryStream.#ctor - - [ ] M:SkiaSharp.SKMemoryStream.#ctor(SkiaSharp.SKData) - - [ ] M:SkiaSharp.SKMemoryStream.#ctor(System.Byte[]) - - [ ] M:SkiaSharp.SKMemoryStream.#ctor(System.UInt64) - - [ ] M:SkiaSharp.SKMemoryStream.Dispose(System.Boolean) - - [ ] M:SkiaSharp.SKMemoryStream.DisposeNative - - [ ] M:SkiaSharp.SKMemoryStream.SetMemory(System.Byte[]) -- [ ] SkiaSharp.SKNamedGamma - - [ ] F:SkiaSharp.SKNamedGamma.Linear - - [ ] F:SkiaSharp.SKNamedGamma.NonStandard - - [ ] F:SkiaSharp.SKNamedGamma.Srgb - - [ ] F:SkiaSharp.SKNamedGamma.TwoDotTwoCurve -- [ ] SkiaSharp.SKNativeObject - - [ ] M:SkiaSharp.SKNativeObject.Dispose - - [ ] M:SkiaSharp.SKNativeObject.Dispose(System.Boolean) - - [ ] M:SkiaSharp.SKNativeObject.DisposeInternal - - [ ] M:SkiaSharp.SKNativeObject.DisposeManaged - - [ ] M:SkiaSharp.SKNativeObject.DisposeNative - - [ ] M:SkiaSharp.SKNativeObject.DisposeUnownedManaged - - [ ] M:SkiaSharp.SKNativeObject.Finalize - - [ ] P:SkiaSharp.SKNativeObject.Handle - - [ ] P:SkiaSharp.SKNativeObject.IgnorePublicDispose - - [ ] P:SkiaSharp.SKNativeObject.IsDisposed - - [ ] P:SkiaSharp.SKNativeObject.OwnsHandle -- [ ] SkiaSharp.SKNoDrawCanvas - - [ ] M:SkiaSharp.SKNoDrawCanvas.#ctor(System.Int32,System.Int32) -- [ ] SkiaSharp.SKNWayCanvas - - [ ] M:SkiaSharp.SKNWayCanvas.#ctor(System.Int32,System.Int32) - - [ ] M:SkiaSharp.SKNWayCanvas.AddCanvas(SkiaSharp.SKCanvas) - - [ ] M:SkiaSharp.SKNWayCanvas.RemoveAll - - [ ] M:SkiaSharp.SKNWayCanvas.RemoveCanvas(SkiaSharp.SKCanvas) -- [ ] SkiaSharp.SKObject - - [ ] M:SkiaSharp.SKObject.Dispose(System.Boolean) - - [ ] M:SkiaSharp.SKObject.DisposeManaged - - [ ] M:SkiaSharp.SKObject.DisposeNative - - [ ] M:SkiaSharp.SKObject.DisposeUnownedManaged - - [ ] P:SkiaSharp.SKObject.Handle - - [ ] P:SkiaSharp.SKObject.OwnsHandle -- [ ] SkiaSharp.SKOverdrawCanvas - - [ ] M:SkiaSharp.SKOverdrawCanvas.#ctor(SkiaSharp.SKCanvas) -- [ ] SkiaSharp.SKPaint - - [ ] M:SkiaSharp.SKPaint.#ctor - - [ ] M:SkiaSharp.SKPaint.#ctor(SkiaSharp.SKFont) - - [ ] M:SkiaSharp.SKPaint.BreakText(System.Byte[],System.Single,System.Single@) - - [ ] M:SkiaSharp.SKPaint.BreakText(System.Byte[],System.Single) - - [ ] M:SkiaSharp.SKPaint.BreakText(System.IntPtr,System.Int32,System.Single,System.Single@) - - [ ] M:SkiaSharp.SKPaint.BreakText(System.IntPtr,System.Int32,System.Single) - - [ ] M:SkiaSharp.SKPaint.BreakText(System.IntPtr,System.IntPtr,System.Single,System.Single@) - - [ ] M:SkiaSharp.SKPaint.BreakText(System.IntPtr,System.IntPtr,System.Single) - - [ ] M:SkiaSharp.SKPaint.BreakText(System.ReadOnlySpan{System.Byte},System.Single,System.Single@) - - [ ] M:SkiaSharp.SKPaint.BreakText(System.ReadOnlySpan{System.Byte},System.Single) - - [ ] M:SkiaSharp.SKPaint.BreakText(System.ReadOnlySpan{System.Char},System.Single,System.Single@) - - [ ] M:SkiaSharp.SKPaint.BreakText(System.ReadOnlySpan{System.Char},System.Single) - - [ ] M:SkiaSharp.SKPaint.BreakText(System.String,System.Single,System.Single@,System.String@) - - [ ] M:SkiaSharp.SKPaint.BreakText(System.String,System.Single,System.Single@) - - [ ] M:SkiaSharp.SKPaint.BreakText(System.String,System.Single) - - [ ] M:SkiaSharp.SKPaint.Clone - - [ ] M:SkiaSharp.SKPaint.ContainsGlyphs(System.Byte[]) - - [ ] M:SkiaSharp.SKPaint.ContainsGlyphs(System.IntPtr,System.Int32) - - [ ] M:SkiaSharp.SKPaint.ContainsGlyphs(System.IntPtr,System.IntPtr) - - [ ] M:SkiaSharp.SKPaint.ContainsGlyphs(System.ReadOnlySpan{System.Byte}) - - [ ] M:SkiaSharp.SKPaint.ContainsGlyphs(System.ReadOnlySpan{System.Char}) - - [ ] M:SkiaSharp.SKPaint.ContainsGlyphs(System.String) - - [ ] M:SkiaSharp.SKPaint.CountGlyphs(System.Byte[]) - - [ ] M:SkiaSharp.SKPaint.CountGlyphs(System.IntPtr,System.Int32) - - [ ] M:SkiaSharp.SKPaint.CountGlyphs(System.IntPtr,System.IntPtr) - - [ ] M:SkiaSharp.SKPaint.CountGlyphs(System.ReadOnlySpan{System.Byte}) - - [ ] M:SkiaSharp.SKPaint.CountGlyphs(System.ReadOnlySpan{System.Char}) - - [ ] M:SkiaSharp.SKPaint.CountGlyphs(System.String) - - [ ] M:SkiaSharp.SKPaint.Dispose(System.Boolean) - - [ ] M:SkiaSharp.SKPaint.DisposeNative - - [ ] M:SkiaSharp.SKPaint.GetFillPath(SkiaSharp.SKPath,SkiaSharp.SKPath,SkiaSharp.SKRect,System.Single) - - [ ] M:SkiaSharp.SKPaint.GetFillPath(SkiaSharp.SKPath,SkiaSharp.SKPath,SkiaSharp.SKRect) - - [ ] M:SkiaSharp.SKPaint.GetFillPath(SkiaSharp.SKPath,SkiaSharp.SKPath,System.Single) - - [ ] M:SkiaSharp.SKPaint.GetFillPath(SkiaSharp.SKPath,SkiaSharp.SKPath) - - [ ] M:SkiaSharp.SKPaint.GetFillPath(SkiaSharp.SKPath,SkiaSharp.SKRect,System.Single) - - [ ] M:SkiaSharp.SKPaint.GetFillPath(SkiaSharp.SKPath,SkiaSharp.SKRect) - - [ ] M:SkiaSharp.SKPaint.GetFillPath(SkiaSharp.SKPath,System.Single) - - [ ] M:SkiaSharp.SKPaint.GetFillPath(SkiaSharp.SKPath) - - [ ] M:SkiaSharp.SKPaint.GetFontMetrics(SkiaSharp.SKFontMetrics@,System.Single) - - [ ] M:SkiaSharp.SKPaint.GetFontMetrics(SkiaSharp.SKFontMetrics@) - - [ ] M:SkiaSharp.SKPaint.GetGlyphOffsets(System.IntPtr,System.Int32,System.Single) - - [ ] M:SkiaSharp.SKPaint.GetGlyphOffsets(System.ReadOnlySpan{System.Byte},System.Single) - - [ ] M:SkiaSharp.SKPaint.GetGlyphOffsets(System.ReadOnlySpan{System.Char},System.Single) - - [ ] M:SkiaSharp.SKPaint.GetGlyphOffsets(System.String,System.Single) - - [ ] M:SkiaSharp.SKPaint.GetGlyphPositions(System.IntPtr,System.Int32,SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.SKPaint.GetGlyphPositions(System.ReadOnlySpan{System.Byte},SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.SKPaint.GetGlyphPositions(System.ReadOnlySpan{System.Char},SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.SKPaint.GetGlyphPositions(System.String,SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.SKPaint.GetGlyphs(System.Byte[]) - - [ ] M:SkiaSharp.SKPaint.GetGlyphs(System.IntPtr,System.Int32) - - [ ] M:SkiaSharp.SKPaint.GetGlyphs(System.IntPtr,System.IntPtr) - - [ ] M:SkiaSharp.SKPaint.GetGlyphs(System.ReadOnlySpan{System.Byte}) - - [ ] M:SkiaSharp.SKPaint.GetGlyphs(System.ReadOnlySpan{System.Char}) - - [ ] M:SkiaSharp.SKPaint.GetGlyphs(System.String) - - [ ] M:SkiaSharp.SKPaint.GetGlyphWidths(System.Byte[],SkiaSharp.SKRect[]@) - - [ ] M:SkiaSharp.SKPaint.GetGlyphWidths(System.Byte[]) - - [ ] M:SkiaSharp.SKPaint.GetGlyphWidths(System.IntPtr,System.Int32,SkiaSharp.SKRect[]@) - - [ ] M:SkiaSharp.SKPaint.GetGlyphWidths(System.IntPtr,System.Int32) - - [ ] M:SkiaSharp.SKPaint.GetGlyphWidths(System.IntPtr,System.IntPtr,SkiaSharp.SKRect[]@) - - [ ] M:SkiaSharp.SKPaint.GetGlyphWidths(System.IntPtr,System.IntPtr) - - [ ] M:SkiaSharp.SKPaint.GetGlyphWidths(System.ReadOnlySpan{System.Byte},SkiaSharp.SKRect[]@) - - [ ] M:SkiaSharp.SKPaint.GetGlyphWidths(System.ReadOnlySpan{System.Byte}) - - [ ] M:SkiaSharp.SKPaint.GetGlyphWidths(System.ReadOnlySpan{System.Char},SkiaSharp.SKRect[]@) - - [ ] M:SkiaSharp.SKPaint.GetGlyphWidths(System.ReadOnlySpan{System.Char}) - - [ ] M:SkiaSharp.SKPaint.GetGlyphWidths(System.String,SkiaSharp.SKRect[]@) - - [ ] M:SkiaSharp.SKPaint.GetGlyphWidths(System.String) - - [ ] M:SkiaSharp.SKPaint.GetHorizontalTextIntercepts(System.Byte[],System.Single[],System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKPaint.GetHorizontalTextIntercepts(System.IntPtr,System.Int32,System.Single[],System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKPaint.GetHorizontalTextIntercepts(System.IntPtr,System.IntPtr,System.Single[],System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKPaint.GetHorizontalTextIntercepts(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Single},System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKPaint.GetHorizontalTextIntercepts(System.ReadOnlySpan{System.Char},System.ReadOnlySpan{System.Single},System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKPaint.GetHorizontalTextIntercepts(System.String,System.Single[],System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKPaint.GetPositionedTextIntercepts(System.Byte[],SkiaSharp.SKPoint[],System.Single,System.Single) - - [ ] M:SkiaSharp.SKPaint.GetPositionedTextIntercepts(System.IntPtr,System.Int32,SkiaSharp.SKPoint[],System.Single,System.Single) - - [ ] M:SkiaSharp.SKPaint.GetPositionedTextIntercepts(System.IntPtr,System.IntPtr,SkiaSharp.SKPoint[],System.Single,System.Single) - - [ ] M:SkiaSharp.SKPaint.GetPositionedTextIntercepts(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{SkiaSharp.SKPoint},System.Single,System.Single) - - [ ] M:SkiaSharp.SKPaint.GetPositionedTextIntercepts(System.ReadOnlySpan{System.Char},System.ReadOnlySpan{SkiaSharp.SKPoint},System.Single,System.Single) - - [ ] M:SkiaSharp.SKPaint.GetPositionedTextIntercepts(System.String,SkiaSharp.SKPoint[],System.Single,System.Single) - - [ ] M:SkiaSharp.SKPaint.GetTextIntercepts(SkiaSharp.SKTextBlob,System.Single,System.Single) - - [ ] M:SkiaSharp.SKPaint.GetTextIntercepts(System.Byte[],System.Single,System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKPaint.GetTextIntercepts(System.IntPtr,System.Int32,System.Single,System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKPaint.GetTextIntercepts(System.IntPtr,System.IntPtr,System.Single,System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKPaint.GetTextIntercepts(System.ReadOnlySpan{System.Byte},System.Single,System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKPaint.GetTextIntercepts(System.ReadOnlySpan{System.Char},System.Single,System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKPaint.GetTextIntercepts(System.String,System.Single,System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKPaint.GetTextPath(System.Byte[],SkiaSharp.SKPoint[]) - - [ ] M:SkiaSharp.SKPaint.GetTextPath(System.Byte[],System.Single,System.Single) - - [ ] M:SkiaSharp.SKPaint.GetTextPath(System.IntPtr,System.Int32,SkiaSharp.SKPoint[]) - - [ ] M:SkiaSharp.SKPaint.GetTextPath(System.IntPtr,System.Int32,System.ReadOnlySpan{SkiaSharp.SKPoint}) - - [ ] M:SkiaSharp.SKPaint.GetTextPath(System.IntPtr,System.Int32,System.Single,System.Single) - - [ ] M:SkiaSharp.SKPaint.GetTextPath(System.IntPtr,System.IntPtr,SkiaSharp.SKPoint[]) - - [ ] M:SkiaSharp.SKPaint.GetTextPath(System.IntPtr,System.IntPtr,System.Single,System.Single) - - [ ] M:SkiaSharp.SKPaint.GetTextPath(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{SkiaSharp.SKPoint}) - - [ ] M:SkiaSharp.SKPaint.GetTextPath(System.ReadOnlySpan{System.Byte},System.Single,System.Single) - - [ ] M:SkiaSharp.SKPaint.GetTextPath(System.ReadOnlySpan{System.Char},System.ReadOnlySpan{SkiaSharp.SKPoint}) - - [ ] M:SkiaSharp.SKPaint.GetTextPath(System.ReadOnlySpan{System.Char},System.Single,System.Single) - - [ ] M:SkiaSharp.SKPaint.GetTextPath(System.String,SkiaSharp.SKPoint[]) - - [ ] M:SkiaSharp.SKPaint.GetTextPath(System.String,System.Single,System.Single) - - [ ] M:SkiaSharp.SKPaint.MeasureText(System.Byte[],SkiaSharp.SKRect@) - - [ ] M:SkiaSharp.SKPaint.MeasureText(System.Byte[]) - - [ ] M:SkiaSharp.SKPaint.MeasureText(System.IntPtr,System.Int32,SkiaSharp.SKRect@) - - [ ] M:SkiaSharp.SKPaint.MeasureText(System.IntPtr,System.Int32) - - [ ] M:SkiaSharp.SKPaint.MeasureText(System.IntPtr,System.IntPtr,SkiaSharp.SKRect@) - - [ ] M:SkiaSharp.SKPaint.MeasureText(System.IntPtr,System.IntPtr) - - [ ] M:SkiaSharp.SKPaint.MeasureText(System.ReadOnlySpan{System.Byte},SkiaSharp.SKRect@) - - [ ] M:SkiaSharp.SKPaint.MeasureText(System.ReadOnlySpan{System.Byte}) - - [ ] M:SkiaSharp.SKPaint.MeasureText(System.ReadOnlySpan{System.Char},SkiaSharp.SKRect@) - - [ ] M:SkiaSharp.SKPaint.MeasureText(System.ReadOnlySpan{System.Char}) - - [ ] M:SkiaSharp.SKPaint.MeasureText(System.String,SkiaSharp.SKRect@) - - [ ] M:SkiaSharp.SKPaint.MeasureText(System.String) - - [ ] M:SkiaSharp.SKPaint.Reset - - [ ] M:SkiaSharp.SKPaint.SetColor(SkiaSharp.SKColorF,SkiaSharp.SKColorSpace) - - [ ] M:SkiaSharp.SKPaint.ToFont - - [ ] P:SkiaSharp.SKPaint.BlendMode - - [ ] P:SkiaSharp.SKPaint.Color - - [ ] P:SkiaSharp.SKPaint.ColorF - - [ ] P:SkiaSharp.SKPaint.ColorFilter - - [ ] P:SkiaSharp.SKPaint.DeviceKerningEnabled - - [ ] P:SkiaSharp.SKPaint.FakeBoldText - - [ ] P:SkiaSharp.SKPaint.FilterQuality - - [ ] P:SkiaSharp.SKPaint.FontMetrics - - [ ] P:SkiaSharp.SKPaint.FontSpacing - - [ ] P:SkiaSharp.SKPaint.HintingLevel - - [ ] P:SkiaSharp.SKPaint.ImageFilter - - [ ] P:SkiaSharp.SKPaint.IsAntialias - - [ ] P:SkiaSharp.SKPaint.IsAutohinted - - [ ] P:SkiaSharp.SKPaint.IsDither - - [ ] P:SkiaSharp.SKPaint.IsEmbeddedBitmapText - - [ ] P:SkiaSharp.SKPaint.IsLinearText - - [ ] P:SkiaSharp.SKPaint.IsStroke - - [ ] P:SkiaSharp.SKPaint.IsVerticalText - - [ ] P:SkiaSharp.SKPaint.LcdRenderText - - [ ] P:SkiaSharp.SKPaint.MaskFilter - - [ ] P:SkiaSharp.SKPaint.PathEffect - - [ ] P:SkiaSharp.SKPaint.Shader - - [ ] P:SkiaSharp.SKPaint.StrokeCap - - [ ] P:SkiaSharp.SKPaint.StrokeJoin - - [ ] P:SkiaSharp.SKPaint.StrokeMiter - - [ ] P:SkiaSharp.SKPaint.StrokeWidth - - [ ] P:SkiaSharp.SKPaint.Style - - [ ] P:SkiaSharp.SKPaint.SubpixelText - - [ ] P:SkiaSharp.SKPaint.TextAlign - - [ ] P:SkiaSharp.SKPaint.TextEncoding - - [ ] P:SkiaSharp.SKPaint.TextScaleX - - [ ] P:SkiaSharp.SKPaint.TextSize - - [ ] P:SkiaSharp.SKPaint.TextSkewX - - [ ] P:SkiaSharp.SKPaint.Typeface -- [ ] SkiaSharp.SKPaintHinting - - [ ] F:SkiaSharp.SKPaintHinting.Full - - [ ] F:SkiaSharp.SKPaintHinting.NoHinting - - [ ] F:SkiaSharp.SKPaintHinting.Normal - - [ ] F:SkiaSharp.SKPaintHinting.Slight -- [ ] SkiaSharp.SKPaintStyle - - [ ] F:SkiaSharp.SKPaintStyle.Fill - - [ ] F:SkiaSharp.SKPaintStyle.Stroke - - [ ] F:SkiaSharp.SKPaintStyle.StrokeAndFill -- [ ] SkiaSharp.SKPath - - [ ] M:SkiaSharp.SKPath.#ctor - - [ ] M:SkiaSharp.SKPath.#ctor(SkiaSharp.SKPath) - - [ ] M:SkiaSharp.SKPath.AddArc(SkiaSharp.SKRect,System.Single,System.Single) - - [ ] M:SkiaSharp.SKPath.AddCircle(System.Single,System.Single,System.Single,SkiaSharp.SKPathDirection) - - [ ] M:SkiaSharp.SKPath.AddOval(SkiaSharp.SKRect,SkiaSharp.SKPathDirection) - - [ ] M:SkiaSharp.SKPath.AddPath(SkiaSharp.SKPath,SkiaSharp.SKMatrix@,SkiaSharp.SKPathAddMode) - - [ ] M:SkiaSharp.SKPath.AddPath(SkiaSharp.SKPath,SkiaSharp.SKPathAddMode) - - [ ] M:SkiaSharp.SKPath.AddPath(SkiaSharp.SKPath,System.Single,System.Single,SkiaSharp.SKPathAddMode) - - [ ] M:SkiaSharp.SKPath.AddPathReverse(SkiaSharp.SKPath) - - [ ] M:SkiaSharp.SKPath.AddPoly(SkiaSharp.SKPoint[],System.Boolean) - - [ ] M:SkiaSharp.SKPath.AddRect(SkiaSharp.SKRect,SkiaSharp.SKPathDirection,System.UInt32) - - [ ] M:SkiaSharp.SKPath.AddRect(SkiaSharp.SKRect,SkiaSharp.SKPathDirection) - - [ ] M:SkiaSharp.SKPath.AddRoundedRect(SkiaSharp.SKRect,System.Single,System.Single,SkiaSharp.SKPathDirection) - - [ ] M:SkiaSharp.SKPath.AddRoundRect(SkiaSharp.SKRect,System.Single,System.Single,SkiaSharp.SKPathDirection) - - [ ] M:SkiaSharp.SKPath.AddRoundRect(SkiaSharp.SKRoundRect,SkiaSharp.SKPathDirection,System.UInt32) - - [ ] M:SkiaSharp.SKPath.AddRoundRect(SkiaSharp.SKRoundRect,SkiaSharp.SKPathDirection) - - [ ] M:SkiaSharp.SKPath.ArcTo(SkiaSharp.SKPoint,SkiaSharp.SKPoint,System.Single) - - [ ] M:SkiaSharp.SKPath.ArcTo(SkiaSharp.SKPoint,System.Single,SkiaSharp.SKPathArcSize,SkiaSharp.SKPathDirection,SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.SKPath.ArcTo(SkiaSharp.SKRect,System.Single,System.Single,System.Boolean) - - [ ] M:SkiaSharp.SKPath.ArcTo(System.Single,System.Single,System.Single,SkiaSharp.SKPathArcSize,SkiaSharp.SKPathDirection,System.Single,System.Single) - - [ ] M:SkiaSharp.SKPath.ArcTo(System.Single,System.Single,System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKPath.Close - - [ ] M:SkiaSharp.SKPath.ComputeTightBounds - - [ ] M:SkiaSharp.SKPath.ConicTo(SkiaSharp.SKPoint,SkiaSharp.SKPoint,System.Single) - - [ ] M:SkiaSharp.SKPath.ConicTo(System.Single,System.Single,System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKPath.Contains(System.Single,System.Single) - - [ ] M:SkiaSharp.SKPath.ConvertConicToQuads(SkiaSharp.SKPoint,SkiaSharp.SKPoint,SkiaSharp.SKPoint,System.Single,SkiaSharp.SKPoint[],System.Int32) - - [ ] M:SkiaSharp.SKPath.ConvertConicToQuads(SkiaSharp.SKPoint,SkiaSharp.SKPoint,SkiaSharp.SKPoint,System.Single,SkiaSharp.SKPoint[]@,System.Int32) - - [ ] M:SkiaSharp.SKPath.ConvertConicToQuads(SkiaSharp.SKPoint,SkiaSharp.SKPoint,SkiaSharp.SKPoint,System.Single,System.Int32) - - [ ] M:SkiaSharp.SKPath.CreateIterator(System.Boolean) - - [ ] M:SkiaSharp.SKPath.CreateRawIterator - - [ ] M:SkiaSharp.SKPath.CubicTo(SkiaSharp.SKPoint,SkiaSharp.SKPoint,SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.SKPath.CubicTo(System.Single,System.Single,System.Single,System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKPath.Dispose(System.Boolean) - - [ ] M:SkiaSharp.SKPath.DisposeNative - - [ ] M:SkiaSharp.SKPath.GetBounds(SkiaSharp.SKRect@) - - [ ] M:SkiaSharp.SKPath.GetLine - - [ ] M:SkiaSharp.SKPath.GetOvalBounds - - [ ] M:SkiaSharp.SKPath.GetPoint(System.Int32) - - [ ] M:SkiaSharp.SKPath.GetPoints(SkiaSharp.SKPoint[],System.Int32) - - [ ] M:SkiaSharp.SKPath.GetPoints(System.Int32) - - [ ] M:SkiaSharp.SKPath.GetRect - - [ ] M:SkiaSharp.SKPath.GetRect(System.Boolean@,SkiaSharp.SKPathDirection@) - - [ ] M:SkiaSharp.SKPath.GetRoundRect - - [ ] M:SkiaSharp.SKPath.GetTightBounds(SkiaSharp.SKRect@) - - [ ] M:SkiaSharp.SKPath.LineTo(SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.SKPath.LineTo(System.Single,System.Single) - - [ ] M:SkiaSharp.SKPath.MoveTo(SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.SKPath.MoveTo(System.Single,System.Single) - - [ ] M:SkiaSharp.SKPath.Offset(SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.SKPath.Offset(System.Single,System.Single) - - [ ] M:SkiaSharp.SKPath.Op(SkiaSharp.SKPath,SkiaSharp.SKPathOp,SkiaSharp.SKPath) - - [ ] M:SkiaSharp.SKPath.Op(SkiaSharp.SKPath,SkiaSharp.SKPathOp) - - [ ] M:SkiaSharp.SKPath.ParseSvgPathData(System.String) - - [ ] M:SkiaSharp.SKPath.QuadTo(SkiaSharp.SKPoint,SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.SKPath.QuadTo(System.Single,System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKPath.RArcTo(SkiaSharp.SKPoint,System.Single,SkiaSharp.SKPathArcSize,SkiaSharp.SKPathDirection,SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.SKPath.RArcTo(System.Single,System.Single,System.Single,SkiaSharp.SKPathArcSize,SkiaSharp.SKPathDirection,System.Single,System.Single) - - [ ] M:SkiaSharp.SKPath.RConicTo(SkiaSharp.SKPoint,SkiaSharp.SKPoint,System.Single) - - [ ] M:SkiaSharp.SKPath.RConicTo(System.Single,System.Single,System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKPath.RCubicTo(SkiaSharp.SKPoint,SkiaSharp.SKPoint,SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.SKPath.RCubicTo(System.Single,System.Single,System.Single,System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKPath.Reset - - [ ] M:SkiaSharp.SKPath.Rewind - - [ ] M:SkiaSharp.SKPath.RLineTo(SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.SKPath.RLineTo(System.Single,System.Single) - - [ ] M:SkiaSharp.SKPath.RMoveTo(SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.SKPath.RMoveTo(System.Single,System.Single) - - [ ] M:SkiaSharp.SKPath.RQuadTo(SkiaSharp.SKPoint,SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.SKPath.RQuadTo(System.Single,System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKPath.Simplify - - [ ] M:SkiaSharp.SKPath.Simplify(SkiaSharp.SKPath) - - [ ] M:SkiaSharp.SKPath.ToSvgPathData - - [ ] M:SkiaSharp.SKPath.ToWinding - - [ ] M:SkiaSharp.SKPath.ToWinding(SkiaSharp.SKPath) - - [ ] M:SkiaSharp.SKPath.Transform(SkiaSharp.SKMatrix,SkiaSharp.SKPath) - - [ ] M:SkiaSharp.SKPath.Transform(SkiaSharp.SKMatrix) - - [ ] P:SkiaSharp.SKPath.Bounds - - [ ] P:SkiaSharp.SKPath.Convexity - - [ ] P:SkiaSharp.SKPath.FillType - - [ ] P:SkiaSharp.SKPath.IsConcave - - [ ] P:SkiaSharp.SKPath.IsConvex - - [ ] P:SkiaSharp.SKPath.IsEmpty - - [ ] P:SkiaSharp.SKPath.IsLine - - [ ] P:SkiaSharp.SKPath.IsOval - - [ ] P:SkiaSharp.SKPath.IsRect - - [ ] P:SkiaSharp.SKPath.IsRoundRect - - [ ] P:SkiaSharp.SKPath.Item(System.Int32) - - [ ] P:SkiaSharp.SKPath.LastPoint - - [ ] P:SkiaSharp.SKPath.PointCount - - [ ] P:SkiaSharp.SKPath.Points - - [ ] P:SkiaSharp.SKPath.SegmentMasks - - [ ] P:SkiaSharp.SKPath.TightBounds - - [ ] P:SkiaSharp.SKPath.VerbCount -- [ ] SkiaSharp.SKPath.Iterator - - [ ] M:SkiaSharp.SKPath.Iterator.ConicWeight - - [ ] M:SkiaSharp.SKPath.Iterator.Dispose(System.Boolean) - - [ ] M:SkiaSharp.SKPath.Iterator.DisposeNative - - [ ] M:SkiaSharp.SKPath.Iterator.IsCloseContour - - [ ] M:SkiaSharp.SKPath.Iterator.IsCloseLine - - [ ] M:SkiaSharp.SKPath.Iterator.Next(SkiaSharp.SKPoint[],System.Boolean,System.Boolean) - - [ ] M:SkiaSharp.SKPath.Iterator.Next(SkiaSharp.SKPoint[]) - - [ ] M:SkiaSharp.SKPath.Iterator.Next(System.Span{SkiaSharp.SKPoint}) -- [ ] SkiaSharp.SKPath.OpBuilder - - [ ] M:SkiaSharp.SKPath.OpBuilder.#ctor - - [ ] M:SkiaSharp.SKPath.OpBuilder.Add(SkiaSharp.SKPath,SkiaSharp.SKPathOp) - - [ ] M:SkiaSharp.SKPath.OpBuilder.Dispose(System.Boolean) - - [ ] M:SkiaSharp.SKPath.OpBuilder.DisposeNative - - [ ] M:SkiaSharp.SKPath.OpBuilder.Resolve(SkiaSharp.SKPath) -- [ ] SkiaSharp.SKPath.RawIterator - - [ ] M:SkiaSharp.SKPath.RawIterator.ConicWeight - - [ ] M:SkiaSharp.SKPath.RawIterator.Dispose(System.Boolean) - - [ ] M:SkiaSharp.SKPath.RawIterator.DisposeNative - - [ ] M:SkiaSharp.SKPath.RawIterator.Next(SkiaSharp.SKPoint[]) - - [ ] M:SkiaSharp.SKPath.RawIterator.Next(System.Span{SkiaSharp.SKPoint}) - - [ ] M:SkiaSharp.SKPath.RawIterator.Peek -- [ ] SkiaSharp.SKPath1DPathEffectStyle - - [ ] F:SkiaSharp.SKPath1DPathEffectStyle.Morph - - [ ] F:SkiaSharp.SKPath1DPathEffectStyle.Rotate - - [ ] F:SkiaSharp.SKPath1DPathEffectStyle.Translate -- [ ] SkiaSharp.SKPathAddMode - - [ ] F:SkiaSharp.SKPathAddMode.Append - - [ ] F:SkiaSharp.SKPathAddMode.Extend -- [ ] SkiaSharp.SKPathArcSize - - [ ] F:SkiaSharp.SKPathArcSize.Large - - [ ] F:SkiaSharp.SKPathArcSize.Small -- [ ] SkiaSharp.SKPathConvexity - - [ ] F:SkiaSharp.SKPathConvexity.Concave - - [ ] F:SkiaSharp.SKPathConvexity.Convex - - [ ] F:SkiaSharp.SKPathConvexity.Unknown -- [ ] SkiaSharp.SKPathDirection - - [ ] F:SkiaSharp.SKPathDirection.Clockwise - - [ ] F:SkiaSharp.SKPathDirection.CounterClockwise -- [ ] SkiaSharp.SKPathEffect - - [ ] M:SkiaSharp.SKPathEffect.Create1DPath(SkiaSharp.SKPath,System.Single,System.Single,SkiaSharp.SKPath1DPathEffectStyle) - - [ ] M:SkiaSharp.SKPathEffect.Create2DLine(System.Single,SkiaSharp.SKMatrix) - - [ ] M:SkiaSharp.SKPathEffect.Create2DPath(SkiaSharp.SKMatrix,SkiaSharp.SKPath) - - [ ] M:SkiaSharp.SKPathEffect.CreateArcTo(System.Single) - - [ ] M:SkiaSharp.SKPathEffect.CreateCompose(SkiaSharp.SKPathEffect,SkiaSharp.SKPathEffect) - - [ ] M:SkiaSharp.SKPathEffect.CreateCorner(System.Single) - - [ ] M:SkiaSharp.SKPathEffect.CreateDash(System.Single[],System.Single) - - [ ] M:SkiaSharp.SKPathEffect.CreateDiscrete(System.Single,System.Single,System.UInt32) - - [ ] M:SkiaSharp.SKPathEffect.CreateSum(SkiaSharp.SKPathEffect,SkiaSharp.SKPathEffect) - - [ ] M:SkiaSharp.SKPathEffect.CreateTrim(System.Single,System.Single,SkiaSharp.SKTrimPathEffectMode) - - [ ] M:SkiaSharp.SKPathEffect.CreateTrim(System.Single,System.Single) - - [ ] M:SkiaSharp.SKPathEffect.Dispose(System.Boolean) -- [ ] SkiaSharp.SKPathFillType - - [ ] F:SkiaSharp.SKPathFillType.EvenOdd - - [ ] F:SkiaSharp.SKPathFillType.InverseEvenOdd - - [ ] F:SkiaSharp.SKPathFillType.InverseWinding - - [ ] F:SkiaSharp.SKPathFillType.Winding -- [ ] SkiaSharp.SKPathMeasure - - [ ] M:SkiaSharp.SKPathMeasure.#ctor - - [ ] M:SkiaSharp.SKPathMeasure.#ctor(SkiaSharp.SKPath,System.Boolean,System.Single) - - [ ] M:SkiaSharp.SKPathMeasure.Dispose(System.Boolean) - - [ ] M:SkiaSharp.SKPathMeasure.DisposeNative - - [ ] M:SkiaSharp.SKPathMeasure.GetMatrix(System.Single,SkiaSharp.SKMatrix@,SkiaSharp.SKPathMeasureMatrixFlags) - - [ ] M:SkiaSharp.SKPathMeasure.GetMatrix(System.Single,SkiaSharp.SKPathMeasureMatrixFlags) - - [ ] M:SkiaSharp.SKPathMeasure.GetPosition(System.Single,SkiaSharp.SKPoint@) - - [ ] M:SkiaSharp.SKPathMeasure.GetPosition(System.Single) - - [ ] M:SkiaSharp.SKPathMeasure.GetPositionAndTangent(System.Single,SkiaSharp.SKPoint@,SkiaSharp.SKPoint@) - - [ ] M:SkiaSharp.SKPathMeasure.GetSegment(System.Single,System.Single,SkiaSharp.SKPath,System.Boolean) - - [ ] M:SkiaSharp.SKPathMeasure.GetSegment(System.Single,System.Single,System.Boolean) - - [ ] M:SkiaSharp.SKPathMeasure.GetTangent(System.Single,SkiaSharp.SKPoint@) - - [ ] M:SkiaSharp.SKPathMeasure.GetTangent(System.Single) - - [ ] M:SkiaSharp.SKPathMeasure.NextContour - - [ ] M:SkiaSharp.SKPathMeasure.SetPath(SkiaSharp.SKPath,System.Boolean) - - [ ] M:SkiaSharp.SKPathMeasure.SetPath(SkiaSharp.SKPath) - - [ ] P:SkiaSharp.SKPathMeasure.IsClosed - - [ ] P:SkiaSharp.SKPathMeasure.Length -- [ ] SkiaSharp.SKPathMeasureMatrixFlags - - [ ] F:SkiaSharp.SKPathMeasureMatrixFlags.GetPosition - - [ ] F:SkiaSharp.SKPathMeasureMatrixFlags.GetPositionAndTangent - - [ ] F:SkiaSharp.SKPathMeasureMatrixFlags.GetTangent -- [ ] SkiaSharp.SKPathOp - - [ ] F:SkiaSharp.SKPathOp.Difference - - [ ] F:SkiaSharp.SKPathOp.Intersect - - [ ] F:SkiaSharp.SKPathOp.ReverseDifference - - [ ] F:SkiaSharp.SKPathOp.Union - - [ ] F:SkiaSharp.SKPathOp.Xor -- [ ] SkiaSharp.SKPathSegmentMask - - [ ] F:SkiaSharp.SKPathSegmentMask.Conic - - [ ] F:SkiaSharp.SKPathSegmentMask.Cubic - - [ ] F:SkiaSharp.SKPathSegmentMask.Line - - [ ] F:SkiaSharp.SKPathSegmentMask.Quad -- [ ] SkiaSharp.SKPathVerb - - [ ] F:SkiaSharp.SKPathVerb.Close - - [ ] F:SkiaSharp.SKPathVerb.Conic - - [ ] F:SkiaSharp.SKPathVerb.Cubic - - [ ] F:SkiaSharp.SKPathVerb.Done - - [ ] F:SkiaSharp.SKPathVerb.Line - - [ ] F:SkiaSharp.SKPathVerb.Move - - [ ] F:SkiaSharp.SKPathVerb.Quad -- [ ] SkiaSharp.SKPicture - - [ ] M:SkiaSharp.SKPicture.Deserialize(SkiaSharp.SKData) - - [ ] M:SkiaSharp.SKPicture.Deserialize(SkiaSharp.SKStream) - - [ ] M:SkiaSharp.SKPicture.Deserialize(System.IntPtr,System.Int32) - - [ ] M:SkiaSharp.SKPicture.Deserialize(System.IO.Stream) - - [ ] M:SkiaSharp.SKPicture.Deserialize(System.ReadOnlySpan{System.Byte}) - - [ ] M:SkiaSharp.SKPicture.Dispose(System.Boolean) - - [ ] M:SkiaSharp.SKPicture.Serialize - - [ ] M:SkiaSharp.SKPicture.Serialize(SkiaSharp.SKWStream) - - [ ] M:SkiaSharp.SKPicture.Serialize(System.IO.Stream) - - [ ] M:SkiaSharp.SKPicture.ToShader - - [ ] M:SkiaSharp.SKPicture.ToShader(SkiaSharp.SKShaderTileMode,SkiaSharp.SKShaderTileMode,SkiaSharp.SKMatrix,SkiaSharp.SKRect) - - [ ] M:SkiaSharp.SKPicture.ToShader(SkiaSharp.SKShaderTileMode,SkiaSharp.SKShaderTileMode,SkiaSharp.SKRect) - - [ ] M:SkiaSharp.SKPicture.ToShader(SkiaSharp.SKShaderTileMode,SkiaSharp.SKShaderTileMode) - - [ ] P:SkiaSharp.SKPicture.CullRect - - [ ] P:SkiaSharp.SKPicture.UniqueId -- [ ] SkiaSharp.SKPictureRecorder - - [ ] M:SkiaSharp.SKPictureRecorder.#ctor - - [ ] M:SkiaSharp.SKPictureRecorder.BeginRecording(SkiaSharp.SKRect) - - [ ] M:SkiaSharp.SKPictureRecorder.Dispose(System.Boolean) - - [ ] M:SkiaSharp.SKPictureRecorder.DisposeNative - - [ ] M:SkiaSharp.SKPictureRecorder.EndRecording - - [ ] M:SkiaSharp.SKPictureRecorder.EndRecordingAsDrawable - - [ ] P:SkiaSharp.SKPictureRecorder.RecordingCanvas -- [ ] SkiaSharp.SKPixelGeometry - - [ ] F:SkiaSharp.SKPixelGeometry.BgrHorizontal - - [ ] F:SkiaSharp.SKPixelGeometry.BgrVertical - - [ ] F:SkiaSharp.SKPixelGeometry.RgbHorizontal - - [ ] F:SkiaSharp.SKPixelGeometry.RgbVertical - - [ ] F:SkiaSharp.SKPixelGeometry.Unknown -- [ ] SkiaSharp.SKPixelSerializer - - [ ] M:SkiaSharp.SKPixelSerializer.#ctor - - [ ] M:SkiaSharp.SKPixelSerializer.Create(System.Func{SkiaSharp.SKPixmap,SkiaSharp.SKData}) - - [ ] M:SkiaSharp.SKPixelSerializer.Create(System.Func{System.IntPtr,System.IntPtr,System.Boolean},System.Func{SkiaSharp.SKPixmap,SkiaSharp.SKData}) - - [ ] M:SkiaSharp.SKPixelSerializer.Dispose(System.Boolean) - - [ ] M:SkiaSharp.SKPixelSerializer.Encode(SkiaSharp.SKPixmap) - - [ ] M:SkiaSharp.SKPixelSerializer.OnEncode(SkiaSharp.SKPixmap) - - [ ] M:SkiaSharp.SKPixelSerializer.OnUseEncodedData(System.IntPtr,System.IntPtr) - - [ ] M:SkiaSharp.SKPixelSerializer.UseEncodedData(System.IntPtr,System.UInt64) -- [ ] SkiaSharp.SKPixmap - - [ ] M:SkiaSharp.SKPixmap.#ctor - - [ ] M:SkiaSharp.SKPixmap.#ctor(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32,SkiaSharp.SKColorTable) - - [ ] M:SkiaSharp.SKPixmap.#ctor(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32) - - [ ] M:SkiaSharp.SKPixmap.#ctor(SkiaSharp.SKImageInfo,System.IntPtr) - - [ ] M:SkiaSharp.SKPixmap.Dispose(System.Boolean) - - [ ] M:SkiaSharp.SKPixmap.DisposeManaged - - [ ] M:SkiaSharp.SKPixmap.DisposeNative - - [ ] M:SkiaSharp.SKPixmap.Encode(SkiaSharp.SKEncodedImageFormat,System.Int32) - - [ ] M:SkiaSharp.SKPixmap.Encode(SkiaSharp.SKJpegEncoderOptions) - - [ ] M:SkiaSharp.SKPixmap.Encode(SkiaSharp.SKPngEncoderOptions) - - [ ] M:SkiaSharp.SKPixmap.Encode(SkiaSharp.SKWebpEncoderOptions) - - [ ] M:SkiaSharp.SKPixmap.Encode(SkiaSharp.SKWStream,SkiaSharp.SKBitmap,SkiaSharp.SKEncodedImageFormat,System.Int32) - - [ ] M:SkiaSharp.SKPixmap.Encode(SkiaSharp.SKWStream,SkiaSharp.SKEncodedImageFormat,System.Int32) - - [ ] M:SkiaSharp.SKPixmap.Encode(SkiaSharp.SKWStream,SkiaSharp.SKJpegEncoderOptions) - - [ ] M:SkiaSharp.SKPixmap.Encode(SkiaSharp.SKWStream,SkiaSharp.SKPixmap,SkiaSharp.SKEncodedImageFormat,System.Int32) - - [ ] M:SkiaSharp.SKPixmap.Encode(SkiaSharp.SKWStream,SkiaSharp.SKPixmap,SkiaSharp.SKJpegEncoderOptions) - - [ ] M:SkiaSharp.SKPixmap.Encode(SkiaSharp.SKWStream,SkiaSharp.SKPixmap,SkiaSharp.SKPngEncoderOptions) - - [ ] M:SkiaSharp.SKPixmap.Encode(SkiaSharp.SKWStream,SkiaSharp.SKPixmap,SkiaSharp.SKWebpEncoderOptions) - - [ ] M:SkiaSharp.SKPixmap.Encode(SkiaSharp.SKWStream,SkiaSharp.SKPngEncoderOptions) - - [ ] M:SkiaSharp.SKPixmap.Encode(SkiaSharp.SKWStream,SkiaSharp.SKWebpEncoderOptions) - - [ ] M:SkiaSharp.SKPixmap.Encode(System.IO.Stream,SkiaSharp.SKEncodedImageFormat,System.Int32) - - [ ] M:SkiaSharp.SKPixmap.Encode(System.IO.Stream,SkiaSharp.SKJpegEncoderOptions) - - [ ] M:SkiaSharp.SKPixmap.Encode(System.IO.Stream,SkiaSharp.SKPngEncoderOptions) - - [ ] M:SkiaSharp.SKPixmap.Encode(System.IO.Stream,SkiaSharp.SKWebpEncoderOptions) - - [ ] M:SkiaSharp.SKPixmap.Erase(SkiaSharp.SKColor,SkiaSharp.SKRectI) - - [ ] M:SkiaSharp.SKPixmap.Erase(SkiaSharp.SKColor) - - [ ] M:SkiaSharp.SKPixmap.Erase(SkiaSharp.SKColorF,SkiaSharp.SKColorSpace,SkiaSharp.SKRectI) - - [ ] M:SkiaSharp.SKPixmap.Erase(SkiaSharp.SKColorF,SkiaSharp.SKRectI) - - [ ] M:SkiaSharp.SKPixmap.Erase(SkiaSharp.SKColorF) - - [ ] M:SkiaSharp.SKPixmap.ExtractSubset(SkiaSharp.SKPixmap,SkiaSharp.SKRectI) - - [ ] M:SkiaSharp.SKPixmap.ExtractSubset(SkiaSharp.SKRectI) - - [ ] M:SkiaSharp.SKPixmap.GetPixelColor(System.Int32,System.Int32) - - [ ] M:SkiaSharp.SKPixmap.GetPixels - - [ ] M:SkiaSharp.SKPixmap.GetPixels(System.Int32,System.Int32) - - [ ] M:SkiaSharp.SKPixmap.GetPixelSpan - - [ ] M:SkiaSharp.SKPixmap.GetPixelSpan``1 - - [ ] M:SkiaSharp.SKPixmap.ReadPixels(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32,System.Int32,System.Int32,SkiaSharp.SKTransferFunctionBehavior) - - [ ] M:SkiaSharp.SKPixmap.ReadPixels(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32,System.Int32,System.Int32) - - [ ] M:SkiaSharp.SKPixmap.ReadPixels(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32) - - [ ] M:SkiaSharp.SKPixmap.ReadPixels(SkiaSharp.SKPixmap,System.Int32,System.Int32) - - [ ] M:SkiaSharp.SKPixmap.ReadPixels(SkiaSharp.SKPixmap) - - [ ] M:SkiaSharp.SKPixmap.Reset - - [ ] M:SkiaSharp.SKPixmap.Reset(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32,SkiaSharp.SKColorTable) - - [ ] M:SkiaSharp.SKPixmap.Reset(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32) - - [ ] M:SkiaSharp.SKPixmap.Resize(SkiaSharp.SKPixmap,SkiaSharp.SKPixmap,SkiaSharp.SKBitmapResizeMethod) - - [ ] M:SkiaSharp.SKPixmap.ScalePixels(SkiaSharp.SKPixmap,SkiaSharp.SKFilterQuality) - - [ ] M:SkiaSharp.SKPixmap.WithAlphaType(SkiaSharp.SKAlphaType) - - [ ] M:SkiaSharp.SKPixmap.WithColorSpace(SkiaSharp.SKColorSpace) - - [ ] M:SkiaSharp.SKPixmap.WithColorType(SkiaSharp.SKColorType) - - [ ] P:SkiaSharp.SKPixmap.AlphaType - - [ ] P:SkiaSharp.SKPixmap.BytesPerPixel - - [ ] P:SkiaSharp.SKPixmap.BytesSize - - [ ] P:SkiaSharp.SKPixmap.ColorSpace - - [ ] P:SkiaSharp.SKPixmap.ColorTable - - [ ] P:SkiaSharp.SKPixmap.ColorType - - [ ] P:SkiaSharp.SKPixmap.Height - - [ ] P:SkiaSharp.SKPixmap.Info - - [ ] P:SkiaSharp.SKPixmap.Rect - - [ ] P:SkiaSharp.SKPixmap.RowBytes - - [ ] P:SkiaSharp.SKPixmap.Size - - [ ] P:SkiaSharp.SKPixmap.Width -- [ ] SkiaSharp.SKPMColor - - [ ] M:SkiaSharp.SKPMColor.#ctor(System.UInt32) - - [ ] M:SkiaSharp.SKPMColor.Equals(SkiaSharp.SKPMColor) - - [ ] M:SkiaSharp.SKPMColor.Equals(System.Object) - - [ ] M:SkiaSharp.SKPMColor.GetHashCode - - [ ] M:SkiaSharp.SKPMColor.op_Equality(SkiaSharp.SKPMColor,SkiaSharp.SKPMColor) - - [ ] M:SkiaSharp.SKPMColor.op_Explicit(SkiaSharp.SKColor)~SkiaSharp.SKPMColor - - [ ] M:SkiaSharp.SKPMColor.op_Explicit(SkiaSharp.SKPMColor)~SkiaSharp.SKColor - - [ ] M:SkiaSharp.SKPMColor.op_Explicit(SkiaSharp.SKPMColor)~System.UInt32 - - [ ] M:SkiaSharp.SKPMColor.op_Implicit(System.UInt32)~SkiaSharp.SKPMColor - - [ ] M:SkiaSharp.SKPMColor.op_Inequality(SkiaSharp.SKPMColor,SkiaSharp.SKPMColor) - - [ ] M:SkiaSharp.SKPMColor.PreMultiply(SkiaSharp.SKColor) - - [ ] M:SkiaSharp.SKPMColor.PreMultiply(SkiaSharp.SKColor[]) - - [ ] M:SkiaSharp.SKPMColor.ToString - - [ ] M:SkiaSharp.SKPMColor.UnPreMultiply(SkiaSharp.SKPMColor) - - [ ] M:SkiaSharp.SKPMColor.UnPreMultiply(SkiaSharp.SKPMColor[]) - - [ ] P:SkiaSharp.SKPMColor.Alpha - - [ ] P:SkiaSharp.SKPMColor.Blue - - [ ] P:SkiaSharp.SKPMColor.Green - - [ ] P:SkiaSharp.SKPMColor.Red -- [ ] SkiaSharp.SKPngEncoderFilterFlags - - [ ] F:SkiaSharp.SKPngEncoderFilterFlags.AllFilters - - [ ] F:SkiaSharp.SKPngEncoderFilterFlags.Avg - - [ ] F:SkiaSharp.SKPngEncoderFilterFlags.NoFilters - - [ ] F:SkiaSharp.SKPngEncoderFilterFlags.None - - [ ] F:SkiaSharp.SKPngEncoderFilterFlags.Paeth - - [ ] F:SkiaSharp.SKPngEncoderFilterFlags.Sub - - [ ] F:SkiaSharp.SKPngEncoderFilterFlags.Up -- [ ] SkiaSharp.SKPngEncoderOptions - - [ ] F:SkiaSharp.SKPngEncoderOptions.Default - - [ ] M:SkiaSharp.SKPngEncoderOptions.#ctor(SkiaSharp.SKPngEncoderFilterFlags,System.Int32,SkiaSharp.SKTransferFunctionBehavior) - - [ ] M:SkiaSharp.SKPngEncoderOptions.#ctor(SkiaSharp.SKPngEncoderFilterFlags,System.Int32) - - [ ] M:SkiaSharp.SKPngEncoderOptions.Equals(SkiaSharp.SKPngEncoderOptions) - - [ ] M:SkiaSharp.SKPngEncoderOptions.Equals(System.Object) - - [ ] M:SkiaSharp.SKPngEncoderOptions.GetHashCode - - [ ] M:SkiaSharp.SKPngEncoderOptions.op_Equality(SkiaSharp.SKPngEncoderOptions,SkiaSharp.SKPngEncoderOptions) - - [ ] M:SkiaSharp.SKPngEncoderOptions.op_Inequality(SkiaSharp.SKPngEncoderOptions,SkiaSharp.SKPngEncoderOptions) - - [ ] P:SkiaSharp.SKPngEncoderOptions.FilterFlags - - [ ] P:SkiaSharp.SKPngEncoderOptions.UnpremulBehavior - - [ ] P:SkiaSharp.SKPngEncoderOptions.ZLibLevel -- [ ] SkiaSharp.SKPoint - - [ ] F:SkiaSharp.SKPoint.Empty - - [ ] M:SkiaSharp.SKPoint.#ctor(System.Single,System.Single) - - [ ] M:SkiaSharp.SKPoint.Add(SkiaSharp.SKPoint,SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.SKPoint.Add(SkiaSharp.SKPoint,SkiaSharp.SKPointI) - - [ ] M:SkiaSharp.SKPoint.Add(SkiaSharp.SKPoint,SkiaSharp.SKSize) - - [ ] M:SkiaSharp.SKPoint.Add(SkiaSharp.SKPoint,SkiaSharp.SKSizeI) - - [ ] M:SkiaSharp.SKPoint.Distance(SkiaSharp.SKPoint,SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.SKPoint.DistanceSquared(SkiaSharp.SKPoint,SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.SKPoint.Equals(SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.SKPoint.Equals(System.Object) - - [ ] M:SkiaSharp.SKPoint.GetHashCode - - [ ] M:SkiaSharp.SKPoint.Normalize(SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.SKPoint.Offset(SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.SKPoint.Offset(System.Single,System.Single) - - [ ] M:SkiaSharp.SKPoint.op_Addition(SkiaSharp.SKPoint,SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.SKPoint.op_Addition(SkiaSharp.SKPoint,SkiaSharp.SKPointI) - - [ ] M:SkiaSharp.SKPoint.op_Addition(SkiaSharp.SKPoint,SkiaSharp.SKSize) - - [ ] M:SkiaSharp.SKPoint.op_Addition(SkiaSharp.SKPoint,SkiaSharp.SKSizeI) - - [ ] M:SkiaSharp.SKPoint.op_Equality(SkiaSharp.SKPoint,SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.SKPoint.op_Inequality(SkiaSharp.SKPoint,SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.SKPoint.op_Subtraction(SkiaSharp.SKPoint,SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.SKPoint.op_Subtraction(SkiaSharp.SKPoint,SkiaSharp.SKPointI) - - [ ] M:SkiaSharp.SKPoint.op_Subtraction(SkiaSharp.SKPoint,SkiaSharp.SKSize) - - [ ] M:SkiaSharp.SKPoint.op_Subtraction(SkiaSharp.SKPoint,SkiaSharp.SKSizeI) - - [ ] M:SkiaSharp.SKPoint.Reflect(SkiaSharp.SKPoint,SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.SKPoint.Subtract(SkiaSharp.SKPoint,SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.SKPoint.Subtract(SkiaSharp.SKPoint,SkiaSharp.SKPointI) - - [ ] M:SkiaSharp.SKPoint.Subtract(SkiaSharp.SKPoint,SkiaSharp.SKSize) - - [ ] M:SkiaSharp.SKPoint.Subtract(SkiaSharp.SKPoint,SkiaSharp.SKSizeI) - - [ ] M:SkiaSharp.SKPoint.ToString - - [ ] P:SkiaSharp.SKPoint.IsEmpty - - [ ] P:SkiaSharp.SKPoint.Length - - [ ] P:SkiaSharp.SKPoint.LengthSquared - - [ ] P:SkiaSharp.SKPoint.X - - [ ] P:SkiaSharp.SKPoint.Y -- [ ] SkiaSharp.SKPoint3 - - [ ] F:SkiaSharp.SKPoint3.Empty - - [ ] M:SkiaSharp.SKPoint3.#ctor(System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKPoint3.Add(SkiaSharp.SKPoint3,SkiaSharp.SKPoint3) - - [ ] M:SkiaSharp.SKPoint3.Equals(SkiaSharp.SKPoint3) - - [ ] M:SkiaSharp.SKPoint3.Equals(System.Object) - - [ ] M:SkiaSharp.SKPoint3.GetHashCode - - [ ] M:SkiaSharp.SKPoint3.op_Addition(SkiaSharp.SKPoint3,SkiaSharp.SKPoint3) - - [ ] M:SkiaSharp.SKPoint3.op_Equality(SkiaSharp.SKPoint3,SkiaSharp.SKPoint3) - - [ ] M:SkiaSharp.SKPoint3.op_Inequality(SkiaSharp.SKPoint3,SkiaSharp.SKPoint3) - - [ ] M:SkiaSharp.SKPoint3.op_Subtraction(SkiaSharp.SKPoint3,SkiaSharp.SKPoint3) - - [ ] M:SkiaSharp.SKPoint3.Subtract(SkiaSharp.SKPoint3,SkiaSharp.SKPoint3) - - [ ] M:SkiaSharp.SKPoint3.ToString - - [ ] P:SkiaSharp.SKPoint3.IsEmpty - - [ ] P:SkiaSharp.SKPoint3.X - - [ ] P:SkiaSharp.SKPoint3.Y - - [ ] P:SkiaSharp.SKPoint3.Z -- [ ] SkiaSharp.SKPointI - - [ ] F:SkiaSharp.SKPointI.Empty - - [ ] M:SkiaSharp.SKPointI.#ctor(SkiaSharp.SKSizeI) - - [ ] M:SkiaSharp.SKPointI.#ctor(System.Int32,System.Int32) - - [ ] M:SkiaSharp.SKPointI.Add(SkiaSharp.SKPointI,SkiaSharp.SKPointI) - - [ ] M:SkiaSharp.SKPointI.Add(SkiaSharp.SKPointI,SkiaSharp.SKSizeI) - - [ ] M:SkiaSharp.SKPointI.Ceiling(SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.SKPointI.Distance(SkiaSharp.SKPointI,SkiaSharp.SKPointI) - - [ ] M:SkiaSharp.SKPointI.DistanceSquared(SkiaSharp.SKPointI,SkiaSharp.SKPointI) - - [ ] M:SkiaSharp.SKPointI.Equals(SkiaSharp.SKPointI) - - [ ] M:SkiaSharp.SKPointI.Equals(System.Object) - - [ ] M:SkiaSharp.SKPointI.GetHashCode - - [ ] M:SkiaSharp.SKPointI.Normalize(SkiaSharp.SKPointI) - - [ ] M:SkiaSharp.SKPointI.Offset(SkiaSharp.SKPointI) - - [ ] M:SkiaSharp.SKPointI.Offset(System.Int32,System.Int32) - - [ ] M:SkiaSharp.SKPointI.op_Addition(SkiaSharp.SKPointI,SkiaSharp.SKPointI) - - [ ] M:SkiaSharp.SKPointI.op_Addition(SkiaSharp.SKPointI,SkiaSharp.SKSizeI) - - [ ] M:SkiaSharp.SKPointI.op_Equality(SkiaSharp.SKPointI,SkiaSharp.SKPointI) - - [ ] M:SkiaSharp.SKPointI.op_Explicit(SkiaSharp.SKPointI)~SkiaSharp.SKSizeI - - [ ] M:SkiaSharp.SKPointI.op_Implicit(SkiaSharp.SKPointI)~SkiaSharp.SKPoint - - [ ] M:SkiaSharp.SKPointI.op_Inequality(SkiaSharp.SKPointI,SkiaSharp.SKPointI) - - [ ] M:SkiaSharp.SKPointI.op_Subtraction(SkiaSharp.SKPointI,SkiaSharp.SKPointI) - - [ ] M:SkiaSharp.SKPointI.op_Subtraction(SkiaSharp.SKPointI,SkiaSharp.SKSizeI) - - [ ] M:SkiaSharp.SKPointI.Reflect(SkiaSharp.SKPointI,SkiaSharp.SKPointI) - - [ ] M:SkiaSharp.SKPointI.Round(SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.SKPointI.Subtract(SkiaSharp.SKPointI,SkiaSharp.SKPointI) - - [ ] M:SkiaSharp.SKPointI.Subtract(SkiaSharp.SKPointI,SkiaSharp.SKSizeI) - - [ ] M:SkiaSharp.SKPointI.ToString - - [ ] M:SkiaSharp.SKPointI.Truncate(SkiaSharp.SKPoint) - - [ ] P:SkiaSharp.SKPointI.IsEmpty - - [ ] P:SkiaSharp.SKPointI.Length - - [ ] P:SkiaSharp.SKPointI.LengthSquared - - [ ] P:SkiaSharp.SKPointI.X - - [ ] P:SkiaSharp.SKPointI.Y -- [ ] SkiaSharp.SKPointMode - - [ ] F:SkiaSharp.SKPointMode.Lines - - [ ] F:SkiaSharp.SKPointMode.Points - - [ ] F:SkiaSharp.SKPointMode.Polygon -- [ ] SkiaSharp.SKPositionedRunBuffer - - [ ] M:SkiaSharp.SKPositionedRunBuffer.GetPositionSpan - - [ ] M:SkiaSharp.SKPositionedRunBuffer.SetPositions(System.ReadOnlySpan{SkiaSharp.SKPoint}) -- [ ] SkiaSharp.SKRect - - [ ] F:SkiaSharp.SKRect.Empty - - [ ] M:SkiaSharp.SKRect.#ctor(System.Single,System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKRect.AspectFill(SkiaSharp.SKSize) - - [ ] M:SkiaSharp.SKRect.AspectFit(SkiaSharp.SKSize) - - [ ] M:SkiaSharp.SKRect.Contains(SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.SKRect.Contains(SkiaSharp.SKRect) - - [ ] M:SkiaSharp.SKRect.Contains(System.Single,System.Single) - - [ ] M:SkiaSharp.SKRect.Create(SkiaSharp.SKPoint,SkiaSharp.SKSize) - - [ ] M:SkiaSharp.SKRect.Create(SkiaSharp.SKSize) - - [ ] M:SkiaSharp.SKRect.Create(System.Single,System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKRect.Create(System.Single,System.Single) - - [ ] M:SkiaSharp.SKRect.Equals(SkiaSharp.SKRect) - - [ ] M:SkiaSharp.SKRect.Equals(System.Object) - - [ ] M:SkiaSharp.SKRect.GetHashCode - - [ ] M:SkiaSharp.SKRect.Inflate(SkiaSharp.SKRect,System.Single,System.Single) - - [ ] M:SkiaSharp.SKRect.Inflate(SkiaSharp.SKSize) - - [ ] M:SkiaSharp.SKRect.Inflate(System.Single,System.Single) - - [ ] M:SkiaSharp.SKRect.Intersect(SkiaSharp.SKRect,SkiaSharp.SKRect) - - [ ] M:SkiaSharp.SKRect.Intersect(SkiaSharp.SKRect) - - [ ] M:SkiaSharp.SKRect.IntersectsWith(SkiaSharp.SKRect) - - [ ] M:SkiaSharp.SKRect.IntersectsWithInclusive(SkiaSharp.SKRect) - - [ ] M:SkiaSharp.SKRect.Offset(SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.SKRect.Offset(System.Single,System.Single) - - [ ] M:SkiaSharp.SKRect.op_Equality(SkiaSharp.SKRect,SkiaSharp.SKRect) - - [ ] M:SkiaSharp.SKRect.op_Implicit(SkiaSharp.SKRectI)~SkiaSharp.SKRect - - [ ] M:SkiaSharp.SKRect.op_Inequality(SkiaSharp.SKRect,SkiaSharp.SKRect) - - [ ] M:SkiaSharp.SKRect.ToString - - [ ] M:SkiaSharp.SKRect.Union(SkiaSharp.SKRect,SkiaSharp.SKRect) - - [ ] M:SkiaSharp.SKRect.Union(SkiaSharp.SKRect) - - [ ] P:SkiaSharp.SKRect.Bottom - - [ ] P:SkiaSharp.SKRect.Height - - [ ] P:SkiaSharp.SKRect.IsEmpty - - [ ] P:SkiaSharp.SKRect.Left - - [ ] P:SkiaSharp.SKRect.Location - - [ ] P:SkiaSharp.SKRect.MidX - - [ ] P:SkiaSharp.SKRect.MidY - - [ ] P:SkiaSharp.SKRect.Right - - [ ] P:SkiaSharp.SKRect.Size - - [ ] P:SkiaSharp.SKRect.Standardized - - [ ] P:SkiaSharp.SKRect.Top - - [ ] P:SkiaSharp.SKRect.Width -- [ ] SkiaSharp.SKRectI - - [ ] F:SkiaSharp.SKRectI.Empty - - [ ] M:SkiaSharp.SKRectI.#ctor(System.Int32,System.Int32,System.Int32,System.Int32) - - [ ] M:SkiaSharp.SKRectI.AspectFill(SkiaSharp.SKSizeI) - - [ ] M:SkiaSharp.SKRectI.AspectFit(SkiaSharp.SKSizeI) - - [ ] M:SkiaSharp.SKRectI.Ceiling(SkiaSharp.SKRect,System.Boolean) - - [ ] M:SkiaSharp.SKRectI.Ceiling(SkiaSharp.SKRect) - - [ ] M:SkiaSharp.SKRectI.Contains(SkiaSharp.SKPointI) - - [ ] M:SkiaSharp.SKRectI.Contains(SkiaSharp.SKRectI) - - [ ] M:SkiaSharp.SKRectI.Contains(System.Int32,System.Int32) - - [ ] M:SkiaSharp.SKRectI.Create(SkiaSharp.SKPointI,SkiaSharp.SKSizeI) - - [ ] M:SkiaSharp.SKRectI.Create(SkiaSharp.SKSizeI) - - [ ] M:SkiaSharp.SKRectI.Create(System.Int32,System.Int32,System.Int32,System.Int32) - - [ ] M:SkiaSharp.SKRectI.Create(System.Int32,System.Int32) - - [ ] M:SkiaSharp.SKRectI.Equals(SkiaSharp.SKRectI) - - [ ] M:SkiaSharp.SKRectI.Equals(System.Object) - - [ ] M:SkiaSharp.SKRectI.Floor(SkiaSharp.SKRect,System.Boolean) - - [ ] M:SkiaSharp.SKRectI.Floor(SkiaSharp.SKRect) - - [ ] M:SkiaSharp.SKRectI.GetHashCode - - [ ] M:SkiaSharp.SKRectI.Inflate(SkiaSharp.SKRectI,System.Int32,System.Int32) - - [ ] M:SkiaSharp.SKRectI.Inflate(SkiaSharp.SKSizeI) - - [ ] M:SkiaSharp.SKRectI.Inflate(System.Int32,System.Int32) - - [ ] M:SkiaSharp.SKRectI.Intersect(SkiaSharp.SKRectI,SkiaSharp.SKRectI) - - [ ] M:SkiaSharp.SKRectI.Intersect(SkiaSharp.SKRectI) - - [ ] M:SkiaSharp.SKRectI.IntersectsWith(SkiaSharp.SKRectI) - - [ ] M:SkiaSharp.SKRectI.IntersectsWithInclusive(SkiaSharp.SKRectI) - - [ ] M:SkiaSharp.SKRectI.Offset(SkiaSharp.SKPointI) - - [ ] M:SkiaSharp.SKRectI.Offset(System.Int32,System.Int32) - - [ ] M:SkiaSharp.SKRectI.op_Equality(SkiaSharp.SKRectI,SkiaSharp.SKRectI) - - [ ] M:SkiaSharp.SKRectI.op_Inequality(SkiaSharp.SKRectI,SkiaSharp.SKRectI) - - [ ] M:SkiaSharp.SKRectI.Round(SkiaSharp.SKRect) - - [ ] M:SkiaSharp.SKRectI.ToString - - [ ] M:SkiaSharp.SKRectI.Truncate(SkiaSharp.SKRect) - - [ ] M:SkiaSharp.SKRectI.Union(SkiaSharp.SKRectI,SkiaSharp.SKRectI) - - [ ] M:SkiaSharp.SKRectI.Union(SkiaSharp.SKRectI) - - [ ] P:SkiaSharp.SKRectI.Bottom - - [ ] P:SkiaSharp.SKRectI.Height - - [ ] P:SkiaSharp.SKRectI.IsEmpty - - [ ] P:SkiaSharp.SKRectI.Left - - [ ] P:SkiaSharp.SKRectI.Location - - [ ] P:SkiaSharp.SKRectI.MidX - - [ ] P:SkiaSharp.SKRectI.MidY - - [ ] P:SkiaSharp.SKRectI.Right - - [ ] P:SkiaSharp.SKRectI.Size - - [ ] P:SkiaSharp.SKRectI.Standardized - - [ ] P:SkiaSharp.SKRectI.Top - - [ ] P:SkiaSharp.SKRectI.Width -- [ ] SkiaSharp.SKRegion - - [ ] M:SkiaSharp.SKRegion.#ctor - - [ ] M:SkiaSharp.SKRegion.#ctor(SkiaSharp.SKPath) - - [ ] M:SkiaSharp.SKRegion.#ctor(SkiaSharp.SKRectI) - - [ ] M:SkiaSharp.SKRegion.#ctor(SkiaSharp.SKRegion) - - [ ] M:SkiaSharp.SKRegion.Contains(SkiaSharp.SKPath) - - [ ] M:SkiaSharp.SKRegion.Contains(SkiaSharp.SKPointI) - - [ ] M:SkiaSharp.SKRegion.Contains(SkiaSharp.SKRectI) - - [ ] M:SkiaSharp.SKRegion.Contains(SkiaSharp.SKRegion) - - [ ] M:SkiaSharp.SKRegion.Contains(System.Int32,System.Int32) - - [ ] M:SkiaSharp.SKRegion.CreateClipIterator(SkiaSharp.SKRectI) - - [ ] M:SkiaSharp.SKRegion.CreateRectIterator - - [ ] M:SkiaSharp.SKRegion.CreateSpanIterator(System.Int32,System.Int32,System.Int32) - - [ ] M:SkiaSharp.SKRegion.Dispose(System.Boolean) - - [ ] M:SkiaSharp.SKRegion.DisposeNative - - [ ] M:SkiaSharp.SKRegion.GetBoundaryPath - - [ ] M:SkiaSharp.SKRegion.Intersects(SkiaSharp.SKPath) - - [ ] M:SkiaSharp.SKRegion.Intersects(SkiaSharp.SKRectI) - - [ ] M:SkiaSharp.SKRegion.Intersects(SkiaSharp.SKRegion) - - [ ] M:SkiaSharp.SKRegion.Op(SkiaSharp.SKPath,SkiaSharp.SKRegionOperation) - - [ ] M:SkiaSharp.SKRegion.Op(SkiaSharp.SKRectI,SkiaSharp.SKRegionOperation) - - [ ] M:SkiaSharp.SKRegion.Op(SkiaSharp.SKRegion,SkiaSharp.SKRegionOperation) - - [ ] M:SkiaSharp.SKRegion.Op(System.Int32,System.Int32,System.Int32,System.Int32,SkiaSharp.SKRegionOperation) - - [ ] M:SkiaSharp.SKRegion.QuickContains(SkiaSharp.SKRectI) - - [ ] M:SkiaSharp.SKRegion.QuickReject(SkiaSharp.SKPath) - - [ ] M:SkiaSharp.SKRegion.QuickReject(SkiaSharp.SKRectI) - - [ ] M:SkiaSharp.SKRegion.QuickReject(SkiaSharp.SKRegion) - - [ ] M:SkiaSharp.SKRegion.SetEmpty - - [ ] M:SkiaSharp.SKRegion.SetPath(SkiaSharp.SKPath,SkiaSharp.SKRegion) - - [ ] M:SkiaSharp.SKRegion.SetPath(SkiaSharp.SKPath) - - [ ] M:SkiaSharp.SKRegion.SetRect(SkiaSharp.SKRectI) - - [ ] M:SkiaSharp.SKRegion.SetRects(SkiaSharp.SKRectI[]) - - [ ] M:SkiaSharp.SKRegion.SetRegion(SkiaSharp.SKRegion) - - [ ] M:SkiaSharp.SKRegion.Translate(System.Int32,System.Int32) - - [ ] P:SkiaSharp.SKRegion.Bounds - - [ ] P:SkiaSharp.SKRegion.IsComplex - - [ ] P:SkiaSharp.SKRegion.IsEmpty - - [ ] P:SkiaSharp.SKRegion.IsRect -- [ ] SkiaSharp.SKRegion.ClipIterator - - [ ] M:SkiaSharp.SKRegion.ClipIterator.DisposeNative - - [ ] M:SkiaSharp.SKRegion.ClipIterator.Next(SkiaSharp.SKRectI@) -- [ ] SkiaSharp.SKRegion.RectIterator - - [ ] M:SkiaSharp.SKRegion.RectIterator.DisposeNative - - [ ] M:SkiaSharp.SKRegion.RectIterator.Next(SkiaSharp.SKRectI@) -- [ ] SkiaSharp.SKRegion.SpanIterator - - [ ] M:SkiaSharp.SKRegion.SpanIterator.DisposeNative - - [ ] M:SkiaSharp.SKRegion.SpanIterator.Next(System.Int32@,System.Int32@) -- [ ] SkiaSharp.SKRegionOperation - - [ ] F:SkiaSharp.SKRegionOperation.Difference - - [ ] F:SkiaSharp.SKRegionOperation.Intersect - - [ ] F:SkiaSharp.SKRegionOperation.Replace - - [ ] F:SkiaSharp.SKRegionOperation.ReverseDifference - - [ ] F:SkiaSharp.SKRegionOperation.Union - - [ ] F:SkiaSharp.SKRegionOperation.XOR -- [ ] SkiaSharp.SKRotationScaleMatrix - - [ ] F:SkiaSharp.SKRotationScaleMatrix.Empty - - [ ] F:SkiaSharp.SKRotationScaleMatrix.Identity - - [ ] M:SkiaSharp.SKRotationScaleMatrix.#ctor(System.Single,System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKRotationScaleMatrix.Create(System.Single,System.Single,System.Single,System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKRotationScaleMatrix.CreateDegrees(System.Single,System.Single,System.Single,System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKRotationScaleMatrix.CreateIdentity - - [ ] M:SkiaSharp.SKRotationScaleMatrix.CreateRotation(System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKRotationScaleMatrix.CreateRotationDegrees(System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKRotationScaleMatrix.CreateScale(System.Single) - - [ ] M:SkiaSharp.SKRotationScaleMatrix.CreateTranslation(System.Single,System.Single) - - [ ] M:SkiaSharp.SKRotationScaleMatrix.Equals(SkiaSharp.SKRotationScaleMatrix) - - [ ] M:SkiaSharp.SKRotationScaleMatrix.Equals(System.Object) - - [ ] M:SkiaSharp.SKRotationScaleMatrix.GetHashCode - - [ ] M:SkiaSharp.SKRotationScaleMatrix.op_Equality(SkiaSharp.SKRotationScaleMatrix,SkiaSharp.SKRotationScaleMatrix) - - [ ] M:SkiaSharp.SKRotationScaleMatrix.op_Inequality(SkiaSharp.SKRotationScaleMatrix,SkiaSharp.SKRotationScaleMatrix) - - [ ] M:SkiaSharp.SKRotationScaleMatrix.ToMatrix - - [ ] P:SkiaSharp.SKRotationScaleMatrix.SCos - - [ ] P:SkiaSharp.SKRotationScaleMatrix.SSin - - [ ] P:SkiaSharp.SKRotationScaleMatrix.TX - - [ ] P:SkiaSharp.SKRotationScaleMatrix.TY -- [ ] SkiaSharp.SKRotationScaleRunBuffer - - [ ] M:SkiaSharp.SKRotationScaleRunBuffer.GetRotationScaleSpan - - [ ] M:SkiaSharp.SKRotationScaleRunBuffer.SetRotationScale(System.ReadOnlySpan{SkiaSharp.SKRotationScaleMatrix}) -- [ ] SkiaSharp.SKRoundRect - - [ ] M:SkiaSharp.SKRoundRect.#ctor - - [ ] M:SkiaSharp.SKRoundRect.#ctor(SkiaSharp.SKRect,System.Single,System.Single) - - [ ] M:SkiaSharp.SKRoundRect.#ctor(SkiaSharp.SKRect,System.Single) - - [ ] M:SkiaSharp.SKRoundRect.#ctor(SkiaSharp.SKRect) - - [ ] M:SkiaSharp.SKRoundRect.#ctor(SkiaSharp.SKRoundRect) - - [ ] M:SkiaSharp.SKRoundRect.CheckAllCornersCircular(System.Single) - - [ ] M:SkiaSharp.SKRoundRect.Contains(SkiaSharp.SKRect) - - [ ] M:SkiaSharp.SKRoundRect.Deflate(SkiaSharp.SKSize) - - [ ] M:SkiaSharp.SKRoundRect.Deflate(System.Single,System.Single) - - [ ] M:SkiaSharp.SKRoundRect.Dispose(System.Boolean) - - [ ] M:SkiaSharp.SKRoundRect.DisposeNative - - [ ] M:SkiaSharp.SKRoundRect.GetRadii(SkiaSharp.SKRoundRectCorner) - - [ ] M:SkiaSharp.SKRoundRect.Inflate(SkiaSharp.SKSize) - - [ ] M:SkiaSharp.SKRoundRect.Inflate(System.Single,System.Single) - - [ ] M:SkiaSharp.SKRoundRect.Offset(SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.SKRoundRect.Offset(System.Single,System.Single) - - [ ] M:SkiaSharp.SKRoundRect.SetEmpty - - [ ] M:SkiaSharp.SKRoundRect.SetNinePatch(SkiaSharp.SKRect,System.Single,System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKRoundRect.SetOval(SkiaSharp.SKRect) - - [ ] M:SkiaSharp.SKRoundRect.SetRect(SkiaSharp.SKRect,System.Single,System.Single) - - [ ] M:SkiaSharp.SKRoundRect.SetRect(SkiaSharp.SKRect) - - [ ] M:SkiaSharp.SKRoundRect.SetRectRadii(SkiaSharp.SKRect,SkiaSharp.SKPoint[]) - - [ ] M:SkiaSharp.SKRoundRect.Transform(SkiaSharp.SKMatrix) - - [ ] M:SkiaSharp.SKRoundRect.TryTransform(SkiaSharp.SKMatrix,SkiaSharp.SKRoundRect@) - - [ ] P:SkiaSharp.SKRoundRect.AllCornersCircular - - [ ] P:SkiaSharp.SKRoundRect.Height - - [ ] P:SkiaSharp.SKRoundRect.IsValid - - [ ] P:SkiaSharp.SKRoundRect.Radii - - [ ] P:SkiaSharp.SKRoundRect.Rect - - [ ] P:SkiaSharp.SKRoundRect.Type - - [ ] P:SkiaSharp.SKRoundRect.Width -- [ ] SkiaSharp.SKRoundRectCorner - - [ ] F:SkiaSharp.SKRoundRectCorner.LowerLeft - - [ ] F:SkiaSharp.SKRoundRectCorner.LowerRight - - [ ] F:SkiaSharp.SKRoundRectCorner.UpperLeft - - [ ] F:SkiaSharp.SKRoundRectCorner.UpperRight -- [ ] SkiaSharp.SKRoundRectType - - [ ] F:SkiaSharp.SKRoundRectType.Complex - - [ ] F:SkiaSharp.SKRoundRectType.Empty - - [ ] F:SkiaSharp.SKRoundRectType.NinePatch - - [ ] F:SkiaSharp.SKRoundRectType.Oval - - [ ] F:SkiaSharp.SKRoundRectType.Rect - - [ ] F:SkiaSharp.SKRoundRectType.Simple -- [ ] SkiaSharp.SKRunBuffer - - [ ] M:SkiaSharp.SKRunBuffer.GetClusterSpan - - [ ] M:SkiaSharp.SKRunBuffer.GetGlyphSpan - - [ ] M:SkiaSharp.SKRunBuffer.GetTextSpan - - [ ] M:SkiaSharp.SKRunBuffer.SetClusters(System.ReadOnlySpan{System.UInt32}) - - [ ] M:SkiaSharp.SKRunBuffer.SetGlyphs(System.ReadOnlySpan{System.UInt16}) - - [ ] M:SkiaSharp.SKRunBuffer.SetText(System.ReadOnlySpan{System.Byte}) - - [ ] P:SkiaSharp.SKRunBuffer.Size - - [ ] P:SkiaSharp.SKRunBuffer.TextSize -- [ ] SkiaSharp.SKRuntimeEffect - - [ ] M:SkiaSharp.SKRuntimeEffect.Create(System.String,System.String@) - - [ ] M:SkiaSharp.SKRuntimeEffect.ToColorFilter - - [ ] M:SkiaSharp.SKRuntimeEffect.ToColorFilter(SkiaSharp.SKRuntimeEffectUniforms,SkiaSharp.SKRuntimeEffectChildren) - - [ ] M:SkiaSharp.SKRuntimeEffect.ToColorFilter(SkiaSharp.SKRuntimeEffectUniforms) - - [ ] M:SkiaSharp.SKRuntimeEffect.ToShader(System.Boolean,SkiaSharp.SKRuntimeEffectUniforms,SkiaSharp.SKRuntimeEffectChildren,SkiaSharp.SKMatrix) - - [ ] M:SkiaSharp.SKRuntimeEffect.ToShader(System.Boolean,SkiaSharp.SKRuntimeEffectUniforms,SkiaSharp.SKRuntimeEffectChildren) - - [ ] M:SkiaSharp.SKRuntimeEffect.ToShader(System.Boolean,SkiaSharp.SKRuntimeEffectUniforms) - - [ ] M:SkiaSharp.SKRuntimeEffect.ToShader(System.Boolean) - - [ ] P:SkiaSharp.SKRuntimeEffect.Children - - [ ] P:SkiaSharp.SKRuntimeEffect.Uniforms - - [ ] P:SkiaSharp.SKRuntimeEffect.UniformSize -- [ ] SkiaSharp.SKRuntimeEffectChildren - - [ ] M:SkiaSharp.SKRuntimeEffectChildren.#ctor(SkiaSharp.SKRuntimeEffect) - - [ ] M:SkiaSharp.SKRuntimeEffectChildren.Add(System.String,SkiaSharp.SKShader) - - [ ] M:SkiaSharp.SKRuntimeEffectChildren.Contains(System.String) - - [ ] M:SkiaSharp.SKRuntimeEffectChildren.GetEnumerator - - [ ] M:SkiaSharp.SKRuntimeEffectChildren.Reset - - [ ] M:SkiaSharp.SKRuntimeEffectChildren.System#Collections#IEnumerable#GetEnumerator - - [ ] M:SkiaSharp.SKRuntimeEffectChildren.ToArray - - [ ] P:SkiaSharp.SKRuntimeEffectChildren.Count - - [ ] P:SkiaSharp.SKRuntimeEffectChildren.Item(System.String) - - [ ] P:SkiaSharp.SKRuntimeEffectChildren.Names -- [ ] SkiaSharp.SKRuntimeEffectUniform - - [ ] M:SkiaSharp.SKRuntimeEffectUniform.op_Implicit(SkiaSharp.SKMatrix)~SkiaSharp.SKRuntimeEffectUniform - - [ ] M:SkiaSharp.SKRuntimeEffectUniform.op_Implicit(System.ReadOnlySpan{System.Single})~SkiaSharp.SKRuntimeEffectUniform - - [ ] M:SkiaSharp.SKRuntimeEffectUniform.op_Implicit(System.Single)~SkiaSharp.SKRuntimeEffectUniform - - [ ] M:SkiaSharp.SKRuntimeEffectUniform.op_Implicit(System.Single[])~SkiaSharp.SKRuntimeEffectUniform - - [ ] M:SkiaSharp.SKRuntimeEffectUniform.op_Implicit(System.Single[][])~SkiaSharp.SKRuntimeEffectUniform - - [ ] M:SkiaSharp.SKRuntimeEffectUniform.op_Implicit(System.Span{System.Single})~SkiaSharp.SKRuntimeEffectUniform - - [ ] M:SkiaSharp.SKRuntimeEffectUniform.WriteTo(System.Span{System.Byte}) - - [ ] P:SkiaSharp.SKRuntimeEffectUniform.Empty - - [ ] P:SkiaSharp.SKRuntimeEffectUniform.IsEmpty - - [ ] P:SkiaSharp.SKRuntimeEffectUniform.Size -- [ ] SkiaSharp.SKRuntimeEffectUniforms - - [ ] M:SkiaSharp.SKRuntimeEffectUniforms.#ctor(SkiaSharp.SKRuntimeEffect) - - [ ] M:SkiaSharp.SKRuntimeEffectUniforms.Add(System.String,SkiaSharp.SKRuntimeEffectUniform) - - [ ] M:SkiaSharp.SKRuntimeEffectUniforms.Contains(System.String) - - [ ] M:SkiaSharp.SKRuntimeEffectUniforms.GetEnumerator - - [ ] M:SkiaSharp.SKRuntimeEffectUniforms.Reset - - [ ] M:SkiaSharp.SKRuntimeEffectUniforms.System#Collections#IEnumerable#GetEnumerator - - [ ] M:SkiaSharp.SKRuntimeEffectUniforms.ToData - - [ ] P:SkiaSharp.SKRuntimeEffectUniforms.Count - - [ ] P:SkiaSharp.SKRuntimeEffectUniforms.Item(System.String) - - [ ] P:SkiaSharp.SKRuntimeEffectUniforms.Names -- [ ] SkiaSharp.SKShader - - [ ] M:SkiaSharp.SKShader.CreateBitmap(SkiaSharp.SKBitmap,SkiaSharp.SKShaderTileMode,SkiaSharp.SKShaderTileMode,SkiaSharp.SKMatrix) - - [ ] M:SkiaSharp.SKShader.CreateBitmap(SkiaSharp.SKBitmap,SkiaSharp.SKShaderTileMode,SkiaSharp.SKShaderTileMode) - - [ ] M:SkiaSharp.SKShader.CreateBitmap(SkiaSharp.SKBitmap) - - [ ] M:SkiaSharp.SKShader.CreateColor(SkiaSharp.SKColor) - - [ ] M:SkiaSharp.SKShader.CreateColor(SkiaSharp.SKColorF,SkiaSharp.SKColorSpace) - - [ ] M:SkiaSharp.SKShader.CreateColorFilter(SkiaSharp.SKShader,SkiaSharp.SKColorFilter) - - [ ] M:SkiaSharp.SKShader.CreateCompose(SkiaSharp.SKShader,SkiaSharp.SKShader,SkiaSharp.SKBlendMode) - - [ ] M:SkiaSharp.SKShader.CreateCompose(SkiaSharp.SKShader,SkiaSharp.SKShader) - - [ ] M:SkiaSharp.SKShader.CreateEmpty - - [ ] M:SkiaSharp.SKShader.CreateImage(SkiaSharp.SKImage,SkiaSharp.SKShaderTileMode,SkiaSharp.SKShaderTileMode,SkiaSharp.SKMatrix) - - [ ] M:SkiaSharp.SKShader.CreateImage(SkiaSharp.SKImage,SkiaSharp.SKShaderTileMode,SkiaSharp.SKShaderTileMode) - - [ ] M:SkiaSharp.SKShader.CreateImage(SkiaSharp.SKImage) - - [ ] M:SkiaSharp.SKShader.CreateLerp(System.Single,SkiaSharp.SKShader,SkiaSharp.SKShader) - - [ ] M:SkiaSharp.SKShader.CreateLinearGradient(SkiaSharp.SKPoint,SkiaSharp.SKPoint,SkiaSharp.SKColor[],SkiaSharp.SKShaderTileMode) - - [ ] M:SkiaSharp.SKShader.CreateLinearGradient(SkiaSharp.SKPoint,SkiaSharp.SKPoint,SkiaSharp.SKColor[],System.Single[],SkiaSharp.SKShaderTileMode,SkiaSharp.SKMatrix) - - [ ] M:SkiaSharp.SKShader.CreateLinearGradient(SkiaSharp.SKPoint,SkiaSharp.SKPoint,SkiaSharp.SKColor[],System.Single[],SkiaSharp.SKShaderTileMode) - - [ ] M:SkiaSharp.SKShader.CreateLinearGradient(SkiaSharp.SKPoint,SkiaSharp.SKPoint,SkiaSharp.SKColorF[],SkiaSharp.SKColorSpace,SkiaSharp.SKShaderTileMode) - - [ ] M:SkiaSharp.SKShader.CreateLinearGradient(SkiaSharp.SKPoint,SkiaSharp.SKPoint,SkiaSharp.SKColorF[],SkiaSharp.SKColorSpace,System.Single[],SkiaSharp.SKShaderTileMode,SkiaSharp.SKMatrix) - - [ ] M:SkiaSharp.SKShader.CreateLinearGradient(SkiaSharp.SKPoint,SkiaSharp.SKPoint,SkiaSharp.SKColorF[],SkiaSharp.SKColorSpace,System.Single[],SkiaSharp.SKShaderTileMode) - - [ ] M:SkiaSharp.SKShader.CreateLocalMatrix(SkiaSharp.SKShader,SkiaSharp.SKMatrix) - - [ ] M:SkiaSharp.SKShader.CreatePerlinNoiseFractalNoise(System.Single,System.Single,System.Int32,System.Single,SkiaSharp.SKPointI) - - [ ] M:SkiaSharp.SKShader.CreatePerlinNoiseFractalNoise(System.Single,System.Single,System.Int32,System.Single,SkiaSharp.SKSizeI) - - [ ] M:SkiaSharp.SKShader.CreatePerlinNoiseFractalNoise(System.Single,System.Single,System.Int32,System.Single) - - [ ] M:SkiaSharp.SKShader.CreatePerlinNoiseImprovedNoise(System.Single,System.Single,System.Int32,System.Single) - - [ ] M:SkiaSharp.SKShader.CreatePerlinNoiseTurbulence(System.Single,System.Single,System.Int32,System.Single,SkiaSharp.SKPointI) - - [ ] M:SkiaSharp.SKShader.CreatePerlinNoiseTurbulence(System.Single,System.Single,System.Int32,System.Single,SkiaSharp.SKSizeI) - - [ ] M:SkiaSharp.SKShader.CreatePerlinNoiseTurbulence(System.Single,System.Single,System.Int32,System.Single) - - [ ] M:SkiaSharp.SKShader.CreatePicture(SkiaSharp.SKPicture,SkiaSharp.SKShaderTileMode,SkiaSharp.SKShaderTileMode,SkiaSharp.SKMatrix,SkiaSharp.SKRect) - - [ ] M:SkiaSharp.SKShader.CreatePicture(SkiaSharp.SKPicture,SkiaSharp.SKShaderTileMode,SkiaSharp.SKShaderTileMode,SkiaSharp.SKRect) - - [ ] M:SkiaSharp.SKShader.CreatePicture(SkiaSharp.SKPicture,SkiaSharp.SKShaderTileMode,SkiaSharp.SKShaderTileMode) - - [ ] M:SkiaSharp.SKShader.CreatePicture(SkiaSharp.SKPicture) - - [ ] M:SkiaSharp.SKShader.CreateRadialGradient(SkiaSharp.SKPoint,System.Single,SkiaSharp.SKColor[],SkiaSharp.SKShaderTileMode) - - [ ] M:SkiaSharp.SKShader.CreateRadialGradient(SkiaSharp.SKPoint,System.Single,SkiaSharp.SKColor[],System.Single[],SkiaSharp.SKShaderTileMode,SkiaSharp.SKMatrix) - - [ ] M:SkiaSharp.SKShader.CreateRadialGradient(SkiaSharp.SKPoint,System.Single,SkiaSharp.SKColor[],System.Single[],SkiaSharp.SKShaderTileMode) - - [ ] M:SkiaSharp.SKShader.CreateRadialGradient(SkiaSharp.SKPoint,System.Single,SkiaSharp.SKColorF[],SkiaSharp.SKColorSpace,SkiaSharp.SKShaderTileMode) - - [ ] M:SkiaSharp.SKShader.CreateRadialGradient(SkiaSharp.SKPoint,System.Single,SkiaSharp.SKColorF[],SkiaSharp.SKColorSpace,System.Single[],SkiaSharp.SKShaderTileMode,SkiaSharp.SKMatrix) - - [ ] M:SkiaSharp.SKShader.CreateRadialGradient(SkiaSharp.SKPoint,System.Single,SkiaSharp.SKColorF[],SkiaSharp.SKColorSpace,System.Single[],SkiaSharp.SKShaderTileMode) - - [ ] M:SkiaSharp.SKShader.CreateSweepGradient(SkiaSharp.SKPoint,SkiaSharp.SKColor[],SkiaSharp.SKShaderTileMode,System.Single,System.Single) - - [ ] M:SkiaSharp.SKShader.CreateSweepGradient(SkiaSharp.SKPoint,SkiaSharp.SKColor[],System.Single[],SkiaSharp.SKMatrix) - - [ ] M:SkiaSharp.SKShader.CreateSweepGradient(SkiaSharp.SKPoint,SkiaSharp.SKColor[],System.Single[],SkiaSharp.SKShaderTileMode,System.Single,System.Single,SkiaSharp.SKMatrix) - - [ ] M:SkiaSharp.SKShader.CreateSweepGradient(SkiaSharp.SKPoint,SkiaSharp.SKColor[],System.Single[],SkiaSharp.SKShaderTileMode,System.Single,System.Single) - - [ ] M:SkiaSharp.SKShader.CreateSweepGradient(SkiaSharp.SKPoint,SkiaSharp.SKColor[],System.Single[]) - - [ ] M:SkiaSharp.SKShader.CreateSweepGradient(SkiaSharp.SKPoint,SkiaSharp.SKColor[]) - - [ ] M:SkiaSharp.SKShader.CreateSweepGradient(SkiaSharp.SKPoint,SkiaSharp.SKColorF[],SkiaSharp.SKColorSpace,SkiaSharp.SKShaderTileMode,System.Single,System.Single) - - [ ] M:SkiaSharp.SKShader.CreateSweepGradient(SkiaSharp.SKPoint,SkiaSharp.SKColorF[],SkiaSharp.SKColorSpace,System.Single[],SkiaSharp.SKMatrix) - - [ ] M:SkiaSharp.SKShader.CreateSweepGradient(SkiaSharp.SKPoint,SkiaSharp.SKColorF[],SkiaSharp.SKColorSpace,System.Single[],SkiaSharp.SKShaderTileMode,System.Single,System.Single,SkiaSharp.SKMatrix) - - [ ] M:SkiaSharp.SKShader.CreateSweepGradient(SkiaSharp.SKPoint,SkiaSharp.SKColorF[],SkiaSharp.SKColorSpace,System.Single[],SkiaSharp.SKShaderTileMode,System.Single,System.Single) - - [ ] M:SkiaSharp.SKShader.CreateSweepGradient(SkiaSharp.SKPoint,SkiaSharp.SKColorF[],SkiaSharp.SKColorSpace,System.Single[]) - - [ ] M:SkiaSharp.SKShader.CreateSweepGradient(SkiaSharp.SKPoint,SkiaSharp.SKColorF[],SkiaSharp.SKColorSpace) - - [ ] M:SkiaSharp.SKShader.CreateTwoPointConicalGradient(SkiaSharp.SKPoint,System.Single,SkiaSharp.SKPoint,System.Single,SkiaSharp.SKColor[],SkiaSharp.SKShaderTileMode) - - [ ] M:SkiaSharp.SKShader.CreateTwoPointConicalGradient(SkiaSharp.SKPoint,System.Single,SkiaSharp.SKPoint,System.Single,SkiaSharp.SKColor[],System.Single[],SkiaSharp.SKShaderTileMode,SkiaSharp.SKMatrix) - - [ ] M:SkiaSharp.SKShader.CreateTwoPointConicalGradient(SkiaSharp.SKPoint,System.Single,SkiaSharp.SKPoint,System.Single,SkiaSharp.SKColor[],System.Single[],SkiaSharp.SKShaderTileMode) - - [ ] M:SkiaSharp.SKShader.CreateTwoPointConicalGradient(SkiaSharp.SKPoint,System.Single,SkiaSharp.SKPoint,System.Single,SkiaSharp.SKColorF[],SkiaSharp.SKColorSpace,SkiaSharp.SKShaderTileMode) - - [ ] M:SkiaSharp.SKShader.CreateTwoPointConicalGradient(SkiaSharp.SKPoint,System.Single,SkiaSharp.SKPoint,System.Single,SkiaSharp.SKColorF[],SkiaSharp.SKColorSpace,System.Single[],SkiaSharp.SKShaderTileMode,SkiaSharp.SKMatrix) - - [ ] M:SkiaSharp.SKShader.CreateTwoPointConicalGradient(SkiaSharp.SKPoint,System.Single,SkiaSharp.SKPoint,System.Single,SkiaSharp.SKColorF[],SkiaSharp.SKColorSpace,System.Single[],SkiaSharp.SKShaderTileMode) - - [ ] M:SkiaSharp.SKShader.Dispose(System.Boolean) - - [ ] M:SkiaSharp.SKShader.WithColorFilter(SkiaSharp.SKColorFilter) - - [ ] M:SkiaSharp.SKShader.WithLocalMatrix(SkiaSharp.SKMatrix) -- [ ] SkiaSharp.SKShaderTileMode - - [ ] F:SkiaSharp.SKShaderTileMode.Clamp - - [ ] F:SkiaSharp.SKShaderTileMode.Decal - - [ ] F:SkiaSharp.SKShaderTileMode.Mirror - - [ ] F:SkiaSharp.SKShaderTileMode.Repeat -- [ ] SkiaSharp.SKSize - - [ ] F:SkiaSharp.SKSize.Empty - - [ ] M:SkiaSharp.SKSize.#ctor(SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.SKSize.#ctor(System.Single,System.Single) - - [ ] M:SkiaSharp.SKSize.Add(SkiaSharp.SKSize,SkiaSharp.SKSize) - - [ ] M:SkiaSharp.SKSize.Equals(SkiaSharp.SKSize) - - [ ] M:SkiaSharp.SKSize.Equals(System.Object) - - [ ] M:SkiaSharp.SKSize.GetHashCode - - [ ] M:SkiaSharp.SKSize.op_Addition(SkiaSharp.SKSize,SkiaSharp.SKSize) - - [ ] M:SkiaSharp.SKSize.op_Equality(SkiaSharp.SKSize,SkiaSharp.SKSize) - - [ ] M:SkiaSharp.SKSize.op_Explicit(SkiaSharp.SKSize)~SkiaSharp.SKPoint - - [ ] M:SkiaSharp.SKSize.op_Implicit(SkiaSharp.SKSizeI)~SkiaSharp.SKSize - - [ ] M:SkiaSharp.SKSize.op_Inequality(SkiaSharp.SKSize,SkiaSharp.SKSize) - - [ ] M:SkiaSharp.SKSize.op_Subtraction(SkiaSharp.SKSize,SkiaSharp.SKSize) - - [ ] M:SkiaSharp.SKSize.Subtract(SkiaSharp.SKSize,SkiaSharp.SKSize) - - [ ] M:SkiaSharp.SKSize.ToPoint - - [ ] M:SkiaSharp.SKSize.ToSizeI - - [ ] M:SkiaSharp.SKSize.ToString - - [ ] P:SkiaSharp.SKSize.Height - - [ ] P:SkiaSharp.SKSize.IsEmpty - - [ ] P:SkiaSharp.SKSize.Width -- [ ] SkiaSharp.SKSizeI - - [ ] F:SkiaSharp.SKSizeI.Empty - - [ ] M:SkiaSharp.SKSizeI.#ctor(SkiaSharp.SKPointI) - - [ ] M:SkiaSharp.SKSizeI.#ctor(System.Int32,System.Int32) - - [ ] M:SkiaSharp.SKSizeI.Add(SkiaSharp.SKSizeI,SkiaSharp.SKSizeI) - - [ ] M:SkiaSharp.SKSizeI.Equals(SkiaSharp.SKSizeI) - - [ ] M:SkiaSharp.SKSizeI.Equals(System.Object) - - [ ] M:SkiaSharp.SKSizeI.GetHashCode - - [ ] M:SkiaSharp.SKSizeI.op_Addition(SkiaSharp.SKSizeI,SkiaSharp.SKSizeI) - - [ ] M:SkiaSharp.SKSizeI.op_Equality(SkiaSharp.SKSizeI,SkiaSharp.SKSizeI) - - [ ] M:SkiaSharp.SKSizeI.op_Explicit(SkiaSharp.SKSizeI)~SkiaSharp.SKPointI - - [ ] M:SkiaSharp.SKSizeI.op_Inequality(SkiaSharp.SKSizeI,SkiaSharp.SKSizeI) - - [ ] M:SkiaSharp.SKSizeI.op_Subtraction(SkiaSharp.SKSizeI,SkiaSharp.SKSizeI) - - [ ] M:SkiaSharp.SKSizeI.Subtract(SkiaSharp.SKSizeI,SkiaSharp.SKSizeI) - - [ ] M:SkiaSharp.SKSizeI.ToPointI - - [ ] M:SkiaSharp.SKSizeI.ToString - - [ ] P:SkiaSharp.SKSizeI.Height - - [ ] P:SkiaSharp.SKSizeI.IsEmpty - - [ ] P:SkiaSharp.SKSizeI.Width -- [ ] SkiaSharp.SKStream - - [ ] M:SkiaSharp.SKStream.GetMemoryBase - - [ ] M:SkiaSharp.SKStream.Move(System.Int32) - - [ ] M:SkiaSharp.SKStream.Move(System.Int64) - - [ ] M:SkiaSharp.SKStream.Peek(System.IntPtr,System.Int32) - - [ ] M:SkiaSharp.SKStream.Read(System.Byte[],System.Int32) - - [ ] M:SkiaSharp.SKStream.Read(System.IntPtr,System.Int32) - - [ ] M:SkiaSharp.SKStream.ReadBool - - [ ] M:SkiaSharp.SKStream.ReadBool(System.Boolean@) - - [ ] M:SkiaSharp.SKStream.ReadByte - - [ ] M:SkiaSharp.SKStream.ReadByte(System.Byte@) - - [ ] M:SkiaSharp.SKStream.ReadInt16 - - [ ] M:SkiaSharp.SKStream.ReadInt16(System.Int16@) - - [ ] M:SkiaSharp.SKStream.ReadInt32 - - [ ] M:SkiaSharp.SKStream.ReadInt32(System.Int32@) - - [ ] M:SkiaSharp.SKStream.ReadSByte - - [ ] M:SkiaSharp.SKStream.ReadSByte(System.SByte@) - - [ ] M:SkiaSharp.SKStream.ReadUInt16 - - [ ] M:SkiaSharp.SKStream.ReadUInt16(System.UInt16@) - - [ ] M:SkiaSharp.SKStream.ReadUInt32 - - [ ] M:SkiaSharp.SKStream.ReadUInt32(System.UInt32@) - - [ ] M:SkiaSharp.SKStream.Rewind - - [ ] M:SkiaSharp.SKStream.Seek(System.Int32) - - [ ] M:SkiaSharp.SKStream.Skip(System.Int32) - - [ ] P:SkiaSharp.SKStream.HasLength - - [ ] P:SkiaSharp.SKStream.HasPosition - - [ ] P:SkiaSharp.SKStream.IsAtEnd - - [ ] P:SkiaSharp.SKStream.Length - - [ ] P:SkiaSharp.SKStream.Position -- [ ] SkiaSharp.SKStreamAsset -- [ ] SkiaSharp.SKStreamMemory -- [ ] SkiaSharp.SKStreamRewindable -- [ ] SkiaSharp.SKStreamSeekable -- [ ] SkiaSharp.SKStrokeCap - - [ ] F:SkiaSharp.SKStrokeCap.Butt - - [ ] F:SkiaSharp.SKStrokeCap.Round - - [ ] F:SkiaSharp.SKStrokeCap.Square -- [ ] SkiaSharp.SKStrokeJoin - - [ ] F:SkiaSharp.SKStrokeJoin.Bevel - - [ ] F:SkiaSharp.SKStrokeJoin.Miter - - [ ] F:SkiaSharp.SKStrokeJoin.Round -- [ ] SkiaSharp.SKSurface - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRContext,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.SKColorSpace,SkiaSharp.SKSurfaceProperties) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRContext,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.SKColorSpace) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRContext,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.SKSurfaceProperties) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRContext,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRContext,SkiaSharp.GRBackendRenderTarget,SkiaSharp.SKColorType,SkiaSharp.SKSurfaceProperties) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRContext,SkiaSharp.GRBackendRenderTarget,SkiaSharp.SKColorType) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRContext,SkiaSharp.GRBackendRenderTargetDesc,SkiaSharp.SKSurfaceProps) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRContext,SkiaSharp.GRBackendRenderTargetDesc) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.SKSurfaceProperties) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,System.Int32,SkiaSharp.SKColorType,SkiaSharp.SKColorSpace,SkiaSharp.SKSurfaceProperties) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,System.Int32,SkiaSharp.SKColorType,SkiaSharp.SKColorSpace) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,System.Int32,SkiaSharp.SKColorType,SkiaSharp.SKSurfaceProperties) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,System.Int32,SkiaSharp.SKColorType) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRContext,SkiaSharp.GRBackendTexture,SkiaSharp.SKColorType,SkiaSharp.SKSurfaceProperties) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRContext,SkiaSharp.GRBackendTexture,SkiaSharp.SKColorType) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRContext,SkiaSharp.GRBackendTextureDesc,SkiaSharp.SKSurfaceProps) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRContext,SkiaSharp.GRBackendTextureDesc) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRContext,SkiaSharp.GRGlBackendTextureDesc,SkiaSharp.SKSurfaceProps) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRContext,SkiaSharp.GRGlBackendTextureDesc) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRContext,System.Boolean,SkiaSharp.SKImageInfo,SkiaSharp.SKSurfaceProperties) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRContext,System.Boolean,SkiaSharp.SKImageInfo,System.Int32,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKSurfaceProperties,System.Boolean) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRContext,System.Boolean,SkiaSharp.SKImageInfo,System.Int32,SkiaSharp.GRSurfaceOrigin) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRContext,System.Boolean,SkiaSharp.SKImageInfo,System.Int32,SkiaSharp.SKSurfaceProperties) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRContext,System.Boolean,SkiaSharp.SKImageInfo,System.Int32,SkiaSharp.SKSurfaceProps) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRContext,System.Boolean,SkiaSharp.SKImageInfo,System.Int32) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRContext,System.Boolean,SkiaSharp.SKImageInfo) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRRecordingContext,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.SKColorSpace,SkiaSharp.SKSurfaceProperties) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRRecordingContext,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.SKColorSpace) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRRecordingContext,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.SKSurfaceProperties) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRRecordingContext,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRRecordingContext,SkiaSharp.GRBackendRenderTarget,SkiaSharp.SKColorType,SkiaSharp.SKSurfaceProperties) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRRecordingContext,SkiaSharp.GRBackendRenderTarget,SkiaSharp.SKColorType) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRRecordingContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.SKSurfaceProperties) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRRecordingContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRRecordingContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,System.Int32,SkiaSharp.SKColorType,SkiaSharp.SKColorSpace,SkiaSharp.SKSurfaceProperties) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRRecordingContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,System.Int32,SkiaSharp.SKColorType,SkiaSharp.SKColorSpace) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRRecordingContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,System.Int32,SkiaSharp.SKColorType,SkiaSharp.SKSurfaceProperties) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRRecordingContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,System.Int32,SkiaSharp.SKColorType) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRRecordingContext,SkiaSharp.GRBackendTexture,SkiaSharp.SKColorType,SkiaSharp.SKSurfaceProperties) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRRecordingContext,SkiaSharp.GRBackendTexture,SkiaSharp.SKColorType) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRRecordingContext,System.Boolean,SkiaSharp.SKImageInfo,SkiaSharp.SKSurfaceProperties) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRRecordingContext,System.Boolean,SkiaSharp.SKImageInfo,System.Int32,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKSurfaceProperties,System.Boolean) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRRecordingContext,System.Boolean,SkiaSharp.SKImageInfo,System.Int32,SkiaSharp.GRSurfaceOrigin) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRRecordingContext,System.Boolean,SkiaSharp.SKImageInfo,System.Int32,SkiaSharp.SKSurfaceProperties) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRRecordingContext,System.Boolean,SkiaSharp.SKImageInfo,System.Int32) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.GRRecordingContext,System.Boolean,SkiaSharp.SKImageInfo) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.SKImageInfo,SkiaSharp.SKSurfaceProperties) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.SKImageInfo,SkiaSharp.SKSurfaceProps) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.SKImageInfo,System.Int32,SkiaSharp.SKSurfaceProperties) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.SKImageInfo,System.Int32) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.SKImageInfo,System.IntPtr,SkiaSharp.SKSurfaceProperties) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32,SkiaSharp.SKSurfaceProperties) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32,SkiaSharp.SKSurfaceProps) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32,SkiaSharp.SKSurfaceReleaseDelegate,System.Object,SkiaSharp.SKSurfaceProperties) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32,SkiaSharp.SKSurfaceReleaseDelegate,System.Object) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.SKImageInfo,System.IntPtr) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.SKImageInfo) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.SKPixmap,SkiaSharp.SKSurfaceProperties) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.SKPixmap,SkiaSharp.SKSurfaceProps) - - [ ] M:SkiaSharp.SKSurface.Create(SkiaSharp.SKPixmap) - - [ ] M:SkiaSharp.SKSurface.Create(System.Int32,System.Int32,SkiaSharp.SKColorType,SkiaSharp.SKAlphaType,SkiaSharp.SKSurfaceProps) - - [ ] M:SkiaSharp.SKSurface.Create(System.Int32,System.Int32,SkiaSharp.SKColorType,SkiaSharp.SKAlphaType,System.IntPtr,System.Int32,SkiaSharp.SKSurfaceProps) - - [ ] M:SkiaSharp.SKSurface.Create(System.Int32,System.Int32,SkiaSharp.SKColorType,SkiaSharp.SKAlphaType,System.IntPtr,System.Int32) - - [ ] M:SkiaSharp.SKSurface.Create(System.Int32,System.Int32,SkiaSharp.SKColorType,SkiaSharp.SKAlphaType) - - [ ] M:SkiaSharp.SKSurface.CreateAsRenderTarget(SkiaSharp.GRContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.SKSurfaceProperties) - - [ ] M:SkiaSharp.SKSurface.CreateAsRenderTarget(SkiaSharp.GRContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType) - - [ ] M:SkiaSharp.SKSurface.CreateAsRenderTarget(SkiaSharp.GRContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,System.Int32,SkiaSharp.SKColorType,SkiaSharp.SKColorSpace,SkiaSharp.SKSurfaceProperties) - - [ ] M:SkiaSharp.SKSurface.CreateAsRenderTarget(SkiaSharp.GRContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,System.Int32,SkiaSharp.SKColorType,SkiaSharp.SKColorSpace) - - [ ] M:SkiaSharp.SKSurface.CreateAsRenderTarget(SkiaSharp.GRContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,System.Int32,SkiaSharp.SKColorType,SkiaSharp.SKSurfaceProperties) - - [ ] M:SkiaSharp.SKSurface.CreateAsRenderTarget(SkiaSharp.GRContext,SkiaSharp.GRBackendTexture,SkiaSharp.GRSurfaceOrigin,System.Int32,SkiaSharp.SKColorType) - - [ ] M:SkiaSharp.SKSurface.CreateAsRenderTarget(SkiaSharp.GRContext,SkiaSharp.GRBackendTexture,SkiaSharp.SKColorType,SkiaSharp.SKSurfaceProperties) - - [ ] M:SkiaSharp.SKSurface.CreateAsRenderTarget(SkiaSharp.GRContext,SkiaSharp.GRBackendTexture,SkiaSharp.SKColorType) - - [ ] M:SkiaSharp.SKSurface.CreateAsRenderTarget(SkiaSharp.GRContext,SkiaSharp.GRBackendTextureDesc,SkiaSharp.SKSurfaceProps) - - [ ] M:SkiaSharp.SKSurface.CreateAsRenderTarget(SkiaSharp.GRContext,SkiaSharp.GRBackendTextureDesc) - - [ ] M:SkiaSharp.SKSurface.CreateAsRenderTarget(SkiaSharp.GRContext,SkiaSharp.GRGlBackendTextureDesc,SkiaSharp.SKSurfaceProps) - - [ ] M:SkiaSharp.SKSurface.CreateAsRenderTarget(SkiaSharp.GRContext,SkiaSharp.GRGlBackendTextureDesc) - - [ ] M:SkiaSharp.SKSurface.CreateNull(System.Int32,System.Int32) - - [ ] M:SkiaSharp.SKSurface.Dispose(System.Boolean) - - [ ] M:SkiaSharp.SKSurface.Draw(SkiaSharp.SKCanvas,System.Single,System.Single,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKSurface.Flush - - [ ] M:SkiaSharp.SKSurface.Flush(System.Boolean,System.Boolean) - - [ ] M:SkiaSharp.SKSurface.PeekPixels - - [ ] M:SkiaSharp.SKSurface.PeekPixels(SkiaSharp.SKPixmap) - - [ ] M:SkiaSharp.SKSurface.ReadPixels(SkiaSharp.SKImageInfo,System.IntPtr,System.Int32,System.Int32,System.Int32) - - [ ] M:SkiaSharp.SKSurface.Snapshot - - [ ] M:SkiaSharp.SKSurface.Snapshot(SkiaSharp.SKRectI) - - [ ] P:SkiaSharp.SKSurface.Canvas - - [ ] P:SkiaSharp.SKSurface.Context - - [ ] P:SkiaSharp.SKSurface.SurfaceProperties - - [ ] P:SkiaSharp.SKSurface.SurfaceProps -- [ ] SkiaSharp.SKSurfaceProperties - - [ ] M:SkiaSharp.SKSurfaceProperties.#ctor(SkiaSharp.SKPixelGeometry) - - [ ] M:SkiaSharp.SKSurfaceProperties.#ctor(SkiaSharp.SKSurfaceProps) - - [ ] M:SkiaSharp.SKSurfaceProperties.#ctor(SkiaSharp.SKSurfacePropsFlags,SkiaSharp.SKPixelGeometry) - - [ ] M:SkiaSharp.SKSurfaceProperties.#ctor(System.UInt32,SkiaSharp.SKPixelGeometry) - - [ ] M:SkiaSharp.SKSurfaceProperties.Dispose(System.Boolean) - - [ ] M:SkiaSharp.SKSurfaceProperties.DisposeNative - - [ ] P:SkiaSharp.SKSurfaceProperties.Flags - - [ ] P:SkiaSharp.SKSurfaceProperties.IsUseDeviceIndependentFonts - - [ ] P:SkiaSharp.SKSurfaceProperties.PixelGeometry -- [ ] SkiaSharp.SKSurfaceProps - - [ ] M:SkiaSharp.SKSurfaceProps.Equals(SkiaSharp.SKSurfaceProps) - - [ ] M:SkiaSharp.SKSurfaceProps.Equals(System.Object) - - [ ] M:SkiaSharp.SKSurfaceProps.GetHashCode - - [ ] M:SkiaSharp.SKSurfaceProps.op_Equality(SkiaSharp.SKSurfaceProps,SkiaSharp.SKSurfaceProps) - - [ ] M:SkiaSharp.SKSurfaceProps.op_Inequality(SkiaSharp.SKSurfaceProps,SkiaSharp.SKSurfaceProps) - - [ ] P:SkiaSharp.SKSurfaceProps.Flags - - [ ] P:SkiaSharp.SKSurfaceProps.PixelGeometry -- [ ] SkiaSharp.SKSurfacePropsFlags - - [ ] F:SkiaSharp.SKSurfacePropsFlags.None - - [ ] F:SkiaSharp.SKSurfacePropsFlags.UseDeviceIndependentFonts -- [ ] SkiaSharp.SKSurfaceReleaseDelegate -- [ ] SkiaSharp.SKSvgCanvas - - [ ] M:SkiaSharp.SKSvgCanvas.Create(SkiaSharp.SKRect,SkiaSharp.SKWStream) - - [ ] M:SkiaSharp.SKSvgCanvas.Create(SkiaSharp.SKRect,SkiaSharp.SKXmlWriter) - - [ ] M:SkiaSharp.SKSvgCanvas.Create(SkiaSharp.SKRect,System.IO.Stream) -- [ ] SkiaSharp.SKSwizzle - - [ ] M:SkiaSharp.SKSwizzle.SwapRedBlue(System.IntPtr,System.Int32) - - [ ] M:SkiaSharp.SKSwizzle.SwapRedBlue(System.IntPtr,System.IntPtr,System.Int32) - - [ ] M:SkiaSharp.SKSwizzle.SwapRedBlue(System.ReadOnlySpan{System.Byte},System.Int32) - - [ ] M:SkiaSharp.SKSwizzle.SwapRedBlue(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte},System.Int32) - - [ ] M:SkiaSharp.SKSwizzle.SwapRedBlue(System.Span{System.Byte}) -- [ ] SkiaSharp.SKTextAlign - - [ ] F:SkiaSharp.SKTextAlign.Center - - [ ] F:SkiaSharp.SKTextAlign.Left - - [ ] F:SkiaSharp.SKTextAlign.Right -- [ ] SkiaSharp.SKTextBlob - - [ ] M:SkiaSharp.SKTextBlob.CountIntercepts(System.Single,System.Single,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKTextBlob.Create(System.IntPtr,System.Int32,SkiaSharp.SKTextEncoding,SkiaSharp.SKFont,SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.SKTextBlob.Create(System.ReadOnlySpan{System.Byte},SkiaSharp.SKTextEncoding,SkiaSharp.SKFont,SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.SKTextBlob.Create(System.ReadOnlySpan{System.Char},SkiaSharp.SKFont,SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.SKTextBlob.Create(System.String,SkiaSharp.SKFont,SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.SKTextBlob.CreateHorizontal(System.IntPtr,System.Int32,SkiaSharp.SKTextEncoding,SkiaSharp.SKFont,System.ReadOnlySpan{System.Single},System.Single) - - [ ] M:SkiaSharp.SKTextBlob.CreateHorizontal(System.ReadOnlySpan{System.Byte},SkiaSharp.SKTextEncoding,SkiaSharp.SKFont,System.ReadOnlySpan{System.Single},System.Single) - - [ ] M:SkiaSharp.SKTextBlob.CreateHorizontal(System.ReadOnlySpan{System.Char},SkiaSharp.SKFont,System.ReadOnlySpan{System.Single},System.Single) - - [ ] M:SkiaSharp.SKTextBlob.CreateHorizontal(System.String,SkiaSharp.SKFont,System.ReadOnlySpan{System.Single},System.Single) - - [ ] M:SkiaSharp.SKTextBlob.CreatePathPositioned(System.IntPtr,System.Int32,SkiaSharp.SKTextEncoding,SkiaSharp.SKFont,SkiaSharp.SKPath,SkiaSharp.SKTextAlign,SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.SKTextBlob.CreatePathPositioned(System.ReadOnlySpan{System.Byte},SkiaSharp.SKTextEncoding,SkiaSharp.SKFont,SkiaSharp.SKPath,SkiaSharp.SKTextAlign,SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.SKTextBlob.CreatePathPositioned(System.ReadOnlySpan{System.Char},SkiaSharp.SKFont,SkiaSharp.SKPath,SkiaSharp.SKTextAlign,SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.SKTextBlob.CreatePathPositioned(System.String,SkiaSharp.SKFont,SkiaSharp.SKPath,SkiaSharp.SKTextAlign,SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.SKTextBlob.CreatePositioned(System.IntPtr,System.Int32,SkiaSharp.SKTextEncoding,SkiaSharp.SKFont,System.ReadOnlySpan{SkiaSharp.SKPoint}) - - [ ] M:SkiaSharp.SKTextBlob.CreatePositioned(System.ReadOnlySpan{System.Byte},SkiaSharp.SKTextEncoding,SkiaSharp.SKFont,System.ReadOnlySpan{SkiaSharp.SKPoint}) - - [ ] M:SkiaSharp.SKTextBlob.CreatePositioned(System.ReadOnlySpan{System.Char},SkiaSharp.SKFont,System.ReadOnlySpan{SkiaSharp.SKPoint}) - - [ ] M:SkiaSharp.SKTextBlob.CreatePositioned(System.String,SkiaSharp.SKFont,System.ReadOnlySpan{SkiaSharp.SKPoint}) - - [ ] M:SkiaSharp.SKTextBlob.CreateRotationScale(System.IntPtr,System.Int32,SkiaSharp.SKTextEncoding,SkiaSharp.SKFont,System.ReadOnlySpan{SkiaSharp.SKRotationScaleMatrix}) - - [ ] M:SkiaSharp.SKTextBlob.CreateRotationScale(System.ReadOnlySpan{System.Byte},SkiaSharp.SKTextEncoding,SkiaSharp.SKFont,System.ReadOnlySpan{SkiaSharp.SKRotationScaleMatrix}) - - [ ] M:SkiaSharp.SKTextBlob.CreateRotationScale(System.ReadOnlySpan{System.Char},SkiaSharp.SKFont,System.ReadOnlySpan{SkiaSharp.SKRotationScaleMatrix}) - - [ ] M:SkiaSharp.SKTextBlob.CreateRotationScale(System.String,SkiaSharp.SKFont,System.ReadOnlySpan{SkiaSharp.SKRotationScaleMatrix}) - - [ ] M:SkiaSharp.SKTextBlob.Dispose(System.Boolean) - - [ ] M:SkiaSharp.SKTextBlob.GetIntercepts(System.Single,System.Single,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.SKTextBlob.GetIntercepts(System.Single,System.Single,System.Span{System.Single},SkiaSharp.SKPaint) - - [ ] P:SkiaSharp.SKTextBlob.Bounds - - [ ] P:SkiaSharp.SKTextBlob.UniqueId -- [ ] SkiaSharp.SKTextBlobBuilder - - [ ] M:SkiaSharp.SKTextBlobBuilder.#ctor - - [ ] M:SkiaSharp.SKTextBlobBuilder.AddHorizontalRun(SkiaSharp.SKPaint,System.Single,System.ReadOnlySpan{System.UInt16},System.ReadOnlySpan{System.Single},System.Nullable{SkiaSharp.SKRect}) - - [ ] M:SkiaSharp.SKTextBlobBuilder.AddHorizontalRun(SkiaSharp.SKPaint,System.Single,System.ReadOnlySpan{System.UInt16},System.ReadOnlySpan{System.Single},System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.UInt32},System.Nullable{SkiaSharp.SKRect}) - - [ ] M:SkiaSharp.SKTextBlobBuilder.AddHorizontalRun(SkiaSharp.SKPaint,System.Single,System.ReadOnlySpan{System.UInt16},System.ReadOnlySpan{System.Single},System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.UInt32}) - - [ ] M:SkiaSharp.SKTextBlobBuilder.AddHorizontalRun(SkiaSharp.SKPaint,System.Single,System.ReadOnlySpan{System.UInt16},System.ReadOnlySpan{System.Single}) - - [ ] M:SkiaSharp.SKTextBlobBuilder.AddHorizontalRun(SkiaSharp.SKPaint,System.Single,System.UInt16[],System.Single[],SkiaSharp.SKRect) - - [ ] M:SkiaSharp.SKTextBlobBuilder.AddHorizontalRun(SkiaSharp.SKPaint,System.Single,System.UInt16[],System.Single[],System.Byte[],System.UInt32[],SkiaSharp.SKRect) - - [ ] M:SkiaSharp.SKTextBlobBuilder.AddHorizontalRun(SkiaSharp.SKPaint,System.Single,System.UInt16[],System.Single[],System.Byte[],System.UInt32[]) - - [ ] M:SkiaSharp.SKTextBlobBuilder.AddHorizontalRun(SkiaSharp.SKPaint,System.Single,System.UInt16[],System.Single[],System.String,System.UInt32[],SkiaSharp.SKRect) - - [ ] M:SkiaSharp.SKTextBlobBuilder.AddHorizontalRun(SkiaSharp.SKPaint,System.Single,System.UInt16[],System.Single[],System.String,System.UInt32[]) - - [ ] M:SkiaSharp.SKTextBlobBuilder.AddHorizontalRun(SkiaSharp.SKPaint,System.Single,System.UInt16[],System.Single[]) - - [ ] M:SkiaSharp.SKTextBlobBuilder.AddHorizontalRun(System.ReadOnlySpan{System.UInt16},SkiaSharp.SKFont,System.ReadOnlySpan{System.Single},System.Single) - - [ ] M:SkiaSharp.SKTextBlobBuilder.AddPathPositionedRun(System.ReadOnlySpan{System.UInt16},SkiaSharp.SKFont,System.ReadOnlySpan{System.Single},System.ReadOnlySpan{SkiaSharp.SKPoint},SkiaSharp.SKPath,SkiaSharp.SKTextAlign) - - [ ] M:SkiaSharp.SKTextBlobBuilder.AddPositionedRun(SkiaSharp.SKPaint,System.ReadOnlySpan{System.UInt16},System.ReadOnlySpan{SkiaSharp.SKPoint},System.Nullable{SkiaSharp.SKRect}) - - [ ] M:SkiaSharp.SKTextBlobBuilder.AddPositionedRun(SkiaSharp.SKPaint,System.ReadOnlySpan{System.UInt16},System.ReadOnlySpan{SkiaSharp.SKPoint},System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.UInt32},System.Nullable{SkiaSharp.SKRect}) - - [ ] M:SkiaSharp.SKTextBlobBuilder.AddPositionedRun(SkiaSharp.SKPaint,System.ReadOnlySpan{System.UInt16},System.ReadOnlySpan{SkiaSharp.SKPoint},System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.UInt32}) - - [ ] M:SkiaSharp.SKTextBlobBuilder.AddPositionedRun(SkiaSharp.SKPaint,System.ReadOnlySpan{System.UInt16},System.ReadOnlySpan{SkiaSharp.SKPoint}) - - [ ] M:SkiaSharp.SKTextBlobBuilder.AddPositionedRun(SkiaSharp.SKPaint,System.UInt16[],SkiaSharp.SKPoint[],SkiaSharp.SKRect) - - [ ] M:SkiaSharp.SKTextBlobBuilder.AddPositionedRun(SkiaSharp.SKPaint,System.UInt16[],SkiaSharp.SKPoint[],System.Byte[],System.UInt32[],SkiaSharp.SKRect) - - [ ] M:SkiaSharp.SKTextBlobBuilder.AddPositionedRun(SkiaSharp.SKPaint,System.UInt16[],SkiaSharp.SKPoint[],System.Byte[],System.UInt32[]) - - [ ] M:SkiaSharp.SKTextBlobBuilder.AddPositionedRun(SkiaSharp.SKPaint,System.UInt16[],SkiaSharp.SKPoint[],System.String,System.UInt32[],SkiaSharp.SKRect) - - [ ] M:SkiaSharp.SKTextBlobBuilder.AddPositionedRun(SkiaSharp.SKPaint,System.UInt16[],SkiaSharp.SKPoint[],System.String,System.UInt32[]) - - [ ] M:SkiaSharp.SKTextBlobBuilder.AddPositionedRun(SkiaSharp.SKPaint,System.UInt16[],SkiaSharp.SKPoint[]) - - [ ] M:SkiaSharp.SKTextBlobBuilder.AddPositionedRun(System.ReadOnlySpan{System.UInt16},SkiaSharp.SKFont,System.ReadOnlySpan{SkiaSharp.SKPoint}) - - [ ] M:SkiaSharp.SKTextBlobBuilder.AddRotationScaleRun(System.ReadOnlySpan{System.UInt16},SkiaSharp.SKFont,System.ReadOnlySpan{SkiaSharp.SKRotationScaleMatrix}) - - [ ] M:SkiaSharp.SKTextBlobBuilder.AddRun(SkiaSharp.SKPaint,System.Single,System.Single,System.ReadOnlySpan{System.UInt16},System.Nullable{SkiaSharp.SKRect}) - - [ ] M:SkiaSharp.SKTextBlobBuilder.AddRun(SkiaSharp.SKPaint,System.Single,System.Single,System.ReadOnlySpan{System.UInt16},System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.UInt32},System.Nullable{SkiaSharp.SKRect}) - - [ ] M:SkiaSharp.SKTextBlobBuilder.AddRun(SkiaSharp.SKPaint,System.Single,System.Single,System.ReadOnlySpan{System.UInt16},System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.UInt32}) - - [ ] M:SkiaSharp.SKTextBlobBuilder.AddRun(SkiaSharp.SKPaint,System.Single,System.Single,System.ReadOnlySpan{System.UInt16}) - - [ ] M:SkiaSharp.SKTextBlobBuilder.AddRun(SkiaSharp.SKPaint,System.Single,System.Single,System.UInt16[],SkiaSharp.SKRect) - - [ ] M:SkiaSharp.SKTextBlobBuilder.AddRun(SkiaSharp.SKPaint,System.Single,System.Single,System.UInt16[],System.Byte[],System.UInt32[],SkiaSharp.SKRect) - - [ ] M:SkiaSharp.SKTextBlobBuilder.AddRun(SkiaSharp.SKPaint,System.Single,System.Single,System.UInt16[],System.Byte[],System.UInt32[]) - - [ ] M:SkiaSharp.SKTextBlobBuilder.AddRun(SkiaSharp.SKPaint,System.Single,System.Single,System.UInt16[],System.String,System.UInt32[],SkiaSharp.SKRect) - - [ ] M:SkiaSharp.SKTextBlobBuilder.AddRun(SkiaSharp.SKPaint,System.Single,System.Single,System.UInt16[],System.String,System.UInt32[]) - - [ ] M:SkiaSharp.SKTextBlobBuilder.AddRun(SkiaSharp.SKPaint,System.Single,System.Single,System.UInt16[]) - - [ ] M:SkiaSharp.SKTextBlobBuilder.AddRun(System.ReadOnlySpan{System.UInt16},SkiaSharp.SKFont,SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.SKTextBlobBuilder.AllocateHorizontalRun(SkiaSharp.SKFont,System.Int32,System.Single,System.Nullable{SkiaSharp.SKRect}) - - [ ] M:SkiaSharp.SKTextBlobBuilder.AllocateHorizontalRun(SkiaSharp.SKPaint,System.Int32,System.Single,System.Int32,System.Nullable{SkiaSharp.SKRect}) - - [ ] M:SkiaSharp.SKTextBlobBuilder.AllocateHorizontalRun(SkiaSharp.SKPaint,System.Int32,System.Single,System.Int32) - - [ ] M:SkiaSharp.SKTextBlobBuilder.AllocateHorizontalRun(SkiaSharp.SKPaint,System.Int32,System.Single,System.Nullable{SkiaSharp.SKRect}) - - [ ] M:SkiaSharp.SKTextBlobBuilder.AllocateHorizontalRun(SkiaSharp.SKPaint,System.Int32,System.Single) - - [ ] M:SkiaSharp.SKTextBlobBuilder.AllocatePositionedRun(SkiaSharp.SKFont,System.Int32,System.Nullable{SkiaSharp.SKRect}) - - [ ] M:SkiaSharp.SKTextBlobBuilder.AllocatePositionedRun(SkiaSharp.SKPaint,System.Int32,System.Int32,System.Nullable{SkiaSharp.SKRect}) - - [ ] M:SkiaSharp.SKTextBlobBuilder.AllocatePositionedRun(SkiaSharp.SKPaint,System.Int32,System.Int32) - - [ ] M:SkiaSharp.SKTextBlobBuilder.AllocatePositionedRun(SkiaSharp.SKPaint,System.Int32,System.Nullable{SkiaSharp.SKRect}) - - [ ] M:SkiaSharp.SKTextBlobBuilder.AllocatePositionedRun(SkiaSharp.SKPaint,System.Int32) - - [ ] M:SkiaSharp.SKTextBlobBuilder.AllocateRotationScaleRun(SkiaSharp.SKFont,System.Int32) - - [ ] M:SkiaSharp.SKTextBlobBuilder.AllocateRun(SkiaSharp.SKFont,System.Int32,System.Single,System.Single,System.Nullable{SkiaSharp.SKRect}) - - [ ] M:SkiaSharp.SKTextBlobBuilder.AllocateRun(SkiaSharp.SKPaint,System.Int32,System.Single,System.Single,System.Int32,System.Nullable{SkiaSharp.SKRect}) - - [ ] M:SkiaSharp.SKTextBlobBuilder.AllocateRun(SkiaSharp.SKPaint,System.Int32,System.Single,System.Single,System.Int32) - - [ ] M:SkiaSharp.SKTextBlobBuilder.AllocateRun(SkiaSharp.SKPaint,System.Int32,System.Single,System.Single,System.Nullable{SkiaSharp.SKRect}) - - [ ] M:SkiaSharp.SKTextBlobBuilder.AllocateRun(SkiaSharp.SKPaint,System.Int32,System.Single,System.Single) - - [ ] M:SkiaSharp.SKTextBlobBuilder.Build - - [ ] M:SkiaSharp.SKTextBlobBuilder.Dispose(System.Boolean) - - [ ] M:SkiaSharp.SKTextBlobBuilder.DisposeNative -- [ ] SkiaSharp.SKTextEncoding - - [ ] F:SkiaSharp.SKTextEncoding.GlyphId - - [ ] F:SkiaSharp.SKTextEncoding.Utf16 - - [ ] F:SkiaSharp.SKTextEncoding.Utf32 - - [ ] F:SkiaSharp.SKTextEncoding.Utf8 -- [ ] SkiaSharp.SKTraceMemoryDump - - [ ] M:SkiaSharp.SKTraceMemoryDump.#ctor(System.Boolean,System.Boolean) - - [ ] M:SkiaSharp.SKTraceMemoryDump.DisposeNative - - [ ] M:SkiaSharp.SKTraceMemoryDump.OnDumpNumericValue(System.String,System.String,System.String,System.UInt64) - - [ ] M:SkiaSharp.SKTraceMemoryDump.OnDumpStringValue(System.String,System.String,System.String) -- [ ] SkiaSharp.SKTransferFunctionBehavior - - [ ] F:SkiaSharp.SKTransferFunctionBehavior.Ignore - - [ ] F:SkiaSharp.SKTransferFunctionBehavior.Respect -- [ ] SkiaSharp.SKTrimPathEffectMode - - [ ] F:SkiaSharp.SKTrimPathEffectMode.Inverted - - [ ] F:SkiaSharp.SKTrimPathEffectMode.Normal -- [ ] SkiaSharp.SKTypeface - - [ ] M:SkiaSharp.SKTypeface.CharsToGlyphs(System.IntPtr,System.Int32,SkiaSharp.SKEncoding,System.UInt16[]@) - - [ ] M:SkiaSharp.SKTypeface.CharsToGlyphs(System.String,System.UInt16[]@) - - [ ] M:SkiaSharp.SKTypeface.ContainsGlyph(System.Int32) - - [ ] M:SkiaSharp.SKTypeface.ContainsGlyphs(System.IntPtr,System.Int32,SkiaSharp.SKTextEncoding) - - [ ] M:SkiaSharp.SKTypeface.ContainsGlyphs(System.ReadOnlySpan{System.Byte},SkiaSharp.SKTextEncoding) - - [ ] M:SkiaSharp.SKTypeface.ContainsGlyphs(System.ReadOnlySpan{System.Char}) - - [ ] M:SkiaSharp.SKTypeface.ContainsGlyphs(System.ReadOnlySpan{System.Int32}) - - [ ] M:SkiaSharp.SKTypeface.ContainsGlyphs(System.String) - - [ ] M:SkiaSharp.SKTypeface.CountGlyphs(System.Byte[],SkiaSharp.SKEncoding) - - [ ] M:SkiaSharp.SKTypeface.CountGlyphs(System.Byte[],SkiaSharp.SKTextEncoding) - - [ ] M:SkiaSharp.SKTypeface.CountGlyphs(System.IntPtr,System.Int32,SkiaSharp.SKEncoding) - - [ ] M:SkiaSharp.SKTypeface.CountGlyphs(System.IntPtr,System.Int32,SkiaSharp.SKTextEncoding) - - [ ] M:SkiaSharp.SKTypeface.CountGlyphs(System.ReadOnlySpan{System.Byte},SkiaSharp.SKEncoding) - - [ ] M:SkiaSharp.SKTypeface.CountGlyphs(System.ReadOnlySpan{System.Byte},SkiaSharp.SKTextEncoding) - - [ ] M:SkiaSharp.SKTypeface.CountGlyphs(System.ReadOnlySpan{System.Char}) - - [ ] M:SkiaSharp.SKTypeface.CountGlyphs(System.String,SkiaSharp.SKEncoding) - - [ ] M:SkiaSharp.SKTypeface.CountGlyphs(System.String) - - [ ] M:SkiaSharp.SKTypeface.CreateDefault - - [ ] M:SkiaSharp.SKTypeface.Dispose(System.Boolean) - - [ ] M:SkiaSharp.SKTypeface.FromData(SkiaSharp.SKData,System.Int32) - - [ ] M:SkiaSharp.SKTypeface.FromFamilyName(System.String,SkiaSharp.SKFontStyle) - - [ ] M:SkiaSharp.SKTypeface.FromFamilyName(System.String,SkiaSharp.SKFontStyleWeight,SkiaSharp.SKFontStyleWidth,SkiaSharp.SKFontStyleSlant) - - [ ] M:SkiaSharp.SKTypeface.FromFamilyName(System.String,SkiaSharp.SKTypefaceStyle) - - [ ] M:SkiaSharp.SKTypeface.FromFamilyName(System.String,System.Int32,System.Int32,SkiaSharp.SKFontStyleSlant) - - [ ] M:SkiaSharp.SKTypeface.FromFamilyName(System.String) - - [ ] M:SkiaSharp.SKTypeface.FromFile(System.String,System.Int32) - - [ ] M:SkiaSharp.SKTypeface.FromStream(SkiaSharp.SKStreamAsset,System.Int32) - - [ ] M:SkiaSharp.SKTypeface.FromStream(System.IO.Stream,System.Int32) - - [ ] M:SkiaSharp.SKTypeface.FromTypeface(SkiaSharp.SKTypeface,SkiaSharp.SKTypefaceStyle) - - [ ] M:SkiaSharp.SKTypeface.GetGlyph(System.Int32) - - [ ] M:SkiaSharp.SKTypeface.GetGlyphs(System.Byte[],SkiaSharp.SKEncoding,System.UInt16[]@) - - [ ] M:SkiaSharp.SKTypeface.GetGlyphs(System.Byte[],SkiaSharp.SKEncoding) - - [ ] M:SkiaSharp.SKTypeface.GetGlyphs(System.IntPtr,System.Int32,SkiaSharp.SKEncoding,System.UInt16[]@) - - [ ] M:SkiaSharp.SKTypeface.GetGlyphs(System.IntPtr,System.Int32,SkiaSharp.SKEncoding) - - [ ] M:SkiaSharp.SKTypeface.GetGlyphs(System.IntPtr,System.Int32,SkiaSharp.SKTextEncoding) - - [ ] M:SkiaSharp.SKTypeface.GetGlyphs(System.ReadOnlySpan{System.Byte},SkiaSharp.SKEncoding,System.UInt16[]@) - - [ ] M:SkiaSharp.SKTypeface.GetGlyphs(System.ReadOnlySpan{System.Byte},SkiaSharp.SKEncoding) - - [ ] M:SkiaSharp.SKTypeface.GetGlyphs(System.ReadOnlySpan{System.Byte},SkiaSharp.SKTextEncoding) - - [ ] M:SkiaSharp.SKTypeface.GetGlyphs(System.ReadOnlySpan{System.Char}) - - [ ] M:SkiaSharp.SKTypeface.GetGlyphs(System.ReadOnlySpan{System.Int32}) - - [ ] M:SkiaSharp.SKTypeface.GetGlyphs(System.String,SkiaSharp.SKEncoding,System.UInt16[]@) - - [ ] M:SkiaSharp.SKTypeface.GetGlyphs(System.String,SkiaSharp.SKEncoding) - - [ ] M:SkiaSharp.SKTypeface.GetGlyphs(System.String,System.UInt16[]@) - - [ ] M:SkiaSharp.SKTypeface.GetGlyphs(System.String) - - [ ] M:SkiaSharp.SKTypeface.GetKerningPairAdjustments(System.ReadOnlySpan{System.UInt16}) - - [ ] M:SkiaSharp.SKTypeface.GetTableData(System.UInt32) - - [ ] M:SkiaSharp.SKTypeface.GetTableSize(System.UInt32) - - [ ] M:SkiaSharp.SKTypeface.GetTableTags - - [ ] M:SkiaSharp.SKTypeface.OpenStream - - [ ] M:SkiaSharp.SKTypeface.OpenStream(System.Int32@) - - [ ] M:SkiaSharp.SKTypeface.ToFont - - [ ] M:SkiaSharp.SKTypeface.ToFont(System.Single,System.Single,System.Single) - - [ ] M:SkiaSharp.SKTypeface.TryGetTableData(System.UInt32,System.Byte[]@) - - [ ] M:SkiaSharp.SKTypeface.TryGetTableData(System.UInt32,System.Int32,System.Int32,System.IntPtr) - - [ ] M:SkiaSharp.SKTypeface.TryGetTableTags(System.UInt32[]@) - - [ ] P:SkiaSharp.SKTypeface.Default - - [ ] P:SkiaSharp.SKTypeface.FamilyName - - [ ] P:SkiaSharp.SKTypeface.FontSlant - - [ ] P:SkiaSharp.SKTypeface.FontStyle - - [ ] P:SkiaSharp.SKTypeface.FontWeight - - [ ] P:SkiaSharp.SKTypeface.FontWidth - - [ ] P:SkiaSharp.SKTypeface.GlyphCount - - [ ] P:SkiaSharp.SKTypeface.IsBold - - [ ] P:SkiaSharp.SKTypeface.IsFixedPitch - - [ ] P:SkiaSharp.SKTypeface.IsItalic - - [ ] P:SkiaSharp.SKTypeface.Style - - [ ] P:SkiaSharp.SKTypeface.TableCount - - [ ] P:SkiaSharp.SKTypeface.UnitsPerEm -- [ ] SkiaSharp.SKTypefaceStyle - - [ ] F:SkiaSharp.SKTypefaceStyle.Bold - - [ ] F:SkiaSharp.SKTypefaceStyle.BoldItalic - - [ ] F:SkiaSharp.SKTypefaceStyle.Italic - - [ ] F:SkiaSharp.SKTypefaceStyle.Normal -- [ ] SkiaSharp.SKVertexMode - - [ ] F:SkiaSharp.SKVertexMode.TriangleFan - - [ ] F:SkiaSharp.SKVertexMode.Triangles - - [ ] F:SkiaSharp.SKVertexMode.TriangleStrip -- [ ] SkiaSharp.SKVertices - - [ ] M:SkiaSharp.SKVertices.CreateCopy(SkiaSharp.SKVertexMode,SkiaSharp.SKPoint[],SkiaSharp.SKColor[]) - - [ ] M:SkiaSharp.SKVertices.CreateCopy(SkiaSharp.SKVertexMode,SkiaSharp.SKPoint[],SkiaSharp.SKPoint[],SkiaSharp.SKColor[],System.UInt16[]) - - [ ] M:SkiaSharp.SKVertices.CreateCopy(SkiaSharp.SKVertexMode,SkiaSharp.SKPoint[],SkiaSharp.SKPoint[],SkiaSharp.SKColor[]) - - [ ] M:SkiaSharp.SKVertices.Dispose(System.Boolean) -- [ ] SkiaSharp.SKWebpEncoderCompression - - [ ] F:SkiaSharp.SKWebpEncoderCompression.Lossless - - [ ] F:SkiaSharp.SKWebpEncoderCompression.Lossy -- [ ] SkiaSharp.SKWebpEncoderOptions - - [ ] F:SkiaSharp.SKWebpEncoderOptions.Default - - [ ] M:SkiaSharp.SKWebpEncoderOptions.#ctor(SkiaSharp.SKWebpEncoderCompression,System.Single,SkiaSharp.SKTransferFunctionBehavior) - - [ ] M:SkiaSharp.SKWebpEncoderOptions.#ctor(SkiaSharp.SKWebpEncoderCompression,System.Single) - - [ ] M:SkiaSharp.SKWebpEncoderOptions.Equals(SkiaSharp.SKWebpEncoderOptions) - - [ ] M:SkiaSharp.SKWebpEncoderOptions.Equals(System.Object) - - [ ] M:SkiaSharp.SKWebpEncoderOptions.GetHashCode - - [ ] M:SkiaSharp.SKWebpEncoderOptions.op_Equality(SkiaSharp.SKWebpEncoderOptions,SkiaSharp.SKWebpEncoderOptions) - - [ ] M:SkiaSharp.SKWebpEncoderOptions.op_Inequality(SkiaSharp.SKWebpEncoderOptions,SkiaSharp.SKWebpEncoderOptions) - - [ ] P:SkiaSharp.SKWebpEncoderOptions.Compression - - [ ] P:SkiaSharp.SKWebpEncoderOptions.Quality - - [ ] P:SkiaSharp.SKWebpEncoderOptions.UnpremulBehavior -- [ ] SkiaSharp.SKWStream - - [ ] M:SkiaSharp.SKWStream.Flush - - [ ] M:SkiaSharp.SKWStream.GetSizeOfPackedUInt32(System.UInt32) - - [ ] M:SkiaSharp.SKWStream.NewLine - - [ ] M:SkiaSharp.SKWStream.Write(System.Byte[],System.Int32) - - [ ] M:SkiaSharp.SKWStream.Write16(System.UInt16) - - [ ] M:SkiaSharp.SKWStream.Write32(System.UInt32) - - [ ] M:SkiaSharp.SKWStream.Write8(System.Byte) - - [ ] M:SkiaSharp.SKWStream.WriteBigDecimalAsText(System.Int64,System.Int32) - - [ ] M:SkiaSharp.SKWStream.WriteBool(System.Boolean) - - [ ] M:SkiaSharp.SKWStream.WriteDecimalAsTest(System.Int32) - - [ ] M:SkiaSharp.SKWStream.WriteHexAsText(System.UInt32,System.Int32) - - [ ] M:SkiaSharp.SKWStream.WritePackedUInt32(System.UInt32) - - [ ] M:SkiaSharp.SKWStream.WriteScalar(System.Single) - - [ ] M:SkiaSharp.SKWStream.WriteScalarAsText(System.Single) - - [ ] M:SkiaSharp.SKWStream.WriteStream(SkiaSharp.SKStream,System.Int32) - - [ ] M:SkiaSharp.SKWStream.WriteText(System.String) - - [ ] P:SkiaSharp.SKWStream.BytesWritten -- [ ] SkiaSharp.SKXmlStreamWriter - - [ ] M:SkiaSharp.SKXmlStreamWriter.#ctor(SkiaSharp.SKWStream) - - [ ] M:SkiaSharp.SKXmlStreamWriter.Dispose(System.Boolean) - - [ ] M:SkiaSharp.SKXmlStreamWriter.DisposeNative -- [ ] SkiaSharp.SKXmlWriter -- [ ] SkiaSharp.SKZeroInitialized - - [ ] F:SkiaSharp.SKZeroInitialized.No - - [ ] F:SkiaSharp.SKZeroInitialized.Yes -- [ ] SkiaSharp.StringUtilities - - [ ] M:SkiaSharp.StringUtilities.GetEncodedText(System.ReadOnlySpan{System.Char},SkiaSharp.SKTextEncoding) - - [ ] M:SkiaSharp.StringUtilities.GetEncodedText(System.String,SkiaSharp.SKEncoding) - - [ ] M:SkiaSharp.StringUtilities.GetEncodedText(System.String,SkiaSharp.SKTextEncoding) - - [ ] M:SkiaSharp.StringUtilities.GetString(System.Byte[],SkiaSharp.SKTextEncoding) - - [ ] M:SkiaSharp.StringUtilities.GetString(System.Byte[],System.Int32,System.Int32,SkiaSharp.SKTextEncoding) - - [ ] M:SkiaSharp.StringUtilities.GetString(System.IntPtr,System.Int32,SkiaSharp.SKTextEncoding) - - [ ] M:SkiaSharp.StringUtilities.GetString(System.ReadOnlySpan{System.Byte},SkiaSharp.SKTextEncoding) - - [ ] M:SkiaSharp.StringUtilities.GetString(System.ReadOnlySpan{System.Byte},System.Int32,System.Int32,SkiaSharp.SKTextEncoding) - - [ ] M:SkiaSharp.StringUtilities.GetUnicodeCharacterCode(System.String,SkiaSharp.SKTextEncoding) - -## Namespace SkiaSharp.HarfBuzz - -- [ ] SkiaSharp.HarfBuzz.BlobExtensions - - [ ] M:SkiaSharp.HarfBuzz.BlobExtensions.ToHarfBuzzBlob(SkiaSharp.SKStreamAsset) -- [ ] SkiaSharp.HarfBuzz.CanvasExtensions - - [ ] M:SkiaSharp.HarfBuzz.CanvasExtensions.DrawShapedText(SkiaSharp.SKCanvas,SkiaSharp.HarfBuzz.SKShaper,System.String,SkiaSharp.SKPoint,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.HarfBuzz.CanvasExtensions.DrawShapedText(SkiaSharp.SKCanvas,SkiaSharp.HarfBuzz.SKShaper,System.String,System.Single,System.Single,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.HarfBuzz.CanvasExtensions.DrawShapedText(SkiaSharp.SKCanvas,System.String,SkiaSharp.SKPoint,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.HarfBuzz.CanvasExtensions.DrawShapedText(SkiaSharp.SKCanvas,System.String,System.Single,System.Single,SkiaSharp.SKPaint) -- [ ] SkiaSharp.HarfBuzz.FontExtensions - - [ ] M:SkiaSharp.HarfBuzz.FontExtensions.GetScale(HarfBuzzSharp.Font) - - [ ] M:SkiaSharp.HarfBuzz.FontExtensions.SetScale(HarfBuzzSharp.Font,SkiaSharp.SKSizeI) -- [ ] SkiaSharp.HarfBuzz.SKShaper - - [ ] M:SkiaSharp.HarfBuzz.SKShaper.#ctor(SkiaSharp.SKTypeface) - - [ ] M:SkiaSharp.HarfBuzz.SKShaper.Dispose - - [ ] M:SkiaSharp.HarfBuzz.SKShaper.Shape(HarfBuzzSharp.Buffer,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.HarfBuzz.SKShaper.Shape(HarfBuzzSharp.Buffer,System.Single,System.Single,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.HarfBuzz.SKShaper.Shape(System.String,SkiaSharp.SKPaint) - - [ ] M:SkiaSharp.HarfBuzz.SKShaper.Shape(System.String,System.Single,System.Single,SkiaSharp.SKPaint) - - [ ] P:SkiaSharp.HarfBuzz.SKShaper.Typeface -- [ ] SkiaSharp.HarfBuzz.SKShaper.Result - - [ ] M:SkiaSharp.HarfBuzz.SKShaper.Result.#ctor - - [ ] M:SkiaSharp.HarfBuzz.SKShaper.Result.#ctor(System.UInt32[],System.UInt32[],SkiaSharp.SKPoint[],System.Single) - - [ ] M:SkiaSharp.HarfBuzz.SKShaper.Result.#ctor(System.UInt32[],System.UInt32[],SkiaSharp.SKPoint[]) - - [ ] P:SkiaSharp.HarfBuzz.SKShaper.Result.Clusters - - [ ] P:SkiaSharp.HarfBuzz.SKShaper.Result.Codepoints - - [ ] P:SkiaSharp.HarfBuzz.SKShaper.Result.Points - - [ ] P:SkiaSharp.HarfBuzz.SKShaper.Result.Width - -## Namespace SkiaSharp.Internals - -- [ ] SkiaSharp.Internals.IPlatformLock - - [ ] M:SkiaSharp.Internals.IPlatformLock.EnterReadLock - - [ ] M:SkiaSharp.Internals.IPlatformLock.EnterUpgradeableReadLock - - [ ] M:SkiaSharp.Internals.IPlatformLock.EnterWriteLock - - [ ] M:SkiaSharp.Internals.IPlatformLock.ExitReadLock - - [ ] M:SkiaSharp.Internals.IPlatformLock.ExitUpgradeableReadLock - - [ ] M:SkiaSharp.Internals.IPlatformLock.ExitWriteLock -- [ ] SkiaSharp.Internals.PlatformConfiguration - - [ ] P:SkiaSharp.Internals.PlatformConfiguration.Is64Bit - - [ ] P:SkiaSharp.Internals.PlatformConfiguration.IsArm - - [ ] P:SkiaSharp.Internals.PlatformConfiguration.IsGlibc - - [ ] P:SkiaSharp.Internals.PlatformConfiguration.IsLinux - - [ ] P:SkiaSharp.Internals.PlatformConfiguration.IsMac - - [ ] P:SkiaSharp.Internals.PlatformConfiguration.IsUnix - - [ ] P:SkiaSharp.Internals.PlatformConfiguration.IsWindows - - [ ] P:SkiaSharp.Internals.PlatformConfiguration.LinuxFlavor -- [ ] SkiaSharp.Internals.PlatformLock - - [ ] M:SkiaSharp.Internals.PlatformLock.Create - - [ ] M:SkiaSharp.Internals.PlatformLock.DefaultFactory - - [ ] P:SkiaSharp.Internals.PlatformLock.Factory - -## Namespace SkiaSharp.SceneGraph - -- [ ] SkiaSharp.SceneGraph.InvalidationController - - [ ] M:SkiaSharp.SceneGraph.InvalidationController.#ctor - - [ ] M:SkiaSharp.SceneGraph.InvalidationController.Begin - - [ ] M:SkiaSharp.SceneGraph.InvalidationController.DisposeNative - - [ ] M:SkiaSharp.SceneGraph.InvalidationController.End - - [ ] M:SkiaSharp.SceneGraph.InvalidationController.Invalidate(SkiaSharp.SKRect,SkiaSharp.SKMatrix) - - [ ] M:SkiaSharp.SceneGraph.InvalidationController.Reset - - [ ] P:SkiaSharp.SceneGraph.InvalidationController.Bounds - -## Namespace SkiaSharp.Skottie - -- [ ] SkiaSharp.Skottie.Animation - - [ ] M:SkiaSharp.Skottie.Animation.Create(SkiaSharp.SKData) - - [ ] M:SkiaSharp.Skottie.Animation.Create(SkiaSharp.SKStream) - - [ ] M:SkiaSharp.Skottie.Animation.Create(System.IO.Stream) - - [ ] M:SkiaSharp.Skottie.Animation.Create(System.String) - - [ ] M:SkiaSharp.Skottie.Animation.DisposeNative - - [ ] M:SkiaSharp.Skottie.Animation.Parse(System.String) - - [ ] M:SkiaSharp.Skottie.Animation.Render(SkiaSharp.SKCanvas,SkiaSharp.SKRect,SkiaSharp.Skottie.AnimationRenderFlags) - - [ ] M:SkiaSharp.Skottie.Animation.Render(SkiaSharp.SKCanvas,SkiaSharp.SKRect) - - [ ] M:SkiaSharp.Skottie.Animation.Seek(System.Double,SkiaSharp.SceneGraph.InvalidationController) - - [ ] M:SkiaSharp.Skottie.Animation.SeekFrame(System.Double,SkiaSharp.SceneGraph.InvalidationController) - - [ ] M:SkiaSharp.Skottie.Animation.SeekFrameTime(System.Double,SkiaSharp.SceneGraph.InvalidationController) - - [ ] M:SkiaSharp.Skottie.Animation.SeekFrameTime(System.TimeSpan,SkiaSharp.SceneGraph.InvalidationController) - - [ ] M:SkiaSharp.Skottie.Animation.TryCreate(SkiaSharp.SKData,SkiaSharp.Skottie.Animation@) - - [ ] M:SkiaSharp.Skottie.Animation.TryCreate(SkiaSharp.SKStream,SkiaSharp.Skottie.Animation@) - - [ ] M:SkiaSharp.Skottie.Animation.TryCreate(System.IO.Stream,SkiaSharp.Skottie.Animation@) - - [ ] M:SkiaSharp.Skottie.Animation.TryCreate(System.String,SkiaSharp.Skottie.Animation@) - - [ ] M:SkiaSharp.Skottie.Animation.TryParse(System.String,SkiaSharp.Skottie.Animation@) - - [ ] P:SkiaSharp.Skottie.Animation.Duration - - [ ] P:SkiaSharp.Skottie.Animation.Fps - - [ ] P:SkiaSharp.Skottie.Animation.InPoint - - [ ] P:SkiaSharp.Skottie.Animation.OutPoint - - [ ] P:SkiaSharp.Skottie.Animation.Size - - [ ] P:SkiaSharp.Skottie.Animation.Version -- [ ] SkiaSharp.Skottie.AnimationRenderFlags - - [ ] F:SkiaSharp.Skottie.AnimationRenderFlags.DisableTopLevelClipping - - [ ] F:SkiaSharp.Skottie.AnimationRenderFlags.SkipTopLevelIsolation - -## Namespace SkiaSharp.Views.Android - -- [ ] SkiaSharp.Views.Android.AndroidExtensions - - [ ] M:SkiaSharp.Views.Android.AndroidExtensions.ToBitmap(SkiaSharp.SKBitmap) - - [ ] M:SkiaSharp.Views.Android.AndroidExtensions.ToBitmap(SkiaSharp.SKImage) - - [ ] M:SkiaSharp.Views.Android.AndroidExtensions.ToBitmap(SkiaSharp.SKPicture,SkiaSharp.SKSizeI) - - [ ] M:SkiaSharp.Views.Android.AndroidExtensions.ToBitmap(SkiaSharp.SKPixmap) - - [ ] M:SkiaSharp.Views.Android.AndroidExtensions.ToColor(SkiaSharp.SKColor) - - [ ] M:SkiaSharp.Views.Android.AndroidExtensions.ToMatrix(SkiaSharp.SKMatrix) - - [ ] M:SkiaSharp.Views.Android.AndroidExtensions.ToPoint(SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.Views.Android.AndroidExtensions.ToPoint(SkiaSharp.SKPointI) - - [ ] M:SkiaSharp.Views.Android.AndroidExtensions.ToRect(SkiaSharp.SKRect) - - [ ] M:SkiaSharp.Views.Android.AndroidExtensions.ToRect(SkiaSharp.SKRectI) - - [ ] M:SkiaSharp.Views.Android.AndroidExtensions.ToSKBitmap(Android.Graphics.Bitmap) - - [ ] M:SkiaSharp.Views.Android.AndroidExtensions.ToSKColor(Android.Graphics.Color) - - [ ] M:SkiaSharp.Views.Android.AndroidExtensions.ToSKImage(Android.Graphics.Bitmap) - - [ ] M:SkiaSharp.Views.Android.AndroidExtensions.ToSKMatrix(Android.Graphics.Matrix) - - [ ] M:SkiaSharp.Views.Android.AndroidExtensions.ToSKPixmap(Android.Graphics.Bitmap,SkiaSharp.SKPixmap) - - [ ] M:SkiaSharp.Views.Android.AndroidExtensions.ToSKPoint(Android.Graphics.Point) - - [ ] M:SkiaSharp.Views.Android.AndroidExtensions.ToSKPoint(Android.Graphics.PointF) - - [ ] M:SkiaSharp.Views.Android.AndroidExtensions.ToSKRect(Android.Graphics.Rect) - - [ ] M:SkiaSharp.Views.Android.AndroidExtensions.ToSKRect(Android.Graphics.RectF) -- [ ] SkiaSharp.Views.Android.Extensions - - [ ] M:SkiaSharp.Views.Android.Extensions.ToDrawingColor(SkiaSharp.SKColor) - - [ ] M:SkiaSharp.Views.Android.Extensions.ToDrawingPoint(SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.Views.Android.Extensions.ToDrawingPoint(SkiaSharp.SKPointI) - - [ ] M:SkiaSharp.Views.Android.Extensions.ToDrawingRect(SkiaSharp.SKRect) - - [ ] M:SkiaSharp.Views.Android.Extensions.ToDrawingRect(SkiaSharp.SKRectI) - - [ ] M:SkiaSharp.Views.Android.Extensions.ToDrawingSize(SkiaSharp.SKSize) - - [ ] M:SkiaSharp.Views.Android.Extensions.ToDrawingSize(SkiaSharp.SKSizeI) - - [ ] M:SkiaSharp.Views.Android.Extensions.ToSKColor(System.Drawing.Color) - - [ ] M:SkiaSharp.Views.Android.Extensions.ToSKPoint(System.Drawing.Point) - - [ ] M:SkiaSharp.Views.Android.Extensions.ToSKPoint(System.Drawing.PointF) - - [ ] M:SkiaSharp.Views.Android.Extensions.ToSKRect(System.Drawing.Rectangle) - - [ ] M:SkiaSharp.Views.Android.Extensions.ToSKRect(System.Drawing.RectangleF) - - [ ] M:SkiaSharp.Views.Android.Extensions.ToSKSize(System.Drawing.Size) - - [ ] M:SkiaSharp.Views.Android.Extensions.ToSKSize(System.Drawing.SizeF) -- [ ] SkiaSharp.Views.Android.GLTextureView - - [ ] M:SkiaSharp.Views.Android.GLTextureView.#ctor(Android.Content.Context,Android.Util.IAttributeSet) - - [ ] M:SkiaSharp.Views.Android.GLTextureView.#ctor(Android.Content.Context) - - [ ] M:SkiaSharp.Views.Android.GLTextureView.Dispose(System.Boolean) - - [ ] M:SkiaSharp.Views.Android.GLTextureView.OnAttachedToWindow - - [ ] M:SkiaSharp.Views.Android.GLTextureView.OnDetachedFromWindow - - [ ] M:SkiaSharp.Views.Android.GLTextureView.OnLayoutChange(Android.Views.View,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32) - - [ ] M:SkiaSharp.Views.Android.GLTextureView.OnPause - - [ ] M:SkiaSharp.Views.Android.GLTextureView.OnResume - - [ ] M:SkiaSharp.Views.Android.GLTextureView.OnSurfaceTextureAvailable(Android.Graphics.SurfaceTexture,System.Int32,System.Int32) - - [ ] M:SkiaSharp.Views.Android.GLTextureView.OnSurfaceTextureDestroyed(Android.Graphics.SurfaceTexture) - - [ ] M:SkiaSharp.Views.Android.GLTextureView.OnSurfaceTextureSizeChanged(Android.Graphics.SurfaceTexture,System.Int32,System.Int32) - - [ ] M:SkiaSharp.Views.Android.GLTextureView.OnSurfaceTextureUpdated(Android.Graphics.SurfaceTexture) - - [ ] M:SkiaSharp.Views.Android.GLTextureView.QueueEvent(Java.Lang.IRunnable) - - [ ] M:SkiaSharp.Views.Android.GLTextureView.QueueEvent(System.Action) - - [ ] M:SkiaSharp.Views.Android.GLTextureView.RequestRender - - [ ] M:SkiaSharp.Views.Android.GLTextureView.SetEGLConfigChooser(SkiaSharp.Views.Android.GLTextureView.IEGLConfigChooser) - - [ ] M:SkiaSharp.Views.Android.GLTextureView.SetEGLConfigChooser(System.Boolean) - - [ ] M:SkiaSharp.Views.Android.GLTextureView.SetEGLConfigChooser(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32) - - [ ] M:SkiaSharp.Views.Android.GLTextureView.SetEGLContextClientVersion(System.Int32) - - [ ] M:SkiaSharp.Views.Android.GLTextureView.SetEGLContextFactory(SkiaSharp.Views.Android.GLTextureView.IEGLContextFactory) - - [ ] M:SkiaSharp.Views.Android.GLTextureView.SetEGLWindowSurfaceFactory(SkiaSharp.Views.Android.GLTextureView.IEGLWindowSurfaceFactory) - - [ ] M:SkiaSharp.Views.Android.GLTextureView.SetGLWrapper(SkiaSharp.Views.Android.GLTextureView.IGLWrapper) - - [ ] M:SkiaSharp.Views.Android.GLTextureView.SetRenderer(SkiaSharp.Views.Android.GLTextureView.IRenderer) - - [ ] P:SkiaSharp.Views.Android.GLTextureView.DebugFlags - - [ ] P:SkiaSharp.Views.Android.GLTextureView.PreserveEGLContextOnPause - - [ ] P:SkiaSharp.Views.Android.GLTextureView.RenderMode -- [ ] SkiaSharp.Views.Android.GLTextureView.IEGLConfigChooser - - [ ] M:SkiaSharp.Views.Android.GLTextureView.IEGLConfigChooser.ChooseConfig(Javax.Microedition.Khronos.Egl.IEGL10,Javax.Microedition.Khronos.Egl.EGLDisplay) -- [ ] SkiaSharp.Views.Android.GLTextureView.IEGLContextFactory - - [ ] M:SkiaSharp.Views.Android.GLTextureView.IEGLContextFactory.CreateContext(Javax.Microedition.Khronos.Egl.IEGL10,Javax.Microedition.Khronos.Egl.EGLDisplay,Javax.Microedition.Khronos.Egl.EGLConfig) - - [ ] M:SkiaSharp.Views.Android.GLTextureView.IEGLContextFactory.DestroyContext(Javax.Microedition.Khronos.Egl.IEGL10,Javax.Microedition.Khronos.Egl.EGLDisplay,Javax.Microedition.Khronos.Egl.EGLContext) -- [ ] SkiaSharp.Views.Android.GLTextureView.IEGLWindowSurfaceFactory - - [ ] M:SkiaSharp.Views.Android.GLTextureView.IEGLWindowSurfaceFactory.CreateWindowSurface(Javax.Microedition.Khronos.Egl.IEGL10,Javax.Microedition.Khronos.Egl.EGLDisplay,Javax.Microedition.Khronos.Egl.EGLConfig,Java.Lang.Object) - - [ ] M:SkiaSharp.Views.Android.GLTextureView.IEGLWindowSurfaceFactory.DestroySurface(Javax.Microedition.Khronos.Egl.IEGL10,Javax.Microedition.Khronos.Egl.EGLDisplay,Javax.Microedition.Khronos.Egl.EGLSurface) -- [ ] SkiaSharp.Views.Android.GLTextureView.IGLWrapper - - [ ] M:SkiaSharp.Views.Android.GLTextureView.IGLWrapper.Wrap(Javax.Microedition.Khronos.Opengles.IGL) -- [ ] SkiaSharp.Views.Android.GLTextureView.IRenderer - - [ ] M:SkiaSharp.Views.Android.GLTextureView.IRenderer.OnDrawFrame(Javax.Microedition.Khronos.Opengles.IGL10) - - [ ] M:SkiaSharp.Views.Android.GLTextureView.IRenderer.OnSurfaceChanged(Javax.Microedition.Khronos.Opengles.IGL10,System.Int32,System.Int32) - - [ ] M:SkiaSharp.Views.Android.GLTextureView.IRenderer.OnSurfaceCreated(Javax.Microedition.Khronos.Opengles.IGL10,Javax.Microedition.Khronos.Egl.EGLConfig) - - [ ] M:SkiaSharp.Views.Android.GLTextureView.IRenderer.OnSurfaceDestroyed -- [ ] SkiaSharp.Views.Android.SKCanvasView - - [ ] E:SkiaSharp.Views.Android.SKCanvasView.PaintSurface - - [ ] M:SkiaSharp.Views.Android.SKCanvasView.#ctor(Android.Content.Context,Android.Util.IAttributeSet,System.Int32) - - [ ] M:SkiaSharp.Views.Android.SKCanvasView.#ctor(Android.Content.Context,Android.Util.IAttributeSet) - - [ ] M:SkiaSharp.Views.Android.SKCanvasView.#ctor(Android.Content.Context) - - [ ] M:SkiaSharp.Views.Android.SKCanvasView.#ctor(System.IntPtr,Android.Runtime.JniHandleOwnership) - - [ ] M:SkiaSharp.Views.Android.SKCanvasView.Dispose(System.Boolean) - - [ ] M:SkiaSharp.Views.Android.SKCanvasView.OnAttachedToWindow - - [ ] M:SkiaSharp.Views.Android.SKCanvasView.OnDetachedFromWindow - - [ ] M:SkiaSharp.Views.Android.SKCanvasView.OnDraw(Android.Graphics.Canvas) - - [ ] M:SkiaSharp.Views.Android.SKCanvasView.OnDraw(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo) - - [ ] M:SkiaSharp.Views.Android.SKCanvasView.OnPaintSurface(SkiaSharp.Views.Android.SKPaintSurfaceEventArgs) - - [ ] M:SkiaSharp.Views.Android.SKCanvasView.OnSizeChanged(System.Int32,System.Int32,System.Int32,System.Int32) - - [ ] P:SkiaSharp.Views.Android.SKCanvasView.CanvasSize - - [ ] P:SkiaSharp.Views.Android.SKCanvasView.IgnorePixelScaling -- [ ] SkiaSharp.Views.Android.SKGLSurfaceView - - [ ] E:SkiaSharp.Views.Android.SKGLSurfaceView.PaintSurface - - [ ] M:SkiaSharp.Views.Android.SKGLSurfaceView.#ctor(Android.Content.Context,Android.Util.IAttributeSet) - - [ ] M:SkiaSharp.Views.Android.SKGLSurfaceView.#ctor(Android.Content.Context) - - [ ] M:SkiaSharp.Views.Android.SKGLSurfaceView.OnPaintSurface(SkiaSharp.Views.Android.SKPaintGLSurfaceEventArgs) - - [ ] M:SkiaSharp.Views.Android.SKGLSurfaceView.SetRenderer(SkiaSharp.Views.Android.SKGLSurfaceView.ISKRenderer) - - [ ] P:SkiaSharp.Views.Android.SKGLSurfaceView.CanvasSize - - [ ] P:SkiaSharp.Views.Android.SKGLSurfaceView.GRContext -- [ ] SkiaSharp.Views.Android.SKGLSurfaceView.ISKRenderer - - [ ] M:SkiaSharp.Views.Android.SKGLSurfaceView.ISKRenderer.OnDrawFrame(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTargetDesc) -- [ ] SkiaSharp.Views.Android.SKGLSurfaceViewRenderer - - [ ] M:SkiaSharp.Views.Android.SKGLSurfaceViewRenderer.#ctor - - [ ] M:SkiaSharp.Views.Android.SKGLSurfaceViewRenderer.Dispose(System.Boolean) - - [ ] M:SkiaSharp.Views.Android.SKGLSurfaceViewRenderer.OnDrawFrame(Javax.Microedition.Khronos.Opengles.IGL10) - - [ ] M:SkiaSharp.Views.Android.SKGLSurfaceViewRenderer.OnDrawFrame(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTargetDesc) - - [ ] M:SkiaSharp.Views.Android.SKGLSurfaceViewRenderer.OnPaintSurface(SkiaSharp.Views.Android.SKPaintGLSurfaceEventArgs) - - [ ] M:SkiaSharp.Views.Android.SKGLSurfaceViewRenderer.OnSurfaceChanged(Javax.Microedition.Khronos.Opengles.IGL10,System.Int32,System.Int32) - - [ ] M:SkiaSharp.Views.Android.SKGLSurfaceViewRenderer.OnSurfaceCreated(Javax.Microedition.Khronos.Opengles.IGL10,Javax.Microedition.Khronos.Egl.EGLConfig) - - [ ] P:SkiaSharp.Views.Android.SKGLSurfaceViewRenderer.CanvasSize - - [ ] P:SkiaSharp.Views.Android.SKGLSurfaceViewRenderer.GRContext -- [ ] SkiaSharp.Views.Android.SKGLTextureView - - [ ] E:SkiaSharp.Views.Android.SKGLTextureView.PaintSurface - - [ ] M:SkiaSharp.Views.Android.SKGLTextureView.#ctor(Android.Content.Context,Android.Util.IAttributeSet) - - [ ] M:SkiaSharp.Views.Android.SKGLTextureView.#ctor(Android.Content.Context) - - [ ] M:SkiaSharp.Views.Android.SKGLTextureView.OnPaintSurface(SkiaSharp.Views.Android.SKPaintGLSurfaceEventArgs) - - [ ] M:SkiaSharp.Views.Android.SKGLTextureView.SetRenderer(SkiaSharp.Views.Android.SKGLTextureView.ISKRenderer) - - [ ] P:SkiaSharp.Views.Android.SKGLTextureView.CanvasSize - - [ ] P:SkiaSharp.Views.Android.SKGLTextureView.GRContext -- [ ] SkiaSharp.Views.Android.SKGLTextureView.ISKRenderer - - [ ] M:SkiaSharp.Views.Android.SKGLTextureView.ISKRenderer.OnDrawFrame(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTargetDesc) -- [ ] SkiaSharp.Views.Android.SKGLTextureViewRenderer - - [ ] M:SkiaSharp.Views.Android.SKGLTextureViewRenderer.#ctor - - [ ] M:SkiaSharp.Views.Android.SKGLTextureViewRenderer.Dispose(System.Boolean) - - [ ] M:SkiaSharp.Views.Android.SKGLTextureViewRenderer.OnDrawFrame(Javax.Microedition.Khronos.Opengles.IGL10) - - [ ] M:SkiaSharp.Views.Android.SKGLTextureViewRenderer.OnDrawFrame(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTargetDesc) - - [ ] M:SkiaSharp.Views.Android.SKGLTextureViewRenderer.OnPaintSurface(SkiaSharp.Views.Android.SKPaintGLSurfaceEventArgs) - - [ ] M:SkiaSharp.Views.Android.SKGLTextureViewRenderer.OnSurfaceChanged(Javax.Microedition.Khronos.Opengles.IGL10,System.Int32,System.Int32) - - [ ] M:SkiaSharp.Views.Android.SKGLTextureViewRenderer.OnSurfaceCreated(Javax.Microedition.Khronos.Opengles.IGL10,Javax.Microedition.Khronos.Egl.EGLConfig) - - [ ] M:SkiaSharp.Views.Android.SKGLTextureViewRenderer.OnSurfaceDestroyed - - [ ] P:SkiaSharp.Views.Android.SKGLTextureViewRenderer.CanvasSize - - [ ] P:SkiaSharp.Views.Android.SKGLTextureViewRenderer.GRContext -- [ ] SkiaSharp.Views.Android.SKLockedSurface - - [ ] P:SkiaSharp.Views.Android.SKLockedSurface.Canvas - - [ ] P:SkiaSharp.Views.Android.SKLockedSurface.ImageInfo - - [ ] P:SkiaSharp.Views.Android.SKLockedSurface.Surface -- [ ] SkiaSharp.Views.Android.SKPaintGLSurfaceEventArgs - - [ ] M:SkiaSharp.Views.Android.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.GRGlFramebufferInfo) - - [ ] M:SkiaSharp.Views.Android.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType) - - [ ] M:SkiaSharp.Views.Android.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKImageInfo,SkiaSharp.SKImageInfo) - - [ ] M:SkiaSharp.Views.Android.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKImageInfo) - - [ ] M:SkiaSharp.Views.Android.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget) - - [ ] M:SkiaSharp.Views.Android.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTargetDesc) - - [ ] P:SkiaSharp.Views.Android.SKPaintGLSurfaceEventArgs.BackendRenderTarget - - [ ] P:SkiaSharp.Views.Android.SKPaintGLSurfaceEventArgs.ColorType - - [ ] P:SkiaSharp.Views.Android.SKPaintGLSurfaceEventArgs.Info - - [ ] P:SkiaSharp.Views.Android.SKPaintGLSurfaceEventArgs.Origin - - [ ] P:SkiaSharp.Views.Android.SKPaintGLSurfaceEventArgs.RawInfo - - [ ] P:SkiaSharp.Views.Android.SKPaintGLSurfaceEventArgs.RenderTarget - - [ ] P:SkiaSharp.Views.Android.SKPaintGLSurfaceEventArgs.Surface -- [ ] SkiaSharp.Views.Android.SKPaintSurfaceEventArgs - - [ ] M:SkiaSharp.Views.Android.SKPaintSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo,SkiaSharp.SKImageInfo) - - [ ] M:SkiaSharp.Views.Android.SKPaintSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo) - - [ ] P:SkiaSharp.Views.Android.SKPaintSurfaceEventArgs.Info - - [ ] P:SkiaSharp.Views.Android.SKPaintSurfaceEventArgs.RawInfo - - [ ] P:SkiaSharp.Views.Android.SKPaintSurfaceEventArgs.Surface -- [ ] SkiaSharp.Views.Android.SKSurfaceView - - [ ] M:SkiaSharp.Views.Android.SKSurfaceView.#ctor(Android.Content.Context,Android.Util.IAttributeSet,System.Int32) - - [ ] M:SkiaSharp.Views.Android.SKSurfaceView.#ctor(Android.Content.Context,Android.Util.IAttributeSet) - - [ ] M:SkiaSharp.Views.Android.SKSurfaceView.#ctor(Android.Content.Context) - - [ ] M:SkiaSharp.Views.Android.SKSurfaceView.Dispose(System.Boolean) - - [ ] M:SkiaSharp.Views.Android.SKSurfaceView.LockSurface - - [ ] M:SkiaSharp.Views.Android.SKSurfaceView.SurfaceChanged(Android.Views.ISurfaceHolder,Android.Graphics.Format,System.Int32,System.Int32) - - [ ] M:SkiaSharp.Views.Android.SKSurfaceView.SurfaceCreated(Android.Views.ISurfaceHolder) - - [ ] M:SkiaSharp.Views.Android.SKSurfaceView.SurfaceDestroyed(Android.Views.ISurfaceHolder) - - [ ] M:SkiaSharp.Views.Android.SKSurfaceView.UnlockSurfaceAndPost(SkiaSharp.Views.Android.SKLockedSurface) - - [ ] P:SkiaSharp.Views.Android.SKSurfaceView.CanvasSize - -## Namespace SkiaSharp.Views.Blazor - -- [ ] SkiaSharp.Views.Blazor.SKCanvasView - - [ ] M:SkiaSharp.Views.Blazor.SKCanvasView.#ctor - - [ ] M:SkiaSharp.Views.Blazor.SKCanvasView.BuildRenderTree(Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder) - - [ ] M:SkiaSharp.Views.Blazor.SKCanvasView.Dispose - - [ ] M:SkiaSharp.Views.Blazor.SKCanvasView.Invalidate - - [ ] M:SkiaSharp.Views.Blazor.SKCanvasView.OnAfterRenderAsync(System.Boolean) - - [ ] P:SkiaSharp.Views.Blazor.SKCanvasView.AdditionalAttributes - - [ ] P:SkiaSharp.Views.Blazor.SKCanvasView.EnableRenderLoop - - [ ] P:SkiaSharp.Views.Blazor.SKCanvasView.IgnorePixelScaling - - [ ] P:SkiaSharp.Views.Blazor.SKCanvasView.OnPaintSurface -- [ ] SkiaSharp.Views.Blazor.SKGLView - - [ ] M:SkiaSharp.Views.Blazor.SKGLView.#ctor - - [ ] M:SkiaSharp.Views.Blazor.SKGLView.BuildRenderTree(Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder) - - [ ] M:SkiaSharp.Views.Blazor.SKGLView.Dispose - - [ ] M:SkiaSharp.Views.Blazor.SKGLView.Invalidate - - [ ] M:SkiaSharp.Views.Blazor.SKGLView.OnAfterRenderAsync(System.Boolean) - - [ ] P:SkiaSharp.Views.Blazor.SKGLView.AdditionalAttributes - - [ ] P:SkiaSharp.Views.Blazor.SKGLView.EnableRenderLoop - - [ ] P:SkiaSharp.Views.Blazor.SKGLView.IgnorePixelScaling - - [ ] P:SkiaSharp.Views.Blazor.SKGLView.OnPaintSurface -- [ ] SkiaSharp.Views.Blazor.SKPaintGLSurfaceEventArgs - - [ ] M:SkiaSharp.Views.Blazor.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType) - - [ ] M:SkiaSharp.Views.Blazor.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKImageInfo,SkiaSharp.SKImageInfo) - - [ ] M:SkiaSharp.Views.Blazor.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKImageInfo) - - [ ] M:SkiaSharp.Views.Blazor.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget) - - [ ] P:SkiaSharp.Views.Blazor.SKPaintGLSurfaceEventArgs.BackendRenderTarget - - [ ] P:SkiaSharp.Views.Blazor.SKPaintGLSurfaceEventArgs.ColorType - - [ ] P:SkiaSharp.Views.Blazor.SKPaintGLSurfaceEventArgs.Info - - [ ] P:SkiaSharp.Views.Blazor.SKPaintGLSurfaceEventArgs.Origin - - [ ] P:SkiaSharp.Views.Blazor.SKPaintGLSurfaceEventArgs.RawInfo - - [ ] P:SkiaSharp.Views.Blazor.SKPaintGLSurfaceEventArgs.Surface -- [ ] SkiaSharp.Views.Blazor.SKPaintSurfaceEventArgs - - [ ] M:SkiaSharp.Views.Blazor.SKPaintSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo,SkiaSharp.SKImageInfo) - - [ ] M:SkiaSharp.Views.Blazor.SKPaintSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo) - - [ ] P:SkiaSharp.Views.Blazor.SKPaintSurfaceEventArgs.Info - - [ ] P:SkiaSharp.Views.Blazor.SKPaintSurfaceEventArgs.RawInfo - - [ ] P:SkiaSharp.Views.Blazor.SKPaintSurfaceEventArgs.Surface - -## Namespace SkiaSharp.Views.Blazor.Internal - -- [ ] SkiaSharp.Views.Blazor.Internal.ActionHelper - - [ ] M:SkiaSharp.Views.Blazor.Internal.ActionHelper.#ctor(System.Action) - - [ ] M:SkiaSharp.Views.Blazor.Internal.ActionHelper.Invoke -- [ ] SkiaSharp.Views.Blazor.Internal.FloatFloatActionHelper - - [ ] M:SkiaSharp.Views.Blazor.Internal.FloatFloatActionHelper.#ctor(System.Action{System.Single,System.Single}) - - [ ] M:SkiaSharp.Views.Blazor.Internal.FloatFloatActionHelper.Invoke(System.Single,System.Single) - -## Namespace SkiaSharp.Views.Desktop - -- [ ] SkiaSharp.Views.Desktop.Extensions - - [ ] M:SkiaSharp.Views.Desktop.Extensions.ToBitmap(SkiaSharp.SKBitmap) - - [ ] M:SkiaSharp.Views.Desktop.Extensions.ToBitmap(SkiaSharp.SKImage) - - [ ] M:SkiaSharp.Views.Desktop.Extensions.ToBitmap(SkiaSharp.SKPicture,SkiaSharp.SKSizeI) - - [ ] M:SkiaSharp.Views.Desktop.Extensions.ToBitmap(SkiaSharp.SKPixmap) - - [ ] M:SkiaSharp.Views.Desktop.Extensions.ToDrawingColor(SkiaSharp.SKColor) - - [ ] M:SkiaSharp.Views.Desktop.Extensions.ToDrawingPoint(SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.Views.Desktop.Extensions.ToDrawingPoint(SkiaSharp.SKPointI) - - [ ] M:SkiaSharp.Views.Desktop.Extensions.ToDrawingRect(SkiaSharp.SKRect) - - [ ] M:SkiaSharp.Views.Desktop.Extensions.ToDrawingRect(SkiaSharp.SKRectI) - - [ ] M:SkiaSharp.Views.Desktop.Extensions.ToDrawingSize(SkiaSharp.SKSize) - - [ ] M:SkiaSharp.Views.Desktop.Extensions.ToDrawingSize(SkiaSharp.SKSizeI) - - [ ] M:SkiaSharp.Views.Desktop.Extensions.ToSKBitmap(System.Drawing.Bitmap) - - [ ] M:SkiaSharp.Views.Desktop.Extensions.ToSKColor(System.Drawing.Color) - - [ ] M:SkiaSharp.Views.Desktop.Extensions.ToSKImage(System.Drawing.Bitmap) - - [ ] M:SkiaSharp.Views.Desktop.Extensions.ToSKPixmap(System.Drawing.Bitmap,SkiaSharp.SKPixmap) - - [ ] M:SkiaSharp.Views.Desktop.Extensions.ToSKPoint(System.Drawing.Point) - - [ ] M:SkiaSharp.Views.Desktop.Extensions.ToSKPoint(System.Drawing.PointF) - - [ ] M:SkiaSharp.Views.Desktop.Extensions.ToSKRect(System.Drawing.Rectangle) - - [ ] M:SkiaSharp.Views.Desktop.Extensions.ToSKRect(System.Drawing.RectangleF) - - [ ] M:SkiaSharp.Views.Desktop.Extensions.ToSKSize(System.Drawing.Size) - - [ ] M:SkiaSharp.Views.Desktop.Extensions.ToSKSize(System.Drawing.SizeF) -- [ ] SkiaSharp.Views.Desktop.SKControl - - [ ] E:SkiaSharp.Views.Desktop.SKControl.PaintSurface - - [ ] M:SkiaSharp.Views.Desktop.SKControl.#ctor - - [ ] M:SkiaSharp.Views.Desktop.SKControl.Dispose(System.Boolean) - - [ ] M:SkiaSharp.Views.Desktop.SKControl.OnPaint(System.Windows.Forms.PaintEventArgs) - - [ ] M:SkiaSharp.Views.Desktop.SKControl.OnPaintSurface(SkiaSharp.Views.Desktop.SKPaintSurfaceEventArgs) - - [ ] P:SkiaSharp.Views.Desktop.SKControl.CanvasSize -- [ ] SkiaSharp.Views.Desktop.SKGLControl - - [ ] E:SkiaSharp.Views.Desktop.SKGLControl.PaintSurface - - [ ] M:SkiaSharp.Views.Desktop.SKGLControl.#ctor - - [ ] M:SkiaSharp.Views.Desktop.SKGLControl.#ctor(OpenTK.Graphics.GraphicsMode,System.Int32,System.Int32,OpenTK.Graphics.GraphicsContextFlags) - - [ ] M:SkiaSharp.Views.Desktop.SKGLControl.#ctor(OpenTK.Graphics.GraphicsMode) - - [ ] M:SkiaSharp.Views.Desktop.SKGLControl.Dispose(System.Boolean) - - [ ] M:SkiaSharp.Views.Desktop.SKGLControl.OnPaint(System.Windows.Forms.PaintEventArgs) - - [ ] M:SkiaSharp.Views.Desktop.SKGLControl.OnPaintSurface(SkiaSharp.Views.Desktop.SKPaintGLSurfaceEventArgs) - - [ ] P:SkiaSharp.Views.Desktop.SKGLControl.CanvasSize - - [ ] P:SkiaSharp.Views.Desktop.SKGLControl.GRContext -- [ ] SkiaSharp.Views.Desktop.SKPaintGLSurfaceEventArgs - - [ ] M:SkiaSharp.Views.Desktop.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.GRGlFramebufferInfo) - - [ ] M:SkiaSharp.Views.Desktop.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType) - - [ ] M:SkiaSharp.Views.Desktop.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKImageInfo,SkiaSharp.SKImageInfo) - - [ ] M:SkiaSharp.Views.Desktop.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKImageInfo) - - [ ] M:SkiaSharp.Views.Desktop.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget) - - [ ] M:SkiaSharp.Views.Desktop.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTargetDesc) - - [ ] P:SkiaSharp.Views.Desktop.SKPaintGLSurfaceEventArgs.BackendRenderTarget - - [ ] P:SkiaSharp.Views.Desktop.SKPaintGLSurfaceEventArgs.ColorType - - [ ] P:SkiaSharp.Views.Desktop.SKPaintGLSurfaceEventArgs.Info - - [ ] P:SkiaSharp.Views.Desktop.SKPaintGLSurfaceEventArgs.Origin - - [ ] P:SkiaSharp.Views.Desktop.SKPaintGLSurfaceEventArgs.RawInfo - - [ ] P:SkiaSharp.Views.Desktop.SKPaintGLSurfaceEventArgs.RenderTarget - - [ ] P:SkiaSharp.Views.Desktop.SKPaintGLSurfaceEventArgs.Surface -- [ ] SkiaSharp.Views.Desktop.SKPaintSurfaceEventArgs - - [ ] M:SkiaSharp.Views.Desktop.SKPaintSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo,SkiaSharp.SKImageInfo) - - [ ] M:SkiaSharp.Views.Desktop.SKPaintSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo) - - [ ] P:SkiaSharp.Views.Desktop.SKPaintSurfaceEventArgs.Info - - [ ] P:SkiaSharp.Views.Desktop.SKPaintSurfaceEventArgs.RawInfo - - [ ] P:SkiaSharp.Views.Desktop.SKPaintSurfaceEventArgs.Surface - -## Namespace SkiaSharp.Views.Forms - -- [ ] SkiaSharp.Views.Forms.Extensions - - [ ] M:SkiaSharp.Views.Forms.Extensions.ToFormsColor(SkiaSharp.SKColor) - - [ ] M:SkiaSharp.Views.Forms.Extensions.ToFormsColor(SkiaSharp.SKColorF) - - [ ] M:SkiaSharp.Views.Forms.Extensions.ToFormsPoint(SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.Views.Forms.Extensions.ToFormsPoint(SkiaSharp.SKPointI) - - [ ] M:SkiaSharp.Views.Forms.Extensions.ToFormsRect(SkiaSharp.SKRect) - - [ ] M:SkiaSharp.Views.Forms.Extensions.ToFormsRect(SkiaSharp.SKRectI) - - [ ] M:SkiaSharp.Views.Forms.Extensions.ToFormsSize(SkiaSharp.SKSize) - - [ ] M:SkiaSharp.Views.Forms.Extensions.ToFormsSize(SkiaSharp.SKSizeI) - - [ ] M:SkiaSharp.Views.Forms.Extensions.ToSKColor(Xamarin.Forms.Color) - - [ ] M:SkiaSharp.Views.Forms.Extensions.ToSKColorF(Xamarin.Forms.Color) - - [ ] M:SkiaSharp.Views.Forms.Extensions.ToSKPoint(Xamarin.Forms.Point) - - [ ] M:SkiaSharp.Views.Forms.Extensions.ToSKRect(Xamarin.Forms.Rectangle) - - [ ] M:SkiaSharp.Views.Forms.Extensions.ToSKSize(Xamarin.Forms.Size) -- [ ] SkiaSharp.Views.Forms.GetPropertyValueEventArgs`1 - - [ ] M:SkiaSharp.Views.Forms.GetPropertyValueEventArgs`1.#ctor - - [ ] P:SkiaSharp.Views.Forms.GetPropertyValueEventArgs`1.Value -- [ ] SkiaSharp.Views.Forms.ISKCanvasViewController - - [ ] E:SkiaSharp.Views.Forms.ISKCanvasViewController.GetCanvasSize - - [ ] E:SkiaSharp.Views.Forms.ISKCanvasViewController.SurfaceInvalidated - - [ ] M:SkiaSharp.Views.Forms.ISKCanvasViewController.OnPaintSurface(SkiaSharp.Views.Forms.SKPaintSurfaceEventArgs) - - [ ] M:SkiaSharp.Views.Forms.ISKCanvasViewController.OnTouch(SkiaSharp.Views.Forms.SKTouchEventArgs) -- [ ] SkiaSharp.Views.Forms.ISKGLViewController - - [ ] E:SkiaSharp.Views.Forms.ISKGLViewController.GetCanvasSize - - [ ] E:SkiaSharp.Views.Forms.ISKGLViewController.GetGRContext - - [ ] E:SkiaSharp.Views.Forms.ISKGLViewController.SurfaceInvalidated - - [ ] M:SkiaSharp.Views.Forms.ISKGLViewController.OnPaintSurface(SkiaSharp.Views.Forms.SKPaintGLSurfaceEventArgs) - - [ ] M:SkiaSharp.Views.Forms.ISKGLViewController.OnTouch(SkiaSharp.Views.Forms.SKTouchEventArgs) -- [ ] SkiaSharp.Views.Forms.SKBitmapImageSource - - [ ] F:SkiaSharp.Views.Forms.SKBitmapImageSource.BitmapProperty - - [ ] M:SkiaSharp.Views.Forms.SKBitmapImageSource.#ctor - - [ ] M:SkiaSharp.Views.Forms.SKBitmapImageSource.Cancel - - [ ] M:SkiaSharp.Views.Forms.SKBitmapImageSource.OnPropertyChanged(System.String) - - [ ] M:SkiaSharp.Views.Forms.SKBitmapImageSource.op_Implicit(SkiaSharp.SKBitmap)~SkiaSharp.Views.Forms.SKBitmapImageSource - - [ ] M:SkiaSharp.Views.Forms.SKBitmapImageSource.op_Implicit(SkiaSharp.Views.Forms.SKBitmapImageSource)~SkiaSharp.SKBitmap - - [ ] P:SkiaSharp.Views.Forms.SKBitmapImageSource.Bitmap -- [ ] SkiaSharp.Views.Forms.SKCanvasView - - [ ] E:SkiaSharp.Views.Forms.SKCanvasView.PaintSurface - - [ ] E:SkiaSharp.Views.Forms.SKCanvasView.SkiaSharp#Views#Forms#ISKCanvasViewController#GetCanvasSize - - [ ] E:SkiaSharp.Views.Forms.SKCanvasView.SkiaSharp#Views#Forms#ISKCanvasViewController#SurfaceInvalidated - - [ ] E:SkiaSharp.Views.Forms.SKCanvasView.Touch - - [ ] F:SkiaSharp.Views.Forms.SKCanvasView.EnableTouchEventsProperty - - [ ] F:SkiaSharp.Views.Forms.SKCanvasView.IgnorePixelScalingProperty - - [ ] M:SkiaSharp.Views.Forms.SKCanvasView.#ctor - - [ ] M:SkiaSharp.Views.Forms.SKCanvasView.InvalidateSurface - - [ ] M:SkiaSharp.Views.Forms.SKCanvasView.OnMeasure(System.Double,System.Double) - - [ ] M:SkiaSharp.Views.Forms.SKCanvasView.OnPaintSurface(SkiaSharp.Views.Forms.SKPaintSurfaceEventArgs) - - [ ] M:SkiaSharp.Views.Forms.SKCanvasView.OnTouch(SkiaSharp.Views.Forms.SKTouchEventArgs) - - [ ] M:SkiaSharp.Views.Forms.SKCanvasView.SkiaSharp#Views#Forms#ISKCanvasViewController#OnPaintSurface(SkiaSharp.Views.Forms.SKPaintSurfaceEventArgs) - - [ ] M:SkiaSharp.Views.Forms.SKCanvasView.SkiaSharp#Views#Forms#ISKCanvasViewController#OnTouch(SkiaSharp.Views.Forms.SKTouchEventArgs) - - [ ] P:SkiaSharp.Views.Forms.SKCanvasView.CanvasSize - - [ ] P:SkiaSharp.Views.Forms.SKCanvasView.EnableTouchEvents - - [ ] P:SkiaSharp.Views.Forms.SKCanvasView.IgnorePixelScaling -- [ ] SkiaSharp.Views.Forms.SKGLView - - [ ] E:SkiaSharp.Views.Forms.SKGLView.PaintSurface - - [ ] E:SkiaSharp.Views.Forms.SKGLView.SkiaSharp#Views#Forms#ISKGLViewController#GetCanvasSize - - [ ] E:SkiaSharp.Views.Forms.SKGLView.SkiaSharp#Views#Forms#ISKGLViewController#GetGRContext - - [ ] E:SkiaSharp.Views.Forms.SKGLView.SkiaSharp#Views#Forms#ISKGLViewController#SurfaceInvalidated - - [ ] E:SkiaSharp.Views.Forms.SKGLView.Touch - - [ ] F:SkiaSharp.Views.Forms.SKGLView.EnableTouchEventsProperty - - [ ] F:SkiaSharp.Views.Forms.SKGLView.HasRenderLoopProperty - - [ ] M:SkiaSharp.Views.Forms.SKGLView.#ctor - - [ ] M:SkiaSharp.Views.Forms.SKGLView.InvalidateSurface - - [ ] M:SkiaSharp.Views.Forms.SKGLView.OnMeasure(System.Double,System.Double) - - [ ] M:SkiaSharp.Views.Forms.SKGLView.OnPaintSurface(SkiaSharp.Views.Forms.SKPaintGLSurfaceEventArgs) - - [ ] M:SkiaSharp.Views.Forms.SKGLView.OnTouch(SkiaSharp.Views.Forms.SKTouchEventArgs) - - [ ] M:SkiaSharp.Views.Forms.SKGLView.SkiaSharp#Views#Forms#ISKGLViewController#OnPaintSurface(SkiaSharp.Views.Forms.SKPaintGLSurfaceEventArgs) - - [ ] M:SkiaSharp.Views.Forms.SKGLView.SkiaSharp#Views#Forms#ISKGLViewController#OnTouch(SkiaSharp.Views.Forms.SKTouchEventArgs) - - [ ] P:SkiaSharp.Views.Forms.SKGLView.CanvasSize - - [ ] P:SkiaSharp.Views.Forms.SKGLView.EnableTouchEvents - - [ ] P:SkiaSharp.Views.Forms.SKGLView.GRContext - - [ ] P:SkiaSharp.Views.Forms.SKGLView.HasRenderLoop -- [ ] SkiaSharp.Views.Forms.SKImageImageSource - - [ ] F:SkiaSharp.Views.Forms.SKImageImageSource.ImageProperty - - [ ] M:SkiaSharp.Views.Forms.SKImageImageSource.#ctor - - [ ] M:SkiaSharp.Views.Forms.SKImageImageSource.Cancel - - [ ] M:SkiaSharp.Views.Forms.SKImageImageSource.OnPropertyChanged(System.String) - - [ ] M:SkiaSharp.Views.Forms.SKImageImageSource.op_Implicit(SkiaSharp.SKImage)~SkiaSharp.Views.Forms.SKImageImageSource - - [ ] M:SkiaSharp.Views.Forms.SKImageImageSource.op_Implicit(SkiaSharp.Views.Forms.SKImageImageSource)~SkiaSharp.SKImage - - [ ] P:SkiaSharp.Views.Forms.SKImageImageSource.Image -- [ ] SkiaSharp.Views.Forms.SKMouseButton - - [ ] F:SkiaSharp.Views.Forms.SKMouseButton.Left - - [ ] F:SkiaSharp.Views.Forms.SKMouseButton.Middle - - [ ] F:SkiaSharp.Views.Forms.SKMouseButton.Right - - [ ] F:SkiaSharp.Views.Forms.SKMouseButton.Unknown -- [ ] SkiaSharp.Views.Forms.SKPaintGLSurfaceEventArgs - - [ ] M:SkiaSharp.Views.Forms.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType) - - [ ] M:SkiaSharp.Views.Forms.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget) - - [ ] M:SkiaSharp.Views.Forms.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTargetDesc) - - [ ] P:SkiaSharp.Views.Forms.SKPaintGLSurfaceEventArgs.BackendRenderTarget - - [ ] P:SkiaSharp.Views.Forms.SKPaintGLSurfaceEventArgs.ColorType - - [ ] P:SkiaSharp.Views.Forms.SKPaintGLSurfaceEventArgs.Origin - - [ ] P:SkiaSharp.Views.Forms.SKPaintGLSurfaceEventArgs.RenderTarget - - [ ] P:SkiaSharp.Views.Forms.SKPaintGLSurfaceEventArgs.Surface -- [ ] SkiaSharp.Views.Forms.SKPaintSurfaceEventArgs - - [ ] M:SkiaSharp.Views.Forms.SKPaintSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo,SkiaSharp.SKImageInfo) - - [ ] M:SkiaSharp.Views.Forms.SKPaintSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo) - - [ ] P:SkiaSharp.Views.Forms.SKPaintSurfaceEventArgs.Info - - [ ] P:SkiaSharp.Views.Forms.SKPaintSurfaceEventArgs.RawInfo - - [ ] P:SkiaSharp.Views.Forms.SKPaintSurfaceEventArgs.Surface -- [ ] SkiaSharp.Views.Forms.SKPictureImageSource - - [ ] F:SkiaSharp.Views.Forms.SKPictureImageSource.DimensionsProperty - - [ ] F:SkiaSharp.Views.Forms.SKPictureImageSource.PictureProperty - - [ ] M:SkiaSharp.Views.Forms.SKPictureImageSource.#ctor - - [ ] M:SkiaSharp.Views.Forms.SKPictureImageSource.Cancel - - [ ] M:SkiaSharp.Views.Forms.SKPictureImageSource.OnPropertyChanged(System.String) - - [ ] M:SkiaSharp.Views.Forms.SKPictureImageSource.op_Explicit(SkiaSharp.Views.Forms.SKPictureImageSource)~SkiaSharp.SKPicture - - [ ] P:SkiaSharp.Views.Forms.SKPictureImageSource.Dimensions - - [ ] P:SkiaSharp.Views.Forms.SKPictureImageSource.Picture -- [ ] SkiaSharp.Views.Forms.SKPixmapImageSource - - [ ] F:SkiaSharp.Views.Forms.SKPixmapImageSource.PixmapProperty - - [ ] M:SkiaSharp.Views.Forms.SKPixmapImageSource.#ctor - - [ ] M:SkiaSharp.Views.Forms.SKPixmapImageSource.Cancel - - [ ] M:SkiaSharp.Views.Forms.SKPixmapImageSource.OnPropertyChanged(System.String) - - [ ] M:SkiaSharp.Views.Forms.SKPixmapImageSource.op_Implicit(SkiaSharp.SKPixmap)~SkiaSharp.Views.Forms.SKPixmapImageSource - - [ ] M:SkiaSharp.Views.Forms.SKPixmapImageSource.op_Implicit(SkiaSharp.Views.Forms.SKPixmapImageSource)~SkiaSharp.SKPixmap - - [ ] P:SkiaSharp.Views.Forms.SKPixmapImageSource.Pixmap -- [ ] SkiaSharp.Views.Forms.SKTouchAction - - [ ] F:SkiaSharp.Views.Forms.SKTouchAction.Cancelled - - [ ] F:SkiaSharp.Views.Forms.SKTouchAction.Entered - - [ ] F:SkiaSharp.Views.Forms.SKTouchAction.Exited - - [ ] F:SkiaSharp.Views.Forms.SKTouchAction.Moved - - [ ] F:SkiaSharp.Views.Forms.SKTouchAction.Pressed - - [ ] F:SkiaSharp.Views.Forms.SKTouchAction.Released - - [ ] F:SkiaSharp.Views.Forms.SKTouchAction.WheelChanged -- [ ] SkiaSharp.Views.Forms.SKTouchDeviceType - - [ ] F:SkiaSharp.Views.Forms.SKTouchDeviceType.Mouse - - [ ] F:SkiaSharp.Views.Forms.SKTouchDeviceType.Pen - - [ ] F:SkiaSharp.Views.Forms.SKTouchDeviceType.Touch -- [ ] SkiaSharp.Views.Forms.SKTouchEventArgs - - [ ] M:SkiaSharp.Views.Forms.SKTouchEventArgs.#ctor(System.Int64,SkiaSharp.Views.Forms.SKTouchAction,SkiaSharp.SKPoint,System.Boolean) - - [ ] M:SkiaSharp.Views.Forms.SKTouchEventArgs.#ctor(System.Int64,SkiaSharp.Views.Forms.SKTouchAction,SkiaSharp.Views.Forms.SKMouseButton,SkiaSharp.Views.Forms.SKTouchDeviceType,SkiaSharp.SKPoint,System.Boolean,System.Int32,System.Single) - - [ ] M:SkiaSharp.Views.Forms.SKTouchEventArgs.#ctor(System.Int64,SkiaSharp.Views.Forms.SKTouchAction,SkiaSharp.Views.Forms.SKMouseButton,SkiaSharp.Views.Forms.SKTouchDeviceType,SkiaSharp.SKPoint,System.Boolean,System.Int32) - - [ ] M:SkiaSharp.Views.Forms.SKTouchEventArgs.#ctor(System.Int64,SkiaSharp.Views.Forms.SKTouchAction,SkiaSharp.Views.Forms.SKMouseButton,SkiaSharp.Views.Forms.SKTouchDeviceType,SkiaSharp.SKPoint,System.Boolean) - - [ ] M:SkiaSharp.Views.Forms.SKTouchEventArgs.ToString - - [ ] P:SkiaSharp.Views.Forms.SKTouchEventArgs.ActionType - - [ ] P:SkiaSharp.Views.Forms.SKTouchEventArgs.DeviceType - - [ ] P:SkiaSharp.Views.Forms.SKTouchEventArgs.Handled - - [ ] P:SkiaSharp.Views.Forms.SKTouchEventArgs.Id - - [ ] P:SkiaSharp.Views.Forms.SKTouchEventArgs.InContact - - [ ] P:SkiaSharp.Views.Forms.SKTouchEventArgs.Location - - [ ] P:SkiaSharp.Views.Forms.SKTouchEventArgs.MouseButton - - [ ] P:SkiaSharp.Views.Forms.SKTouchEventArgs.Pressure - - [ ] P:SkiaSharp.Views.Forms.SKTouchEventArgs.WheelDelta - -## Namespace SkiaSharp.Views.Gtk - -- [ ] SkiaSharp.Views.Gtk.GTKExtensions - - [ ] M:SkiaSharp.Views.Gtk.GTKExtensions.ToColor(SkiaSharp.SKColor) - - [ ] M:SkiaSharp.Views.Gtk.GTKExtensions.ToPixbuf(SkiaSharp.SKBitmap) - - [ ] M:SkiaSharp.Views.Gtk.GTKExtensions.ToPixbuf(SkiaSharp.SKImage) - - [ ] M:SkiaSharp.Views.Gtk.GTKExtensions.ToPixbuf(SkiaSharp.SKPicture,SkiaSharp.SKSizeI) - - [ ] M:SkiaSharp.Views.Gtk.GTKExtensions.ToPixbuf(SkiaSharp.SKPixmap) - - [ ] M:SkiaSharp.Views.Gtk.GTKExtensions.ToPoint(SkiaSharp.SKPointI) - - [ ] M:SkiaSharp.Views.Gtk.GTKExtensions.ToRect(SkiaSharp.SKRectI) - - [ ] M:SkiaSharp.Views.Gtk.GTKExtensions.ToSize(SkiaSharp.SKSizeI) - - [ ] M:SkiaSharp.Views.Gtk.GTKExtensions.ToSKBitmap(Gdk.Pixbuf) - - [ ] M:SkiaSharp.Views.Gtk.GTKExtensions.ToSKColor(Gdk.Color) - - [ ] M:SkiaSharp.Views.Gtk.GTKExtensions.ToSKImage(Gdk.Pixbuf) - - [ ] M:SkiaSharp.Views.Gtk.GTKExtensions.ToSKPixmap(Gdk.Pixbuf,SkiaSharp.SKPixmap) - - [ ] M:SkiaSharp.Views.Gtk.GTKExtensions.ToSKPointI(Gdk.Point) - - [ ] M:SkiaSharp.Views.Gtk.GTKExtensions.ToSKRectI(Gdk.Rectangle) - - [ ] M:SkiaSharp.Views.Gtk.GTKExtensions.ToSKSizeI(Gdk.Size) -- [ ] SkiaSharp.Views.Gtk.SKDrawingArea - - [ ] E:SkiaSharp.Views.Gtk.SKDrawingArea.PaintSurface - - [ ] M:SkiaSharp.Views.Gtk.SKDrawingArea.#ctor - - [ ] M:SkiaSharp.Views.Gtk.SKDrawingArea.Dispose(System.Boolean) - - [ ] M:SkiaSharp.Views.Gtk.SKDrawingArea.OnDrawn(Cairo.Context) - - [ ] M:SkiaSharp.Views.Gtk.SKDrawingArea.OnPaintSurface(SkiaSharp.Views.Desktop.SKPaintSurfaceEventArgs) - - [ ] P:SkiaSharp.Views.Gtk.SKDrawingArea.CanvasSize -- [ ] SkiaSharp.Views.Gtk.SKWidget - - [ ] E:SkiaSharp.Views.Gtk.SKWidget.PaintSurface - - [ ] M:SkiaSharp.Views.Gtk.SKWidget.#ctor - - [ ] M:SkiaSharp.Views.Gtk.SKWidget.Destroy - - [ ] M:SkiaSharp.Views.Gtk.SKWidget.Dispose - - [ ] M:SkiaSharp.Views.Gtk.SKWidget.Dispose(System.Boolean) - - [ ] M:SkiaSharp.Views.Gtk.SKWidget.Finalize - - [ ] M:SkiaSharp.Views.Gtk.SKWidget.OnExposeEvent(Gdk.EventExpose) - - [ ] M:SkiaSharp.Views.Gtk.SKWidget.OnPaintSurface(SkiaSharp.Views.Desktop.SKPaintSurfaceEventArgs) - - [ ] P:SkiaSharp.Views.Gtk.SKWidget.CanvasSize - -## Namespace SkiaSharp.Views.iOS - -- [ ] SkiaSharp.Views.iOS.AppleExtensions - - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToCGColor(SkiaSharp.SKColor) - - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToCGColor(SkiaSharp.SKColorF) - - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToCGImage(SkiaSharp.SKBitmap) - - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToCGImage(SkiaSharp.SKImage) - - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToCGImage(SkiaSharp.SKPicture,SkiaSharp.SKSizeI) - - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToCGImage(SkiaSharp.SKPixmap) - - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToCIColor(SkiaSharp.SKColor) - - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToCIColor(SkiaSharp.SKColorF) - - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToCIImage(SkiaSharp.SKBitmap) - - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToCIImage(SkiaSharp.SKImage) - - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToCIImage(SkiaSharp.SKPicture,SkiaSharp.SKSizeI) - - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToCIImage(SkiaSharp.SKPixmap) - - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToNSData(SkiaSharp.SKData) - - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToPoint(SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToRect(SkiaSharp.SKRect) - - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToSize(SkiaSharp.SKSize) - - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToSKBitmap(CoreGraphics.CGImage) - - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToSKBitmap(CoreImage.CIImage) - - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToSKColor(CoreGraphics.CGColor) - - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToSKColor(CoreImage.CIColor) - - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToSKColorF(CoreGraphics.CGColor) - - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToSKColorF(CoreImage.CIColor) - - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToSKData(Foundation.NSData) - - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToSKImage(CoreGraphics.CGImage) - - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToSKImage(CoreImage.CIImage) - - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToSKPixmap(CoreGraphics.CGImage,SkiaSharp.SKPixmap) - - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToSKPixmap(CoreImage.CIImage,SkiaSharp.SKPixmap) - - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToSKPoint(CoreGraphics.CGPoint) - - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToSKRect(CoreGraphics.CGRect) - - [ ] M:SkiaSharp.Views.iOS.AppleExtensions.ToSKSize(CoreGraphics.CGSize) -- [ ] SkiaSharp.Views.iOS.Extensions - - [ ] M:SkiaSharp.Views.iOS.Extensions.ToDrawingPoint(SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.Views.iOS.Extensions.ToDrawingPoint(SkiaSharp.SKPointI) - - [ ] M:SkiaSharp.Views.iOS.Extensions.ToDrawingRect(SkiaSharp.SKRect) - - [ ] M:SkiaSharp.Views.iOS.Extensions.ToDrawingRect(SkiaSharp.SKRectI) - - [ ] M:SkiaSharp.Views.iOS.Extensions.ToDrawingSize(SkiaSharp.SKSize) - - [ ] M:SkiaSharp.Views.iOS.Extensions.ToDrawingSize(SkiaSharp.SKSizeI) - - [ ] M:SkiaSharp.Views.iOS.Extensions.ToSKPoint(System.Drawing.Point) - - [ ] M:SkiaSharp.Views.iOS.Extensions.ToSKPoint(System.Drawing.PointF) - - [ ] M:SkiaSharp.Views.iOS.Extensions.ToSKRect(System.Drawing.Rectangle) - - [ ] M:SkiaSharp.Views.iOS.Extensions.ToSKRect(System.Drawing.RectangleF) - - [ ] M:SkiaSharp.Views.iOS.Extensions.ToSKSize(System.Drawing.Size) - - [ ] M:SkiaSharp.Views.iOS.Extensions.ToSKSize(System.Drawing.SizeF) -- [ ] SkiaSharp.Views.iOS.iOSExtensions - - [ ] M:SkiaSharp.Views.iOS.iOSExtensions.ToSKBitmap(UIKit.UIImage) - - [ ] M:SkiaSharp.Views.iOS.iOSExtensions.ToSKColor(UIKit.UIColor) - - [ ] M:SkiaSharp.Views.iOS.iOSExtensions.ToSKColorF(UIKit.UIColor) - - [ ] M:SkiaSharp.Views.iOS.iOSExtensions.ToSKImage(UIKit.UIImage) - - [ ] M:SkiaSharp.Views.iOS.iOSExtensions.ToSKPixmap(UIKit.UIImage,SkiaSharp.SKPixmap) - - [ ] M:SkiaSharp.Views.iOS.iOSExtensions.ToUIColor(SkiaSharp.SKColor) - - [ ] M:SkiaSharp.Views.iOS.iOSExtensions.ToUIColor(SkiaSharp.SKColorF) - - [ ] M:SkiaSharp.Views.iOS.iOSExtensions.ToUIImage(SkiaSharp.SKBitmap,System.nfloat,UIKit.UIImageOrientation) - - [ ] M:SkiaSharp.Views.iOS.iOSExtensions.ToUIImage(SkiaSharp.SKBitmap) - - [ ] M:SkiaSharp.Views.iOS.iOSExtensions.ToUIImage(SkiaSharp.SKImage) - - [ ] M:SkiaSharp.Views.iOS.iOSExtensions.ToUIImage(SkiaSharp.SKPicture,SkiaSharp.SKSizeI,System.nfloat,UIKit.UIImageOrientation) - - [ ] M:SkiaSharp.Views.iOS.iOSExtensions.ToUIImage(SkiaSharp.SKPicture,SkiaSharp.SKSizeI) - - [ ] M:SkiaSharp.Views.iOS.iOSExtensions.ToUIImage(SkiaSharp.SKPixmap,System.nfloat,UIKit.UIImageOrientation) - - [ ] M:SkiaSharp.Views.iOS.iOSExtensions.ToUIImage(SkiaSharp.SKPixmap) -- [ ] SkiaSharp.Views.iOS.ISKCanvasLayerDelegate - - [ ] M:SkiaSharp.Views.iOS.ISKCanvasLayerDelegate.DrawInSurface(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo) -- [ ] SkiaSharp.Views.iOS.ISKGLLayerDelegate - - [ ] M:SkiaSharp.Views.iOS.ISKGLLayerDelegate.DrawInSurface(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTargetDesc) -- [ ] SkiaSharp.Views.iOS.SKCanvasLayer - - [ ] E:SkiaSharp.Views.iOS.SKCanvasLayer.PaintSurface - - [ ] M:SkiaSharp.Views.iOS.SKCanvasLayer.#ctor - - [ ] M:SkiaSharp.Views.iOS.SKCanvasLayer.Dispose(System.Boolean) - - [ ] M:SkiaSharp.Views.iOS.SKCanvasLayer.DrawInContext(CoreGraphics.CGContext) - - [ ] M:SkiaSharp.Views.iOS.SKCanvasLayer.DrawInSurface(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo) - - [ ] M:SkiaSharp.Views.iOS.SKCanvasLayer.OnPaintSurface(SkiaSharp.Views.iOS.SKPaintSurfaceEventArgs) - - [ ] P:SkiaSharp.Views.iOS.SKCanvasLayer.CanvasSize - - [ ] P:SkiaSharp.Views.iOS.SKCanvasLayer.IgnorePixelScaling - - [ ] P:SkiaSharp.Views.iOS.SKCanvasLayer.SKDelegate -- [ ] SkiaSharp.Views.iOS.SKCanvasView - - [ ] E:SkiaSharp.Views.iOS.SKCanvasView.PaintSurface - - [ ] M:SkiaSharp.Views.iOS.SKCanvasView.#ctor - - [ ] M:SkiaSharp.Views.iOS.SKCanvasView.#ctor(CoreGraphics.CGRect) - - [ ] M:SkiaSharp.Views.iOS.SKCanvasView.#ctor(System.IntPtr) - - [ ] M:SkiaSharp.Views.iOS.SKCanvasView.AwakeFromNib - - [ ] M:SkiaSharp.Views.iOS.SKCanvasView.Dispose(System.Boolean) - - [ ] M:SkiaSharp.Views.iOS.SKCanvasView.Draw(CoreGraphics.CGRect) - - [ ] M:SkiaSharp.Views.iOS.SKCanvasView.DrawInSurface(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo) - - [ ] M:SkiaSharp.Views.iOS.SKCanvasView.LayoutSubviews - - [ ] M:SkiaSharp.Views.iOS.SKCanvasView.OnPaintSurface(SkiaSharp.Views.iOS.SKPaintSurfaceEventArgs) - - [ ] M:SkiaSharp.Views.iOS.SKCanvasView.WillMoveToWindow(UIKit.UIWindow) - - [ ] P:SkiaSharp.Views.iOS.SKCanvasView.CanvasSize - - [ ] P:SkiaSharp.Views.iOS.SKCanvasView.IgnorePixelScaling -- [ ] SkiaSharp.Views.iOS.SKGLLayer - - [ ] E:SkiaSharp.Views.iOS.SKGLLayer.PaintSurface - - [ ] M:SkiaSharp.Views.iOS.SKGLLayer.#ctor - - [ ] M:SkiaSharp.Views.iOS.SKGLLayer.Dispose(System.Boolean) - - [ ] M:SkiaSharp.Views.iOS.SKGLLayer.DrawInSurface(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTargetDesc) - - [ ] M:SkiaSharp.Views.iOS.SKGLLayer.OnPaintSurface(SkiaSharp.Views.iOS.SKPaintGLSurfaceEventArgs) - - [ ] M:SkiaSharp.Views.iOS.SKGLLayer.Render - - [ ] P:SkiaSharp.Views.iOS.SKGLLayer.CanvasSize - - [ ] P:SkiaSharp.Views.iOS.SKGLLayer.Frame - - [ ] P:SkiaSharp.Views.iOS.SKGLLayer.GRContext - - [ ] P:SkiaSharp.Views.iOS.SKGLLayer.SKDelegate -- [ ] SkiaSharp.Views.iOS.SKGLView - - [ ] E:SkiaSharp.Views.iOS.SKGLView.PaintSurface - - [ ] M:SkiaSharp.Views.iOS.SKGLView.#ctor - - [ ] M:SkiaSharp.Views.iOS.SKGLView.#ctor(CoreGraphics.CGRect) - - [ ] M:SkiaSharp.Views.iOS.SKGLView.#ctor(System.IntPtr) - - [ ] M:SkiaSharp.Views.iOS.SKGLView.AwakeFromNib - - [ ] M:SkiaSharp.Views.iOS.SKGLView.DrawInRect(GLKit.GLKView,CoreGraphics.CGRect) - - [ ] M:SkiaSharp.Views.iOS.SKGLView.DrawInSurface(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTargetDesc) - - [ ] M:SkiaSharp.Views.iOS.SKGLView.OnPaintSurface(SkiaSharp.Views.iOS.SKPaintGLSurfaceEventArgs) - - [ ] P:SkiaSharp.Views.iOS.SKGLView.CanvasSize - - [ ] P:SkiaSharp.Views.iOS.SKGLView.Frame - - [ ] P:SkiaSharp.Views.iOS.SKGLView.GRContext -- [ ] SkiaSharp.Views.iOS.SKMetalView - - [ ] E:SkiaSharp.Views.iOS.SKMetalView.PaintSurface - - [ ] M:SkiaSharp.Views.iOS.SKMetalView.#ctor - - [ ] M:SkiaSharp.Views.iOS.SKMetalView.#ctor(CoreGraphics.CGRect,Metal.IMTLDevice) - - [ ] M:SkiaSharp.Views.iOS.SKMetalView.#ctor(CoreGraphics.CGRect) - - [ ] M:SkiaSharp.Views.iOS.SKMetalView.#ctor(System.IntPtr) - - [ ] M:SkiaSharp.Views.iOS.SKMetalView.AwakeFromNib - - [ ] M:SkiaSharp.Views.iOS.SKMetalView.MetalKit#IMTKViewDelegate#Draw(MetalKit.MTKView) - - [ ] M:SkiaSharp.Views.iOS.SKMetalView.MetalKit#IMTKViewDelegate#DrawableSizeWillChange(MetalKit.MTKView,CoreGraphics.CGSize) - - [ ] M:SkiaSharp.Views.iOS.SKMetalView.OnPaintSurface(SkiaSharp.Views.iOS.SKPaintMetalSurfaceEventArgs) - - [ ] P:SkiaSharp.Views.iOS.SKMetalView.CanvasSize - - [ ] P:SkiaSharp.Views.iOS.SKMetalView.GRContext -- [ ] SkiaSharp.Views.iOS.SKPaintGLSurfaceEventArgs - - [ ] M:SkiaSharp.Views.iOS.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.GRGlFramebufferInfo) - - [ ] M:SkiaSharp.Views.iOS.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType) - - [ ] M:SkiaSharp.Views.iOS.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKImageInfo,SkiaSharp.SKImageInfo) - - [ ] M:SkiaSharp.Views.iOS.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKImageInfo) - - [ ] M:SkiaSharp.Views.iOS.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget) - - [ ] M:SkiaSharp.Views.iOS.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTargetDesc) - - [ ] P:SkiaSharp.Views.iOS.SKPaintGLSurfaceEventArgs.BackendRenderTarget - - [ ] P:SkiaSharp.Views.iOS.SKPaintGLSurfaceEventArgs.ColorType - - [ ] P:SkiaSharp.Views.iOS.SKPaintGLSurfaceEventArgs.Info - - [ ] P:SkiaSharp.Views.iOS.SKPaintGLSurfaceEventArgs.Origin - - [ ] P:SkiaSharp.Views.iOS.SKPaintGLSurfaceEventArgs.RawInfo - - [ ] P:SkiaSharp.Views.iOS.SKPaintGLSurfaceEventArgs.RenderTarget - - [ ] P:SkiaSharp.Views.iOS.SKPaintGLSurfaceEventArgs.Surface -- [ ] SkiaSharp.Views.iOS.SKPaintMetalSurfaceEventArgs - - [ ] M:SkiaSharp.Views.iOS.SKPaintMetalSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType) - - [ ] M:SkiaSharp.Views.iOS.SKPaintMetalSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget) - - [ ] P:SkiaSharp.Views.iOS.SKPaintMetalSurfaceEventArgs.BackendRenderTarget - - [ ] P:SkiaSharp.Views.iOS.SKPaintMetalSurfaceEventArgs.ColorType - - [ ] P:SkiaSharp.Views.iOS.SKPaintMetalSurfaceEventArgs.Origin - - [ ] P:SkiaSharp.Views.iOS.SKPaintMetalSurfaceEventArgs.Surface -- [ ] SkiaSharp.Views.iOS.SKPaintSurfaceEventArgs - - [ ] M:SkiaSharp.Views.iOS.SKPaintSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo,SkiaSharp.SKImageInfo) - - [ ] M:SkiaSharp.Views.iOS.SKPaintSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo) - - [ ] P:SkiaSharp.Views.iOS.SKPaintSurfaceEventArgs.Info - - [ ] P:SkiaSharp.Views.iOS.SKPaintSurfaceEventArgs.RawInfo - - [ ] P:SkiaSharp.Views.iOS.SKPaintSurfaceEventArgs.Surface - -## Namespace SkiaSharp.Views.Mac - -- [ ] SkiaSharp.Views.Mac.AppleExtensions - - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToCGColor(SkiaSharp.SKColor) - - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToCGColor(SkiaSharp.SKColorF) - - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToCGImage(SkiaSharp.SKBitmap) - - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToCGImage(SkiaSharp.SKImage) - - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToCGImage(SkiaSharp.SKPicture,SkiaSharp.SKSizeI) - - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToCGImage(SkiaSharp.SKPixmap) - - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToCIColor(SkiaSharp.SKColor) - - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToCIColor(SkiaSharp.SKColorF) - - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToCIImage(SkiaSharp.SKBitmap) - - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToCIImage(SkiaSharp.SKImage) - - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToCIImage(SkiaSharp.SKPicture,SkiaSharp.SKSizeI) - - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToCIImage(SkiaSharp.SKPixmap) - - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToNSData(SkiaSharp.SKData) - - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToPoint(SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToRect(SkiaSharp.SKRect) - - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToSize(SkiaSharp.SKSize) - - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToSKBitmap(CoreGraphics.CGImage) - - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToSKBitmap(CoreImage.CIImage) - - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToSKColor(CoreGraphics.CGColor) - - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToSKColor(CoreImage.CIColor) - - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToSKColorF(CoreGraphics.CGColor) - - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToSKColorF(CoreImage.CIColor) - - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToSKData(Foundation.NSData) - - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToSKImage(CoreGraphics.CGImage) - - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToSKImage(CoreImage.CIImage) - - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToSKPixmap(CoreGraphics.CGImage,SkiaSharp.SKPixmap) - - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToSKPixmap(CoreImage.CIImage,SkiaSharp.SKPixmap) - - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToSKPoint(CoreGraphics.CGPoint) - - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToSKRect(CoreGraphics.CGRect) - - [ ] M:SkiaSharp.Views.Mac.AppleExtensions.ToSKSize(CoreGraphics.CGSize) -- [ ] SkiaSharp.Views.Mac.Extensions - - [ ] M:SkiaSharp.Views.Mac.Extensions.ToDrawingPoint(SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.Views.Mac.Extensions.ToDrawingPoint(SkiaSharp.SKPointI) - - [ ] M:SkiaSharp.Views.Mac.Extensions.ToDrawingRect(SkiaSharp.SKRect) - - [ ] M:SkiaSharp.Views.Mac.Extensions.ToDrawingRect(SkiaSharp.SKRectI) - - [ ] M:SkiaSharp.Views.Mac.Extensions.ToDrawingSize(SkiaSharp.SKSize) - - [ ] M:SkiaSharp.Views.Mac.Extensions.ToDrawingSize(SkiaSharp.SKSizeI) - - [ ] M:SkiaSharp.Views.Mac.Extensions.ToSKPoint(System.Drawing.Point) - - [ ] M:SkiaSharp.Views.Mac.Extensions.ToSKPoint(System.Drawing.PointF) - - [ ] M:SkiaSharp.Views.Mac.Extensions.ToSKRect(System.Drawing.Rectangle) - - [ ] M:SkiaSharp.Views.Mac.Extensions.ToSKRect(System.Drawing.RectangleF) - - [ ] M:SkiaSharp.Views.Mac.Extensions.ToSKSize(System.Drawing.Size) - - [ ] M:SkiaSharp.Views.Mac.Extensions.ToSKSize(System.Drawing.SizeF) -- [ ] SkiaSharp.Views.Mac.ISKCanvasLayerDelegate - - [ ] M:SkiaSharp.Views.Mac.ISKCanvasLayerDelegate.DrawInSurface(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo) -- [ ] SkiaSharp.Views.Mac.ISKGLLayerDelegate - - [ ] M:SkiaSharp.Views.Mac.ISKGLLayerDelegate.DrawInSurface(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTargetDesc) -- [ ] SkiaSharp.Views.Mac.MacExtensions - - [ ] M:SkiaSharp.Views.Mac.MacExtensions.ToNSColor(SkiaSharp.SKColor) - - [ ] M:SkiaSharp.Views.Mac.MacExtensions.ToNSColor(SkiaSharp.SKColorF) - - [ ] M:SkiaSharp.Views.Mac.MacExtensions.ToNSImage(SkiaSharp.SKBitmap) - - [ ] M:SkiaSharp.Views.Mac.MacExtensions.ToNSImage(SkiaSharp.SKImage) - - [ ] M:SkiaSharp.Views.Mac.MacExtensions.ToNSImage(SkiaSharp.SKPicture,SkiaSharp.SKSizeI) - - [ ] M:SkiaSharp.Views.Mac.MacExtensions.ToNSImage(SkiaSharp.SKPixmap) - - [ ] M:SkiaSharp.Views.Mac.MacExtensions.ToSKBitmap(AppKit.NSImage) - - [ ] M:SkiaSharp.Views.Mac.MacExtensions.ToSKColor(AppKit.NSColor) - - [ ] M:SkiaSharp.Views.Mac.MacExtensions.ToSKColorF(AppKit.NSColor) - - [ ] M:SkiaSharp.Views.Mac.MacExtensions.ToSKImage(AppKit.NSImage) - - [ ] M:SkiaSharp.Views.Mac.MacExtensions.ToSKPixmap(AppKit.NSImage,SkiaSharp.SKPixmap) -- [ ] SkiaSharp.Views.Mac.SKCanvasLayer - - [ ] E:SkiaSharp.Views.Mac.SKCanvasLayer.PaintSurface - - [ ] M:SkiaSharp.Views.Mac.SKCanvasLayer.#ctor - - [ ] M:SkiaSharp.Views.Mac.SKCanvasLayer.Dispose(System.Boolean) - - [ ] M:SkiaSharp.Views.Mac.SKCanvasLayer.DrawInContext(CoreGraphics.CGContext) - - [ ] M:SkiaSharp.Views.Mac.SKCanvasLayer.DrawInSurface(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo) - - [ ] M:SkiaSharp.Views.Mac.SKCanvasLayer.OnPaintSurface(SkiaSharp.Views.Mac.SKPaintSurfaceEventArgs) - - [ ] P:SkiaSharp.Views.Mac.SKCanvasLayer.CanvasSize - - [ ] P:SkiaSharp.Views.Mac.SKCanvasLayer.IgnorePixelScaling - - [ ] P:SkiaSharp.Views.Mac.SKCanvasLayer.SKDelegate -- [ ] SkiaSharp.Views.Mac.SKCanvasView - - [ ] E:SkiaSharp.Views.Mac.SKCanvasView.PaintSurface - - [ ] M:SkiaSharp.Views.Mac.SKCanvasView.#ctor - - [ ] M:SkiaSharp.Views.Mac.SKCanvasView.#ctor(CoreGraphics.CGRect) - - [ ] M:SkiaSharp.Views.Mac.SKCanvasView.#ctor(System.IntPtr) - - [ ] M:SkiaSharp.Views.Mac.SKCanvasView.AwakeFromNib - - [ ] M:SkiaSharp.Views.Mac.SKCanvasView.Dispose(System.Boolean) - - [ ] M:SkiaSharp.Views.Mac.SKCanvasView.DrawInSurface(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo) - - [ ] M:SkiaSharp.Views.Mac.SKCanvasView.DrawRect(CoreGraphics.CGRect) - - [ ] M:SkiaSharp.Views.Mac.SKCanvasView.OnPaintSurface(SkiaSharp.Views.Mac.SKPaintSurfaceEventArgs) - - [ ] P:SkiaSharp.Views.Mac.SKCanvasView.CanvasSize - - [ ] P:SkiaSharp.Views.Mac.SKCanvasView.IgnorePixelScaling -- [ ] SkiaSharp.Views.Mac.SKGLLayer - - [ ] E:SkiaSharp.Views.Mac.SKGLLayer.PaintSurface - - [ ] M:SkiaSharp.Views.Mac.SKGLLayer.#ctor - - [ ] M:SkiaSharp.Views.Mac.SKGLLayer.DrawInCGLContext(OpenGL.CGLContext,OpenGL.CGLPixelFormat,System.Double,CoreVideo.CVTimeStamp@) - - [ ] M:SkiaSharp.Views.Mac.SKGLLayer.DrawInSurface(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTargetDesc) - - [ ] M:SkiaSharp.Views.Mac.SKGLLayer.OnPaintSurface(SkiaSharp.Views.Mac.SKPaintGLSurfaceEventArgs) - - [ ] M:SkiaSharp.Views.Mac.SKGLLayer.Release(OpenGL.CGLContext) - - [ ] P:SkiaSharp.Views.Mac.SKGLLayer.CanvasSize - - [ ] P:SkiaSharp.Views.Mac.SKGLLayer.GRContext - - [ ] P:SkiaSharp.Views.Mac.SKGLLayer.SKDelegate -- [ ] SkiaSharp.Views.Mac.SKGLView - - [ ] E:SkiaSharp.Views.Mac.SKGLView.PaintSurface - - [ ] M:SkiaSharp.Views.Mac.SKGLView.#ctor - - [ ] M:SkiaSharp.Views.Mac.SKGLView.#ctor(CoreGraphics.CGRect) - - [ ] M:SkiaSharp.Views.Mac.SKGLView.#ctor(System.IntPtr) - - [ ] M:SkiaSharp.Views.Mac.SKGLView.AwakeFromNib - - [ ] M:SkiaSharp.Views.Mac.SKGLView.DrawInSurface(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTargetDesc) - - [ ] M:SkiaSharp.Views.Mac.SKGLView.DrawRect(CoreGraphics.CGRect) - - [ ] M:SkiaSharp.Views.Mac.SKGLView.OnPaintSurface(SkiaSharp.Views.Mac.SKPaintGLSurfaceEventArgs) - - [ ] M:SkiaSharp.Views.Mac.SKGLView.PrepareOpenGL - - [ ] M:SkiaSharp.Views.Mac.SKGLView.Reshape - - [ ] P:SkiaSharp.Views.Mac.SKGLView.CanvasSize - - [ ] P:SkiaSharp.Views.Mac.SKGLView.GRContext -- [ ] SkiaSharp.Views.Mac.SKMetalView - - [ ] E:SkiaSharp.Views.Mac.SKMetalView.PaintSurface - - [ ] M:SkiaSharp.Views.Mac.SKMetalView.#ctor - - [ ] M:SkiaSharp.Views.Mac.SKMetalView.#ctor(CoreGraphics.CGRect,Metal.IMTLDevice) - - [ ] M:SkiaSharp.Views.Mac.SKMetalView.#ctor(CoreGraphics.CGRect) - - [ ] M:SkiaSharp.Views.Mac.SKMetalView.#ctor(System.IntPtr) - - [ ] M:SkiaSharp.Views.Mac.SKMetalView.AwakeFromNib - - [ ] M:SkiaSharp.Views.Mac.SKMetalView.MetalKit#IMTKViewDelegate#Draw(MetalKit.MTKView) - - [ ] M:SkiaSharp.Views.Mac.SKMetalView.MetalKit#IMTKViewDelegate#DrawableSizeWillChange(MetalKit.MTKView,CoreGraphics.CGSize) - - [ ] M:SkiaSharp.Views.Mac.SKMetalView.OnPaintSurface(SkiaSharp.Views.Mac.SKPaintMetalSurfaceEventArgs) - - [ ] P:SkiaSharp.Views.Mac.SKMetalView.CanvasSize - - [ ] P:SkiaSharp.Views.Mac.SKMetalView.GRContext -- [ ] SkiaSharp.Views.Mac.SKPaintGLSurfaceEventArgs - - [ ] M:SkiaSharp.Views.Mac.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.GRGlFramebufferInfo) - - [ ] M:SkiaSharp.Views.Mac.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType) - - [ ] M:SkiaSharp.Views.Mac.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKImageInfo,SkiaSharp.SKImageInfo) - - [ ] M:SkiaSharp.Views.Mac.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKImageInfo) - - [ ] M:SkiaSharp.Views.Mac.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget) - - [ ] M:SkiaSharp.Views.Mac.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTargetDesc) - - [ ] P:SkiaSharp.Views.Mac.SKPaintGLSurfaceEventArgs.BackendRenderTarget - - [ ] P:SkiaSharp.Views.Mac.SKPaintGLSurfaceEventArgs.ColorType - - [ ] P:SkiaSharp.Views.Mac.SKPaintGLSurfaceEventArgs.Info - - [ ] P:SkiaSharp.Views.Mac.SKPaintGLSurfaceEventArgs.Origin - - [ ] P:SkiaSharp.Views.Mac.SKPaintGLSurfaceEventArgs.RawInfo - - [ ] P:SkiaSharp.Views.Mac.SKPaintGLSurfaceEventArgs.RenderTarget - - [ ] P:SkiaSharp.Views.Mac.SKPaintGLSurfaceEventArgs.Surface -- [ ] SkiaSharp.Views.Mac.SKPaintMetalSurfaceEventArgs - - [ ] M:SkiaSharp.Views.Mac.SKPaintMetalSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType) - - [ ] M:SkiaSharp.Views.Mac.SKPaintMetalSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget) - - [ ] P:SkiaSharp.Views.Mac.SKPaintMetalSurfaceEventArgs.BackendRenderTarget - - [ ] P:SkiaSharp.Views.Mac.SKPaintMetalSurfaceEventArgs.ColorType - - [ ] P:SkiaSharp.Views.Mac.SKPaintMetalSurfaceEventArgs.Origin - - [ ] P:SkiaSharp.Views.Mac.SKPaintMetalSurfaceEventArgs.Surface -- [ ] SkiaSharp.Views.Mac.SKPaintSurfaceEventArgs - - [ ] M:SkiaSharp.Views.Mac.SKPaintSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo,SkiaSharp.SKImageInfo) - - [ ] M:SkiaSharp.Views.Mac.SKPaintSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo) - - [ ] P:SkiaSharp.Views.Mac.SKPaintSurfaceEventArgs.Info - - [ ] P:SkiaSharp.Views.Mac.SKPaintSurfaceEventArgs.RawInfo - - [ ] P:SkiaSharp.Views.Mac.SKPaintSurfaceEventArgs.Surface - -## Namespace SkiaSharp.Views.Maui - -- [ ] SkiaSharp.Views.Maui.Extensions - - [ ] M:SkiaSharp.Views.Maui.Extensions.ToMauiColor(SkiaSharp.SKColor) - - [ ] M:SkiaSharp.Views.Maui.Extensions.ToMauiColor(SkiaSharp.SKColorF) - - [ ] M:SkiaSharp.Views.Maui.Extensions.ToMauiPoint(SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.Views.Maui.Extensions.ToMauiPoint(SkiaSharp.SKPointI) - - [ ] M:SkiaSharp.Views.Maui.Extensions.ToMauiPointF(SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.Views.Maui.Extensions.ToMauiPointF(SkiaSharp.SKPointI) - - [ ] M:SkiaSharp.Views.Maui.Extensions.ToMauiRectangle(SkiaSharp.SKRect) - - [ ] M:SkiaSharp.Views.Maui.Extensions.ToMauiRectangle(SkiaSharp.SKRectI) - - [ ] M:SkiaSharp.Views.Maui.Extensions.ToMauiRectangleF(SkiaSharp.SKRect) - - [ ] M:SkiaSharp.Views.Maui.Extensions.ToMauiRectangleF(SkiaSharp.SKRectI) - - [ ] M:SkiaSharp.Views.Maui.Extensions.ToMauiSize(SkiaSharp.SKSize) - - [ ] M:SkiaSharp.Views.Maui.Extensions.ToMauiSize(SkiaSharp.SKSizeI) - - [ ] M:SkiaSharp.Views.Maui.Extensions.ToMauiSizeF(SkiaSharp.SKSize) - - [ ] M:SkiaSharp.Views.Maui.Extensions.ToMauiSizeF(SkiaSharp.SKSizeI) - - [ ] M:SkiaSharp.Views.Maui.Extensions.ToSKColor(Microsoft.Maui.Graphics.Color) - - [ ] M:SkiaSharp.Views.Maui.Extensions.ToSKColorF(Microsoft.Maui.Graphics.Color) - - [ ] M:SkiaSharp.Views.Maui.Extensions.ToSKPoint(Microsoft.Maui.Graphics.Point) - - [ ] M:SkiaSharp.Views.Maui.Extensions.ToSKPoint(Microsoft.Maui.Graphics.PointF) - - [ ] M:SkiaSharp.Views.Maui.Extensions.ToSKRect(Microsoft.Maui.Graphics.Rect) - - [ ] M:SkiaSharp.Views.Maui.Extensions.ToSKRect(Microsoft.Maui.Graphics.RectF) - - [ ] M:SkiaSharp.Views.Maui.Extensions.ToSKSize(Microsoft.Maui.Graphics.Size) - - [ ] M:SkiaSharp.Views.Maui.Extensions.ToSKSize(Microsoft.Maui.Graphics.SizeF) -- [ ] SkiaSharp.Views.Maui.ISKBitmapImageSource - - [ ] P:SkiaSharp.Views.Maui.ISKBitmapImageSource.Bitmap -- [ ] SkiaSharp.Views.Maui.ISKCanvasView - - [ ] M:SkiaSharp.Views.Maui.ISKCanvasView.InvalidateSurface - - [ ] M:SkiaSharp.Views.Maui.ISKCanvasView.OnCanvasSizeChanged(SkiaSharp.SKSizeI) - - [ ] M:SkiaSharp.Views.Maui.ISKCanvasView.OnPaintSurface(SkiaSharp.Views.Maui.SKPaintSurfaceEventArgs) - - [ ] M:SkiaSharp.Views.Maui.ISKCanvasView.OnTouch(SkiaSharp.Views.Maui.SKTouchEventArgs) - - [ ] P:SkiaSharp.Views.Maui.ISKCanvasView.CanvasSize - - [ ] P:SkiaSharp.Views.Maui.ISKCanvasView.EnableTouchEvents - - [ ] P:SkiaSharp.Views.Maui.ISKCanvasView.IgnorePixelScaling -- [ ] SkiaSharp.Views.Maui.ISKImageImageSource - - [ ] P:SkiaSharp.Views.Maui.ISKImageImageSource.Image -- [ ] SkiaSharp.Views.Maui.ISKPictureImageSource - - [ ] P:SkiaSharp.Views.Maui.ISKPictureImageSource.Dimensions - - [ ] P:SkiaSharp.Views.Maui.ISKPictureImageSource.Picture -- [ ] SkiaSharp.Views.Maui.ISKPixmapImageSource - - [ ] P:SkiaSharp.Views.Maui.ISKPixmapImageSource.Pixmap -- [ ] SkiaSharp.Views.Maui.SKMouseButton - - [ ] F:SkiaSharp.Views.Maui.SKMouseButton.Left - - [ ] F:SkiaSharp.Views.Maui.SKMouseButton.Middle - - [ ] F:SkiaSharp.Views.Maui.SKMouseButton.Right - - [ ] F:SkiaSharp.Views.Maui.SKMouseButton.Unknown -- [ ] SkiaSharp.Views.Maui.SKPaintGLSurfaceEventArgs - - [ ] M:SkiaSharp.Views.Maui.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType) - - [ ] M:SkiaSharp.Views.Maui.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget) - - [ ] P:SkiaSharp.Views.Maui.SKPaintGLSurfaceEventArgs.BackendRenderTarget - - [ ] P:SkiaSharp.Views.Maui.SKPaintGLSurfaceEventArgs.ColorType - - [ ] P:SkiaSharp.Views.Maui.SKPaintGLSurfaceEventArgs.Origin - - [ ] P:SkiaSharp.Views.Maui.SKPaintGLSurfaceEventArgs.Surface -- [ ] SkiaSharp.Views.Maui.SKPaintSurfaceEventArgs - - [ ] M:SkiaSharp.Views.Maui.SKPaintSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo,SkiaSharp.SKImageInfo) - - [ ] M:SkiaSharp.Views.Maui.SKPaintSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo) - - [ ] P:SkiaSharp.Views.Maui.SKPaintSurfaceEventArgs.Info - - [ ] P:SkiaSharp.Views.Maui.SKPaintSurfaceEventArgs.RawInfo - - [ ] P:SkiaSharp.Views.Maui.SKPaintSurfaceEventArgs.Surface -- [ ] SkiaSharp.Views.Maui.SKTouchAction - - [ ] F:SkiaSharp.Views.Maui.SKTouchAction.Cancelled - - [ ] F:SkiaSharp.Views.Maui.SKTouchAction.Entered - - [ ] F:SkiaSharp.Views.Maui.SKTouchAction.Exited - - [ ] F:SkiaSharp.Views.Maui.SKTouchAction.Moved - - [ ] F:SkiaSharp.Views.Maui.SKTouchAction.Pressed - - [ ] F:SkiaSharp.Views.Maui.SKTouchAction.Released - - [ ] F:SkiaSharp.Views.Maui.SKTouchAction.WheelChanged -- [ ] SkiaSharp.Views.Maui.SKTouchDeviceType - - [ ] F:SkiaSharp.Views.Maui.SKTouchDeviceType.Mouse - - [ ] F:SkiaSharp.Views.Maui.SKTouchDeviceType.Pen - - [ ] F:SkiaSharp.Views.Maui.SKTouchDeviceType.Touch -- [ ] SkiaSharp.Views.Maui.SKTouchEventArgs - - [ ] M:SkiaSharp.Views.Maui.SKTouchEventArgs.#ctor(System.Int64,SkiaSharp.Views.Maui.SKTouchAction,SkiaSharp.SKPoint,System.Boolean) - - [ ] M:SkiaSharp.Views.Maui.SKTouchEventArgs.#ctor(System.Int64,SkiaSharp.Views.Maui.SKTouchAction,SkiaSharp.Views.Maui.SKMouseButton,SkiaSharp.Views.Maui.SKTouchDeviceType,SkiaSharp.SKPoint,System.Boolean,System.Int32,System.Single) - - [ ] M:SkiaSharp.Views.Maui.SKTouchEventArgs.#ctor(System.Int64,SkiaSharp.Views.Maui.SKTouchAction,SkiaSharp.Views.Maui.SKMouseButton,SkiaSharp.Views.Maui.SKTouchDeviceType,SkiaSharp.SKPoint,System.Boolean,System.Int32) - - [ ] M:SkiaSharp.Views.Maui.SKTouchEventArgs.#ctor(System.Int64,SkiaSharp.Views.Maui.SKTouchAction,SkiaSharp.Views.Maui.SKMouseButton,SkiaSharp.Views.Maui.SKTouchDeviceType,SkiaSharp.SKPoint,System.Boolean) - - [ ] M:SkiaSharp.Views.Maui.SKTouchEventArgs.ToString - - [ ] P:SkiaSharp.Views.Maui.SKTouchEventArgs.ActionType - - [ ] P:SkiaSharp.Views.Maui.SKTouchEventArgs.DeviceType - - [ ] P:SkiaSharp.Views.Maui.SKTouchEventArgs.Handled - - [ ] P:SkiaSharp.Views.Maui.SKTouchEventArgs.Id - - [ ] P:SkiaSharp.Views.Maui.SKTouchEventArgs.InContact - - [ ] P:SkiaSharp.Views.Maui.SKTouchEventArgs.Location - - [ ] P:SkiaSharp.Views.Maui.SKTouchEventArgs.MouseButton - - [ ] P:SkiaSharp.Views.Maui.SKTouchEventArgs.Pressure - - [ ] P:SkiaSharp.Views.Maui.SKTouchEventArgs.WheelDelta - -## Namespace SkiaSharp.Views.Maui.Controls - -- [ ] SkiaSharp.Views.Maui.Controls.AppHostBuilderExtensions - - [ ] M:SkiaSharp.Views.Maui.Controls.AppHostBuilderExtensions.UseSkiaSharpHandlers(Microsoft.Maui.Hosting.MauiAppBuilder) -- [ ] SkiaSharp.Views.Maui.Controls.GetPropertyValueEventArgs`1 - - [ ] M:SkiaSharp.Views.Maui.Controls.GetPropertyValueEventArgs`1.#ctor - - [ ] P:SkiaSharp.Views.Maui.Controls.GetPropertyValueEventArgs`1.Value -- [ ] SkiaSharp.Views.Maui.Controls.ISKCanvasViewController - - [ ] E:SkiaSharp.Views.Maui.Controls.ISKCanvasViewController.GetCanvasSize - - [ ] E:SkiaSharp.Views.Maui.Controls.ISKCanvasViewController.SurfaceInvalidated - - [ ] M:SkiaSharp.Views.Maui.Controls.ISKCanvasViewController.OnPaintSurface(SkiaSharp.Views.Maui.SKPaintSurfaceEventArgs) - - [ ] M:SkiaSharp.Views.Maui.Controls.ISKCanvasViewController.OnTouch(SkiaSharp.Views.Maui.SKTouchEventArgs) -- [ ] SkiaSharp.Views.Maui.Controls.ISKGLViewController - - [ ] E:SkiaSharp.Views.Maui.Controls.ISKGLViewController.GetCanvasSize - - [ ] E:SkiaSharp.Views.Maui.Controls.ISKGLViewController.GetGRContext - - [ ] E:SkiaSharp.Views.Maui.Controls.ISKGLViewController.SurfaceInvalidated - - [ ] M:SkiaSharp.Views.Maui.Controls.ISKGLViewController.OnPaintSurface(SkiaSharp.Views.Maui.SKPaintGLSurfaceEventArgs) - - [ ] M:SkiaSharp.Views.Maui.Controls.ISKGLViewController.OnTouch(SkiaSharp.Views.Maui.SKTouchEventArgs) -- [ ] SkiaSharp.Views.Maui.Controls.SKBitmapImageSource - - [ ] F:SkiaSharp.Views.Maui.Controls.SKBitmapImageSource.BitmapProperty - - [ ] M:SkiaSharp.Views.Maui.Controls.SKBitmapImageSource.#ctor - - [ ] M:SkiaSharp.Views.Maui.Controls.SKBitmapImageSource.Cancel - - [ ] M:SkiaSharp.Views.Maui.Controls.SKBitmapImageSource.OnPropertyChanged(System.String) - - [ ] M:SkiaSharp.Views.Maui.Controls.SKBitmapImageSource.op_Implicit(SkiaSharp.SKBitmap)~SkiaSharp.Views.Maui.Controls.SKBitmapImageSource - - [ ] M:SkiaSharp.Views.Maui.Controls.SKBitmapImageSource.op_Implicit(SkiaSharp.Views.Maui.Controls.SKBitmapImageSource)~SkiaSharp.SKBitmap - - [ ] P:SkiaSharp.Views.Maui.Controls.SKBitmapImageSource.Bitmap -- [ ] SkiaSharp.Views.Maui.Controls.SKCanvasView - - [ ] E:SkiaSharp.Views.Maui.Controls.SKCanvasView.PaintSurface - - [ ] E:SkiaSharp.Views.Maui.Controls.SKCanvasView.SkiaSharp#Views#Maui#Controls#ISKCanvasViewController#GetCanvasSize - - [ ] E:SkiaSharp.Views.Maui.Controls.SKCanvasView.SkiaSharp#Views#Maui#Controls#ISKCanvasViewController#SurfaceInvalidated - - [ ] E:SkiaSharp.Views.Maui.Controls.SKCanvasView.Touch - - [ ] F:SkiaSharp.Views.Maui.Controls.SKCanvasView.EnableTouchEventsProperty - - [ ] F:SkiaSharp.Views.Maui.Controls.SKCanvasView.IgnorePixelScalingProperty - - [ ] M:SkiaSharp.Views.Maui.Controls.SKCanvasView.#ctor - - [ ] M:SkiaSharp.Views.Maui.Controls.SKCanvasView.InvalidateSurface - - [ ] M:SkiaSharp.Views.Maui.Controls.SKCanvasView.OnMeasure(System.Double,System.Double) - - [ ] M:SkiaSharp.Views.Maui.Controls.SKCanvasView.OnPaintSurface(SkiaSharp.Views.Maui.SKPaintSurfaceEventArgs) - - [ ] M:SkiaSharp.Views.Maui.Controls.SKCanvasView.OnTouch(SkiaSharp.Views.Maui.SKTouchEventArgs) - - [ ] M:SkiaSharp.Views.Maui.Controls.SKCanvasView.SkiaSharp#Views#Maui#Controls#ISKCanvasViewController#OnPaintSurface(SkiaSharp.Views.Maui.SKPaintSurfaceEventArgs) - - [ ] M:SkiaSharp.Views.Maui.Controls.SKCanvasView.SkiaSharp#Views#Maui#Controls#ISKCanvasViewController#OnTouch(SkiaSharp.Views.Maui.SKTouchEventArgs) - - [ ] M:SkiaSharp.Views.Maui.Controls.SKCanvasView.SkiaSharp#Views#Maui#ISKCanvasView#OnCanvasSizeChanged(SkiaSharp.SKSizeI) - - [ ] M:SkiaSharp.Views.Maui.Controls.SKCanvasView.SkiaSharp#Views#Maui#ISKCanvasView#OnPaintSurface(SkiaSharp.Views.Maui.SKPaintSurfaceEventArgs) - - [ ] M:SkiaSharp.Views.Maui.Controls.SKCanvasView.SkiaSharp#Views#Maui#ISKCanvasView#OnTouch(SkiaSharp.Views.Maui.SKTouchEventArgs) - - [ ] P:SkiaSharp.Views.Maui.Controls.SKCanvasView.CanvasSize - - [ ] P:SkiaSharp.Views.Maui.Controls.SKCanvasView.EnableTouchEvents - - [ ] P:SkiaSharp.Views.Maui.Controls.SKCanvasView.IgnorePixelScaling -- [ ] SkiaSharp.Views.Maui.Controls.SKGLView - - [ ] E:SkiaSharp.Views.Maui.Controls.SKGLView.PaintSurface - - [ ] E:SkiaSharp.Views.Maui.Controls.SKGLView.SkiaSharp#Views#Maui#Controls#ISKGLViewController#GetCanvasSize - - [ ] E:SkiaSharp.Views.Maui.Controls.SKGLView.SkiaSharp#Views#Maui#Controls#ISKGLViewController#GetGRContext - - [ ] E:SkiaSharp.Views.Maui.Controls.SKGLView.SkiaSharp#Views#Maui#Controls#ISKGLViewController#SurfaceInvalidated - - [ ] E:SkiaSharp.Views.Maui.Controls.SKGLView.Touch - - [ ] F:SkiaSharp.Views.Maui.Controls.SKGLView.EnableTouchEventsProperty - - [ ] F:SkiaSharp.Views.Maui.Controls.SKGLView.HasRenderLoopProperty - - [ ] M:SkiaSharp.Views.Maui.Controls.SKGLView.#ctor - - [ ] M:SkiaSharp.Views.Maui.Controls.SKGLView.InvalidateSurface - - [ ] M:SkiaSharp.Views.Maui.Controls.SKGLView.OnMeasure(System.Double,System.Double) - - [ ] M:SkiaSharp.Views.Maui.Controls.SKGLView.OnPaintSurface(SkiaSharp.Views.Maui.SKPaintGLSurfaceEventArgs) - - [ ] M:SkiaSharp.Views.Maui.Controls.SKGLView.OnTouch(SkiaSharp.Views.Maui.SKTouchEventArgs) - - [ ] M:SkiaSharp.Views.Maui.Controls.SKGLView.SkiaSharp#Views#Maui#Controls#ISKGLViewController#OnPaintSurface(SkiaSharp.Views.Maui.SKPaintGLSurfaceEventArgs) - - [ ] M:SkiaSharp.Views.Maui.Controls.SKGLView.SkiaSharp#Views#Maui#Controls#ISKGLViewController#OnTouch(SkiaSharp.Views.Maui.SKTouchEventArgs) - - [ ] P:SkiaSharp.Views.Maui.Controls.SKGLView.CanvasSize - - [ ] P:SkiaSharp.Views.Maui.Controls.SKGLView.EnableTouchEvents - - [ ] P:SkiaSharp.Views.Maui.Controls.SKGLView.GRContext - - [ ] P:SkiaSharp.Views.Maui.Controls.SKGLView.HasRenderLoop -- [ ] SkiaSharp.Views.Maui.Controls.SKImageImageSource - - [ ] F:SkiaSharp.Views.Maui.Controls.SKImageImageSource.ImageProperty - - [ ] M:SkiaSharp.Views.Maui.Controls.SKImageImageSource.#ctor - - [ ] M:SkiaSharp.Views.Maui.Controls.SKImageImageSource.Cancel - - [ ] M:SkiaSharp.Views.Maui.Controls.SKImageImageSource.OnPropertyChanged(System.String) - - [ ] M:SkiaSharp.Views.Maui.Controls.SKImageImageSource.op_Implicit(SkiaSharp.SKImage)~SkiaSharp.Views.Maui.Controls.SKImageImageSource - - [ ] M:SkiaSharp.Views.Maui.Controls.SKImageImageSource.op_Implicit(SkiaSharp.Views.Maui.Controls.SKImageImageSource)~SkiaSharp.SKImage - - [ ] P:SkiaSharp.Views.Maui.Controls.SKImageImageSource.Image -- [ ] SkiaSharp.Views.Maui.Controls.SKPictureImageSource - - [ ] F:SkiaSharp.Views.Maui.Controls.SKPictureImageSource.DimensionsProperty - - [ ] F:SkiaSharp.Views.Maui.Controls.SKPictureImageSource.PictureProperty - - [ ] M:SkiaSharp.Views.Maui.Controls.SKPictureImageSource.#ctor - - [ ] M:SkiaSharp.Views.Maui.Controls.SKPictureImageSource.Cancel - - [ ] M:SkiaSharp.Views.Maui.Controls.SKPictureImageSource.OnPropertyChanged(System.String) - - [ ] M:SkiaSharp.Views.Maui.Controls.SKPictureImageSource.op_Explicit(SkiaSharp.Views.Maui.Controls.SKPictureImageSource)~SkiaSharp.SKPicture - - [ ] P:SkiaSharp.Views.Maui.Controls.SKPictureImageSource.Dimensions - - [ ] P:SkiaSharp.Views.Maui.Controls.SKPictureImageSource.Picture -- [ ] SkiaSharp.Views.Maui.Controls.SKPixmapImageSource - - [ ] F:SkiaSharp.Views.Maui.Controls.SKPixmapImageSource.PixmapProperty - - [ ] M:SkiaSharp.Views.Maui.Controls.SKPixmapImageSource.#ctor - - [ ] M:SkiaSharp.Views.Maui.Controls.SKPixmapImageSource.Cancel - - [ ] M:SkiaSharp.Views.Maui.Controls.SKPixmapImageSource.OnPropertyChanged(System.String) - - [ ] M:SkiaSharp.Views.Maui.Controls.SKPixmapImageSource.op_Implicit(SkiaSharp.SKPixmap)~SkiaSharp.Views.Maui.Controls.SKPixmapImageSource - - [ ] M:SkiaSharp.Views.Maui.Controls.SKPixmapImageSource.op_Implicit(SkiaSharp.Views.Maui.Controls.SKPixmapImageSource)~SkiaSharp.SKPixmap - - [ ] P:SkiaSharp.Views.Maui.Controls.SKPixmapImageSource.Pixmap - -## Namespace SkiaSharp.Views.Maui.Controls.Compatibility - -- [ ] SkiaSharp.Views.Maui.Controls.Compatibility.AppHostBuilderExtensions - - [ ] M:SkiaSharp.Views.Maui.Controls.Compatibility.AppHostBuilderExtensions.UseSkiaSharpCompatibilityRenderers(Microsoft.Maui.Hosting.MauiAppBuilder) - -## Namespace SkiaSharp.Views.Maui.Controls.Hosting - -- [ ] SkiaSharp.Views.Maui.Controls.Hosting.AppHostBuilderExtensions - - [ ] M:SkiaSharp.Views.Maui.Controls.Hosting.AppHostBuilderExtensions.UseSkiaSharp(Microsoft.Maui.Hosting.MauiAppBuilder,System.Boolean,System.Boolean) - - [ ] M:SkiaSharp.Views.Maui.Controls.Hosting.AppHostBuilderExtensions.UseSkiaSharp(Microsoft.Maui.Hosting.MauiAppBuilder) - -## Namespace SkiaSharp.Views.Maui.Handlers - -- [ ] SkiaSharp.Views.Maui.Handlers.SKCanvasViewHandler - - [ ] F:SkiaSharp.Views.Maui.Handlers.SKCanvasViewHandler.SKCanvasViewCommandMapper - - [ ] F:SkiaSharp.Views.Maui.Handlers.SKCanvasViewHandler.SKCanvasViewMapper - - [ ] M:SkiaSharp.Views.Maui.Handlers.SKCanvasViewHandler.#ctor - - [ ] M:SkiaSharp.Views.Maui.Handlers.SKCanvasViewHandler.#ctor(Microsoft.Maui.PropertyMapper,Microsoft.Maui.CommandMapper) - - [ ] M:SkiaSharp.Views.Maui.Handlers.SKCanvasViewHandler.CreatePlatformView - - [ ] M:SkiaSharp.Views.Maui.Handlers.SKCanvasViewHandler.MapEnableTouchEvents(SkiaSharp.Views.Maui.Handlers.SKCanvasViewHandler,SkiaSharp.Views.Maui.ISKCanvasView) - - [ ] M:SkiaSharp.Views.Maui.Handlers.SKCanvasViewHandler.MapIgnorePixelScaling(SkiaSharp.Views.Maui.Handlers.SKCanvasViewHandler,SkiaSharp.Views.Maui.ISKCanvasView) - - [ ] M:SkiaSharp.Views.Maui.Handlers.SKCanvasViewHandler.OnInvalidateSurface(SkiaSharp.Views.Maui.Handlers.SKCanvasViewHandler,SkiaSharp.Views.Maui.ISKCanvasView,System.Object) -- [ ] SkiaSharp.Views.Maui.Handlers.SKImageSourceService - - [ ] M:SkiaSharp.Views.Maui.Handlers.SKImageSourceService.#ctor - - [ ] M:SkiaSharp.Views.Maui.Handlers.SKImageSourceService.#ctor(Microsoft.Extensions.Logging.ILogger) - -## Namespace SkiaSharp.Views.Tizen - -- [ ] SkiaSharp.Views.Tizen.CustomRenderingView - - [ ] F:SkiaSharp.Views.Tizen.CustomRenderingView.evasImage - - [ ] M:SkiaSharp.Views.Tizen.CustomRenderingView.#ctor(ElmSharp.EvasObject) - - [ ] M:SkiaSharp.Views.Tizen.CustomRenderingView.CreateDrawingSurface - - [ ] M:SkiaSharp.Views.Tizen.CustomRenderingView.CreateHandle(ElmSharp.EvasObject) - - [ ] M:SkiaSharp.Views.Tizen.CustomRenderingView.CreateNativeResources(ElmSharp.EvasObject) - - [ ] M:SkiaSharp.Views.Tizen.CustomRenderingView.DestroyDrawingSurface - - [ ] M:SkiaSharp.Views.Tizen.CustomRenderingView.DestroyNativeResources - - [ ] M:SkiaSharp.Views.Tizen.CustomRenderingView.GetRawSurfaceSize - - [ ] M:SkiaSharp.Views.Tizen.CustomRenderingView.GetSurfaceSize - - [ ] M:SkiaSharp.Views.Tizen.CustomRenderingView.Invalidate - - [ ] M:SkiaSharp.Views.Tizen.CustomRenderingView.OnDrawFrame - - [ ] M:SkiaSharp.Views.Tizen.CustomRenderingView.OnResized - - [ ] M:SkiaSharp.Views.Tizen.CustomRenderingView.OnUnrealize - - [ ] M:SkiaSharp.Views.Tizen.CustomRenderingView.UpdateSurfaceSize(ElmSharp.Rect) - - [ ] P:SkiaSharp.Views.Tizen.CustomRenderingView.CanvasSize - - [ ] P:SkiaSharp.Views.Tizen.CustomRenderingView.RenderingMode -- [ ] SkiaSharp.Views.Tizen.Extensions -- [ ] SkiaSharp.Views.Tizen.RenderingMode - - [ ] F:SkiaSharp.Views.Tizen.RenderingMode.Continuously - - [ ] F:SkiaSharp.Views.Tizen.RenderingMode.WhenDirty -- [ ] SkiaSharp.Views.Tizen.ScalingInfo - - [ ] M:SkiaSharp.Views.Tizen.ScalingInfo.FromPixel(System.Double) - - [ ] M:SkiaSharp.Views.Tizen.ScalingInfo.SetScalingFactor(System.Nullable{System.Double}) - - [ ] M:SkiaSharp.Views.Tizen.ScalingInfo.ToPixel(System.Double) - - [ ] P:SkiaSharp.Views.Tizen.ScalingInfo.Dpi - - [ ] P:SkiaSharp.Views.Tizen.ScalingInfo.Profile - - [ ] P:SkiaSharp.Views.Tizen.ScalingInfo.ScalingFactor -- [ ] SkiaSharp.Views.Tizen.SKCanvasView - - [ ] E:SkiaSharp.Views.Tizen.SKCanvasView.PaintSurface - - [ ] M:SkiaSharp.Views.Tizen.SKCanvasView.#ctor(ElmSharp.EvasObject) - - [ ] M:SkiaSharp.Views.Tizen.SKCanvasView.GetRawSurfaceSize - - [ ] M:SkiaSharp.Views.Tizen.SKCanvasView.GetSurfaceSize - - [ ] M:SkiaSharp.Views.Tizen.SKCanvasView.OnDrawFrame - - [ ] M:SkiaSharp.Views.Tizen.SKCanvasView.OnDrawFrame(SkiaSharp.Views.Tizen.SKPaintSurfaceEventArgs) - - [ ] M:SkiaSharp.Views.Tizen.SKCanvasView.UpdateSurfaceSize(ElmSharp.Rect) - - [ ] P:SkiaSharp.Views.Tizen.SKCanvasView.IgnorePixelScaling -- [ ] SkiaSharp.Views.Tizen.SKGLSurfaceView - - [ ] E:SkiaSharp.Views.Tizen.SKGLSurfaceView.PaintSurface - - [ ] M:SkiaSharp.Views.Tizen.SKGLSurfaceView.#ctor(ElmSharp.EvasObject) - - [ ] M:SkiaSharp.Views.Tizen.SKGLSurfaceView.CreateDrawingSurface - - [ ] M:SkiaSharp.Views.Tizen.SKGLSurfaceView.CreateNativeResources(ElmSharp.EvasObject) - - [ ] M:SkiaSharp.Views.Tizen.SKGLSurfaceView.DestroyDrawingSurface - - [ ] M:SkiaSharp.Views.Tizen.SKGLSurfaceView.DestroyNativeResources - - [ ] M:SkiaSharp.Views.Tizen.SKGLSurfaceView.GetSurfaceSize - - [ ] M:SkiaSharp.Views.Tizen.SKGLSurfaceView.OnDrawFrame - - [ ] M:SkiaSharp.Views.Tizen.SKGLSurfaceView.OnDrawFrame(SkiaSharp.Views.Tizen.SKPaintGLSurfaceEventArgs) - - [ ] M:SkiaSharp.Views.Tizen.SKGLSurfaceView.UpdateSurfaceSize(ElmSharp.Rect) - - [ ] P:SkiaSharp.Views.Tizen.SKGLSurfaceView.GRContext -- [ ] SkiaSharp.Views.Tizen.SKPaintGLSurfaceEventArgs - - [ ] M:SkiaSharp.Views.Tizen.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.GRGlFramebufferInfo) - - [ ] M:SkiaSharp.Views.Tizen.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType) - - [ ] M:SkiaSharp.Views.Tizen.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKImageInfo,SkiaSharp.SKImageInfo) - - [ ] M:SkiaSharp.Views.Tizen.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKImageInfo) - - [ ] M:SkiaSharp.Views.Tizen.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget) - - [ ] M:SkiaSharp.Views.Tizen.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTargetDesc) - - [ ] P:SkiaSharp.Views.Tizen.SKPaintGLSurfaceEventArgs.BackendRenderTarget - - [ ] P:SkiaSharp.Views.Tizen.SKPaintGLSurfaceEventArgs.ColorType - - [ ] P:SkiaSharp.Views.Tizen.SKPaintGLSurfaceEventArgs.Info - - [ ] P:SkiaSharp.Views.Tizen.SKPaintGLSurfaceEventArgs.Origin - - [ ] P:SkiaSharp.Views.Tizen.SKPaintGLSurfaceEventArgs.RawInfo - - [ ] P:SkiaSharp.Views.Tizen.SKPaintGLSurfaceEventArgs.RenderTarget - - [ ] P:SkiaSharp.Views.Tizen.SKPaintGLSurfaceEventArgs.Surface -- [ ] SkiaSharp.Views.Tizen.SKPaintSurfaceEventArgs - - [ ] M:SkiaSharp.Views.Tizen.SKPaintSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo,SkiaSharp.SKImageInfo) - - [ ] M:SkiaSharp.Views.Tizen.SKPaintSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo) - - [ ] P:SkiaSharp.Views.Tizen.SKPaintSurfaceEventArgs.Info - - [ ] P:SkiaSharp.Views.Tizen.SKPaintSurfaceEventArgs.RawInfo - - [ ] P:SkiaSharp.Views.Tizen.SKPaintSurfaceEventArgs.Surface -- [ ] SkiaSharp.Views.Tizen.TizenExtensions - - [ ] M:SkiaSharp.Views.Tizen.TizenExtensions.ToColor(SkiaSharp.SKColor) - - [ ] M:SkiaSharp.Views.Tizen.TizenExtensions.ToPoint(SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.Views.Tizen.TizenExtensions.ToPoint(SkiaSharp.SKPointI) - - [ ] M:SkiaSharp.Views.Tizen.TizenExtensions.ToRect(SkiaSharp.SKRect) - - [ ] M:SkiaSharp.Views.Tizen.TizenExtensions.ToRect(SkiaSharp.SKRectI) - - [ ] M:SkiaSharp.Views.Tizen.TizenExtensions.ToSize(SkiaSharp.SKSize) - - [ ] M:SkiaSharp.Views.Tizen.TizenExtensions.ToSize(SkiaSharp.SKSizeI) - - [ ] M:SkiaSharp.Views.Tizen.TizenExtensions.ToSKColor(ElmSharp.Color) - - [ ] M:SkiaSharp.Views.Tizen.TizenExtensions.ToSKPoint(ElmSharp.Point) - - [ ] M:SkiaSharp.Views.Tizen.TizenExtensions.ToSKPointI(ElmSharp.Point) - - [ ] M:SkiaSharp.Views.Tizen.TizenExtensions.ToSKRect(ElmSharp.Rect) - - [ ] M:SkiaSharp.Views.Tizen.TizenExtensions.ToSKRectI(ElmSharp.Rect) - - [ ] M:SkiaSharp.Views.Tizen.TizenExtensions.ToSKSize(ElmSharp.Size) - - [ ] M:SkiaSharp.Views.Tizen.TizenExtensions.ToSKSizeI(ElmSharp.Size) - -## Namespace SkiaSharp.Views.tvOS - -- [ ] SkiaSharp.Views.tvOS.AppleExtensions - - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToCGColor(SkiaSharp.SKColor) - - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToCGColor(SkiaSharp.SKColorF) - - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToCGImage(SkiaSharp.SKBitmap) - - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToCGImage(SkiaSharp.SKImage) - - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToCGImage(SkiaSharp.SKPicture,SkiaSharp.SKSizeI) - - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToCGImage(SkiaSharp.SKPixmap) - - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToCIColor(SkiaSharp.SKColor) - - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToCIColor(SkiaSharp.SKColorF) - - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToCIImage(SkiaSharp.SKBitmap) - - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToCIImage(SkiaSharp.SKImage) - - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToCIImage(SkiaSharp.SKPicture,SkiaSharp.SKSizeI) - - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToCIImage(SkiaSharp.SKPixmap) - - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToNSData(SkiaSharp.SKData) - - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToPoint(SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToRect(SkiaSharp.SKRect) - - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToSize(SkiaSharp.SKSize) - - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToSKBitmap(CoreGraphics.CGImage) - - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToSKBitmap(CoreImage.CIImage) - - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToSKColor(CoreGraphics.CGColor) - - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToSKColor(CoreImage.CIColor) - - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToSKColorF(CoreGraphics.CGColor) - - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToSKColorF(CoreImage.CIColor) - - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToSKData(Foundation.NSData) - - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToSKImage(CoreGraphics.CGImage) - - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToSKImage(CoreImage.CIImage) - - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToSKPixmap(CoreGraphics.CGImage,SkiaSharp.SKPixmap) - - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToSKPixmap(CoreImage.CIImage,SkiaSharp.SKPixmap) - - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToSKPoint(CoreGraphics.CGPoint) - - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToSKRect(CoreGraphics.CGRect) - - [ ] M:SkiaSharp.Views.tvOS.AppleExtensions.ToSKSize(CoreGraphics.CGSize) -- [ ] SkiaSharp.Views.tvOS.Extensions - - [ ] M:SkiaSharp.Views.tvOS.Extensions.ToDrawingPoint(SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.Views.tvOS.Extensions.ToDrawingPoint(SkiaSharp.SKPointI) - - [ ] M:SkiaSharp.Views.tvOS.Extensions.ToDrawingRect(SkiaSharp.SKRect) - - [ ] M:SkiaSharp.Views.tvOS.Extensions.ToDrawingRect(SkiaSharp.SKRectI) - - [ ] M:SkiaSharp.Views.tvOS.Extensions.ToDrawingSize(SkiaSharp.SKSize) - - [ ] M:SkiaSharp.Views.tvOS.Extensions.ToDrawingSize(SkiaSharp.SKSizeI) - - [ ] M:SkiaSharp.Views.tvOS.Extensions.ToSKPoint(System.Drawing.Point) - - [ ] M:SkiaSharp.Views.tvOS.Extensions.ToSKPoint(System.Drawing.PointF) - - [ ] M:SkiaSharp.Views.tvOS.Extensions.ToSKRect(System.Drawing.Rectangle) - - [ ] M:SkiaSharp.Views.tvOS.Extensions.ToSKRect(System.Drawing.RectangleF) - - [ ] M:SkiaSharp.Views.tvOS.Extensions.ToSKSize(System.Drawing.Size) - - [ ] M:SkiaSharp.Views.tvOS.Extensions.ToSKSize(System.Drawing.SizeF) -- [ ] SkiaSharp.Views.tvOS.iOSExtensions - - [ ] M:SkiaSharp.Views.tvOS.iOSExtensions.ToSKBitmap(UIKit.UIImage) - - [ ] M:SkiaSharp.Views.tvOS.iOSExtensions.ToSKColor(UIKit.UIColor) - - [ ] M:SkiaSharp.Views.tvOS.iOSExtensions.ToSKColorF(UIKit.UIColor) - - [ ] M:SkiaSharp.Views.tvOS.iOSExtensions.ToSKImage(UIKit.UIImage) - - [ ] M:SkiaSharp.Views.tvOS.iOSExtensions.ToSKPixmap(UIKit.UIImage,SkiaSharp.SKPixmap) - - [ ] M:SkiaSharp.Views.tvOS.iOSExtensions.ToUIColor(SkiaSharp.SKColor) - - [ ] M:SkiaSharp.Views.tvOS.iOSExtensions.ToUIColor(SkiaSharp.SKColorF) - - [ ] M:SkiaSharp.Views.tvOS.iOSExtensions.ToUIImage(SkiaSharp.SKBitmap,System.nfloat,UIKit.UIImageOrientation) - - [ ] M:SkiaSharp.Views.tvOS.iOSExtensions.ToUIImage(SkiaSharp.SKBitmap) - - [ ] M:SkiaSharp.Views.tvOS.iOSExtensions.ToUIImage(SkiaSharp.SKImage) - - [ ] M:SkiaSharp.Views.tvOS.iOSExtensions.ToUIImage(SkiaSharp.SKPicture,SkiaSharp.SKSizeI,System.nfloat,UIKit.UIImageOrientation) - - [ ] M:SkiaSharp.Views.tvOS.iOSExtensions.ToUIImage(SkiaSharp.SKPicture,SkiaSharp.SKSizeI) - - [ ] M:SkiaSharp.Views.tvOS.iOSExtensions.ToUIImage(SkiaSharp.SKPixmap,System.nfloat,UIKit.UIImageOrientation) - - [ ] M:SkiaSharp.Views.tvOS.iOSExtensions.ToUIImage(SkiaSharp.SKPixmap) -- [ ] SkiaSharp.Views.tvOS.ISKCanvasLayerDelegate - - [ ] M:SkiaSharp.Views.tvOS.ISKCanvasLayerDelegate.DrawInSurface(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo) -- [ ] SkiaSharp.Views.tvOS.ISKGLLayerDelegate - - [ ] M:SkiaSharp.Views.tvOS.ISKGLLayerDelegate.DrawInSurface(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTargetDesc) -- [ ] SkiaSharp.Views.tvOS.SKCanvasLayer - - [ ] E:SkiaSharp.Views.tvOS.SKCanvasLayer.PaintSurface - - [ ] M:SkiaSharp.Views.tvOS.SKCanvasLayer.#ctor - - [ ] M:SkiaSharp.Views.tvOS.SKCanvasLayer.Dispose(System.Boolean) - - [ ] M:SkiaSharp.Views.tvOS.SKCanvasLayer.DrawInContext(CoreGraphics.CGContext) - - [ ] M:SkiaSharp.Views.tvOS.SKCanvasLayer.DrawInSurface(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo) - - [ ] M:SkiaSharp.Views.tvOS.SKCanvasLayer.OnPaintSurface(SkiaSharp.Views.tvOS.SKPaintSurfaceEventArgs) - - [ ] P:SkiaSharp.Views.tvOS.SKCanvasLayer.CanvasSize - - [ ] P:SkiaSharp.Views.tvOS.SKCanvasLayer.IgnorePixelScaling - - [ ] P:SkiaSharp.Views.tvOS.SKCanvasLayer.SKDelegate -- [ ] SkiaSharp.Views.tvOS.SKCanvasView - - [ ] E:SkiaSharp.Views.tvOS.SKCanvasView.PaintSurface - - [ ] M:SkiaSharp.Views.tvOS.SKCanvasView.#ctor - - [ ] M:SkiaSharp.Views.tvOS.SKCanvasView.#ctor(CoreGraphics.CGRect) - - [ ] M:SkiaSharp.Views.tvOS.SKCanvasView.#ctor(System.IntPtr) - - [ ] M:SkiaSharp.Views.tvOS.SKCanvasView.AwakeFromNib - - [ ] M:SkiaSharp.Views.tvOS.SKCanvasView.Dispose(System.Boolean) - - [ ] M:SkiaSharp.Views.tvOS.SKCanvasView.Draw(CoreGraphics.CGRect) - - [ ] M:SkiaSharp.Views.tvOS.SKCanvasView.DrawInSurface(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo) - - [ ] M:SkiaSharp.Views.tvOS.SKCanvasView.LayoutSubviews - - [ ] M:SkiaSharp.Views.tvOS.SKCanvasView.OnPaintSurface(SkiaSharp.Views.tvOS.SKPaintSurfaceEventArgs) - - [ ] M:SkiaSharp.Views.tvOS.SKCanvasView.WillMoveToWindow(UIKit.UIWindow) - - [ ] P:SkiaSharp.Views.tvOS.SKCanvasView.CanvasSize - - [ ] P:SkiaSharp.Views.tvOS.SKCanvasView.IgnorePixelScaling -- [ ] SkiaSharp.Views.tvOS.SKGLLayer - - [ ] E:SkiaSharp.Views.tvOS.SKGLLayer.PaintSurface - - [ ] M:SkiaSharp.Views.tvOS.SKGLLayer.#ctor - - [ ] M:SkiaSharp.Views.tvOS.SKGLLayer.Dispose(System.Boolean) - - [ ] M:SkiaSharp.Views.tvOS.SKGLLayer.DrawInSurface(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTargetDesc) - - [ ] M:SkiaSharp.Views.tvOS.SKGLLayer.OnPaintSurface(SkiaSharp.Views.tvOS.SKPaintGLSurfaceEventArgs) - - [ ] M:SkiaSharp.Views.tvOS.SKGLLayer.Render - - [ ] P:SkiaSharp.Views.tvOS.SKGLLayer.CanvasSize - - [ ] P:SkiaSharp.Views.tvOS.SKGLLayer.Frame - - [ ] P:SkiaSharp.Views.tvOS.SKGLLayer.GRContext - - [ ] P:SkiaSharp.Views.tvOS.SKGLLayer.SKDelegate -- [ ] SkiaSharp.Views.tvOS.SKGLView - - [ ] E:SkiaSharp.Views.tvOS.SKGLView.PaintSurface - - [ ] M:SkiaSharp.Views.tvOS.SKGLView.#ctor - - [ ] M:SkiaSharp.Views.tvOS.SKGLView.#ctor(CoreGraphics.CGRect) - - [ ] M:SkiaSharp.Views.tvOS.SKGLView.#ctor(System.IntPtr) - - [ ] M:SkiaSharp.Views.tvOS.SKGLView.AwakeFromNib - - [ ] M:SkiaSharp.Views.tvOS.SKGLView.DrawInRect(GLKit.GLKView,CoreGraphics.CGRect) - - [ ] M:SkiaSharp.Views.tvOS.SKGLView.DrawInSurface(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTargetDesc) - - [ ] M:SkiaSharp.Views.tvOS.SKGLView.OnPaintSurface(SkiaSharp.Views.tvOS.SKPaintGLSurfaceEventArgs) - - [ ] P:SkiaSharp.Views.tvOS.SKGLView.CanvasSize - - [ ] P:SkiaSharp.Views.tvOS.SKGLView.Frame - - [ ] P:SkiaSharp.Views.tvOS.SKGLView.GRContext -- [ ] SkiaSharp.Views.tvOS.SKPaintGLSurfaceEventArgs - - [ ] M:SkiaSharp.Views.tvOS.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.GRGlFramebufferInfo) - - [ ] M:SkiaSharp.Views.tvOS.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType) - - [ ] M:SkiaSharp.Views.tvOS.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKImageInfo,SkiaSharp.SKImageInfo) - - [ ] M:SkiaSharp.Views.tvOS.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKImageInfo) - - [ ] M:SkiaSharp.Views.tvOS.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget) - - [ ] M:SkiaSharp.Views.tvOS.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTargetDesc) - - [ ] P:SkiaSharp.Views.tvOS.SKPaintGLSurfaceEventArgs.BackendRenderTarget - - [ ] P:SkiaSharp.Views.tvOS.SKPaintGLSurfaceEventArgs.ColorType - - [ ] P:SkiaSharp.Views.tvOS.SKPaintGLSurfaceEventArgs.Info - - [ ] P:SkiaSharp.Views.tvOS.SKPaintGLSurfaceEventArgs.Origin - - [ ] P:SkiaSharp.Views.tvOS.SKPaintGLSurfaceEventArgs.RawInfo - - [ ] P:SkiaSharp.Views.tvOS.SKPaintGLSurfaceEventArgs.RenderTarget - - [ ] P:SkiaSharp.Views.tvOS.SKPaintGLSurfaceEventArgs.Surface -- [ ] SkiaSharp.Views.tvOS.SKPaintSurfaceEventArgs - - [ ] M:SkiaSharp.Views.tvOS.SKPaintSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo,SkiaSharp.SKImageInfo) - - [ ] M:SkiaSharp.Views.tvOS.SKPaintSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo) - - [ ] P:SkiaSharp.Views.tvOS.SKPaintSurfaceEventArgs.Info - - [ ] P:SkiaSharp.Views.tvOS.SKPaintSurfaceEventArgs.RawInfo - - [ ] P:SkiaSharp.Views.tvOS.SKPaintSurfaceEventArgs.Surface - -## Namespace SkiaSharp.Views.UWP - -- [ ] SkiaSharp.Views.UWP.AngleSwapChainPanel - - [ ] M:SkiaSharp.Views.UWP.AngleSwapChainPanel.#ctor - - [ ] M:SkiaSharp.Views.UWP.AngleSwapChainPanel.Invalidate - - [ ] M:SkiaSharp.Views.UWP.AngleSwapChainPanel.OnDestroyingContext - - [ ] M:SkiaSharp.Views.UWP.AngleSwapChainPanel.OnRenderFrame(Windows.Foundation.Rect) - - [ ] P:SkiaSharp.Views.UWP.AngleSwapChainPanel.BackingOption - - [ ] P:SkiaSharp.Views.UWP.AngleSwapChainPanel.ContentsScale - - [ ] P:SkiaSharp.Views.UWP.AngleSwapChainPanel.Context - - [ ] P:SkiaSharp.Views.UWP.AngleSwapChainPanel.DepthFormat - - [ ] P:SkiaSharp.Views.UWP.AngleSwapChainPanel.DrawInBackground - - [ ] P:SkiaSharp.Views.UWP.AngleSwapChainPanel.EnableRenderLoop - - [ ] P:SkiaSharp.Views.UWP.AngleSwapChainPanel.Multisampling - - [ ] P:SkiaSharp.Views.UWP.AngleSwapChainPanel.StencilFormat -- [ ] SkiaSharp.Views.UWP.Extensions -- [ ] SkiaSharp.Views.UWP.GlesBackingOption - - [ ] F:SkiaSharp.Views.UWP.GlesBackingOption.Detroyed - - [ ] F:SkiaSharp.Views.UWP.GlesBackingOption.Retained -- [ ] SkiaSharp.Views.UWP.GlesContext - - [ ] M:SkiaSharp.Views.UWP.GlesContext.#ctor - - [ ] M:SkiaSharp.Views.UWP.GlesContext.Dispose - - [ ] M:SkiaSharp.Views.UWP.GlesContext.Reset - - [ ] M:SkiaSharp.Views.UWP.GlesContext.SetSurface(Windows.UI.Xaml.Controls.SwapChainPanel,System.Int32,System.Int32,SkiaSharp.Views.UWP.GlesBackingOption,SkiaSharp.Views.UWP.GlesMultisampling,SkiaSharp.Views.UWP.GlesRenderTarget) - - [ ] M:SkiaSharp.Views.UWP.GlesContext.SetViewportSize(System.Int32,System.Int32) - - [ ] M:SkiaSharp.Views.UWP.GlesContext.SwapBuffers(SkiaSharp.Views.UWP.GlesRenderTarget,System.Int32,System.Int32) - - [ ] P:SkiaSharp.Views.UWP.GlesContext.CurrentContext - - [ ] P:SkiaSharp.Views.UWP.GlesContext.HasValidSurface -- [ ] SkiaSharp.Views.UWP.GlesDepthFormat - - [ ] F:SkiaSharp.Views.UWP.GlesDepthFormat.Format16 - - [ ] F:SkiaSharp.Views.UWP.GlesDepthFormat.Format24 - - [ ] F:SkiaSharp.Views.UWP.GlesDepthFormat.None -- [ ] SkiaSharp.Views.UWP.GlesMultisampling - - [ ] F:SkiaSharp.Views.UWP.GlesMultisampling.FourTimes - - [ ] F:SkiaSharp.Views.UWP.GlesMultisampling.None -- [ ] SkiaSharp.Views.UWP.GlesRenderTarget - - [ ] F:SkiaSharp.Views.UWP.GlesRenderTarget.Renderbuffer -- [ ] SkiaSharp.Views.UWP.GlesStencilFormat - - [ ] F:SkiaSharp.Views.UWP.GlesStencilFormat.Format8 - - [ ] F:SkiaSharp.Views.UWP.GlesStencilFormat.None -- [ ] SkiaSharp.Views.UWP.SKPaintGLSurfaceEventArgs - - [ ] M:SkiaSharp.Views.UWP.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.GRGlFramebufferInfo) - - [ ] M:SkiaSharp.Views.UWP.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType) - - [ ] M:SkiaSharp.Views.UWP.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKImageInfo,SkiaSharp.SKImageInfo) - - [ ] M:SkiaSharp.Views.UWP.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKImageInfo) - - [ ] M:SkiaSharp.Views.UWP.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget) - - [ ] M:SkiaSharp.Views.UWP.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTargetDesc) - - [ ] P:SkiaSharp.Views.UWP.SKPaintGLSurfaceEventArgs.BackendRenderTarget - - [ ] P:SkiaSharp.Views.UWP.SKPaintGLSurfaceEventArgs.ColorType - - [ ] P:SkiaSharp.Views.UWP.SKPaintGLSurfaceEventArgs.Info - - [ ] P:SkiaSharp.Views.UWP.SKPaintGLSurfaceEventArgs.Origin - - [ ] P:SkiaSharp.Views.UWP.SKPaintGLSurfaceEventArgs.RawInfo - - [ ] P:SkiaSharp.Views.UWP.SKPaintGLSurfaceEventArgs.RenderTarget - - [ ] P:SkiaSharp.Views.UWP.SKPaintGLSurfaceEventArgs.Surface -- [ ] SkiaSharp.Views.UWP.SKPaintSurfaceEventArgs - - [ ] M:SkiaSharp.Views.UWP.SKPaintSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo,SkiaSharp.SKImageInfo) - - [ ] M:SkiaSharp.Views.UWP.SKPaintSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo) - - [ ] P:SkiaSharp.Views.UWP.SKPaintSurfaceEventArgs.Info - - [ ] P:SkiaSharp.Views.UWP.SKPaintSurfaceEventArgs.RawInfo - - [ ] P:SkiaSharp.Views.UWP.SKPaintSurfaceEventArgs.Surface -- [ ] SkiaSharp.Views.UWP.SKSwapChainPanel - - [ ] E:SkiaSharp.Views.UWP.SKSwapChainPanel.PaintSurface - - [ ] M:SkiaSharp.Views.UWP.SKSwapChainPanel.#ctor - - [ ] M:SkiaSharp.Views.UWP.SKSwapChainPanel.ArrangeOverride(Windows.Foundation.Size) - - [ ] M:SkiaSharp.Views.UWP.SKSwapChainPanel.OnDestroyingContext - - [ ] M:SkiaSharp.Views.UWP.SKSwapChainPanel.OnPaintSurface(SkiaSharp.Views.UWP.SKPaintGLSurfaceEventArgs) - - [ ] M:SkiaSharp.Views.UWP.SKSwapChainPanel.OnRenderFrame(Windows.Foundation.Rect) - - [ ] P:SkiaSharp.Views.UWP.SKSwapChainPanel.CanvasSize - - [ ] P:SkiaSharp.Views.UWP.SKSwapChainPanel.GRContext -- [ ] SkiaSharp.Views.UWP.SKXamlCanvas - - [ ] E:SkiaSharp.Views.UWP.SKXamlCanvas.PaintSurface - - [ ] M:SkiaSharp.Views.UWP.SKXamlCanvas.#ctor - - [ ] M:SkiaSharp.Views.UWP.SKXamlCanvas.Invalidate - - [ ] M:SkiaSharp.Views.UWP.SKXamlCanvas.OnPaintSurface(SkiaSharp.Views.UWP.SKPaintSurfaceEventArgs) - - [ ] P:SkiaSharp.Views.UWP.SKXamlCanvas.CanvasSize - - [ ] P:SkiaSharp.Views.UWP.SKXamlCanvas.Dpi - - [ ] P:SkiaSharp.Views.UWP.SKXamlCanvas.IgnorePixelScaling -- [ ] SkiaSharp.Views.UWP.UWPExtensions - - [ ] M:SkiaSharp.Views.UWP.UWPExtensions.ToColor(SkiaSharp.SKColor) - - [ ] M:SkiaSharp.Views.UWP.UWPExtensions.ToPoint(SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.Views.UWP.UWPExtensions.ToRect(SkiaSharp.SKRect) - - [ ] M:SkiaSharp.Views.UWP.UWPExtensions.ToSize(SkiaSharp.SKSize) - - [ ] M:SkiaSharp.Views.UWP.UWPExtensions.ToSKBitmap(Windows.UI.Xaml.Media.Imaging.WriteableBitmap) - - [ ] M:SkiaSharp.Views.UWP.UWPExtensions.ToSKColor(Windows.UI.Color) - - [ ] M:SkiaSharp.Views.UWP.UWPExtensions.ToSKImage(Windows.UI.Xaml.Media.Imaging.WriteableBitmap) - - [ ] M:SkiaSharp.Views.UWP.UWPExtensions.ToSKPixmap(Windows.UI.Xaml.Media.Imaging.WriteableBitmap,SkiaSharp.SKPixmap) - - [ ] M:SkiaSharp.Views.UWP.UWPExtensions.ToSKPoint(Windows.Foundation.Point) - - [ ] M:SkiaSharp.Views.UWP.UWPExtensions.ToSKRect(Windows.Foundation.Rect) - - [ ] M:SkiaSharp.Views.UWP.UWPExtensions.ToSKSize(Windows.Foundation.Size) - - [ ] M:SkiaSharp.Views.UWP.UWPExtensions.ToWriteableBitmap(SkiaSharp.SKBitmap) - - [ ] M:SkiaSharp.Views.UWP.UWPExtensions.ToWriteableBitmap(SkiaSharp.SKImage) - - [ ] M:SkiaSharp.Views.UWP.UWPExtensions.ToWriteableBitmap(SkiaSharp.SKPicture,SkiaSharp.SKSizeI) - - [ ] M:SkiaSharp.Views.UWP.UWPExtensions.ToWriteableBitmap(SkiaSharp.SKPixmap) - -## Namespace SkiaSharp.Views.watchOS - -- [ ] SkiaSharp.Views.watchOS.AppleExtensions - - [ ] M:SkiaSharp.Views.watchOS.AppleExtensions.ToCGColor(SkiaSharp.SKColor) - - [ ] M:SkiaSharp.Views.watchOS.AppleExtensions.ToCGColor(SkiaSharp.SKColorF) - - [ ] M:SkiaSharp.Views.watchOS.AppleExtensions.ToCGImage(SkiaSharp.SKBitmap) - - [ ] M:SkiaSharp.Views.watchOS.AppleExtensions.ToCGImage(SkiaSharp.SKImage) - - [ ] M:SkiaSharp.Views.watchOS.AppleExtensions.ToCGImage(SkiaSharp.SKPicture,SkiaSharp.SKSizeI) - - [ ] M:SkiaSharp.Views.watchOS.AppleExtensions.ToCGImage(SkiaSharp.SKPixmap) - - [ ] M:SkiaSharp.Views.watchOS.AppleExtensions.ToNSData(SkiaSharp.SKData) - - [ ] M:SkiaSharp.Views.watchOS.AppleExtensions.ToPoint(SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.Views.watchOS.AppleExtensions.ToRect(SkiaSharp.SKRect) - - [ ] M:SkiaSharp.Views.watchOS.AppleExtensions.ToSize(SkiaSharp.SKSize) - - [ ] M:SkiaSharp.Views.watchOS.AppleExtensions.ToSKBitmap(CoreGraphics.CGImage) - - [ ] M:SkiaSharp.Views.watchOS.AppleExtensions.ToSKColor(CoreGraphics.CGColor) - - [ ] M:SkiaSharp.Views.watchOS.AppleExtensions.ToSKColorF(CoreGraphics.CGColor) - - [ ] M:SkiaSharp.Views.watchOS.AppleExtensions.ToSKData(Foundation.NSData) - - [ ] M:SkiaSharp.Views.watchOS.AppleExtensions.ToSKImage(CoreGraphics.CGImage) - - [ ] M:SkiaSharp.Views.watchOS.AppleExtensions.ToSKPixmap(CoreGraphics.CGImage,SkiaSharp.SKPixmap) - - [ ] M:SkiaSharp.Views.watchOS.AppleExtensions.ToSKPoint(CoreGraphics.CGPoint) - - [ ] M:SkiaSharp.Views.watchOS.AppleExtensions.ToSKRect(CoreGraphics.CGRect) - - [ ] M:SkiaSharp.Views.watchOS.AppleExtensions.ToSKSize(CoreGraphics.CGSize) -- [ ] SkiaSharp.Views.watchOS.Extensions - - [ ] M:SkiaSharp.Views.watchOS.Extensions.ToDrawingPoint(SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.Views.watchOS.Extensions.ToDrawingPoint(SkiaSharp.SKPointI) - - [ ] M:SkiaSharp.Views.watchOS.Extensions.ToDrawingRect(SkiaSharp.SKRect) - - [ ] M:SkiaSharp.Views.watchOS.Extensions.ToDrawingRect(SkiaSharp.SKRectI) - - [ ] M:SkiaSharp.Views.watchOS.Extensions.ToDrawingSize(SkiaSharp.SKSize) - - [ ] M:SkiaSharp.Views.watchOS.Extensions.ToDrawingSize(SkiaSharp.SKSizeI) - - [ ] M:SkiaSharp.Views.watchOS.Extensions.ToSKPoint(System.Drawing.Point) - - [ ] M:SkiaSharp.Views.watchOS.Extensions.ToSKPoint(System.Drawing.PointF) - - [ ] M:SkiaSharp.Views.watchOS.Extensions.ToSKRect(System.Drawing.Rectangle) - - [ ] M:SkiaSharp.Views.watchOS.Extensions.ToSKRect(System.Drawing.RectangleF) - - [ ] M:SkiaSharp.Views.watchOS.Extensions.ToSKSize(System.Drawing.Size) - - [ ] M:SkiaSharp.Views.watchOS.Extensions.ToSKSize(System.Drawing.SizeF) -- [ ] SkiaSharp.Views.watchOS.iOSExtensions - - [ ] M:SkiaSharp.Views.watchOS.iOSExtensions.ToSKBitmap(UIKit.UIImage) - - [ ] M:SkiaSharp.Views.watchOS.iOSExtensions.ToSKColor(UIKit.UIColor) - - [ ] M:SkiaSharp.Views.watchOS.iOSExtensions.ToSKColorF(UIKit.UIColor) - - [ ] M:SkiaSharp.Views.watchOS.iOSExtensions.ToSKImage(UIKit.UIImage) - - [ ] M:SkiaSharp.Views.watchOS.iOSExtensions.ToSKPixmap(UIKit.UIImage,SkiaSharp.SKPixmap) - - [ ] M:SkiaSharp.Views.watchOS.iOSExtensions.ToUIColor(SkiaSharp.SKColor) - - [ ] M:SkiaSharp.Views.watchOS.iOSExtensions.ToUIColor(SkiaSharp.SKColorF) - - [ ] M:SkiaSharp.Views.watchOS.iOSExtensions.ToUIImage(SkiaSharp.SKBitmap,System.nfloat,UIKit.UIImageOrientation) - - [ ] M:SkiaSharp.Views.watchOS.iOSExtensions.ToUIImage(SkiaSharp.SKBitmap) - - [ ] M:SkiaSharp.Views.watchOS.iOSExtensions.ToUIImage(SkiaSharp.SKImage) - - [ ] M:SkiaSharp.Views.watchOS.iOSExtensions.ToUIImage(SkiaSharp.SKPicture,SkiaSharp.SKSizeI,System.nfloat,UIKit.UIImageOrientation) - - [ ] M:SkiaSharp.Views.watchOS.iOSExtensions.ToUIImage(SkiaSharp.SKPicture,SkiaSharp.SKSizeI) - - [ ] M:SkiaSharp.Views.watchOS.iOSExtensions.ToUIImage(SkiaSharp.SKPixmap,System.nfloat,UIKit.UIImageOrientation) - - [ ] M:SkiaSharp.Views.watchOS.iOSExtensions.ToUIImage(SkiaSharp.SKPixmap) -- [ ] SkiaSharp.Views.watchOS.ISKCanvasLayerDelegate - - [ ] M:SkiaSharp.Views.watchOS.ISKCanvasLayerDelegate.DrawInSurface(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo) -- [ ] SkiaSharp.Views.watchOS.SKPaintSurfaceEventArgs - - [ ] M:SkiaSharp.Views.watchOS.SKPaintSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo,SkiaSharp.SKImageInfo) - - [ ] M:SkiaSharp.Views.watchOS.SKPaintSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo) - - [ ] P:SkiaSharp.Views.watchOS.SKPaintSurfaceEventArgs.Info - - [ ] P:SkiaSharp.Views.watchOS.SKPaintSurfaceEventArgs.RawInfo - - [ ] P:SkiaSharp.Views.watchOS.SKPaintSurfaceEventArgs.Surface - -## Namespace SkiaSharp.Views.Windows - -- [ ] SkiaSharp.Views.Windows.Extensions - - [ ] M:SkiaSharp.Views.Windows.Extensions.ToDrawingPoint(SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.Views.Windows.Extensions.ToDrawingPoint(SkiaSharp.SKPointI) - - [ ] M:SkiaSharp.Views.Windows.Extensions.ToDrawingRect(SkiaSharp.SKRect) - - [ ] M:SkiaSharp.Views.Windows.Extensions.ToDrawingRect(SkiaSharp.SKRectI) - - [ ] M:SkiaSharp.Views.Windows.Extensions.ToDrawingSize(SkiaSharp.SKSize) - - [ ] M:SkiaSharp.Views.Windows.Extensions.ToDrawingSize(SkiaSharp.SKSizeI) - - [ ] M:SkiaSharp.Views.Windows.Extensions.ToSKPoint(System.Drawing.Point) - - [ ] M:SkiaSharp.Views.Windows.Extensions.ToSKPoint(System.Drawing.PointF) - - [ ] M:SkiaSharp.Views.Windows.Extensions.ToSKRect(System.Drawing.Rectangle) - - [ ] M:SkiaSharp.Views.Windows.Extensions.ToSKRect(System.Drawing.RectangleF) - - [ ] M:SkiaSharp.Views.Windows.Extensions.ToSKSize(System.Drawing.Size) - - [ ] M:SkiaSharp.Views.Windows.Extensions.ToSKSize(System.Drawing.SizeF) -- [ ] SkiaSharp.Views.Windows.SKPaintGLSurfaceEventArgs - - [ ] M:SkiaSharp.Views.Windows.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType,SkiaSharp.GRGlFramebufferInfo) - - [ ] M:SkiaSharp.Views.Windows.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKColorType) - - [ ] M:SkiaSharp.Views.Windows.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKImageInfo,SkiaSharp.SKImageInfo) - - [ ] M:SkiaSharp.Views.Windows.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget,SkiaSharp.GRSurfaceOrigin,SkiaSharp.SKImageInfo) - - [ ] M:SkiaSharp.Views.Windows.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTarget) - - [ ] M:SkiaSharp.Views.Windows.SKPaintGLSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.GRBackendRenderTargetDesc) - - [ ] P:SkiaSharp.Views.Windows.SKPaintGLSurfaceEventArgs.BackendRenderTarget - - [ ] P:SkiaSharp.Views.Windows.SKPaintGLSurfaceEventArgs.ColorType - - [ ] P:SkiaSharp.Views.Windows.SKPaintGLSurfaceEventArgs.Info - - [ ] P:SkiaSharp.Views.Windows.SKPaintGLSurfaceEventArgs.Origin - - [ ] P:SkiaSharp.Views.Windows.SKPaintGLSurfaceEventArgs.RawInfo - - [ ] P:SkiaSharp.Views.Windows.SKPaintGLSurfaceEventArgs.RenderTarget - - [ ] P:SkiaSharp.Views.Windows.SKPaintGLSurfaceEventArgs.Surface -- [ ] SkiaSharp.Views.Windows.SKPaintSurfaceEventArgs - - [ ] M:SkiaSharp.Views.Windows.SKPaintSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo,SkiaSharp.SKImageInfo) - - [ ] M:SkiaSharp.Views.Windows.SKPaintSurfaceEventArgs.#ctor(SkiaSharp.SKSurface,SkiaSharp.SKImageInfo) - - [ ] P:SkiaSharp.Views.Windows.SKPaintSurfaceEventArgs.Info - - [ ] P:SkiaSharp.Views.Windows.SKPaintSurfaceEventArgs.RawInfo - - [ ] P:SkiaSharp.Views.Windows.SKPaintSurfaceEventArgs.Surface -- [ ] SkiaSharp.Views.Windows.SKXamlCanvas - - [ ] E:SkiaSharp.Views.Windows.SKXamlCanvas.PaintSurface - - [ ] M:SkiaSharp.Views.Windows.SKXamlCanvas.#ctor - - [ ] M:SkiaSharp.Views.Windows.SKXamlCanvas.Invalidate - - [ ] M:SkiaSharp.Views.Windows.SKXamlCanvas.OnPaintSurface(SkiaSharp.Views.Windows.SKPaintSurfaceEventArgs) - - [ ] P:SkiaSharp.Views.Windows.SKXamlCanvas.CanvasSize - - [ ] P:SkiaSharp.Views.Windows.SKXamlCanvas.Dpi - - [ ] P:SkiaSharp.Views.Windows.SKXamlCanvas.IgnorePixelScaling -- [ ] SkiaSharp.Views.Windows.WindowsExtensions - - [ ] M:SkiaSharp.Views.Windows.WindowsExtensions.ToColor(SkiaSharp.SKColor) - - [ ] M:SkiaSharp.Views.Windows.WindowsExtensions.ToPoint(SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.Views.Windows.WindowsExtensions.ToRect(SkiaSharp.SKRect) - - [ ] M:SkiaSharp.Views.Windows.WindowsExtensions.ToSize(SkiaSharp.SKSize) - - [ ] M:SkiaSharp.Views.Windows.WindowsExtensions.ToSKBitmap(Microsoft.UI.Xaml.Media.Imaging.WriteableBitmap) - - [ ] M:SkiaSharp.Views.Windows.WindowsExtensions.ToSKColor(Windows.UI.Color) - - [ ] M:SkiaSharp.Views.Windows.WindowsExtensions.ToSKImage(Microsoft.UI.Xaml.Media.Imaging.WriteableBitmap) - - [ ] M:SkiaSharp.Views.Windows.WindowsExtensions.ToSKPixmap(Microsoft.UI.Xaml.Media.Imaging.WriteableBitmap,SkiaSharp.SKPixmap) - - [ ] M:SkiaSharp.Views.Windows.WindowsExtensions.ToSKPoint(Windows.Foundation.Point) - - [ ] M:SkiaSharp.Views.Windows.WindowsExtensions.ToSKRect(Windows.Foundation.Rect) - - [ ] M:SkiaSharp.Views.Windows.WindowsExtensions.ToSKSize(Windows.Foundation.Size) - - [ ] M:SkiaSharp.Views.Windows.WindowsExtensions.ToWriteableBitmap(SkiaSharp.SKBitmap) - - [ ] M:SkiaSharp.Views.Windows.WindowsExtensions.ToWriteableBitmap(SkiaSharp.SKImage) - - [ ] M:SkiaSharp.Views.Windows.WindowsExtensions.ToWriteableBitmap(SkiaSharp.SKPicture,SkiaSharp.SKSizeI) - - [ ] M:SkiaSharp.Views.Windows.WindowsExtensions.ToWriteableBitmap(SkiaSharp.SKPixmap) - -## Namespace SkiaSharp.Views.WPF - -- [ ] SkiaSharp.Views.WPF.SKElement - - [ ] E:SkiaSharp.Views.WPF.SKElement.PaintSurface - - [ ] M:SkiaSharp.Views.WPF.SKElement.#ctor - - [ ] M:SkiaSharp.Views.WPF.SKElement.OnPaintSurface(SkiaSharp.Views.Desktop.SKPaintSurfaceEventArgs) - - [ ] M:SkiaSharp.Views.WPF.SKElement.OnRender(System.Windows.Media.DrawingContext) - - [ ] M:SkiaSharp.Views.WPF.SKElement.OnRenderSizeChanged(System.Windows.SizeChangedInfo) - - [ ] P:SkiaSharp.Views.WPF.SKElement.CanvasSize - - [ ] P:SkiaSharp.Views.WPF.SKElement.IgnorePixelScaling -- [ ] SkiaSharp.Views.WPF.WPFExtensions - - [ ] M:SkiaSharp.Views.WPF.WPFExtensions.ToColor(SkiaSharp.SKColor) - - [ ] M:SkiaSharp.Views.WPF.WPFExtensions.ToPoint(SkiaSharp.SKPoint) - - [ ] M:SkiaSharp.Views.WPF.WPFExtensions.ToRect(SkiaSharp.SKRect) - - [ ] M:SkiaSharp.Views.WPF.WPFExtensions.ToSize(SkiaSharp.SKSize) - - [ ] M:SkiaSharp.Views.WPF.WPFExtensions.ToSKBitmap(System.Windows.Media.Imaging.BitmapSource) - - [ ] M:SkiaSharp.Views.WPF.WPFExtensions.ToSKColor(System.Windows.Media.Color) - - [ ] M:SkiaSharp.Views.WPF.WPFExtensions.ToSKImage(System.Windows.Media.Imaging.BitmapSource) - - [ ] M:SkiaSharp.Views.WPF.WPFExtensions.ToSKPixmap(System.Windows.Media.Imaging.BitmapSource,SkiaSharp.SKPixmap) - - [ ] M:SkiaSharp.Views.WPF.WPFExtensions.ToSKPoint(System.Windows.Point) - - [ ] M:SkiaSharp.Views.WPF.WPFExtensions.ToSKRect(System.Windows.Rect) - - [ ] M:SkiaSharp.Views.WPF.WPFExtensions.ToSKSize(System.Windows.Size) - - [ ] M:SkiaSharp.Views.WPF.WPFExtensions.ToWriteableBitmap(SkiaSharp.SKBitmap) - - [ ] M:SkiaSharp.Views.WPF.WPFExtensions.ToWriteableBitmap(SkiaSharp.SKImage) - - [ ] M:SkiaSharp.Views.WPF.WPFExtensions.ToWriteableBitmap(SkiaSharp.SKPicture,SkiaSharp.SKSizeI) - - [ ] M:SkiaSharp.Views.WPF.WPFExtensions.ToWriteableBitmap(SkiaSharp.SKPixmap) - From be862bba020fafe29c69ec25b65b6aeebdf5e8bd Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Fri, 5 Sep 2025 17:35:11 +0200 Subject: [PATCH 21/35] Delete API.Docs.Migration.Guide.md --- API.Docs.Migration.Guide.md | 56 ------------------------------------- 1 file changed, 56 deletions(-) delete mode 100644 API.Docs.Migration.Guide.md diff --git a/API.Docs.Migration.Guide.md b/API.Docs.Migration.Guide.md deleted file mode 100644 index a437dbf02c..0000000000 --- a/API.Docs.Migration.Guide.md +++ /dev/null @@ -1,56 +0,0 @@ -# API Docs Migration Guide - -This guide is for agents migrating API documentation from the legacy `docs/SkiaSharpAPI` into inline XML docs in the C# codebase. Use this together with `API.Docs.Migration.Checklist.md`. - -Quick start -- Open `API.Docs.Migration.Checklist.md` and pick the next unchecked type from the top (within its namespace). -- Open the XML at `docs/SkiaSharpAPI//.xml` and the C# source file under `binding/**` or `source/**` that defines that type. -- Copy the XML docs verbatim into the code as XML documentation comments. -- Mark the type and each migrated member in the checklist as checked. - -Rules -- Source of truth: Only use the XML files in `docs/SkiaSharpAPI`. Do not invent, paraphrase, or summarize; copy text verbatim (including "To be added."). -- Placement style: Place XML docs immediately before declarations. - - Types: place `///` docs outside and immediately above the `class/struct/interface/enum` declaration. - - Members: place docs immediately above the member declaration. -- XML tag formatting: The opening and closing tags for `summary` and `remarks` must each be on their own line. - - Example: - - Correct: - /// - /// Represents a text buffer in memory. - /// - /// - /// Additional details here. - /// - - Incorrect: `/// Represents a text buffer in memory.` -- Map DocIds correctly: - - `T:` type, `M:` method/constructor, `P:` property, `F:` field, `E:` event. - - Match overload signatures exactly before pasting docs. -- Coverage: Migrate all members that exist in code and are present in the XML. If the XML contains a DocId that is not present in code, do not add code. Add a note under the type in the checklist: `Missing in code: ` and leave it unchecked. -- Fidelity: Preserve wording, punctuation, and simple formatting. Use appropriate XML doc tags: `summary`, `remarks`, `param`, `returns`, `value`, `exception` when present. -- No API changes: Do not alter public APIs to make docs fit. If there’s a mismatch, note it in the checklist and continue. - -Workflow -1) Select the next unchecked type in `API.Docs.Migration.Checklist.md`. -2) Open its XML and corresponding C# file. -3) Insert type docs above the type; then migrate each member’s docs by matching DocIds to members. Keep order and text verbatim. -4) If a DocId isn’t found in code, note it in the checklist as `Missing in code: `. -5) Save the file, sanity-check XML doc syntax. -6) Tick off the type and migrated member lines in the checklist. -7) Repeat for the next type. - -Helpers -- Regenerate the checklist from the docs folder (prints to stdout): - - PowerShell: - - `pwsh -NoProfile -File scripts/Generate-ApiDocsChecklist.ps1 -DocsRoot docs/SkiaSharpAPI > API.Docs.Migration.Checklist.md` -- Searching code: find the C# type by fully-qualified name or by filename in `binding/**` or `source/**`. - -Definition of done (per type) -- Type documentation is placed immediately before the type declaration. -- All existing members with DocIds in the XML are documented verbatim. -- Missing DocIds are noted under the type in the checklist. -- The type and migrated members are checked off in `API.Docs.Migration.Checklist.md`. - -Notes -- Many entries in the XML say "To be added." Keep them verbatim. -- For nested types, place docs above the nested declaration, still using the outside-before style. From d3bc42fa3a6f50365bb668b5fd8d4552895c4b28 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Fri, 5 Sep 2025 17:36:05 +0200 Subject: [PATCH 22/35] back again --- binding/SkiaSharp/SkiaSharp.csproj | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/binding/SkiaSharp/SkiaSharp.csproj b/binding/SkiaSharp/SkiaSharp.csproj index d0c66ad998..51f3fcc4c8 100644 --- a/binding/SkiaSharp/SkiaSharp.csproj +++ b/binding/SkiaSharp/SkiaSharp.csproj @@ -1,7 +1,6 @@  - net8.0 - + $(AllTargetFrameworks) SkiaSharp SkiaSharp SkiaSharp @@ -16,7 +15,7 @@ $(DefineConstants);USE_LIBRARY_IMPORT - + From 028e273e91f3be698f4be0d4b5b632abbbf6939e Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Fri, 5 Sep 2025 17:52:59 +0200 Subject: [PATCH 23/35] add images from docs for now --- docs-images/SKPaintText.png | Bin 0 -> 10212 bytes docs-images/compose.png | Bin 0 -> 134258 bytes docs-images/fractal-perlin-noise.png | Bin 0 -> 175305 bytes docs-images/gradient.png | Bin 0 -> 11294 bytes docs-images/linear.png | Bin 0 -> 1014 bytes docs-images/perlin-noise-turbulence.png | Bin 0 -> 143020 bytes docs-images/radial.png | Bin 0 -> 12306 bytes docs-images/sk3dview.png | Bin 0 -> 3628 bytes docs-images/surface-rects.png | Bin 0 -> 1087 bytes docs-images/sweep.png | Bin 0 -> 31906 bytes docs-images/twopoint.png | Bin 0 -> 12846 bytes 11 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs-images/SKPaintText.png create mode 100644 docs-images/compose.png create mode 100644 docs-images/fractal-perlin-noise.png create mode 100644 docs-images/gradient.png create mode 100644 docs-images/linear.png create mode 100644 docs-images/perlin-noise-turbulence.png create mode 100644 docs-images/radial.png create mode 100644 docs-images/sk3dview.png create mode 100644 docs-images/surface-rects.png create mode 100644 docs-images/sweep.png create mode 100644 docs-images/twopoint.png diff --git a/docs-images/SKPaintText.png b/docs-images/SKPaintText.png new file mode 100644 index 0000000000000000000000000000000000000000..0fa0556409d1763eb04213032e992bd597d3a8c7 GIT binary patch literal 10212 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�){Tyk&nF-1482p%Mhe0HdPCQPLxa8z#_L=Y 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%0D=wo*Zs^yOR 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 literal 0 HcmV?d00001 diff --git a/docs-images/gradient.png b/docs-images/gradient.png new file mode 100644 index 0000000000000000000000000000000000000000..18e2085669397a7f54cde94bd442b2bf369770af GIT binary patch literal 11294 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 literal 0 HcmV?d00001 diff --git a/docs-images/sweep.png b/docs-images/sweep.png new file mode 100644 index 0000000000000000000000000000000000000000..87efa3bd85f79d10a9894b46c75b218e5334811a GIT binary patch literal 31906 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 Date: Fri, 5 Sep 2025 18:07:21 +0200 Subject: [PATCH 24/35] some fixes --- binding/HarfBuzzSharp/Blob.cs | 16 +- binding/HarfBuzzSharp/Buffer.cs | 30 +- binding/HarfBuzzSharp/DelegateProxies.font.cs | 2 +- .../HarfBuzzSharp/HarfBuzzApi.generated.cs | 16 +- binding/HarfBuzzSharp/NativeObject.cs | 4 +- binding/SkiaSharp/Definitions.cs | 134 ++++++--- binding/SkiaSharp/GRBackendRenderTarget.cs | 10 +- binding/SkiaSharp/GRBackendTexture.cs | 6 +- binding/SkiaSharp/GRContext.cs | 16 +- binding/SkiaSharp/GRContextOptions.cs | 20 +- binding/SkiaSharp/GRGlInterface.cs | 4 +- binding/SkiaSharp/MathTypes.cs | 8 +- binding/SkiaSharp/SKAutoCoInitialize.cs | 4 +- binding/SkiaSharp/SKBitmap.cs | 104 +++++-- binding/SkiaSharp/SKCanvas.cs | 164 +++++++---- binding/SkiaSharp/SKCodec.cs | 90 ++++-- binding/SkiaSharp/SKColor.cs | 20 +- binding/SkiaSharp/SKColorF.cs | 20 +- binding/SkiaSharp/SKColorFilter.cs | 16 +- binding/SkiaSharp/SKColorSpaceStructs.cs | 20 +- binding/SkiaSharp/SKData.cs | 20 +- binding/SkiaSharp/SKDocument.cs | 40 ++- binding/SkiaSharp/SKDrawable.cs | 20 +- binding/SkiaSharp/SKFontManager.cs | 48 ++- binding/SkiaSharp/SKFontStyle.cs | 8 +- .../SkiaSharp/SKFrontBufferedManagedStream.cs | 4 +- binding/SkiaSharp/SKFrontBufferedStream.cs | 4 +- binding/SkiaSharp/SKImage.cs | 60 +++- binding/SkiaSharp/SKImageInfo.cs | 28 +- binding/SkiaSharp/SKManagedStream.cs | 10 +- binding/SkiaSharp/SKManagedWStream.cs | 4 +- binding/SkiaSharp/SKMatrix.cs | 40 ++- binding/SkiaSharp/SKMatrix44.cs | 24 +- binding/SkiaSharp/SKNoDrawCanvas.cs | 4 +- binding/SkiaSharp/SKObject.cs | 16 +- binding/SkiaSharp/SKOverdrawCanvas.cs | 4 +- binding/SkiaSharp/SKPMColor.cs | 4 +- binding/SkiaSharp/SKPaint.cs | 256 +++++++++++----- binding/SkiaSharp/SKPath.cs | 276 ++++++++++++------ binding/SkiaSharp/SKPathEffect.cs | 20 +- binding/SkiaSharp/SKPathMeasure.cs | 28 +- binding/SkiaSharp/SKPicture.cs | 8 +- binding/SkiaSharp/SKPictureRecorder.cs | 18 +- binding/SkiaSharp/SKPixmap.cs | 22 +- binding/SkiaSharp/SKRegion.cs | 24 +- binding/SkiaSharp/SKRoundRect.cs | 32 +- binding/SkiaSharp/SKSVG.cs | 4 +- binding/SkiaSharp/SKShader.cs | 36 ++- binding/SkiaSharp/SKStream.cs | 32 +- binding/SkiaSharp/SKSurface.cs | 56 +++- binding/SkiaSharp/SKSurfaceProperties.cs | 4 +- binding/SkiaSharp/SKTypeface.cs | 64 ++-- binding/SkiaSharp/SkiaApi.generated.cs | 72 +++-- source/SkiaSharp.Build.props | 1 + .../SkiaSharp.HarfBuzz/SKShaper.cs | 4 +- .../SKCanvasView.cs | 18 +- .../SkiaSharp.Views.Maui.Controls/SKGLView.cs | 10 +- .../SKTouchEventArgs.cs | 16 +- .../SkiaSharp.Views.Gtk3/SKDrawingArea.cs | 10 +- .../SKPaintGLSurfaceEventArgs.cs | 4 +- .../SkiaSharp.Views.WPF/SKElement.cs | 8 +- .../SkiaSharp.Views.WinUI/SKSwapChainPanel.cs | 10 +- .../SkiaSharp.Views.WinUI/SKXamlCanvas.cs | 14 +- .../SkiaSharp.Views.WindowsForms/SKControl.cs | 10 +- .../SKGLControl.cs | 10 +- .../Platform/Android/GLTextureView.cs | 58 ++-- .../Platform/Android/SKCanvasView.cs | 14 +- .../Platform/Android/SKGLSurfaceView.cs | 10 +- .../Android/SKGLSurfaceViewRenderer.cs | 4 +- .../Platform/Android/SKGLTextureView.cs | 10 +- .../Android/SKGLTextureViewRenderer.cs | 4 +- .../Platform/Android/SKSurfaceView.cs | 4 +- .../Platform/Apple/SKCanvasLayer.cs | 14 +- .../Platform/Tizen/CustomRenderingView.cs | 4 +- .../Platform/Tizen/SKCanvasView.cs | 10 +- .../Platform/Tizen/SKGLSurfaceView.cs | 6 +- .../Platform/iOS/SKCanvasView.cs | 14 +- .../SkiaSharp.Views/Platform/iOS/SKGLLayer.cs | 10 +- .../SkiaSharp.Views/Platform/iOS/SKGLView.cs | 10 +- .../Platform/macOS/SKCanvasView.cs | 14 +- .../Platform/macOS/SKGLLayer.cs | 10 +- .../Platform/macOS/SKGLView.cs | 10 +- 82 files changed, 1660 insertions(+), 655 deletions(-) diff --git a/binding/HarfBuzzSharp/Blob.cs b/binding/HarfBuzzSharp/Blob.cs index 1a69a3dcc5..06fc3ae510 100644 --- a/binding/HarfBuzzSharp/Blob.cs +++ b/binding/HarfBuzzSharp/Blob.cs @@ -28,7 +28,9 @@ internal Blob (IntPtr handle) /// The data to wrap. /// The length of the data being wrapped. /// The memory mode to use. - /// If there was a problem creating the blob, or if the data length was zero, then an empty blob will be created. + /// + /// If there was a problem creating the blob, or if the data length was zero, then an empty blob will be created. + /// public Blob (IntPtr data, int length, MemoryMode mode) : this (data, length, mode, null) { @@ -41,7 +43,9 @@ public Blob (IntPtr data, int length, MemoryMode mode) /// The length of the data being wrapped. /// The memory mode to use. /// The delegate to invoke when the data is not needed anymore. - /// If there was a problem creating the blob, or if the data length was zero, then an empty blob will be created. + /// + /// If there was a problem creating the blob, or if the data length was zero, then an empty blob will be created. + /// public Blob (IntPtr data, int length, MemoryMode mode, ReleaseDelegate releaseDelegate) : this (Create (data, length, mode, releaseDelegate)) { @@ -81,7 +85,9 @@ protected override void DisposeHandler () /// Returns a stream that wraps the data. /// /// Returns the stream that wraps the data. - /// If the data is released, then the stream becomes invalid. + /// + /// If the data is released, then the stream becomes invalid. + /// public unsafe Stream AsStream () { uint length; @@ -93,7 +99,9 @@ public unsafe Stream AsStream () /// Returns a span that wraps the data. /// /// Returns the span that wraps the data. - /// If the data is released, then the span becomes invalid. + /// + /// If the data is released, then the span becomes invalid. + /// public unsafe Span AsSpan () { uint length; diff --git a/binding/HarfBuzzSharp/Buffer.cs b/binding/HarfBuzzSharp/Buffer.cs index 5d80a7439e..f947b44c20 100644 --- a/binding/HarfBuzzSharp/Buffer.cs +++ b/binding/HarfBuzzSharp/Buffer.cs @@ -20,7 +20,7 @@ internal Buffer (IntPtr handle) } ///

- /// Creates a new with default values. + /// Creates a new with default values. /// public Buffer () : this (HarfBuzzApi.hb_buffer_create ()) @@ -35,7 +35,9 @@ public ContentType ContentType { /// /// Get or sets the text flow direction of the buffer. /// - /// No shaping can happen without setting the direction, or invoking . + /// + /// No shaping can happen without setting the direction, or invoking . + /// public Direction Direction { get => HarfBuzzApi.hb_buffer_get_direction (Handle); set => HarfBuzzApi.hb_buffer_set_direction (Handle, value); @@ -74,7 +76,9 @@ public Script Script { /// /// Gets or sets the size of the buffer. /// - /// If the new length is greater that the current length, more memory will be allocated. If the new length is less than the current length, the extra items will be cleared. + /// + /// If the new length is greater that the current length, more memory will be allocated. If the new length is less than the current length, the extra items will be cleared. + /// public int Length { get => (int)HarfBuzzApi.hb_buffer_get_length (Handle); set => HarfBuzzApi.hb_buffer_set_length (Handle, (uint)value); @@ -88,7 +92,9 @@ public UnicodeFunctions UnicodeFunctions { /// /// Gets the buffer glyph information array. /// - /// The information is valid as long as buffer contents are not modified. + /// + /// The information is valid as long as buffer contents are not modified. + /// public GlyphInfo[] GlyphInfos { get { var array = GetGlyphInfoSpan ().ToArray (); @@ -100,7 +106,9 @@ public GlyphInfo[] GlyphInfos { /// /// Gets the buffer glyph position array. /// - /// The positions are valid as long as buffer contents are not modified. + /// + /// The positions are valid as long as buffer contents are not modified. + /// public GlyphPosition[] GlyphPositions { get { var array = GetGlyphPositionSpan ().ToArray (); @@ -116,7 +124,9 @@ public GlyphPosition[] GlyphPositions { /// /// The Unicode code point. /// The cluster value of the code point. - /// This function does not check the validity of the codepoint. + /// + /// This function does not check the validity of the codepoint. + /// public void Add (uint codepoint, uint cluster) { if (Length != 0 && ContentType != ContentType.Unicode) @@ -248,7 +258,9 @@ public void AddUtf32 (IntPtr text, int textLength, int itemOffset, int itemLengt /// Appends characters from the span to the buffer. /// /// The span of Unicode code points to append. - /// This function does not check the validity of the characters. + /// + /// This function does not check the validity of the characters. + /// public void AddCodepoints (ReadOnlySpan text) => AddCodepoints (text, 0, -1); public unsafe void AddCodepoints (ReadOnlySpan text, int itemOffset, int itemLength) @@ -309,7 +321,9 @@ public void GuessSegmentProperties () /// /// Clears the buffer's contents. /// - /// This operation preserves the Unicode functions and replacement code point. + /// + /// This operation preserves the Unicode functions and replacement code point. + /// public void ClearContents () => HarfBuzzApi.hb_buffer_clear_contents (Handle); public void Reset () => HarfBuzzApi.hb_buffer_reset (Handle); diff --git a/binding/HarfBuzzSharp/DelegateProxies.font.cs b/binding/HarfBuzzSharp/DelegateProxies.font.cs index d98e0bbd17..7d4c584a62 100644 --- a/binding/HarfBuzzSharp/DelegateProxies.font.cs +++ b/binding/HarfBuzzSharp/DelegateProxies.font.cs @@ -6,7 +6,7 @@ namespace HarfBuzzSharp { /// - /// The delegate that is invoked when or is invoked. + /// The delegate that is invoked when or is invoked. /// /// The font. /// The additional data passed to when the functions were set. diff --git a/binding/HarfBuzzSharp/HarfBuzzApi.generated.cs b/binding/HarfBuzzSharp/HarfBuzzApi.generated.cs index f450f2eef0..ad49bf81f5 100644 --- a/binding/HarfBuzzSharp/HarfBuzzApi.generated.cs +++ b/binding/HarfBuzzSharp/HarfBuzzApi.generated.cs @@ -6680,7 +6680,9 @@ public unsafe partial struct GlyphInfo : IEquatable { /// /// Gets or sets the Unicode code point (or the glyph index after shaping). /// - /// This represents either a Unicode code point (before shaping) or a glyph index (after shaping). + /// + /// This represents either a Unicode code point (before shaping) or a glyph index (after shaping). + /// public UInt32 Codepoint { readonly get => codepoint; set => codepoint = value; @@ -6770,7 +6772,9 @@ public Int32 YAdvance { /// /// Gets or sets how much the glyph moves horizontally before drawing it. /// - /// This should not affect how much the line advances. + /// + /// This should not affect how much the line advances. + /// public Int32 XOffset { readonly get => x_offset; set => x_offset = value; @@ -6781,7 +6785,9 @@ public Int32 XOffset { /// /// Gets or sets how much the glyph moves horizontally before drawing it. /// - /// This should not affect how much the line advances. + /// + /// This should not affect how much the line advances. + /// public Int32 YOffset { readonly get => y_offset; set => y_offset = value; @@ -7418,7 +7424,9 @@ public enum GlyphFlags { /// /// Various memory modes for /// - /// In no case shall the HarfBuzz client modify memory that is passed to HarfBuzz in a blob. If there is any such possibility, should be used such that HarfBuzz makes a copy immediately. + /// + /// In no case shall the HarfBuzz client modify memory that is passed to HarfBuzz in a blob. If there is any such possibility, should be used such that HarfBuzz makes a copy immediately. + /// public enum MemoryMode { // HB_MEMORY_MODE_DUPLICATE = 0 /// diff --git a/binding/HarfBuzzSharp/NativeObject.cs b/binding/HarfBuzzSharp/NativeObject.cs index 2c11d41f2a..f0454e7dcf 100644 --- a/binding/HarfBuzzSharp/NativeObject.cs +++ b/binding/HarfBuzzSharp/NativeObject.cs @@ -65,7 +65,9 @@ protected virtual void DisposeHandler () /// /// Releases all resources used by this . /// - /// Always dispose the object before you release your last reference to the . Otherwise, the resources it is using will not be freed until the garbage collector calls the finalizer. + /// + /// Always dispose the object before you release your last reference to the . Otherwise, the resources it is using will not be freed until the garbage collector calls the finalizer. + /// public void Dispose () { Dispose (true); diff --git a/binding/SkiaSharp/Definitions.cs b/binding/SkiaSharp/Definitions.cs index c0070d4950..2e4108283a 100644 --- a/binding/SkiaSharp/Definitions.cs +++ b/binding/SkiaSharp/Definitions.cs @@ -8,7 +8,9 @@ namespace SkiaSharp /// /// Various predefined font weights for use with . /// - /// Font weights can range from anywhere between 100 to 1000 (inclusive). + /// + /// Font weights can range from anywhere between 100 to 1000 (inclusive). + /// public enum SKFontStyleWeight { /// @@ -338,7 +340,9 @@ public struct SKCodecOptions : IEquatable /// /// Gets the default options. /// - /// The default value is not zero-initialized and without a subset rectangle. + /// + /// The default value is not zero-initialized and without a subset rectangle. + /// public static readonly SKCodecOptions Default; static SKCodecOptions () @@ -384,7 +388,9 @@ public SKCodecOptions (SKRectI subset) /// Create a new instance of with the specified frame index. /// /// The frame to decode. - /// Only meaningful for multi-frame images. + /// + /// Only meaningful for multi-frame images. + /// public SKCodecOptions (int frameIndex) { ZeroInitialized = SKZeroInitialized.No; @@ -397,7 +403,9 @@ public SKCodecOptions (int frameIndex) /// /// The frame to decode. /// The previous frame to decode. - /// Only meaningful for multi-frame images. + /// + /// Only meaningful for multi-frame images. + /// public SKCodecOptions (int frameIndex, int priorFrame) { ZeroInitialized = SKZeroInitialized.No; @@ -421,19 +429,23 @@ public SKCodecOptions (int frameIndex, int priorFrame) /// /// Gets or sets the frame to decode. /// - /// Only meaningful for multi-frame images. + /// + /// Only meaningful for multi-frame images. + /// public int FrameIndex { readonly get; set; } /// /// Gets or sets a value indicating which frame, if any, the destination bitmap already contains. /// - /// Only meaningful for multi-frame images. + /// + /// Only meaningful for multi-frame images. /// If needs to be blended with a prior /// frame (as reported by `SKCodec.FrameInfo[FrameIndex].RequiredFrame`), the /// client can set this to any non- /// frame in the range [RequiredFrame, FrameIndex) to indicate that that frame is /// already in the destination. is /// ignored in this case. - /// If set to -1, the codec will decode any necessary required frame(s) first. + /// If set to -1, the codec will decode any necessary required frame(s) first. + /// public int PriorFrame { readonly get; set; } /// @@ -481,43 +493,57 @@ public partial struct SKFontMetrics /// /// Gets the greatest distance above the baseline for any glyph. /// - /// Will be <= 0. + /// + /// Will be <= 0. + /// public readonly float Top => fTop; /// /// Gets the recommended distance above the baseline. /// - /// Will be <= 0. + /// + /// Will be <= 0. + /// public readonly float Ascent => fAscent; /// /// Gets the recommended distance below the baseline. /// - /// Will be >= 0. + /// + /// Will be >= 0. + /// public readonly float Descent => fDescent; /// /// Gets the greatest distance below the baseline for any glyph. /// - /// Will be >= 0. + /// + /// Will be >= 0. + /// public readonly float Bottom => fBottom; /// /// Gets the recommended distance to add between lines of text. /// - /// Will be >= 0. + /// + /// Will be >= 0. + /// public readonly float Leading => fLeading; /// /// Gets the average character width. /// - /// Will be >= 0. + /// + /// Will be >= 0. + /// public readonly float AverageCharacterWidth => fAvgCharWidth; /// /// Gets the max character width. /// - /// Will be >= 0. + /// + /// Will be >= 0. + /// public readonly float MaxCharacterWidth => fMaxCharWidth; /// @@ -533,24 +559,32 @@ public partial struct SKFontMetrics /// /// Gets the height of an 'x' in px. /// - /// 0 if no 'x' in face. + /// + /// 0 if no 'x' in face. + /// public readonly float XHeight => fXHeight; /// /// Gets the cap height. /// - /// Will be > 0, or 0 if cannot be determined. + /// + /// Will be > 0, or 0 if cannot be determined. + /// public readonly float CapHeight => fCapHeight; /// /// Gets the thickness of the underline. /// - /// 0 - if the thickness can not be determinednull - if the thickness is not set. + /// + /// 0 - if the thickness can not be determinednull - if the thickness is not set. + /// public readonly float? UnderlineThickness => GetIfValid (fUnderlineThickness, flagsUnderlineThicknessIsValid); /// /// Gets the position of the top of the underline stroke relative to the baseline. /// - /// Negative - underline should be drawn above baseline.Positive - underline should be drawn below baseline.Zero - underline should be drawn on baseline.underline position, or 0 if cannot be determined.null - does not have an UnderlinePosition. + /// + /// Negative - underline should be drawn above baseline.Positive - underline should be drawn below baseline.Zero - underline should be drawn on baseline.underline position, or 0 if cannot be determined.null - does not have an UnderlinePosition. + /// public readonly float? UnderlinePosition => GetIfValid (fUnderlinePosition, flagsUnderlinePositionIsValid); /// /// Gets the thickness of the strikeout. @@ -559,7 +593,9 @@ public partial struct SKFontMetrics /// /// Gets the position of the bottom of the strikeout stroke relative to the baseline. /// - /// This value is typically negative when valid. + /// + /// This value is typically negative when valid. + /// public readonly float? StrikeoutPosition => GetIfValid (fStrikeoutPosition, flagsStrikeoutPositionIsValid); private readonly float? GetIfValid (float value, uint flag) => @@ -569,7 +605,9 @@ public partial struct SKFontMetrics /// /// Specifies coordinates to divide a bitmap into ( * ) rectangles. /// - /// If the lattice divs or bounds are invalid, the entire lattice structure will be ignored on the draw call. + /// + /// If the lattice divs or bounds are invalid, the entire lattice structure will be ignored on the draw call. + /// public struct SKLattice : IEquatable { /// @@ -677,7 +715,9 @@ static SKDocumentPdfMetadata () /// Creates a new instance of with the specified raster DPI. /// /// The DPI (pixels-per-inch) at which features without native PDF support will be rasterized. - /// PDF pages are sized in point units. 1 pt == 1/72 inch == 127/360 mm. + /// + /// PDF pages are sized in point units. 1 pt == 1/72 inch == 127/360 mm. + /// public SKDocumentPdfMetadata (float rasterDpi) { Title = null; @@ -697,7 +737,9 @@ public SKDocumentPdfMetadata (float rasterDpi) /// Creates a new instance of with the specified encoding quality. /// /// The encoding quality. - /// The encoding quality is between 0 and 100. A quality of 101 indicates lossless encoding. + /// + /// The encoding quality is between 0 and 100. A quality of 101 indicates lossless encoding. + /// public SKDocumentPdfMetadata (int encodingQuality) { Title = null; @@ -718,7 +760,9 @@ public SKDocumentPdfMetadata (int encodingQuality) /// /// The DPI (pixels-per-inch) at which features without native PDF support will be rasterized. /// The encoding quality. - /// PDF pages are sized in point units. 1 pt == 1/72 inch == 127/360 mm. The encoding quality is between 0 and 100. A quality of 101 indicates lossless encoding. + /// + /// PDF pages are sized in point units. 1 pt == 1/72 inch == 127/360 mm. The encoding quality is between 0 and 100. A quality of 101 indicates lossless encoding. + /// public SKDocumentPdfMetadata (float rasterDpi, int encodingQuality) { Title = null; @@ -757,7 +801,9 @@ public SKDocumentPdfMetadata (float rasterDpi, int encodingQuality) /// /// The product that is converting this document to PDF. /// - /// Leave empty to get the default, correct value. + /// + /// Leave empty to get the default, correct value. + /// public string Producer { readonly get; set; } /// /// The date and time the document was created. @@ -770,26 +816,32 @@ public SKDocumentPdfMetadata (float rasterDpi, int encodingQuality) /// /// Gets or sets the DPI (pixels-per-inch) at which features without native PDF support will be rasterized. /// - /// PDF pages are sized in point units. 1 pt == 1/72 inch == 127/360 mm. + /// + /// PDF pages are sized in point units. 1 pt == 1/72 inch == 127/360 mm. /// A larger DPI would create a PDF that reflects the original intent with better /// fidelity, but it can make for larger PDF files too, which would use more /// memory while rendering, and it would be slower to be processed or sent online - /// or to printer. + /// or to printer. + /// public float RasterDpi { readonly get; set; } /// /// Gets or sets a value indicating whether or not make the document PDF/A-2b conformant. /// - /// If true, include XMP metadata, a document UUID, and sRGB output intent + /// + /// If true, include XMP metadata, a document UUID, and sRGB output intent /// information. This adds length to the document and makes it non-reproducable, - /// but are necessary features for PDF/A-2b conformance. + /// but are necessary features for PDF/A-2b conformance. + /// public bool PdfA { readonly get; set; } /// /// Gets or sets the encoding quality. /// - /// Encoding quality controls the trade-off between size and quality. By default + /// + /// Encoding quality controls the trade-off between size and quality. By default /// this is set to 101 percent, which corresponds to lossless encoding. If this - /// value is set to a value <= 100, and the image is opaque, it will be encoded - /// (using JPEG) with that quality setting. + /// value is set to a value <= 100, and the image is opaque, it will be encoded + /// (using JPEG) with that quality setting. + /// public int EncodingQuality { readonly get; set; } /// @@ -909,13 +961,17 @@ public SKPngEncoderOptions (SKPngEncoderFilterFlags filterFlags, int zLibLevel) /// /// Gets or sets the filtering flags. /// - /// If a single filter is chosen, then that filter will be used for every row.If multiple filters are chosen, then a heuristic will be used to guess which filter will encode smallest, then apply that filter. This happens on a per row basis, different rows can use different filters.Using a single filter (or less filters) is typically faster. Trying all of the filters may help minimize the output file size. + /// + /// If a single filter is chosen, then that filter will be used for every row.If multiple filters are chosen, then a heuristic will be used to guess which filter will encode smallest, then apply that filter. This happens on a per row basis, different rows can use different filters.Using a single filter (or less filters) is typically faster. Trying all of the filters may help minimize the output file size. + /// public SKPngEncoderFilterFlags FilterFlags => fFilterFlags; /// /// Gets or sets the compression level in the range 0..9. /// - /// A value of 0 is a special case to skip compression entirely, creating dramatically larger PNGs. + /// + /// A value of 0 is a special case to skip compression entirely, creating dramatically larger PNGs. + /// public int ZLibLevel => fZLibLevel; } @@ -965,13 +1021,17 @@ public SKJpegEncoderOptions (int quality, SKJpegEncoderDownsample downsample, SK /// /// Gets or sets the value to control how alpha is handled. /// - /// JPEGs must be opaque, so this instructs the encoder on how to handle input images with alpha. + /// + /// JPEGs must be opaque, so this instructs the encoder on how to handle input images with alpha. + /// public SKJpegEncoderAlphaOption AlphaOption => fAlphaOption; /// /// Gets or sets the downsampling factor for the U and V components. /// - /// This is only meaningful if the image is not gray, since gray will not be encoded as YUV. + /// + /// This is only meaningful if the image is not gray, since gray will not be encoded as YUV. + /// public SKJpegEncoderDownsample Downsample => fDownsample; /// @@ -1017,7 +1077,9 @@ public SKWebpEncoderOptions (SKWebpEncoderCompression compression, float quality /// /// Gets or sets the quality of the encoding. /// - /// If the compression is lossy, then the quality corresponds to the visual quality. Lower values are smaller, but will have reduced quality.If the compression is lossless, then the quality corresponds effort put into compressing the file. Lower values are faster, but higher values have smaller files. + /// + /// If the compression is lossy, then the quality corresponds to the visual quality. Lower values are smaller, but will have reduced quality.If the compression is lossless, then the quality corresponds effort put into compressing the file. Lower values are faster, but higher values have smaller files. + /// public float Quality => fQuality; } diff --git a/binding/SkiaSharp/GRBackendRenderTarget.cs b/binding/SkiaSharp/GRBackendRenderTarget.cs index 3eaa9e2d68..72eb33a9f8 100644 --- a/binding/SkiaSharp/GRBackendRenderTarget.cs +++ b/binding/SkiaSharp/GRBackendRenderTarget.cs @@ -8,13 +8,15 @@ namespace SkiaSharp /// /// Wrap an existing render target created by the client in the 3D API. /// - /// The client is responsible for ensuring that the underlying 3D API object lives + /// + /// The client is responsible for ensuring that the underlying 3D API object lives /// at least as long as the object wrapping /// it. /// We require the client to explicitly provide information about the target, such /// as width, height, and pixel configuration, rather than querying the 3D API for /// these values. We expect these properties to be immutable even if the 3D API - /// doesn't require this (eg: OpenGL). + /// doesn't require this (eg: OpenGL). + /// public unsafe class GRBackendRenderTarget : SKObject, ISKSkipObjectRegistration { internal GRBackendRenderTarget (IntPtr handle, bool owns) @@ -128,7 +130,9 @@ protected override void DisposeNative () => /// /// Gets the number of samples per pixel. /// - /// This is used to influence decisions about applying other forms of anti-aliasing. + /// + /// This is used to influence decisions about applying other forms of anti-aliasing. + /// public int SampleCount => SkiaApi.gr_backendrendertarget_get_samples (Handle); /// /// Gets the number of bits of stencil per-pixel. diff --git a/binding/SkiaSharp/GRBackendTexture.cs b/binding/SkiaSharp/GRBackendTexture.cs index a86a26b638..20220c850c 100644 --- a/binding/SkiaSharp/GRBackendTexture.cs +++ b/binding/SkiaSharp/GRBackendTexture.cs @@ -9,13 +9,15 @@ namespace SkiaSharp /// /// Wrap an existing texture created by the client in the 3D API. /// - /// The client is responsible for ensuring that the underlying 3D API object lives + /// + /// The client is responsible for ensuring that the underlying 3D API object lives /// at least as long as the object wrapping /// it. /// We require the client to explicitly provide information about the target, such /// as width, height, and pixel configuration, rather than querying the 3D API for /// these values. We expect these properties to be immutable even if the 3D API - /// doesn't require this (eg: OpenGL). + /// doesn't require this (eg: OpenGL). + /// public unsafe class GRBackendTexture : SKObject, ISKSkipObjectRegistration { internal GRBackendTexture (IntPtr handle, bool owns) diff --git a/binding/SkiaSharp/GRContext.cs b/binding/SkiaSharp/GRContext.cs index 9c93fc4995..a79f6c0f81 100644 --- a/binding/SkiaSharp/GRContext.cs +++ b/binding/SkiaSharp/GRContext.cs @@ -163,7 +163,9 @@ public void GetResourceCacheUsage (out int maxResources, out long maxResourceByt /// Informs the context that the state was modified and should resend. /// /// Flags to control what is reset. - /// The context normally assumes that no outsider is setting state within the underlying 3D API's context/device/whatever. This method shouldn't be called frequently for good performance. + /// + /// The context normally assumes that no outsider is setting state within the underlying 3D API's context/device/whatever. This method shouldn't be called frequently for good performance. + /// public void ResetContext (GRGlBackendState state) => ResetContext ((uint)state); @@ -171,7 +173,9 @@ public void ResetContext (GRGlBackendState state) => /// Informs the context that the state was modified and should resend. /// /// Flags to control what is reset. - /// The context normally assumes that no outsider is setting state within the underlying 3D API's context/device/whatever. This method shouldn't be called frequently for good performance. + /// + /// The context normally assumes that no outsider is setting state within the underlying 3D API's context/device/whatever. This method shouldn't be called frequently for good performance. + /// public void ResetContext (GRBackendState state = GRBackendState.All) => ResetContext ((uint)state); @@ -179,7 +183,9 @@ public void ResetContext (GRBackendState state = GRBackendState.All) => /// Informs the context that the state was modified and should resend. /// /// Flags to control what is reset. - /// The context normally assumes that no outsider is setting state within the underlying 3D API's context/device/whatever. This method shouldn't be called frequently for good performance. + /// + /// The context normally assumes that no outsider is setting state within the underlying 3D API's context/device/whatever. This method shouldn't be called frequently for good performance. + /// public void ResetContext (uint state) => SkiaApi.gr_direct_context_reset_context (Handle, state); @@ -207,7 +213,9 @@ public void Submit (bool synchronous = false) => /// /// The color type. /// Returns the maximum supported sample count. - /// 1 is returned if only non-MSAA rendering is supported for the color type. 0 is returned if rendering to this color type is not supported at all. + /// + /// 1 is returned if only non-MSAA rendering is supported for the color type. 0 is returned if rendering to this color type is not supported at all. + /// public new int GetMaxSurfaceSampleCount (SKColorType colorType) => base.GetMaxSurfaceSampleCount (colorType); diff --git a/binding/SkiaSharp/GRContextOptions.cs b/binding/SkiaSharp/GRContextOptions.cs index b3a02403c2..df380f7e21 100644 --- a/binding/SkiaSharp/GRContextOptions.cs +++ b/binding/SkiaSharp/GRContextOptions.cs @@ -12,7 +12,9 @@ public unsafe class GRContextOptions /// /// Gets or sets a value indicating whether to avoid allocating stencil buffers. /// - /// Bugs on certain drivers cause stencil buffers to leak. This flag causes Skia to avoid allocating stencil buffers and use alternate rasterization paths, avoiding the leak. + /// + /// Bugs on certain drivers cause stencil buffers to leak. This flag causes Skia to avoid allocating stencil buffers and use alternate rasterization paths, avoiding the leak. + /// public bool AvoidStencilBuffers { get; set; } = false; public int RuntimeProgramCacheSize { get; set; } = 256; @@ -20,25 +22,33 @@ public unsafe class GRContextOptions /// /// Gets or sets the maximum size of cache textures used for the SkiaSharp Glyph cache. /// - /// Default is 2048 * 1024 * 4. + /// + /// Default is 2048 * 1024 * 4. + /// public int GlyphCacheTextureMaximumBytes { get; set; } = 2048 * 1024 * 4; /// /// Gets or sets a value indicating whether to allow path mask textures to be cached. /// - /// This is only really useful if paths are commonly rendered at the same scale and fractional translation. Default is false. + /// + /// This is only really useful if paths are commonly rendered at the same scale and fractional translation. Default is false. + /// public bool AllowPathMaskCaching { get; set; } = true; /// /// Gets or sets a value indicating whether to construct mipmaps manually, via repeated downsampling draw-calls. /// - /// This is used when the driver's implementation (glGenerateMipmap) contains bugs. This requires mipmap level and LOD control (for example, desktop or ES3). Default is false. + /// + /// This is used when the driver's implementation (glGenerateMipmap) contains bugs. This requires mipmap level and LOD control (for example, desktop or ES3). Default is false. + /// public bool DoManualMipmapping { get; set; } = false; /// /// Gets or sets the threshold, in bytes, above which a buffer mapping API will be used to map vertex and index buffers to CPU memory in order to update them. /// - /// A value of -1 means the context should deduce the optimal value for this platform. Default is -1. + /// + /// A value of -1 means the context should deduce the optimal value for this platform. Default is -1. + /// public int BufferMapThreshold { get; set; } = -1; internal GRContextOptionsNative ToNative () => diff --git a/binding/SkiaSharp/GRGlInterface.cs b/binding/SkiaSharp/GRGlInterface.cs index 0198852f29..988424801b 100644 --- a/binding/SkiaSharp/GRGlInterface.cs +++ b/binding/SkiaSharp/GRGlInterface.cs @@ -15,7 +15,9 @@ namespace SkiaSharp /// /// The is used to interface with OpenGL. /// - /// A does not interact directly with the underlying backend, instead it uses an OpenGL interface. + /// + /// A does not interact directly with the underlying backend, instead it uses an OpenGL interface. + /// public unsafe partial class GRGlInterface : SKObject, ISKReferenceCounted, ISKSkipObjectRegistration { internal GRGlInterface (IntPtr h, bool owns) diff --git a/binding/SkiaSharp/MathTypes.cs b/binding/SkiaSharp/MathTypes.cs index b44449ec96..370889b220 100644 --- a/binding/SkiaSharp/MathTypes.cs +++ b/binding/SkiaSharp/MathTypes.cs @@ -8,7 +8,9 @@ namespace SkiaSharp /// /// Represents an ordered pair of floating-point x- and y-coordinates that defines a point in a two-dimensional plane. /// - /// To convert a to a , use or . + /// + /// To convert a to a , use or . + /// public partial struct SKPoint { /// @@ -303,7 +305,9 @@ public SKPointI (int x, int y) /// Translates this by the specified . /// /// The used to offset this . - /// This method adjusts the and values of this to the sum of the and values of this and . + /// + /// This method adjusts the and values of this to the sum of the and values of this and . + /// public void Offset (SKPointI p) { x += p.X; diff --git a/binding/SkiaSharp/SKAutoCoInitialize.cs b/binding/SkiaSharp/SKAutoCoInitialize.cs index cb0c17d649..30482c7705 100644 --- a/binding/SkiaSharp/SKAutoCoInitialize.cs +++ b/binding/SkiaSharp/SKAutoCoInitialize.cs @@ -9,7 +9,9 @@ namespace SkiaSharp /// /// Convenience class used to automatically initialize and uninitialize COM on supported platforms. /// - /// This is only supported on Windows, and is usually not needed. However, when creating a .NET Core app, COM may not be initialized.Currently, only and more specifically, XPS documents require COM. + /// + /// This is only supported on Windows, and is usually not needed. However, when creating a .NET Core app, COM may not be initialized.Currently, only and more specifically, XPS documents require COM. + /// public partial class SKAutoCoInitialize : IDisposable { private long hResult; diff --git a/binding/SkiaSharp/SKBitmap.cs b/binding/SkiaSharp/SKBitmap.cs index 1bd54b994c..8947e69e1d 100644 --- a/binding/SkiaSharp/SKBitmap.cs +++ b/binding/SkiaSharp/SKBitmap.cs @@ -14,7 +14,9 @@ namespace SkiaSharp /// /// The specifies a raster bitmap. /// - /// A bitmap has an integer width and height, and a format (color type), and a pointer to the actual pixels. Bitmaps can be drawn into a , but they are also used to specify the target of a ' drawing operations.A exposes , which lets a caller write its pixels. To retrieve a pointer to the raw image data of the bitmap, call the method, and then call the method to get a pointer to the image data. Once you no longer need to use the raw data pointer, call the method. The raw data is laid out in the format configured at the time that the bitmap was created.(Note: As of SkiaSharp 1.60.0, calls to and are no longer required, and they no longer exist as part of the API.) + /// + /// A bitmap has an integer width and height, and a format (color type), and a pointer to the actual pixels. Bitmaps can be drawn into a , but they are also used to specify the target of a ' drawing operations.A exposes , which lets a caller write its pixels. To retrieve a pointer to the raw image data of the bitmap, call the method, and then call the method to get a pointer to the image data. Once you no longer need to use the raw data pointer, call the method. The raw data is laid out in the format configured at the time that the bitmap was created.(Note: As of SkiaSharp 1.60.0, calls to and are no longer required, and they no longer exist as part of the API.) + /// public unsafe class SKBitmap : SKObject, ISKSkipObjectRegistration { private const string UnsupportedColorTypeMessage = "Setting the ColorTable is only supported for bitmaps with ColorTypes of Index8."; @@ -28,7 +30,9 @@ internal SKBitmap (IntPtr handle, bool owns) /// /// Default constructor that creates a bitmap with zero width and height, and no pixels. Its color type is set to . /// - /// This constructor does not allocate a backing store for the bitmap. + /// + /// This constructor does not allocate a backing store for the bitmap. + /// public SKBitmap () : this (SkiaApi.sk_bitmap_new (), true) { @@ -43,7 +47,9 @@ public SKBitmap () /// The desired width in pixels. /// The desired height in pixels. /// If true, sets the to , otherwise it sets it to . - /// This constructor might throw an exception if it is not possible to create a bitmap with the specified configuration (for example, the image info requires a color table, and there is no color table). + /// + /// This constructor might throw an exception if it is not possible to create a bitmap with the specified configuration (for example, the image info requires a color table, and there is no color table). + /// public SKBitmap (int width, int height, bool isOpaque = false) : this (width, height, SKImageInfo.PlatformColorType, isOpaque ? SKAlphaType.Opaque : SKAlphaType.Premul) { @@ -56,7 +62,9 @@ public SKBitmap (int width, int height, bool isOpaque = false) /// The desired height in pixels. /// The desired . /// The desired . - /// This constructor might throw an exception if it is not possible to create a bitmap with the specified configuration (for example, the image info requires a color table, and there is no color table). + /// + /// This constructor might throw an exception if it is not possible to create a bitmap with the specified configuration (for example, the image info requires a color table, and there is no color table). + /// public SKBitmap (int width, int height, SKColorType colorType, SKAlphaType alphaType) : this (new SKImageInfo (width, height, colorType, alphaType)) { @@ -76,7 +84,9 @@ public SKBitmap (int width, int height, SKColorType colorType, SKAlphaType alpha /// Constructor that configures the bitmap based on an specification. /// /// The description of the desired image format. - /// This constructor might throw an exception if it is not possible to create a bitmap with the specified configuration (for example, the image info requires a color table, and there is no color table). + /// + /// This constructor might throw an exception if it is not possible to create a bitmap with the specified configuration (for example, the image info requires a color table, and there is no color table). + /// public SKBitmap (SKImageInfo info) : this (info, info.RowBytes) { @@ -87,7 +97,9 @@ public SKBitmap (SKImageInfo info) /// /// The description of the desired image format. /// The number of bytes per row. - /// This constructor might throw an exception if it is not possible to create a bitmap with the specified configuration (for example, the image info requires a color table, and there is no color table). + /// + /// This constructor might throw an exception if it is not possible to create a bitmap with the specified configuration (for example, the image info requires a color table, and there is no color table). + /// public SKBitmap (SKImageInfo info, int rowBytes) : this () { @@ -101,7 +113,9 @@ public SKBitmap (SKImageInfo info, int rowBytes) /// /// The description of the desired image format. /// The additional flags. - /// This constructor might throw an exception if it is not possible to create a bitmap with the specified configuration (for example, the image info requires a color table, and there is no color table). + /// + /// This constructor might throw an exception if it is not possible to create a bitmap with the specified configuration (for example, the image info requires a color table, and there is no color table). + /// public SKBitmap (SKImageInfo info, SKBitmapAllocFlags flags) : this () { @@ -157,7 +171,9 @@ public bool TryAllocPixels (SKImageInfo info, SKBitmapAllocFlags flags) /// /// Reset the bitmap to its initial state. /// - /// The result is a bitmap with zero width and height, and no pixels. Its color type is set to . If we are a (shared) owner of the pixels, that ownership is decremented. + /// + /// The result is a bitmap with zero width and height, and no pixels. Its color type is set to . If we are a (shared) owner of the pixels, that ownership is decremented. + /// public void Reset () { SkiaApi.sk_bitmap_reset (Handle); @@ -168,7 +184,9 @@ public void Reset () /// /// Marks the bitmap as immutable. /// - /// Marks this bitmap as immutable, meaning that the contents of its pixels will not change for the lifetime of the bitmap and of the underlying pixelref. This state can be set, but it cannot be cleared once it is set. This state propagates to all other bitmaps that share the same pixelref. + /// + /// Marks this bitmap as immutable, meaning that the contents of its pixels will not change for the lifetime of the bitmap and of the underlying pixelref. This state can be set, but it cannot be cleared once it is set. This state propagates to all other bitmaps that share the same pixelref. + /// public void SetImmutable () { SkiaApi.sk_bitmap_set_immutable (Handle); @@ -180,7 +198,9 @@ public void SetImmutable () /// Fill the entire bitmap with the specified color. /// /// The color to fill. - /// If the bitmap's color type does not support alpha (e.g. 565) then the alpha of the color is ignored (treated as opaque). If the color type only supports alpha (e.g. A1 or A8) then the color's R, G, B components are ignored. + /// + /// If the bitmap's color type does not support alpha (e.g. 565) then the alpha of the color is ignored (treated as opaque). If the color type only supports alpha (e.g. A1 or A8) then the color's R, G, B components are ignored. + /// public void Erase (SKColor color) { SkiaApi.sk_bitmap_erase (Handle, (uint)color); @@ -191,7 +211,9 @@ public void Erase (SKColor color) /// /// The color to fill. /// The area to fill. - /// If the bitmap's color type does not support alpha (e.g. 565) then the alpha of the color is ignored (treated as opaque). If the color type only supports alpha (e.g. A1 or A8) then the color's R, G, B components are ignored. + /// + /// If the bitmap's color type does not support alpha (e.g. 565) then the alpha of the color is ignored (treated as opaque). If the color type only supports alpha (e.g. A1 or A8) then the color's R, G, B components are ignored. + /// public void Erase (SKColor color, SKRectI rect) { SkiaApi.sk_bitmap_erase_rect (Handle, (uint)color, &rect); @@ -212,7 +234,9 @@ public IntPtr GetAddress (int x, int y) => /// The x-cordinate. /// The y-cordinate. /// Alpha only color types return black with the appropriate alpha set. The value is undefined for , if the coordinates are out of bounds, if the bitmap does not have any pixels, or has not be locked with . - /// In most cases this will require unpremultiplying the color. + /// + /// In most cases this will require unpremultiplying the color. + /// public SKColor GetPixel (int x, int y) { return SkiaApi.sk_bitmap_get_pixel_color (Handle, x, y); @@ -224,7 +248,9 @@ public SKColor GetPixel (int x, int y) /// The x-coordinate. /// The y-coordinate. /// The color to set. - /// This method will set the color of the pixel on the bitmap to the specified performing any necessary color conversions to the format of the bitmap. + /// + /// This method will set the color of the pixel on the bitmap to the specified performing any necessary color conversions to the format of the bitmap. + /// public void SetPixel (int x, int y, SKColor color) { var info = Info; @@ -341,7 +367,9 @@ public bool CopyTo (SKBitmap destination, SKColorType colorType) /// The bitmap that will be set to a subset of this bitmap. /// The rectangle of pixels in this bitmap that the destination will reference. /// Returns true if the subset was retrieved, false otherwise. - /// If possible, the retrieved bitmap will share the pixel memory, and just point into a subset of it. However, if the color type does not support this, a local copy will be made and associated with the destination bitmap. + /// + /// If possible, the retrieved bitmap will share the pixel memory, and just point into a subset of it. However, if the color type does not support this, a local copy will be made and associated with the destination bitmap. + /// public bool ExtractSubset (SKBitmap destination, SKRectI subset) { if (destination == null) { @@ -444,7 +472,9 @@ public SKColorType ColorType { /// Gets the configured for the bitmap. /// /// The configured . - /// This determines the kind of encoding used for the alpha channel, opaque, premultiplied or unpremultiplied. + /// + /// This determines the kind of encoding used for the alpha channel, opaque, premultiplied or unpremultiplied. + /// public SKAlphaType AlphaType { get { return Info.AlphaType; } } @@ -459,7 +489,9 @@ public SKColorSpace ColorSpace { /// /// Gets the number of bytes used per pixel. /// - /// This is calculated from the . If the color type is , then the value will be 0. + /// + /// This is calculated from the . If the color type is , then the value will be 0. + /// public int BytesPerPixel { get { return Info.BytesPerPixel; } } @@ -467,7 +499,9 @@ public int BytesPerPixel { /// /// The number of bytes per row. /// - /// The same as . + /// + /// The same as . + /// public int RowBytes { get { return (int)SkiaApi.sk_bitmap_get_row_bytes (Handle); } } @@ -476,7 +510,9 @@ public int RowBytes { /// Returns the byte size of the pixels, based on the and . /// /// The byte size of the pixels. - /// Note: this truncates the result to 32-bits. + /// + /// Note: this truncates the result to 32-bits. + /// public int ByteCount { get { return (int)SkiaApi.sk_bitmap_get_byte_count (Handle); } } @@ -494,7 +530,9 @@ public IntPtr GetPixels () => /// Returns a span that wraps the pixel data. /// /// Returns the span. - /// This span is only valid as long as the bitmap is valid + /// + /// This span is only valid as long as the bitmap is valid + /// public Span GetPixelSpan () => new Span ((void*)GetPixels (out var length), (int)length); @@ -576,7 +614,9 @@ public SKColor[] Pixels { /// /// Gets a value indicating whether the bitmap has empty dimensions. /// - /// In most cases, will return the desired result as it checks as well. + /// + /// In most cases, will return the desired result as it checks as well. + /// public bool IsEmpty { get { return Info.IsEmpty; } } @@ -584,7 +624,9 @@ public bool IsEmpty { /// /// Gets a value indicating whether the bitmap has any pixelref. /// - /// This can return true even if the dimensions of the bitmap are not empty. In most cases, will return the desired result as it checks as well. + /// + /// This can return true even if the dimensions of the bitmap are not empty. In most cases, will return the desired result as it checks as well. + /// public bool IsNull { get { return SkiaApi.sk_bitmap_is_null (Handle); } } @@ -600,7 +642,9 @@ public bool DrawsNothing { /// Indicates if the bitmap contents are immutable. /// /// Returns if it is immutable, otherwise. - /// Immutability means that the contents of its pixels will not change for the lifetime of the bitmap. + /// + /// Immutability means that the contents of its pixels will not change for the lifetime of the bitmap. + /// public bool IsImmutable { get { return SkiaApi.sk_bitmap_is_immutable (Handle); } } @@ -995,7 +1039,9 @@ public void NotifyPixelsChanged () /// Returns the pixels if they are available without having to lock the bitmap. /// /// Returns the pixels if they are available, otherwise . - /// If the pixels are available without locking, then the pixmap is only valid until the bitmap changes in any way, in which case the pixmap becomes invalid. + /// + /// If the pixels are available without locking, then the pixmap is only valid until the bitmap changes in any way, in which case the pixmap becomes invalid. + /// public SKPixmap PeekPixels () { SKPixmap pixmap = new SKPixmap (); @@ -1067,7 +1113,8 @@ public SKBitmap Resize (SKSizeI size, SKSamplingOptions sampling) => /// The bitmap to recieve the scaled and converted pixels. /// The level of quality to use when scaling the pixels. /// Returns on success, or if there was an error. - /// Pixels are copied only if pixel conversion is possible. + /// + /// Pixels are copied only if pixel conversion is possible. /// If the color type is , or /// , the destination color type must match. /// If the color type is , destination @@ -1083,7 +1130,8 @@ public SKBitmap Resize (SKSizeI size, SKSamplingOptions sampling) => /// - is typically implemented with /// bilerp filter, and mipmap when size is reduced. /// - is slowest, typically implemented - /// with the bicubic filter. + /// with the bicubic filter. + /// [Obsolete ("Use ScalePixels(SKBitmap destination, SKSamplingOptions sampling) instead.")] public bool ScalePixels (SKBitmap destination, SKFilterQuality quality) => ScalePixels (destination, quality.ToSamplingOptions ()); @@ -1094,7 +1142,8 @@ public bool ScalePixels (SKBitmap destination, SKFilterQuality quality) => /// The pixmap to recieve the scaled and converted pixels. /// The level of quality to use when scaling the pixels. /// Returns on success, or if there was an error. - /// Pixels are copied only if pixel conversion is possible. + /// + /// Pixels are copied only if pixel conversion is possible. /// If the color type is , or /// , the destination color type must match. /// If the color type is , destination @@ -1110,7 +1159,8 @@ public bool ScalePixels (SKBitmap destination, SKFilterQuality quality) => /// - is typically implemented with /// bilerp filter, and mipmap when size is reduced. /// - is slowest, typically implemented - /// with the bicubic filter. + /// with the bicubic filter. + /// [Obsolete ("Use ScalePixels(SKPixmap destination, SKSamplingOptions sampling) instead.")] public bool ScalePixels (SKPixmap destination, SKFilterQuality quality) => ScalePixels (destination, quality.ToSamplingOptions ()); diff --git a/binding/SkiaSharp/SKCanvas.cs b/binding/SkiaSharp/SKCanvas.cs index c0b2842d30..8375ebfa5c 100644 --- a/binding/SkiaSharp/SKCanvas.cs +++ b/binding/SkiaSharp/SKCanvas.cs @@ -9,7 +9,8 @@ namespace SkiaSharp /// /// Encapsulates all of the state about drawing into a device (bitmap or surface). /// - /// A canvas encapsulates all of the state about drawing into a device (bitmap or + /// + /// A canvas encapsulates all of the state about drawing into a device (bitmap or /// surface). /// This includes a reference to the device itself, and a stack of matrix/clip /// values. For any given draw call (e.g. DrawRect), the geometry of the object @@ -22,7 +23,7 @@ namespace SkiaSharp /// typeface, the text size, the stroke width, the shader (for example, gradients, /// patterns), etc. /// The canvas is returned when accessing the - /// property of a + /// property of a /// surface. /// ### Construction /// SkiaSharp has multiple backends which receive @@ -144,16 +145,16 @@ namespace SkiaSharp /// The canvas supports a number of 2D transformations. Unlike other 2D graphic /// systems like CoreGraphics or Cairo, SKCanvas extends the transformations to /// include perspectives. - /// You can use the , - /// , , - /// , - /// to perform some of the most common + /// You can use the , + /// , , + /// , + /// to perform some of the most common /// 2D transformations. - /// For more control you can use the to set + /// For more control you can use the to set /// an arbitrary transformation using the and the - /// to concatenate an + /// to concatenate an /// transformation to the current matrix in use. - /// The can be used to reset the state of + /// The can be used to reset the state of /// the matrix. /// ### Drawing /// The drawing operations can take a parameter to affect @@ -161,12 +162,12 @@ namespace SkiaSharp /// color information to draw geometries, texts and bitmaps. /// ### Clipping and State /// It is possible to save the current transformations by calling the - /// method which preserves the current + /// method which preserves the current /// transformation matrix, you can then alter the matrix and restore the previous - /// state by using the or - /// methods. + /// state by using the or + /// methods. /// Additionally, it is possible to push a new state with - /// which will make an offscreen copy of a + /// which will make an offscreen copy of a /// region, and once the drawing is completed, calling the /// method which copies the offscreen bitmap /// into this canvas. @@ -201,7 +202,8 @@ namespace SkiaSharp /// // draw the Xamagon path /// canvas.DrawPath(path, paint); /// } - /// ``` + /// ``` + /// public unsafe class SKCanvas : SKObject { private const int PatchCornerCount = 4; @@ -218,7 +220,9 @@ internal SKCanvas (IntPtr handle, bool owns) /// Creates a canvas with the specified bitmap to draw into. /// /// The bitmap for the canvas to draw into. - /// The structure of the bitmap is copied into the canvas. + /// + /// The structure of the bitmap is copied into the canvas. + /// public SKCanvas (SKBitmap bitmap) : this (IntPtr.Zero, true) { @@ -236,12 +240,14 @@ protected override void DisposeNative () => /// /// Makes the canvas contents undefined. /// - /// Subsequent calls that read the canvas pixels, such as drawing with , return undefined + /// + /// Subsequent calls that read the canvas pixels, such as drawing with , return undefined /// results. Calling this method does not change clip or matrix and may do nothing, depending on the implementation /// of the underlying . /// allows optimized performance on subsequent draws by removing cached data associated /// with the underlying . It is not necessary to call once - /// done with ; any cached data is deleted when the owning is deleted. + /// done with ; any cached data is deleted when the owning is deleted. + /// public void Discard () => SkiaApi.sk_canvas_discard (Handle); @@ -252,7 +258,9 @@ public void Discard () => /// /// The rectangle to compare with the current clip. /// Returns true if the rectangle (transformed by the canvas' matrix) does not intersect with the canvas' clip. - /// Call this to check if an area you intend to draw into is clipped out (and therefore you can skip making the draw calls). + /// + /// Call this to check if an area you intend to draw into is clipped out (and therefore you can skip making the draw calls). + /// public bool QuickReject (SKRect rect) { return SkiaApi.sk_canvas_quick_reject (Handle, &rect); @@ -263,7 +271,9 @@ public bool QuickReject (SKRect rect) /// /// The path to compare with the current clip. /// Returns true if the path (transformed by the canvas' matrix) does not intersect with the canvas' clip. - /// Call this to check if an area you intend to draw into is clipped out (and therefore you can skip making the draw calls). + /// + /// Call this to check if an area you intend to draw into is clipped out (and therefore you can skip making the draw calls). + /// public bool QuickReject (SKPath path) { if (path == null) @@ -278,7 +288,9 @@ public bool QuickReject (SKPath path) /// Saves the canvas state. /// /// The value to pass to to balance this save. - /// This call saves the current matrix, clip, and draw filter, and pushes a copy onto a private stack. Subsequent calls to translate, scale, rotate, skew, concatenate or clipping path or drawing filter all operate on this copy. When the balancing call to is made, the previous matrix, clipping, and drawing filters are restored. + /// + /// This call saves the current matrix, clip, and draw filter, and pushes a copy onto a private stack. Subsequent calls to translate, scale, rotate, skew, concatenate or clipping path or drawing filter all operate on this copy. When the balancing call to is made, the previous matrix, clipping, and drawing filters are restored. + /// public int Save () { if (Handle == IntPtr.Zero) @@ -292,14 +304,16 @@ public int Save () /// This clipping rectangle hint to limit the size of the offscreen bitmap. /// This is copied, and is applied to the offscreen when is called. /// The value to pass to to balance this save. - /// This behaves the same as but in addition it + /// + /// This behaves the same as but in addition it /// allocates an offscreen bitmap. All drawing calls are directed there, and only /// when the balancing call to is made is that /// offscreen transfered to the canvas (or the previous layer). /// The limit rectangle, is used as a hint to limit the size of the offscreen /// bitmap, and thus drawing may be clipped to it, though that clipping is not /// guaranteed to happen. If exact clipping is desired, use - /// . + /// . + /// public int SaveLayer (SKRect limit, SKPaint? paint) => SkiaApi.sk_canvas_save_layer (Handle, &limit, paint?.Handle ?? IntPtr.Zero); @@ -308,7 +322,9 @@ public int SaveLayer (SKRect limit, SKPaint? paint) => /// /// This is copied, and is applied to the offscreen when is called. /// The value to pass to to balance this save. - /// This behaves the same as but in addition it allocates an offscreen bitmap. All drawing calls are directed there, and only when the balancing call to is made is that offscreen transfered to the canvas (or the previous layer). + /// + /// This behaves the same as but in addition it allocates an offscreen bitmap. All drawing calls are directed there, and only when the balancing call to is made is that offscreen transfered to the canvas (or the previous layer). + /// public int SaveLayer (SKPaint? paint) => SkiaApi.sk_canvas_save_layer (Handle, null, paint?.Handle ?? IntPtr.Zero); @@ -389,7 +405,9 @@ public void Clear (SKColorF color) => /// /// Restore the canvas state. /// - /// This call balances a previous call to , and is used to remove all modifications to the matrix, clip and draw filter state since the last save call. It is an error to restore more times than was previously saved. + /// + /// This call balances a previous call to , and is used to remove all modifications to the matrix, clip and draw filter state since the last save call. It is an error to restore more times than was previously saved. + /// public void Restore () { SkiaApi.sk_canvas_restore (Handle); @@ -399,7 +417,9 @@ public void Restore () /// Efficiently restores the state to a specific level. /// /// The number of levels to restore from, or -1 to restore all the way back to the initial value. - /// Efficient way to pop any calls to that happened after the save count reached . It is an error for to be greater than . To pop all the way back to the initial matrix/clip context set count to -1. + /// + /// Efficient way to pop any calls to that happened after the save count reached . It is an error for to be greater than . To pop all the way back to the initial matrix/clip context set count to -1. + /// public void RestoreToCount (int count) { SkiaApi.sk_canvas_restore_to_count (Handle, count); @@ -672,7 +692,9 @@ public SKRectI DeviceClipBounds { /// /// The resulting clip bounds. /// Returns true if the clip bounds are non-empty, otherwise false. - /// This can be useful in that it tells you that drawing outside of these bounds will be clipped out. + /// + /// This can be useful in that it tells you that drawing outside of these bounds will be clipped out. + /// public bool GetLocalClipBounds (out SKRect bounds) { fixed (SKRect* b = &bounds) { @@ -755,7 +777,9 @@ public void DrawRect (SKRect rect, SKPaint paint) /// /// The rounded rectangle to draw. /// The paint to use when drawing the rectangle. - /// The paint to use when drawing the rounded rectangle. + /// + /// The paint to use when drawing the rounded rectangle. + /// public void DrawRoundRect (SKRoundRect rect, SKPaint paint) { if (rect == null) @@ -800,7 +824,9 @@ public void DrawRoundRect (SKRect rect, float rx, float ry, SKPaint paint) /// The rectangle to draw. /// The radius of the oval used to round the corners. /// The paint to use when drawing the rectangle. - /// The paint to use when drawing the rectangle. + /// + /// The paint to use when drawing the rectangle. + /// public void DrawRoundRect (SKRect rect, SKSize r, SKPaint paint) { DrawRoundRect (rect, r.Width, r.Height, paint); @@ -895,7 +921,8 @@ public void DrawPath (SKPath path, SKPaint paint) /// Determines how the points array will be interpreted: as points, as coordinates to draw lines, or as coordinates of a polygon. /// The array of points to draw. /// The paint to use when drawing the points. - /// For , each point is drawn centered at its + /// + /// For , each point is drawn centered at its /// coordinate, and its size is specified by the paint's stroke-width. It draws as /// a square, unless the paint's is /// , in which the points are drawn as circles. @@ -906,7 +933,8 @@ public void DrawPath (SKPath path, SKPaint paint) /// Note that, while similar, the line and polygon modes draw slightly differently /// than the equivalent path built with a series of move to, line to calls, in /// that the path will draw all of its contours at once, with no interactions if - /// contours intersect each other (think ). + /// contours intersect each other (think ). + /// public void DrawPoints (SKPointMode mode, SKPoint[] points, SKPaint paint) { if (paint == null) @@ -1083,13 +1111,15 @@ public void DrawPicture (SKPicture picture, SKPoint p, SKPaint paint = null) /// The picture to draw. /// The matrix to apply while painting. /// The paint to use when drawing the picture, or . - /// This is equivalent to calling , followed by + /// + /// This is equivalent to calling , followed by /// with the specified `matrix`, /// /// and then . /// If paint is non-null, the picture is drawn into a temporary buffer, and then /// the paint's alpha, color filter, image filter, blend mode are applied to that - /// buffer as it is drawn to the canvas. + /// buffer as it is drawn to the canvas. + /// public void DrawPicture (SKPicture picture, in SKMatrix matrix, SKPaint paint = null) { if (picture == null) @@ -1413,7 +1443,9 @@ public void DrawTextOnPath (string text, SKPath path, SKPoint offset, bool warpG /// /// Triggers the immediate execution of all pending draw operations. /// - /// For the GPU backend this will resolve all rendering to the GPU surface backing the surface that owns this canvas. + /// + /// For the GPU backend this will resolve all rendering to the GPU surface backing the surface that owns this canvas. + /// public void Flush () { (Context as GRContext)?.Flush (); @@ -1427,10 +1459,12 @@ public void Flush () /// The bounds of the annotation. /// The name of the annotation. /// The blob of data to attach to the annotation. - /// The caller still retains its ownership of the data (if any). + /// + /// The caller still retains its ownership of the data (if any). /// Note: on may canvas types, this information is ignored, but some /// canvases (e.g. recording a picture or drawing to a PDF document) will pass on - /// this information. + /// this information. + /// public void DrawAnnotation (SKRect rect, string key, SKData value) { var bytes = StringUtilities.GetEncodedText (key, SKTextEncoding.Utf8, true); @@ -1444,9 +1478,11 @@ public void DrawAnnotation (SKRect rect, string key, SKData value) /// /// The bounds of the annotation. /// The data that specifies the URL. - /// The caller is responsible for managing its ownership of the data. + /// + /// The caller is responsible for managing its ownership of the data. /// If the backend of this canvas does not support annotations, this call is - /// safely ignored. + /// safely ignored. + /// public void DrawUrlAnnotation (SKRect rect, SKData value) { SkiaApi.sk_canvas_draw_url_annotation (Handle, &rect, value == null ? IntPtr.Zero : value.Handle); @@ -1458,7 +1494,9 @@ public void DrawUrlAnnotation (SKRect rect, SKData value) /// The bounds of the annotation. /// The URL. /// Returns the actual data object that was attached to the canvas. - /// If the backend of this canvas does not support annotations, this call is safely ignored. + /// + /// If the backend of this canvas does not support annotations, this call is safely ignored. + /// public SKData DrawUrlAnnotation (SKRect rect, string value) { var data = SKData.FromCString (value); @@ -1471,9 +1509,11 @@ public SKData DrawUrlAnnotation (SKRect rect, string value) /// /// The location of the destination. /// The data that specifies the name of the destination. - /// The caller is responsible for managing its ownership of the data. + /// + /// The caller is responsible for managing its ownership of the data. /// If the backend of this canvas does not support annotations, this call is - /// safely ignored. + /// safely ignored. + /// public void DrawNamedDestinationAnnotation (SKPoint point, SKData value) { SkiaApi.sk_canvas_draw_named_destination_annotation (Handle, &point, value == null ? IntPtr.Zero : value.Handle); @@ -1485,7 +1525,9 @@ public void DrawNamedDestinationAnnotation (SKPoint point, SKData value) /// The location of the destination. /// The name of the destination. /// Returns the actual data object that was attached to the canvas. - /// If the backend of this canvas does not support annotations, this call is safely ignored. + /// + /// If the backend of this canvas does not support annotations, this call is safely ignored. + /// public SKData DrawNamedDestinationAnnotation (SKPoint point, string value) { var data = SKData.FromCString (value); @@ -1498,9 +1540,11 @@ public SKData DrawNamedDestinationAnnotation (SKPoint point, string value) /// /// The bounds of the annotation. /// The data that specifies the name of the link's destination. - /// The caller is responsible for managing its ownership of the data. + /// + /// The caller is responsible for managing its ownership of the data. /// If the backend of this canvas does not support annotations, this call is - /// safely ignored. + /// safely ignored. + /// public void DrawLinkDestinationAnnotation (SKRect rect, SKData value) { SkiaApi.sk_canvas_draw_link_destination_annotation (Handle, &rect, value == null ? IntPtr.Zero : value.Handle); @@ -1512,7 +1556,9 @@ public void DrawLinkDestinationAnnotation (SKRect rect, SKData value) /// The bounds of the annotation. /// The name of the link's destination. /// Returns the actual data object that was attached to the canvas. - /// If the backend of this canvas does not support annotations, this call is safely ignored. + /// + /// If the backend of this canvas does not support annotations, this call is safely ignored. + /// public SKData DrawLinkDestinationAnnotation (SKRect rect, string value) { var data = SKData.FromCString (value); @@ -1685,7 +1731,9 @@ public void SetMatrix (in SKMatrix44 matrix) /// /// Gets the current matrix on the canvas. /// - /// This does not account for the translate in any of the devices. + /// + /// This does not account for the translate in any of the devices. + /// public SKMatrix TotalMatrix => TotalMatrix44.Matrix; public SKMatrix44 TotalMatrix44 { @@ -1701,7 +1749,9 @@ public SKMatrix44 TotalMatrix44 { /// /// Gets the number of matrix/clip states on the canvas' private stack. /// - /// This will equal the number of calls minus calls + 1. The save count on a new canvas is 1. + /// + /// This will equal the number of calls minus calls + 1. The save count on a new canvas is 1. + /// public int SaveCount => SkiaApi.sk_canvas_get_save_count (Handle); // DrawVertices @@ -1727,7 +1777,9 @@ public void DrawVertices (SKVertexMode vmode, SKPoint[] vertices, SKColor[] colo /// The coordinates in texture space (not UV space) for each vertex. May be . /// The color for each vertex, to be interpolated across the triangle. May be . /// The shader/texture. - /// If both textures and vertex-colors are , it strokes hairlines with the paint's color. This behavior is a useful debugging mode to visualize the mesh. + /// + /// If both textures and vertex-colors are , it strokes hairlines with the paint's color. This behavior is a useful debugging mode to visualize the mesh. + /// public void DrawVertices (SKVertexMode vmode, SKPoint[] vertices, SKPoint[] texs, SKColor[] colors, SKPaint paint) { var vert = SKVertices.CreateCopy (vmode, vertices, texs, colors); @@ -1743,7 +1795,9 @@ public void DrawVertices (SKVertexMode vmode, SKPoint[] vertices, SKPoint[] texs /// The color for each vertex, to be interpolated across the triangle. May be . /// The array of indices to reference into the vertex (texture coordinates, colors) array. /// The shader/texture. - /// If both textures and vertex-colors are , it strokes hairlines with the paint's color. This behavior is a useful debugging mode to visualize the mesh. + /// + /// If both textures and vertex-colors are , it strokes hairlines with the paint's color. This behavior is a useful debugging mode to visualize the mesh. + /// public void DrawVertices (SKVertexMode vmode, SKPoint[] vertices, SKPoint[] texs, SKColor[] colors, UInt16[] indices, SKPaint paint) { var vert = SKVertices.CreateCopy (vmode, vertices, texs, colors, indices); @@ -1760,7 +1814,9 @@ public void DrawVertices (SKVertexMode vmode, SKPoint[] vertices, SKPoint[] texs /// The blend mode to use to combine the colors with the texture, before being drawn using the paint. Used if both texture coordinates and colors are present. /// The array of indices to reference into the vertex (texture coordinates, colors) array. /// The shader/texture. - /// If both textures and vertex-colors are , it strokes hairlines with the paint's color. This behavior is a useful debugging mode to visualize the mesh. + /// + /// If both textures and vertex-colors are , it strokes hairlines with the paint's color. This behavior is a useful debugging mode to visualize the mesh. + /// public void DrawVertices (SKVertexMode vmode, SKPoint[] vertices, SKPoint[] texs, SKColor[] colors, SKBlendMode mode, UInt16[] indices, SKPaint paint) { var vert = SKVertices.CreateCopy (vmode, vertices, texs, colors, indices); @@ -1773,7 +1829,9 @@ public void DrawVertices (SKVertexMode vmode, SKPoint[] vertices, SKPoint[] texs /// The mesh to draw. /// The blend mode to use to combine the colors with the texture, before being drawn using the paint. Used if both texture coordinates and colors are present. /// The shader/texture. - /// If both textures and vertex-colors are , it strokes hairlines with the paint's color. This behavior is a useful debugging mode to visualize the mesh. + /// + /// If both textures and vertex-colors are , it strokes hairlines with the paint's color. This behavior is a useful debugging mode to visualize the mesh. + /// public void DrawVertices (SKVertices vertices, SKBlendMode mode, SKPaint paint) { if (vertices == null) @@ -1922,7 +1980,8 @@ internal static SKCanvas GetObject (IntPtr handle, bool owns = true, bool unrefE /// /// Convenience class used to restore the canvas state in a using statement. /// - /// This class can be used in a using statement to save the state of the canvas + /// + /// This class can be used in a using statement to save the state of the canvas /// (matrix, clip and draw filter) allowing you to change these components and have /// them automatically undone by virtue of having the /// method restore the canvas state to @@ -1938,7 +1997,8 @@ internal static SKCanvas GetObject (IntPtr handle, bool owns = true, bool unrefE /// canavs.DrawRect (10, 10, 100, 100, paint); /// // automatically restore to original transform /// } - /// ``` + /// ``` + /// public class SKAutoCanvasRestore : IDisposable { private SKCanvas canvas; diff --git a/binding/SkiaSharp/SKCodec.cs b/binding/SkiaSharp/SKCodec.cs index ac693b0cde..ddd6423730 100644 --- a/binding/SkiaSharp/SKCodec.cs +++ b/binding/SkiaSharp/SKCodec.cs @@ -59,7 +59,9 @@ public SKImageInfo Info { /// /// The desired scale factor. /// Returns a supported size. - /// The codec may not be able to scale efficiently to the exact scale factor requested, so return a size that approximates that scale. Upscaling is not supported, so the original size will be returned. + /// + /// The codec may not be able to scale efficiently to the exact scale factor requested, so return a size that approximates that scale. Upscaling is not supported, so the original size will be returned. + /// public SKSizeI GetScaledDimensions (float desiredScale) { SKSizeI dimensions; @@ -97,21 +99,27 @@ public byte[] Pixels { /// /// Gets the number of times to repeat, if this image is animated. /// - /// For infinite repetition of frames, this will be -1.May require reading the stream to find the repetition count. As such, future decoding calls may require a rewind. For single-frame images, this will be 0. + /// + /// For infinite repetition of frames, this will be -1.May require reading the stream to find the repetition count. As such, future decoding calls may require a rewind. For single-frame images, this will be 0. + /// public int RepetitionCount => SkiaApi.sk_codec_get_repetition_count (Handle); /// /// Gets the number of frames in the encoded image. /// - /// May require reading through the stream to determine info about the frames. As such, future decoding calls may require a rewind. For single-frame images, this will be zero. + /// + /// May require reading through the stream to determine info about the frames. As such, future decoding calls may require a rewind. For single-frame images, this will be zero. + /// public int FrameCount => SkiaApi.sk_codec_get_frame_count (Handle); /// /// Gets information about the frames in the encoded image. /// - /// May require reading through the stream to determine info about the frames. As such, future decoding calls may require a rewind. For single-frame images, this will be an empty array. + /// + /// May require reading through the stream to determine info about the frames. As such, future decoding calls may require a rewind. For single-frame images, this will be an empty array. + /// public SKCodecFrameInfo[] FrameInfo { get { var length = SkiaApi.sk_codec_get_frame_count (Handle); @@ -129,7 +137,9 @@ public SKCodecFrameInfo[] FrameInfo { /// The index of the frame to retrieve. /// The information about the frame. /// Returns true if the frame was successfully read, otherwise false. - /// May require reading through the stream to determine info about the frames. As such, future decoding calls may require a rewind. + /// + /// May require reading through the stream to determine info about the frames. As such, future decoding calls may require a rewind. + /// public bool GetFrameInfo (int index, out SKCodecFrameInfo frameInfo) { fixed (SKCodecFrameInfo* f = &frameInfo) { @@ -153,13 +163,15 @@ public SKCodecResult GetPixels (out byte[] pixels) => /// The description of the desired output format expected by the caller. /// The memory block with the decoded bitmap. /// Returns on success, or another value explaining the type of failure. - /// The specified , can either be + /// + /// The specified , can either be /// , or a new instance with a different /// configuration - which the codec may choose to ignore. /// If the specified size is different from the size from /// , then the codec will attempt to scale the /// resulting bitmap. If the codec cannot perform this scale, this method will - /// return . + /// return . + /// public SKCodecResult GetPixels (SKImageInfo info, out byte[] pixels) { pixels = new byte[info.BytesSize]; @@ -172,13 +184,15 @@ public SKCodecResult GetPixels (SKImageInfo info, out byte[] pixels) /// The description of the desired output format expected by the caller. /// The memory block to hold the decoded bitmap, with a length of at least . /// Returns on success, or another value explaining the type of failure. - /// The specified , can either be + /// + /// The specified , can either be /// , or a new instance with a different /// configuration - which the codec may choose to ignore. /// If the specified size is different from the size from /// , then the codec will attempt to scale the /// resulting bitmap. If the codec cannot perform this scale, this method will - /// return . + /// return . + /// public SKCodecResult GetPixels (SKImageInfo info, byte[] pixels) { if (pixels == null) @@ -195,13 +209,15 @@ public SKCodecResult GetPixels (SKImageInfo info, byte[] pixels) /// The description of the desired output format expected by the caller. /// The memory block to hold the decoded bitmap, with a total size of at least . /// Returns on success, or another value explaining the type of failure. - /// The specified , can either be + /// + /// The specified , can either be /// , or a new instance with a different /// configuration - which the codec may choose to ignore. /// If the specified size is different from the size from /// , then the codec will attempt to scale the /// resulting bitmap. If the codec cannot perform this scale, this method will - /// return . + /// return . + /// public SKCodecResult GetPixels (SKImageInfo info, IntPtr pixels) => GetPixels (info, pixels, info.RowBytes, SKCodecOptions.Default); @@ -212,13 +228,15 @@ public SKCodecResult GetPixels (SKImageInfo info, IntPtr pixels) => /// The memory block to hold the decoded bitmap, with a total size of at least . /// The bitmap decoding options. /// Returns on success, or another value explaining the type of failure. - /// The specified , can either be + /// + /// The specified , can either be /// , or a new instance with a different /// configuration - which the codec may choose to ignore. /// If the specified size is different from the size from /// , then the codec will attempt to scale the /// resulting bitmap. If the codec cannot perform this scale, this method will - /// return . + /// return . + /// public SKCodecResult GetPixels (SKImageInfo info, IntPtr pixels, SKCodecOptions options) => GetPixels (info, pixels, info.RowBytes, options); @@ -230,13 +248,15 @@ public SKCodecResult GetPixels (SKImageInfo info, IntPtr pixels, SKCodecOptions /// The number of bytes in a row, typically . /// The bitmap decoding options. /// Returns on success, or another value explaining the type of failure. - /// The specified , can either be + /// + /// The specified , can either be /// , or a new instance with a different /// configuration - which the codec may choose to ignore. /// If the specified size is different from the size from /// , then the codec will attempt to scale the /// resulting bitmap. If the codec cannot perform this scale, this method will - /// return . + /// return . + /// public SKCodecResult GetPixels (SKImageInfo info, IntPtr pixels, int rowBytes, SKCodecOptions options) { if (pixels == IntPtr.Zero) @@ -308,7 +328,9 @@ public SKCodecResult StartIncrementalDecode (SKImageInfo info, IntPtr pixels, in /// /// The total number of lines initialized. Only meaningful if this method returns . /// Returns if all lines requested in have been completely decoded. otherwise. - /// Unlike , this does not do any filling. This is left up to the caller, since they may be skipping lines or continuing the decode later. + /// + /// Unlike , this does not do any filling. This is left up to the caller, since they may be skipping lines or continuing the decode later. + /// public SKCodecResult IncrementalDecode (out int rowsDecoded) { fixed (int* r = &rowsDecoded) { @@ -320,7 +342,9 @@ public SKCodecResult IncrementalDecode (out int rowsDecoded) /// Start or continue the incremental decode. /// /// Returns if all lines requested in have been completely decoded. otherwise. - /// Unlike , this does not do any filling. This is left up to the caller, since they may be skipping lines or continuing the decode later. + /// + /// Unlike , this does not do any filling. This is left up to the caller, since they may be skipping lines or continuing the decode later. + /// public SKCodecResult IncrementalDecode () => SkiaApi.sk_codec_incremental_decode (Handle, null); @@ -332,7 +356,9 @@ public SKCodecResult IncrementalDecode () => /// The image information of the destination. If the dimensions do not match those of , this implies a scale. /// The decoding options, including if memory is zero initialized and whether to decode a subset. /// Returns on success, or another value explaining the type of failure. - /// Not all codecs support this. + /// + /// Not all codecs support this. + /// public SKCodecResult StartScanlineDecode (SKImageInfo info, SKCodecOptions options) { var nInfo = SKImageInfoNative.FromManaged (ref info); @@ -356,7 +382,9 @@ public SKCodecResult StartScanlineDecode (SKImageInfo info, SKCodecOptions optio /// /// The image information of the destination. If the dimensions do not match those of , this implies a scale. /// Returns on success, or another value explaining the type of failure. - /// Not all codecs support this. + /// + /// Not all codecs support this. + /// public SKCodecResult StartScanlineDecode (SKImageInfo info) { var cinfo = SKImageInfoNative.FromManaged (ref info); @@ -372,7 +400,9 @@ public SKCodecResult StartScanlineDecode (SKImageInfo info) /// The number of lines to write. /// The number of bytes per row. /// Returns the number of lines successfully decoded. - /// If number of lines successfully decoded is less than , this will fill the remaining lines with a default value. + /// + /// If number of lines successfully decoded is less than , this will fill the remaining lines with a default value. + /// public int GetScanlines (IntPtr dst, int countLines, int rowBytes) { if (dst == IntPtr.Zero) @@ -405,7 +435,9 @@ public bool SkipScanlines (int countLines) => /// /// The scanline that is located in the encoded data. /// Returns the output y-coordinate of the row. - /// This will equal , except in the case of strangely encoded image types (bottom-up BMPs, interlaced GIFs). + /// + /// This will equal , except in the case of strangely encoded image types (bottom-up BMPs, interlaced GIFs). + /// public int GetOutputScanline (int inputScanline) => SkiaApi.sk_codec_output_scanline (Handle, inputScanline); @@ -441,7 +473,9 @@ public static SKCodec Create (string filename, out SKCodecResult result) /// /// The stream to use when creating the codec. /// Returns the new instance of the codec, or if there was an error. - /// If is returned, the stream is deleted immediately. Otherwise, the codec takes ownership of it, and will delete it when done with it. + /// + /// If is returned, the stream is deleted immediately. Otherwise, the codec takes ownership of it, and will delete it when done with it. + /// public static SKCodec Create (Stream stream) => Create (stream, out var result); @@ -451,7 +485,9 @@ public static SKCodec Create (Stream stream) => /// The stream to use when creating the codec. /// The result of the creation operation. /// Returns the new instance of the codec, or if there was an error. - /// If is returned, the stream is deleted immediately. Otherwise, the codec takes ownership of it, and will delete it when done with it. + /// + /// If is returned, the stream is deleted immediately. Otherwise, the codec takes ownership of it, and will delete it when done with it. + /// public static SKCodec Create (Stream stream, out SKCodecResult result) => Create (WrapManagedStream (stream), out result); @@ -460,7 +496,9 @@ public static SKCodec Create (Stream stream, out SKCodecResult result) => /// /// The stream to use when creating the codec. /// Returns the new instance of the codec, or if there was an error. - /// If is returned, the stream is deleted immediately. Otherwise, the codec takes ownership of it, and will delete it when done with it. + /// + /// If is returned, the stream is deleted immediately. Otherwise, the codec takes ownership of it, and will delete it when done with it. + /// public static SKCodec Create (SKStream stream) => Create (stream, out var result); @@ -470,7 +508,9 @@ public static SKCodec Create (SKStream stream) => /// The stream to use when creating the codec. /// The result of the creation operation. /// Returns the new instance of the codec, or if there was an error. - /// If is returned, the stream is deleted immediately. Otherwise, the codec takes ownership of it, and will delete it when done with it. + /// + /// If is returned, the stream is deleted immediately. Otherwise, the codec takes ownership of it, and will delete it when done with it. + /// public static SKCodec Create (SKStream stream, out SKCodecResult result) { if (stream == null) diff --git a/binding/SkiaSharp/SKColor.cs b/binding/SkiaSharp/SKColor.cs index 2b4716c7e4..07fee6d1b5 100644 --- a/binding/SkiaSharp/SKColor.cs +++ b/binding/SkiaSharp/SKColor.cs @@ -8,7 +8,9 @@ namespace SkiaSharp /// /// 32-bit ARGB unpremultiplied color value. /// - /// The color components are always in a known order. + /// + /// The color components are always in a known order. + /// public readonly struct SKColor : IEquatable { /// @@ -151,7 +153,9 @@ public static SKColor FromHsv (float h, float s, float v, byte a = 255) /// The hue value. /// The saturation value. /// The lightness/luminosity value. - /// The alpha value is separate from the HSL calculation and will always be the same as . + /// + /// The alpha value is separate from the HSL calculation and will always be the same as . + /// public readonly void ToHsl (out float h, out float s, out float l) { // RGB from 0 to 255 @@ -169,7 +173,9 @@ public readonly void ToHsl (out float h, out float s, out float l) /// The hue value. /// The saturation value. /// The value/brightness value. - /// The alpha value is separate from the HSV/HSB calculation and will always be the same as . + /// + /// The alpha value is separate from the HSV/HSB calculation and will always be the same as . + /// public readonly void ToHsv (out float h, out float s, out float v) { // RGB from 0 to 255 @@ -249,7 +255,9 @@ public static explicit operator uint (SKColor color) => /// /// The hexadecimal string representation of a color. /// The new instance. - /// This method can parse a string in the forms with or without a preceding '#' character: AARRGGB, RRGGBB, ARGB, RGB. + /// + /// This method can parse a string in the forms with or without a preceding '#' character: AARRGGB, RRGGBB, ARGB, RGB. + /// public static SKColor Parse (string hexString) { if (!TryParse (hexString, out var color)) @@ -263,7 +271,9 @@ public static SKColor Parse (string hexString) /// The hexadecimal string representation of a color. /// The new instance. /// Returns true if the conversion was successful, otherwise false. - /// This method can parse a string in the forms with or without a preceding '#' character: AARRGGB, RRGGBB, ARGB, RGB. + /// + /// This method can parse a string in the forms with or without a preceding '#' character: AARRGGB, RRGGBB, ARGB, RGB. + /// public static bool TryParse (string hexString, out SKColor color) { if (string.IsNullOrWhiteSpace (hexString)) { diff --git a/binding/SkiaSharp/SKColorF.cs b/binding/SkiaSharp/SKColorF.cs index a972b53d58..36c354096e 100644 --- a/binding/SkiaSharp/SKColorF.cs +++ b/binding/SkiaSharp/SKColorF.cs @@ -7,7 +7,9 @@ namespace SkiaSharp /// /// 16-bit, floating-point, ARGB unpremultiplied color value. /// - /// The color components are always in a known order. + /// + /// The color components are always in a known order. + /// public readonly unsafe partial struct SKColorF { private const float EPSILON = 0.001f; @@ -223,7 +225,9 @@ public static SKColorF FromHsv (float h, float s, float v, float a = 1f) /// The hue value. /// The saturation value. /// The lightness/luminosity value. - /// The alpha value is separate from the HSL calculation and will always be the same as . + /// + /// The alpha value is separate from the HSL calculation and will always be the same as . + /// public readonly void ToHsl (out float h, out float s, out float l) { // RGB from 0 to 1 @@ -276,7 +280,9 @@ public readonly void ToHsl (out float h, out float s, out float l) /// The hue value. /// The saturation value. /// The value/brightness value. - /// The alpha value is separate from the HSV/HSB calculation and will always be the same as . + /// + /// The alpha value is separate from the HSV/HSB calculation and will always be the same as . + /// public readonly void ToHsv (out float h, out float s, out float v) { // RGB from 0 to 1 @@ -323,7 +329,9 @@ public readonly void ToHsv (out float h, out float s, out float v) /// /// Returns the color as a string in the format: #AARRGGBB. /// - /// As a result of converting a floating-point color to an integer color, some data loss will occur. + /// + /// As a result of converting a floating-point color to an integer color, some data loss will occur. + /// public readonly override string ToString () => ((SKColor)this).ToString (); @@ -344,7 +352,9 @@ public static implicit operator SKColorF (SKColor color) /// /// The color to convert. /// The . - /// As a result of converting a floating-point color to an integer color, some data loss will occur. + /// + /// As a result of converting a floating-point color to an integer color, some data loss will occur. + /// public static explicit operator SKColor (SKColorF color) => SkiaApi.sk_color4f_to_color (&color); } diff --git a/binding/SkiaSharp/SKColorFilter.cs b/binding/SkiaSharp/SKColorFilter.cs index fc1d993253..5ea3c564fb 100644 --- a/binding/SkiaSharp/SKColorFilter.cs +++ b/binding/SkiaSharp/SKColorFilter.cs @@ -56,7 +56,9 @@ protected override void Dispose (bool disposing) => /// The source color used with the specified mode. /// The blend mode mode that is applied to each color. /// Returns the new , or if the mode will have no effect. - /// If the is , this function will return (since that mode will have no effect on the result). + /// + /// If the is , this function will return (since that mode will have no effect on the result). + /// public static SKColorFilter CreateBlendMode(SKColor c, SKBlendMode mode) { return GetObject (SkiaApi.sk_colorfilter_new_mode((uint)c, mode)); @@ -101,7 +103,9 @@ public static SKColorFilter CreateLerp(float weight, SKColorFilter filter0, SKCo /// /// An array of elements. /// Returns the new . - /// The matrix is in row-major order and the translation column is specified in unnormalized, 0...255, space. + /// + /// The matrix is in row-major order and the translation column is specified in unnormalized, 0...255, space. + /// public static SKColorFilter CreateColorMatrix(float[] matrix) { if (matrix == null) @@ -202,7 +206,9 @@ public static SKColorFilter CreateTable(ReadOnlySpan tableA, ReadOnlySpan< /// /// The high contrast configuration settings. /// Returns the new . - /// Applies the following transformations in this order: conversion to grayscale, color inversion, increasing the resulting contrast. + /// + /// Applies the following transformations in this order: conversion to grayscale, color inversion, increasing the resulting contrast. + /// public static SKColorFilter CreateHighContrast(SKHighContrastConfig config) { return GetObject (SkiaApi.sk_colorfilter_new_high_contrast(&config)); @@ -215,7 +221,9 @@ public static SKColorFilter CreateHighContrast(SKHighContrastConfig config) /// Whether or not to invert brightness, lightness, or neither. /// The amount to adjust the contrast by, in the range -1.0 through 1.0. /// Returns the new . - /// Applies the following transformations in this order: conversion to grayscale, color inversion, increasing the resulting contrast. + /// + /// Applies the following transformations in this order: conversion to grayscale, color inversion, increasing the resulting contrast. + /// public static SKColorFilter CreateHighContrast(bool grayscale, SKHighContrastConfigInvertStyle invertStyle, float contrast) { return CreateHighContrast(new SKHighContrastConfig(grayscale, invertStyle, contrast)); diff --git a/binding/SkiaSharp/SKColorSpaceStructs.cs b/binding/SkiaSharp/SKColorSpaceStructs.cs index 6fe874ba39..6de3d08f3d 100644 --- a/binding/SkiaSharp/SKColorSpaceStructs.cs +++ b/binding/SkiaSharp/SKColorSpaceStructs.cs @@ -16,7 +16,9 @@ public unsafe partial struct SKColorSpacePrimaries /// Creates a new instance. /// /// The values of the primaries and white point. - /// There must be exactly 8 values in the array with the form [RX, RY, GX, GY, BX, BY, WX, WY]. + /// + /// There must be exactly 8 values in the array with the form [RX, RY, GX, GY, BX, BY, WX, WY]. + /// public SKColorSpacePrimaries (float[] values) { if (values == null) @@ -60,7 +62,9 @@ public SKColorSpacePrimaries (float rx, float ry, float gx, float gy, float bx, /// /// Gets the values of the primaries and white as an array with the form [RX, RY, GX, GY, BX, BY, WX, WY]. /// - /// ] + /// + /// ] + /// public readonly float[] Values => new[] { fRX, fRY, fGX, fGY, fBX, fBY, fWX, fWY }; @@ -80,7 +84,9 @@ public readonly SKColorSpaceXyz ToColorSpaceXyz () => /// /// Represents the coefficients for a common transfer function equation. /// - /// The coefficients are specified as a transformation from a curved space to linear. LinearVal = C*InputVal + F; (for 0.0f <= InputVal < D)LinearVal = (A*InputVal + B)^G + E; (for D <= InputVal <= 1.0f)Function is undefined if InputVal is not in [ 0.0f, 1.0f ].Resulting LinearVals must be in [ 0.0f, 1.0f ].Function must be positive and increasing. + /// + /// The coefficients are specified as a transformation from a curved space to linear. LinearVal = C*InputVal + F; (for 0.0f <= InputVal < D)LinearVal = (A*InputVal + B)^G + E; (for D <= InputVal <= 1.0f)Function is undefined if InputVal is not in [ 0.0f, 1.0f ].Resulting LinearVals must be in [ 0.0f, 1.0f ].Function must be positive and increasing. + /// public unsafe partial struct SKColorSpaceTransferFn { public static SKColorSpaceTransferFn Srgb { @@ -137,7 +143,9 @@ public static SKColorSpaceTransferFn Hlg { /// Creates a new instance of . /// /// The values of the coefficients. - /// There must be exactly 7 values in the array with the form [G, A, B, C, D, E, F]. + /// + /// There must be exactly 7 values in the array with the form [G, A, B, C, D, E, F]. + /// public SKColorSpaceTransferFn (float[] values) { if (values == null) @@ -199,7 +207,9 @@ public readonly SKColorSpaceTransferFn Invert () /// /// The input to transform. /// Returns the transformed input. - /// For negative inputs, returns `-Transform(Math.Abs(x))`. + /// + /// For negative inputs, returns `-Transform(Math.Abs(x))`. + /// public readonly float Transform (float x) { fixed (SKColorSpaceTransferFn* t = &this) { diff --git a/binding/SkiaSharp/SKData.cs b/binding/SkiaSharp/SKData.cs index dba4fc31e1..afbe22f678 100644 --- a/binding/SkiaSharp/SKData.cs +++ b/binding/SkiaSharp/SKData.cs @@ -11,7 +11,9 @@ namespace SkiaSharp /// /// The holds an immutable data buffer. /// - /// Not only is the data immutable, but the actual pointer that is returned by the property is guaranteed to always be the same for the life of this instance.The method can be used to return a that wraps this and allows for .NET APIs to scan the contents of the as a stream. + /// + /// Not only is the data immutable, but the actual pointer that is returned by the property is guaranteed to always be the same for the life of this instance.The method can be used to return a that wraps this and allows for .NET APIs to scan the contents of the as a stream. + /// public unsafe class SKData : SKObject, ISKNonVirtualReferenceCounted { // We pick a value that is the largest multiple of 4096 that is still smaller than the large object heap threshold (85K). @@ -293,7 +295,9 @@ public static SKData Create (SKStream stream, long length) /// The pointer to a buffer. /// The length of the buffer. /// Returns the new instance with reference to the specified data. - /// The caller is responsible for ensuring the data buffer lives as long as the instance. + /// + /// The caller is responsible for ensuring the data buffer lives as long as the instance. + /// public static SKData Create (IntPtr address, int length) { return Create (address, length, null, null); @@ -306,7 +310,9 @@ public static SKData Create (IntPtr address, int length) /// The length of the buffer. /// The delegate to invoke when the instance is ready to be discarded. /// Returns the new instance with reference to the specified data. - /// The caller is responsible for ensuring the data buffer lives as long as the instance. + /// + /// The caller is responsible for ensuring the data buffer lives as long as the instance. + /// public static SKData Create (IntPtr address, int length, SKDataReleaseDelegate releaseProc) { return Create (address, length, releaseProc, null); @@ -320,7 +326,9 @@ public static SKData Create (IntPtr address, int length, SKDataReleaseDelegate r /// The delegate to invoke when the instance is ready to be discarded. /// The user state to pass to the delegate when it is invoked. /// Returns the new instance with reference to the specified data. - /// The caller is responsible for ensuring the data buffer lives as long as the instance. + /// + /// The caller is responsible for ensuring the data buffer lives as long as the instance. + /// public static SKData Create (IntPtr address, int length, SKDataReleaseDelegate releaseProc, object context) { var del = releaseProc != null && context != null @@ -410,7 +418,9 @@ public Stream AsStream (bool streamDisposesData) => /// Returns a span that wraps the underlying data. /// /// Returns the data as a span. - /// This span is only valid as long as the data is valid. + /// + /// This span is only valid as long as the data is valid. + /// public ReadOnlySpan AsSpan () { return new ReadOnlySpan ((void*)Data, (int)Size); diff --git a/binding/SkiaSharp/SKDocument.cs b/binding/SkiaSharp/SKDocument.cs index d56b547d85..b281c9867b 100644 --- a/binding/SkiaSharp/SKDocument.cs +++ b/binding/SkiaSharp/SKDocument.cs @@ -9,10 +9,12 @@ namespace SkiaSharp /// /// A high-level API for creating a document-based canvas. /// - /// For each page, call to get the + /// + /// For each page, call to get the /// canvas, and then complete the page with a call to - /// . Finally, call - /// to complete the document. + /// . Finally, call + /// to complete the document. + /// public unsafe class SKDocument : SKObject, ISKReferenceCounted, ISKSkipObjectRegistration { /// @@ -40,7 +42,9 @@ public void Abort () => /// The width of the page. /// The height of the page. /// Returns a canvas for the new page. - /// The document owns this canvas, and it will go out of scope when or is called, or the document is deleted. + /// + /// The document owns this canvas, and it will go out of scope when or is called, or the document is deleted. + /// public SKCanvas BeginPage (float width, float height) => OwnedBy (SKCanvas.GetObject (SkiaApi.sk_document_begin_page (Handle, width, height, null), false), this); @@ -51,7 +55,9 @@ public SKCanvas BeginPage (float width, float height) => /// The height of the page. /// The area for the page contents. /// Returns a canvas for the new page. - /// The document owns this canvas, and it will go out of scope when or is called, or the document is deleted. + /// + /// The document owns this canvas, and it will go out of scope when or is called, or the document is deleted. + /// public SKCanvas BeginPage (float width, float height, SKRect content) => OwnedBy (SKCanvas.GetObject (SkiaApi.sk_document_begin_page (Handle, width, height, &content), false), this); @@ -99,7 +105,9 @@ public static SKDocument CreateXps (SKWStream stream) => /// The path of the file to write to. /// The DPI (pixels-per-inch) at which features without native XPS support will be rasterized. /// Returns the new XPS-backed document. - /// XPS pages are sized in point units. 1 pt == 1/72 inch == 127/360 mm. + /// + /// XPS pages are sized in point units. 1 pt == 1/72 inch == 127/360 mm. + /// public static SKDocument CreateXps (string path, float dpi) { if (path == null) { @@ -116,7 +124,9 @@ public static SKDocument CreateXps (string path, float dpi) /// The stream to write to. /// The DPI (pixels-per-inch) at which features without native XPS support will be rasterized. /// Returns the new XPS-backed document. - /// XPS pages are sized in point units. 1 pt == 1/72 inch == 127/360 mm. + /// + /// XPS pages are sized in point units. 1 pt == 1/72 inch == 127/360 mm. + /// public static SKDocument CreateXps (Stream stream, float dpi) { if (stream == null) { @@ -133,7 +143,9 @@ public static SKDocument CreateXps (Stream stream, float dpi) /// The stream to write to. /// The DPI (pixels-per-inch) at which features without native XPS support will be rasterized. /// Returns the new XPS-backed document. - /// XPS pages are sized in point units. 1 pt == 1/72 inch == 127/360 mm. + /// + /// XPS pages are sized in point units. 1 pt == 1/72 inch == 127/360 mm. + /// public static SKDocument CreateXps (SKWStream stream, float dpi) { if (stream == null) { @@ -195,7 +207,9 @@ public static SKDocument CreatePdf (SKWStream stream) /// The path of the file to write to. /// The DPI (pixels-per-inch) at which features without native PDF support will be rasterized. /// Returns the new PDF-backed document. - /// PDF pages are sized in point units. 1 pt == 1/72 inch == 127/360 mm. + /// + /// PDF pages are sized in point units. 1 pt == 1/72 inch == 127/360 mm. + /// public static SKDocument CreatePdf (string path, float dpi) => CreatePdf (path, new SKDocumentPdfMetadata (dpi)); @@ -205,7 +219,9 @@ public static SKDocument CreatePdf (string path, float dpi) => /// The stream to write to. /// The DPI (pixels-per-inch) at which features without native PDF support will be rasterized. /// Returns the new PDF-backed document. - /// PDF pages are sized in point units. 1 pt == 1/72 inch == 127/360 mm. + /// + /// PDF pages are sized in point units. 1 pt == 1/72 inch == 127/360 mm. + /// public static SKDocument CreatePdf (Stream stream, float dpi) => CreatePdf (stream, new SKDocumentPdfMetadata (dpi)); @@ -215,7 +231,9 @@ public static SKDocument CreatePdf (Stream stream, float dpi) => /// The stream to write to. /// The DPI (pixels-per-inch) at which features without native PDF support will be rasterized. /// Returns the new PDF-backed document. - /// PDF pages are sized in point units. 1 pt == 1/72 inch == 127/360 mm. + /// + /// PDF pages are sized in point units. 1 pt == 1/72 inch == 127/360 mm. + /// public static SKDocument CreatePdf (SKWStream stream, float dpi) => CreatePdf (stream, new SKDocumentPdfMetadata (dpi)); diff --git a/binding/SkiaSharp/SKDrawable.cs b/binding/SkiaSharp/SKDrawable.cs index 11dfa06d62..32d62b5afd 100644 --- a/binding/SkiaSharp/SKDrawable.cs +++ b/binding/SkiaSharp/SKDrawable.cs @@ -8,10 +8,12 @@ namespace SkiaSharp /// /// Represents the base class for objects that draw into . /// - /// The object has a generation ID, which is guaranteed to be unique across all + /// + /// The object has a generation ID, which is guaranteed to be unique across all /// drawables. To allow for clients of the drawable that may want to cache the /// results, the drawable must change its generation ID whenever its internal - /// state changes such that it will draw differently. + /// state changes such that it will draw differently. + /// public unsafe class SKDrawable : SKObject, ISKReferenceCounted { private static readonly SKManagedDrawableDelegates delegates; @@ -64,15 +66,19 @@ protected override void DisposeNative () /// /// Gets the unique value for this instance. /// - /// It is presumed that if two calls return the same value, then drawing this will result in the same image as well. + /// + /// It is presumed that if two calls return the same value, then drawing this will result in the same image as well. + /// public uint GenerationId => SkiaApi.sk_drawable_get_generation_id (Handle); /// /// Gets the conservative bounds of what the drawable will draw. /// - /// If the drawable can change what it draws (e.g. animation or in response to + /// + /// If the drawable can change what it draws (e.g. animation or in response to /// some external change), then this must return a bounds that is always valid for - /// all possible states. + /// all possible states. + /// public SKRect Bounds { get { SKRect bounds; @@ -118,7 +124,9 @@ public SKPicture Snapshot () => /// /// Invalidate the drawing generation ID, indicating that the drawing has changed. /// - /// This is typically used by the object itself in response to its internal state changing. + /// + /// This is typically used by the object itself in response to its internal state changing. + /// public void NotifyDrawingChanged () => SkiaApi.sk_drawable_notify_drawing_changed (Handle); diff --git a/binding/SkiaSharp/SKFontManager.cs b/binding/SkiaSharp/SKFontManager.cs index 7c0b81bb79..6cb5d1785d 100644 --- a/binding/SkiaSharp/SKFontManager.cs +++ b/binding/SkiaSharp/SKFontManager.cs @@ -84,7 +84,9 @@ public string GetFamilyName (int index) /// /// The index of the font style set to retrieve. /// Returns the font style set. - /// The index must be in the range of [0, ). + /// + /// The index must be in the range of [0, ). + /// public SKFontStyleSet GetFontStyles (int index) { return SKFontStyleSet.GetObject (SkiaApi.sk_fontmgr_create_styleset (Handle, index)); @@ -95,7 +97,9 @@ public SKFontStyleSet GetFontStyles (int index) /// /// The family name to use when searching. /// Returns a with all the font styles supported by the specified family. - /// Never returns and will return an empty set if the family is not found. + /// + /// Never returns and will return an empty set if the family is not found. + /// public SKFontStyleSet GetFontStyles (string familyName) { var familyNameUtf8ByteList = StringUtilities.GetEncodedText (familyName, SKTextEncoding.Utf8, addNull: true); @@ -114,7 +118,9 @@ public SKTypeface MatchFamily (string familyName) => /// The family name to use when searching. /// The font style to use when searching. /// Returns the that contains the given family name and style, or the default font if no matching font was found. - /// Will never return , as it will return the default font if no matching font is found. + /// + /// Will never return , as it will return the default font if no matching font is found. + /// public SKTypeface MatchFamily (string familyName, SKFontStyle style) { if (style == null) @@ -242,13 +248,15 @@ public SKTypeface MatchCharacter (string familyName, int character) /// The ISO 639, 15924, and 3166-1 code to use when searching, such as "ja" and "zh". /// The character to find a typeface for. /// Returns the that contains the given character, or if none was found. - /// Note that `bcp47` is a combination of ISO 639, 15924, and3166-1 codes, so it + /// + /// Note that `bcp47` is a combination of ISO 639, 15924, and3166-1 codes, so it /// is fine to just pass a ISO 639 here. The first item is the least significant /// fallback, and the last is the most significant. /// If no specified codes match, any font with the requested character will be /// matched. /// This method may return if no family can be found for the character - /// in the system fallback. + /// in the system fallback. + /// public SKTypeface MatchCharacter (string familyName, string[] bcp47, char character) { return MatchCharacter (familyName, SKFontStyle.Normal, bcp47, character); @@ -261,13 +269,15 @@ public SKTypeface MatchCharacter (string familyName, string[] bcp47, char charac /// The ISO 639, 15924, and 3166-1 code to use when searching, such as "ja" and "zh". /// The character to find a typeface for. /// Returns the that contains the given character, or if none was found. - /// Note that `bcp47` is a combination of ISO 639, 15924, and3166-1 codes, so it + /// + /// Note that `bcp47` is a combination of ISO 639, 15924, and3166-1 codes, so it /// is fine to just pass a ISO 639 here. The first item is the least significant /// fallback, and the last is the most significant. /// If no specified codes match, any font with the requested character will be /// matched. /// This method may return if no family can be found for the character - /// in the system fallback. + /// in the system fallback. + /// public SKTypeface MatchCharacter (string familyName, string[] bcp47, int character) { return MatchCharacter (familyName, SKFontStyle.Normal, bcp47, character); @@ -283,13 +293,15 @@ public SKTypeface MatchCharacter (string familyName, string[] bcp47, int charact /// The ISO 639, 15924, and 3166-1 code to use when searching, such as "ja" and "zh". /// The character to find a typeface for. /// Returns the that contains the given character, or if none was found. - /// Note that `bcp47` is a combination of ISO 639, 15924, and3166-1 codes, so it + /// + /// Note that `bcp47` is a combination of ISO 639, 15924, and3166-1 codes, so it /// is fine to just pass a ISO 639 here. The first item is the least significant /// fallback, and the last is the most significant. /// If no specified codes match, any font with the requested character will be /// matched. /// This method may return if no family can be found for the character - /// in the system fallback. + /// in the system fallback. + /// public SKTypeface MatchCharacter (string familyName, SKFontStyleWeight weight, SKFontStyleWidth width, SKFontStyleSlant slant, string[] bcp47, char character) { return MatchCharacter (familyName, new SKFontStyle (weight, width, slant), bcp47, character); @@ -305,13 +317,15 @@ public SKTypeface MatchCharacter (string familyName, SKFontStyleWeight weight, S /// The ISO 639, 15924, and 3166-1 code to use when searching, such as "ja" and "zh". /// The character to find a typeface for. /// Returns the that contains the given character, or if none was found. - /// Note that `bcp47` is a combination of ISO 639, 15924, and3166-1 codes, so it + /// + /// Note that `bcp47` is a combination of ISO 639, 15924, and3166-1 codes, so it /// is fine to just pass a ISO 639 here. The first item is the least significant /// fallback, and the last is the most significant. /// If no specified codes match, any font with the requested character will be /// matched. /// This method may return if no family can be found for the character - /// in the system fallback. + /// in the system fallback. + /// public SKTypeface MatchCharacter (string familyName, SKFontStyleWeight weight, SKFontStyleWidth width, SKFontStyleSlant slant, string[] bcp47, int character) { return MatchCharacter (familyName, new SKFontStyle (weight, width, slant), bcp47, character); @@ -327,13 +341,15 @@ public SKTypeface MatchCharacter (string familyName, SKFontStyleWeight weight, S /// The ISO 639, 15924, and 3166-1 code to use when searching, such as "ja" and "zh". /// The character to find a typeface for. /// Returns the that contains the given character, or if none was found. - /// Note that `bcp47` is a combination of ISO 639, 15924, and3166-1 codes, so it + /// + /// Note that `bcp47` is a combination of ISO 639, 15924, and3166-1 codes, so it /// is fine to just pass a ISO 639 here. The first item is the least significant /// fallback, and the last is the most significant. /// If no specified codes match, any font with the requested character will be /// matched. /// This method may return if no family can be found for the character - /// in the system fallback. + /// in the system fallback. + /// public SKTypeface MatchCharacter (string familyName, int weight, int width, SKFontStyleSlant slant, string[] bcp47, int character) { return MatchCharacter (familyName, new SKFontStyle (weight, width, slant), bcp47, character); @@ -347,13 +363,15 @@ public SKTypeface MatchCharacter (string familyName, int weight, int width, SKFo /// The ISO 639, 15924, and 3166-1 code to use when searching, such as "ja" and "zh". /// The character to find a typeface for. /// Returns the that contains the given character, or if none was found. - /// Note that `bcp47` is a combination of ISO 639, 15924, and3166-1 codes, so it + /// + /// Note that `bcp47` is a combination of ISO 639, 15924, and3166-1 codes, so it /// is fine to just pass a ISO 639 here. The first item is the least significant /// fallback, and the last is the most significant. /// If no specified codes match, any font with the requested character will be /// matched. /// This method may return if no family can be found for the character - /// in the system fallback. + /// in the system fallback. + /// public SKTypeface MatchCharacter (string familyName, SKFontStyle style, string[] bcp47, int character) { if (style == null) diff --git a/binding/SkiaSharp/SKFontStyle.cs b/binding/SkiaSharp/SKFontStyle.cs index 702caa2de3..7ad36bd570 100644 --- a/binding/SkiaSharp/SKFontStyle.cs +++ b/binding/SkiaSharp/SKFontStyle.cs @@ -66,13 +66,17 @@ protected override void DisposeNative () => /// /// Gets the weight of this style. /// - /// The weight could potentially be one of the values of . + /// + /// The weight could potentially be one of the values of . + /// public int Weight => SkiaApi.sk_fontstyle_get_weight (Handle); /// /// Gets the width of this style. /// - /// The weight could potentially be one of the values of . + /// + /// The weight could potentially be one of the values of . + /// public int Width => SkiaApi.sk_fontstyle_get_width (Handle); /// diff --git a/binding/SkiaSharp/SKFrontBufferedManagedStream.cs b/binding/SkiaSharp/SKFrontBufferedManagedStream.cs index fc17cf991f..93dd175745 100644 --- a/binding/SkiaSharp/SKFrontBufferedManagedStream.cs +++ b/binding/SkiaSharp/SKFrontBufferedManagedStream.cs @@ -9,7 +9,9 @@ namespace SkiaSharp /// /// A read-only stream that buffers the specified first chunk of bytes. /// - /// This is useful for decoding images using streams that are not seekable, since needs to read the first few bytes to determine the codec to use. + /// + /// This is useful for decoding images using streams that are not seekable, since needs to read the first few bytes to determine the codec to use. + /// public class SKFrontBufferedManagedStream : SKAbstractManagedStream { private SKStream stream; diff --git a/binding/SkiaSharp/SKFrontBufferedStream.cs b/binding/SkiaSharp/SKFrontBufferedStream.cs index e8a357842b..90ec7cb031 100644 --- a/binding/SkiaSharp/SKFrontBufferedStream.cs +++ b/binding/SkiaSharp/SKFrontBufferedStream.cs @@ -8,7 +8,9 @@ namespace SkiaSharp /// /// A read-only stream that buffers the specified first chunk of bytes. /// - /// This is useful for decoding images using streams that are not seekable, since needs to read the first few bytes to determine the codec to use. + /// + /// This is useful for decoding images using streams that are not seekable, since needs to read the first few bytes to determine the codec to use. + /// public class SKFrontBufferedStream : Stream { /// diff --git a/binding/SkiaSharp/SKImage.cs b/binding/SkiaSharp/SKImage.cs index 443a63a50c..cb46dd4902 100644 --- a/binding/SkiaSharp/SKImage.cs +++ b/binding/SkiaSharp/SKImage.cs @@ -16,7 +16,9 @@ namespace SkiaSharp /// /// An abstraction for drawing a rectangle of pixels. /// - /// An image is an abstraction of pixels, though the particular type of image could be actually storing its data on the GPU, or as drawing commands (picture or PDF or otherwise), ready to be played back into another canvas.The content of an image is always immutable, though the actual storage may change, if for example that image can be recreated via encoded data or other means.An image always has a non-zero dimensions. If there is a request to create a new image, either directly or via a surface, and either of the requested dimensions are zero, then will be returned. + /// + /// An image is an abstraction of pixels, though the particular type of image could be actually storing its data on the GPU, or as drawing commands (picture or PDF or otherwise), ready to be played back into another canvas.The content of an image is always immutable, though the actual storage may change, if for example that image can be recreated via encoded data or other means.An image always has a non-zero dimensions. If there is a request to create a new image, either directly or via a surface, and either of the requested dimensions are zero, then will be returned. + /// public unsafe class SKImage : SKObject, ISKReferenceCounted { internal SKImage (IntPtr x, bool owns) @@ -394,7 +396,9 @@ public static SKImage FromEncodedData (string filename) /// /// The bitmap that will be used as the source for the image. /// An image whose contents are the contents of the specified bitmap. - /// If the bitmap is marked immutable, and its pixel memory is shareable, it may be shared instead of copied. + /// + /// If the bitmap is marked immutable, and its pixel memory is shareable, it may be shared instead of copied. + /// public static SKImage FromBitmap (SKBitmap bitmap) { if (bitmap == null) @@ -553,7 +557,9 @@ public static SKImage FromTexture (GRRecordingContext context, GRBackendTexture /// The description of the existing backend texture. /// The color type to use for the image. /// Returns the new image, or if the specified texture is unsupported. - /// SkiaSharp will delete or recycle the texture when the image is released. + /// + /// SkiaSharp will delete or recycle the texture when the image is released. + /// public static SKImage FromAdoptedTexture (GRContext context, GRBackendTexture texture, SKColorType colorType) => FromAdoptedTexture ((GRRecordingContext)context, texture, colorType); @@ -565,7 +571,9 @@ public static SKImage FromAdoptedTexture (GRContext context, GRBackendTexture te /// The origin of the texture. /// The color type to use for the image. /// Returns the new image, or if the specified texture is unsupported. - /// SkiaSharp will delete or recycle the texture when the image is released. + /// + /// SkiaSharp will delete or recycle the texture when the image is released. + /// public static SKImage FromAdoptedTexture (GRContext context, GRBackendTexture texture, GRSurfaceOrigin origin, SKColorType colorType) => FromAdoptedTexture ((GRRecordingContext)context, texture, origin, colorType); @@ -578,7 +586,9 @@ public static SKImage FromAdoptedTexture (GRContext context, GRBackendTexture te /// The color type to use for the image. /// The transparency mode to use for the image. /// Returns the new image, or if the specified texture is unsupported. - /// SkiaSharp will delete or recycle the texture when the image is released. + /// + /// SkiaSharp will delete or recycle the texture when the image is released. + /// public static SKImage FromAdoptedTexture (GRContext context, GRBackendTexture texture, GRSurfaceOrigin origin, SKColorType colorType, SKAlphaType alpha) => FromAdoptedTexture ((GRRecordingContext)context, texture, origin, colorType, alpha); @@ -592,7 +602,9 @@ public static SKImage FromAdoptedTexture (GRContext context, GRBackendTexture te /// The transparency mode to use for the image. /// The colorspace to use for the image. /// Returns the new image, or if the specified texture is unsupported. - /// SkiaSharp will delete or recycle the texture when the image is released. + /// + /// SkiaSharp will delete or recycle the texture when the image is released. + /// public static SKImage FromAdoptedTexture (GRContext context, GRBackendTexture texture, GRSurfaceOrigin origin, SKColorType colorType, SKAlphaType alpha, SKColorSpace colorspace) => FromAdoptedTexture ((GRRecordingContext)context, texture, origin, colorType, alpha, colorspace); @@ -691,7 +703,9 @@ private static SKImage FromPicture (SKPicture picture, SKSizeI dimensions, SKMat /// Encodes the image using the format. /// /// Returns the wrapping the encoded image. - /// Use the overload that takes a if you want to encode in a different format. + /// + /// Use the overload that takes a if you want to encode in a different format. + /// public SKData Encode () { if (EncodedData is not null) @@ -706,7 +720,9 @@ public SKData Encode () /// The file format used to encode the image. /// The quality level to use for the image. This is in the range from 0-100. /// Returns the wrapping the encoded image. - /// The quality is a suggestion, and not all formats (for example, PNG) respect or support it. + /// + /// The quality is a suggestion, and not all formats (for example, PNG) respect or support it. + /// public SKData Encode (SKEncodedImageFormat format, int quality) { var raster = ToRasterImage (true); @@ -764,7 +780,9 @@ public SKData Encode (SKEncodedImageFormat format, int quality) /// /// Gets the encoded image pixels as a , if the image was created from supported encoded stream format. /// - /// Returns if the image mage contents are not encoded. + /// + /// Returns if the image mage contents are not encoded. + /// public SKData EncodedData => SKData.GetObject (SkiaApi.sk_image_ref_encoded (Handle)); @@ -873,7 +891,9 @@ public SKPixmap PeekPixels () /// /// Gets a value indicating whether the image is backed by an image-generator or other source that creates (and caches) its pixels / texture on-demand. /// - /// If this method returns , then will return . + /// + /// If this method returns , then will return . + /// public bool IsLazyGenerated => SkiaApi.sk_image_is_lazy_generated (Handle); @@ -907,7 +927,9 @@ public bool ReadPixels (SKImageInfo dstInfo, IntPtr dstPixels, int dstRowBytes) /// The source x-coordinate to start reading from. /// The source y-coordinate to start reading from. /// Returns if the pixels were read, or if there was an error. - /// This method may return if the source rectangle [, , dstInfo.Width, dstInfo.Height] does not intersect the image, or if the color type/alpha type could not be converted to the destination types. + /// + /// This method may return if the source rectangle [, , dstInfo.Width, dstInfo.Height] does not intersect the image, or if the color type/alpha type could not be converted to the destination types. + /// public bool ReadPixels (SKImageInfo dstInfo, IntPtr dstPixels, int dstRowBytes, int srcX, int srcY) => ReadPixels (dstInfo, dstPixels, dstRowBytes, srcX, srcY, SKImageCachingHint.Allow); @@ -921,7 +943,9 @@ public bool ReadPixels (SKImageInfo dstInfo, IntPtr dstPixels, int dstRowBytes, /// The source y-coordinate to start reading from. /// Whether or not to cache intermediate results. /// Returns if the pixels were read, or if there was an error. - /// This method may return if the source rectangle [, , dstInfo.Width, dstInfo.Height] does not intersect the image, or if the color type/alpha type could not be converted to the destination types. + /// + /// This method may return if the source rectangle [, , dstInfo.Width, dstInfo.Height] does not intersect the image, or if the color type/alpha type could not be converted to the destination types. + /// public bool ReadPixels (SKImageInfo dstInfo, IntPtr dstPixels, int dstRowBytes, int srcX, int srcY, SKImageCachingHint cachingHint) { var cinfo = SKImageInfoNative.FromManaged (ref dstInfo); @@ -941,7 +965,9 @@ public bool ReadPixels (SKPixmap pixmap) => /// The source x-coordinate to start reading from. /// The source y-coordinate to start reading from. /// Returns if the pixels were read, or if there was an error. - /// This method may return if the source rectangle [, , dst.Info.Width, dst.Info.Height] does not intersect the image, or if the color type/alpha type could not be converted to the destination types. + /// + /// This method may return if the source rectangle [, , dst.Info.Width, dst.Info.Height] does not intersect the image, or if the color type/alpha type could not be converted to the destination types. + /// public bool ReadPixels (SKPixmap pixmap, int srcX, int srcY) => ReadPixels (pixmap, srcX, srcY, SKImageCachingHint.Allow); @@ -953,7 +979,9 @@ public bool ReadPixels (SKPixmap pixmap, int srcX, int srcY) => /// The source y-coordinate to start reading from. /// Whether or not to cache intermediate results. /// Returns if the pixels were read, or if there was an error. - /// This method may return if the source rectangle [, , dst.Info.Width, dst.Info.Height] does not intersect the image, or if the color type/alpha type could not be converted to the destination types. + /// + /// This method may return if the source rectangle [, , dst.Info.Width, dst.Info.Height] does not intersect the image, or if the color type/alpha type could not be converted to the destination types. + /// public bool ReadPixels (SKPixmap pixmap, int srcX, int srcY, SKImageCachingHint cachingHint) { if (pixmap == null) @@ -1006,7 +1034,9 @@ public bool ScalePixels (SKPixmap dst, SKSamplingOptions sampling, SKImageCachin /// /// The rectangle indicating the subset to obtain. /// Returns the new image, or if there was an error or the rectangle does not intersect the image. - /// The underlying implementation may share the pixels, or it may make a copy. + /// + /// The underlying implementation may share the pixels, or it may make a copy. + /// public SKImage Subset (SKRectI subset) { return GetObject (SkiaApi.sk_image_make_subset_raster (Handle, &subset)); diff --git a/binding/SkiaSharp/SKImageInfo.cs b/binding/SkiaSharp/SKImageInfo.cs index 20bc85153f..484b173cfd 100644 --- a/binding/SkiaSharp/SKImageInfo.cs +++ b/binding/SkiaSharp/SKImageInfo.cs @@ -46,7 +46,9 @@ public unsafe struct SKImageInfo : IEquatable /// /// The current 32-bit color for the current platform. /// - /// On Windows, it is typically , and on Unix-based systems (macOS, Linux) it is typically . + /// + /// On Windows, it is typically , and on Unix-based systems (macOS, Linux) it is typically . + /// public static readonly SKColorType PlatformColorType; /// /// The number of bits to shift left for the alpha color component. @@ -167,7 +169,9 @@ public SKImageInfo (int width, int height, SKColorType colorType, SKAlphaType al /// /// Gets the number of bytes used per pixel. /// - /// This is calculated from the . If the color type is , then the value will be 0. + /// + /// This is calculated from the . If the color type is , then the value will be 0. + /// public readonly int BytesPerPixel => ColorType.GetBytesPerPixel (); @@ -177,31 +181,41 @@ public SKImageInfo (int width, int height, SKColorType colorType, SKAlphaType al /// /// Gets the number of bits used per pixel. /// - /// This is equivalent to multiplying the by 8 (the number of bits in a byte). + /// + /// This is equivalent to multiplying the by 8 (the number of bits in a byte). + /// public readonly int BitsPerPixel => BytesPerPixel * 8; /// /// Gets the total number of bytes needed to store the bitmap data. /// - /// This is calculated as: * * . + /// + /// This is calculated as: * * . + /// public readonly int BytesSize => Width * Height * BytesPerPixel; /// /// Gets the total number of bytes needed to store the bitmap data as a 64-bit integer. /// - /// This is calculated as: * * . + /// + /// This is calculated as: * * . + /// public readonly long BytesSize64 => (long)Width * (long)Height * (long)BytesPerPixel; /// /// Gets the number of bytes per row. /// - /// This is calculated as: * . + /// + /// This is calculated as: * . + /// public readonly int RowBytes => Width * BytesPerPixel; /// /// Gets the number of bytes per row as a 64-bit integer. /// - /// This is calculated as: * . + /// + /// This is calculated as: * . + /// public readonly long RowBytes64 => (long)Width * (long)BytesPerPixel; /// diff --git a/binding/SkiaSharp/SKManagedStream.cs b/binding/SkiaSharp/SKManagedStream.cs index 16784f6659..afd6b2a7d5 100644 --- a/binding/SkiaSharp/SKManagedStream.cs +++ b/binding/SkiaSharp/SKManagedStream.cs @@ -8,7 +8,8 @@ namespace SkiaSharp /// /// Wraps a into a (a seekable, rewindable Skia stream) /// - /// The following example shows how to wrap a that + /// + /// The following example shows how to wrap a that /// represents a stream into an embedded resource in an assembly and use it with /// SkiaSharp APIs that use resources: /// ## Examples @@ -31,7 +32,8 @@ namespace SkiaSharp /// } /// } /// } - /// ``` + /// ``` + /// public class SKManagedStream : SKAbstractManagedStream { private Stream stream; @@ -47,7 +49,9 @@ public class SKManagedStream : SKAbstractManagedStream /// Creates a new read-only stream from a . /// /// The managed stream. - /// The underlying stream is not disposed when this object is disposed. + /// + /// The underlying stream is not disposed when this object is disposed. + /// public SKManagedStream (Stream managedStream) : this (managedStream, false) { diff --git a/binding/SkiaSharp/SKManagedWStream.cs b/binding/SkiaSharp/SKManagedWStream.cs index de30c24df2..b23a275aec 100644 --- a/binding/SkiaSharp/SKManagedWStream.cs +++ b/binding/SkiaSharp/SKManagedWStream.cs @@ -19,7 +19,9 @@ public class SKManagedWStream : SKAbstractManagedWStream /// Creates a new writeable stream from a . /// /// The managed stream. - /// The underlying stream is not disposed when this object is disposed. + /// + /// The underlying stream is not disposed when this object is disposed. + /// public SKManagedWStream (Stream managedStream) : this (managedStream, false) { diff --git a/binding/SkiaSharp/SKMatrix.cs b/binding/SkiaSharp/SKMatrix.cs index f5eaae4025..cfc9d92623 100644 --- a/binding/SkiaSharp/SKMatrix.cs +++ b/binding/SkiaSharp/SKMatrix.cs @@ -7,7 +7,9 @@ namespace SkiaSharp /// /// A 3x3 transformation matrix with perspective. /// - /// It extends the traditional 2D affine transformation matrix with three perspective components that allow simple 3D effects to be created with it. Those components must be manually set by using the , , fields of the matrix. + /// + /// It extends the traditional 2D affine transformation matrix with three perspective components that allow simple 3D effects to be created with it. Those components must be manually set by using the , , fields of the matrix. + /// public unsafe partial struct SKMatrix { internal const float DegreesToRadians = (float)Math.PI / 180.0f; @@ -118,7 +120,9 @@ public float[] Values { /// Populates the specified array with the matrix values. /// /// The array to populate. - /// The result will be the same as . + /// + /// The result will be the same as . + /// public readonly void GetValues (float[] values) { if (values == null) @@ -349,7 +353,9 @@ public readonly SKMatrix PostConcat (SKMatrix matrix) /// The result matrix value. /// The first matrix to concatenate. /// The second matrix to concatenate. - /// Either source matrices can also be the target matrix. + /// + /// Either source matrices can also be the target matrix. + /// public static void Concat (ref SKMatrix target, SKMatrix first, SKMatrix second) { fixed (SKMatrix* t = &target) { @@ -380,7 +386,9 @@ public readonly SKRect MapRect (SKRect source) /// /// The point to map. /// Returns the mapped point. - /// Mapping points uses all components of the matrix. Use to ignore the translation. + /// + /// Mapping points uses all components of the matrix. Use to ignore the translation. + /// public readonly SKPoint MapPoint (SKPoint point) => MapPoint (point.X, point.Y); @@ -390,7 +398,9 @@ public readonly SKPoint MapPoint (SKPoint point) => /// The x-coordinate. /// The y-coordinate. /// Returns the mapped point. - /// Mapping points uses all components of the matrix. Use to ignore the translation. + /// + /// Mapping points uses all components of the matrix. Use to ignore the translation. + /// public readonly SKPoint MapPoint (float x, float y) { SKPoint result; @@ -417,7 +427,9 @@ public readonly void MapPoints (Span result, ReadOnlySpan poin /// /// The array where the mapped results will be stored (needs to have the same number of elements of the array). /// The array of points to be mapped. - /// Mapping points uses all components of the matrix. Use to ignore the translation. + /// + /// Mapping points uses all components of the matrix. Use to ignore the translation. + /// public readonly void MapPoints (SKPoint[] result, SKPoint[] points) { if (result == null) @@ -439,7 +451,9 @@ public readonly void MapPoints (SKPoint[] result, SKPoint[] points) /// /// The array of points to be mapped. /// Returns the new array allocated with the mapped results. - /// Mapping points uses all components of the matrix. Use to ignore the translation. + /// + /// Mapping points uses all components of the matrix. Use to ignore the translation. + /// public readonly SKPoint[] MapPoints (SKPoint[] points) { if (points == null) @@ -462,7 +476,9 @@ public readonly SKPoint MapVector (SKPoint vector) => /// The x-component of the vector. /// The y-component of the vector. /// Returns the mapped point. - /// Mapping vectors ignores the translation component in the matrix. Use to take the translation into consideration. + /// + /// Mapping vectors ignores the translation component in the matrix. Use to take the translation into consideration. + /// public readonly SKPoint MapVector (float x, float y) { SKPoint result; @@ -489,7 +505,9 @@ public readonly void MapVectors (Span result, ReadOnlySpan vec /// /// The array where the mapped results will be stored (needs to have the same number of elements of the array). /// The array of vectors to map. - /// Mapping vectors ignores the translation component in the matrix. Use to take the translation into consideration. + /// + /// Mapping vectors ignores the translation component in the matrix. Use to take the translation into consideration. + /// public readonly void MapVectors (SKPoint[] result, SKPoint[] vectors) { if (result == null) @@ -511,7 +529,9 @@ public readonly void MapVectors (SKPoint[] result, SKPoint[] vectors) /// /// The array of vectors to map. /// Returns the new array allocated with the mapped results. - /// Mapping vectors ignores the translation component in the matrix. Use to take the translation into consideration. + /// + /// Mapping vectors ignores the translation component in the matrix. Use to take the translation into consideration. + /// public readonly SKPoint[] MapVectors (SKPoint[] vectors) { if (vectors == null) diff --git a/binding/SkiaSharp/SKMatrix44.cs b/binding/SkiaSharp/SKMatrix44.cs index 247302817a..c285b0988f 100644 --- a/binding/SkiaSharp/SKMatrix44.cs +++ b/binding/SkiaSharp/SKMatrix44.cs @@ -28,7 +28,9 @@ public SKMatrix44 () /// Creates a new instance of using the values from a instance. /// /// The instance. - /// When converting from to , the third row and column remain as identity. + /// + /// When converting from to , the third row and column remain as identity. + /// public SKMatrix44 (SKMatrix src) { this = src; @@ -76,7 +78,9 @@ public SKMatrix44 ( /// Creates a new identity matrix. /// /// Returns the new identity matrix. - /// This is equivalent to creating an uninitialized matrix, and invoking . + /// + /// This is equivalent to creating an uninitialized matrix, and invoking . + /// public static SKMatrix44 CreateIdentity () => Identity; /// @@ -92,7 +96,9 @@ public static SKMatrix44 CreateTranslation (float x, float y, float z) => /// The amount, along the y-axis, to scale. /// The amount, along the z-axis, to scale. /// Returns the new scale matrix. - /// This is equivalent to creating an uninitialized matrix and passing the values to . + /// + /// This is equivalent to creating an uninitialized matrix and passing the values to . + /// public static SKMatrix44 CreateScale (float x, float y, float z) => Matrix4x4.CreateScale (x, y, z); @@ -109,7 +115,9 @@ public static SKMatrix44 CreateScale (float x, float y, float z, float pivotX, f /// The z-axis to rotate around. /// The amount, in radians, to rotate by. /// Returns the new rotation matrix. - /// This is equivalent to creating an uninitialized matrix and passing the values to . + /// + /// This is equivalent to creating an uninitialized matrix and passing the values to . + /// public static SKMatrix44 CreateRotation (float x, float y, float z, float radians) => Matrix4x4.CreateFromAxisAngle (new Vector3 (x, y, z), radians); @@ -141,7 +149,9 @@ public static SKMatrix44 CreateRotation (float x, float y, float z, float radian /// The z-axis to rotate around. /// The amount, in degrees, to rotate by. /// Returns the new rotation matrix. - /// This is equivalent to creating an uninitialized matrix and passing the values to . + /// + /// This is equivalent to creating an uninitialized matrix and passing the values to . + /// public static SKMatrix44 CreateRotationDegrees (float x, float y, float z, float degrees) => Matrix4x4.CreateFromAxisAngle (new Vector3 (x, y, z), degrees * DegreesToRadians); @@ -431,7 +441,9 @@ public static SKMatrix44 Multiply (SKMatrix44 value1, float value2) => /// /// Gets the equivalent of the current matrix. /// - /// When converting from to , the third row and column is dropped. + /// + /// When converting from to , the third row and column is dropped. + /// public SKMatrix Matrix => new SKMatrix ( m00, m10, m30, diff --git a/binding/SkiaSharp/SKNoDrawCanvas.cs b/binding/SkiaSharp/SKNoDrawCanvas.cs index cddf9f42ad..b68fa1823e 100644 --- a/binding/SkiaSharp/SKNoDrawCanvas.cs +++ b/binding/SkiaSharp/SKNoDrawCanvas.cs @@ -7,7 +7,9 @@ namespace SkiaSharp /// /// A type of that provides a base type for canvases that do not need to rasterize. /// - /// These canvases are not backed by any device/pixels and they use conservative clipping (clipping calls only use rectangles). + /// + /// These canvases are not backed by any device/pixels and they use conservative clipping (clipping calls only use rectangles). + /// public class SKNoDrawCanvas : SKCanvas { internal SKNoDrawCanvas (IntPtr handle, bool owns) diff --git a/binding/SkiaSharp/SKObject.cs b/binding/SkiaSharp/SKObject.cs index 1d863bcc61..59c5eed127 100644 --- a/binding/SkiaSharp/SKObject.cs +++ b/binding/SkiaSharp/SKObject.cs @@ -10,7 +10,9 @@ namespace SkiaSharp /// /// Represents a tracked native object. /// - /// This object wraps a native handle and keeps track of it's lifetime for the garbage collector. For a simple object, use . + /// + /// This object wraps a native handle and keeps track of it's lifetime for the garbage collector. For a simple object, use . + /// public abstract class SKObject : SKNativeObject { private readonly object locker = new object (); @@ -63,7 +65,9 @@ protected override void Dispose (bool disposing) => /// /// Gets or sets the handle to the underlying native object. /// - /// Setting this value will register this object with the lifetime tracker. + /// + /// Setting this value will register this object with the lifetime tracker. + /// public override IntPtr Handle { get => base.Handle; protected set { @@ -220,7 +224,9 @@ internal static T Referenced (T owner, SKObject child) /// /// Represents a native object. /// - /// This object just wraps a native handle with the managed dispose pattern. For a tracked object, use . + /// + /// This object just wraps a native handle with the managed dispose pattern. For a tracked object, use . + /// public abstract class SKNativeObject : IDisposable { internal bool fromFinalizer = false; @@ -294,7 +300,9 @@ protected virtual void Dispose (bool disposing) /// /// Releases all resources used by this . /// - /// Always dispose the object before you release your last reference to the . Otherwise, the resources it is using will not be freed until the garbage collector calls the finalizer. + /// + /// Always dispose the object before you release your last reference to the . Otherwise, the resources it is using will not be freed until the garbage collector calls the finalizer. + /// public void Dispose () { if (IgnorePublicDispose) diff --git a/binding/SkiaSharp/SKOverdrawCanvas.cs b/binding/SkiaSharp/SKOverdrawCanvas.cs index e7987c4af5..b8c8c5b4c2 100644 --- a/binding/SkiaSharp/SKOverdrawCanvas.cs +++ b/binding/SkiaSharp/SKOverdrawCanvas.cs @@ -7,7 +7,9 @@ namespace SkiaSharp /// /// A canvas that captures all drawing commands, and rather than draw the actual content, it increments the alpha channel of each pixel every time it would have been touched by a draw call. /// - /// This is useful for detecting overdraw. + /// + /// This is useful for detecting overdraw. + /// public class SKOverdrawCanvas : SKNWayCanvas { internal SKOverdrawCanvas (IntPtr handle, bool owns) diff --git a/binding/SkiaSharp/SKPMColor.cs b/binding/SkiaSharp/SKPMColor.cs index 0bb994801a..6f6696c56c 100644 --- a/binding/SkiaSharp/SKPMColor.cs +++ b/binding/SkiaSharp/SKPMColor.cs @@ -7,7 +7,9 @@ namespace SkiaSharp /// /// 32-bit ARGB premultiplied color value. /// - /// The byte order for this value is configuration dependent. This is different from , which is unpremultiplied, and is always in the same byte order. + /// + /// The byte order for this value is configuration dependent. This is different from , which is unpremultiplied, and is always in the same byte order. + /// public readonly unsafe struct SKPMColor : IEquatable { private readonly uint color; diff --git a/binding/SkiaSharp/SKPaint.cs b/binding/SkiaSharp/SKPaint.cs index 72be6fc8f0..441123c786 100644 --- a/binding/SkiaSharp/SKPaint.cs +++ b/binding/SkiaSharp/SKPaint.cs @@ -71,7 +71,8 @@ public static SKSamplingOptions ToSamplingOptions (this SKFilterQuality quality) /// /// Holds the style and color information about how to draw geometries, text and bitmaps. /// - /// Anytime you draw something in SkiaSharp, and want to specify what color it is, + /// + /// Anytime you draw something in SkiaSharp, and want to specify what color it is, /// or how it blends with the background, or what style or font to draw it in, you /// specify those attributes in a paint. /// Unlike , an paint object does not maintain an @@ -161,7 +162,8 @@ public static SKSamplingOptions ToSamplingOptions (this SKFilterQuality quality) /// } /// ``` /// The example above produces the following: - /// ![SKPaint and SKShader](~/images/gradient.png "SKPaint and SKShader") + /// ![SKPaint and SKShader](~/images/gradient.png "SKPaint and SKShader") + /// public unsafe class SKPaint : SKObject, ISKSkipObjectRegistration { [Obsolete] @@ -250,7 +252,9 @@ public bool SubpixelText { /// /// Gets or sets a value indicating whether LCD text rendering is enabled. /// - /// must also be enabled for LCD rendering to be enabled. + /// + /// must also be enabled for LCD rendering to be enabled. + /// [Obsolete ($"Use {nameof (SKFont)}.{nameof (SKFont.Edging)} instead.")] public bool LcdRenderText { get => SkiaApi.sk_compatpaint_get_lcd_render_text (Handle); @@ -296,7 +300,9 @@ public bool FakeBoldText { /// /// Gets or sets a value indicating whether to paint a stroke or the fill. /// - /// This is a shortcut way to set to either or . + /// + /// This is a shortcut way to set to either or . + /// public bool IsStroke { get => Style != SKPaintStyle.Fill; set => Style = value ? SKPaintStyle.Stroke : SKPaintStyle.Fill; @@ -305,7 +311,9 @@ public bool IsStroke { /// /// Gets or sets the painting style. /// - /// Can also be set using . + /// + /// Can also be set using . + /// public SKPaintStyle Style { get => SkiaApi.sk_paint_get_style (Handle); set => SkiaApi.sk_paint_set_style (Handle, value); @@ -314,7 +322,9 @@ public SKPaintStyle Style { /// /// Gets or sets the paint's foreground color. /// - /// The color is a 32-bit value containing ARGB. This 32-bit value is not premultiplied, meaning that its alpha can be any value, regardless of the values of R, G and B. + /// + /// The color is a 32-bit value containing ARGB. This 32-bit value is not premultiplied, meaning that its alpha can be any value, regardless of the values of R, G and B. + /// public SKColor Color { get => SkiaApi.sk_paint_get_color (Handle); set => SkiaApi.sk_paint_set_color (Handle, (uint)value); @@ -337,7 +347,9 @@ public void SetColor (SKColorF color, SKColorSpace colorspace) => /// /// Gets or sets the paint's stroke width. /// - /// This is used whenever the is or . The value of zero is the special hairline mode. Hairlines always draw with a width of 1 pixel, regardless of the transformation matrix. + /// + /// This is used whenever the is or . The value of zero is the special hairline mode. Hairlines always draw with a width of 1 pixel, regardless of the transformation matrix. + /// public float StrokeWidth { get => SkiaApi.sk_paint_get_stroke_width (Handle); set => SkiaApi.sk_paint_set_stroke_width (Handle, value); @@ -346,7 +358,9 @@ public float StrokeWidth { /// /// Gets or sets the paint's miter limit. /// - /// This is used whenever the is or to control the behavior of miter joins when the joins' angle is sharp. + /// + /// This is used whenever the is or to control the behavior of miter joins when the joins' angle is sharp. + /// public float StrokeMiter { get => SkiaApi.sk_paint_get_stroke_miter (Handle); set => SkiaApi.sk_paint_set_stroke_miter (Handle, value); @@ -379,7 +393,9 @@ public SKShader Shader { /// /// Gets or sets the mask filter to use when painting. /// - /// Mask filters control the transformations on the alpha channel before primitives are drawn. Examples are blur or emboss. + /// + /// Mask filters control the transformations on the alpha channel before primitives are drawn. Examples are blur or emboss. + /// public SKMaskFilter MaskFilter { get => SKMaskFilter.GetObject (SkiaApi.sk_paint_get_maskfilter (Handle)); set => SkiaApi.sk_paint_set_maskfilter (Handle, value == null ? IntPtr.Zero : value.Handle); @@ -417,7 +433,9 @@ public SKBlender Blender { /// /// Gets or sets the filter quality of the current paint. /// - /// This affects the quality (and performance) of drawing scaled images. + /// + /// This affects the quality (and performance) of drawing scaled images. + /// [Obsolete ($"Use {nameof (SKSamplingOptions)} instead.")] public SKFilterQuality FilterQuality { get => (SKFilterQuality)SkiaApi.sk_compatpaint_get_filter_quality (Handle); @@ -454,7 +472,9 @@ public SKTextAlign TextAlign { /// /// Gets or sets the encoding used when drawing or measuring text. /// - /// This defaults to UTF-8 encoding. + /// + /// This defaults to UTF-8 encoding. + /// [Obsolete ($"Use {nameof (SKTextEncoding)} method overloads instead.")] public SKTextEncoding TextEncoding { get => SkiaApi.sk_compatpaint_get_text_encoding (Handle); @@ -519,7 +539,9 @@ public float GetFontMetrics (out SKFontMetrics metrics) => /// Creates a copy of the current paint. /// /// Returns the copy. - /// The copy is a shallow copy, all references will still point to the same objects. + /// + /// The copy is a shallow copy, all references will still point to the same objects. + /// public SKPaint Clone () => GetObject (SkiaApi.sk_compatpaint_clone (Handle))!; @@ -530,7 +552,9 @@ public SKPaint Clone () => /// /// The text to be measured. /// Returns the width of the text. - /// This will return the vertical measure if this is vertical text, in which case the returned value should be treated has a height instead of a width. + /// + /// This will return the vertical measure if this is vertical text, in which case the returned value should be treated has a height instead of a width. + /// [Obsolete ($"Use {nameof (SKFont)}.{nameof (SKFont.MeasureText)}() instead.")] public float MeasureText (string text) => GetFont ().MeasureText (text, this); @@ -545,7 +569,9 @@ public float MeasureText (ReadOnlySpan text) => /// /// The text to be measured. /// Returns the width of the text. - /// This will return the vertical measure if this is vertical text, in which case the returned value should be treated has a height instead of a width. + /// + /// This will return the vertical measure if this is vertical text, in which case the returned value should be treated has a height instead of a width. + /// [Obsolete ($"Use {nameof (SKFont)}.{nameof (SKFont.MeasureText)}() instead.")] public float MeasureText (byte[] text) => GetFont ().MeasureText (text, TextEncoding, this); @@ -561,7 +587,9 @@ public float MeasureText (ReadOnlySpan text) => /// The pointer to a region holding text encoded using the encoding specified in format. /// The number of bytes to read from the /// Returns the width of the text. - /// The parameter is a pointer to a region in memory that contains text encoded in the format. This only consumes up to bytes from the buffer. + /// + /// The parameter is a pointer to a region in memory that contains text encoded in the format. This only consumes up to bytes from the buffer. + /// [Obsolete ($"Use {nameof (SKFont)}.{nameof (SKFont.MeasureText)}() instead.")] public float MeasureText (IntPtr buffer, int length) => GetFont ().MeasureText (buffer, length, TextEncoding, this); @@ -572,7 +600,9 @@ public float MeasureText (IntPtr buffer, int length) => /// The pointer to a region holding text encoded using the encoding specified in format. /// The number of bytes to read from the /// Returns the width of the text. - /// The parameter is a pointer to a region in memory that contains text encoded in the format. This only consumes up to bytes from the buffer. + /// + /// The parameter is a pointer to a region in memory that contains text encoded in the format. This only consumes up to bytes from the buffer. + /// [Obsolete ($"Use {nameof (SKFont)}.{nameof (SKFont.MeasureText)}() instead.")] public float MeasureText (IntPtr buffer, IntPtr length) => GetFont ().MeasureText (buffer, (int)length, TextEncoding, this); @@ -583,7 +613,9 @@ public float MeasureText (IntPtr buffer, IntPtr length) => /// The text to be measured. /// The bounds of the text relative to (0, 0) /// Returns the width of the text. - /// This will return the vertical measure if this is vertical text, in which case the returned value should be treated has a height instead of a width. + /// + /// This will return the vertical measure if this is vertical text, in which case the returned value should be treated has a height instead of a width. + /// [Obsolete ($"Use {nameof (SKFont)}.{nameof (SKFont.MeasureText)}() instead.")] public float MeasureText (string text, ref SKRect bounds) => GetFont ().MeasureText (text, out bounds, this); @@ -600,7 +632,9 @@ public float MeasureText (ReadOnlySpan text, ref SKRect bounds) => /// The text to be measured. /// The bounds of the text relative to (0, 0) /// Returns the width of the text. - /// This will return the vertical measure if this is vertical text, in which case the returned value should be treated has a height instead of a width. + /// + /// This will return the vertical measure if this is vertical text, in which case the returned value should be treated has a height instead of a width. + /// [Obsolete ($"Use {nameof (SKFont)}.{nameof (SKFont.MeasureText)}() instead.")] public float MeasureText (byte[] text, ref SKRect bounds) => GetFont ().MeasureText (text, TextEncoding, out bounds, this); @@ -618,11 +652,13 @@ public float MeasureText (ReadOnlySpan text, ref SKRect bounds) => /// The number of bytes to read from the /// The bounds of the text relative to (0, 0) /// Returns the width of the text. - /// This will return the vertical measure if this is vertical text, in which case + /// + /// This will return the vertical measure if this is vertical text, in which case /// the returned value should be treated has a height instead of a width. /// The `buffer` parameter is a pointer to a region in memory that contains text /// encoded in the format. This only - /// consumes up to `length` bytes from the buffer. + /// consumes up to `length` bytes from the buffer. + /// [Obsolete ($"Use {nameof (SKFont)}.{nameof (SKFont.MeasureText)}() instead.")] public float MeasureText (IntPtr buffer, int length, ref SKRect bounds) => GetFont ().MeasureText (buffer, length, TextEncoding, out bounds, this); @@ -634,11 +670,13 @@ public float MeasureText (IntPtr buffer, int length, ref SKRect bounds) => /// The number of bytes to read from the /// The bounds of the text relative to (0, 0) /// Returns the width of the text. - /// This will return the vertical measure if this is vertical text, in which case + /// + /// This will return the vertical measure if this is vertical text, in which case /// the returned value should be treated has a height instead of a width. /// The `buffer` parameter is a pointer to a region in memory that contains text /// encoded in the format. This only - /// consumes up to `length` bytes from the buffer. + /// consumes up to `length` bytes from the buffer. + /// [Obsolete ($"Use {nameof (SKFont)}.{nameof (SKFont.MeasureText)}() instead.")] public float MeasureText (IntPtr buffer, IntPtr length, ref SKRect bounds) => GetFont ().MeasureText (buffer, (int)length, TextEncoding, out bounds, this); @@ -747,7 +785,9 @@ public long BreakText (ReadOnlySpan text, float maxWidth, out float measur /// The number of bytes to read from the /// The maximum width. Only the subset of text whose accumulated widths are <= are measured. /// Returns the number of bytes of text that were measured. - /// The parameter is a pointer to a region in memory that contains text encoded in the format. This only consumes up to bytes from the buffer. + /// + /// The parameter is a pointer to a region in memory that contains text encoded in the format. This only consumes up to bytes from the buffer. + /// [Obsolete ($"Use {nameof (SKFont)}.{nameof (SKFont.BreakText)}() instead.")] public long BreakText (IntPtr buffer, int length, float maxWidth) => GetFont ().BreakText (buffer, length, TextEncoding, maxWidth, out _, this); @@ -760,7 +800,9 @@ public long BreakText (IntPtr buffer, int length, float maxWidth) => /// The maximum width. Only the subset of text whose accumulated widths are <= are measured. /// The actual width of the measured text. /// Returns the number of bytes of text that were measured. - /// The parameter is a pointer to a region in memory that contains text encoded in the format. This only consumes up to bytes from the buffer. + /// + /// The parameter is a pointer to a region in memory that contains text encoded in the format. This only consumes up to bytes from the buffer. + /// [Obsolete ($"Use {nameof (SKFont)}.{nameof (SKFont.BreakText)}() instead.")] public long BreakText (IntPtr buffer, int length, float maxWidth, out float measuredWidth) => GetFont ().BreakText (buffer, length, TextEncoding, maxWidth, out measuredWidth, this); @@ -772,7 +814,9 @@ public long BreakText (IntPtr buffer, int length, float maxWidth, out float meas /// The number of bytes to read from the /// The maximum width. Only the subset of text whose accumulated widths are <= are measured. /// Returns the number of bytes of text that were measured. - /// The parameter is a pointer to a region in memory that contains text encoded in the format. This only consumes up to bytes from the buffer. + /// + /// The parameter is a pointer to a region in memory that contains text encoded in the format. This only consumes up to bytes from the buffer. + /// [Obsolete ($"Use {nameof (SKFont)}.{nameof (SKFont.BreakText)}() instead.")] public long BreakText (IntPtr buffer, IntPtr length, float maxWidth) => GetFont ().BreakText (buffer, (int)length, TextEncoding, maxWidth, out _, this); @@ -785,7 +829,9 @@ public long BreakText (IntPtr buffer, IntPtr length, float maxWidth) => /// The maximum width. Only the subset of text whose accumulated widths are <= are measured. /// The actual width of the measured text. /// Returns the number of bytes of text that were measured. - /// The parameter is a pointer to a region in memory that contains text encoded in the format. This only consumes up to bytes from the buffer. + /// + /// The parameter is a pointer to a region in memory that contains text encoded in the format. This only consumes up to bytes from the buffer. + /// [Obsolete ($"Use {nameof (SKFont)}.{nameof (SKFont.BreakText)}() instead.")] public long BreakText (IntPtr buffer, IntPtr length, float maxWidth, out float measuredWidth) => GetFont ().BreakText (buffer, (int)length, TextEncoding, maxWidth, out measuredWidth, this); @@ -1079,7 +1125,9 @@ public int CountGlyphs (IntPtr text, IntPtr length) => /// /// The text. /// Returns the glyph indices. - /// This method does not check the text for valid character codes or valid glyph indices. + /// + /// This method does not check the text for valid character codes or valid glyph indices. + /// [Obsolete ($"Use {nameof (SKFont)}.{nameof (SKFont.GetGlyphs)}() instead.")] public ushort[] GetGlyphs (string text) => GetFont ().GetGlyphs (text); @@ -1094,7 +1142,9 @@ public ushort[] GetGlyphs (ReadOnlySpan text) => /// /// The text encoded using the encoding specified in format. /// Returns the glyph indices. - /// This method does not check the text for valid character codes or valid glyph indices. + /// + /// This method does not check the text for valid character codes or valid glyph indices. + /// [Obsolete ($"Use {nameof (SKFont)}.{nameof (SKFont.GetGlyphs)}() instead.")] public ushort[] GetGlyphs (byte[] text) => GetFont ().GetGlyphs (text, TextEncoding); @@ -1110,7 +1160,9 @@ public ushort[] GetGlyphs (ReadOnlySpan text) => /// The text buffer encoded using the encoding specified in format. /// The length of the text buffer. /// Returns the glyph indices. - /// This method does not check the text for valid character codes or valid glyph indices. + /// + /// This method does not check the text for valid character codes or valid glyph indices. + /// [Obsolete ($"Use {nameof (SKFont)}.{nameof (SKFont.GetGlyphs)}() instead.")] public ushort[] GetGlyphs (IntPtr text, int length) => GetFont ().GetGlyphs (text, length, TextEncoding); @@ -1121,7 +1173,9 @@ public ushort[] GetGlyphs (IntPtr text, int length) => /// The text buffer encoded using the encoding specified in format. /// The length of the text buffer. /// Returns the glyph indices. - /// This method does not check the text for valid character codes or valid glyph indices. + /// + /// This method does not check the text for valid character codes or valid glyph indices. + /// [Obsolete ($"Use {nameof (SKFont)}.{nameof (SKFont.GetGlyphs)}() instead.")] public ushort[] GetGlyphs (IntPtr text, IntPtr length) => GetFont ().GetGlyphs (text, (int)length, TextEncoding); @@ -1133,7 +1187,9 @@ public ushort[] GetGlyphs (IntPtr text, IntPtr length) => /// /// The text. /// Returns true if all the characters corresponds to a non-zero glyph index, otherwise false if any characters in text are not supported in the typeface. - /// This method does not check to see if the text contains invalid glyph indices. + /// + /// This method does not check to see if the text contains invalid glyph indices. + /// [Obsolete ($"Use {nameof (SKFont)}.{nameof (SKFont.ContainsGlyphs)}() instead.")] public bool ContainsGlyphs (string text) => GetFont ().ContainsGlyphs (text); @@ -1148,7 +1204,9 @@ public bool ContainsGlyphs (ReadOnlySpan text) => /// /// The text encoded using the encoding specified in format. /// Returns true if all the characters corresponds to a non-zero glyph index, otherwise false if any characters in text are not supported in the typeface. - /// This method does not check to see if the text contains invalid glyph indices. + /// + /// This method does not check to see if the text contains invalid glyph indices. + /// [Obsolete ($"Use {nameof (SKFont)}.{nameof (SKFont.ContainsGlyphs)}() instead.")] public bool ContainsGlyphs (byte[] text) => GetFont ().ContainsGlyphs (text, TextEncoding); @@ -1164,7 +1222,9 @@ public bool ContainsGlyphs (ReadOnlySpan text) => /// The text buffer encoded using the encoding specified in format. /// The length of the text buffer. /// Returns true if all the characters corresponds to a non-zero glyph index, otherwise false if any characters in text are not supported in the typeface. - /// This method does not check to see if the text contains invalid glyph indices. + /// + /// This method does not check to see if the text contains invalid glyph indices. + /// [Obsolete ($"Use {nameof (SKFont)}.{nameof (SKFont.ContainsGlyphs)}() instead.")] public bool ContainsGlyphs (IntPtr text, int length) => GetFont ().ContainsGlyphs (text, length, TextEncoding); @@ -1175,7 +1235,9 @@ public bool ContainsGlyphs (IntPtr text, int length) => /// The text buffer encoded using the encoding specified in format. /// The length of the text buffer. /// Returns true if all the characters corresponds to a non-zero glyph index, otherwise false if any characters in text are not supported in the typeface. - /// This method does not check to see if the text contains invalid glyph indices. + /// + /// This method does not check to see if the text contains invalid glyph indices. + /// [Obsolete ($"Use {nameof (SKFont)}.{nameof (SKFont.ContainsGlyphs)}() instead.")] public bool ContainsGlyphs (IntPtr text, IntPtr length) => GetFont ().ContainsGlyphs (text, (int)length, TextEncoding); @@ -1241,12 +1303,14 @@ public float[] GetGlyphOffsets (IntPtr text, int length, float origin = 0f) => /// /// The text. /// Returns the text advances for each glyph. - /// If is false, this method returns the + /// + /// If is false, this method returns the /// horizontal advance. If is true, this /// method returns the vertical advance. /// Uses to decode text, /// to get the font metrics, and - /// to scale the widths. + /// to scale the widths. + /// [Obsolete ($"Use {nameof (SKFont)}.{nameof (SKFont.GetGlyphWidths)}() instead.")] public float[] GetGlyphWidths (string text) => GetFont ().GetGlyphWidths (text, this); @@ -1261,12 +1325,14 @@ public float[] GetGlyphWidths (ReadOnlySpan text) => /// /// The text encoded using the encoding specified in format. /// Returns the text advances for each glyph. - /// If is false, this method returns the + /// + /// If is false, this method returns the /// horizontal advance. If is true, this /// method returns the vertical advance. /// Uses to decode text, /// to get the font metrics, and - /// to scale the widths. + /// to scale the widths. + /// [Obsolete ($"Use {nameof (SKFont)}.{nameof (SKFont.GetGlyphWidths)}() instead.")] public float[] GetGlyphWidths (byte[] text) => GetFont ().GetGlyphWidths (text, TextEncoding, this); @@ -1282,12 +1348,14 @@ public float[] GetGlyphWidths (ReadOnlySpan text) => /// The text buffer encoded using the encoding specified in format. /// The length of the text buffer. /// Returns the text advances for each glyph. - /// If is false, this method returns the + /// + /// If is false, this method returns the /// horizontal advance. If is true, this /// method returns the vertical advance. /// Uses to decode text, /// to get the font metrics, and - /// to scale the widths. + /// to scale the widths. + /// [Obsolete ($"Use {nameof (SKFont)}.{nameof (SKFont.GetGlyphWidths)}() instead.")] public float[] GetGlyphWidths (IntPtr text, int length) => GetFont ().GetGlyphWidths (text, length, TextEncoding, this); @@ -1298,12 +1366,14 @@ public float[] GetGlyphWidths (IntPtr text, int length) => /// The text buffer encoded using the encoding specified in format. /// The length of the text buffer. /// Returns the text advances for each glyph. - /// If is false, this method returns the + /// + /// If is false, this method returns the /// horizontal advance. If is true, this /// method returns the vertical advance. /// Uses to decode text, /// to get the font metrics, and - /// to scale the widths. + /// to scale the widths. + /// [Obsolete ($"Use {nameof (SKFont)}.{nameof (SKFont.GetGlyphWidths)}() instead.")] public float[] GetGlyphWidths (IntPtr text, IntPtr length) => GetFont ().GetGlyphWidths (text, (int)length, TextEncoding, this); @@ -1314,12 +1384,14 @@ public float[] GetGlyphWidths (IntPtr text, IntPtr length) => /// The text. /// The bounds for each glyph relative to (0, 0). /// Returns the text advances for each glyph. - /// If is false, this method returns the + /// + /// If is false, this method returns the /// horizontal advance. If is true, this /// method returns the vertical advance. /// Uses to decode text, /// to get the font metrics, and - /// to scale the widths and bounds. + /// to scale the widths and bounds. + /// [Obsolete ($"Use {nameof (SKFont)}.{nameof (SKFont.GetGlyphWidths)}() instead.")] public float[] GetGlyphWidths (string text, out SKRect[] bounds) => GetFont ().GetGlyphWidths (text, out bounds, this); @@ -1336,12 +1408,14 @@ public float[] GetGlyphWidths (ReadOnlySpan text, out SKRect[] bounds) => /// The text encoded using the encoding specified in format. /// The bounds for each glyph relative to (0, 0). /// Returns the text advances for each glyph. - /// If is false, this method returns the + /// + /// If is false, this method returns the /// horizontal advance. If is true, this /// method returns the vertical advance. /// Uses to decode text, /// to get the font metrics, and - /// to scale the widths and bounds. + /// to scale the widths and bounds. + /// [Obsolete ($"Use {nameof (SKFont)}.{nameof (SKFont.GetGlyphWidths)}() instead.")] public float[] GetGlyphWidths (byte[] text, out SKRect[] bounds) => GetFont ().GetGlyphWidths (text, TextEncoding, out bounds, this); @@ -1359,12 +1433,14 @@ public float[] GetGlyphWidths (ReadOnlySpan text, out SKRect[] bounds) => /// The length of the text buffer. /// The bounds for each glyph relative to (0, 0). /// Returns the text advances for each glyph. - /// If is false, this method returns the + /// + /// If is false, this method returns the /// horizontal advance. If is true, this /// method returns the vertical advance. /// Uses to decode text, /// to get the font metrics, and - /// to scale the widths and bounds. + /// to scale the widths and bounds. + /// [Obsolete ($"Use {nameof (SKFont)}.{nameof (SKFont.GetGlyphWidths)}() instead.")] public float[] GetGlyphWidths (IntPtr text, int length, out SKRect[] bounds) => GetFont ().GetGlyphWidths (text, length, TextEncoding, out bounds, this); @@ -1376,12 +1452,14 @@ public float[] GetGlyphWidths (IntPtr text, int length, out SKRect[] bounds) => /// The length of the text buffer. /// The bounds for each glyph relative to (0, 0). /// Returns the text advances for each glyph. - /// If is false, this method returns the + /// + /// If is false, this method returns the /// horizontal advance. If is true, this /// method returns the vertical advance. /// Uses to decode text, /// to get the font metrics, and - /// to scale the widths and bounds. + /// to scale the widths and bounds. + /// [Obsolete ($"Use {nameof (SKFont)}.{nameof (SKFont.GetGlyphWidths)}() instead.")] public float[] GetGlyphWidths (IntPtr text, IntPtr length, out SKRect[] bounds) => GetFont ().GetGlyphWidths (text, (int)length, TextEncoding, out bounds, this); @@ -1397,10 +1475,12 @@ public float[] GetGlyphWidths (IntPtr text, IntPtr length, out SKRect[] bounds) /// The upper line parallel to the advance. /// The lower line parallel to the advance. /// Returns the intersections of two parallel lines and the glyphs. - /// Uses to decode text, + /// + /// Uses to decode text, /// to get the font metrics, and /// , - /// and to scale and modify the glyph paths. + /// and to scale and modify the glyph paths. + /// [Obsolete ($"Use {nameof (SKTextBlob)}.{nameof (SKTextBlob.GetIntercepts)}() instead.")] public float[] GetTextIntercepts (string text, float x, float y, float upperBounds, float lowerBounds) => GetTextIntercepts (text.AsSpan (), x, y, upperBounds, lowerBounds); @@ -1429,10 +1509,12 @@ public float[] GetTextIntercepts (ReadOnlySpan text, float x, float y, flo /// The upper line parallel to the advance. /// The lower line parallel to the advance. /// Returns the intersections of two parallel lines and the glyphs. - /// Uses to decode text, + /// + /// Uses to decode text, /// to get the font metrics, and /// , - /// and to scale and modify the glyph paths. + /// and to scale and modify the glyph paths. + /// [Obsolete ($"Use {nameof (SKTextBlob)}.{nameof (SKTextBlob.GetIntercepts)}() instead.")] public float[] GetTextIntercepts (byte[] text, float x, float y, float upperBounds, float lowerBounds) => GetTextIntercepts (text.AsSpan (), x, y, upperBounds, lowerBounds); @@ -1462,10 +1544,12 @@ public float[] GetTextIntercepts (ReadOnlySpan text, float x, float y, flo /// The upper line parallel to the advance. /// The lower line parallel to the advance. /// Returns the intersections of two parallel lines and the glyphs. - /// Uses to decode text, + /// + /// Uses to decode text, /// to get the font metrics, and /// , - /// and to scale and modify the glyph paths. + /// and to scale and modify the glyph paths. + /// [Obsolete ($"Use {nameof (SKTextBlob)}.{nameof (SKTextBlob.GetIntercepts)}() instead.")] public float[] GetTextIntercepts (IntPtr text, IntPtr length, float x, float y, float upperBounds, float lowerBounds) => GetTextIntercepts (text, (int)length, x, y, upperBounds, lowerBounds); @@ -1480,10 +1564,12 @@ public float[] GetTextIntercepts (IntPtr text, IntPtr length, float x, float y, /// The upper line parallel to the advance. /// The lower line parallel to the advance. /// Returns the intersections of two parallel lines and the glyphs. - /// Uses to decode text, + /// + /// Uses to decode text, /// to get the font metrics, and /// , - /// and to scale and modify the glyph paths. + /// and to scale and modify the glyph paths. + /// [Obsolete ($"Use {nameof (SKTextBlob)}.{nameof (SKTextBlob.GetIntercepts)}() instead.")] public float[] GetTextIntercepts (IntPtr text, int length, float x, float y, float upperBounds, float lowerBounds) { @@ -1503,10 +1589,12 @@ public float[] GetTextIntercepts (IntPtr text, int length, float x, float y, flo /// The upper line parallel to the advance. /// The lower line parallel to the advance. /// Returns the intersections of two parallel lines and the glyphs. - /// Uses to decode text, + /// + /// Uses to decode text, /// to get the font metrics, and /// , - /// and to scale and modify the glyph paths. + /// and to scale and modify the glyph paths. + /// [Obsolete ($"Use {nameof (SKTextBlob)}.{nameof (SKTextBlob.GetIntercepts)}() instead.")] public float[] GetTextIntercepts (SKTextBlob text, float upperBounds, float lowerBounds) { @@ -1526,10 +1614,12 @@ public float[] GetTextIntercepts (SKTextBlob text, float upperBounds, float lowe /// The upper line parallel to the advance. /// The lower line parallel to the advance. /// Returns the intersections of two parallel lines and the glyphs. - /// Uses to decode text, + /// + /// Uses to decode text, /// to get the font metrics, and /// , - /// and to scale and modify the glyph paths. + /// and to scale and modify the glyph paths. + /// [Obsolete ($"Use {nameof (SKTextBlob)}.{nameof (SKTextBlob.GetIntercepts)}() instead.")] public float[] GetPositionedTextIntercepts (string text, SKPoint[] positions, float upperBounds, float lowerBounds) => GetPositionedTextIntercepts (text.AsSpan (), positions, upperBounds, lowerBounds); @@ -1556,10 +1646,12 @@ public float[] GetPositionedTextIntercepts (ReadOnlySpan text, ReadOnlySpa /// The upper line parallel to the advance. /// The lower line parallel to the advance. /// Returns the intersections of two parallel lines and the glyphs. - /// Uses to decode text, + /// + /// Uses to decode text, /// to get the font metrics, and /// , - /// and to scale and modify the glyph paths. + /// and to scale and modify the glyph paths. + /// [Obsolete ($"Use {nameof (SKTextBlob)}.{nameof (SKTextBlob.GetIntercepts)}() instead.")] public float[] GetPositionedTextIntercepts (byte[] text, SKPoint[] positions, float upperBounds, float lowerBounds) => GetPositionedTextIntercepts (text.AsSpan (), positions, upperBounds, lowerBounds); @@ -1587,10 +1679,12 @@ public float[] GetPositionedTextIntercepts (ReadOnlySpan text, ReadOnlySpa /// The upper line parallel to the advance. /// The lower line parallel to the advance. /// Returns the intersections of two parallel lines and the glyphs. - /// Uses to decode text, + /// + /// Uses to decode text, /// to get the font metrics, and /// , - /// and to scale and modify the glyph paths. + /// and to scale and modify the glyph paths. + /// [Obsolete ($"Use {nameof (SKTextBlob)}.{nameof (SKTextBlob.GetIntercepts)}() instead.")] public float[] GetPositionedTextIntercepts (IntPtr text, int length, SKPoint[] positions, float upperBounds, float lowerBounds) => GetPositionedTextIntercepts (text, (IntPtr)length, positions, upperBounds, lowerBounds); @@ -1604,10 +1698,12 @@ public float[] GetPositionedTextIntercepts (IntPtr text, int length, SKPoint[] p /// The upper line parallel to the advance. /// The lower line parallel to the advance. /// Returns the intersections of two parallel lines and the glyphs. - /// Uses to decode text, + /// + /// Uses to decode text, /// to get the font metrics, and /// , - /// and to scale and modify the glyph paths. + /// and to scale and modify the glyph paths. + /// [Obsolete ($"Use {nameof (SKTextBlob)}.{nameof (SKTextBlob.GetIntercepts)}() instead.")] public float[] GetPositionedTextIntercepts (IntPtr text, IntPtr length, SKPoint[] positions, float upperBounds, float lowerBounds) { @@ -1629,10 +1725,12 @@ public float[] GetPositionedTextIntercepts (IntPtr text, IntPtr length, SKPoint[ /// The upper line parallel to the advance. /// The lower line parallel to the advance. /// Returns the intersections of two parallel lines and the glyphs. - /// Uses to decode text, + /// + /// Uses to decode text, /// to get the font metrics, and /// , - /// and to scale and modify the glyph paths. + /// and to scale and modify the glyph paths. + /// [Obsolete ($"Use {nameof (SKTextBlob)}.{nameof (SKTextBlob.GetIntercepts)}() instead.")] public float[] GetHorizontalTextIntercepts (string text, float[] xpositions, float y, float upperBounds, float lowerBounds) => GetHorizontalTextIntercepts (text.AsSpan (), xpositions, y, upperBounds, lowerBounds); @@ -1661,10 +1759,12 @@ public float[] GetHorizontalTextIntercepts (ReadOnlySpan text, ReadOnlySpa /// The upper line parallel to the advance. /// The lower line parallel to the advance. /// Returns the intersections of two parallel lines and the glyphs. - /// Uses to decode text, + /// + /// Uses to decode text, /// to get the font metrics, and /// , - /// and to scale and modify the glyph paths. + /// and to scale and modify the glyph paths. + /// [Obsolete ($"Use {nameof (SKTextBlob)}.{nameof (SKTextBlob.GetIntercepts)}() instead.")] public float[] GetHorizontalTextIntercepts (byte[] text, float[] xpositions, float y, float upperBounds, float lowerBounds) => GetHorizontalTextIntercepts (text.AsSpan (), xpositions, y, upperBounds, lowerBounds); @@ -1694,10 +1794,12 @@ public float[] GetHorizontalTextIntercepts (ReadOnlySpan text, ReadOnlySpa /// The upper line parallel to the advance. /// The lower line parallel to the advance. /// Returns the intersections of two parallel lines and the glyphs. - /// Uses to decode text, + /// + /// Uses to decode text, /// to get the font metrics, and /// , - /// and to scale and modify the glyph paths. + /// and to scale and modify the glyph paths. + /// [Obsolete ($"Use {nameof (SKTextBlob)}.{nameof (SKTextBlob.GetIntercepts)}() instead.")] public float[] GetHorizontalTextIntercepts (IntPtr text, int length, float[] xpositions, float y, float upperBounds, float lowerBounds) => GetHorizontalTextIntercepts (text, (IntPtr)length, xpositions, y, upperBounds, lowerBounds); @@ -1712,10 +1814,12 @@ public float[] GetHorizontalTextIntercepts (IntPtr text, int length, float[] xpo /// The upper line parallel to the advance. /// The lower line parallel to the advance. /// Returns the intersections of two parallel lines and the glyphs. - /// Uses to decode text, + /// + /// Uses to decode text, /// to get the font metrics, and /// , - /// and to scale and modify the glyph paths. + /// and to scale and modify the glyph paths. + /// [Obsolete ($"Use {nameof (SKTextBlob)}.{nameof (SKTextBlob.GetIntercepts)}() instead.")] public float[] GetHorizontalTextIntercepts (IntPtr text, IntPtr length, float[] xpositions, float y, float upperBounds, float lowerBounds) { diff --git a/binding/SkiaSharp/SKPath.cs b/binding/SkiaSharp/SKPath.cs index ab67de1303..0c4fca7756 100644 --- a/binding/SkiaSharp/SKPath.cs +++ b/binding/SkiaSharp/SKPath.cs @@ -27,7 +27,9 @@ public enum SKPathConvexity /// /// A compound geometric path. /// - /// A path encapsulates compound (multiple contour) geometric paths consisting of straight line segments, quadratic curves, and cubic curves. + /// + /// A path encapsulates compound (multiple contour) geometric paths consisting of straight line segments, quadratic curves, and cubic curves. + /// public unsafe class SKPath : SKObject, ISKSkipObjectRegistration { internal SKPath (IntPtr handle, bool owns) @@ -50,7 +52,9 @@ public SKPath () /// Creates a path by making a copy of an existing path. /// /// The path to clone. - /// This constructor can throw InvalidOperationException if there is a problem copying the source path. + /// + /// This constructor can throw InvalidOperationException if there is a problem copying the source path. + /// public SKPath (SKPath path) : this (SkiaApi.sk_path_clone (path.Handle), true) { @@ -68,7 +72,9 @@ protected override void DisposeNative () => /// /// Gets or sets the path's fill type. /// - /// This is used to define how "inside" is computed. The default value is . + /// + /// This is used to define how "inside" is computed. The default value is . + /// public SKPathFillType FillType { get => SkiaApi.sk_path_get_filltype (Handle); set => SkiaApi.sk_path_set_filltype (Handle, value); @@ -77,19 +83,25 @@ public SKPathFillType FillType { /// /// Gets or sets the path's convexity. /// - /// If it is currently unknown, then this function will attempt to compute the convexity (and cache the result). + /// + /// If it is currently unknown, then this function will attempt to compute the convexity (and cache the result). + /// public SKPathConvexity Convexity => IsConvex ? SKPathConvexity.Convex : SKPathConvexity.Concave; /// /// Gets a value indicating whether the path is convex. /// - /// If it is currently unknown, then this function will attempt to compute the convexity (and cache the result). + /// + /// If it is currently unknown, then this function will attempt to compute the convexity (and cache the result). + /// public bool IsConvex => SkiaApi.sk_path_is_convex (Handle); /// /// Gets a value indicating whether the path is concave. /// - /// If it is currently unknown, then this function will attempt to compute the convexity (and cache the result). + /// + /// If it is currently unknown, then this function will attempt to compute the convexity (and cache the result). + /// public bool IsConcave => !IsConvex; /// @@ -100,25 +112,33 @@ public SKPathFillType FillType { /// /// Gets a value indicating whether the path is a single oval or circle. /// - /// See also . + /// + /// See also . + /// public bool IsOval => SkiaApi.sk_path_is_oval (Handle, null); /// /// Gets a value indicating whether the path is a single, round rectangle. /// - /// See also . + /// + /// See also . + /// public bool IsRoundRect => SkiaApi.sk_path_is_rrect (Handle, IntPtr.Zero); /// /// Gets a value indicating whether the path is a single, straight line. /// - /// See also . + /// + /// See also . + /// public bool IsLine => SkiaApi.sk_path_is_line (Handle, null); /// /// Gets a value indicating whether the path is a single rectangle. /// - /// See also and . + /// + /// See also and . + /// public bool IsRect => SkiaApi.sk_path_is_rect (Handle, null, null, null); /// @@ -141,15 +161,19 @@ public SKPathFillType FillType { /// /// The point at the specified index. /// The index of the point to get. - /// If the index is out of range (i.e. is not 0 <= index < ), then the returned coordinates will be (0, 0). + /// + /// If the index is out of range (i.e. is not 0 <= index < ), then the returned coordinates will be (0, 0). + /// public SKPoint this[int index] => GetPoint (index); /// /// Gets all the points in the path. /// - /// The number of points will be , To only + /// + /// The number of points will be , To only /// return a subset of the points in the path, use - /// . + /// . + /// public SKPoint[] Points => GetPoints (PointCount); /// @@ -167,7 +191,9 @@ public SKPoint LastPoint { /// Gets the bounds of the path's points. If the path contains zero points/verbs, this will return the empty rectangle. /// /// Gets the bounds of the path's points. - /// This bounds may be larger than the actual shape, since curves do not extend as far as their control points. Additionally this bound encompasses all points, even isolated MoveTo either preceding or following the last non-degenerate contour. + /// + /// This bounds may be larger than the actual shape, since curves do not extend as far as their control points. Additionally this bound encompasses all points, even isolated MoveTo either preceding or following the last non-degenerate contour. + /// public SKRect Bounds { get { SKRect rect; @@ -194,7 +220,9 @@ public SKRect TightBounds { /// Returns the oval bounds of the path. /// /// Returns the oval bounds of the path. - /// If the path is not a single oval or circle, then an empty rectangle is returned. See also . + /// + /// If the path is not a single oval or circle, then an empty rectangle is returned. See also . + /// public SKRect GetOvalBounds () { SKRect bounds; @@ -209,7 +237,9 @@ public SKRect GetOvalBounds () /// Returns the round rectangle of the path. /// /// Returns the round rectangle of the path. - /// If the path is not a single round rectangle, then is returned. See also . + /// + /// If the path is not a single round rectangle, then is returned. See also . + /// public SKRoundRect GetRoundRect () { var rrect = new SKRoundRect (); @@ -226,7 +256,9 @@ public SKRoundRect GetRoundRect () /// Returns the two points of the path. /// /// Returns the two points of the path. - /// If the path is not a single, straight line, then is returned. See also . + /// + /// If the path is not a single, straight line, then is returned. See also . + /// public SKPoint[] GetLine () { var temp = new SKPoint[2]; @@ -244,7 +276,9 @@ public SKPoint[] GetLine () /// Returns the rectangle of the path. /// /// Returns the rectangle of the path. - /// If the path is not a single rectangle, then an empty rectangle is returned. See also . + /// + /// If the path is not a single rectangle, then an empty rectangle is returned. See also . + /// public SKRect GetRect () => GetRect (out var isClosed, out var direction); @@ -254,7 +288,9 @@ public SKRect GetRect () => /// Whether or not the rectangle is closed. /// The direction of the rectangle. /// Returns the rectangle of the path. - /// If the path is not a single rectangle, then an empty rectangle is returned. See also . + /// + /// If the path is not a single rectangle, then an empty rectangle is returned. See also . + /// public SKRect GetRect (out bool isClosed, out SKPathDirection direction) { byte c; @@ -275,7 +311,9 @@ public SKRect GetRect (out bool isClosed, out SKPathDirection direction) /// /// The index of the point to return. /// The point at the specified index. - /// If the index is out of range (i.e. is not 0 <= index < ), then the returned coordinates will be (0, 0). + /// + /// If the index is out of range (i.e. is not 0 <= index < ), then the returned coordinates will be (0, 0). + /// public SKPoint GetPoint (int index) { if (index < 0 || index >= PointCount) @@ -372,8 +410,10 @@ public void RMoveTo (float dx, float dy) => /// Add a line from the last point to the specified point (x, y). /// /// The coordinates of the end of a line. - /// If no call has been made for this contour, - /// the first point is automatically set to (0, 0). + /// + /// If no call has been made for this contour, + /// the first point is automatically set to (0, 0). + /// public void LineTo (SKPoint point) => SkiaApi.sk_path_line_to (Handle, point.X, point.Y); @@ -382,8 +422,10 @@ public void LineTo (SKPoint point) => /// /// The x-coordinate of the end of a line. /// The y-coordinate of the end of a line. - /// If no call has been made for this contour, - /// the first point is automatically set to (0, 0). + /// + /// If no call has been made for this contour, + /// the first point is automatically set to (0, 0). + /// public void LineTo (float x, float y) => SkiaApi.sk_path_line_to (Handle, x, y); @@ -391,8 +433,10 @@ public void LineTo (float x, float y) => /// Same as but the coordinates are considered relative to the last point on this contour. /// /// The amount to add to the coordinates of the last point on this contour, to specify the end of a line. - /// If no call has been made for this contour, - /// the first point is automatically set to (0, 0). + /// + /// If no call has been made for this contour, + /// the first point is automatically set to (0, 0). + /// public void RLineTo (SKPoint point) => SkiaApi.sk_path_rline_to (Handle, point.X, point.Y); @@ -401,8 +445,10 @@ public void RLineTo (SKPoint point) => /// /// The amount to add to the x-coordinate of the last point on this contour, to specify the end of a line. /// The amount to add to the y-coordinate of the last point on this contour, to specify the end of a line. - /// If no call has been made for this contour, - /// the first point is automatically set to (0, 0). + /// + /// If no call has been made for this contour, + /// the first point is automatically set to (0, 0). + /// public void RLineTo (float dx, float dy) => SkiaApi.sk_path_rline_to (Handle, dx, dy); @@ -411,10 +457,12 @@ public void RLineTo (float dx, float dy) => /// /// The coordinates of the control point on a quadratic curve. /// The coordinates of the end point on a quadratic curve. - /// Add a quadratic bezier from the last point, approaching control point + /// + /// Add a quadratic bezier from the last point, approaching control point /// (`point0`), and ending at `point1`. - /// If no call has been made for this contour, - /// the first point is automatically set to (0, 0). + /// If no call has been made for this contour, + /// the first point is automatically set to (0, 0). + /// public void QuadTo (SKPoint point0, SKPoint point1) => SkiaApi.sk_path_quad_to (Handle, point0.X, point0.Y, point1.X, point1.Y); @@ -425,10 +473,12 @@ public void QuadTo (SKPoint point0, SKPoint point1) => /// The y-coordinate of the control point on a quadratic curve. /// The x-coordinate of the end point on a quadratic curve. /// The y-coordinate of the end point on a quadratic curve. - /// Add a quadratic bezier from the last point, approaching control point + /// + /// Add a quadratic bezier from the last point, approaching control point /// (`x0`, `y0`), and ending at (`x1`, `y1`). - /// If no call has been made for this contour, - /// the first point is automatically set to (0, 0). + /// If no call has been made for this contour, + /// the first point is automatically set to (0, 0). + /// public void QuadTo (float x0, float y0, float x1, float y1) => SkiaApi.sk_path_quad_to (Handle, x0, y0, x1, y1); @@ -437,8 +487,10 @@ public void QuadTo (float x0, float y0, float x1, float y1) => /// /// The amount to add to the coordinates of the last point on this contour, to specify the control point on a quadratic curve. /// The amount to add to the coordinates of the last point on this contour, to specify end point on a quadratic curve. - /// If no call has been made for this contour, - /// the first point is automatically set to (0, 0). + /// + /// If no call has been made for this contour, + /// the first point is automatically set to (0, 0). + /// public void RQuadTo (SKPoint point0, SKPoint point1) => SkiaApi.sk_path_rquad_to (Handle, point0.X, point0.Y, point1.X, point1.Y); @@ -449,8 +501,10 @@ public void RQuadTo (SKPoint point0, SKPoint point1) => /// The amount to add to the y-coordinate of the last point on this contour, to specify the control point on a quadratic curve. /// The amount to add to the x-coordinate of the last point on this contour, to specify end point on a quadratic curve. /// The amount to add to the y-coordinate of the last point on this contour, to specify end point on a quadratic curve. - /// If no call has been made for this contour, - /// the first point is automatically set to (0, 0). + /// + /// If no call has been made for this contour, + /// the first point is automatically set to (0, 0). + /// public void RQuadTo (float dx0, float dy0, float dx1, float dy1) => SkiaApi.sk_path_rquad_to (Handle, dx0, dy0, dx1, dy1); @@ -460,8 +514,10 @@ public void RQuadTo (float dx0, float dy0, float dx1, float dy1) => /// The coordinates of the control point of the conic curve. /// The coordinates of the end point of the conic curve. /// The weight of the conic curve. - /// If no call has been made for this contour, - /// the first point is automatically set to (0, 0). + /// + /// If no call has been made for this contour, + /// the first point is automatically set to (0, 0). + /// public void ConicTo (SKPoint point0, SKPoint point1, float w) => SkiaApi.sk_path_conic_to (Handle, point0.X, point0.Y, point1.X, point1.Y, w); @@ -473,8 +529,10 @@ public void ConicTo (SKPoint point0, SKPoint point1, float w) => /// The x-coordinate of the end point of the conic curve. /// The y-coordinate of the end point of the conic curve. /// The weight of the conic curve. - /// If no call has been made for this contour, - /// the first point is automatically set to (0, 0). + /// + /// If no call has been made for this contour, + /// the first point is automatically set to (0, 0). + /// public void ConicTo (float x0, float y0, float x1, float y1, float w) => SkiaApi.sk_path_conic_to (Handle, x0, y0, x1, y1, w); @@ -484,8 +542,10 @@ public void ConicTo (float x0, float y0, float x1, float y1, float w) => /// The amount to add to the coordinates of the last point on this contour, to specify the control point of the conic curve. /// The amount to add to the coordinates of the last point on this contour, to specify the end point of the conic curve. /// The weight of the conic curve. - /// If no call has been made for this contour, - /// the first point is automatically set to (0, 0). + /// + /// If no call has been made for this contour, + /// the first point is automatically set to (0, 0). + /// public void RConicTo (SKPoint point0, SKPoint point1, float w) => SkiaApi.sk_path_rconic_to (Handle, point0.X, point0.Y, point1.X, point1.Y, w); @@ -497,8 +557,10 @@ public void RConicTo (SKPoint point0, SKPoint point1, float w) => /// The amount to add to the x-coordinate of the last point on this contour, to specify the end point of the conic curve. /// The amount to add to the y-coordinate of the last point on this contour, to specify the end point of the conic curve. /// The weight of the conic curve. - /// If no call has been made for this contour, - /// the first point is automatically set to (0, 0). + /// + /// If no call has been made for this contour, + /// the first point is automatically set to (0, 0). + /// public void RConicTo (float dx0, float dy0, float dx1, float dy1, float w) => SkiaApi.sk_path_rconic_to (Handle, dx0, dy0, dx1, dy1, w); @@ -508,8 +570,10 @@ public void RConicTo (float dx0, float dy0, float dx1, float dy1, float w) => /// The coordinates of the 1st control point on a cubic curve. /// The coordinates of the 2nd control point on a cubic curve. /// The coordinates of the end point on a cubic curve. - /// If no call has been made for this contour, - /// the first point is automatically set to (0, 0). + /// + /// If no call has been made for this contour, + /// the first point is automatically set to (0, 0). + /// public void CubicTo (SKPoint point0, SKPoint point1, SKPoint point2) => SkiaApi.sk_path_cubic_to (Handle, point0.X, point0.Y, point1.X, point1.Y, point2.X, point2.Y); @@ -522,8 +586,10 @@ public void CubicTo (SKPoint point0, SKPoint point1, SKPoint point2) => /// The y-coordinate of the 2nd control point on a cubic curve. /// The x-coordinate of the end point on a cubic curve. /// The y-coordinate of the end point on a cubic curve. - /// If no call has been made for this contour, - /// the first point is automatically set to (0, 0). + /// + /// If no call has been made for this contour, + /// the first point is automatically set to (0, 0). + /// public void CubicTo (float x0, float y0, float x1, float y1, float x2, float y2) => SkiaApi.sk_path_cubic_to (Handle, x0, y0, x1, y1, x2, y2); @@ -533,8 +599,10 @@ public void CubicTo (float x0, float y0, float x1, float y1, float x2, float y2) /// The amount to add to the coordinates of the last point on this contour, to specify the 1st control point on a cubic curve. /// The amount to add to the coordinates of the last point on this contour, to specify the 2nd control point on a cubic curve. /// The amount to add to the coordinates of the last point on this contour, to specify the end point on a cubic curve. - /// If no call has been made for this contour, - /// the first point is automatically set to (0, 0). + /// + /// If no call has been made for this contour, + /// the first point is automatically set to (0, 0). + /// public void RCubicTo (SKPoint point0, SKPoint point1, SKPoint point2) => SkiaApi.sk_path_rcubic_to (Handle, point0.X, point0.Y, point1.X, point1.Y, point2.X, point2.Y); @@ -547,8 +615,10 @@ public void RCubicTo (SKPoint point0, SKPoint point1, SKPoint point2) => /// The amount to add to the y-coordinate of the last point on this contour, to specify the 2nd control point on a cubic curve. /// The amount to add to the x-coordinate of the last point on this contour, to specify the end point on a cubic curve. /// The amount to add to the y-coordinate of the last point on this contour, to specify the end point on a cubic curve. - /// If no call has been made for this contour, - /// the first point is automatically set to (0, 0). + /// + /// If no call has been made for this contour, + /// the first point is automatically set to (0, 0). + /// public void RCubicTo (float dx0, float dy0, float dx1, float dy1, float dx2, float dy2) => SkiaApi.sk_path_rcubic_to (Handle, dx0, dy0, dx1, dy1, dx2, dy2); @@ -583,10 +653,12 @@ public void ArcTo (float rx, float ry, float xAxisRotate, SKPathArcSize largeArc /// The starting angle (in degrees) where the arc begins. /// The sweep angle (in degrees) measured clockwise. /// Whether to always begin a new contour with the arc. - /// If the start of the arc is different from the path's current last point, then - /// an automatic is added to connect the current + /// + /// If the start of the arc is different from the path's current last point, then + /// an automatic is added to connect the current /// contour to the start of the arc. However, if the path is empty, then we call - /// with the first point of the arc. + /// with the first point of the arc. + /// public void ArcTo (SKRect oval, float startAngle, float sweepAngle, bool forceMoveTo) => SkiaApi.sk_path_arc_to_with_oval (Handle, &oval, startAngle, sweepAngle, forceMoveTo); @@ -596,7 +668,9 @@ public void ArcTo (SKRect oval, float startAngle, float sweepAngle, bool forceMo /// The corner coordinates. /// The destination coordinates. /// The corner radius. - /// This is the same as the PostScript call "arct". + /// + /// This is the same as the PostScript call "arct". + /// public void ArcTo (SKPoint point1, SKPoint point2, float radius) => SkiaApi.sk_path_arc_to_with_points (Handle, point1.X, point1.Y, point2.X, point2.Y, radius); @@ -608,7 +682,9 @@ public void ArcTo (SKPoint point1, SKPoint point2, float radius) => /// The destination x-coordinate. /// The destination y-coordinate. /// The corner radius. - /// This is the same as the PostScript call "arct". + /// + /// This is the same as the PostScript call "arct". + /// public void ArcTo (float x1, float y1, float x2, float y2, float radius) => SkiaApi.sk_path_arc_to_with_points (Handle, x1, y1, x2, y2, radius); @@ -639,21 +715,27 @@ public void RArcTo (float rx, float ry, float xAxisRotate, SKPathArcSize largeAr /// /// Closes the current contour. /// - /// If the current point is not equal to the first point of the contour, a line segment is automatically added. + /// + /// If the current point is not equal to the first point of the contour, a line segment is automatically added. + /// public void Close () => SkiaApi.sk_path_close (Handle); /// /// Clear any lines and curves from the path, making it empty. /// - /// Any internal storage for those lines/curves is retained, making reuse of the path potentially faster. + /// + /// Any internal storage for those lines/curves is retained, making reuse of the path potentially faster. + /// public void Rewind () => SkiaApi.sk_path_rewind (Handle); /// /// Clear any lines and curves from the path, making it empty. /// - /// This frees up internal storage associated with those segments. + /// + /// This frees up internal storage associated with those segments. + /// public void Reset () => SkiaApi.sk_path_reset (Handle); @@ -671,7 +753,9 @@ public void AddRect (SKRect rect, SKPathDirection direction = SKPathDirection.Cl /// The rectangle to add as a closed contour to the path /// The direction to wind the rectangle's contour. /// Initial point of the contour (initial ), expressed as a corner index, starting in the upper-left position, clock-wise. Must be in the range of 0..3. - /// Add a closed rectangle contour to the path with an initial point of the contour (startIndex) expressed as a corner index. + /// + /// Add a closed rectangle contour to the path with an initial point of the contour (startIndex) expressed as a corner index. + /// public void AddRect (SKRect rect, SKPathDirection direction, uint startIndex) { if (startIndex > 3) @@ -727,7 +811,9 @@ public void AddArc (SKRect oval, float startAngle, float sweepAngle) => /// /// The bounds, if the path contains any points. /// Returns true if the path is not empty, otherwise false. - /// This bounds may be larger than the actual shape, since curves do not extend as far as their control points. Additionally this bound encompasses all points, even isolated MoveTo either preceding or following the last non-degenerate contour. + /// + /// This bounds may be larger than the actual shape, since curves do not extend as far as their control points. Additionally this bound encompasses all points, even isolated MoveTo either preceding or following the last non-degenerate contour. + /// public bool GetBounds (out SKRect rect) { var isEmpty = IsEmpty; @@ -745,7 +831,9 @@ public bool GetBounds (out SKRect rect) /// Computes a bounds that is conservatively "snug" around the path. /// /// Returns the bounds. - /// This assumes that the path will be filled.It does not attempt to collapse away contours that are logically empty (e.g. MoveTo(x, y) + LineTo(x, y)) but will include them in the calculation. + /// + /// This assumes that the path will be filled.It does not attempt to collapse away contours that are logically empty (e.g. MoveTo(x, y) + LineTo(x, y)) but will include them in the calculation. + /// public SKRect ComputeTightBounds () { SKRect rect; @@ -888,9 +976,11 @@ public void AddPoly (SKPoint[] points, bool close = true) /// /// When this is true, each contour (as defined by a new starting move command) will be completed with a close verb regardless of the contour's contents. /// Returns an object that can be used to iterate over the various elements of the path. - /// This iterator is able to clean up the path as the values are returned. If you + /// + /// This iterator is able to clean up the path as the values are returned. If you /// do not desire to get verbs that have been cleaned up, use the - /// method instead. + /// method instead. + /// public Iterator CreateIterator (bool forceClose) => new Iterator (this, forceClose); @@ -898,9 +988,11 @@ public Iterator CreateIterator (bool forceClose) => /// Creates a raw iterator object to scan the all of the segments (lines, quadratics, cubics) of each contours in a path. /// /// Returns an object that can be used to iterate over the various elements of the path. - /// Unlike the method, this iterator + /// + /// Unlike the method, this iterator /// does not clean up or normalize the values in the path. It returns the raw - /// elements contained in the path. + /// elements contained in the path. + /// public RawIterator CreateRawIterator () => new RawIterator (this); @@ -943,7 +1035,9 @@ public SKPath Op (SKPath other, SKPathOp op) /// /// The path to store the simplified path data. If simplification failed, then this is unmodified. /// Returns true if simplification was successful, otherwise false. - /// The curve order is reduced where possible so that cubics may be turned into quadratics, and quadratics maybe turned into lines. + /// + /// The curve order is reduced where possible so that cubics may be turned into quadratics, and quadratics maybe turned into lines. + /// public bool Simplify (SKPath result) { if (result == null) @@ -956,7 +1050,9 @@ public bool Simplify (SKPath result) /// Return a simplified copy of the current path. /// /// Returns the new path if simplification was successful, otherwise null. - /// The curve order is reduced where possible so that cubics may be turned into quadratics, and quadratics maybe turned into lines. + /// + /// The curve order is reduced where possible so that cubics may be turned into quadratics, and quadratics maybe turned into lines. + /// public SKPath Simplify () { var result = new SKPath (); @@ -969,7 +1065,7 @@ public SKPath Simplify () } /// - /// Gets the "tight" bounds of the path. Unlike , the control points of curves are excluded. + /// Gets the "tight" bounds of the path. Unlike , the control points of curves are excluded. /// /// The tight bounds of the path. /// Returns true if the bounds could be computed, otherwise false. @@ -1069,7 +1165,9 @@ public static int ConvertConicToQuads (SKPoint p0, SKPoint p1, SKPoint p2, float /// The collection to store the points. /// The tolerance to use (1 << pow2). /// Returns the number of quads. - /// The amount of storage needed for pts is: 1 + 2 * (1 << pow2) + /// + /// The amount of storage needed for pts is: 1 + 2 * (1 << pow2) + /// public static int ConvertConicToQuads (SKPoint p0, SKPoint p1, SKPoint p2, float w, SKPoint[] pts, int pow2) { if (pts == null) @@ -1089,8 +1187,10 @@ internal static SKPath GetObject (IntPtr handle, bool owns = true) => /// /// Iterator object to scan the all of the segments (lines, quadratics, cubics) of each contours in a path. /// - /// Iterators are created by calling the - /// method. + /// + /// Iterators are created by calling the + /// method. + /// public class Iterator : SKObject, ISKSkipObjectRegistration { private readonly SKPath path; @@ -1127,8 +1227,10 @@ public SKPathVerb Next (Span points) /// /// Return the weight for the current conic. /// - /// Only valid if the current segment return by - /// was . + /// + /// Only valid if the current segment return by + /// was . + /// public float ConicWeight () => SkiaApi.sk_path_iter_conic_weight (Handle); @@ -1136,7 +1238,9 @@ public float ConicWeight () => /// Returns a value indicating whether the last call to returns a line which was the result of a command. /// /// Returns true if the last call to returned a line which was the result of a command. - /// If the call to returned a different value than , the result is undefined. + /// + /// If the call to returned a different value than , the result is undefined. + /// public bool IsCloseLine () => SkiaApi.sk_path_iter_is_close_line (Handle) != 0; @@ -1151,9 +1255,11 @@ public bool IsCloseContour () => /// /// Iterator object to scan through the verbs in the path, providing the associated points. /// - /// Iterators are created by calling the - /// - /// method. + /// + /// Iterators are created by calling the + /// + /// method. + /// public class RawIterator : SKObject, ISKSkipObjectRegistration { private readonly SKPath path; @@ -1193,7 +1299,9 @@ public SKPathVerb Next (Span points) /// /// Returns the weight for the current conic. /// - /// Only valid if the current segment returned by was . + /// + /// Only valid if the current segment returned by was . + /// public float ConicWeight () => SkiaApi.sk_path_rawiter_conic_weight (Handle); @@ -1223,7 +1331,9 @@ public OpBuilder () /// /// The second operand. /// The operator to apply to the existing and supplied paths. - /// The builder is empty before the first path is added, so the result of a single add is ("empty-path" OP "path"). + /// + /// The builder is empty before the first path is added, so the result of a single add is ("empty-path" OP "path"). + /// public void Add (SKPath path, SKPathOp op) => SkiaApi.sk_opbuilder_add (Handle, path.Handle, op); diff --git a/binding/SkiaSharp/SKPathEffect.cs b/binding/SkiaSharp/SKPathEffect.cs index 1124eccd39..4c89c052c7 100644 --- a/binding/SkiaSharp/SKPathEffect.cs +++ b/binding/SkiaSharp/SKPathEffect.cs @@ -23,7 +23,9 @@ protected override void Dispose (bool disposing) => /// The outer (second) path effect to apply. /// The inner (first) path effect to apply. /// Returns the new , or null on error. - /// The effect is to apply first the inner path effect and the the outer path effect (e.g. outer(inner(path))). + /// + /// The effect is to apply first the inner path effect and the the outer path effect (e.g. outer(inner(path))). + /// public static SKPathEffect CreateCompose(SKPathEffect outer, SKPathEffect inner) { if (outer == null) @@ -39,7 +41,9 @@ public static SKPathEffect CreateCompose(SKPathEffect outer, SKPathEffect inner) /// The first path effect to apply. /// The second path effect to apply. /// Returns the new , or null on error. - /// The effect is to apply one path after the other. + /// + /// The effect is to apply one path after the other. + /// public static SKPathEffect CreateSum(SKPathEffect first, SKPathEffect second) { if (first == null) @@ -116,7 +120,9 @@ public static SKPathEffect Create2DPath(SKMatrix matrix, SKPath path) /// The definition of the dash pattern via an even number of entries. /// The offset into the intervals array. (mod the sum of all of the intervals). /// Returns the new , or null on error. - /// The dash pattern is defined via an array containing an even number of entries (>=2), with the even indices specifying the length of "on" intervals, and the odd indices specifying the length of "off" intervals.For example: if the intervals = new [] { 10, 20 } and the phase = 25, then the dash pattern will be: 5 pixels off, 10 pixels on, 20 pixels off, 10 pixels on, 20 pixels off, etc. A phase of -5, 25, 55, 85, etc. would all result in the same path, because the sum of all the intervals is 30. + /// + /// The dash pattern is defined via an array containing an even number of entries (>=2), with the even indices specifying the length of "on" intervals, and the odd indices specifying the length of "off" intervals.For example: if the intervals = new [] { 10, 20 } and the phase = 25, then the dash pattern will be: 5 pixels off, 10 pixels on, 20 pixels off, 10 pixels on, 20 pixels off, etc. A phase of -5, 25, 55, 85, etc. would all result in the same path, because the sum of all the intervals is 30. + /// public static SKPathEffect CreateDash(float[] intervals, float phase) { if (intervals == null) @@ -134,7 +140,9 @@ public static SKPathEffect CreateDash(float[] intervals, float phase) /// The start path offset between [0, 1] - inclusive. /// The stop path offset between [0, 1] - inclusive. /// Returns the new , or null on error. - /// If either the start or stop values are outside the [0, 1] range (inclusive), they will be pinned to the nearest legal value. + /// + /// If either the start or stop values are outside the [0, 1] range (inclusive), they will be pinned to the nearest legal value. + /// public static SKPathEffect CreateTrim(float start, float stop) { return CreateTrim(start, stop, SKTrimPathEffectMode.Normal); @@ -147,7 +155,9 @@ public static SKPathEffect CreateTrim(float start, float stop) /// The stop path offset between [0, 1] - inclusive. /// The trim mode to use. /// Returns the new , or null on error. - /// If either the start or stop values are outside the [0, 1] range (inclusive), they will be pinned to the nearest legal value. + /// + /// If either the start or stop values are outside the [0, 1] range (inclusive), they will be pinned to the nearest legal value. + /// public static SKPathEffect CreateTrim(float start, float stop, SKTrimPathEffectMode mode) { return GetObject(SkiaApi.sk_path_effect_create_trim(start, stop, mode)); diff --git a/binding/SkiaSharp/SKPathMeasure.cs b/binding/SkiaSharp/SKPathMeasure.cs index 3e4980a68b..7d47e04eea 100644 --- a/binding/SkiaSharp/SKPathMeasure.cs +++ b/binding/SkiaSharp/SKPathMeasure.cs @@ -31,7 +31,9 @@ public SKPathMeasure () /// The path to use, or null. /// Controls whether or not the path is treated as closed. /// Controls the precision of the measure. Values greater 1 increase the precision (and possibly slow down the computation). - /// The path must remain valid for the lifetime of the measure object, or until is called with a different path (or null), since the measure object keeps a reference to the path object (does not copy its data). + /// + /// The path must remain valid for the lifetime of the measure object, or until is called with a different path (or null), since the measure object keeps a reference to the path object (does not copy its data). + /// public SKPathMeasure (SKPath path, bool forceClosed = false, float resScale = 1) : this (IntPtr.Zero, true) { @@ -84,7 +86,9 @@ public void SetPath (SKPath path) => /// /// The path to use, or null. /// Controls whether or not the path is treated as closed. - /// The path must remain valid for the lifetime of the measure object, or until is called with a different path (or null), since the measure object keeps a reference to the path object (does not copy its data). + /// + /// The path must remain valid for the lifetime of the measure object, or until is called with a different path (or null), since the measure object keeps a reference to the path object (does not copy its data). + /// public void SetPath (SKPath path, bool forceClosed) { SkiaApi.sk_pathmeasure_set_path (Handle, path == null ? IntPtr.Zero : path.Handle, forceClosed); @@ -99,7 +103,9 @@ public void SetPath (SKPath path, bool forceClosed) /// The position of a point along the current contour. /// The tangent along the current contour. /// Returns false if there is no path, or a zero-length path was specified, in which case position and tangent are unchanged. - /// Distance is pinned to 0 <= distance <= . + /// + /// Distance is pinned to 0 <= distance <= . + /// public bool GetPositionAndTangent (float distance, out SKPoint position, out SKPoint tangent) { fixed (SKPoint* p = &position) @@ -124,7 +130,9 @@ public SKPoint GetPosition (float distance) /// The distance to use. /// The position of a point along the current contour. /// Returns false if there is no path, or a zero-length path was specified, in which case position is unchanged. - /// Distance is pinned to 0 <= distance <= . + /// + /// Distance is pinned to 0 <= distance <= . + /// public bool GetPosition (float distance, out SKPoint position) { fixed (SKPoint* p = &position) { @@ -148,7 +156,9 @@ public SKPoint GetTangent (float distance) /// The distance to use. /// The tangent along the current contour. /// Returns false if there is no path, or a zero-length path was specified, in which case position and tangent are unchanged. - /// Distance is pinned to 0 <= distance <= . + /// + /// Distance is pinned to 0 <= distance <= . + /// public bool GetTangent (float distance, out SKPoint tangent) { fixed (SKPoint* t = &tangent) { @@ -174,7 +184,9 @@ public SKMatrix GetMatrix (float distance, SKPathMeasureMatrixFlags flags) /// The computed matrix. /// Flags to indicate how to compute the matrix. /// Returns false if there is no path, or a zero-length path was specified, in which case matrix is unchanged. - /// Distance is pinned to 0 <= distance <= . + /// + /// Distance is pinned to 0 <= distance <= . + /// public bool GetMatrix (float distance, out SKMatrix matrix, SKPathMeasureMatrixFlags flags) { fixed (SKMatrix* m = &matrix) { @@ -192,7 +204,9 @@ public bool GetMatrix (float distance, out SKMatrix matrix, SKPathMeasureMatrixF /// The path to hold the new segment. /// If true, begin the path segment with a . /// Returns false if the segment is zero-length, otherwise returns true. - /// The start and stop parameters are pinned to 0... + /// + /// The start and stop parameters are pinned to 0... + /// public bool GetSegment (float start, float stop, SKPath dst, bool startWithMoveTo) { if (dst == null) diff --git a/binding/SkiaSharp/SKPicture.cs b/binding/SkiaSharp/SKPicture.cs index 072f595ba6..52eede820d 100644 --- a/binding/SkiaSharp/SKPicture.cs +++ b/binding/SkiaSharp/SKPicture.cs @@ -8,7 +8,9 @@ namespace SkiaSharp /// /// Recorded drawing operations made to a to be played back at a later time. /// - /// This base class handles serialization and a few other miscellany. + /// + /// This base class handles serialization and a few other miscellany. + /// public unsafe class SKPicture : SKObject, ISKReferenceCounted { internal SKPicture (IntPtr h, bool owns) @@ -28,7 +30,9 @@ protected override void Dispose (bool disposing) => /// /// Gets the culling rectangle for this picture. /// - /// Operations recorded into this picture that attempt to draw outside the culling rectangle might not be drawn. + /// + /// Operations recorded into this picture that attempt to draw outside the culling rectangle might not be drawn. + /// public SKRect CullRect { get { SKRect rect; diff --git a/binding/SkiaSharp/SKPictureRecorder.cs b/binding/SkiaSharp/SKPictureRecorder.cs index 4de68a0139..a0ddad1d22 100644 --- a/binding/SkiaSharp/SKPictureRecorder.cs +++ b/binding/SkiaSharp/SKPictureRecorder.cs @@ -64,9 +64,11 @@ public SKCanvas BeginRecording (SKRect cullRect, bool useRTree) /// Signal that the caller is done recording. /// /// Returns the containing the recorded content. - /// This invalidates the canvas returned by - /// and - /// . + /// + /// This invalidates the canvas returned by + /// and + /// . + /// public SKPicture EndRecording () { return SKPicture.GetObject (SkiaApi.sk_picture_recorder_end_recording (Handle)); @@ -76,15 +78,17 @@ public SKPicture EndRecording () /// Signal that the caller is done recording. /// /// Returns the containing the recorded content. - /// This invalidates the canvas returned by - /// and + /// + /// This invalidates the canvas returned by + /// and /// . - /// Unlike , which returns an + /// Unlike , which returns an /// immutable picture, the returned drawable may contain live references to other /// drawables (if they were added to the recording canvas) and therefore this /// drawable will reflect the current state of those nested drawables anytime it /// is drawn or a new picture is snapped from it (by calling - /// ). + /// ). + /// public SKDrawable EndRecordingAsDrawable () { return SKDrawable.GetObject (SkiaApi.sk_picture_recorder_end_recording_as_drawable (Handle)); diff --git a/binding/SkiaSharp/SKPixmap.cs b/binding/SkiaSharp/SKPixmap.cs index 8d71b8368e..c388146965 100644 --- a/binding/SkiaSharp/SKPixmap.cs +++ b/binding/SkiaSharp/SKPixmap.cs @@ -6,7 +6,9 @@ namespace SkiaSharp /// /// Pairs with actual pixels and rowbytes. /// - /// This class does not try to manage the lifetime of the pixel memory (nor the color table if provided). + /// + /// This class does not try to manage the lifetime of the pixel memory (nor the color table if provided). + /// public unsafe class SKPixmap : SKObject { private const string UnableToCreateInstanceMessage = "Unable to create a new SKPixmap instance."; @@ -186,7 +188,9 @@ public IntPtr GetPixels (int x, int y) => /// Returns a span that wraps the pixel data. /// /// Returns the span. - /// This span is only valid as long as the pixmap is valid + /// + /// This span is only valid as long as the pixmap is valid + /// public Span GetPixelSpan () => GetPixelSpan (0, 0); @@ -272,7 +276,8 @@ public float GetPixelAlpha (int x, int y) => /// The pixmap to receive the scaled and converted pixels. /// The level of quality to use when scaling the pixels. /// Returns on success, or if there was an error. - /// Pixels are copied only if pixel conversion is possible. + /// + /// Pixels are copied only if pixel conversion is possible. /// If the color type is , or /// , the destination color type must match. /// If the color type is , destination @@ -288,7 +293,8 @@ public float GetPixelAlpha (int x, int y) => /// - is typically implemented with /// bilerp filter, and mipmap when size is reduced. /// - is slowest, typically implemented - /// with the bicubic filter. + /// with the bicubic filter. + /// [Obsolete ("Use ScalePixels(SKPixmap destination, SKSamplingOptions sampling) instead.")] public bool ScalePixels (SKPixmap destination, SKFilterQuality quality) => ScalePixels (destination, quality.ToSamplingOptions ()); @@ -533,7 +539,9 @@ public bool ExtractSubset (SKPixmap result, SKRectI subset) /// /// The color to fill. /// Returns if the pixels were changed, otherwise . - /// If the pixmap's color type does not support alpha (e.g. 565) then the alpha of the color is ignored (treated as opaque). If the color type only supports alpha (e.g. A1 or A8) then the color's R, G, B components are ignored. + /// + /// If the pixmap's color type does not support alpha (e.g. 565) then the alpha of the color is ignored (treated as opaque). If the color type only supports alpha (e.g. A1 or A8) then the color's R, G, B components are ignored. + /// public bool Erase (SKColor color) => Erase (color, Rect); @@ -543,7 +551,9 @@ public bool Erase (SKColor color) => /// The color to fill. /// The subset of the pixmap to fill. /// Returns if the pixels were changed, otherwise . - /// If the pixmap's color type does not support alpha (e.g. 565) then the alpha of the color is ignored (treated as opaque). If the color type only supports alpha (e.g. A1 or A8) then the color's R, G, B components are ignored. + /// + /// If the pixmap's color type does not support alpha (e.g. 565) then the alpha of the color is ignored (treated as opaque). If the color type only supports alpha (e.g. A1 or A8) then the color's R, G, B components are ignored. + /// public bool Erase (SKColor color, SKRectI subset) => SkiaApi.sk_pixmap_erase_color (Handle, (uint)color, &subset); diff --git a/binding/SkiaSharp/SKRegion.cs b/binding/SkiaSharp/SKRegion.cs index 1f1e0fd4e3..d7d444129d 100644 --- a/binding/SkiaSharp/SKRegion.cs +++ b/binding/SkiaSharp/SKRegion.cs @@ -72,7 +72,9 @@ protected override void DisposeNative () => /// /// Gets the bounds of this region. /// - /// If the region is empty, returns an empty rectangle. + /// + /// If the region is empty, returns an empty rectangle. + /// public SKRectI Bounds { get { SKRectI rect; @@ -100,7 +102,9 @@ public SKPath GetBoundaryPath () /// /// The path to check with. /// Returns true if the specified path is completely inside the current region, otherwise false. - /// This works for simple (rectangular) and complex path, and always returns the correct result. If either the path or the region is empty, this method returns false. + /// + /// This works for simple (rectangular) and complex path, and always returns the correct result. If either the path or the region is empty, this method returns false. + /// public bool Contains (SKPath path) { if (path == null) @@ -115,7 +119,9 @@ public bool Contains (SKPath path) /// /// The region to check with. /// Returns true if the specified region is completely inside the current region, otherwise false. - /// This works for simple (rectangular) and complex regions, and always returns the correct result. If either region is empty, this method returns false. + /// + /// This works for simple (rectangular) and complex regions, and always returns the correct result. If either region is empty, this method returns false. + /// public bool Contains (SKRegion src) { if (src == null) @@ -146,7 +152,9 @@ public bool Contains (int x, int y) => /// /// The rect to check with. /// Returns true if the specified rect is completely inside the current region, otherwise false. - /// If either the rect or the region is empty, this method returns false. + /// + /// If either the rect or the region is empty, this method returns false. + /// public bool Contains (SKRectI rect) => SkiaApi.sk_region_contains_rect (Handle, &rect); @@ -260,7 +268,9 @@ public bool SetRects (ReadOnlySpan rects) /// The replacement path. /// The clipping region. /// Returns true if the resulting region is non-empty. - /// This produces a region that is identical to the pixels that would be drawn by the path (with no anti-aliasing) with the specified clip. + /// + /// This produces a region that is identical to the pixels that would be drawn by the path (with no anti-aliasing) with the specified clip. + /// public bool SetPath (SKPath path, SKRegion clip) { if (path == null) @@ -276,7 +286,9 @@ public bool SetPath (SKPath path, SKRegion clip) /// /// The replacement path. /// Returns true if the resulting region is non-empty. - /// This produces a region that is identical to the pixels that would be drawn by the path (with no anti-aliasing) with the current region as the clip. + /// + /// This produces a region that is identical to the pixels that would be drawn by the path (with no anti-aliasing) with the current region as the clip. + /// public bool SetPath (SKPath path) { if (path == null) diff --git a/binding/SkiaSharp/SKRoundRect.cs b/binding/SkiaSharp/SKRoundRect.cs index 4c4edb2fb5..9764db7c6f 100644 --- a/binding/SkiaSharp/SKRoundRect.cs +++ b/binding/SkiaSharp/SKRoundRect.cs @@ -7,7 +7,9 @@ namespace SkiaSharp /// /// Represents a rounded rectangle with a potentially different radii for each corner. /// - /// If either of a corner's radii are 0 the corner will be square and negative radii are not allowed (they are clamped to zero). + /// + /// If either of a corner's radii are 0 the corner will be square and negative radii are not allowed (they are clamped to zero). + /// public unsafe class SKRoundRect : SKObject, ISKSkipObjectRegistration { internal SKRoundRect (IntPtr handle, bool owns) @@ -94,7 +96,9 @@ public SKRect Rect { /// /// Gets the radii of the corners. /// - /// The order of the corners are clockwise from the top left: Top Left, Top Right, Bottom Right, Bottom Left. + /// + /// The order of the corners are clockwise from the top left: Top Left, Top Right, Bottom Right, Bottom Left. + /// public SKPoint[] Radii => new[] { GetRadii(SKRoundRectCorner.UpperLeft), GetRadii(SKRoundRectCorner.UpperRight), @@ -244,7 +248,9 @@ public SKPoint GetRadii (SKRoundRectCorner corner) /// Deflate the rectangle by the specified amount. /// /// The amount to deflate the rectangle by. - /// The corner radii are adjusted by the amount of the deflation if they are round. + /// + /// The corner radii are adjusted by the amount of the deflation if they are round. + /// public void Deflate (SKSize size) { Deflate (size.Width, size.Height); @@ -255,7 +261,9 @@ public void Deflate (SKSize size) /// /// The amount to deflate the rectangle by along the x-axis. /// The amount to deflate the rectangle by along the y-axis. - /// The corner radii are adjusted by the amount of the deflation if they are round. + /// + /// The corner radii are adjusted by the amount of the deflation if they are round. + /// public void Deflate (float dx, float dy) { SkiaApi.sk_rrect_inset (Handle, dx, dy); @@ -265,7 +273,9 @@ public void Deflate (float dx, float dy) /// Inflate the rectangle by the specified amount. /// /// The amount to inflate the rectangle by. - /// The corner radii are adjusted by the amount of the inflation if they are round. + /// + /// The corner radii are adjusted by the amount of the inflation if they are round. + /// public void Inflate (SKSize size) { Inflate (size.Width, size.Height); @@ -276,7 +286,9 @@ public void Inflate (SKSize size) /// /// The amount to inflate the rectangle by along the x-axis. /// The amount to inflate the rectangle by along the y-axis. - /// The corner radii are adjusted by the amount of the inflation if they are round. + /// + /// The corner radii are adjusted by the amount of the inflation if they are round. + /// public void Inflate (float dx, float dy) { SkiaApi.sk_rrect_outset (Handle, dx, dy); @@ -307,7 +319,9 @@ public void Offset (float dx, float dy) /// The transformation matrix. /// The transformed rounded rectangle. /// Returns a if the transformation was successful, otherwise . - /// The transformation matrix must be a scale and/or translation matrix. + /// + /// The transformation matrix must be a scale and/or translation matrix. + /// public bool TryTransform (SKMatrix matrix, out SKRoundRect transformed) { var destHandle = SkiaApi.sk_rrect_new (); @@ -325,7 +339,9 @@ public bool TryTransform (SKMatrix matrix, out SKRoundRect transformed) /// /// The transformation matrix. /// Returns a new, transformed rectangle if the matrix was valid, otherwise null. - /// The transformation matrix must be a scale and/or translation matrix. + /// + /// The transformation matrix must be a scale and/or translation matrix. + /// public SKRoundRect Transform (SKMatrix matrix) { if (TryTransform (matrix, out var transformed)) { diff --git a/binding/SkiaSharp/SKSVG.cs b/binding/SkiaSharp/SKSVG.cs index 401a36c77d..39362ac665 100644 --- a/binding/SkiaSharp/SKSVG.cs +++ b/binding/SkiaSharp/SKSVG.cs @@ -9,7 +9,9 @@ namespace SkiaSharp /// /// A specialized which generates SVG commands from its draw calls. /// - /// The canvas may buffer some drawing calls, so the output is not guaranteed to be valid or complete until the canvas instance is deleted. + /// + /// The canvas may buffer some drawing calls, so the output is not guaranteed to be valid or complete until the canvas instance is deleted. + /// public unsafe class SKSvgCanvas { private SKSvgCanvas () diff --git a/binding/SkiaSharp/SKShader.cs b/binding/SkiaSharp/SKShader.cs index 01de906b42..734f49fc77 100644 --- a/binding/SkiaSharp/SKShader.cs +++ b/binding/SkiaSharp/SKShader.cs @@ -8,7 +8,8 @@ namespace SkiaSharp /// /// Shaders specify the source color(s) for what is being drawn in the . /// - /// Shaders specify the source colors for what is being drawn. If a paint has no + /// + /// Shaders specify the source colors for what is being drawn. If a paint has no /// shader, then the paint's color is used. If the paint has a shader, then the /// shader's colors are used instead, but they are modulated by the paint's alpha. /// This makes it easy to create a shader once (for example, bitmap tiling or @@ -182,7 +183,8 @@ namespace SkiaSharp /// } /// ``` /// The example above produces the following: - /// ![Compose Shader](~/images/compose.png "Compose Shader") + /// ![Compose Shader](~/images/compose.png "Compose Shader") + /// public unsafe class SKShader : SKObject, ISKReferenceCounted { internal SKShader (IntPtr handle, bool owns) @@ -250,10 +252,12 @@ public static SKShader CreateColor (SKColorF color, SKColorSpace colorspace) /// /// The bitmap to use inside the shader. /// Returns a new , or an empty shader on error. This function never returns null. - /// If the bitmap cannot be used (has no pixels, or its dimensions exceed + /// + /// If the bitmap cannot be used (has no pixels, or its dimensions exceed /// implementation limits) then an empty shader may be returned. If the source /// bitmap's color type is then that mask will - /// be colorized using the color on the paint. + /// be colorized using the color on the paint. + /// public static SKShader CreateBitmap (SKBitmap src) => CreateBitmap (src, SKShaderTileMode.Clamp, SKShaderTileMode.Clamp); @@ -264,10 +268,12 @@ public static SKShader CreateBitmap (SKBitmap src) => /// The tiling mode to use when sampling the bitmap in the x-direction. /// The tiling mode to use when sampling the bitmap in the y-direction. /// Returns a new , or an empty shader on error. This function never returns null. - /// If the bitmap cannot be used (has no pixels, or its dimensions exceed + /// + /// If the bitmap cannot be used (has no pixels, or its dimensions exceed /// implementation limits) then an empty shader may be returned. If the source /// bitmap's color type is then that mask will - /// be colorized using the color on the paint. + /// be colorized using the color on the paint. + /// public static SKShader CreateBitmap (SKBitmap src, SKShaderTileMode tmx, SKShaderTileMode tmy) { if (src == null) @@ -284,10 +290,12 @@ public static SKShader CreateBitmap (SKBitmap src, SKShaderTileMode tmx, SKShade /// The tiling mode to use when sampling the bitmap in the y-direction. /// The matrix to apply before applying the shader. /// Returns a new , or an empty shader on error. This function never returns null. - /// If the bitmap cannot be used (has no pixels, or its dimensions exceed + /// + /// If the bitmap cannot be used (has no pixels, or its dimensions exceed /// implementation limits) then an empty shader may be returned. If the source /// bitmap's color type is then that mask will - /// be colorized using the color on the paint. + /// be colorized using the color on the paint. + /// public static SKShader CreateBitmap (SKBitmap src, SKShaderTileMode tmx, SKShaderTileMode tmy, SKMatrix localMatrix) { if (src == null) @@ -356,8 +364,10 @@ public static SKShader CreatePicture (SKPicture src, SKShaderTileMode tmx, SKSha /// The tiling mode to use when sampling the picture in the y-direction. /// The tile rectangle in picture coordinates. /// Returns a new , or an empty shader on error. This function never returns null. - /// The tile rectangle represents the subset (or superset) of the picture used when building a tile. It is not affected by - /// the local matrix and does not imply scaling (only translation and cropping). + /// + /// The tile rectangle represents the subset (or superset) of the picture used when building a tile. It is not affected by + /// the local matrix and does not imply scaling (only translation and cropping). + /// public static SKShader CreatePicture (SKPicture src, SKShaderTileMode tmx, SKShaderTileMode tmy, SKRect tile) => src?.ToShader (tmx, tmy, tile) ?? throw new ArgumentNullException (nameof (src)); @@ -373,8 +383,10 @@ public static SKShader CreatePicture (SKPicture src, SKShaderTileMode tmx, SKSha /// The matrix to apply before applying the shader. /// The tile rectangle in picture coordinates. /// Returns a new , or an empty shader on error. This function never returns null. - /// The tile rectangle represents the subset (or superset) of the picture used when building a tile. It is not affected by - /// the local matrix and does not imply scaling (only translation and cropping). + /// + /// The tile rectangle represents the subset (or superset) of the picture used when building a tile. It is not affected by + /// the local matrix and does not imply scaling (only translation and cropping). + /// public static SKShader CreatePicture (SKPicture src, SKShaderTileMode tmx, SKShaderTileMode tmy, SKMatrix localMatrix, SKRect tile) => src?.ToShader (tmx, tmy, localMatrix, tile) ?? throw new ArgumentNullException (nameof (src)); diff --git a/binding/SkiaSharp/SKStream.cs b/binding/SkiaSharp/SKStream.cs index d88b6b1ed6..b31d7ac261 100644 --- a/binding/SkiaSharp/SKStream.cs +++ b/binding/SkiaSharp/SKStream.cs @@ -18,7 +18,9 @@ internal SKStream (IntPtr handle, bool owns) /// /// Gets a value indicating whether all the bytes in the stream have been read. /// - /// This method may return true if there was an error, and the stream cannot be read anymore. + /// + /// This method may return true if there was an error, and the stream cannot be read anymore. + /// public bool IsAtEnd { get { return SkiaApi.sk_stream_is_at_end (Handle); @@ -246,7 +248,9 @@ public bool Rewind () /// /// The absolute position. /// Returns true if seeking is supported and the seek was successful, otherwise false. - /// If an attempt is made to move to a position outside the stream, the position will be set to the closest point within the stream (beginning or end). + /// + /// If an attempt is made to move to a position outside the stream, the position will be set to the closest point within the stream (beginning or end). + /// public bool Seek (int position) { return SkiaApi.sk_stream_seek (Handle, (IntPtr)position); @@ -257,7 +261,9 @@ public bool Seek (int position) /// /// The relative offset. /// Returns true if seeking is supported and the seek was successful, otherwise false. - /// If an attempt is made to move to a position outside the stream, the position will be set to the closest point within the stream (beginning or end). + /// + /// If an attempt is made to move to a position outside the stream, the position will be set to the closest point within the stream (beginning or end). + /// public bool Move (long offset) => Move ((int)offset); /// @@ -265,7 +271,9 @@ public bool Seek (int position) /// /// The relative offset. /// Returns true if seeking is supported and the seek was successful, otherwise false. - /// If an attempt is made to move to a position outside the stream, the position will be set to the closest point within the stream (beginning or end). + /// + /// If an attempt is made to move to a position outside the stream, the position will be set to the closest point within the stream (beginning or end). + /// public bool Move (int offset) { return SkiaApi.sk_stream_move (Handle, offset); @@ -593,7 +601,9 @@ public virtual bool Write (byte[] buffer, int size) /// Write a newline character to the stream, if one was not already written. /// /// Returns true if the write succeeded, otherwise false. - /// If the last character was a newline character, this method does nothing. + /// + /// If the last character was a newline character, this method does nothing. + /// public bool NewLine () { return SkiaApi.sk_wstream_newline (Handle); @@ -834,7 +844,9 @@ public SKDynamicMemoryWStream () /// Returns a copy of the data written so far. /// /// A copy of the data. - /// The caller is responsible for releasing the memory. + /// + /// The caller is responsible for releasing the memory. + /// public SKData CopyToData () { var data = SKData.Create (BytesWritten); @@ -846,7 +858,9 @@ public SKData CopyToData () /// Returns a read-only stream with the current data, and then resets the current stream. /// /// The stream with the data. - /// After calling this method, this stream is reset to it's empty state. + /// + /// After calling this method, this stream is reset to it's empty state. + /// public SKStreamAsset DetachAsStream () { return SKStreamAssetImplementation.GetObject (SkiaApi.sk_dynamicmemorywstream_detach_as_stream (Handle)); @@ -856,7 +870,9 @@ public SKStreamAsset DetachAsStream () /// Returns a instance of the data in the current stream, and then resets the current stream. /// /// Returns the instance. - /// After calling this method, this stream is reset to it's empty state. + /// + /// After calling this method, this stream is reset to it's empty state. + /// public SKData DetachAsData () { return SKData.GetObject (SkiaApi.sk_dynamicmemorywstream_detach_as_data (Handle)); diff --git a/binding/SkiaSharp/SKSurface.cs b/binding/SkiaSharp/SKSurface.cs index 7cb4aefce1..564a622756 100644 --- a/binding/SkiaSharp/SKSurface.cs +++ b/binding/SkiaSharp/SKSurface.cs @@ -8,18 +8,19 @@ namespace SkiaSharp /// /// Represents the backend/results of drawing to a canvas. /// - /// The surface represents the backend/results of drawing to a canvas. For raster + /// + /// The surface represents the backend/results of drawing to a canvas. For raster /// drawing, the surface will be pixels, but (for example) when drawing into a /// PDF or canvas, the surface stores the recorded /// commands. /// The surface always has non-zero dimensions. If there is a request for a new /// surface, and either of the requested dimensions are zero, then will /// be returned. - /// Once you create a surface with one of its + /// Once you create a surface with one of its /// methods, you can draw into the canvas returned by the /// property. Once the drawing is complete, you /// can retrieve an by calling the - /// method. + /// method. /// ## Examples /// ```csharp /// var info = new SKImageInfo(256, 256); @@ -35,14 +36,15 @@ namespace SkiaSharp /// Color = new SKColor(0, 0, 0xff), /// IsStroke = true /// }; - /// for (int i = 0; i < 64; i += 8) { + /// for (int i = 0; i < 64; i += 8) { /// var rect = new SKRect(i, i, 256 - i - 1, 256 - i - 1); /// canvas.DrawRect(rect, (i % 16 == 0) ? redBrush : blueBrush); /// } /// } /// ``` /// The example above produces the following: - /// ![SKSurface](~/images/surface-rects.png "SKSurface") + /// ![SKSurface](~/images/surface-rects.png "SKSurface") + /// public unsafe class SKSurface : SKObject, ISKReferenceCounted { internal SKSurface (IntPtr h, bool owns) @@ -60,7 +62,9 @@ protected override void Dispose (bool disposing) => /// /// Contains the image configuration parameters. /// Returns the new surface if it could be created and the configuration is supported, otherwise . - /// This will create a buffer with the parameters specified in . + /// + /// This will create a buffer with the parameters specified in . + /// public static SKSurface Create (SKImageInfo info) => Create (info, 0, null); @@ -70,7 +74,9 @@ public static SKSurface Create (SKImageInfo info) => /// The image configuration parameters. /// The number of bytes per row in the pixel buffer. /// Returns the new surface if it could be created and the configuration is supported, otherwise . - /// This will create a buffer with the parameters specified in . + /// + /// This will create a buffer with the parameters specified in . + /// public static SKSurface Create (SKImageInfo info, int rowBytes) => Create (info, rowBytes, null); @@ -80,7 +86,9 @@ public static SKSurface Create (SKImageInfo info, int rowBytes) => /// The image configuration parameters. /// The surface property configuration. /// Returns the new surface if it could be created and the configuration is supported, otherwise . - /// This will create a buffer with the parameters specified in and the properties specified in . + /// + /// This will create a buffer with the parameters specified in and the properties specified in . + /// public static SKSurface Create (SKImageInfo info, SKSurfaceProperties props) => Create (info, 0, props); @@ -91,7 +99,9 @@ public static SKSurface Create (SKImageInfo info, SKSurfaceProperties props) => /// The number of bytes per row in the pixel buffer. /// The surface property configuration. /// Returns the new surface if it could be created and the configuration is supported, otherwise . - /// This will create a buffer with the parameters specified in and the properties specified in . + /// + /// This will create a buffer with the parameters specified in and the properties specified in . + /// public static SKSurface Create (SKImageInfo info, int rowBytes, SKSurfaceProperties props) { var cinfo = SKImageInfoNative.FromManaged (ref info); @@ -140,7 +150,9 @@ public static SKSurface Create (SKImageInfo info, IntPtr pixels) => /// The pointer to an in memory-buffer that can hold the image as specified. /// The number of bytes per row in the pixel buffer. /// Returns the new surface if it could be created and the configuration is supported, otherwise . - /// This will create a buffer that will be backend by the in-memory buffer provided in . + /// + /// This will create a buffer that will be backend by the in-memory buffer provided in . + /// public static SKSurface Create (SKImageInfo info, IntPtr pixels, int rowBytes) => Create (info, pixels, rowBytes, null, null, null); @@ -163,7 +175,9 @@ public static SKSurface Create (SKImageInfo info, IntPtr pixels, int rowBytes, S /// The pointer to an in memory-buffer that can hold the image as specified. /// The surface property configuration. /// Returns the new surface if it could be created and the configuration is supported, otherwise . - /// This will create a buffer with the parameters specified in and the properties specified in . + /// + /// This will create a buffer with the parameters specified in and the properties specified in . + /// public static SKSurface Create (SKImageInfo info, IntPtr pixels, SKSurfaceProperties props) => Create (info, pixels, info.RowBytes, null, null, props); @@ -175,7 +189,9 @@ public static SKSurface Create (SKImageInfo info, IntPtr pixels, SKSurfaceProper /// The number of bytes per row in the pixel buffer. /// The surface property configuration. /// Returns the new surface if it could be created and the configuration is supported, otherwise . - /// This will create a buffer that will be backend by the in-memory buffer provided in . + /// + /// This will create a buffer that will be backend by the in-memory buffer provided in . + /// public static SKSurface Create (SKImageInfo info, IntPtr pixels, int rowBytes, SKSurfaceProperties props) => Create (info, pixels, rowBytes, null, null, props); @@ -660,7 +676,9 @@ public static SKSurface Create (GRRecordingContext context, MetalKit.MTKView vie /// The desired width for the surface. /// The desired height for the surface. /// Returns the new surface if it could be created, otherwise . - /// Drawing to the returned from has no effect. Calling on the returned returns . + /// + /// Drawing to the returned from has no effect. Calling on the returned returns . + /// public static SKSurface CreateNull (int width, int height) => GetObject (SkiaApi.sk_surface_new_null (width, height)); @@ -685,7 +703,9 @@ public static SKSurface CreateNull (int width, int height) => /// Takes a snapshot of the surface and returns it as an image. /// /// An that contains a snapshot of the current image. - /// You can use this method to take an snapshot of the current state of the surface. + /// + /// You can use this method to take an snapshot of the current state of the surface. + /// public SKImage Snapshot () => SKImage.GetObject (SkiaApi.sk_surface_new_image_snapshot (Handle)); @@ -712,7 +732,9 @@ public void Draw (SKCanvas canvas, float x, float y, SKPaint paint) /// Returns the pixels, if they are available. /// /// Returns the pixels, if they are available, otherwise . - /// If the pixels are available, then the surface is only valid until the surface changes in any way, in which case the pixmap becomes invalid. + /// + /// If the pixels are available, then the surface is only valid until the surface changes in any way, in which case the pixmap becomes invalid. + /// public SKPixmap PeekPixels () { var pixmap = new SKPixmap (); @@ -750,7 +772,9 @@ public bool PeekPixels (SKPixmap pixmap) /// The source x-coordinate to start reading from. /// The source y-coordinate to start reading from. /// Returns if the pixels were read, or if there was an error. - /// This method may return if the source rectangle [, , dstInfo.Width, dstInfo.Height] does not intersect the surface, or if the color type/alpha type could not be converted to the destination types. + /// + /// This method may return if the source rectangle [, , dstInfo.Width, dstInfo.Height] does not intersect the surface, or if the color type/alpha type could not be converted to the destination types. + /// public bool ReadPixels (SKImageInfo dstInfo, IntPtr dstPixels, int dstRowBytes, int srcX, int srcY) { var cinfo = SKImageInfoNative.FromManaged (ref dstInfo); diff --git a/binding/SkiaSharp/SKSurfaceProperties.cs b/binding/SkiaSharp/SKSurfaceProperties.cs index b38f0b7bc6..9f6a67d75d 100644 --- a/binding/SkiaSharp/SKSurfaceProperties.cs +++ b/binding/SkiaSharp/SKSurfaceProperties.cs @@ -8,7 +8,9 @@ namespace SkiaSharp /// /// Describes properties and constraints of a given . /// - /// The rendering engine can parse these during drawing, and can sometimes optimize its performance (e.g. disabling an expensive feature). + /// + /// The rendering engine can parse these during drawing, and can sometimes optimize its performance (e.g. disabling an expensive feature). + /// public class SKSurfaceProperties : SKObject { internal SKSurfaceProperties (IntPtr h, bool owns) diff --git a/binding/SkiaSharp/SKTypeface.cs b/binding/SkiaSharp/SKTypeface.cs index e282beaeae..678916500e 100644 --- a/binding/SkiaSharp/SKTypeface.cs +++ b/binding/SkiaSharp/SKTypeface.cs @@ -9,13 +9,15 @@ namespace SkiaSharp /// /// Represents a specific typeface and intrinsic style of a font. /// - /// This is used in the paint, along with optionally algorithmic settings like - /// , - /// , - /// , and - /// + /// + /// This is used in the paint, along with optionally algorithmic settings like + /// , + /// , + /// , and + /// /// to specify how text appears when drawn (and measured). - /// Typeface objects are immutable, and so they can be shared between threads. + /// Typeface objects are immutable, and so they can be shared between threads. + /// public unsafe class SKTypeface : SKObject, ISKReferenceCounted { private static readonly SKTypeface defaultTypeface; @@ -51,13 +53,17 @@ protected override void Dispose (bool disposing) => /// /// Gets the default, Normal typeface. /// - /// This will never be . + /// + /// This will never be . + /// public static SKTypeface Default => defaultTypeface; /// /// Creates a new which is the default, Normal typeface. /// - /// This will never be null. + /// + /// This will never be null. + /// public static SKTypeface CreateDefault () { return GetObject (SkiaApi.sk_typeface_create_default ()); @@ -194,7 +200,9 @@ public static SKTypeface FromData (SKData data, int index = 0) /// /// Gets the family name for the typeface. /// - /// The family name will always be returned encoded as UTF8, but the language of the name is whatever the host platform chooses. + /// + /// The family name will always be returned encoded as UTF8, but the language of the name is whatever the host platform chooses. + /// public string FamilyName => (string)SKString.GetObject (SkiaApi.sk_typeface_get_family_name (Handle)); /// @@ -205,41 +213,53 @@ public static SKTypeface FromData (SKData data, int index = 0) /// /// Gets the font weight for the typeface. /// - /// This may be one of the values in . + /// + /// This may be one of the values in . + /// public int FontWeight => SkiaApi.sk_typeface_get_font_weight (Handle); /// /// Gets the font width for the typeface. /// - /// This may be one of the values in . + /// + /// This may be one of the values in . + /// public int FontWidth => SkiaApi.sk_typeface_get_font_width (Handle); /// /// Gets the font slant for the typeface. /// - /// This may be one of the values in . + /// + /// This may be one of the values in . + /// public SKFontStyleSlant FontSlant => SkiaApi.sk_typeface_get_font_slant (Handle); /// /// Gets a value indicating whether the typeface claims to be a bold typeface. /// - /// A typeface is understood to be bold when the weight is greater than or equal to - /// 600 or . + /// + /// A typeface is understood to be bold when the weight is greater than or equal to + /// 600 or . + /// public bool IsBold => FontStyle.Weight >= (int)SKFontStyleWeight.SemiBold; /// /// Gets a value indicating whether the typeface claims to be slanted. /// - /// A typeface is understood to be italic when it has a slant of either + /// + /// A typeface is understood to be italic when it has a slant of either /// or - /// . + /// . + /// public bool IsItalic => FontStyle.Slant != SKFontStyleSlant.Upright; /// /// Gets a value indicating whether the typeface claims to be fixed-pitch. /// - /// This does not guarentee that the advance widths will not vary as this is a - /// style bit on the typeface. + /// + /// This does not guarentee that the advance widths will not vary as this is a + /// style bit on the typeface. + /// public bool IsFixedPitch => SkiaApi.sk_typeface_is_fixed_pitch (Handle); /// @@ -473,7 +493,9 @@ public SKFont ToFont (float size, float scaleX = SKFont.DefaultScaleX, float ske /// Returns a stream for the contents of the font data. /// /// Returns a stream for the contents of the font data, or on failure. - /// The caller is responsible for deleting the stream. + /// + /// The caller is responsible for deleting the stream. + /// public SKStreamAsset OpenStream () => OpenStream (out _); @@ -482,7 +504,9 @@ public SKStreamAsset OpenStream () => /// /// The TrueTypeCollection index of this typeface within the stream, or 0 if the stream is not a collection. /// Returns a stream for the contents of the font data, or on failure. - /// The caller is responsible for deleting the stream. + /// + /// The caller is responsible for deleting the stream. + /// public SKStreamAsset OpenStream (out int ttcIndex) { fixed (int* ttc = &ttcIndex) { diff --git a/binding/SkiaSharp/SkiaApi.generated.cs b/binding/SkiaSharp/SkiaApi.generated.cs index 9f7a336b76..cafc1867ec 100644 --- a/binding/SkiaSharp/SkiaApi.generated.cs +++ b/binding/SkiaSharp/SkiaApi.generated.cs @@ -18480,7 +18480,9 @@ public readonly override int GetHashCode () /// /// 16-bit, floating-point, ARGB unpremultiplied color value. /// - /// The color components are always in a known order. + /// + /// The color components are always in a known order. + /// [StructLayout (LayoutKind.Sequential)] public readonly unsafe partial struct SKColorF : IEquatable { // public float fR @@ -18689,7 +18691,9 @@ public readonly override int GetHashCode () /// /// Represents the coefficients for a common transfer function equation. /// - /// The coefficients are specified as a transformation from a curved space to linear. LinearVal = C*InputVal + F; (for 0.0f <= InputVal < D)LinearVal = (A*InputVal + B)^G + E; (for D <= InputVal <= 1.0f)Function is undefined if InputVal is not in [ 0.0f, 1.0f ].Resulting LinearVals must be in [ 0.0f, 1.0f ].Function must be positive and increasing. + /// + /// The coefficients are specified as a transformation from a curved space to linear. LinearVal = C*InputVal + F; (for 0.0f <= InputVal < D)LinearVal = (A*InputVal + B)^G + E; (for D <= InputVal <= 1.0f)Function is undefined if InputVal is not in [ 0.0f, 1.0f ].Resulting LinearVals must be in [ 0.0f, 1.0f ].Function must be positive and increasing. + /// [StructLayout (LayoutKind.Sequential)] public unsafe partial struct SKColorSpaceTransferFn : IEquatable { // public float fG @@ -19301,7 +19305,9 @@ public readonly override bool Equals (object obj) => /// Calculates the hashcode for this point. /// /// Returns the hashcode for this point. - /// You should avoid depending on GetHashCode for unique values, as two point objects with the same values for their X and Y properties may return the same hash code. This behavior could change in a future release. + /// + /// You should avoid depending on GetHashCode for unique values, as two point objects with the same values for their X and Y properties may return the same hash code. This behavior could change in a future release. + /// public readonly override int GetHashCode () { var hash = new HashCode (); @@ -19897,7 +19903,9 @@ public readonly override int GetHashCode () /// /// A 3x3 transformation matrix with perspective. /// - /// It extends the traditional 2D affine transformation matrix with three perspective components that allow simple 3D effects to be created with it. Those components must be manually set by using the , , fields of the matrix. + /// + /// It extends the traditional 2D affine transformation matrix with three perspective components that allow simple 3D effects to be created with it. Those components must be manually set by using the , , fields of the matrix. + /// [StructLayout (LayoutKind.Sequential)] public unsafe partial struct SKMatrix : IEquatable { // public float scaleX @@ -20241,7 +20249,9 @@ public readonly override int GetHashCode () /// /// Represents an ordered pair of floating-point x- and y-coordinates that defines a point in a two-dimensional plane. /// - /// To convert a to a , use or . + /// + /// To convert a to a , use or . + /// [StructLayout (LayoutKind.Sequential)] public unsafe partial struct SKPoint : IEquatable { // public float x @@ -20304,7 +20314,9 @@ public readonly override bool Equals (object obj) => /// Calculates the hashcode for this point. /// /// Returns the hashcode for this point. - /// You should avoid depending on GetHashCode for unique values, as two objects with the same values for their X and Y properties may return the same hash code. This behavior could change in a future release. + /// + /// You should avoid depending on GetHashCode for unique values, as two objects with the same values for their X and Y properties may return the same hash code. This behavior could change in a future release. + /// public readonly override int GetHashCode () { var hash = new HashCode (); @@ -20391,7 +20403,9 @@ public readonly override bool Equals (object obj) => /// Calculates the hashcode for this point. /// /// Returns the hashcode for this point. - /// You should avoid depending on GetHashCode for unique values, as two objects with the same values for their X, Y and Z properties may return the same hash code. This behavior could change in a future release. + /// + /// You should avoid depending on GetHashCode for unique values, as two objects with the same values for their X, Y and Z properties may return the same hash code. This behavior could change in a future release. + /// public readonly override int GetHashCode () { var hash = new HashCode (); @@ -20939,7 +20953,7 @@ public enum SKAlphaType { // sk_bitmap_allocflags_t /// - /// Flags to use with . + /// Flags to use with constructors. /// [Flags] public enum SKBitmapAllocFlags { @@ -20959,7 +20973,8 @@ public enum SKBitmapAllocFlags { /// /// Predefined blend modes. /// - /// - **Porter Duff Compositing Operators** + /// + /// - **Porter Duff Compositing Operators** /// Defined algebra of compositing. /// These operators control the results of mixing the four sub-pixel regions /// formed by the overlapping of graphical objects that have an alpha or @@ -20969,7 +20984,8 @@ public enum SKBitmapAllocFlags { /// corresponding components of the constituent backdrop and source colors. /// - **Non-Separable Blend Mode** /// Considers all color components in combination as opposed to the - /// separable ones that look at each component individually. + /// separable ones that look at each component individually. + /// public enum SKBlendMode { // CLEAR_SK_BLENDMODE = 0 /// @@ -21178,7 +21194,9 @@ public enum SKClipOperation { /// /// Used to describe the result of a call to or one of the overloads that accepts a . /// - /// Result is the union of possible results from subclasses. + /// + /// Result is the union of possible results from subclasses. + /// public enum SKCodecResult { // SUCCESS_SK_CODEC_RESULT = 0 /// @@ -21236,7 +21254,9 @@ public enum SKCodecResult { /// /// The orders in which scanlines can be returned. /// - /// These values are obtained through the property. + /// + /// These values are obtained through the property. + /// public enum SKCodecScanlineOrder { // TOP_DOWN_SK_CODEC_SCANLINE_ORDER = 0 /// @@ -21652,13 +21672,15 @@ public enum SKMipmapMode { /// /// Indications on how to draw geometry. /// - /// Styles apply to rectangle, oval, path, and text. Bitmaps are always drawn in + /// + /// Styles apply to rectangle, oval, path, and text. Bitmaps are always drawn in /// , and lines are always drawn in /// . /// implicitly draws the result with /// so if the original path is even-odd, /// the results may not appear the same as if it was drawn twice, filled and then - /// stroked. + /// stroked. + /// public enum SKPaintStyle { // FILL_SK_PAINT_STYLE = 0 /// @@ -21826,7 +21848,9 @@ public enum SKPathSegmentMask { /// /// Verbs contained in an . /// - /// In the description below, the number of points returned represents the number of valid entries on the return array of points that is passed to or . + /// + /// In the description below, the number of points returned represents the number of valid entries on the return array of points that is passed to or . + /// public enum SKPathVerb { // MOVE_SK_PATH_VERB = 0 /// @@ -21869,7 +21893,9 @@ public enum SKPathVerb { /// /// Flags to indicate how to compute a matrix from a position along a path. /// - /// This is used with . + /// + /// This is used with . + /// [Flags] public enum SKPathMeasureMatrixFlags { // GET_POSITION_SK_PATHMEASURE_MATRIXFLAGS = 0x01 @@ -21925,7 +21951,9 @@ public enum SKPathOp { /// /// Describes how LCD strips are organized for each pixel. /// - /// Description of how the LCD strips are arranged for each pixel. If this is unknown, or the pixels are meant to be "portable" and/or transformed before showing (e.g. rotated, scaled) then use . + /// + /// Description of how the LCD strips are arranged for each pixel. If this is unknown, or the pixels are meant to be "portable" and/or transformed before showing (e.g. rotated, scaled) then use . + /// public enum SKPixelGeometry { // UNKNOWN_SK_PIXELGEOMETRY = 0 /// @@ -22201,7 +22229,9 @@ public enum SKShaderTileMode { /// /// Various options for . /// - /// This is the treatment that is applied to the beginning and end of each non-closed contour (e.g. lines). + /// + /// This is the treatment that is applied to the beginning and end of each non-closed contour (e.g. lines). + /// public enum SKStrokeCap { // BUTT_SK_STROKE_CAP = 0 /// @@ -22224,7 +22254,9 @@ public enum SKStrokeCap { /// /// Join style for stroking operations. /// - /// This is the treatment that is applied to corners in paths and rectangles. + /// + /// This is the treatment that is applied to corners in paths and rectangles. + /// public enum SKStrokeJoin { // MITER_SK_STROKE_JOIN = 0 /// @@ -22245,7 +22277,7 @@ public enum SKStrokeJoin { // sk_surfaceprops_flags_t /// - /// Flags for the . + /// Flags for the . /// [Flags] public enum SKSurfacePropsFlags { diff --git a/source/SkiaSharp.Build.props b/source/SkiaSharp.Build.props index 9694a8be62..c5049b26ef 100644 --- a/source/SkiaSharp.Build.props +++ b/source/SkiaSharp.Build.props @@ -33,6 +33,7 @@ + $(NoWarn);CS1591 true diff --git a/source/SkiaSharp.HarfBuzz/SkiaSharp.HarfBuzz/SKShaper.cs b/source/SkiaSharp.HarfBuzz/SkiaSharp.HarfBuzz/SKShaper.cs index c0d74da83e..f969f3b735 100644 --- a/source/SkiaSharp.HarfBuzz/SkiaSharp.HarfBuzz/SKShaper.cs +++ b/source/SkiaSharp.HarfBuzz/SkiaSharp.HarfBuzz/SKShaper.cs @@ -47,7 +47,9 @@ public SKShaper(SKTypeface typeface) /// /// Releases all resources used by this . /// - /// Always dispose the object before you release your last reference to the . Otherwise, the resources it is using will not be freed until the garbage collector calls the finalizer. + /// + /// Always dispose the object before you release your last reference to the . Otherwise, the resources it is using will not be freed until the garbage collector calls the finalizer. + /// public void Dispose() { hbFont?.Dispose(); diff --git a/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Controls/SKCanvasView.cs b/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Controls/SKCanvasView.cs index bafc35092a..056fcdb631 100644 --- a/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Controls/SKCanvasView.cs +++ b/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Controls/SKCanvasView.cs @@ -37,7 +37,8 @@ public SKCanvasView() /// /// Occurs when the the canvas needs to be redrawn. /// - /// There are two ways to draw on this surface: by overriding the + /// + /// There are two ways to draw on this surface: by overriding the /// /// method, or by attaching a handler to the /// @@ -52,7 +53,8 @@ public SKCanvasView() /// // draw on the canvas /// canvas.Flush (); /// }; - /// ``` + /// ``` + /// public event EventHandler? PaintSurface; /// @@ -63,13 +65,17 @@ public SKCanvasView() /// /// Gets the current canvas size. /// - /// The canvas size may be different to the view size as a result of the current device's pixel density. + /// + /// The canvas size may be different to the view size as a result of the current device's pixel density. + /// public SKSize CanvasSize => lastCanvasSize; /// /// Gets or sets a value indicating whether the drawing canvas should be resized on high resolution displays. /// - /// By default, when false, the canvas is resized to 1 canvas pixel per display pixel. When true, the canvas is resized to device independent pixels, and then stretched to fill the view. Although performance is improved and all objects are the same size on different display densities, blurring and pixelation may occur. + /// + /// By default, when false, the canvas is resized to 1 canvas pixel per display pixel. When true, the canvas is resized to device independent pixels, and then stretched to fill the view. Although performance is improved and all objects are the same size on different display densities, blurring and pixelation may occur. + /// public bool IgnorePixelScaling { get => (bool)GetValue(IgnorePixelScalingProperty); @@ -88,7 +94,9 @@ public bool EnableTouchEvents /// /// Informs the canvas that it needs to redraw itself. /// - /// This needs to be called from the main thread. + /// + /// This needs to be called from the main thread. + /// public void InvalidateSurface() { Handler?.Invoke(nameof(ISKCanvasView.InvalidateSurface)); diff --git a/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Controls/SKGLView.cs b/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Controls/SKGLView.cs index b05ed56dc2..fd6d8cdfc3 100644 --- a/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Controls/SKGLView.cs +++ b/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Controls/SKGLView.cs @@ -70,7 +70,8 @@ public bool EnableTouchEvents /// /// Occurs when the surface needs to be redrawn. /// - /// There are two ways to draw on this surface: by overriding the + /// + /// There are two ways to draw on this surface: by overriding the /// /// method, or by attaching a handler to the /// @@ -86,7 +87,8 @@ public bool EnableTouchEvents /// // draw on the canvas /// canvas.Flush (); /// }; - /// ``` + /// ``` + /// public event EventHandler? PaintSurface; /// @@ -97,7 +99,9 @@ public bool EnableTouchEvents /// /// Gets the current canvas size. /// - /// The canvas size may be different to the view size as a result of the current device's pixel density. + /// + /// The canvas size may be different to the view size as a result of the current device's pixel density. + /// public SKSize CanvasSize => lastCanvasSize; /// diff --git a/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/SKTouchEventArgs.cs b/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/SKTouchEventArgs.cs index b82ffd0511..190515bf6a 100644 --- a/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/SKTouchEventArgs.cs +++ b/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/SKTouchEventArgs.cs @@ -16,7 +16,9 @@ public class SKTouchEventArgs : EventArgs /// The type of touch action that initiated this event. /// The location of the touch. /// Whether or not the touch device is in contact with the screen. - /// This constructor sets the to and the to . + /// + /// This constructor sets the to and the to . + /// public SKTouchEventArgs(long id, SKTouchAction type, SKPoint location, bool inContact) : this(id, type, SKMouseButton.Left, SKTouchDeviceType.Touch, location, inContact, 0, 1) { @@ -82,7 +84,9 @@ public SKTouchEventArgs(long id, SKTouchAction type, SKMouseButton mouseButton, /// /// Gets the ID that can be used to track this particular event. /// - /// This ID represents the finger/pointer ID or mouse button number that initiated the event. This ID will remain the same for the duration of the touch operation. + /// + /// This ID represents the finger/pointer ID or mouse button number that initiated the event. This ID will remain the same for the duration of the touch operation. + /// public long Id { get; private set; } /// @@ -98,7 +102,9 @@ public SKTouchEventArgs(long id, SKTouchAction type, SKMouseButton mouseButton, /// /// Gets a value indicating which mouse button resulted in this event being raised. /// - /// If the mouse was used, then this property will indicate which button was pressed. If a finger (touch) or pen was used, then this property will indicate left button. + /// + /// If the mouse was used, then this property will indicate which button was pressed. If a finger (touch) or pen was used, then this property will indicate left button. + /// public SKMouseButton MouseButton { get; private set; } /// @@ -119,7 +125,9 @@ public SKTouchEventArgs(long id, SKTouchAction type, SKMouseButton mouseButton, /// /// Gets the pressure of the touch event. /// - /// The pressure generally ranges from 0 (no pressure at all) to 1 (normal pressure), however values higher than 1 may be generated depending on the calibration of the input device. + /// + /// The pressure generally ranges from 0 (no pressure at all) to 1 (normal pressure), however values higher than 1 may be generated depending on the calibration of the input device. + /// public float Pressure { get; private set; } /// diff --git a/source/SkiaSharp.Views/SkiaSharp.Views.Gtk3/SKDrawingArea.cs b/source/SkiaSharp.Views/SkiaSharp.Views.Gtk3/SKDrawingArea.cs index 3109325ca9..084fbaa94f 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views.Gtk3/SKDrawingArea.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views.Gtk3/SKDrawingArea.cs @@ -24,13 +24,16 @@ public SKDrawingArea() /// /// Gets the current canvas size. /// - /// The canvas size may be different to the view size as a result of the current device's pixel density. + /// + /// The canvas size may be different to the view size as a result of the current device's pixel density. + /// public SKSize CanvasSize => pix == null ? SKSize.Empty : new SKSize(pix.Width, pix.Height); /// /// Occurs when the the canvas needs to be redrawn. /// - /// There are two ways to draw on this surface: by overriding the + /// + /// There are two ways to draw on this surface: by overriding the /// /// method, or by attaching a handler to the /// @@ -45,7 +48,8 @@ public SKDrawingArea() /// // draw on the canvas /// canvas.Flush (); /// }; - /// ``` + /// ``` + /// [Category("Appearance")] public event EventHandler PaintSurface; diff --git a/source/SkiaSharp.Views/SkiaSharp.Views.Shared/SKPaintGLSurfaceEventArgs.cs b/source/SkiaSharp.Views/SkiaSharp.Views.Shared/SKPaintGLSurfaceEventArgs.cs index 94b383f3fa..0c6cd352de 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views.Shared/SKPaintGLSurfaceEventArgs.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views.Shared/SKPaintGLSurfaceEventArgs.cs @@ -27,7 +27,9 @@ namespace SkiaSharp.Views.Blazor /// /// Provides data for the event. /// - /// The event does not yet exist nor is this type currently in use, but exists for cross-platform compatibility. + /// + /// The event does not yet exist nor is this type currently in use, but exists for cross-platform compatibility. + /// public class SKPaintGLSurfaceEventArgs : EventArgs { /// diff --git a/source/SkiaSharp.Views/SkiaSharp.Views.WPF/SKElement.cs b/source/SkiaSharp.Views/SkiaSharp.Views.WPF/SKElement.cs index 9f61491208..6e9c555749 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views.WPF/SKElement.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views.WPF/SKElement.cs @@ -36,13 +36,17 @@ public SKElement() /// /// Gets the current canvas size. /// - /// The canvas size may be different to the view size as a result of the current device's pixel density. + /// + /// The canvas size may be different to the view size as a result of the current device's pixel density. + /// public SKSize CanvasSize { get; private set; } /// /// Gets or sets a value indicating whether the drawing canvas should be resized on high resolution displays. /// - /// By default, when false, the canvas is resized to 1 canvas pixel per display pixel. When true, the canvas is resized to device independent pixels, and then stretched to fill the view. Although performance is improved and all objects are the same size on different display densities, blurring and pixelation may occur. + /// + /// By default, when false, the canvas is resized to 1 canvas pixel per display pixel. When true, the canvas is resized to device independent pixels, and then stretched to fill the view. Although performance is improved and all objects are the same size on different display densities, blurring and pixelation may occur. + /// public bool IgnorePixelScaling { get => ignorePixelScaling; diff --git a/source/SkiaSharp.Views/SkiaSharp.Views.WinUI/SKSwapChainPanel.cs b/source/SkiaSharp.Views/SkiaSharp.Views.WinUI/SKSwapChainPanel.cs index 7485723b43..ed734f56c0 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views.WinUI/SKSwapChainPanel.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views.WinUI/SKSwapChainPanel.cs @@ -35,7 +35,9 @@ public SKSwapChainPanel() /// /// Gets the current canvas size. /// - /// The canvas size may be different to the view size as a result of the current device's pixel density. + /// + /// The canvas size may be different to the view size as a result of the current device's pixel density. + /// public SKSize CanvasSize => lastSize; /// @@ -46,7 +48,8 @@ public SKSwapChainPanel() /// /// Occurs when the surface needs to be redrawn. /// - /// There are two ways to draw on this surface: by overriding the + /// + /// There are two ways to draw on this surface: by overriding the /// /// method, or by attaching a handler to the /// @@ -61,7 +64,8 @@ public SKSwapChainPanel() /// // draw on the canvas /// canvas.Flush (); /// }; - /// ``` + /// ``` + /// public event EventHandler PaintSurface; protected virtual void OnPaintSurface(SKPaintGLSurfaceEventArgs e) diff --git a/source/SkiaSharp.Views/SkiaSharp.Views.WinUI/SKXamlCanvas.cs b/source/SkiaSharp.Views/SkiaSharp.Views.WinUI/SKXamlCanvas.cs index 56520a81af..a8ca710136 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views.WinUI/SKXamlCanvas.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views.WinUI/SKXamlCanvas.cs @@ -76,13 +76,17 @@ public SKXamlCanvas() /// /// Gets the current canvas size. /// - /// The canvas size may be different to the view size as a result of the current device's pixel density. + /// + /// The canvas size may be different to the view size as a result of the current device's pixel density. + /// public SKSize CanvasSize { get; private set; } /// /// Gets or sets a value indicating whether the drawing canvas should be resized on high resolution displays. /// - /// By default, when , the canvas is resized to 1 canvas pixel per display pixel. When , the canvas is resized to device independent pixels, and then stretched to fill the view. Although performance is improved and all objects are the same size on different display densities, blurring and pixelation may occur. + /// + /// By default, when , the canvas is resized to 1 canvas pixel per display pixel. When , the canvas is resized to device independent pixels, and then stretched to fill the view. Although performance is improved and all objects are the same size on different display densities, blurring and pixelation may occur. + /// public bool IgnorePixelScaling { get => ignorePixelScaling; @@ -101,7 +105,8 @@ public bool IgnorePixelScaling /// /// Occurs when the surface needs to be redrawn. /// - /// There are two ways to draw on this surface: by overriding the + /// + /// There are two ways to draw on this surface: by overriding the /// /// method, or by attaching a handler to the /// @@ -116,7 +121,8 @@ public bool IgnorePixelScaling /// // draw on the canvas /// canvas.Flush (); /// }; - /// ``` + /// ``` + /// public event EventHandler PaintSurface; protected virtual void OnPaintSurface(SKPaintSurfaceEventArgs e) diff --git a/source/SkiaSharp.Views/SkiaSharp.Views.WindowsForms/SKControl.cs b/source/SkiaSharp.Views/SkiaSharp.Views.WindowsForms/SKControl.cs index c44049773b..d9bd8047da 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views.WindowsForms/SKControl.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views.WindowsForms/SKControl.cs @@ -31,13 +31,16 @@ public SKControl() /// /// Gets the current canvas size. /// - /// The canvas size may be different to the view size as a result of the current device's pixel density. + /// + /// The canvas size may be different to the view size as a result of the current device's pixel density. + /// public SKSize CanvasSize => bitmap == null ? SKSize.Empty : new SKSize(bitmap.Width, bitmap.Height); /// /// Occurs when the the canvas needs to be redrawn. /// - /// There are two ways to draw on this surface: by overriding the + /// + /// There are two ways to draw on this surface: by overriding the /// /// method, or by attaching a handler to the /// @@ -52,7 +55,8 @@ public SKControl() /// // draw on the canvas /// canvas.Flush (); /// }; - /// ``` + /// ``` + /// [Category("Appearance")] public event EventHandler PaintSurface; diff --git a/source/SkiaSharp.Views/SkiaSharp.Views.WindowsForms/SKGLControl.cs b/source/SkiaSharp.Views/SkiaSharp.Views.WindowsForms/SKGLControl.cs index 6c430f72c6..f0dcea4451 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views.WindowsForms/SKGLControl.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views.WindowsForms/SKGLControl.cs @@ -75,7 +75,9 @@ private void Initialize() /// /// Gets the current canvas size. /// - /// The canvas size may be different to the view size as a result of the current device's pixel density. + /// + /// The canvas size may be different to the view size as a result of the current device's pixel density. + /// public SKSize CanvasSize => lastSize; /// @@ -86,7 +88,8 @@ private void Initialize() /// /// Occurs when the surface needs to be redrawn. /// - /// There are two ways to draw on this surface: by overriding the + /// + /// There are two ways to draw on this surface: by overriding the /// /// method, or by attaching a handler to the /// @@ -101,7 +104,8 @@ private void Initialize() /// // draw on the canvas /// canvas.Flush (); /// }; - /// ``` + /// ``` + /// [Category("Appearance")] public event EventHandler PaintSurface; diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/GLTextureView.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/GLTextureView.cs index ab248e3673..26392a7f45 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/GLTextureView.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/GLTextureView.cs @@ -107,7 +107,9 @@ protected override void Dispose(bool disposing) /// Set the GL wrapper. /// /// The GL wrapper. - /// Wrapping is typically used for debugging purposes. + /// + /// Wrapping is typically used for debugging purposes. + /// public void SetGLWrapper(IGLWrapper glWrapper) { this.glWrapper = glWrapper; @@ -117,7 +119,9 @@ public void SetGLWrapper(IGLWrapper glWrapper) /// Set the renderer associated with this view. Also starts the thread that will call the renderer, which in turn causes the rendering to start. /// /// The renderer to use to perform OpenGL drawing. - /// This method should be called once and only once in the life-cycle of a GLSurfaceView. + /// + /// This method should be called once and only once in the life-cycle of a GLSurfaceView. + /// public void SetRenderer(IRenderer renderer) { CheckRenderThreadState(); @@ -142,7 +146,9 @@ public void SetRenderer(IRenderer renderer) /// Install a custom context factory. /// /// The custom context factory. - /// If this method is called, it must be called before is called. + /// + /// If this method is called, it must be called before is called. + /// public void SetEGLContextFactory(IEGLContextFactory factory) { CheckRenderThreadState(); @@ -153,7 +159,9 @@ public void SetEGLContextFactory(IEGLContextFactory factory) /// Install a custom window surface factory. /// /// The custom window surface factory. - /// If this method is called, it must be called before is called. + /// + /// If this method is called, it must be called before is called. + /// public void SetEGLWindowSurfaceFactory(IEGLWindowSurfaceFactory factory) { CheckRenderThreadState(); @@ -164,10 +172,12 @@ public void SetEGLWindowSurfaceFactory(IEGLWindowSurfaceFactory factory) /// Install a custom config chooser. /// /// The custom config chooser. - /// If no EGL config chooser is set, then by default the view will choose an RGB + /// + /// If no EGL config chooser is set, then by default the view will choose an RGB /// 888 surface with a depth buffer depth of at least 16 bits. /// If this method is called, it must be called before - /// is called. + /// is called. + /// public void SetEGLConfigChooser(IEGLConfigChooser configChooser) { CheckRenderThreadState(); @@ -178,10 +188,12 @@ public void SetEGLConfigChooser(IEGLConfigChooser configChooser) /// Install a config chooser which will choose a config as close to 16-bit RGB as possible, with or without an optional depth buffer as close to 16-bits as possible. /// /// Whether or not to include a depth buffer. - /// If no EGL config chooser is set, then by default the view will choose an RGB + /// + /// If no EGL config chooser is set, then by default the view will choose an RGB /// 888 surface with a depth buffer depth of at least 16 bits. /// If this method is called, it must be called before - /// is called. + /// is called. + /// public void SetEGLConfigChooser(bool needDepth) { SetEGLConfigChooser(new SimpleEGLConfigChooser(this, needDepth)); @@ -196,10 +208,12 @@ public void SetEGLConfigChooser(bool needDepth) /// The size of the alpha. /// The size of the depth buffer. /// The size of the stencil buffer. - /// If no EGL config chooser is set, then by default the view will choose an RGB + /// + /// If no EGL config chooser is set, then by default the view will choose an RGB /// 888 surface with a depth buffer depth of at least 16 bits. /// If this method is called, it must be called before - /// is called. + /// is called. + /// public void SetEGLConfigChooser(int redSize, int greenSize, int blueSize, int alphaSize, int depthSize, int stencilSize) { SetEGLConfigChooser(new ComponentSizeChooser(this, redSize, greenSize, blueSize, alphaSize, depthSize, stencilSize)); @@ -209,7 +223,9 @@ public void SetEGLConfigChooser(int redSize, int greenSize, int blueSize, int al /// Inform the default context factory and default config chooser which context client version to pick. /// /// The context client version to choose. Use 2 for OpenGL ES 2.0 - /// If this method is called, it must be called before is called. + /// + /// If this method is called, it must be called before is called. + /// public void SetEGLContextClientVersion(int version) { CheckRenderThreadState(); @@ -280,7 +296,9 @@ public void OnSurfaceTextureSizeChanged(SurfaceTexture surface, int w, int h) /// /// Inform the view that the activity is paused. /// - /// The owner of this view must call this method when the activity is paused. Calling this method will pause the rendering thread. Must not be called before a renderer has been set. + /// + /// The owner of this view must call this method when the activity is paused. Calling this method will pause the rendering thread. Must not be called before a renderer has been set. + /// public void OnPause() { glThread.OnPause(); @@ -289,7 +307,9 @@ public void OnPause() /// /// Inform the view that the activity is resumed. /// - /// The owner of this view must call this method when the activity is resumed. Calling this method will recreate the OpenGL display and resume the rendering thread. Must not be called before a renderer has been set. + /// + /// The owner of this view must call this method when the activity is resumed. Calling this method will recreate the OpenGL display and resume the rendering thread. Must not be called before a renderer has been set. + /// public void OnResume() { glThread.OnResume(); @@ -391,7 +411,9 @@ private static void LogError(string message) /// /// An interface used to wrap a GL interface. /// - /// Typically used for implementing debugging and tracing on top of the default GL interface. You would typically use this by creating your own class that implemented all the GL methods by delegating to another GL instance. Then you could add your own behavior before or after calling the delegate. All the wrapper would do was instantiate and return the wrapped GL instance. + /// + /// Typically used for implementing debugging and tracing on top of the default GL interface. You would typically use this by creating your own class that implemented all the GL methods by delegating to another GL instance. Then you could add your own behavior before or after calling the delegate. All the wrapper would do was instantiate and return the wrapped GL instance. + /// public interface IGLWrapper { IGL Wrap(IGL gl); @@ -428,11 +450,13 @@ public interface IEGLWindowSurfaceFactory /// /// A generic renderer interface. /// - /// The renderer is responsible for making OpenGL calls to render a frame. + /// + /// The renderer is responsible for making OpenGL calls to render a frame. /// Typically, clients create their /// own classes that implement this interface, and then call - /// - /// to register the renderer with the . + /// + /// to register the renderer with the . + /// public interface IRenderer { void OnDrawFrame(IGL10 gl); diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKCanvasView.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKCanvasView.cs index 352daabc0e..cf25e8f550 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKCanvasView.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKCanvasView.cs @@ -82,13 +82,17 @@ private void Initialize(IAttributeSet attrs = null) /// /// Gets the current canvas size. /// - /// The canvas size may be different to the view size as a result of the current device's pixel density. + /// + /// The canvas size may be different to the view size as a result of the current device's pixel density. + /// public SKSize CanvasSize { get; private set; } /// /// Gets or sets a value indicating whether the drawing canvas should be resized on high resolution displays. /// - /// By default, when false, the canvas is resized to 1 canvas pixel per display pixel. When true, the canvas is resized to device independent pixels, and then stretched to fill the view. Although performance is improved and all objects are the same size on different display densities, blurring and pixelation may occur. + /// + /// By default, when false, the canvas is resized to 1 canvas pixel per display pixel. When true, the canvas is resized to device independent pixels, and then stretched to fill the view. Although performance is improved and all objects are the same size on different display densities, blurring and pixelation may occur. + /// public bool IgnorePixelScaling { get => ignorePixelScaling; @@ -153,7 +157,8 @@ protected override void OnSizeChanged(int w, int h, int oldw, int oldh) /// /// Occurs when the the canvas needs to be redrawn. /// - /// There are two ways to draw on this surface: by overriding the + /// + /// There are two ways to draw on this surface: by overriding the /// /// method, or by attaching a handler to the /// @@ -169,7 +174,8 @@ protected override void OnSizeChanged(int w, int h, int oldw, int oldh) /// // draw on the canvas /// canvas.Flush(); /// }; - /// ``` + /// ``` + /// public event EventHandler PaintSurface; protected virtual void OnPaintSurface(SKPaintSurfaceEventArgs e) diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLSurfaceView.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLSurfaceView.cs index ea6de06fdf..7e77e01a0d 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLSurfaceView.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLSurfaceView.cs @@ -46,7 +46,9 @@ private void Initialize() /// /// Gets the current canvas size. /// - /// The canvas size may be different to the view size as a result of the current device's pixel density. + /// + /// The canvas size may be different to the view size as a result of the current device's pixel density. + /// public SKSize CanvasSize => renderer.CanvasSize; /// @@ -57,7 +59,8 @@ private void Initialize() /// /// Occurs when the surface needs to be redrawn. /// - /// There are two ways to draw on this surface: by overriding the + /// + /// There are two ways to draw on this surface: by overriding the /// /// method, or by attaching a handler to the /// @@ -77,7 +80,8 @@ private void Initialize() /// // draw on the canvas /// canvas.Flush (); /// }; - /// ``` + /// ``` + /// public event EventHandler PaintSurface; protected virtual void OnPaintSurface(SKPaintGLSurfaceEventArgs e) diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLSurfaceViewRenderer.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLSurfaceViewRenderer.cs index e3aacee229..b6ae0d5f5e 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLSurfaceViewRenderer.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLSurfaceViewRenderer.cs @@ -27,7 +27,9 @@ public abstract class SKGLSurfaceViewRenderer : Java.Lang.Object, GLSurfaceView. /// /// Gets the current canvas size. /// - /// The canvas size may be different to the view size as a result of the current device's pixel density. + /// + /// The canvas size may be different to the view size as a result of the current device's pixel density. + /// public SKSize CanvasSize => lastSize; /// diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureView.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureView.cs index 873cde0f8f..da0b014fd3 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureView.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureView.cs @@ -57,7 +57,9 @@ private void Initialize() /// /// Gets the current canvas size. /// - /// The canvas size may be different to the view size as a result of the current device's pixel density. + /// + /// The canvas size may be different to the view size as a result of the current device's pixel density. + /// public SKSize CanvasSize => renderer.CanvasSize; /// @@ -68,7 +70,8 @@ private void Initialize() /// /// Occurs when the surface needs to be redrawn. /// - /// There are two ways to draw on this surface: by overriding the + /// + /// There are two ways to draw on this surface: by overriding the /// /// method, or by attaching a handler to the /// @@ -88,7 +91,8 @@ private void Initialize() /// // draw on the canvas /// canvas.Flush (); /// }; - /// ``` + /// ``` + /// public event EventHandler PaintSurface; protected virtual void OnPaintSurface(SKPaintGLSurfaceEventArgs e) diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureViewRenderer.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureViewRenderer.cs index 93ac949041..97ad529c36 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureViewRenderer.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureViewRenderer.cs @@ -38,7 +38,9 @@ abstract partial class SKGLTextureViewRenderer : Java.Lang.Object, GLTextureView /// /// Gets the current canvas size. /// - /// The canvas size may be different to the view size as a result of the current device's pixel density. + /// + /// The canvas size may be different to the view size as a result of the current device's pixel density. + /// public SKSize CanvasSize => lastSize; /// diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKSurfaceView.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKSurfaceView.cs index db28aad650..5879f51da4 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKSurfaceView.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKSurfaceView.cs @@ -54,7 +54,9 @@ private void Initialize() /// /// Gets the current canvas size. /// - /// The canvas size may be different to the view size as a result of the current device's pixel density. + /// + /// The canvas size may be different to the view size as a result of the current device's pixel density. + /// public SKSize CanvasSize => surfaceFactory.Info.Size; // ISurfaceHolderCallback diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Apple/SKCanvasLayer.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Apple/SKCanvasLayer.cs index 39f6ac89f1..0029b52406 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Apple/SKCanvasLayer.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Apple/SKCanvasLayer.cs @@ -33,13 +33,17 @@ public SKCanvasLayer() /// /// Gets the current canvas size. /// - /// The canvas size may be different to the view size as a result of the current device's pixel density. + /// + /// The canvas size may be different to the view size as a result of the current device's pixel density. + /// public SKSize CanvasSize { get; private set; } /// /// Gets or sets a value indicating whether the drawing canvas should be resized on high resolution displays. /// - /// By default, when false, the canvas is resized to 1 canvas pixel per display pixel. When true, the canvas is resized to device independent pixels, and then stretched to fill the view. Although performance is improved and all objects are the same size on different display densities, blurring and pixelation may occur. + /// + /// By default, when false, the canvas is resized to 1 canvas pixel per display pixel. When true, the canvas is resized to device independent pixels, and then stretched to fill the view. Although performance is improved and all objects are the same size on different display densities, blurring and pixelation may occur. + /// public bool IgnorePixelScaling { get => ignorePixelScaling; @@ -90,7 +94,8 @@ public override void DrawInContext(CGContext ctx) /// /// Occurs when the the canvas needs to be redrawn. /// - /// There are two ways to draw on this surface: by overriding the + /// + /// There are two ways to draw on this surface: by overriding the /// /// method, or by attaching a handler to the /// @@ -110,7 +115,8 @@ public override void DrawInContext(CGContext ctx) /// // draw on the canvas /// canvas.Flush (); /// }; - /// ``` + /// ``` + /// public event EventHandler PaintSurface; protected virtual void OnPaintSurface(SKPaintSurfaceEventArgs e) diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/CustomRenderingView.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/CustomRenderingView.cs index bfaebef89e..ab9ff2c3e4 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/CustomRenderingView.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/CustomRenderingView.cs @@ -26,7 +26,9 @@ public CustomRenderingView(EvasObject parent) /// /// Gets the current canvas size. /// - /// The canvas size may be different to the view size as a result of the current device's pixel density. + /// + /// The canvas size may be different to the view size as a result of the current device's pixel density. + /// public SKSize CanvasSize => GetSurfaceSize(); /// diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/SKCanvasView.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/SKCanvasView.cs index 2510d4d548..f45957ee29 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/SKCanvasView.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/SKCanvasView.cs @@ -22,7 +22,9 @@ public SKCanvasView(EvasObject parent) /// /// Gets or sets a value indicating whether the drawing canvas should be resized on high resolution displays. /// - /// By default, when , the canvas is resized to 1 canvas pixel per display pixel. When , the canvas is resized to device independent pixels, and then stretched to fill the view. Although performance is improved and all objects are the same size on different display densities, blurring and pixelation may occur. + /// + /// By default, when , the canvas is resized to 1 canvas pixel per display pixel. When , the canvas is resized to device independent pixels, and then stretched to fill the view. Although performance is improved and all objects are the same size on different display densities, blurring and pixelation may occur. + /// public bool IgnorePixelScaling { get => ignorePixelScaling; @@ -40,7 +42,8 @@ public bool IgnorePixelScaling /// /// Occurs when the surface needs to be redrawn. /// - /// There are two ways to draw on this surface: by overriding the + /// + /// There are two ways to draw on this surface: by overriding the /// /// method, or by attaching a handler to the /// @@ -55,7 +58,8 @@ public bool IgnorePixelScaling /// // draw on the canvas /// canvas.Flush (); /// }; - /// ``` + /// ``` + /// public event EventHandler PaintSurface; protected override SKSizeI GetSurfaceSize() => canvasSize; diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/SKGLSurfaceView.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/SKGLSurfaceView.cs index 576ed7ea02..6502e954a6 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/SKGLSurfaceView.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/SKGLSurfaceView.cs @@ -46,7 +46,8 @@ public SKGLSurfaceView(EvasObject parent) /// /// Occurs when the surface needs to be redrawn. /// - /// There are two ways to draw on this surface: by overriding the + /// + /// There are two ways to draw on this surface: by overriding the /// /// method, or by attaching a handler to the /// @@ -61,7 +62,8 @@ public SKGLSurfaceView(EvasObject parent) /// // draw on the canvas /// canvas.Flush (); /// }; - /// ``` + /// ``` + /// public event EventHandler PaintSurface; /// diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKCanvasView.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKCanvasView.cs index bfe6bac57b..eeb78fcd0f 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKCanvasView.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKCanvasView.cs @@ -84,13 +84,17 @@ private void Initialize() /// /// Gets the current canvas size. /// - /// The canvas size may be different to the view size as a result of the current device's pixel density. + /// + /// The canvas size may be different to the view size as a result of the current device's pixel density. + /// public SKSize CanvasSize { get; private set; } /// /// Gets or sets a value indicating whether the drawing canvas should be resized on high resolution displays. /// - /// By default, when false, the canvas is resized to 1 canvas pixel per display pixel. When true, the canvas is resized to device independent pixels, and then stretched to fill the view. Although performance is improved and all objects are the same size on different display densities, blurring and pixelation may occur. + /// + /// By default, when false, the canvas is resized to 1 canvas pixel per display pixel. When true, the canvas is resized to device independent pixels, and then stretched to fill the view. Although performance is improved and all objects are the same size on different display densities, blurring and pixelation may occur. + /// public bool IgnorePixelScaling { get => ignorePixelScaling; @@ -161,7 +165,8 @@ public override void WillMoveToWindow(UIWindow window) /// /// Occurs when the the canvas needs to be redrawn. /// - /// There are two ways to draw on this surface: by overriding the + /// + /// There are two ways to draw on this surface: by overriding the /// /// method, or by attaching a handler to the /// @@ -181,7 +186,8 @@ public override void WillMoveToWindow(UIWindow window) /// // draw on the canvas /// canvas.Flush (); /// }; - /// ``` + /// ``` + /// public event EventHandler PaintSurface; protected virtual void OnPaintSurface(SKPaintSurfaceEventArgs e) diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLLayer.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLLayer.cs index 4948cdd7c0..7f0981b455 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLLayer.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLLayer.cs @@ -52,7 +52,9 @@ public SKGLLayer() /// /// Gets the current canvas size. /// - /// The canvas size may be different to the view size as a result of the current device's pixel density. + /// + /// The canvas size may be different to the view size as a result of the current device's pixel density. + /// public SKSize CanvasSize => lastSize; /// @@ -149,7 +151,8 @@ public override CGRect Frame /// /// Occurs when the the canvas needs to be redrawn. /// - /// There are two ways to draw on this surface: by overriding the + /// + /// There are two ways to draw on this surface: by overriding the /// /// method, or by attaching a handler to the /// @@ -169,7 +172,8 @@ public override CGRect Frame /// // draw on the canvas /// canvas.Flush (); /// }; - /// ``` + /// ``` + /// public event EventHandler PaintSurface; protected virtual void OnPaintSurface(SKPaintGLSurfaceEventArgs e) diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLView.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLView.cs index 1b3fdf1f6b..032f44500f 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLView.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLView.cs @@ -121,7 +121,9 @@ private void Initialize() /// /// Gets the current canvas size. /// - /// The canvas size may be different to the view size as a result of the current device's pixel density. + /// + /// The canvas size may be different to the view size as a result of the current device's pixel density. + /// public SKSize CanvasSize => lastSize; /// @@ -196,7 +198,8 @@ private void Initialize() /// /// Occurs when the surface needs to be redrawn. /// - /// There are two ways to draw on this surface: by overriding the + /// + /// There are two ways to draw on this surface: by overriding the /// /// method, or by attaching a handler to the /// @@ -216,7 +219,8 @@ private void Initialize() /// // draw on the canvas /// canvas.Flush (); /// }; - /// ``` + /// ``` + /// public event EventHandler PaintSurface; protected virtual void OnPaintSurface(SKPaintGLSurfaceEventArgs e) diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKCanvasView.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKCanvasView.cs index 915ed08747..d56744ee50 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKCanvasView.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKCanvasView.cs @@ -63,13 +63,17 @@ private void Initialize() /// /// Gets the current canvas size. /// - /// The canvas size may be different to the view size as a result of the current device's pixel density. + /// + /// The canvas size may be different to the view size as a result of the current device's pixel density. + /// public SKSize CanvasSize { get; private set; } /// /// Gets or sets a value indicating whether the drawing canvas should be resized on high resolution displays. /// - /// By default, when false, the canvas is resized to 1 canvas pixel per display pixel. When true, the canvas is resized to device independent pixels, and then stretched to fill the view. Although performance is improved and all objects are the same size on different display densities, blurring and pixelation may occur. + /// + /// By default, when false, the canvas is resized to 1 canvas pixel per display pixel. When true, the canvas is resized to device independent pixels, and then stretched to fill the view. Although performance is improved and all objects are the same size on different display densities, blurring and pixelation may occur. + /// public bool IgnorePixelScaling { get => ignorePixelScaling; @@ -83,7 +87,8 @@ public bool IgnorePixelScaling /// /// Occurs when the the canvas needs to be redrawn. /// - /// There are two ways to draw on this surface: by overriding the + /// + /// There are two ways to draw on this surface: by overriding the /// /// method, or by attaching a handler to the /// @@ -103,7 +108,8 @@ public bool IgnorePixelScaling /// // draw on the canvas /// canvas.Flush (); /// }; - /// ``` + /// ``` + /// public event EventHandler PaintSurface; protected virtual void OnPaintSurface(SKPaintSurfaceEventArgs e) diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLLayer.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLLayer.cs index 3d2a986fb0..d1b391a92f 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLLayer.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLLayer.cs @@ -35,7 +35,9 @@ public SKGLLayer() /// /// Gets the current canvas size. /// - /// The canvas size may be different to the view size as a result of the current device's pixel density. + /// + /// The canvas size may be different to the view size as a result of the current device's pixel density. + /// public SKSize CanvasSize => lastSize; /// @@ -46,7 +48,8 @@ public SKGLLayer() /// /// Occurs when the the canvas needs to be redrawn. /// - /// There are two ways to draw on this surface: by overriding the + /// + /// There are two ways to draw on this surface: by overriding the /// /// method, or by attaching a handler to the /// @@ -66,7 +69,8 @@ public SKGLLayer() /// // draw on the canvas /// canvas.Flush (); /// }; - /// ``` + /// ``` + /// public event EventHandler PaintSurface; protected virtual void OnPaintSurface(SKPaintGLSurfaceEventArgs e) diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLView.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLView.cs index d636fccb02..946bd79e3b 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLView.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLView.cs @@ -101,7 +101,9 @@ private void Initialize() /// /// Gets the current canvas size. /// - /// The canvas size may be different to the view size as a result of the current device's pixel density. + /// + /// The canvas size may be different to the view size as a result of the current device's pixel density. + /// public SKSize CanvasSize => lastSize; /// @@ -212,7 +214,8 @@ public override void DrawRect(CGRect dirtyRect) /// /// Occurs when the surface needs to be redrawn. /// - /// There are two ways to draw on this surface: by overriding the + /// + /// There are two ways to draw on this surface: by overriding the /// /// method, or by attaching a handler to the /// @@ -232,7 +235,8 @@ public override void DrawRect(CGRect dirtyRect) /// // draw on the canvas /// canvas.Flush (); /// }; - /// ``` + /// ``` + /// public event EventHandler PaintSurface; protected virtual void OnPaintSurface(SKPaintGLSurfaceEventArgs e) From 8c0231b1ca2bea20de528fd2d18adce42e5fd776 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Fri, 5 Sep 2025 18:40:13 +0200 Subject: [PATCH 25/35] SkiaSharp is green --- binding/SkiaSharp/GRContext.cs | 2 +- binding/SkiaSharp/SKBitmap.cs | 34 +++++++++---------- binding/SkiaSharp/SKCanvas.cs | 16 ++++----- binding/SkiaSharp/SKCodec.cs | 4 +-- binding/SkiaSharp/SKColorFilter.cs | 10 +++--- binding/SkiaSharp/SKData.cs | 2 +- binding/SkiaSharp/SKDocument.cs | 2 +- binding/SkiaSharp/SKImage.cs | 6 ++-- binding/SkiaSharp/SKMatrix.cs | 2 +- binding/SkiaSharp/SKMatrix44.cs | 14 ++++---- binding/SkiaSharp/SKPaint.cs | 24 -------------- binding/SkiaSharp/SKPath.cs | 46 +++++++++++++------------- binding/SkiaSharp/SKPictureRecorder.cs | 4 +-- binding/SkiaSharp/SKSurface.cs | 6 ++-- binding/SkiaSharp/SKTypeface.cs | 18 +++++----- binding/SkiaSharp/SkiaApi.generated.cs | 24 +++++--------- 16 files changed, 91 insertions(+), 123 deletions(-) diff --git a/binding/SkiaSharp/GRContext.cs b/binding/SkiaSharp/GRContext.cs index a79f6c0f81..707df2c8c9 100644 --- a/binding/SkiaSharp/GRContext.cs +++ b/binding/SkiaSharp/GRContext.cs @@ -239,7 +239,7 @@ public void PurgeUnlockedResources (bool scratchResourcesOnly) => public void PurgeUnlockedResources (long bytesToPurge, bool preferScratchResources) => SkiaApi.gr_direct_context_purge_unlocked_resources_bytes (Handle, (IntPtr)bytesToPurge, preferScratchResources); - internal static GRContext GetObject (IntPtr handle, bool owns = true, bool unrefExisting = true) => + internal static new GRContext GetObject (IntPtr handle, bool owns = true, bool unrefExisting = true) => GetOrAddObject (handle, owns, unrefExisting, (h, o) => new GRContext (h, o)); } } diff --git a/binding/SkiaSharp/SKBitmap.cs b/binding/SkiaSharp/SKBitmap.cs index 8947e69e1d..9e94938463 100644 --- a/binding/SkiaSharp/SKBitmap.cs +++ b/binding/SkiaSharp/SKBitmap.cs @@ -15,7 +15,7 @@ namespace SkiaSharp /// The specifies a raster bitmap. /// /// - /// A bitmap has an integer width and height, and a format (color type), and a pointer to the actual pixels. Bitmaps can be drawn into a , but they are also used to specify the target of a ' drawing operations.A exposes , which lets a caller write its pixels. To retrieve a pointer to the raw image data of the bitmap, call the method, and then call the method to get a pointer to the image data. Once you no longer need to use the raw data pointer, call the method. The raw data is laid out in the format configured at the time that the bitmap was created.(Note: As of SkiaSharp 1.60.0, calls to and are no longer required, and they no longer exist as part of the API.) + /// A bitmap has an integer width and height, and a format (color type), and a pointer to the actual pixels. Bitmaps can be drawn into a , but they are also used to specify the target of a ' drawing operations.A exposes , which lets a caller write its pixels. To retrieve a pointer to the raw image data of the bitmap, call the GetPixels method to get a pointer to the image data. The raw data is laid out in the format configured at the time that the bitmap was created.(Note: As of SkiaSharp 1.60.0, calls to LockPixels and UnlockPixels are no longer required, and they no longer exist as part of the API.) /// public unsafe class SKBitmap : SKObject, ISKSkipObjectRegistration { @@ -233,7 +233,7 @@ public IntPtr GetAddress (int x, int y) => /// /// The x-cordinate. /// The y-cordinate. - /// Alpha only color types return black with the appropriate alpha set. The value is undefined for , if the coordinates are out of bounds, if the bitmap does not have any pixels, or has not be locked with . + /// Alpha only color types return black with the appropriate alpha set. The value is undefined for , if the coordinates are out of bounds, if the bitmap does not have any pixels. /// /// In most cases this will require unpremultiplying the color. /// @@ -266,7 +266,7 @@ public void SetPixel (int x, int y, SKColor color) // Copy /// - /// Returns true if this bitmap's pixels can be converted into the requested color type, such that or could succeed. + /// Returns true if this bitmap's pixels can be converted into the requested color type, such that or could succeed. /// /// The color type to check with. /// Returns true if this bitmap's pixels can be converted into the requested color type. @@ -288,7 +288,7 @@ public bool CanCopyTo (SKColorType colorType) /// /// Copies the contents of the bitmap and returns the copy. /// - /// The copy of the bitmap, or on error. + /// The copy of the bitmap, or on error. public SKBitmap Copy () { return Copy (ColorType); @@ -298,7 +298,7 @@ public SKBitmap Copy () /// Copies the contents of the bitmap with the specified color type and returns the copy. /// /// The color type to use for the copy of the bitmap. - /// The copy of the bitmap, or on error. + /// The copy of the bitmap, or on error. public SKBitmap Copy (SKColorType colorType) { var destination = new SKBitmap (); @@ -735,7 +735,7 @@ public static SKImageInfo DecodeBounds (ReadOnlySpan buffer) /// Decode a bitmap using the specified codec. /// /// The codec to decode. - /// The decoded bitmap, or on error. + /// The decoded bitmap, or on error. public static SKBitmap Decode (SKCodec codec) { if (codec == null) { @@ -753,7 +753,7 @@ public static SKBitmap Decode (SKCodec codec) /// /// The codec to decode. /// The destination image information. - /// The decoded bitmap, or on error. + /// The decoded bitmap, or on error. public static SKBitmap Decode (SKCodec codec, SKImageInfo bitmapInfo) { if (codec == null) { @@ -773,7 +773,7 @@ public static SKBitmap Decode (SKCodec codec, SKImageInfo bitmapInfo) /// Decode a bitmap using the specified stream and destination image information. /// /// The stream to decode. - /// The decoded bitmap, or on error. + /// The decoded bitmap, or on error. public static SKBitmap Decode (Stream stream) { if (stream == null) { @@ -792,7 +792,7 @@ public static SKBitmap Decode (Stream stream) /// /// The stream to decode. /// The destination image information. - /// The decoded bitmap, or on error. + /// The decoded bitmap, or on error. public static SKBitmap Decode (Stream stream, SKImageInfo bitmapInfo) { if (stream == null) { @@ -810,7 +810,7 @@ public static SKBitmap Decode (Stream stream, SKImageInfo bitmapInfo) /// Decode a bitmap using the specified stream. /// /// The stream to decode. - /// The decoded bitmap, or on error. + /// The decoded bitmap, or on error. public static SKBitmap Decode (SKStream stream) { if (stream == null) { @@ -829,7 +829,7 @@ public static SKBitmap Decode (SKStream stream) /// /// The stream to decode. /// The destination image information. - /// The decoded bitmap, or on error. + /// The decoded bitmap, or on error. public static SKBitmap Decode (SKStream stream, SKImageInfo bitmapInfo) { if (stream == null) { @@ -847,7 +847,7 @@ public static SKBitmap Decode (SKStream stream, SKImageInfo bitmapInfo) /// Decode a bitmap using the specified data. /// /// The data to decode. - /// The decoded bitmap, or on error. + /// The decoded bitmap, or on error. public static SKBitmap Decode (SKData data) { if (data == null) { @@ -866,7 +866,7 @@ public static SKBitmap Decode (SKData data) /// /// The data to decode. /// The destination image information. - /// The decoded bitmap, or on error. + /// The decoded bitmap, or on error. public static SKBitmap Decode (SKData data, SKImageInfo bitmapInfo) { if (data == null) { @@ -884,7 +884,7 @@ public static SKBitmap Decode (SKData data, SKImageInfo bitmapInfo) /// Decode a bitmap for the specified filename. /// /// The filename of the bitmap to decode. - /// The decoded bitmap, or on error. + /// The decoded bitmap, or on error. public static SKBitmap Decode (string filename) { if (filename == null) { @@ -903,7 +903,7 @@ public static SKBitmap Decode (string filename) /// /// The filename of the bitmap to decode. /// The destination image information. - /// The decoded bitmap, or on error. + /// The decoded bitmap, or on error. public static SKBitmap Decode (string filename, SKImageInfo bitmapInfo) { if (filename == null) { @@ -921,7 +921,7 @@ public static SKBitmap Decode (string filename, SKImageInfo bitmapInfo) /// Decode a bitmap using the specified byte buffer. /// /// The byte buffer to decode. - /// The decoded bitmap, or on error. + /// The decoded bitmap, or on error. public static SKBitmap Decode (byte[] buffer) => Decode (buffer.AsSpan ()); @@ -930,7 +930,7 @@ public static SKBitmap Decode (byte[] buffer) => /// /// The byte buffer to decode. /// The destination image information. - /// The decoded bitmap, or on error. + /// The decoded bitmap, or on error. public static SKBitmap Decode (byte[] buffer, SKImageInfo bitmapInfo) => Decode (buffer.AsSpan (), bitmapInfo); diff --git a/binding/SkiaSharp/SKCanvas.cs b/binding/SkiaSharp/SKCanvas.cs index 8375ebfa5c..bdcd733fe2 100644 --- a/binding/SkiaSharp/SKCanvas.cs +++ b/binding/SkiaSharp/SKCanvas.cs @@ -145,14 +145,14 @@ namespace SkiaSharp /// The canvas supports a number of 2D transformations. Unlike other 2D graphic /// systems like CoreGraphics or Cairo, SKCanvas extends the transformations to /// include perspectives. - /// You can use the , - /// , , - /// , - /// to perform some of the most common + /// You can use the , + /// , , + /// , + /// to perform some of the most common /// 2D transformations. - /// For more control you can use the to set + /// For more control you can use the to set /// an arbitrary transformation using the and the - /// to concatenate an + /// to concatenate an /// transformation to the current matrix in use. /// The can be used to reset the state of /// the matrix. @@ -167,7 +167,7 @@ namespace SkiaSharp /// state by using the or /// methods. /// Additionally, it is possible to push a new state with - /// which will make an offscreen copy of a + /// which will make an offscreen copy of a /// region, and once the drawing is completed, calling the /// method which copies the offscreen bitmap /// into this canvas. @@ -1113,7 +1113,7 @@ public void DrawPicture (SKPicture picture, SKPoint p, SKPaint paint = null) /// The paint to use when drawing the picture, or . /// /// This is equivalent to calling , followed by - /// with the specified `matrix`, + /// with the specified `matrix`, /// /// and then . /// If paint is non-null, the picture is drawn into a temporary buffer, and then diff --git a/binding/SkiaSharp/SKCodec.cs b/binding/SkiaSharp/SKCodec.cs index ddd6423730..4633dfa856 100644 --- a/binding/SkiaSharp/SKCodec.cs +++ b/binding/SkiaSharp/SKCodec.cs @@ -329,7 +329,7 @@ public SKCodecResult StartIncrementalDecode (SKImageInfo info, IntPtr pixels, in /// The total number of lines initialized. Only meaningful if this method returns . /// Returns if all lines requested in have been completely decoded. otherwise. /// - /// Unlike , this does not do any filling. This is left up to the caller, since they may be skipping lines or continuing the decode later. + /// Unlike , this does not do any filling. This is left up to the caller, since they may be skipping lines or continuing the decode later. /// public SKCodecResult IncrementalDecode (out int rowsDecoded) { @@ -343,7 +343,7 @@ public SKCodecResult IncrementalDecode (out int rowsDecoded) /// /// Returns if all lines requested in have been completely decoded. otherwise. /// - /// Unlike , this does not do any filling. This is left up to the caller, since they may be skipping lines or continuing the decode later. + /// Unlike , this does not do any filling. This is left up to the caller, since they may be skipping lines or continuing the decode later. /// public SKCodecResult IncrementalDecode () => SkiaApi.sk_codec_incremental_decode (Handle, null); diff --git a/binding/SkiaSharp/SKColorFilter.cs b/binding/SkiaSharp/SKColorFilter.cs index 5ea3c564fb..42fed6e5bf 100644 --- a/binding/SkiaSharp/SKColorFilter.cs +++ b/binding/SkiaSharp/SKColorFilter.cs @@ -143,7 +143,7 @@ public static SKColorFilter CreateLumaColor() /// /// Creates a new table color filter. /// - /// The table of values for each color component, with a length of . + /// The table of values for each color component, with a length of . /// Returns the new . public static SKColorFilter CreateTable(byte[] table) { @@ -164,10 +164,10 @@ public static SKColorFilter CreateTable(ReadOnlySpan table) /// /// Creates a new table color filter. /// - /// The table of values for the alpha component, with a length of . - /// The table of values for the red component, with a length of . - /// The table of values for the green component, with a length of . - /// The table of values for the blue component, with a length of . + /// The table of values for the alpha component, with a length of . + /// The table of values for the red component, with a length of . + /// The table of values for the green component, with a length of . + /// The table of values for the blue component, with a length of . /// Returns the new . public static SKColorFilter CreateTable(byte[] tableA, byte[] tableR, byte[] tableG, byte[] tableB) { diff --git a/binding/SkiaSharp/SKData.cs b/binding/SkiaSharp/SKData.cs index afbe22f678..8311e2ddc8 100644 --- a/binding/SkiaSharp/SKData.cs +++ b/binding/SkiaSharp/SKData.cs @@ -12,7 +12,7 @@ namespace SkiaSharp /// The holds an immutable data buffer. /// /// - /// Not only is the data immutable, but the actual pointer that is returned by the property is guaranteed to always be the same for the life of this instance.The method can be used to return a that wraps this and allows for .NET APIs to scan the contents of the as a stream. + /// Not only is the data immutable, but the actual pointer that is returned by the property is guaranteed to always be the same for the life of this instance.The method can be used to return a that wraps this and allows for .NET APIs to scan the contents of the as a stream. /// public unsafe class SKData : SKObject, ISKNonVirtualReferenceCounted { diff --git a/binding/SkiaSharp/SKDocument.cs b/binding/SkiaSharp/SKDocument.cs index b281c9867b..8c06ffb180 100644 --- a/binding/SkiaSharp/SKDocument.cs +++ b/binding/SkiaSharp/SKDocument.cs @@ -10,7 +10,7 @@ namespace SkiaSharp /// A high-level API for creating a document-based canvas. /// /// - /// For each page, call to get the + /// For each page, call to get the /// canvas, and then complete the page with a call to /// . Finally, call /// to complete the document. diff --git a/binding/SkiaSharp/SKImage.cs b/binding/SkiaSharp/SKImage.cs index cb46dd4902..464e9f4ed6 100644 --- a/binding/SkiaSharp/SKImage.cs +++ b/binding/SkiaSharp/SKImage.cs @@ -700,11 +700,11 @@ private static SKImage FromPicture (SKPicture picture, SKSizeI dimensions, SKMat } /// - /// Encodes the image using the format. + /// Encodes the image using the format. /// /// Returns the wrapping the encoded image. /// - /// Use the overload that takes a if you want to encode in a different format. + /// Use the overload that takes a if you want to encode in a different format. /// public SKData Encode () { @@ -892,7 +892,7 @@ public SKPixmap PeekPixels () /// Gets a value indicating whether the image is backed by an image-generator or other source that creates (and caches) its pixels / texture on-demand. /// /// - /// If this method returns , then will return . + /// If this method returns , then will return . /// public bool IsLazyGenerated => SkiaApi.sk_image_is_lazy_generated (Handle); diff --git a/binding/SkiaSharp/SKMatrix.cs b/binding/SkiaSharp/SKMatrix.cs index cfc9d92623..56b78276aa 100644 --- a/binding/SkiaSharp/SKMatrix.cs +++ b/binding/SkiaSharp/SKMatrix.cs @@ -477,7 +477,7 @@ public readonly SKPoint MapVector (SKPoint vector) => /// The y-component of the vector. /// Returns the mapped point. /// - /// Mapping vectors ignores the translation component in the matrix. Use to take the translation into consideration. + /// Mapping vectors ignores the translation component in the matrix. Use to take the translation into consideration. /// public readonly SKPoint MapVector (float x, float y) { diff --git a/binding/SkiaSharp/SKMatrix44.cs b/binding/SkiaSharp/SKMatrix44.cs index c285b0988f..91eb0db9b0 100644 --- a/binding/SkiaSharp/SKMatrix44.cs +++ b/binding/SkiaSharp/SKMatrix44.cs @@ -79,7 +79,7 @@ public SKMatrix44 ( /// /// Returns the new identity matrix. /// - /// This is equivalent to creating an uninitialized matrix, and invoking . + /// This is equivalent to creating an identity matrix. /// public static SKMatrix44 CreateIdentity () => Identity; @@ -97,7 +97,7 @@ public static SKMatrix44 CreateTranslation (float x, float y, float z) => /// The amount, along the z-axis, to scale. /// Returns the new scale matrix. /// - /// This is equivalent to creating an uninitialized matrix and passing the values to . + /// This creates a scale matrix with the specified scaling factors. /// public static SKMatrix44 CreateScale (float x, float y, float z) => Matrix4x4.CreateScale (x, y, z); @@ -116,7 +116,7 @@ public static SKMatrix44 CreateScale (float x, float y, float z, float pivotX, f /// The amount, in radians, to rotate by. /// Returns the new rotation matrix. /// - /// This is equivalent to creating an uninitialized matrix and passing the values to . + /// This creates a rotation matrix around the specified axis by the given angle in radians. /// public static SKMatrix44 CreateRotation (float x, float y, float z, float radians) => Matrix4x4.CreateFromAxisAngle (new Vector3 (x, y, z), radians); @@ -150,7 +150,7 @@ public static SKMatrix44 CreateRotation (float x, float y, float z, float radian /// The amount, in degrees, to rotate by. /// Returns the new rotation matrix. /// - /// This is equivalent to creating an uninitialized matrix and passing the values to . + /// This creates a rotation matrix around the specified axis by the given angle in degrees. /// public static SKMatrix44 CreateRotationDegrees (float x, float y, float z, float degrees) => Matrix4x4.CreateFromAxisAngle (new Vector3 (x, y, z), degrees * DegreesToRadians); @@ -325,7 +325,7 @@ public readonly float Determinant () => /// /// Applies the matrix to a point. /// - /// The point to map. + /// The point to map. /// Returns a new point with the matrix applied. public readonly SKPoint MapPoint (SKPoint point) => Vector2.Transform (point, this); @@ -388,14 +388,14 @@ public static SKMatrix44 Concat (SKMatrix44 first, SKMatrix44 second) => /// /// Pre-concatenates the matrix with the specified matrix. /// - /// The matrix to concatenate. + /// The matrix to concatenate. public readonly SKMatrix44 PreConcat (SKMatrix44 matrix) => this * matrix; /// /// Post-concatenates the current matrix with the specified matrix. /// - /// The matrix to concatenate. + /// The matrix to concatenate. public readonly SKMatrix44 PostConcat (SKMatrix44 matrix) => matrix * this; diff --git a/binding/SkiaSharp/SKPaint.cs b/binding/SkiaSharp/SKPaint.cs index 441123c786..4e5e742325 100644 --- a/binding/SkiaSharp/SKPaint.cs +++ b/binding/SkiaSharp/SKPaint.cs @@ -1304,9 +1304,6 @@ public float[] GetGlyphOffsets (IntPtr text, int length, float origin = 0f) => /// The text. /// Returns the text advances for each glyph. /// - /// If is false, this method returns the - /// horizontal advance. If is true, this - /// method returns the vertical advance. /// Uses to decode text, /// to get the font metrics, and /// to scale the widths. @@ -1326,9 +1323,6 @@ public float[] GetGlyphWidths (ReadOnlySpan text) => /// The text encoded using the encoding specified in format. /// Returns the text advances for each glyph. /// - /// If is false, this method returns the - /// horizontal advance. If is true, this - /// method returns the vertical advance. /// Uses to decode text, /// to get the font metrics, and /// to scale the widths. @@ -1349,9 +1343,6 @@ public float[] GetGlyphWidths (ReadOnlySpan text) => /// The length of the text buffer. /// Returns the text advances for each glyph. /// - /// If is false, this method returns the - /// horizontal advance. If is true, this - /// method returns the vertical advance. /// Uses to decode text, /// to get the font metrics, and /// to scale the widths. @@ -1367,9 +1358,6 @@ public float[] GetGlyphWidths (IntPtr text, int length) => /// The length of the text buffer. /// Returns the text advances for each glyph. /// - /// If is false, this method returns the - /// horizontal advance. If is true, this - /// method returns the vertical advance. /// Uses to decode text, /// to get the font metrics, and /// to scale the widths. @@ -1385,9 +1373,6 @@ public float[] GetGlyphWidths (IntPtr text, IntPtr length) => /// The bounds for each glyph relative to (0, 0). /// Returns the text advances for each glyph. /// - /// If is false, this method returns the - /// horizontal advance. If is true, this - /// method returns the vertical advance. /// Uses to decode text, /// to get the font metrics, and /// to scale the widths and bounds. @@ -1409,9 +1394,6 @@ public float[] GetGlyphWidths (ReadOnlySpan text, out SKRect[] bounds) => /// The bounds for each glyph relative to (0, 0). /// Returns the text advances for each glyph. /// - /// If is false, this method returns the - /// horizontal advance. If is true, this - /// method returns the vertical advance. /// Uses to decode text, /// to get the font metrics, and /// to scale the widths and bounds. @@ -1434,9 +1416,6 @@ public float[] GetGlyphWidths (ReadOnlySpan text, out SKRect[] bounds) => /// The bounds for each glyph relative to (0, 0). /// Returns the text advances for each glyph. /// - /// If is false, this method returns the - /// horizontal advance. If is true, this - /// method returns the vertical advance. /// Uses to decode text, /// to get the font metrics, and /// to scale the widths and bounds. @@ -1453,9 +1432,6 @@ public float[] GetGlyphWidths (IntPtr text, int length, out SKRect[] bounds) => /// The bounds for each glyph relative to (0, 0). /// Returns the text advances for each glyph. /// - /// If is false, this method returns the - /// horizontal advance. If is true, this - /// method returns the vertical advance. /// Uses to decode text, /// to get the font metrics, and /// to scale the widths and bounds. diff --git a/binding/SkiaSharp/SKPath.cs b/binding/SkiaSharp/SKPath.cs index 0c4fca7756..bc83935fa1 100644 --- a/binding/SkiaSharp/SKPath.cs +++ b/binding/SkiaSharp/SKPath.cs @@ -137,7 +137,7 @@ public SKPathFillType FillType { /// Gets a value indicating whether the path is a single rectangle. /// /// - /// See also and . + /// See also and . /// public bool IsRect => SkiaApi.sk_path_is_rect (Handle, null, null, null); @@ -172,7 +172,7 @@ public SKPathFillType FillType { /// /// The number of points will be , To only /// return a subset of the points in the path, use - /// . + /// . /// public SKPoint[] Points => GetPoints (PointCount); @@ -423,7 +423,7 @@ public void LineTo (SKPoint point) => /// The x-coordinate of the end of a line. /// The y-coordinate of the end of a line. /// - /// If no call has been made for this contour, + /// If no call has been made for this contour, /// the first point is automatically set to (0, 0). /// public void LineTo (float x, float y) => @@ -434,7 +434,7 @@ public void LineTo (float x, float y) => /// /// The amount to add to the coordinates of the last point on this contour, to specify the end of a line. /// - /// If no call has been made for this contour, + /// If no call has been made for this contour, /// the first point is automatically set to (0, 0). /// public void RLineTo (SKPoint point) => @@ -446,7 +446,7 @@ public void RLineTo (SKPoint point) => /// The amount to add to the x-coordinate of the last point on this contour, to specify the end of a line. /// The amount to add to the y-coordinate of the last point on this contour, to specify the end of a line. /// - /// If no call has been made for this contour, + /// If no call has been made for this contour, /// the first point is automatically set to (0, 0). /// public void RLineTo (float dx, float dy) => @@ -460,7 +460,7 @@ public void RLineTo (float dx, float dy) => /// /// Add a quadratic bezier from the last point, approaching control point /// (`point0`), and ending at `point1`. - /// If no call has been made for this contour, + /// If no call has been made for this contour, /// the first point is automatically set to (0, 0). /// public void QuadTo (SKPoint point0, SKPoint point1) => @@ -476,7 +476,7 @@ public void QuadTo (SKPoint point0, SKPoint point1) => /// /// Add a quadratic bezier from the last point, approaching control point /// (`x0`, `y0`), and ending at (`x1`, `y1`). - /// If no call has been made for this contour, + /// If no call has been made for this contour, /// the first point is automatically set to (0, 0). /// public void QuadTo (float x0, float y0, float x1, float y1) => @@ -488,7 +488,7 @@ public void QuadTo (float x0, float y0, float x1, float y1) => /// The amount to add to the coordinates of the last point on this contour, to specify the control point on a quadratic curve. /// The amount to add to the coordinates of the last point on this contour, to specify end point on a quadratic curve. /// - /// If no call has been made for this contour, + /// If no call has been made for this contour, /// the first point is automatically set to (0, 0). /// public void RQuadTo (SKPoint point0, SKPoint point1) => @@ -502,7 +502,7 @@ public void RQuadTo (SKPoint point0, SKPoint point1) => /// The amount to add to the x-coordinate of the last point on this contour, to specify end point on a quadratic curve. /// The amount to add to the y-coordinate of the last point on this contour, to specify end point on a quadratic curve. /// - /// If no call has been made for this contour, + /// If no call has been made for this contour, /// the first point is automatically set to (0, 0). /// public void RQuadTo (float dx0, float dy0, float dx1, float dy1) => @@ -515,7 +515,7 @@ public void RQuadTo (float dx0, float dy0, float dx1, float dy1) => /// The coordinates of the end point of the conic curve. /// The weight of the conic curve. /// - /// If no call has been made for this contour, + /// If no call has been made for this contour, /// the first point is automatically set to (0, 0). /// public void ConicTo (SKPoint point0, SKPoint point1, float w) => @@ -530,7 +530,7 @@ public void ConicTo (SKPoint point0, SKPoint point1, float w) => /// The y-coordinate of the end point of the conic curve. /// The weight of the conic curve. /// - /// If no call has been made for this contour, + /// If no call has been made for this contour, /// the first point is automatically set to (0, 0). /// public void ConicTo (float x0, float y0, float x1, float y1, float w) => @@ -543,7 +543,7 @@ public void ConicTo (float x0, float y0, float x1, float y1, float w) => /// The amount to add to the coordinates of the last point on this contour, to specify the end point of the conic curve. /// The weight of the conic curve. /// - /// If no call has been made for this contour, + /// If no call has been made for this contour, /// the first point is automatically set to (0, 0). /// public void RConicTo (SKPoint point0, SKPoint point1, float w) => @@ -558,7 +558,7 @@ public void RConicTo (SKPoint point0, SKPoint point1, float w) => /// The amount to add to the y-coordinate of the last point on this contour, to specify the end point of the conic curve. /// The weight of the conic curve. /// - /// If no call has been made for this contour, + /// If no call has been made for this contour, /// the first point is automatically set to (0, 0). /// public void RConicTo (float dx0, float dy0, float dx1, float dy1, float w) => @@ -571,7 +571,7 @@ public void RConicTo (float dx0, float dy0, float dx1, float dy1, float w) => /// The coordinates of the 2nd control point on a cubic curve. /// The coordinates of the end point on a cubic curve. /// - /// If no call has been made for this contour, + /// If no call has been made for this contour, /// the first point is automatically set to (0, 0). /// public void CubicTo (SKPoint point0, SKPoint point1, SKPoint point2) => @@ -587,7 +587,7 @@ public void CubicTo (SKPoint point0, SKPoint point1, SKPoint point2) => /// The x-coordinate of the end point on a cubic curve. /// The y-coordinate of the end point on a cubic curve. /// - /// If no call has been made for this contour, + /// If no call has been made for this contour, /// the first point is automatically set to (0, 0). /// public void CubicTo (float x0, float y0, float x1, float y1, float x2, float y2) => @@ -600,7 +600,7 @@ public void CubicTo (float x0, float y0, float x1, float y1, float x2, float y2) /// The amount to add to the coordinates of the last point on this contour, to specify the 2nd control point on a cubic curve. /// The amount to add to the coordinates of the last point on this contour, to specify the end point on a cubic curve. /// - /// If no call has been made for this contour, + /// If no call has been made for this contour, /// the first point is automatically set to (0, 0). /// public void RCubicTo (SKPoint point0, SKPoint point1, SKPoint point2) => @@ -616,7 +616,7 @@ public void RCubicTo (SKPoint point0, SKPoint point1, SKPoint point2) => /// The amount to add to the x-coordinate of the last point on this contour, to specify the end point on a cubic curve. /// The amount to add to the y-coordinate of the last point on this contour, to specify the end point on a cubic curve. /// - /// If no call has been made for this contour, + /// If no call has been made for this contour, /// the first point is automatically set to (0, 0). /// public void RCubicTo (float dx0, float dy0, float dx1, float dy1, float dx2, float dy2) => @@ -655,9 +655,9 @@ public void ArcTo (float rx, float ry, float xAxisRotate, SKPathArcSize largeArc /// Whether to always begin a new contour with the arc. /// /// If the start of the arc is different from the path's current last point, then - /// an automatic is added to connect the current + /// an automatic is added to connect the current /// contour to the start of the arc. However, if the path is empty, then we call - /// with the first point of the arc. + /// with the first point of the arc. /// public void ArcTo (SKRect oval, float startAngle, float sweepAngle, bool forceMoveTo) => SkiaApi.sk_path_arc_to_with_oval (Handle, &oval, startAngle, sweepAngle, forceMoveTo); @@ -1229,17 +1229,17 @@ public SKPathVerb Next (Span points) /// /// /// Only valid if the current segment return by - /// was . + /// was . /// public float ConicWeight () => SkiaApi.sk_path_iter_conic_weight (Handle); /// - /// Returns a value indicating whether the last call to returns a line which was the result of a command. + /// Returns a value indicating whether the last call to returns a line which was the result of a command. /// - /// Returns true if the last call to returned a line which was the result of a command. + /// Returns true if the last call to returned a line which was the result of a command. /// - /// If the call to returned a different value than , the result is undefined. + /// If the call to returned a different value than , the result is undefined. /// public bool IsCloseLine () => SkiaApi.sk_path_iter_is_close_line (Handle) != 0; diff --git a/binding/SkiaSharp/SKPictureRecorder.cs b/binding/SkiaSharp/SKPictureRecorder.cs index a0ddad1d22..7c17c7c9b2 100644 --- a/binding/SkiaSharp/SKPictureRecorder.cs +++ b/binding/SkiaSharp/SKPictureRecorder.cs @@ -66,7 +66,7 @@ public SKCanvas BeginRecording (SKRect cullRect, bool useRTree) /// Returns the containing the recorded content. /// /// This invalidates the canvas returned by - /// and + /// and /// . /// public SKPicture EndRecording () @@ -80,7 +80,7 @@ public SKPicture EndRecording () /// Returns the containing the recorded content. /// /// This invalidates the canvas returned by - /// and + /// and /// . /// Unlike , which returns an /// immutable picture, the returned drawable may contain live references to other diff --git a/binding/SkiaSharp/SKSurface.cs b/binding/SkiaSharp/SKSurface.cs index 564a622756..225a67e3ea 100644 --- a/binding/SkiaSharp/SKSurface.cs +++ b/binding/SkiaSharp/SKSurface.cs @@ -16,11 +16,11 @@ namespace SkiaSharp /// The surface always has non-zero dimensions. If there is a request for a new /// surface, and either of the requested dimensions are zero, then will /// be returned. - /// Once you create a surface with one of its + /// Once you create a surface with one of its /// methods, you can draw into the canvas returned by the /// property. Once the drawing is complete, you /// can retrieve an by calling the - /// method. + /// method. /// ## Examples /// ```csharp /// var info = new SKImageInfo(256, 256); @@ -677,7 +677,7 @@ public static SKSurface Create (GRRecordingContext context, MetalKit.MTKView vie /// The desired height for the surface. /// Returns the new surface if it could be created, otherwise . /// - /// Drawing to the returned from has no effect. Calling on the returned returns . + /// Drawing to the returned from has no effect. Calling on the returned returns . /// public static SKSurface CreateNull (int width, int height) => GetObject (SkiaApi.sk_surface_new_null (width, height)); diff --git a/binding/SkiaSharp/SKTypeface.cs b/binding/SkiaSharp/SKTypeface.cs index 678916500e..9cb0cfdbbd 100644 --- a/binding/SkiaSharp/SKTypeface.cs +++ b/binding/SkiaSharp/SKTypeface.cs @@ -74,7 +74,7 @@ public static SKTypeface CreateDefault () /// /// Return a new instance to a typeface that most closely matches the requested family name and style. /// - /// The name of the font family. May be . + /// The name of the font family. May be . /// The weight of the typeface. /// The width of the typeface. /// The slant of the typeface. @@ -87,7 +87,7 @@ public static SKTypeface FromFamilyName (string familyName, int weight, int widt /// /// Returns a new instance to a typeface that most closely matches the requested family name and style. /// - /// The name of the font family. May be . + /// The name of the font family. May be . /// Returns to the closest-matching typeface. public static SKTypeface FromFamilyName (string familyName) { @@ -97,7 +97,7 @@ public static SKTypeface FromFamilyName (string familyName) /// /// Returns a new instance to a typeface that most closely matches the requested family name and style. /// - /// The name of the font family. May be . + /// The name of the font family. May be . /// The style (normal, bold, italic) of the typeface. /// Returns to the closest-matching typeface. public static SKTypeface FromFamilyName (string familyName, SKFontStyle style) @@ -117,7 +117,7 @@ public static SKTypeface FromFamilyName (string familyName, SKFontStyle style) /// /// Return a new instance to a typeface that most closely matches the requested family name and style. /// - /// The name of the font family. May be . + /// The name of the font family. May be . /// The weight of the typeface. /// The width of the typeface. /// The slant of the typeface. @@ -134,7 +134,7 @@ public static SKTypeface FromFamilyName (string familyName, SKFontStyleWeight we /// /// The path of the file. /// The font face index. - /// Returns a new typeface, or if the file does not exist, or is not a valid font file. + /// Returns a new typeface, or if the file does not exist, or is not a valid font file. public static SKTypeface FromFile (string path, int index = 0) { if (path == null) @@ -151,7 +151,7 @@ public static SKTypeface FromFile (string path, int index = 0) /// /// The input stream. /// The font face index. - /// Returns a new typeface, or if the file does not exist, or is not a valid font file. + /// Returns a new typeface, or if the file does not exist, or is not a valid font file. public static SKTypeface FromStream (Stream stream, int index = 0) { if (stream == null) @@ -165,7 +165,7 @@ public static SKTypeface FromStream (Stream stream, int index = 0) /// /// The input stream. /// The font face index. - /// Returns a new typeface, or if the file does not exist, or is not a valid font file. + /// Returns a new typeface, or if the file does not exist, or is not a valid font file. public static SKTypeface FromStream (SKStreamAsset stream, int index = 0) { if (stream == null) @@ -186,7 +186,7 @@ public static SKTypeface FromStream (SKStreamAsset stream, int index = 0) /// /// The input data. /// The font face index. - /// Returns a new typeface, or if the file does not exist, or is not a valid font file. + /// Returns a new typeface, or if the file does not exist, or is not a valid font file. public static SKTypeface FromData (SKData data, int index = 0) { if (data == null) @@ -517,7 +517,7 @@ public SKStreamAsset OpenStream (out int ttcIndex) // GetKerningPairAdjustments /// - /// If false, then will never return nonzero + /// If false, then will never return nonzero /// adjustments for any possible pair of glyphs. /// public bool HasGetKerningPairAdjustments => diff --git a/binding/SkiaSharp/SkiaApi.generated.cs b/binding/SkiaSharp/SkiaApi.generated.cs index cafc1867ec..8da089eb7e 100644 --- a/binding/SkiaSharp/SkiaApi.generated.cs +++ b/binding/SkiaSharp/SkiaApi.generated.cs @@ -19463,9 +19463,7 @@ public readonly override bool Equals (object obj) => /// /// Tests whether two structures are equal. /// - /// The structure on the left side of the equality operator. /// The structure on the left side of the equality operator. - /// The structure on the right of the equality operator. /// The structure on the right of the equality operator. /// This operator returns true if both structures have equal and ; otherwise, false. public static bool operator == (SKSizeI left, SKSizeI right) => @@ -19474,9 +19472,7 @@ public readonly override bool Equals (object obj) => /// /// Tests whether two structures are different. /// - /// The structure that is to the left of the inequality operator. /// The structure that is to the left of the inequality operator. - /// The structure that is to the right of the inequality operator. /// The structure that is to the right of the inequality operator. /// This operator returns true if either of the and properties of the two structures are unequal; otherwise false. public static bool operator != (SKSizeI left, SKSizeI right) => @@ -20765,9 +20761,7 @@ public readonly override bool Equals (object obj) => /// /// Tests whether two structures are equal. /// - /// The structure on the left side of the equality operator. /// The structure on the left side of the equality operator. - /// The structure on the right of the equality operator. /// The structure on the right of the equality operator. /// This operator returns true if both structures have equal and ; otherwise, false. public static bool operator == (SKSize left, SKSize right) => @@ -20776,9 +20770,7 @@ public readonly override bool Equals (object obj) => /// /// Tests whether two structures are different. /// - /// The structure that is to the left of the inequality operator. /// The structure that is to the left of the inequality operator. - /// The structure that is to the right of the inequality operator. /// The structure that is to the right of the inequality operator. /// This operator returns true if either of the and properties of the two structures are unequal; otherwise false. public static bool operator != (SKSize left, SKSize right) => @@ -21456,7 +21448,7 @@ public enum SKEncodedImageFormat { // sk_encodedorigin_t /// - /// Represents various origin values returned by . + /// Represents various origin values returned by . /// public enum SKEncodedOrigin { // TOP_LEFT_SK_ENCODED_ORIGIN = 1 @@ -21849,37 +21841,37 @@ public enum SKPathSegmentMask { /// Verbs contained in an . /// /// - /// In the description below, the number of points returned represents the number of valid entries on the return array of points that is passed to or . + /// In the description below, the number of points returned represents the number of valid entries on the return array of points that is passed to or . /// public enum SKPathVerb { // MOVE_SK_PATH_VERB = 0 /// - /// Move command, a call to or will return a single point. + /// Move command, a call to or will return a single point. /// Move = 0, // LINE_SK_PATH_VERB = 1 /// - /// Line path, a call to or will return two points. + /// Line path, a call to or will return two points. /// Line = 1, // QUAD_SK_PATH_VERB = 2 /// - /// Quad command, a call to or will return three points. + /// Quad command, a call to or will return three points. /// Quad = 2, // CONIC_SK_PATH_VERB = 3 /// - /// Conic path, a call to or will return three points, plus the point. + /// Conic path, a call to or will return three points, plus the point. /// Conic = 3, // CUBIC_SK_PATH_VERB = 4 /// - /// Cubic path, a call to or will return four points. + /// Cubic path, a call to or will return four points. /// Cubic = 4, // CLOSE_SK_PATH_VERB = 5 /// - /// Close path, a call to or will return one point (contour's point). + /// Close path, a call to or will return one point (contour's point). /// Close = 5, // DONE_SK_PATH_VERB = 6 From 6218a74517988a9c18715f6fce62f21d515cacab Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Fri, 5 Sep 2025 18:50:04 +0200 Subject: [PATCH 26/35] views are better --- .../SKPaintGLSurfaceEventArgs.cs | 2 +- .../SkiaSharp.Views.Maui.Core/SKPaintSurfaceEventArgs.cs | 2 +- .../SkiaSharp.Views.Maui.Core/SKTouchEventArgs.cs | 2 +- .../SkiaSharp.Views.Shared/SKPaintGLSurfaceEventArgs.cs | 2 +- .../SkiaSharp.Views.Shared/SKPaintSurfaceEventArgs.cs | 2 +- .../SkiaSharp.Views/Platform/Android/GLTextureView.cs | 2 +- .../SkiaSharp.Views/Platform/Android/SKGLSurfaceView.cs | 5 ----- .../SkiaSharp.Views/Platform/Android/SKGLTextureView.cs | 5 ----- .../SkiaSharp.Views/Platform/Apple/SKCanvasLayer.cs | 5 ----- .../SkiaSharp.Views/Platform/iOS/SKCanvasView.cs | 9 ++------- .../SkiaSharp.Views/Platform/iOS/SKGLLayer.cs | 9 ++------- .../SkiaSharp.Views/Platform/iOS/SKGLView.cs | 5 ----- .../SkiaSharp.Views/Platform/macOS/SKCanvasView.cs | 5 ----- .../SkiaSharp.Views/Platform/macOS/SKGLLayer.cs | 5 ----- .../SkiaSharp.Views/Platform/macOS/SKGLView.cs | 5 ----- 15 files changed, 10 insertions(+), 55 deletions(-) diff --git a/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/SKPaintGLSurfaceEventArgs.cs b/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/SKPaintGLSurfaceEventArgs.cs index 424d8b2be8..213250acf4 100644 --- a/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/SKPaintGLSurfaceEventArgs.cs +++ b/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/SKPaintGLSurfaceEventArgs.cs @@ -6,7 +6,7 @@ namespace SkiaSharp.Views.Maui { /// - /// Provides data for the event. + /// Provides data for the PaintSurface event. /// public class SKPaintGLSurfaceEventArgs : EventArgs { diff --git a/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/SKPaintSurfaceEventArgs.cs b/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/SKPaintSurfaceEventArgs.cs index 2f2e71704b..5bb15e61c1 100644 --- a/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/SKPaintSurfaceEventArgs.cs +++ b/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/SKPaintSurfaceEventArgs.cs @@ -5,7 +5,7 @@ namespace SkiaSharp.Views.Maui { /// - /// Provides data for the event. + /// Provides data for the PaintSurface event. /// public class SKPaintSurfaceEventArgs : EventArgs { diff --git a/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/SKTouchEventArgs.cs b/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/SKTouchEventArgs.cs index 190515bf6a..2120075208 100644 --- a/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/SKTouchEventArgs.cs +++ b/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/SKTouchEventArgs.cs @@ -5,7 +5,7 @@ namespace SkiaSharp.Views.Maui { /// - /// Provides data for the or event. + /// Provides data for the Touch event. /// public class SKTouchEventArgs : EventArgs { diff --git a/source/SkiaSharp.Views/SkiaSharp.Views.Shared/SKPaintGLSurfaceEventArgs.cs b/source/SkiaSharp.Views/SkiaSharp.Views.Shared/SKPaintGLSurfaceEventArgs.cs index 0c6cd352de..2a313e6ea7 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views.Shared/SKPaintGLSurfaceEventArgs.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views.Shared/SKPaintGLSurfaceEventArgs.cs @@ -25,7 +25,7 @@ namespace SkiaSharp.Views.Blazor #endif { /// - /// Provides data for the event. + /// Provides data for the PaintSurface event. /// /// /// The event does not yet exist nor is this type currently in use, but exists for cross-platform compatibility. diff --git a/source/SkiaSharp.Views/SkiaSharp.Views.Shared/SKPaintSurfaceEventArgs.cs b/source/SkiaSharp.Views/SkiaSharp.Views.Shared/SKPaintSurfaceEventArgs.cs index f7c276f101..9cecf6a993 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views.Shared/SKPaintSurfaceEventArgs.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views.Shared/SKPaintSurfaceEventArgs.cs @@ -23,7 +23,7 @@ namespace SkiaSharp.Views.Blazor #endif { /// - /// Provides data for the event. + /// Provides data for the PaintSurface event. /// public class SKPaintSurfaceEventArgs : EventArgs { diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/GLTextureView.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/GLTextureView.cs index 26392a7f45..3318662e3b 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/GLTextureView.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/GLTextureView.cs @@ -454,7 +454,7 @@ public interface IEGLWindowSurfaceFactory /// The renderer is responsible for making OpenGL calls to render a frame. /// Typically, clients create their /// own classes that implement this interface, and then call - /// + /// /// to register the renderer with the . /// public interface IRenderer diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLSurfaceView.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLSurfaceView.cs index 7e77e01a0d..647c5e80a2 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLSurfaceView.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLSurfaceView.cs @@ -65,11 +65,6 @@ private void Initialize() /// method, or by attaching a handler to the /// /// event. - /// > [!NOTE] - /// > If a version of SkiaSharp prior to version v1.68.x is being used, then - /// > renderers are used instead of events. See - /// > and - /// > . /// ## Examples /// ```csharp /// myView.PaintSurface += (sender, e) => { diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureView.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureView.cs index da0b014fd3..efeb24bd0f 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureView.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureView.cs @@ -76,11 +76,6 @@ private void Initialize() /// method, or by attaching a handler to the /// /// event. - /// > [!NOTE] - /// > If a version of SkiaSharp prior to version v1.68.x is being used, then - /// > renderers are used instead of events. See - /// > and - /// > . /// ## Examples /// ```csharp /// myView.PaintSurface += (sender, e) => { diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Apple/SKCanvasLayer.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Apple/SKCanvasLayer.cs index 0029b52406..6b30438f1d 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Apple/SKCanvasLayer.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Apple/SKCanvasLayer.cs @@ -100,11 +100,6 @@ public override void DrawInContext(CGContext ctx) /// method, or by attaching a handler to the /// /// event. - /// > [!NOTE] - /// > If a version of SkiaSharp prior to version v1.68.x is being used, then the - /// > - /// > method should be overridden instead of - /// > . /// ## Examples /// ```csharp /// myLayer.PaintSurface += (sender, e) => { diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKCanvasView.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKCanvasView.cs index eeb78fcd0f..20b3eca6fa 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKCanvasView.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKCanvasView.cs @@ -167,15 +167,10 @@ public override void WillMoveToWindow(UIWindow window) /// /// /// There are two ways to draw on this surface: by overriding the - /// + /// /// method, or by attaching a handler to the - /// + /// /// event. - /// > [!NOTE] - /// > If a version of SkiaSharp prior to version v1.68.x is being used, then the - /// > - /// > method should be overridden instead of - /// > . /// ## Examples /// ```csharp /// myView.PaintSurface += (sender, e) => { diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLLayer.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLLayer.cs index 7f0981b455..1878bcf881 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLLayer.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLLayer.cs @@ -153,15 +153,10 @@ public override CGRect Frame /// /// /// There are two ways to draw on this surface: by overriding the - /// + /// /// method, or by attaching a handler to the - /// + /// /// event. - /// > [!NOTE] - /// > If a version of SkiaSharp prior to version v1.68.x is being used, then the - /// > - /// > method should be overridden instead of - /// > . /// ## Examples /// ```csharp /// myLayer.PaintSurface += (sender, e) => { diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLView.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLView.cs index 032f44500f..c81471fc4f 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLView.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLView.cs @@ -204,11 +204,6 @@ private void Initialize() /// method, or by attaching a handler to the /// /// event. - /// > [!NOTE] - /// > If a version of SkiaSharp prior to version v1.68.x is being used, then the - /// > - /// > method should be overridden instead of - /// > . /// ## Examples /// ```csharp /// myView.PaintSurface += (sender, e) => { diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKCanvasView.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKCanvasView.cs index d56744ee50..c01b42d0c0 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKCanvasView.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKCanvasView.cs @@ -93,11 +93,6 @@ public bool IgnorePixelScaling /// method, or by attaching a handler to the /// /// event. - /// > [!NOTE] - /// > If a version of SkiaSharp prior to version v1.68.x is being used, then the - /// > - /// > method should be overridden instead of - /// > . /// ## Examples /// ```csharp /// myView.PaintSurface += (sender, e) => { diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLLayer.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLLayer.cs index d1b391a92f..87d403b08f 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLLayer.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLLayer.cs @@ -54,11 +54,6 @@ public SKGLLayer() /// method, or by attaching a handler to the /// /// event. - /// > [!NOTE] - /// > If a version of SkiaSharp prior to version v1.68.x is being used, then the - /// > - /// > method should be overridden instead of - /// > . /// ## Examples /// ```csharp /// myLayer.PaintSurface += (sender, e) => { diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLView.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLView.cs index 946bd79e3b..35df3adfd3 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLView.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLView.cs @@ -220,11 +220,6 @@ public override void DrawRect(CGRect dirtyRect) /// method, or by attaching a handler to the /// /// event. - /// > [!NOTE] - /// > If a version of SkiaSharp prior to version v1.68.x is being used, then the - /// > - /// > method should be overridden instead of - /// > . /// ## Examples /// ```csharp /// myView.PaintSurface += (sender, e) => { From 301b14e035ca97986b0d5f597655567a51c7957e Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Fri, 5 Sep 2025 19:55:39 +0200 Subject: [PATCH 27/35] things look really green now --- binding/SkiaSharp/GRBackendRenderTarget.cs | 4 ---- .../Platform/Android/GLTextureView.cs | 18 +++++++++--------- .../Platform/Android/SKGLTextureView.cs | 4 ++-- .../Platform/Apple/SKMetalView.cs | 2 +- 4 files changed, 12 insertions(+), 16 deletions(-) diff --git a/binding/SkiaSharp/GRBackendRenderTarget.cs b/binding/SkiaSharp/GRBackendRenderTarget.cs index 72eb33a9f8..aafe8b953b 100644 --- a/binding/SkiaSharp/GRBackendRenderTarget.cs +++ b/binding/SkiaSharp/GRBackendRenderTarget.cs @@ -60,16 +60,12 @@ public GRBackendRenderTarget (int width, int height, GRD3DTextureResourceInfo d3 CreateDirect3D (width, height, d3dTextureInfo); } -#if __IOS__ || __MACOS__ || __TVOS__ - [Obsolete ("Use GRBackendRenderTarget(int width, int height, GRMtlTextureInfo mtlInfo) instead.")] public GRBackendRenderTarget (int width, int height, int sampleCount, GRMtlTextureInfo mtlInfo) : this (width, height, mtlInfo) { } -#endif - public GRBackendRenderTarget (int width, int height, GRMtlTextureInfo mtlInfo) : this (IntPtr.Zero, true) { diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/GLTextureView.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/GLTextureView.cs index 3318662e3b..2668d96bf7 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/GLTextureView.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/GLTextureView.cs @@ -147,7 +147,7 @@ public void SetRenderer(IRenderer renderer) /// /// The custom context factory. /// - /// If this method is called, it must be called before is called. + /// If this method is called, it must be called before is called. /// public void SetEGLContextFactory(IEGLContextFactory factory) { @@ -160,7 +160,7 @@ public void SetEGLContextFactory(IEGLContextFactory factory) /// /// The custom window surface factory. /// - /// If this method is called, it must be called before is called. + /// If this method is called, it must be called before is called. /// public void SetEGLWindowSurfaceFactory(IEGLWindowSurfaceFactory factory) { @@ -176,7 +176,7 @@ public void SetEGLWindowSurfaceFactory(IEGLWindowSurfaceFactory factory) /// If no EGL config chooser is set, then by default the view will choose an RGB /// 888 surface with a depth buffer depth of at least 16 bits. /// If this method is called, it must be called before - /// is called. + /// is called. /// public void SetEGLConfigChooser(IEGLConfigChooser configChooser) { @@ -192,7 +192,7 @@ public void SetEGLConfigChooser(IEGLConfigChooser configChooser) /// If no EGL config chooser is set, then by default the view will choose an RGB /// 888 surface with a depth buffer depth of at least 16 bits. /// If this method is called, it must be called before - /// is called. + /// is called. /// public void SetEGLConfigChooser(bool needDepth) { @@ -212,7 +212,7 @@ public void SetEGLConfigChooser(bool needDepth) /// If no EGL config chooser is set, then by default the view will choose an RGB /// 888 surface with a depth buffer depth of at least 16 bits. /// If this method is called, it must be called before - /// is called. + /// is called. /// public void SetEGLConfigChooser(int redSize, int greenSize, int blueSize, int alphaSize, int depthSize, int stencilSize) { @@ -224,7 +224,7 @@ public void SetEGLConfigChooser(int redSize, int greenSize, int blueSize, int al /// /// The context client version to choose. Use 2 for OpenGL ES 2.0 /// - /// If this method is called, it must be called before is called. + /// If this method is called, it must be called before is called. /// public void SetEGLContextClientVersion(int version) { @@ -452,10 +452,10 @@ public interface IEGLWindowSurfaceFactory /// /// /// The renderer is responsible for making OpenGL calls to render a frame. - /// Typically, clients create their + /// Typically, clients create their /// own classes that implement this interface, and then call - /// - /// to register the renderer with the . + /// + /// to register the renderer with the . /// public interface IRenderer { diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureView.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureView.cs index efeb24bd0f..e0bdc264f1 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureView.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureView.cs @@ -72,9 +72,9 @@ private void Initialize() /// /// /// There are two ways to draw on this surface: by overriding the - /// + /// /// method, or by attaching a handler to the - /// + /// /// event. /// ## Examples /// ```csharp diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Apple/SKMetalView.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Apple/SKMetalView.cs index 6bde8d4288..76566c45e8 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Apple/SKMetalView.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Apple/SKMetalView.cs @@ -161,7 +161,7 @@ void IMTKViewDelegate.Draw(MTKView view) // create the render target var metalInfo = new GRMtlTextureInfo(CurrentDrawable.Texture); - using var renderTarget = new GRBackendRenderTarget((int)CanvasSize.Width, (int)CanvasSize.Height, (int)SampleCount, metalInfo); + using var renderTarget = new GRBackendRenderTarget((int)CanvasSize.Width, (int)CanvasSize.Height, metalInfo); // create the surface using var surface = SKSurface.Create(context, renderTarget, surfaceOrigin, colorType); From 88bb392fa830f94b048032b23bc0c1531e8afda4 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Fri, 5 Sep 2025 20:17:29 +0200 Subject: [PATCH 28/35] regen --- binding/HarfBuzzSharp/HarfBuzzApi.generated.cs | 2 +- binding/SkiaSharp.Resources/ResourcesApi.generated.cs | 2 +- binding/SkiaSharp.SceneGraph/SceneGraphApi.generated.cs | 2 +- binding/SkiaSharp.Skottie/SkottieApi.generated.cs | 2 +- binding/SkiaSharp/SkiaApi.generated.cs | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/binding/HarfBuzzSharp/HarfBuzzApi.generated.cs b/binding/HarfBuzzSharp/HarfBuzzApi.generated.cs index ad49bf81f5..c26ccf62fe 100644 --- a/binding/HarfBuzzSharp/HarfBuzzApi.generated.cs +++ b/binding/HarfBuzzSharp/HarfBuzzApi.generated.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Runtime.InteropServices; using System.Runtime.CompilerServices; diff --git a/binding/SkiaSharp.Resources/ResourcesApi.generated.cs b/binding/SkiaSharp.Resources/ResourcesApi.generated.cs index 6733269198..fa699789b0 100644 --- a/binding/SkiaSharp.Resources/ResourcesApi.generated.cs +++ b/binding/SkiaSharp.Resources/ResourcesApi.generated.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Runtime.InteropServices; using System.Runtime.CompilerServices; diff --git a/binding/SkiaSharp.SceneGraph/SceneGraphApi.generated.cs b/binding/SkiaSharp.SceneGraph/SceneGraphApi.generated.cs index 1f50aac9a0..658c3c8590 100644 --- a/binding/SkiaSharp.SceneGraph/SceneGraphApi.generated.cs +++ b/binding/SkiaSharp.SceneGraph/SceneGraphApi.generated.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Runtime.InteropServices; using System.Runtime.CompilerServices; diff --git a/binding/SkiaSharp.Skottie/SkottieApi.generated.cs b/binding/SkiaSharp.Skottie/SkottieApi.generated.cs index 48d830b087..21425ff755 100644 --- a/binding/SkiaSharp.Skottie/SkottieApi.generated.cs +++ b/binding/SkiaSharp.Skottie/SkottieApi.generated.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Runtime.InteropServices; using System.Runtime.CompilerServices; diff --git a/binding/SkiaSharp/SkiaApi.generated.cs b/binding/SkiaSharp/SkiaApi.generated.cs index 8da089eb7e..76fdd5851f 100644 --- a/binding/SkiaSharp/SkiaApi.generated.cs +++ b/binding/SkiaSharp/SkiaApi.generated.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Runtime.InteropServices; using System.Runtime.CompilerServices; From 6f49926656d1989c0f89ad0baeeca72d4bf08a9b Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Fri, 5 Sep 2025 20:47:55 +0200 Subject: [PATCH 29/35] Fix more things --- binding/SkiaSharp/SKPaint.cs | 4 +-- binding/SkiaSharp/SKShader.cs | 14 ++++----- binding/SkiaSharp/SKSurface.cs | 2 +- .../SKCanvasView.cs | 28 +++++++++-------- .../SkiaSharp.Views.Gtk3/SKDrawingArea.cs | 28 +++++++++-------- .../SkiaSharp.Views.WinUI/SKSwapChainPanel.cs | 26 +++++++++------- .../SkiaSharp.Views.WindowsForms/SKControl.cs | 28 +++++++++-------- .../SKGLControl.cs | 26 +++++++++------- .../Platform/Android/SKCanvasView.cs | 28 +++++++++-------- .../Platform/Apple/SKCanvasLayer.cs | 29 ++++++++++-------- .../Platform/Tizen/SKCanvasView.cs | 26 +++++++++------- .../Platform/Tizen/SKGLSurfaceView.cs | 26 +++++++++------- .../Platform/iOS/SKCanvasView.cs | 30 +++++++++++-------- .../SkiaSharp.Views/Platform/iOS/SKGLLayer.cs | 28 +++++++++-------- .../Platform/macOS/SKCanvasView.cs | 28 +++++++++-------- .../Platform/macOS/SKGLLayer.cs | 28 +++++++++-------- 16 files changed, 216 insertions(+), 163 deletions(-) diff --git a/binding/SkiaSharp/SKPaint.cs b/binding/SkiaSharp/SKPaint.cs index 4e5e742325..8e81bdc2ec 100644 --- a/binding/SkiaSharp/SKPaint.cs +++ b/binding/SkiaSharp/SKPaint.cs @@ -132,7 +132,7 @@ public static SKSamplingOptions ToSamplingOptions (this SKFilterQuality quality) /// } /// ``` /// The example above produces the following: - /// ![SKPaint and Text](~/images/SKPaintText.png "SKPaint and Text") + /// ![SKPaint and Text](~/docs-images/SKPaintText.png "SKPaint and Text") /// ### Effects Example /// The following example draws using a gradient instead of a single color. To do, /// this a `SKShader` is assigned to the paint. Anything drawn with that paint @@ -162,7 +162,7 @@ public static SKSamplingOptions ToSamplingOptions (this SKFilterQuality quality) /// } /// ``` /// The example above produces the following: - /// ![SKPaint and SKShader](~/images/gradient.png "SKPaint and SKShader") + /// ![SKPaint and SKShader](~/docs-images/gradient.png "SKPaint and SKShader") /// public unsafe class SKPaint : SKObject, ISKSkipObjectRegistration { diff --git a/binding/SkiaSharp/SKShader.cs b/binding/SkiaSharp/SKShader.cs index 734f49fc77..b5e1ec8f09 100644 --- a/binding/SkiaSharp/SKShader.cs +++ b/binding/SkiaSharp/SKShader.cs @@ -42,7 +42,7 @@ namespace SkiaSharp /// } /// ``` /// The example above produces the following: - /// ![Linear Gradient](~/images/linear.png "Linear Gradient") + /// ![Linear Gradient](~/docs-images/linear.png "Linear Gradient") /// ### Radial Gradient Shader Example /// ```csharp /// var info = new SKImageInfo(256, 256); @@ -68,7 +68,7 @@ namespace SkiaSharp /// } /// ``` /// The example above produces the following: - /// ![Radial Gradient](~/images/radial.png "Radial Gradient") + /// ![Radial Gradient](~/docs-images/radial.png "Radial Gradient") /// ### Two-point Conical Gradient Shader Example /// ```csharp /// var info = new SKImageInfo(256, 256); @@ -96,7 +96,7 @@ namespace SkiaSharp /// } /// ``` /// The example above produces the following: - /// ![Two-point Conical Gradient](~/images/twopoint.png "Two-point Conical Gradient") + /// ![Two-point Conical Gradient](~/docs-images/twopoint.png "Two-point Conical Gradient") /// ### Sweep Gradient Shader Example /// ```csharp /// var info = new SKImageInfo(256, 256); @@ -122,7 +122,7 @@ namespace SkiaSharp /// } /// ``` /// The example above produces the following: - /// ![Sweep Gradient](~/images/sweep.png "Sweep Gradient") + /// ![Sweep Gradient](~/docs-images/sweep.png "Sweep Gradient") /// ### Fractal Perlin Noise Shader Example /// ```csharp /// var info = new SKImageInfo(256, 256); @@ -139,7 +139,7 @@ namespace SkiaSharp /// } /// ``` /// The example above produces the following: - /// ![Fractal Perlin Noise](~/images/fractal-perlin-noise.png "Fractal Perlin Noise") + /// ![Fractal Perlin Noise](~/docs-images/fractal-perlin-noise.png "Fractal Perlin Noise") /// ### Perlin Noise Turbulence Shader Example /// ```csharp /// var info = new SKImageInfo(256, 256); @@ -156,7 +156,7 @@ namespace SkiaSharp /// } /// ``` /// The example above produces the following: - /// ![Fractal Perlin Noise](~/images/perlin-noise-turbulence.png "Fractal Perlin Noise") + /// ![Fractal Perlin Noise](~/docs-images/perlin-noise-turbulence.png "Fractal Perlin Noise") /// ### Compose Shader Example /// ```csharp /// var info = new SKImageInfo(256, 256); @@ -183,7 +183,7 @@ namespace SkiaSharp /// } /// ``` /// The example above produces the following: - /// ![Compose Shader](~/images/compose.png "Compose Shader") + /// ![Compose Shader](~/docs-images/compose.png "Compose Shader") /// public unsafe class SKShader : SKObject, ISKReferenceCounted { diff --git a/binding/SkiaSharp/SKSurface.cs b/binding/SkiaSharp/SKSurface.cs index 225a67e3ea..309845b49f 100644 --- a/binding/SkiaSharp/SKSurface.cs +++ b/binding/SkiaSharp/SKSurface.cs @@ -43,7 +43,7 @@ namespace SkiaSharp /// } /// ``` /// The example above produces the following: - /// ![SKSurface](~/images/surface-rects.png "SKSurface") + /// ![SKSurface](~/docs-images/surface-rects.png "SKSurface") /// public unsafe class SKSurface : SKObject, ISKReferenceCounted { diff --git a/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Controls/SKCanvasView.cs b/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Controls/SKCanvasView.cs index 056fcdb631..f317be5239 100644 --- a/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Controls/SKCanvasView.cs +++ b/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Controls/SKCanvasView.cs @@ -35,26 +35,30 @@ public SKCanvasView() } /// - /// Occurs when the the canvas needs to be redrawn. + /// Occurs when the canvas needs to be redrawn. /// /// + /// /// There are two ways to draw on this surface: by overriding the /// /// method, or by attaching a handler to the /// /// event. - /// ## Examples - /// ```csharp - /// myView.PaintSurface += (sender, e) => { - /// var surface = e.Surface; - /// var surfaceWidth = e.Info.Width; - /// var surfaceHeight = e.Info.Height; - /// var canvas = surface.Canvas; - /// // draw on the canvas - /// canvas.Flush (); - /// }; - /// ``` + /// /// + /// + /// + /// myView.PaintSurface += (sender, e) => + /// { + /// var surface = e.Surface; + /// var surfaceWidth = e.Info.Width; + /// var surfaceHeight = e.Info.Height; + /// var canvas = surface.Canvas; + /// + /// // draw on the canvas + /// }; + /// + /// public event EventHandler? PaintSurface; /// diff --git a/source/SkiaSharp.Views/SkiaSharp.Views.Gtk3/SKDrawingArea.cs b/source/SkiaSharp.Views/SkiaSharp.Views.Gtk3/SKDrawingArea.cs index 084fbaa94f..29ae16b4da 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views.Gtk3/SKDrawingArea.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views.Gtk3/SKDrawingArea.cs @@ -30,26 +30,30 @@ public SKDrawingArea() public SKSize CanvasSize => pix == null ? SKSize.Empty : new SKSize(pix.Width, pix.Height); /// - /// Occurs when the the canvas needs to be redrawn. + /// Occurs when the canvas needs to be redrawn. /// /// + /// /// There are two ways to draw on this surface: by overriding the /// /// method, or by attaching a handler to the /// /// event. - /// ## Examples - /// ```csharp - /// myView.PaintSurface += (sender, e) => { - /// var surface = e.Surface; - /// var surfaceWidth = e.Info.Width; - /// var surfaceHeight = e.Info.Height; - /// var canvas = surface.Canvas; - /// // draw on the canvas - /// canvas.Flush (); - /// }; - /// ``` + /// /// + /// + /// + /// myView.PaintSurface += (sender, e) => + /// { + /// var surface = e.Surface; + /// var surfaceWidth = e.Info.Width; + /// var surfaceHeight = e.Info.Height; + /// var canvas = surface.Canvas; + /// + /// // draw on the canvas + /// }; + /// + /// [Category("Appearance")] public event EventHandler PaintSurface; diff --git a/source/SkiaSharp.Views/SkiaSharp.Views.WinUI/SKSwapChainPanel.cs b/source/SkiaSharp.Views/SkiaSharp.Views.WinUI/SKSwapChainPanel.cs index ed734f56c0..f852329201 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views.WinUI/SKSwapChainPanel.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views.WinUI/SKSwapChainPanel.cs @@ -49,23 +49,27 @@ public SKSwapChainPanel() /// Occurs when the surface needs to be redrawn. /// /// + /// /// There are two ways to draw on this surface: by overriding the /// /// method, or by attaching a handler to the /// /// event. - /// ## Examples - /// ```csharp - /// myView.PaintSurface += (sender, e) => { - /// var surface = e.Surface; - /// var surfaceWidth = e.BackendRenderTarget.Width; - /// var surfaceHeight = e.BackendRenderTarget.Height; - /// var canvas = surface.Canvas; - /// // draw on the canvas - /// canvas.Flush (); - /// }; - /// ``` + /// /// + /// + /// + /// myView.PaintSurface += (sender, e) => + /// { + /// var surface = e.Surface; + /// var surfaceWidth = e.BackendRenderTarget.Width; + /// var surfaceHeight = e.BackendRenderTarget.Height; + /// var canvas = surface.Canvas; + /// + /// // draw on the canvas + /// }; + /// + /// public event EventHandler PaintSurface; protected virtual void OnPaintSurface(SKPaintGLSurfaceEventArgs e) diff --git a/source/SkiaSharp.Views/SkiaSharp.Views.WindowsForms/SKControl.cs b/source/SkiaSharp.Views/SkiaSharp.Views.WindowsForms/SKControl.cs index d9bd8047da..41056b0c50 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views.WindowsForms/SKControl.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views.WindowsForms/SKControl.cs @@ -37,26 +37,30 @@ public SKControl() public SKSize CanvasSize => bitmap == null ? SKSize.Empty : new SKSize(bitmap.Width, bitmap.Height); /// - /// Occurs when the the canvas needs to be redrawn. + /// Occurs when the canvas needs to be redrawn. /// /// + /// /// There are two ways to draw on this surface: by overriding the /// /// method, or by attaching a handler to the /// /// event. - /// ## Examples - /// ```csharp - /// myView.PaintSurface += (sender, e) => { - /// var surface = e.Surface; - /// var surfaceWidth = e.Info.Width; - /// var surfaceHeight = e.Info.Height; - /// var canvas = surface.Canvas; - /// // draw on the canvas - /// canvas.Flush (); - /// }; - /// ``` + /// /// + /// + /// + /// myView.PaintSurface += (sender, e) => + /// { + /// var surface = e.Surface; + /// var surfaceWidth = e.Info.Width; + /// var surfaceHeight = e.Info.Height; + /// var canvas = surface.Canvas; + /// + /// // draw on the canvas + /// }; + /// + /// [Category("Appearance")] public event EventHandler PaintSurface; diff --git a/source/SkiaSharp.Views/SkiaSharp.Views.WindowsForms/SKGLControl.cs b/source/SkiaSharp.Views/SkiaSharp.Views.WindowsForms/SKGLControl.cs index f0dcea4451..e7c557c051 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views.WindowsForms/SKGLControl.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views.WindowsForms/SKGLControl.cs @@ -89,23 +89,27 @@ private void Initialize() /// Occurs when the surface needs to be redrawn. /// /// + /// /// There are two ways to draw on this surface: by overriding the /// /// method, or by attaching a handler to the /// /// event. - /// ## Examples - /// ```csharp - /// myView.PaintSurface += (sender, e) => { - /// var surface = e.Surface; - /// var surfaceWidth = e.BackendRenderTarget.Width; - /// var surfaceHeight = e.BackendRenderTarget.Height; - /// var canvas = surface.Canvas; - /// // draw on the canvas - /// canvas.Flush (); - /// }; - /// ``` + /// /// + /// + /// + /// myView.PaintSurface += (sender, e) => + /// { + /// var surface = e.Surface; + /// var surfaceWidth = e.BackendRenderTarget.Width; + /// var surfaceHeight = e.BackendRenderTarget.Height; + /// var canvas = surface.Canvas; + /// + /// // draw on the canvas + /// }; + /// + /// [Category("Appearance")] public event EventHandler PaintSurface; diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKCanvasView.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKCanvasView.cs index cf25e8f550..029d2ff332 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKCanvasView.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKCanvasView.cs @@ -155,27 +155,31 @@ protected override void OnSizeChanged(int w, int h, int oldw, int oldh) } /// - /// Occurs when the the canvas needs to be redrawn. + /// Occurs when the canvas needs to be redrawn. /// /// + /// /// There are two ways to draw on this surface: by overriding the /// /// method, or by attaching a handler to the /// /// event. - /// ## Examples - /// ```csharp + /// + /// + /// + /// /// SKCanvasView myView = ...; - /// myView.PaintSurface += (sender, e) => { - /// var surface = e.Surface; - /// var surfaceWidth = e.Info.Width; - /// var surfaceHeight = e.Info.Height; - /// var canvas = surface.Canvas; - /// // draw on the canvas - /// canvas.Flush(); + /// myView.PaintSurface += (sender, e) => + /// { + /// var surface = e.Surface; + /// var surfaceWidth = e.Info.Width; + /// var surfaceHeight = e.Info.Height; + /// var canvas = surface.Canvas; + /// + /// // draw on the canvas /// }; - /// ``` - /// + /// + /// public event EventHandler PaintSurface; protected virtual void OnPaintSurface(SKPaintSurfaceEventArgs e) diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Apple/SKCanvasLayer.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Apple/SKCanvasLayer.cs index 6b30438f1d..f394390296 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Apple/SKCanvasLayer.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Apple/SKCanvasLayer.cs @@ -92,26 +92,31 @@ public override void DrawInContext(CGContext ctx) } /// - /// Occurs when the the canvas needs to be redrawn. + /// Occurs when the canvas needs to be redrawn. /// /// + /// /// There are two ways to draw on this surface: by overriding the /// /// method, or by attaching a handler to the /// /// event. - /// ## Examples - /// ```csharp - /// myLayer.PaintSurface += (sender, e) => { - /// var surface = e.Surface; - /// var surfaceWidth = e.Info.Width; - /// var surfaceHeight = e.Info.Height; - /// var canvas = surface.Canvas; - /// // draw on the canvas - /// canvas.Flush (); - /// }; - /// ``` + /// /// + /// + /// + /// myLayer.PaintSurface += (sender, e) => + /// { + /// var surface = e.Surface; + /// var surfaceWidth = e.Info.Width; + /// var surfaceHeight = e.Info.Height; + /// var canvas = surface.Canvas; + /// + /// // draw on the canvas + /// }; + /// + /// + public event EventHandler PaintSurface; public event EventHandler PaintSurface; protected virtual void OnPaintSurface(SKPaintSurfaceEventArgs e) diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/SKCanvasView.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/SKCanvasView.cs index f45957ee29..cb1611cd9f 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/SKCanvasView.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/SKCanvasView.cs @@ -43,23 +43,27 @@ public bool IgnorePixelScaling /// Occurs when the surface needs to be redrawn. /// /// + /// /// There are two ways to draw on this surface: by overriding the /// /// method, or by attaching a handler to the /// /// event. - /// ## Examples - /// ```csharp - /// myView.PaintSurface += (sender, e) => { - /// var surface = e.Surface; - /// var surfaceWidth = e.Info.Width; - /// var surfaceHeight = e.Info.Height; - /// var canvas = surface.Canvas; - /// // draw on the canvas - /// canvas.Flush (); - /// }; - /// ``` + /// /// + /// + /// + /// myView.PaintSurface += (sender, e) => + /// { + /// var surface = e.Surface; + /// var surfaceWidth = e.Info.Width; + /// var surfaceHeight = e.Info.Height; + /// var canvas = surface.Canvas; + /// + /// // draw on the canvas + /// }; + /// + /// public event EventHandler PaintSurface; protected override SKSizeI GetSurfaceSize() => canvasSize; diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/SKGLSurfaceView.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/SKGLSurfaceView.cs index 6502e954a6..d66c7ee2cc 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/SKGLSurfaceView.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/SKGLSurfaceView.cs @@ -47,23 +47,27 @@ public SKGLSurfaceView(EvasObject parent) /// Occurs when the surface needs to be redrawn. /// /// + /// /// There are two ways to draw on this surface: by overriding the /// /// method, or by attaching a handler to the /// /// event. - /// ## Examples - /// ```csharp - /// myView.PaintSurface += (sender, e) => { - /// var surface = e.Surface; - /// var surfaceWidth = e.BackendRenderTarget.Width; - /// var surfaceHeight = e.BackendRenderTarget.Height; - /// var canvas = surface.Canvas; - /// // draw on the canvas - /// canvas.Flush (); - /// }; - /// ``` + /// /// + /// + /// + /// myView.PaintSurface += (sender, e) => + /// { + /// var surface = e.Surface; + /// var surfaceWidth = e.BackendRenderTarget.Width; + /// var surfaceHeight = e.BackendRenderTarget.Height; + /// var canvas = surface.Canvas; + /// + /// // draw on the canvas + /// }; + /// + /// public event EventHandler PaintSurface; /// diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKCanvasView.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKCanvasView.cs index 20b3eca6fa..0232060c44 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKCanvasView.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKCanvasView.cs @@ -163,26 +163,30 @@ public override void WillMoveToWindow(UIWindow window) } /// - /// Occurs when the the canvas needs to be redrawn. + /// Occurs when the canvas needs to be redrawn. /// /// + /// /// There are two ways to draw on this surface: by overriding the - /// + /// /// method, or by attaching a handler to the /// /// event. - /// ## Examples - /// ```csharp - /// myView.PaintSurface += (sender, e) => { - /// var surface = e.Surface; - /// var surfaceWidth = e.Info.Width; - /// var surfaceHeight = e.Info.Height; - /// var canvas = surface.Canvas; - /// // draw on the canvas - /// canvas.Flush (); - /// }; - /// ``` + /// /// + /// + /// + /// myView.PaintSurface += (sender, e) => + /// { + /// var surface = e.Surface; + /// var surfaceWidth = e.Info.Width; + /// var surfaceHeight = e.Info.Height; + /// var canvas = surface.Canvas; + /// + /// // draw on the canvas + /// }; + /// + /// public event EventHandler PaintSurface; protected virtual void OnPaintSurface(SKPaintSurfaceEventArgs e) diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLLayer.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLLayer.cs index 1878bcf881..eba6a61f73 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLLayer.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLLayer.cs @@ -149,26 +149,30 @@ public override CGRect Frame } /// - /// Occurs when the the canvas needs to be redrawn. + /// Occurs when the canvas needs to be redrawn. /// /// + /// /// There are two ways to draw on this surface: by overriding the /// /// method, or by attaching a handler to the /// /// event. - /// ## Examples - /// ```csharp - /// myLayer.PaintSurface += (sender, e) => { - /// var surface = e.Surface; - /// var surfaceWidth = e.BackendRenderTarget.Width; - /// var surfaceHeight = e.BackendRenderTarget.Height; - /// var canvas = surface.Canvas; - /// // draw on the canvas - /// canvas.Flush (); - /// }; - /// ``` + /// /// + /// + /// + /// myLayer.PaintSurface += (sender, e) => + /// { + /// var surface = e.Surface; + /// var surfaceWidth = e.BackendRenderTarget.Width; + /// var surfaceHeight = e.BackendRenderTarget.Height; + /// var canvas = surface.Canvas; + /// + /// // draw on the canvas + /// }; + /// + /// public event EventHandler PaintSurface; protected virtual void OnPaintSurface(SKPaintGLSurfaceEventArgs e) diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKCanvasView.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKCanvasView.cs index c01b42d0c0..e9d163d0bb 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKCanvasView.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKCanvasView.cs @@ -85,26 +85,30 @@ public bool IgnorePixelScaling } /// - /// Occurs when the the canvas needs to be redrawn. + /// Occurs when the canvas needs to be redrawn. /// /// + /// /// There are two ways to draw on this surface: by overriding the /// /// method, or by attaching a handler to the /// /// event. - /// ## Examples - /// ```csharp - /// myView.PaintSurface += (sender, e) => { - /// var surface = e.Surface; - /// var surfaceWidth = e.Info.Width; - /// var surfaceHeight = e.Info.Height; - /// var canvas = surface.Canvas; - /// // draw on the canvas - /// canvas.Flush (); - /// }; - /// ``` + /// /// + /// + /// + /// myView.PaintSurface += (sender, e) => + /// { + /// var surface = e.Surface; + /// var surfaceWidth = e.Info.Width; + /// var surfaceHeight = e.Info.Height; + /// var canvas = surface.Canvas; + /// + /// // draw on the canvas + /// }; + /// + /// public event EventHandler PaintSurface; protected virtual void OnPaintSurface(SKPaintSurfaceEventArgs e) diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLLayer.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLLayer.cs index 87d403b08f..f1a33fdcde 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLLayer.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLLayer.cs @@ -46,26 +46,30 @@ public SKGLLayer() public GRContext GRContext => context; /// - /// Occurs when the the canvas needs to be redrawn. + /// Occurs when the canvas needs to be redrawn. /// /// + /// /// There are two ways to draw on this surface: by overriding the /// /// method, or by attaching a handler to the /// /// event. - /// ## Examples - /// ```csharp - /// myLayer.PaintSurface += (sender, e) => { - /// var surface = e.Surface; - /// var surfaceWidth = e.BackendRenderTarget.Width; - /// var surfaceHeight = e.BackendRenderTarget.Height; - /// var canvas = surface.Canvas; - /// // draw on the canvas - /// canvas.Flush (); - /// }; - /// ``` + /// /// + /// + /// + /// myLayer.PaintSurface += (sender, e) => + /// { + /// var surface = e.Surface; + /// var surfaceWidth = e.BackendRenderTarget.Width; + /// var surfaceHeight = e.BackendRenderTarget.Height; + /// var canvas = surface.Canvas; + /// + /// // draw on the canvas + /// }; + /// + /// public event EventHandler PaintSurface; protected virtual void OnPaintSurface(SKPaintGLSurfaceEventArgs e) From 19833cb4bb11e06c3e1cff118bb8bbcb388eb0a1 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Fri, 5 Sep 2025 20:53:47 +0200 Subject: [PATCH 30/35] more! --- .../SkiaSharp.Views.Maui.Controls/SKGLView.cs | 26 +++++++++++-------- .../SkiaSharp.Views.WinUI/SKXamlCanvas.cs | 26 +++++++++++-------- .../Platform/Android/SKGLSurfaceView.cs | 26 +++++++++++-------- .../Platform/Android/SKGLTextureView.cs | 26 +++++++++++-------- .../SkiaSharp.Views/Platform/iOS/SKGLView.cs | 26 +++++++++++-------- .../Platform/macOS/SKGLView.cs | 26 +++++++++++-------- 6 files changed, 90 insertions(+), 66 deletions(-) diff --git a/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Controls/SKGLView.cs b/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Controls/SKGLView.cs index fd6d8cdfc3..57157c692a 100644 --- a/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Controls/SKGLView.cs +++ b/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Controls/SKGLView.cs @@ -71,24 +71,28 @@ public bool EnableTouchEvents /// Occurs when the surface needs to be redrawn. /// /// + /// /// There are two ways to draw on this surface: by overriding the /// /// method, or by attaching a handler to the /// /// event. - /// ## Examples - /// ```csharp + /// + /// + /// + /// /// SKGLView myView = ...; - /// myView.PaintSurface += (sender, e) => { - /// var surface = e.Surface; - /// var surfaceWidth = e.BackendRenderTarget.Width; - /// var surfaceHeight = e.BackendRenderTarget.Height; - /// var canvas = surface.Canvas; - /// // draw on the canvas - /// canvas.Flush (); + /// myView.PaintSurface += (sender, e) => + /// { + /// var surface = e.Surface; + /// var surfaceWidth = e.BackendRenderTarget.Width; + /// var surfaceHeight = e.BackendRenderTarget.Height; + /// var canvas = surface.Canvas; + /// + /// // draw on the canvas /// }; - /// ``` - /// + /// + /// public event EventHandler? PaintSurface; /// diff --git a/source/SkiaSharp.Views/SkiaSharp.Views.WinUI/SKXamlCanvas.cs b/source/SkiaSharp.Views/SkiaSharp.Views.WinUI/SKXamlCanvas.cs index a8ca710136..facc989a41 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views.WinUI/SKXamlCanvas.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views.WinUI/SKXamlCanvas.cs @@ -106,23 +106,27 @@ public bool IgnorePixelScaling /// Occurs when the surface needs to be redrawn. /// /// + /// /// There are two ways to draw on this surface: by overriding the /// /// method, or by attaching a handler to the /// /// event. - /// ## Examples - /// ```csharp - /// myView.PaintSurface += (sender, e) => { - /// var surface = e.Surface; - /// var surfaceWidth = e.Info.Width; - /// var surfaceHeight = e.Info.Height; - /// var canvas = surface.Canvas; - /// // draw on the canvas - /// canvas.Flush (); - /// }; - /// ``` + /// /// + /// + /// + /// myView.PaintSurface += (sender, e) => + /// { + /// var surface = e.Surface; + /// var surfaceWidth = e.Info.Width; + /// var surfaceHeight = e.Info.Height; + /// var canvas = surface.Canvas; + /// + /// // draw on the canvas + /// }; + /// + /// public event EventHandler PaintSurface; protected virtual void OnPaintSurface(SKPaintSurfaceEventArgs e) diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLSurfaceView.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLSurfaceView.cs index 647c5e80a2..6fa33bfdad 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLSurfaceView.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLSurfaceView.cs @@ -60,23 +60,27 @@ private void Initialize() /// Occurs when the surface needs to be redrawn. /// /// + /// /// There are two ways to draw on this surface: by overriding the /// /// method, or by attaching a handler to the /// /// event. - /// ## Examples - /// ```csharp - /// myView.PaintSurface += (sender, e) => { - /// var surface = e.Surface; - /// var surfaceWidth = e.BackendRenderTarget.Width; - /// var surfaceHeight = e.BackendRenderTarget.Height; - /// var canvas = surface.Canvas; - /// // draw on the canvas - /// canvas.Flush (); - /// }; - /// ``` + /// /// + /// + /// + /// myView.PaintSurface += (sender, e) => + /// { + /// var surface = e.Surface; + /// var surfaceWidth = e.BackendRenderTarget.Width; + /// var surfaceHeight = e.BackendRenderTarget.Height; + /// var canvas = surface.Canvas; + /// + /// // draw on the canvas + /// }; + /// + /// public event EventHandler PaintSurface; protected virtual void OnPaintSurface(SKPaintGLSurfaceEventArgs e) diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureView.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureView.cs index e0bdc264f1..ba58916990 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureView.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureView.cs @@ -71,23 +71,27 @@ private void Initialize() /// Occurs when the surface needs to be redrawn. /// /// + /// /// There are two ways to draw on this surface: by overriding the /// /// method, or by attaching a handler to the /// /// event. - /// ## Examples - /// ```csharp - /// myView.PaintSurface += (sender, e) => { - /// var surface = e.Surface; - /// var surfaceWidth = e.BackendRenderTarget.Width; - /// var surfaceHeight = e.BackendRenderTarget.Height; - /// var canvas = surface.Canvas; - /// // draw on the canvas - /// canvas.Flush (); - /// }; - /// ``` + /// /// + /// + /// + /// myView.PaintSurface += (sender, e) => + /// { + /// var surface = e.Surface; + /// var surfaceWidth = e.BackendRenderTarget.Width; + /// var surfaceHeight = e.BackendRenderTarget.Height; + /// var canvas = surface.Canvas; + /// + /// // draw on the canvas + /// }; + /// + /// public event EventHandler PaintSurface; protected virtual void OnPaintSurface(SKPaintGLSurfaceEventArgs e) diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLView.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLView.cs index c81471fc4f..c016ae4700 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLView.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLView.cs @@ -199,23 +199,27 @@ private void Initialize() /// Occurs when the surface needs to be redrawn. /// /// + /// /// There are two ways to draw on this surface: by overriding the /// /// method, or by attaching a handler to the /// /// event. - /// ## Examples - /// ```csharp - /// myView.PaintSurface += (sender, e) => { - /// var surface = e.Surface; - /// var surfaceWidth = e.BackendRenderTarget.Width; - /// var surfaceHeight = e.BackendRenderTarget.Height; - /// var canvas = surface.Canvas; - /// // draw on the canvas - /// canvas.Flush (); - /// }; - /// ``` + /// /// + /// + /// + /// myView.PaintSurface += (sender, e) => + /// { + /// var surface = e.Surface; + /// var surfaceWidth = e.BackendRenderTarget.Width; + /// var surfaceHeight = e.BackendRenderTarget.Height; + /// var canvas = surface.Canvas; + /// + /// // draw on the canvas + /// }; + /// + /// public event EventHandler PaintSurface; protected virtual void OnPaintSurface(SKPaintGLSurfaceEventArgs e) diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLView.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLView.cs index 35df3adfd3..4af9dabb18 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLView.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLView.cs @@ -215,23 +215,27 @@ public override void DrawRect(CGRect dirtyRect) /// Occurs when the surface needs to be redrawn. /// /// + /// /// There are two ways to draw on this surface: by overriding the /// /// method, or by attaching a handler to the /// /// event. - /// ## Examples - /// ```csharp - /// myView.PaintSurface += (sender, e) => { - /// var surface = e.Surface; - /// var surfaceWidth = e.BackendRenderTarget.Width; - /// var surfaceHeight = e.BackendRenderTarget.Height; - /// var canvas = surface.Canvas; - /// // draw on the canvas - /// canvas.Flush (); - /// }; - /// ``` + /// /// + /// + /// + /// myView.PaintSurface += (sender, e) => + /// { + /// var surface = e.Surface; + /// var surfaceWidth = e.BackendRenderTarget.Width; + /// var surfaceHeight = e.BackendRenderTarget.Height; + /// var canvas = surface.Canvas; + /// + /// // draw on the canvas + /// }; + /// + /// public event EventHandler PaintSurface; protected virtual void OnPaintSurface(SKPaintGLSurfaceEventArgs e) From f0460aa1f611f7e02140f912e645712cdb7ddbf4 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Fri, 5 Sep 2025 20:58:13 +0200 Subject: [PATCH 31/35] Great! --- binding/SkiaSharp/SKSurface.cs | 59 ++++++++++++++++++++++------------ 1 file changed, 38 insertions(+), 21 deletions(-) diff --git a/binding/SkiaSharp/SKSurface.cs b/binding/SkiaSharp/SKSurface.cs index 309845b49f..6f092e26c3 100644 --- a/binding/SkiaSharp/SKSurface.cs +++ b/binding/SkiaSharp/SKSurface.cs @@ -9,42 +9,59 @@ namespace SkiaSharp /// Represents the backend/results of drawing to a canvas. /// /// + /// /// The surface represents the backend/results of drawing to a canvas. For raster /// drawing, the surface will be pixels, but (for example) when drawing into a /// PDF or canvas, the surface stores the recorded /// commands. + /// + /// /// The surface always has non-zero dimensions. If there is a request for a new /// surface, and either of the requested dimensions are zero, then will /// be returned. + /// + /// /// Once you create a surface with one of its /// methods, you can draw into the canvas returned by the /// property. Once the drawing is complete, you /// can retrieve an by calling the /// method. - /// ## Examples - /// ```csharp + /// + /// + /// + /// /// var info = new SKImageInfo(256, 256); - /// using (var surface = SKSurface.Create(info)) { - /// SKCanvas canvas = surface.Canvas; - /// canvas.Clear(SKColors.White); - /// // configure our brush - /// var redBrush = new SKPaint { - /// Color = new SKColor(0xff, 0, 0), - /// IsStroke = true - /// }; - /// var blueBrush = new SKPaint { - /// Color = new SKColor(0, 0, 0xff), - /// IsStroke = true - /// }; - /// for (int i = 0; i < 64; i += 8) { - /// var rect = new SKRect(i, i, 256 - i - 1, 256 - i - 1); - /// canvas.DrawRect(rect, (i % 16 == 0) ? redBrush : blueBrush); - /// } + /// using (var surface = SKSurface.Create(info)) + /// { + /// SKCanvas canvas = surface.Canvas; + /// canvas.Clear(SKColors.White); + /// + /// // configure our brush + /// var redBrush = new SKPaint + /// { + /// Color = new SKColor(0xff, 0, 0), + /// IsStroke = true + /// }; + /// var blueBrush = new SKPaint + /// { + /// Color = new SKColor(0, 0, 0xff), + /// IsStroke = true + /// }; + /// + /// for (int i = 0; i < 64; i += 8) + /// { + /// var rect = new SKRect(i, i, 256 - i - 1, 256 - i - 1); + /// canvas.DrawRect(rect, (i % 16 == 0) ? redBrush : blueBrush); + /// } /// } - /// ``` + /// + /// /// The example above produces the following: - /// ![SKSurface](~/docs-images/surface-rects.png "SKSurface") - /// + /// + /// + /// SKSurface + /// + /// public unsafe class SKSurface : SKObject, ISKReferenceCounted { internal SKSurface (IntPtr h, bool owns) From fddb8222f4e3e45f357a0fc7acb5353b1d5a468c Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Fri, 5 Sep 2025 23:06:24 +0200 Subject: [PATCH 32/35] Things should be good now... --- binding/SkiaSharp/SKCanvas.cs | 388 +++++++++++------- binding/SkiaSharp/SKManagedStream.cs | 43 +- binding/SkiaSharp/SKPaint.cs | 243 +++++++---- binding/SkiaSharp/SKShader.cs | 345 +++++++++------- binding/SkiaSharp/SKSurface.cs | 58 +-- .../SKCanvasView.cs | 4 +- .../SkiaSharp.Views.Maui.Controls/SKGLView.cs | 4 +- .../SkiaSharp.Views.Gtk3/SKDrawingArea.cs | 4 +- .../SkiaSharp.Views.WinUI/SKSwapChainPanel.cs | 4 +- .../SkiaSharp.Views.WinUI/SKXamlCanvas.cs | 4 +- .../SkiaSharp.Views.WindowsForms/SKControl.cs | 4 +- .../SKGLControl.cs | 4 +- .../Platform/Android/SKCanvasView.cs | 4 +- .../Platform/Android/SKGLSurfaceView.cs | 4 +- .../Platform/Android/SKGLTextureView.cs | 4 +- .../Platform/Apple/SKCanvasLayer.cs | 4 +- .../Platform/Tizen/SKCanvasView.cs | 4 +- .../Platform/Tizen/SKGLSurfaceView.cs | 4 +- .../Platform/iOS/SKCanvasView.cs | 4 +- .../SkiaSharp.Views/Platform/iOS/SKGLLayer.cs | 4 +- .../SkiaSharp.Views/Platform/iOS/SKGLView.cs | 4 +- .../Platform/macOS/SKCanvasView.cs | 4 +- .../Platform/macOS/SKGLLayer.cs | 4 +- .../Platform/macOS/SKGLView.cs | 4 +- 24 files changed, 664 insertions(+), 489 deletions(-) diff --git a/binding/SkiaSharp/SKCanvas.cs b/binding/SkiaSharp/SKCanvas.cs index bdcd733fe2..c612054d32 100644 --- a/binding/SkiaSharp/SKCanvas.cs +++ b/binding/SkiaSharp/SKCanvas.cs @@ -5,184 +5,245 @@ namespace SkiaSharp { // TODO: carefully consider the `PeekPixels`, `ReadPixels` - + /// - /// Encapsulates all of the state about drawing into a device (bitmap or surface). + /// Encapsulates all of the state about drawing into a device (bitmap or surface). /// /// - /// A canvas encapsulates all of the state about drawing into a device (bitmap or - /// surface). - /// This includes a reference to the device itself, and a stack of matrix/clip - /// values. For any given draw call (e.g. DrawRect), the geometry of the object - /// being drawn is transformed by the concatenation of all the matrices in the - /// stack. The transformed geometry is clipped by the intersection of all of the - /// clips in the stack. - /// While the canvas holds the state of the drawing device, the state (style) of - /// the object being drawn is held by the paint, which is provided as a parameter - /// to each of the "Draw" methods. The paint holds attributes such as color, - /// typeface, the text size, the stroke width, the shader (for example, gradients, - /// patterns), etc. - /// The canvas is returned when accessing the - /// property of a - /// surface. - /// ### Construction - /// SkiaSharp has multiple backends which receive - /// drawing commands, including: - /// * Raster Surface - /// * GPU Surface - /// * PDF Document - /// * XPS Document _(experimental)_ - /// * SVG Canvas _(experimental)_ - /// * Picture - /// * Null Canvas _(for testing)_ - /// #### Constructing a Raster Surface - /// The raster backend draws to a block of memory. This memory can be managed by - /// SkiaSharp or by the client. - /// The recommended way of creating a canvas for the Raster and Ganesh backends is - /// to use a , which is an object that manages the - /// memory into which the canvas commands are drawn. - /// ```csharp + /// + /// A canvas encapsulates all of the state about drawing into a device (bitmap or + /// surface). This includes a reference to the device itself, and a stack of matrix/clip + /// values. For any given draw call (e.g. DrawRect), the geometry of the object + /// being drawn is transformed by the concatenation of all the matrices in the + /// stack. The transformed geometry is clipped by the intersection of all of the + /// clips in the stack. + /// + /// + /// While the canvas holds the state of the drawing device, the state (style) of + /// the object being drawn is held by the paint, which is provided as a parameter + /// to each of the "Draw" methods. The paint holds attributes such as color, + /// typeface, the text size, the stroke width, the shader (for example, gradients, + /// patterns), etc. + /// + /// + /// The canvas is returned when accessing the + /// property of a surface. + /// + /// + /// Construction + /// + /// + /// SkiaSharp has multiple backends which receive + /// drawing commands, including: + /// + /// + /// Raster Surface + /// GPU Surface + /// PDF Document + /// XPS Document (experimental) + /// SVG Canvas (experimental) + /// Picture + /// Null Canvas (for testing) + /// + /// + /// Constructing a Raster Surface + /// + /// + /// The raster backend draws to a block of memory. This memory can be managed by + /// SkiaSharp or by the client. + /// The recommended way of creating a canvas for the Raster and Ganesh backends is + /// to use a , which is an object that manages the + /// memory into which the canvas commands are drawn. + /// + /// + /// + /// Alternatively, we could have specified the memory for the surface explicitly, + /// instead of asking SkiaSharp to manage it. + /// + /// object which manages the - /// GPU context, and related caches for textures and fonts. - /// objects are matched one to one with OpenGL contexts - /// or Vulkan devices. That is, all instances that will - /// be rendered to using the same OpenGL context or Vulkan device should share a - /// . - /// SkiaSharp does not create an OpenGL context or a Vulkan device for you. In - /// OpenGL mode it also assumes that the correct OpenGL context has been made - /// current to the current thread when SkiaSharp calls are made. - /// ```csharp - /// // an OpenGL context must be created and set as current - /// // define the surface properties - /// var info = new SKImageInfo(256, 256); - /// // create the surface - /// var context = GRContext.CreateGl(); - /// var surface = SKSurface.Create(context, false, info); - /// // get the canvas from the surface - /// var canvas = surface.Canvas; - /// // draw on the canvas ... - /// ``` - /// #### Constructing a PDF Document - /// The PDF backend uses instead of - /// , since a document must include multiple pages. - /// ```csharp + /// + /// // draw on the canvas + /// ]]> + /// + /// Constructing a GPU Surface + /// + /// + /// GPU surfaces must have a object which manages the + /// GPU context, and related caches for textures and fonts. + /// objects are matched one to one with OpenGL contexts + /// or Vulkan devices. That is, all instances that will + /// be rendered to using the same OpenGL context or Vulkan device should share a + /// . + /// SkiaSharp does not create an OpenGL context or a Vulkan device for you. In + /// OpenGL mode it also assumes that the correct OpenGL context has been made + /// current to the current thread when SkiaSharp calls are made. + /// + /// + /// Constructing a PDF Document + /// + /// + /// The PDF backend uses instead of + /// , since a document must include multiple pages. + /// + /// instead of - /// , since a document must include multiple pages. - /// ```csharp + /// ]]> + /// + /// Constructing a XPS Document _(experimental)_ + /// + /// + /// The XPS backend uses instead of + /// , since a document must include multiple pages. + /// + /// . - /// ```csharp + /// ]]> + /// + /// Constructing a SVG Canvas _(experimental)_ + /// + /// + /// The SVG backend uses . + /// + /// instead of - /// . - /// ```csharp + /// + /// // draw on the canvas + /// ]]> + /// + /// Constructing a Picture + /// + /// + /// The XPS backend uses instead of + /// . + /// + /// + /// + /// Constructing a Null Canvas _(for testing)_ + /// + /// + /// The null canvas is a canvas that ignores all drawing commands and does + /// nothing. + /// + /// , - /// , , - /// , - /// to perform some of the most common - /// 2D transformations. - /// For more control you can use the to set - /// an arbitrary transformation using the and the - /// to concatenate an - /// transformation to the current matrix in use. - /// The can be used to reset the state of - /// the matrix. - /// ### Drawing - /// The drawing operations can take a parameter to affect - /// their drawing. You use objects to cache the style and - /// color information to draw geometries, texts and bitmaps. - /// ### Clipping and State - /// It is possible to save the current transformations by calling the - /// method which preserves the current - /// transformation matrix, you can then alter the matrix and restore the previous - /// state by using the or - /// methods. - /// Additionally, it is possible to push a new state with - /// which will make an offscreen copy of a - /// region, and once the drawing is completed, calling the - /// method which copies the offscreen bitmap - /// into this canvas. - /// ## Examples - /// ```csharp + /// + /// // draw on the canvas + /// ]]> + /// + /// Transformations + /// + /// + /// The canvas supports a number of 2D transformations. Unlike other 2D graphic + /// systems like CoreGraphics or Cairo, SKCanvas extends the transformations to + /// include perspectives. + /// You can use the , + /// , , + /// , + /// to perform some of the most common + /// 2D transformations. + /// For more control you can use the to set + /// an arbitrary transformation using the and the + /// to concatenate an + /// transformation to the current matrix in use. + /// The can be used to reset the state of + /// the matrix. + /// + /// + /// Drawing + /// + /// + /// The drawing operations can take a parameter to affect + /// their drawing. You use objects to cache the style and + /// color information to draw geometries, texts and bitmaps. + /// + /// + /// Clipping and State + /// + /// + /// It is possible to save the current transformations by calling the + /// method which preserves the current + /// transformation matrix, you can then alter the matrix and restore the previous + /// state by using the or + /// methods. + /// Additionally, it is possible to push a new state with + /// which will make an offscreen copy of a + /// region, and once the drawing is completed, calling the + /// method which copies the offscreen bitmap + /// into this canvas. + /// + /// + /// + /// + /// ]]> + /// public unsafe class SKCanvas : SKObject { private const int PatchCornerCount = 4; @@ -283,7 +344,7 @@ public bool QuickReject (SKPath path) // Save* - #nullable enable +#nullable enable /// /// Saves the canvas state. /// @@ -336,7 +397,7 @@ public int SaveLayer (in SKCanvasSaveLayerRec rec) public int SaveLayer () => SkiaApi.sk_canvas_save_layer (Handle, null, IntPtr.Zero); - #nullable disable +#nullable disable // DrawColor @@ -1005,7 +1066,7 @@ public void DrawPoint (float x, float y, SKColor color) public void DrawImage (SKImage image, SKPoint p, SKPaint paint = null) { #pragma warning disable CS0618 // 'SKPaint.FilterQuality' is obsolete: 'Use SKSamplingOptions instead.' - DrawImage (image, p.X, p.Y, paint?.FilterQuality.ToSamplingOptions() ?? SKSamplingOptions.Default, paint); + DrawImage (image, p.X, p.Y, paint?.FilterQuality.ToSamplingOptions () ?? SKSamplingOptions.Default, paint); #pragma warning restore CS0618 // 'SKPaint.FilterQuality' is obsolete: 'Use SKSamplingOptions instead.' } @@ -1024,7 +1085,7 @@ public void DrawImage (SKImage image, SKPoint p, SKSamplingOptions sampling, SKP public void DrawImage (SKImage image, float x, float y, SKPaint paint = null) { #pragma warning disable CS0618 // 'SKPaint.FilterQuality' is obsolete: 'Use SKSamplingOptions instead.' - DrawImage (image, x, y, paint?.FilterQuality.ToSamplingOptions() ?? SKSamplingOptions.Default, paint); + DrawImage (image, x, y, paint?.FilterQuality.ToSamplingOptions () ?? SKSamplingOptions.Default, paint); #pragma warning restore CS0618 // 'SKPaint.FilterQuality' is obsolete: 'Use SKSamplingOptions instead.' } @@ -1044,7 +1105,7 @@ public void DrawImage (SKImage image, float x, float y, SKSamplingOptions sampli public void DrawImage (SKImage image, SKRect dest, SKPaint paint = null) { #pragma warning disable CS0618 // 'SKPaint.FilterQuality' is obsolete: 'Use SKSamplingOptions instead.' - DrawImage (image, null, &dest, paint?.FilterQuality.ToSamplingOptions() ?? SKSamplingOptions.Default, paint); + DrawImage (image, null, &dest, paint?.FilterQuality.ToSamplingOptions () ?? SKSamplingOptions.Default, paint); #pragma warning restore CS0618 // 'SKPaint.FilterQuality' is obsolete: 'Use SKSamplingOptions instead.' } @@ -1063,7 +1124,7 @@ public void DrawImage (SKImage image, SKRect dest, SKSamplingOptions sampling, S public void DrawImage (SKImage image, SKRect source, SKRect dest, SKPaint paint = null) { #pragma warning disable CS0618 // 'SKPaint.FilterQuality' is obsolete: 'Use SKSamplingOptions instead.' - DrawImage (image, &source, &dest, paint?.FilterQuality.ToSamplingOptions() ?? SKSamplingOptions.Default, paint); + DrawImage (image, &source, &dest, paint?.FilterQuality.ToSamplingOptions () ?? SKSamplingOptions.Default, paint); #pragma warning restore CS0618 // 'SKPaint.FilterQuality' is obsolete: 'Use SKSamplingOptions instead.' } @@ -1436,7 +1497,7 @@ public void DrawTextOnPath (string text, SKPath path, SKPoint offset, bool warpG #nullable enable public GRRecordingContext? Context => GRRecordingContext.GetObject (SkiaApi.sk_get_recording_context (Handle), owns: false, unrefExisting: false); - #nullable disable +#nullable disable // Flush @@ -1717,7 +1778,7 @@ public void SetMatrix (in SKMatrix matrix) => /// Replaces the current matrix with a copy of the specified matrix. /// /// The matrix that will be copied into the current matrix. - [Obsolete("Use SetMatrix(in SKMatrix) instead.", true)] + [Obsolete ("Use SetMatrix(in SKMatrix) instead.", true)] public void SetMatrix (SKMatrix matrix) => SetMatrix (in matrix); @@ -1880,7 +1941,7 @@ public void DrawRoundRectDifference (SKRoundRect outer, SKRoundRect inner, SKPai /// public void DrawAtlas (SKImage atlas, SKRect[] sprites, SKRotationScaleMatrix[] transforms, SKPaint paint = null) => #pragma warning disable CS0618 // 'SKPaint.FilterQuality' is obsolete: 'Use SKSamplingOptions instead.' - DrawAtlas (atlas, sprites, transforms, null, SKBlendMode.Dst, paint?.FilterQuality.ToSamplingOptions() ?? SKSamplingOptions.Default, null, paint); + DrawAtlas (atlas, sprites, transforms, null, SKBlendMode.Dst, paint?.FilterQuality.ToSamplingOptions () ?? SKSamplingOptions.Default, null, paint); #pragma warning restore CS0618 // 'SKPaint.FilterQuality' is obsolete: 'Use SKSamplingOptions instead.' public void DrawAtlas (SKImage atlas, SKRect[] sprites, SKRotationScaleMatrix[] transforms, SKSamplingOptions sampling, SKPaint paint = null) => @@ -1894,7 +1955,7 @@ public void DrawAtlas (SKImage atlas, SKRect[] sprites, SKRotationScaleMatrix[] /// public void DrawAtlas (SKImage atlas, SKRect[] sprites, SKRotationScaleMatrix[] transforms, SKColor[] colors, SKBlendMode mode, SKPaint paint = null) => #pragma warning disable CS0618 // 'SKPaint.FilterQuality' is obsolete: 'Use SKSamplingOptions instead.' - DrawAtlas (atlas, sprites, transforms, colors, mode, paint?.FilterQuality.ToSamplingOptions() ?? SKSamplingOptions.Default, null, paint); + DrawAtlas (atlas, sprites, transforms, colors, mode, paint?.FilterQuality.ToSamplingOptions () ?? SKSamplingOptions.Default, null, paint); #pragma warning restore CS0618 // 'SKPaint.FilterQuality' is obsolete: 'Use SKSamplingOptions instead.' public void DrawAtlas (SKImage atlas, SKRect[] sprites, SKRotationScaleMatrix[] transforms, SKColor[] colors, SKBlendMode mode, SKSamplingOptions sampling, SKPaint paint = null) => @@ -1909,7 +1970,7 @@ public void DrawAtlas (SKImage atlas, SKRect[] sprites, SKRotationScaleMatrix[] /// public void DrawAtlas (SKImage atlas, SKRect[] sprites, SKRotationScaleMatrix[] transforms, SKColor[] colors, SKBlendMode mode, SKRect cullRect, SKPaint paint = null) => #pragma warning disable CS0618 // 'SKPaint.FilterQuality' is obsolete: 'Use SKSamplingOptions instead.' - DrawAtlas (atlas, sprites, transforms, colors, mode, paint?.FilterQuality.ToSamplingOptions() ?? SKSamplingOptions.Default, &cullRect, paint); + DrawAtlas (atlas, sprites, transforms, colors, mode, paint?.FilterQuality.ToSamplingOptions () ?? SKSamplingOptions.Default, &cullRect, paint); #pragma warning restore CS0618 // 'SKPaint.FilterQuality' is obsolete: 'Use SKSamplingOptions instead.' public void DrawAtlas (SKImage atlas, SKRect[] sprites, SKRotationScaleMatrix[] transforms, SKColor[] colors, SKBlendMode mode, SKSamplingOptions sampling, SKRect cullRect, SKPaint paint = null) => @@ -1978,27 +2039,30 @@ internal static SKCanvas GetObject (IntPtr handle, bool owns = true, bool unrefE } /// - /// Convenience class used to restore the canvas state in a using statement. + /// Convenience class used to restore the canvas state in a using statement. /// /// - /// This class can be used in a using statement to save the state of the canvas - /// (matrix, clip and draw filter) allowing you to change these components and have - /// them automatically undone by virtue of having the - /// method restore the canvas state to - /// the state it was when this instance was created. - /// ## Examples - /// ```csharp + /// This class can be used in a using statement to save the state of the canvas + /// (matrix, clip and draw filter) allowing you to change these components and have + /// them automatically undone by virtue of having the + /// method restore the canvas state to + /// the state it was when this instance was created. + /// + /// + /// + /// ]]> + /// public class SKAutoCanvasRestore : IDisposable { private SKCanvas canvas; @@ -2032,15 +2096,21 @@ public SKAutoCanvasRestore (SKCanvas canvas, bool doSave) } /// - /// Disposes the canvas restore point, restoring the state of the canvas (matrix, clip and draw filter) to the state it was when the object was created.This operation will not do anything if you had previously manually called the method. + /// Disposes the canvas restore point, restoring the state of the canvas (matrix, + /// clip and draw filter) to the state it was when the object was created. /// + /// + /// This operation will not do anything if you had previously manually called + /// the method. + /// public void Dispose () { Restore (); } /// - /// Restores the canvas restore point, restoring the state of the canvas (matrix, clip and draw filter) to the state it was when the object was creatd. + /// Restores the canvas restore point, restoring the state of the canvas (matrix, + /// clip and draw filter) to the state it was when the object was created. /// public void Restore () { diff --git a/binding/SkiaSharp/SKManagedStream.cs b/binding/SkiaSharp/SKManagedStream.cs index afd6b2a7d5..6e2c8aeb63 100644 --- a/binding/SkiaSharp/SKManagedStream.cs +++ b/binding/SkiaSharp/SKManagedStream.cs @@ -12,28 +12,33 @@ namespace SkiaSharp /// The following example shows how to wrap a that /// represents a stream into an embedded resource in an assembly and use it with /// SkiaSharp APIs that use resources: - /// ## Examples - /// ```csharp + /// + /// + /// + /// ]]> + /// public class SKManagedStream : SKAbstractManagedStream { private Stream stream; diff --git a/binding/SkiaSharp/SKPaint.cs b/binding/SkiaSharp/SKPaint.cs index 8e81bdc2ec..6d025a42c1 100644 --- a/binding/SkiaSharp/SKPaint.cs +++ b/binding/SkiaSharp/SKPaint.cs @@ -69,101 +69,166 @@ public static SKSamplingOptions ToSamplingOptions (this SKFilterQuality quality) } /// - /// Holds the style and color information about how to draw geometries, text and bitmaps. + /// Holds the style and color information about how to draw geometries, text and bitmaps. /// /// - /// Anytime you draw something in SkiaSharp, and want to specify what color it is, - /// or how it blends with the background, or what style or font to draw it in, you - /// specify those attributes in a paint. - /// Unlike , an paint object does not maintain an - /// internal stack of state. That is, there is no save/restore on a paint. - /// However, paint objects are relatively light-weight, so the client may create - /// and maintain any number of paint objects, each set up for a particular use. - /// Factoring all of these color and stylistic attributes out of the canvas state, - /// and into (multiple) paint objects, allows the save and restore operations on - /// the to be that much more efficient, as all they have - /// to do is maintain the stack of matrix and clip settings. - /// ### Effects - /// Beyond simple attributes such as color, strokes, and text values, paints - /// support effects. These are subclasses of different aspects of the drawing - /// pipeline, that when referenced by a paint, are called to override some part - /// of the drawing pipeline. - /// There are five types of effects that can be assigned to an paint object: - /// | Effect | Details | - /// |---------------|------------------------------------------------------------------------------------------------| - /// | Blend Mode | Blend modes and Duff-Porter transfer modes. | - /// | Color Filter | Modification of the source colors before applying the blend mode. | - /// | Mask Filter | Modification of the alpha mask before it is colorized and drawn (for example, blur). | - /// | Path Effect | Modification of the geometry (path) before the alpha mask is generated (for example, dashing). | - /// | Shader | Gradients and bitmap patterns. | - /// ## Examples - /// ### Simple Example - /// The following example shows three different paints, each set up to draw in a - /// different style. The caller can intermix these paints freely, either using - /// them as is, or modifying them as the drawing proceeds. - /// ```csharp + /// + /// Anytime you draw something in SkiaSharp, and want to specify what color it is, + /// or how it blends with the background, or what style or font to draw it in, you + /// specify those attributes in a paint. + /// + /// + /// Unlike , an paint object does not maintain an + /// internal stack of state. That is, there is no save/restore on a paint. + /// However, paint objects are relatively light-weight, so the client may create + /// and maintain any number of paint objects, each set up for a particular use. + /// + /// + /// Factoring all of these color and stylistic attributes out of the canvas state, + /// and into (multiple) paint objects, allows the save and restore operations on + /// the to be that much more efficient, as all they have + /// to do is maintain the stack of matrix and clip settings. + /// + /// + /// Effects + /// + /// + /// Beyond simple attributes such as color, strokes, and text values, paints + /// support effects. These are subclasses of different aspects of the drawing + /// pipeline, that when referenced by a paint, are called to override some part + /// of the drawing pipeline. + /// + /// + /// There are five types of effects that can be assigned to an paint object: + /// + /// + /// + /// Effect + /// Details + /// + /// + /// Blend Mode + /// Blend modes and Duff-Porter transfer modes. + /// + /// + /// Color Filter + /// Modification of the source colors before applying the blend mode. + /// + /// + /// Mask Filter + /// Modification of the alpha mask before it is colorized and drawn (for example, blur). + /// + /// + /// Path Effect + /// Modification of the geometry (path) before the alpha mask is generated (for example, dashing). + /// + /// + /// Shader + /// Gradients and bitmap patterns. + /// + /// + /// + /// + /// + /// Simple Example + /// + /// + /// The following example shows three different paints, each set up to draw in a + /// different style. The caller can intermix these paints freely, either using + /// them as is, or modifying them as the drawing proceeds. + /// + /// + /// + /// The example above produces the following: + /// + /// + /// SKPaint and Text + /// + /// + /// + /// + /// Effects Example + /// + /// + /// The following example draws using a gradient instead of a single color. To do + /// this a is assigned to the paint. Anything drawn with that paint + /// will be drawn with the gradient specified in the call to + /// SKShader.CreateLinearGradient. + /// + /// + /// ]]> + /// + /// The example above produces the following: + /// + /// + /// SKPaint and SKShader + /// + /// public unsafe class SKPaint : SKObject, ISKSkipObjectRegistration { [Obsolete] diff --git a/binding/SkiaSharp/SKShader.cs b/binding/SkiaSharp/SKShader.cs index b5e1ec8f09..d7e19ea71d 100644 --- a/binding/SkiaSharp/SKShader.cs +++ b/binding/SkiaSharp/SKShader.cs @@ -6,185 +6,218 @@ namespace SkiaSharp { /// - /// Shaders specify the source color(s) for what is being drawn in the . + /// Shaders specify the source color(s) for what is being drawn in the . /// /// - /// Shaders specify the source colors for what is being drawn. If a paint has no - /// shader, then the paint's color is used. If the paint has a shader, then the - /// shader's colors are used instead, but they are modulated by the paint's alpha. - /// This makes it easy to create a shader once (for example, bitmap tiling or - /// gradient) and then change its transparency without having to modify the - /// original shader, only the paint's alpha needs to be modified. - /// Shaders are created by calling one of the static "Create" methods. - /// ## Examples - /// ### Linear Gradient Shader Example - /// ```csharp + /// + /// Shaders specify the source colors for what is being drawn. If a paint has no + /// shader, then the paint's color is used. If the paint has a shader, then the + /// shader's colors are used instead, but they are modulated by the paint's alpha. + /// + /// + /// This makes it easy to create a shader once (for example, bitmap tiling or + /// gradient) and then change its transparency without having to modify the + /// original shader, only the paint's alpha needs to be modified. + /// + /// + /// Shaders are created by calling one of the static "Create" methods. + /// + /// + /// + /// + /// Linear Gradient Shader Example + /// + /// + /// The example above produces the following: + /// Linear Gradient + /// + /// + /// + /// Radial Gradient Shader Example + /// + /// + /// The example above produces the following: + /// Radial Gradient + /// + /// + /// + /// Two-point Conical Gradient Shader Example + /// + /// + /// The example above produces the following: + /// Two-point Conical Gradient + /// + /// + /// + /// Sweep Gradient Shader Example + /// + /// + /// The example above produces the following: + /// Sweep Gradient + /// + /// + /// + /// Fractal Perlin Noise Shader Example + /// + /// + /// The example above produces the following: + /// Fractal Perlin Noise + /// + /// + /// + /// Perlin Noise Turbulence Shader Example + /// + /// + /// The example above produces the following: + /// Fractal Perlin Noise + /// + /// + /// + /// Compose Shader Example + /// + /// + /// ]]> + /// The example above produces the following: + /// Compose Shader + /// public unsafe class SKShader : SKObject, ISKReferenceCounted { internal SKShader (IntPtr handle, bool owns) diff --git a/binding/SkiaSharp/SKSurface.cs b/binding/SkiaSharp/SKSurface.cs index 6f092e26c3..bf86eaca35 100644 --- a/binding/SkiaSharp/SKSurface.cs +++ b/binding/SkiaSharp/SKSurface.cs @@ -9,27 +9,28 @@ namespace SkiaSharp /// Represents the backend/results of drawing to a canvas. /// /// - /// - /// The surface represents the backend/results of drawing to a canvas. For raster - /// drawing, the surface will be pixels, but (for example) when drawing into a - /// PDF or canvas, the surface stores the recorded - /// commands. - /// - /// - /// The surface always has non-zero dimensions. If there is a request for a new - /// surface, and either of the requested dimensions are zero, then will - /// be returned. - /// - /// - /// Once you create a surface with one of its - /// methods, you can draw into the canvas returned by the - /// property. Once the drawing is complete, you - /// can retrieve an by calling the - /// method. - /// + /// + /// The surface represents the backend/results of drawing to a canvas. For raster + /// drawing, the surface will be pixels, but (for example) when drawing into a + /// PDF or canvas, the surface stores the recorded + /// commands. + /// + /// + /// The surface always has non-zero dimensions. If there is a request for a new + /// surface, and either of the requested dimensions are zero, then will + /// be returned. + /// + /// + /// Once you create a surface with one of its + /// methods, you can draw into the canvas returned by the + /// property. Once the drawing is complete, you + /// can retrieve an by calling the + /// method. + /// /// /// - /// + /// + /// - /// - /// The example above produces the following: - /// - /// - /// SKSurface - /// + /// ]]> + /// + /// + /// The example above produces the following: + /// + /// + /// SKSurface + /// /// public unsafe class SKSurface : SKObject, ISKReferenceCounted { @@ -649,7 +651,7 @@ public static SKSurface Create (GRRecordingContext context, bool budgeted, SKIma return GetObject (SkiaApi.sk_surface_new_render_target (context.Handle, budgeted, &cinfo, sampleCount, origin, props?.Handle ?? IntPtr.Zero, shouldCreateWithMips)); } - #if __MACOS__ || __IOS__ +#if __MACOS__ || __IOS__ public static SKSurface Create (GRContext context, CoreAnimation.CAMetalLayer layer, GRSurfaceOrigin origin, int sampleCount, SKColorType colorType, out CoreAnimation.ICAMetalDrawable drawable) => Create ((GRRecordingContext)context, layer, origin, sampleCount, colorType, out drawable); @@ -683,7 +685,7 @@ public static SKSurface Create (GRRecordingContext context, MetalKit.MTKView vie public static SKSurface Create (GRRecordingContext context, MetalKit.MTKView view, GRSurfaceOrigin origin, int sampleCount, SKColorType colorType, SKColorSpace colorspace, SKSurfaceProperties props) => GetObject (SkiaApi.sk_surface_new_metal_view (context.Handle, (void*)(IntPtr)view.Handle, origin, sampleCount, colorType.ToNative (), colorspace?.Handle ?? IntPtr.Zero, props?.Handle ?? IntPtr.Zero)); - #endif +#endif // NULL surface diff --git a/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Controls/SKCanvasView.cs b/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Controls/SKCanvasView.cs index f317be5239..45b05fad6e 100644 --- a/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Controls/SKCanvasView.cs +++ b/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Controls/SKCanvasView.cs @@ -47,7 +47,7 @@ public SKCanvasView() /// /// /// - /// + /// /// { /// var surface = e.Surface; @@ -57,7 +57,7 @@ public SKCanvasView() /// /// // draw on the canvas /// }; - /// + /// ]]> /// public event EventHandler? PaintSurface; diff --git a/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Controls/SKGLView.cs b/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Controls/SKGLView.cs index 57157c692a..c6c53b992e 100644 --- a/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Controls/SKGLView.cs +++ b/source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Controls/SKGLView.cs @@ -80,7 +80,7 @@ public bool EnableTouchEvents /// /// /// - /// + /// /// { @@ -91,7 +91,7 @@ public bool EnableTouchEvents /// /// // draw on the canvas /// }; - /// + /// ]]> /// public event EventHandler? PaintSurface; diff --git a/source/SkiaSharp.Views/SkiaSharp.Views.Gtk3/SKDrawingArea.cs b/source/SkiaSharp.Views/SkiaSharp.Views.Gtk3/SKDrawingArea.cs index 29ae16b4da..c5138258e7 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views.Gtk3/SKDrawingArea.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views.Gtk3/SKDrawingArea.cs @@ -42,7 +42,7 @@ public SKDrawingArea() /// /// /// - /// + /// /// { /// var surface = e.Surface; @@ -52,7 +52,7 @@ public SKDrawingArea() /// /// // draw on the canvas /// }; - /// + /// ]]> /// [Category("Appearance")] public event EventHandler PaintSurface; diff --git a/source/SkiaSharp.Views/SkiaSharp.Views.WinUI/SKSwapChainPanel.cs b/source/SkiaSharp.Views/SkiaSharp.Views.WinUI/SKSwapChainPanel.cs index f852329201..2de239aa13 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views.WinUI/SKSwapChainPanel.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views.WinUI/SKSwapChainPanel.cs @@ -58,7 +58,7 @@ public SKSwapChainPanel() /// /// /// - /// + /// /// { /// var surface = e.Surface; @@ -68,7 +68,7 @@ public SKSwapChainPanel() /// /// // draw on the canvas /// }; - /// + /// ]]> /// public event EventHandler PaintSurface; diff --git a/source/SkiaSharp.Views/SkiaSharp.Views.WinUI/SKXamlCanvas.cs b/source/SkiaSharp.Views/SkiaSharp.Views.WinUI/SKXamlCanvas.cs index facc989a41..c2e17340ec 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views.WinUI/SKXamlCanvas.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views.WinUI/SKXamlCanvas.cs @@ -115,7 +115,7 @@ public bool IgnorePixelScaling /// /// /// - /// + /// /// { /// var surface = e.Surface; @@ -125,7 +125,7 @@ public bool IgnorePixelScaling /// /// // draw on the canvas /// }; - /// + /// ]]> /// public event EventHandler PaintSurface; diff --git a/source/SkiaSharp.Views/SkiaSharp.Views.WindowsForms/SKControl.cs b/source/SkiaSharp.Views/SkiaSharp.Views.WindowsForms/SKControl.cs index 41056b0c50..9f8d7f3149 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views.WindowsForms/SKControl.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views.WindowsForms/SKControl.cs @@ -49,7 +49,7 @@ public SKControl() /// /// /// - /// + /// /// { /// var surface = e.Surface; @@ -59,7 +59,7 @@ public SKControl() /// /// // draw on the canvas /// }; - /// + /// ]]> /// [Category("Appearance")] public event EventHandler PaintSurface; diff --git a/source/SkiaSharp.Views/SkiaSharp.Views.WindowsForms/SKGLControl.cs b/source/SkiaSharp.Views/SkiaSharp.Views.WindowsForms/SKGLControl.cs index e7c557c051..3f5d99c845 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views.WindowsForms/SKGLControl.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views.WindowsForms/SKGLControl.cs @@ -98,7 +98,7 @@ private void Initialize() /// /// /// - /// + /// /// { /// var surface = e.Surface; @@ -108,7 +108,7 @@ private void Initialize() /// /// // draw on the canvas /// }; - /// + /// ]]> /// [Category("Appearance")] public event EventHandler PaintSurface; diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKCanvasView.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKCanvasView.cs index 029d2ff332..9b9c476219 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKCanvasView.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKCanvasView.cs @@ -167,7 +167,7 @@ protected override void OnSizeChanged(int w, int h, int oldw, int oldh) /// /// /// - /// + /// /// { @@ -178,7 +178,7 @@ protected override void OnSizeChanged(int w, int h, int oldw, int oldh) /// /// // draw on the canvas /// }; - /// + /// ]]> /// public event EventHandler PaintSurface; diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLSurfaceView.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLSurfaceView.cs index 6fa33bfdad..1ad916224d 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLSurfaceView.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLSurfaceView.cs @@ -69,7 +69,7 @@ private void Initialize() /// /// /// - /// + /// /// { /// var surface = e.Surface; @@ -79,7 +79,7 @@ private void Initialize() /// /// // draw on the canvas /// }; - /// + /// ]]> /// public event EventHandler PaintSurface; diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureView.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureView.cs index ba58916990..39d88b5129 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureView.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureView.cs @@ -80,7 +80,7 @@ private void Initialize() /// /// /// - /// + /// /// { /// var surface = e.Surface; @@ -90,7 +90,7 @@ private void Initialize() /// /// // draw on the canvas /// }; - /// + /// ]]> /// public event EventHandler PaintSurface; diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Apple/SKCanvasLayer.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Apple/SKCanvasLayer.cs index f394390296..6e4a062b15 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Apple/SKCanvasLayer.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Apple/SKCanvasLayer.cs @@ -104,7 +104,7 @@ public override void DrawInContext(CGContext ctx) /// /// /// - /// + /// /// { /// var surface = e.Surface; @@ -114,7 +114,7 @@ public override void DrawInContext(CGContext ctx) /// /// // draw on the canvas /// }; - /// + /// ]]> /// public event EventHandler PaintSurface; public event EventHandler PaintSurface; diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/SKCanvasView.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/SKCanvasView.cs index cb1611cd9f..cd5d6ad7c7 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/SKCanvasView.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/SKCanvasView.cs @@ -52,7 +52,7 @@ public bool IgnorePixelScaling /// /// /// - /// + /// /// { /// var surface = e.Surface; @@ -62,7 +62,7 @@ public bool IgnorePixelScaling /// /// // draw on the canvas /// }; - /// + /// ]]> /// public event EventHandler PaintSurface; diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/SKGLSurfaceView.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/SKGLSurfaceView.cs index d66c7ee2cc..ab448135b2 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/SKGLSurfaceView.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/SKGLSurfaceView.cs @@ -56,7 +56,7 @@ public SKGLSurfaceView(EvasObject parent) /// /// /// - /// + /// /// { /// var surface = e.Surface; @@ -66,7 +66,7 @@ public SKGLSurfaceView(EvasObject parent) /// /// // draw on the canvas /// }; - /// + /// ]]> /// public event EventHandler PaintSurface; diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKCanvasView.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKCanvasView.cs index 0232060c44..a4da02460d 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKCanvasView.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKCanvasView.cs @@ -175,7 +175,7 @@ public override void WillMoveToWindow(UIWindow window) /// /// /// - /// + /// /// { /// var surface = e.Surface; @@ -185,7 +185,7 @@ public override void WillMoveToWindow(UIWindow window) /// /// // draw on the canvas /// }; - /// + /// ]]> /// public event EventHandler PaintSurface; diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLLayer.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLLayer.cs index eba6a61f73..ec9f948f44 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLLayer.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLLayer.cs @@ -161,7 +161,7 @@ public override CGRect Frame /// /// /// - /// + /// /// { /// var surface = e.Surface; @@ -171,7 +171,7 @@ public override CGRect Frame /// /// // draw on the canvas /// }; - /// + /// ]]> /// public event EventHandler PaintSurface; diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLView.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLView.cs index c016ae4700..d918374c76 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLView.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLView.cs @@ -208,7 +208,7 @@ private void Initialize() /// /// /// - /// + /// /// { /// var surface = e.Surface; @@ -218,7 +218,7 @@ private void Initialize() /// /// // draw on the canvas /// }; - /// + /// ]]> /// public event EventHandler PaintSurface; diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKCanvasView.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKCanvasView.cs index e9d163d0bb..f97553304a 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKCanvasView.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKCanvasView.cs @@ -97,7 +97,7 @@ public bool IgnorePixelScaling /// /// /// - /// + /// /// { /// var surface = e.Surface; @@ -107,7 +107,7 @@ public bool IgnorePixelScaling /// /// // draw on the canvas /// }; - /// + /// ]]> /// public event EventHandler PaintSurface; diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLLayer.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLLayer.cs index f1a33fdcde..a3307298c4 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLLayer.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLLayer.cs @@ -58,7 +58,7 @@ public SKGLLayer() /// /// /// - /// + /// /// { /// var surface = e.Surface; @@ -68,7 +68,7 @@ public SKGLLayer() /// /// // draw on the canvas /// }; - /// + /// ]]> /// public event EventHandler PaintSurface; diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLView.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLView.cs index 4af9dabb18..1f726a21da 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLView.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLView.cs @@ -224,7 +224,7 @@ public override void DrawRect(CGRect dirtyRect) /// /// /// - /// + /// /// { /// var surface = e.Surface; @@ -234,7 +234,7 @@ public override void DrawRect(CGRect dirtyRect) /// /// // draw on the canvas /// }; - /// + /// ]]> /// public event EventHandler PaintSurface; From 9435f6d528cc815ce082686a58d47f537d60819e Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Wed, 10 Sep 2025 22:31:44 +0200 Subject: [PATCH 33/35] oops --- .../SkiaSharp.Views/Platform/Apple/SKCanvasLayer.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Apple/SKCanvasLayer.cs b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Apple/SKCanvasLayer.cs index 6e4a062b15..6814e2eb38 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Apple/SKCanvasLayer.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views/Platform/Apple/SKCanvasLayer.cs @@ -117,7 +117,6 @@ public override void DrawInContext(CGContext ctx) /// ]]> /// public event EventHandler PaintSurface; - public event EventHandler PaintSurface; protected virtual void OnPaintSurface(SKPaintSurfaceEventArgs e) { From 0e7e10e4ba2ba69185f5eaf695950e028b746975 Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Thu, 11 Sep 2025 00:03:51 +0200 Subject: [PATCH 34/35] add the xml too --- source/SkiaSharp.NuGet.targets | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/source/SkiaSharp.NuGet.targets b/source/SkiaSharp.NuGet.targets index 6f48b750a3..af4f1a8e86 100644 --- a/source/SkiaSharp.NuGet.targets +++ b/source/SkiaSharp.NuGet.targets @@ -62,12 +62,15 @@ $(PackageNotes) Include the reference assembly in the package. =================================================================================================================== --> - - - + + - - + +
+ - - + +