xalen-chart 0.4.0

SVG chart rendering for Vedic, South Indian, and Western wheel charts — zero external dependencies
Documentation
xalen-chart-0.4.0 has been yanked.

xalen-chart

Renders astrological birth charts as standalone SVG strings — no browser, canvas, or image library required.

Part of the XALEN Ephemeris suite — pure-Rust, thread-safe, Apache-2.0.

Features

  • North Indian diamond chart (Vedic standard) — render_north_indian
  • South Indian box chart with fixed sign positions — render_south_indian
  • Western wheel chart with zodiac ring and house segments — render_western_wheel
  • Each renderer returns a complete, self-contained <svg> string
  • Takes pre-computed positions via a single ChartData struct (planet placements, house cusps, ascendant, ayanamsa annotation)
  • All text is XML-escaped to prevent SVG/XML injection; NaN/Inf longitudes are sanitized so rendering never panics
  • serde Serialize/Deserialize on the public input types
  • Zero external dependencies beyond the XALEN core crates

Usage

use xalen_chart::{ChartData, PlanetPosition, render_north_indian};

let chart = ChartData {
    planet_positions: vec![
        PlanetPosition { abbreviation: "Su".into(), house: 1, longitude_deg: 15.0 },
        PlanetPosition { abbreviation: "Mo".into(), house: 4, longitude_deg: 105.0 },
    ],
    house_cusps_deg: [
        0.0, 30.0, 60.0, 90.0, 120.0, 150.0,
        180.0, 210.0, 240.0, 270.0, 300.0, 330.0,
    ],
    ascendant_sign_index: 0, // 0 = Aries/Mesha
    ayanamsa_deg: 23.87,
};

let svg = render_north_indian(&chart);
assert!(svg.starts_with("<svg"));

See examples/full_chart_svg.rs for an end-to-end run that computes positions from the ephemeris and feeds them into this crate.

Accuracy & sources

This crate is a renderer, not a calculator — it draws the positions you pass in and does not compute any astronomical values itself. For the accuracy of the upstream calculation crates that produce those positions, see ACCURACY.md and CREDITS.md.

License

Licensed under Apache-2.0. See LICENSE.