Rust library by Stéphane Bressani (s.bressani@bluewin.ch)
Using swissephem c library by Astrodienst AG by Dieter Koch and Alois Treindl (https://www.astro.com/ftp/swisseph/)
The source code is released under an CC License, which allows it to be used also on commercial projects. This software uses the swiss ephemeris which is licensed GPL.
Therefore, if you want to use astrocomputeswisseph in your commercial projects, you must adhere to the GPL license or buy a Swiss Ephemeris commercial license.
For get the version as a pointer const c_char :
pub extern "C" fn sweversion() -> *const c_char {
CString::new(handler_swe02::version()).unwrap().into_raw()
}
For get a json with all svg and position inside as a pointer const c_char: ``` /// language = 0 => English /// language = 1 => French
pub extern "C" fn compute( year: cint, month: cint, day: cint, hour: cint, min: cint, sec: cdouble, lat: cdouble, lng: cdouble, maxsize: cdouble, language: cint, path: *const cchar, ) -> *const cchar { let lang: Language = match FromPrimitive::fromi32(language as i32) { Some(Language::English) => Language::English, Some(Language::French) => Language::French, None => Language::English, }; let d = DataChartNatal { year: year, month: month, day: day, hour: hour, min: min, sec: sec as f32, lat: lat as f32, lng: lng as f32, }; let pathcstr = unsafe { CStr::fromptr(path) }; let pathstr: &str = pathcstr.tostr().unwrap(); let data = svgdraw::chart(maxsize as f32, d, &pathstr, lang); CString::new(serdejson::tostring(&data).unwrap()) .unwrap() .into_raw() }
```
For transit
```
/// language = 0 => English /// language = 1 => French
pub extern "C" fn computetransit( year: cint, month: cint, day: cint, hour: cint, min: cint, sec: cdouble, lat: cdouble, lng: cdouble, yeartransit: cint, monthtransit: cint, daytransit: cint, hourtransit: cint, mintransit: cint, sectransit: cdouble, lattransit: cdouble, lngtransit: cdouble, maxsize: cdouble, language: cint, path: *const cchar, ) -> *const cchar { let lang: Language = match FromPrimitive::fromi32(language as i32) { Some(Language::English) => Language::English, Some(Language::French) => Language::French, None => Language::English, }; let d = DataChartNatal { year: year, month: month, day: day, hour: hour, min: min, sec: sec as f32, lat: lat as f32, lng: lng as f32, }; let dt = DataChartNatal { year: yeartransit, month: monthtransit, day: daytransit, hour: hourtransit, min: mintransit, sec: sectransit as f32, lat: lattransit as f32, lng: lngtransit as f32, }; let pathcstr = unsafe { CStr::fromptr(path) }; let pathstr: &str = pathcstr.tostr().unwrap(); let data = svgdraw::chartwithtransit(maxsize as f32, d, dt, &pathstr, lang); CString::new(serdejson::tostring(&data).unwrap()) .unwrap() .intoraw() }
``` For all aspects (only major at this moment)
``` /// language = 0 => English /// language = 1 => French
pub extern "C" fn aspects(language: cint) -> *const cchar { let lang: Language = match FromPrimitive::fromi32(language as i32) { Some(Language::English) => Language::English, Some(Language::French) => Language::French, None => Language::English, }; let data = svgdraw::allaspects(lang); CString::new(serdejson::tostring(&data).unwrap()) .unwrap() .intoraw() } ```
0.1.2 * Update connection with astrology crate
0.1.1 * Update doc
0.1.0 * Some function for extern c use (c -> rust -> c)