diff --git a/docs/diagrams/design/star-map-concentric.png b/docs/diagrams/design/star-map-concentric.png new file mode 100644 index 000000000..9fa9c90bf Binary files /dev/null and b/docs/diagrams/design/star-map-concentric.png differ diff --git a/tooling/generate-star-map-svg.py b/tooling/generate-star-map-svg.py index 5d731ee12..d914e26d1 100644 --- a/tooling/generate-star-map-svg.py +++ b/tooling/generate-star-map-svg.py @@ -331,3 +331,23 @@ with open(output_path, 'w') as f: print(f'Written to {output_path}') print(f'{len(positions)} nodes, {len(starmap["edges"])} edges') print(f'Hops 0-{FOLD_HOP-1} individual, {FOLD_HOP}+ folded ({len(hop_groups.get(FOLD_HOP, []))} nodes)') + +# Also render PNG +import shutil, subprocess +png_path = output_path.replace('.svg', '.png') +if shutil.which('magick'): + cmd = ['magick', '-density', '150', '-background', '#0a0a1a', output_path, png_path] +elif shutil.which('convert'): + cmd = ['convert', '-density', '150', '-background', '#0a0a1a', output_path, png_path] +elif shutil.which('rsvg-convert'): + cmd = ['rsvg-convert', '-d', '150', '-p', '150', '-b', '#0a0a1a', '-o', png_path, output_path] +else: + cmd = None + print('No SVG-to-PNG converter found (tried magick, convert, rsvg-convert). PNG not generated.') + +if cmd: + result = subprocess.run(cmd, capture_output=True, text=True) + if result.returncode == 0: + print(f'PNG written to {png_path}') + else: + print(f'PNG conversion failed: {result.stderr.strip()}')