Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
53cabf2
Add CanvasNetVsdx design, requirements, and SysML2 skeleton
Oct 7, 2026
c5749e7
Add CanvasNetVsdx project scaffolding (Milestone 1)
Oct 7, 2026
67fb479
Fix cspell gaps in VSDX design/fixture docs
Oct 7, 2026
3b3639b
Vsdx Milestone 2: OPC package layer + page enumeration
Oct 7, 2026
6fa1d23
Vsdx Milestone 3: Shape/geometry model + master/stencil inheritance +…
Oct 7, 2026
3f0d3d6
Vsdx Milestone 4: text parsing, TextStyle resolution, and layout
Oct 7, 2026
883bf4a
Vsdx Milestone 5: connector/glue-point routing
Oct 7, 2026
b67a47f
Vsdx Milestone 6: Theme color resolution and group/nested-shape trans…
Oct 7, 2026
1d27a29
Vsdx Milestone 7: Public Render API integration
Oct 7, 2026
0f29d06
Vsdx Milestone 8: promote Vsdx fixtures into test project
Oct 8, 2026
6083f98
Vsdx Milestone 8: backfill reqstream traceability, verification docs,…
Oct 8, 2026
04b3468
Vsdx Milestone 9: final local review and documentation reconciliation
Oct 8, 2026
4aadd7d
Vsdx Milestone 10: Bug #1 - exclude deleted shape stubs and suppress …
Oct 8, 2026
4d504a0
Vsdx Milestone 10: Bug #2 - visible hairline stroke floor plus transf…
Oct 8, 2026
f9c46f9
Vsdx Milestone 10: Bug #3 - honor FillForegndTrans/LineColorTrans tra…
Oct 8, 2026
40d9922
Vsdx Milestone 10: companion documentation for the 3 rendering-fideli…
Oct 8, 2026
ae2b984
vsdx milestone10 retry1: narrow CellMerge transform-cell exception to…
Oct 8, 2026
c2e17d7
vsdx milestone10 retry1: add full-transparency locking tests (Finding…
Oct 8, 2026
e7d744b
vsdx milestone10 retry1: correct documentation for Findings #1-#3 (docs)
Oct 8, 2026
008747b
Vsdx Milestone 11: cell-by-cell geometry-row merge (Group A: Findings…
Oct 8, 2026
9282ebc
Vsdx Milestone 11: EllipticalArcTo/ArcTo geometry conversion (Group B…
Oct 8, 2026
d998dca
Vsdx Milestone 11: HideText suppression (Group C: Finding #8)
Oct 8, 2026
2f885d8
Vsdx Milestone 11: fld element text parsing (Group D: Finding #3 labe…
Oct 8, 2026
9591348
Vsdx Milestone 11: arrowhead index 4/254 mapping (Group E: Finding #5)
Oct 8, 2026
93bc327
Vsdx Milestone 11: companion documentation updates for 5 real-world f…
Oct 8, 2026
fbf9973
fix(vsdx): unconditionally overlay instance geometry-row cells over M…
Oct 8, 2026
a251e4f
docs(vsdx): update companion docs for Milestone 11 quality-retry (ret…
Oct 8, 2026
d893423
Fix 2-D group-child transform-cell merge gap (Milestone 12 Finding #3)
Oct 8, 2026
e921627
Document Milestone 12 group-child cell-merge fix and corpus findings
Oct 8, 2026
dda2c46
Strengthen HideText suppression test to scan full rect for glyph ink
Oct 8, 2026
957c740
docs: fix formal-review traceability/documentation gaps for Vsdx
Oct 8, 2026
f6e3cf0
Fix PR #42 review comments: multi-section fill/line flags, rotation-i…
Oct 8, 2026
29c9605
Fix PR #42 review round 2 findings (7 Copilot review comments + 2 for…
Oct 8, 2026
e368c32
Link orphaned TextBoxRotationRendering requirement under CanvasNetVsd…
Oct 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .cspell.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -203,6 +203,7 @@ words:
- Unclipped
- unmasked
- Unmasked
- unconsulted
- unstroked
- Unstroked
- unduplicated
Expand Down Expand Up @@ -360,6 +361,11 @@ words:
- precomputes
- uncontained
- prst
- AIRttt
- AIRuuu
- Lucidchart
- lucidchart
- borderless

# Exclude common build artifacts, dependencies, and vendored third-party code
ignorePaths:
Expand Down
59 changes: 59 additions & 0 deletions .reviewmark.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -1001,6 +1001,65 @@ reviews:
- "test/DemaConsulting.CanvasNet.Charts.Tests/OpenXmlChartParserTests.cs" # unit tests
- "test/DemaConsulting.CanvasNet.Charts.Tests/OpenXmlChartFixtures/README.md" # fixture provenance

# CanvasNetVsdx-Architecture Review (one per system)
- id: CanvasNetVsdx-Architecture
title: Review that CanvasNetVsdx Architecture Satisfies Requirements
context:
- "README.md"
- "docs/user_guide/**/*.md"
paths:
- "docs/reqstream/canvas-net-vsdx.yaml" # system requirements
- "docs/design/introduction.md" # design introduction
- "docs/design/canvas-net-vsdx.md" # system design
- "docs/verification/introduction.md" # verification introduction
- "docs/verification/canvas-net-vsdx.md" # system verification

# CanvasNetVsdx-Design Review (one per system)
- id: CanvasNetVsdx-Design
title: Review that CanvasNetVsdx Design is Consistent and Complete
context:
- "docs/reqstream/canvas-net-vsdx.yaml"
paths:
- "docs/reqstream/canvas-net-vsdx/platform-requirements.yaml" # platform requirements
- "docs/design/introduction.md" # design introduction
- "docs/design/canvas-net-vsdx.md" # system design
- "docs/design/canvas-net-vsdx/**/*.md" # all system design documents

# CanvasNetVsdx-Verification Review (one per system)
- id: CanvasNetVsdx-Verification
title: Review that CanvasNetVsdx Verification is Consistent and Complete
context:
- "docs/reqstream/canvas-net-vsdx.yaml"
paths:
- "docs/verification/introduction.md" # verification introduction
- "docs/verification/canvas-net-vsdx.md" # system verification
- "docs/verification/canvas-net-vsdx/**/*.md" # all verification documents

# CanvasNetVsdx-AllRequirements Review (one per system)
- id: CanvasNetVsdx-AllRequirements
title: Review that All CanvasNetVsdx Requirements are Complete
context:
- "docs/design/canvas-net-vsdx.md"
- "docs/reqstream/canvas-net-vsdx.yaml"
paths:
- "docs/reqstream/canvas-net-vsdx/**/*.yaml" # all requirements files

# CanvasNetVsdx-VsdxDocument Review (one per direct unit)
- id: CanvasNetVsdx-VsdxDocument
title: Review that CanvasNetVsdx VsdxDocument Implementation is Correct
context:
- "docs/design/canvas-net-vsdx.md"
- "docs/reqstream/canvas-net-vsdx.yaml"
paths:
- "docs/reqstream/canvas-net-vsdx/vsdx-document.yaml" # unit requirements
- "docs/design/canvas-net-vsdx/vsdx-document.md" # unit design
- "docs/verification/canvas-net-vsdx/vsdx-document.md" # unit verification
- "docs/sysml2/model/canvas-net-vsdx/vsdx-document.sysml" # unit SysML2 model
- "src/DemaConsulting.CanvasNet.Vsdx/**/*.cs" # unit source
- "src/DemaConsulting.CanvasNet.Vsdx/DemaConsulting.CanvasNet.Vsdx.csproj" # project file
- "test/DemaConsulting.CanvasNet.Vsdx.Tests/**/*.cs" # unit/integration tests
- "test/DemaConsulting.CanvasNet.Vsdx.Tests/VsdxFixtures/**" # fixture corpus (promoted)

# OTS-BuildMark Review (one per OTS item)
- id: OTS-BuildMark
title: Review that BuildMark Provides Required Functionality
Expand Down
2 changes: 2 additions & 0 deletions CanvasNet.slnx
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,15 @@
<Project Path="src/DemaConsulting.CanvasNet.Svg/DemaConsulting.CanvasNet.Svg.csproj" />
<Project Path="src/DemaConsulting.CanvasNet.Pdf/DemaConsulting.CanvasNet.Pdf.csproj" />
<Project Path="src/DemaConsulting.CanvasNet.Pptx/DemaConsulting.CanvasNet.Pptx.csproj" />
<Project Path="src/DemaConsulting.CanvasNet.Vsdx/DemaConsulting.CanvasNet.Vsdx.csproj" />
<Project Path="src/DemaConsulting.CanvasNet.Charts/DemaConsulting.CanvasNet.Charts.csproj" />
</Folder>
<Folder Name="/test/">
<Project Path="test/DemaConsulting.CanvasNet.Tests/DemaConsulting.CanvasNet.Tests.csproj" />
<Project Path="test/DemaConsulting.CanvasNet.Svg.Tests/DemaConsulting.CanvasNet.Svg.Tests.csproj" />
<Project Path="test/DemaConsulting.CanvasNet.Pdf.Tests/DemaConsulting.CanvasNet.Pdf.Tests.csproj" />
<Project Path="test/DemaConsulting.CanvasNet.Pptx.Tests/DemaConsulting.CanvasNet.Pptx.Tests.csproj" />
<Project Path="test/DemaConsulting.CanvasNet.Vsdx.Tests/DemaConsulting.CanvasNet.Vsdx.Tests.csproj" />
<Project Path="test/DemaConsulting.CanvasNet.Charts.Tests/DemaConsulting.CanvasNet.Charts.Tests.csproj" />
</Folder>
</Solution>
19 changes: 18 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# CanvasNet

<!-- cspell:ignore SFNT codepoints Noto Zapf -->
<!-- cspell:ignore SFNT codepoints Noto Zapf Visio -->
<!-- IMPORTANT: All links in this file must be absolute URLs.
This file is distributed in packages and relative links will not resolve. -->

Expand Down Expand Up @@ -50,6 +50,10 @@ image operations using `Span<T>`, and supports independent-copy cropping for loa
separate `DemaConsulting.CanvasNet.Pptx` package's `PptxDocument.Render`, an embedded
`<p:graphicFrame>` chart is automatically parsed and painted using this same package, with no
extra caller code required.
- 📊 **Visio (.vsdx) Diagram Rendering** - Open a Microsoft Visio `.vsdx` package, inspect its page
count/size, and rasterize a page's shape geometry (including Master/stencil inheritance,
StyleSheet-resolved line/fill/text styles, connectors/glue points with arrowheads, nested
groups, and text) to a surface (ships as the separate `DemaConsulting.CanvasNet.Vsdx` package)
- 🔍 **Header-Only Probing** - `GetInfo` reads headers without decoding pixels (GIF excepted)
- 🖌️ **Path Filling** - Antialiased nonzero/even-odd fill of vector paths
- 🖊️ **Stroke-to-Fill** - Convert stroked paths into fillable outlines
Expand Down Expand Up @@ -128,6 +132,19 @@ Or via Package Manager Console:
Install-Package DemaConsulting.CanvasNet.Pptx
```

Visio (`.vsdx`) diagram parsing and rendering requires the separate
`DemaConsulting.CanvasNet.Vsdx` package:

```bash
dotnet add package DemaConsulting.CanvasNet.Vsdx
```

Or via Package Manager Console:

```powershell
Install-Package DemaConsulting.CanvasNet.Vsdx
```

## Usage

```csharp
Expand Down
Loading
Loading