Skip to content

Fill all documentation placeholders for SkiaSharp 3.x APIs#145

Closed
github-actions[bot] wants to merge 1 commit into
mainfrom
dev/linux-mdoc-regenerate-stubs
Closed

Fill all documentation placeholders for SkiaSharp 3.x APIs#145
github-actions[bot] wants to merge 1 commit into
mainfrom
dev/linux-mdoc-regenerate-stubs

Conversation

@github-actions

Copy link
Copy Markdown
Contributor

Populates all "To be added." placeholder fields across 38 documentation files (1057 fields merged into 65 XML files) for new APIs added in SkiaSharp 3.x and HarfBuzzSharp.

What was documented

HarfBuzzSharp

  • Face: variation axes (HasVariationData, VariationAxisInfos, GetVariationAxisInfos, TryFindVariationAxis), named instances (NamedInstanceCount, GetNamedInstanceSubfamilyNameId, etc.), color palettes (HasPalettes, PaletteCount, GetPaletteColors, GetPaletteFlags, GetPaletteNameId, GetPaletteColorNameId), color layers/SVG/PNG flags
  • Font: SetVariations, SetVariationCoordsDesign, SetVariationCoordsNormalized, VariationCoordsNormalized, GetVariationCoordsNormalized, SetVariationNamedInstance
  • HBColor: Full type-level remarks (BGRA byte ordering), all constructors, channel properties, operators

SkiaSharp

  • SKFourByteTag: Type-level remarks with examples, all members
  • SKColorspacePrimariesCicp / SKColorspaceTransferFnCicp: CICP enum values (verified against generated.cs)
  • SKColorSpace.CreateCicp: Factory method
  • SKColorType: Bgra10101010XR, RgbF16F16F16x, R16Unorm, RF16
  • GRVkYcbcrComponents / GRVkYcbcrConversionInfo: Vulkan YCbCr structs (all fields)
  • GrVkYcbcrConversionInfo: Obsolete wrapper with implicit conversion operators
  • SKDocumentXpsOptions: Dpi, AllowNoPngs; SKDocument.CreateXps overloads
  • SKFontArguments / SKFontPaletteOverride / SKFontVariationAxis / SKFontVariationPositionCoordinate: Font variation/palette structs with type-level remarks
  • SKTypeface: Empty, IsEmpty, Clone overloads, variation design API
  • SKPathBuilder: Full 51-member type with type-level remarks and examples
  • SKPathMeasure.GetSegment writing to SKPathBuilder
  • SKPaint.GetFillPath overloads writing to SKPathBuilder
  • SKWebpEncoder.Encode / EncodeAnimated: Animated WebP encoding; SKWebpEncoderFrame struct
  • SKCanvas: DrawBitmap/DrawSurface overloads with SKSamplingOptions
  • SKSurface.Draw with SKSamplingOptions
  • SKMaskFilter.CreateShader, SKStream.GetData, SKPath.Handle
  • GRContext.Flush(SKImage) / GRContext.Flush(SKSurface)

SkiaSharp.HarfBuzz

  • ColorExtensions: ToHBColor, ToSKColor, ToSKColorF, ToSKColors

Views

  • SKGLControl constructors (Desktop), GTKExtensions converters (13 methods)
  • SKDrawingArea.Dispose, SKGLSurfaceViewRenderer (infrastructure)
  • Blazor _Imports, ActionHelper, FloatFloatActionHelper (infrastructure)
  • SkiaSharp.Views.Blazor.Internal namespace summary

Process

Documentation was sourced directly from C# source files in the SkiaSharp binding, SkiaApi.generated.cs (for CICP enum values and Vulkan struct layouts), and verified against the .NET XML documentation patterns guide.

Generated by Auto API Docs Writer · ● 8.2M ·

Populate all 'To be added.' placeholder fields across 38 documentation
files (1057 fields in 38 XML files) for new APIs in SkiaSharp 3.x and
HarfBuzzSharp:

HarfBuzzSharp:
- Face: variation axes (HasVariationData, VariationAxisInfos, etc.),
  named instances, color palettes (HasPalettes, GetPaletteColors, etc.)
- Font: SetVariations, SetVariationCoordsDesign/Normalized,
  VariationCoordsNormalized, SetVariationNamedInstance
- HBColor: BGRA-packed color struct with full type-level remarks

SkiaSharp:
- SKFourByteTag: big-endian packed tag struct with remarks/examples
- SKColorspacePrimariesCicp / SKColorspaceTransferFnCicp: CICP enums
- SKColorSpace.CreateCicp: factory for CICP color spaces
- SKColorType: Bgra10101010XR, RgbF16F16F16x, R16Unorm, RF16
- GRVkYcbcrComponents / GRVkYcbcrConversionInfo: Vulkan YCbCr structs
- GrVkYcbcrConversionInfo: obsolete wrapper with conversion operators
- SKDocumentXpsOptions / SKDocument.CreateXps: XPS options struct
- SKFontArguments / SKFontPaletteOverride / SKFontVariationAxis /
  SKFontVariationPositionCoordinate: font variation/palette structs
- SKTypeface: Empty, IsEmpty, Clone overloads, variation API
- SKPathBuilder: full 51-member mutable path builder with remarks
- SKPathMeasure.GetSegment with SKPathBuilder destination
- SKPaint.GetFillPath overloads writing to SKPathBuilder
- SKWebpEncoder.Encode / EncodeAnimated: animated WebP encoding
- SKWebpEncoderFrame: animated WebP frame struct
- SKCanvas: DrawBitmap/DrawSurface with SKSamplingOptions
- SKSurface.Draw with SKSamplingOptions
- SKMaskFilter.CreateShader, SKStream.GetData, SKPath.Handle
- GRContext.Flush(SKImage) / Flush(SKSurface)

SkiaSharp.HarfBuzz:
- ColorExtensions: ToHBColor/ToSKColor/ToSKColorF/ToSKColors

Views:
- SKGLControl constructors, GTKExtensions converters
- SKDrawingArea.Dispose, SKGLSurfaceViewRenderer (infra)
- Blazor _Imports, ActionHelper, FloatFloatActionHelper (infra)
- SkiaSharp.Views.Blazor.Internal namespace summary

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@learn-build-service-prod

Copy link
Copy Markdown
Contributor

PoliCheck Scan Report

The following report lists PoliCheck issues in PR files. Before you merge the PR, you must fix all severity-1 and severity-2 issues. The AI Review Details column lists suggestions for either removing or replacing the terms. If you find a false positive result, mention it in a PR comment and include this text: #policheck-false-positive. This feedback helps reduce false positives in future scans.

✅ No issues found

More information about PoliCheck

Information: PoliCheck | Severity Guidance | Term
For any questions: Try searching the learn.microsoft.com contributor guides or post your question in the Learn support channel.

@learn-build-service-prod

Copy link
Copy Markdown
Contributor

Learn Build status updates of commit dd79afe:

⚠️ Validation status: warnings

File Status Preview URL Details
SkiaSharpAPI/SkiaSharp.Views.Desktop/SKGLControl.xml ⚠️Warning Details
SkiaSharpAPI/SkiaSharp.Views.Gtk/GTKExtensions.xml ⚠️Warning Details
SkiaSharpAPI/SkiaSharp.Views.Gtk/SKDrawingArea.xml ⚠️Warning Details
SkiaSharpAPI/SkiaSharp/SKFontArguments.xml ⚠️Warning Details
SkiaSharpAPI/SkiaSharp/SKTypeface.xml ⚠️Warning Details
SkiaSharpAPI/FrameworksIndex/skiasharp-views.xml ✅Succeeded
SkiaSharpAPI/FrameworksIndex/skiasharp.xml ✅Succeeded
SkiaSharpAPI/HarfBuzzSharp/Face.xml ✅Succeeded
SkiaSharpAPI/HarfBuzzSharp/Font.xml ✅Succeeded
SkiaSharpAPI/HarfBuzzSharp/HBColor.xml ✅Succeeded
SkiaSharpAPI/index.xml ✅Succeeded
SkiaSharpAPI/ns-SkiaSharp.Views.Blazor.Internal.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp.HarfBuzz/ColorExtensions.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp.Resources/CachingResourceProvider.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp.Resources/DataUriResourceProvider.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp.Resources/FileResourceProvider.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp.Resources/ResourceProvider.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp.Skottie/Animation.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp.Skottie/AnimationBuilder.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp.Views.Android/SKGLSurfaceViewRenderer.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp.Views.Blazor.Internal/ActionHelper.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp.Views.Blazor.Internal/FloatFloatActionHelper.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp.Views.Blazor/_Imports.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp.Views.Blazor/SKCanvasView.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp.Views.Blazor/SKGLView.xml ✅Succeeded

This comment lists only the first 25 files in the pull request.

SkiaSharpAPI/SkiaSharp.Views.Desktop/SKGLControl.xml

  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'OpenTK.GLControl'.

SkiaSharpAPI/SkiaSharp.Views.Gtk/GTKExtensions.xml

  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.RGBA'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.RGBA'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Size'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Size'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Rectangle'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Rectangle'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Pixbuf'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Pixbuf'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Color'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Color'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Graphene.Point3D'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Pixbuf'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Pixbuf'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Pixbuf'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Pixbuf'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Pixbuf'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Pixbuf'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Pixbuf'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Pixbuf'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Point'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Point'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Graphene.Point'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Rectangle'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Rectangle'.

This comment lists only the first 25 errors (including error/warning/suggestion) in the pull request.
For more details, please refer to the build report.

Note: Your PR may contain errors or warnings or suggestions unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.

@mattleibow mattleibow force-pushed the dev/linux-mdoc-regenerate-stubs branch from dd79afe to 5bcb571 Compare June 20, 2026 04:25
@learn-build-service-prod

Copy link
Copy Markdown
Contributor

PoliCheck Scan Report

The following report lists PoliCheck issues in PR files. Before you merge the PR, you must fix all severity-1 and severity-2 issues. The AI Review Details column lists suggestions for either removing or replacing the terms. If you find a false positive result, mention it in a PR comment and include this text: #policheck-false-positive. This feedback helps reduce false positives in future scans.

✅ No issues found

More information about PoliCheck

Information: PoliCheck | Severity Guidance | Term
For any questions: Try searching the learn.microsoft.com contributor guides or post your question in the Learn support channel.

@mattleibow mattleibow force-pushed the dev/linux-mdoc-regenerate-stubs branch from 5bcb571 to dd79afe Compare June 20, 2026 04:26
@learn-build-service-prod

Copy link
Copy Markdown
Contributor

Learn Build status updates of commit 5bcb571:

✅ Validation status: passed

File Status Preview URL Details
.github/workflows/auto-api-docs-writer.lock.yml ✅Succeeded
.github/workflows/auto-api-docs-writer.md ✅Succeeded

For more details, please refer to the build report.

@learn-build-service-prod

Copy link
Copy Markdown
Contributor

PoliCheck Scan Report

The following report lists PoliCheck issues in PR files. Before you merge the PR, you must fix all severity-1 and severity-2 issues. The AI Review Details column lists suggestions for either removing or replacing the terms. If you find a false positive result, mention it in a PR comment and include this text: #policheck-false-positive. This feedback helps reduce false positives in future scans.

✅ No issues found

More information about PoliCheck

Information: PoliCheck | Severity Guidance | Term
For any questions: Try searching the learn.microsoft.com contributor guides or post your question in the Learn support channel.

@learn-build-service-prod

Copy link
Copy Markdown
Contributor

Learn Build status updates of commit dd79afe:

⚠️ Validation status: warnings

File Status Preview URL Details
SkiaSharpAPI/SkiaSharp.Views.Desktop/SKGLControl.xml ⚠️Warning Details
SkiaSharpAPI/SkiaSharp.Views.Gtk/GTKExtensions.xml ⚠️Warning Details
SkiaSharpAPI/SkiaSharp.Views.Gtk/SKDrawingArea.xml ⚠️Warning Details
SkiaSharpAPI/SkiaSharp/SKFontArguments.xml ⚠️Warning Details
SkiaSharpAPI/SkiaSharp/SKTypeface.xml ⚠️Warning Details
SkiaSharpAPI/FrameworksIndex/skiasharp-views.xml ✅Succeeded
SkiaSharpAPI/FrameworksIndex/skiasharp.xml ✅Succeeded
SkiaSharpAPI/HarfBuzzSharp/Face.xml ✅Succeeded
SkiaSharpAPI/HarfBuzzSharp/Font.xml ✅Succeeded
SkiaSharpAPI/HarfBuzzSharp/HBColor.xml ✅Succeeded
SkiaSharpAPI/index.xml ✅Succeeded
SkiaSharpAPI/ns-SkiaSharp.Views.Blazor.Internal.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp.HarfBuzz/ColorExtensions.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp.Resources/CachingResourceProvider.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp.Resources/DataUriResourceProvider.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp.Resources/FileResourceProvider.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp.Resources/ResourceProvider.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp.Skottie/Animation.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp.Skottie/AnimationBuilder.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp.Views.Android/SKGLSurfaceViewRenderer.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp.Views.Blazor.Internal/ActionHelper.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp.Views.Blazor.Internal/FloatFloatActionHelper.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp.Views.Blazor/_Imports.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp.Views.Blazor/SKCanvasView.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp.Views.Blazor/SKGLView.xml ✅Succeeded

This comment lists only the first 25 files in the pull request.

SkiaSharpAPI/SkiaSharp.Views.Desktop/SKGLControl.xml

  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'OpenTK.GLControl'.

SkiaSharpAPI/SkiaSharp.Views.Gtk/GTKExtensions.xml

  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Graphene.Point'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Graphene.Point3D'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Size'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Size'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Color'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Rectangle'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.RGBA'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.RGBA'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Graphene.Rect'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Graphene.Size'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Pixbuf'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Pixbuf'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Pixbuf'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Pixbuf'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Point'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Rectangle'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Size'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Pixbuf'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Color'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.RGBA'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.RGBA'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Pixbuf'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Pixbuf'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Graphene.Point'.

This comment lists only the first 25 errors (including error/warning/suggestion) in the pull request.
For more details, please refer to the build report.

Note: Your PR may contain errors or warnings or suggestions unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.

@mattleibow mattleibow closed this Jun 22, 2026
@mattleibow mattleibow deleted the dev/linux-mdoc-regenerate-stubs branch June 22, 2026 23:17
mattleibow added a commit that referenced this pull request Jun 23, 2026
[CI] Run API-docs stub regeneration on Linux via Mono (#147)

Two related changes to the auto-api-docs-writer workflow: flip the
regenerate-stubs job to Linux, and stop the writer from running on pull
requests.

~~ Move regenerate-stubs from Windows to Linux ~~

This job was the last non-Linux job across the SkiaSharp + SkiaSharp-API-docs
doc pipeline; with it flipped, the entire two-repo pipeline runs on Linux,
matching the local Docker image and the SkiaSharp-side CI.

The job only used Windows because mdoc.exe is a .NET Framework tool, but that
requirement no longer holds:

  * mdoc.exe runs fine under Mono, and SkiaSharp's docs.cake already invokes it
    via `mono`.
  * The managed GTK# reference assemblies mdoc needs come from NuGet via the
    cake comparer (passed as --lib paths), so no system GTK# install is
    required — the Windows GTK# 2 MSI download/install was redundant.

So Mono (mono-complete via apt) is the only added dependency. The job now calls
the shared scripts/infra/docs/generate-api-docs.sh entry point instead of
`dotnet cake --target=update-docs`, uses global.json for the SDK and Linux-style
nuget cache paths, and drops the now-redundant `dotnet tool restore` and
docs-download-output steps.

Proven locally end-to-end on Linux (Docker, dotnet10 + mono-complete) against
this repo's stub tree: it correctly pruned the orphaned net6-only type files
(ActionHelper, FloatFloatActionHelper) and added the newer [Nullable]
attributes, and two consecutive runs produced byte-identical output
(hash ec15190a) — so the job is both correct and idempotent on Linux.

Prerequisite: the companion mono/SkiaSharp#4200, which adds
scripts/infra/docs/generate-api-docs.sh, has merged to main, so the checked-out
SkiaSharp tree now has the script.

~~ Drop the pull_request trigger ~~

The writer is a full agentic workflow: it regenerates stubs, fills placeholders
with AI, and opens a PR via gh-aw safe-outputs. When a PR edits this workflow,
the writer fires on that PR and then fails, because safe-outputs refuses to
create a PR that touches protected workflow files
(protect_top_level_dot_folders: true) — surfacing as a red safe_outputs check on
this very PR. Removing the pull_request trigger stops the writer running on PRs;
push:[main] still validates workflow edits after they land, and
workflow_dispatch + schedule are unaffected.

Recompiled .lock.yml via `gh aw compile` for both commits.

Supersedes #144, which gh-aw's recreate_ref:true auto-closed when a run was
dispatched on its branch; moved to the dedicated ci/linux-mdoc-regenerate-stubs
branch so the agentic placeholder-fill PRs reusing dev/linux-mdoc-regenerate-stubs
(e.g. #145) can't collide with it.

Co-authored-by: Matthew Leibowitz <mattleibow@live.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant