Skip to content

Commit 58ad29c

Browse files
authored
docs(readme): show the PPTX backend, fix the architecture diagram, drop the dead star chart (#456)
* docs(readme): put the PPTX backend in the badges and the architecture diagram The badge row credited PDFBox but nothing for the office formats, so the stack the release is about was invisible. Apache POI 5.5 now sits beside it; it backs both PPTX and DOCX. The architecture diagram was wrong in two directions. It routed DocxSemanticBackend through the ServiceLoader — render-docx publishes no service file at all, and the exporter is named directly by the caller — and it left PptxFixedLayoutBackend out entirely, though that is the backend the seam actually discovers alongside PDF. DOCX now branches off the node tree, which is what SemanticBackend consumes: DocumentGraph is the semantic authoring tree, so the exporter never sees a layout pass. The prose above the diagram said every backend registers through the seam and now separates the two paths. * docs(readme): drop the star-history chart The embed has been rendering as broken alt text. It is not a wrong URL — api.star-history.com answers 500 for this repo and for its own, with "timeout of 10000ms exceeded" from its GitHub call, so the outage is on their side and there is nothing here to fix. The usual alternative is no better: starchart.cc answers 200 but the SVG it returns carries the text "failed to talk with github api: Requires authentication ... 401", which would paint a red error where the chart used to be. A section that can only render broken is worse than no section.
1 parent c1b069c commit 58ad29c

1 file changed

Lines changed: 5 additions & 13 deletions

File tree

README.md

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@
1414
<a href="https://github.com/DemchaAV/GraphCompose/releases/latest"><img src="https://img.shields.io/github/v/release/DemchaAV/GraphCompose?style=for-the-badge&label=Release" alt="Latest release"/></a>
1515
<a href="https://central.sonatype.com/artifact/io.github.demchaav/graph-compose"><img src="https://img.shields.io/maven-central/v/io.github.demchaav/graph-compose?style=for-the-badge&label=Maven%20Central" alt="Maven Central"/></a>
1616
<img src="https://img.shields.io/badge/Java-17%2B-orange?style=for-the-badge&logo=openjdk" alt="Java 17+"/>
17-
<img src="https://img.shields.io/badge/PDFBox-3.0-red?style=for-the-badge" alt="PDFBox 3.0"/>
17+
<img src="https://img.shields.io/badge/PDFBox-3.0-red?style=for-the-badge" alt="PDFBox 3.0 — PDF backend"/>
18+
<img src="https://img.shields.io/badge/Apache%20POI-5.5-blueviolet?style=for-the-badge" alt="Apache POI 5.5 — PPTX and DOCX backends"/>
1819
<img src="https://img.shields.io/badge/License-MIT-blue?style=for-the-badge" alt="MIT License"/>
1920
</p>
2021

@@ -291,7 +292,7 @@ flow.addAligned(HorizontalAlign.RIGHT, anyFixedNode);
291292

292293
## Architecture
293294

294-
GraphCompose splits into a **public canonical surface** you author against (`com.demcha.compose.document.*`) and an **internal shared engine foundation** (`com.demcha.compose.engine.*`, marked `@Internal`) that resolves geometry, pagination, and rendering behind it. Since 2.0 that boundary is also a **packaging** boundary: the surface and engine ship in `graph-compose-core`, and each render backend is a separate module that registers through a `ServiceLoader` seam. You author intent; the engine resolves the rest.
295+
GraphCompose splits into a **public canonical surface** you author against (`com.demcha.compose.document.*`) and an **internal shared engine foundation** (`com.demcha.compose.engine.*`, marked `@Internal`) that resolves geometry, pagination, and rendering behind it. Since 2.0 that boundary is also a **packaging** boundary: the surface and engine ship in `graph-compose-core`, and each render backend is a separate module. The **fixed-layout** backends (PDF, PPTX) register through a `ServiceLoader` seam and consume the same resolved `LayoutGraph`, which is why a deck matches the PDF geometrically. The **semantic** DOCX exporter registers nothing — you name it directly, and it walks the node tree without a layout pass. You author intent; the engine resolves the rest.
295296

296297
```mermaid
297298
flowchart LR
@@ -300,7 +301,8 @@ flowchart LR
300301
C --> D["Engine foundation @Internal<br/>measure → paginate → place"]
301302
D --> E{ServiceLoader}
302303
E -->|render-pdf| F["PdfFixedLayoutBackend<br/>PDFBox"]
303-
E -->|render-docx| G["DocxSemanticBackend<br/>POI"]
304+
E -->|render-pptx| G["PptxFixedLayoutBackend<br/>POI · same LayoutGraph as the PDF"]
305+
B -.->|render-docx · named directly| I["DocxSemanticBackend<br/>POI · no layout pass"]
304306
D -.->|layoutSnapshot| H["Deterministic snapshot<br/>(regression tests)"]
305307
```
306308

@@ -348,13 +350,3 @@ See [CONTRIBUTING](./CONTRIBUTING.md) for the branch-routing table and the full
348350
## License
349351

350352
MIT &mdash; see [`LICENSE`](./LICENSE).
351-
352-
## Star History
353-
354-
<a href="https://www.star-history.com/?repos=DemchaAV%2FGraphCompose&type=date&legend=top-left">
355-
<picture>
356-
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/chart?repos=DemchaAV/GraphCompose&type=date&theme=dark&legend=top-left" />
357-
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/chart?repos=DemchaAV/GraphCompose&type=date&legend=top-left" />
358-
<img alt="Star History Chart" src="https://api.star-history.com/chart?repos=DemchaAV/GraphCompose&type=date&legend=top-left" />
359-
</picture>
360-
</a>

0 commit comments

Comments
 (0)