#![doc = include_str!("../README.md")]
#[cfg(any(feature = "jab_lib", feature = "ia2_lib"))]
use rigela_utils::library::{get_rigela_library_path, setup_library};
#[cfg(any(feature = "jab_lib", feature = "ia2_lib"))]
use std::{path::PathBuf, sync::OnceLock};
#[cfg(feature = "ia2")]
pub mod ia2;
#[cfg(feature = "jab")]
pub mod jab;
#[cfg(feature = "scintilla")]
pub mod scintilla;
#[cfg(feature = "ia2_lib")]
const IA2_LIB_NAME: &str = "IAccessible2Proxy.dll";
#[cfg(all(target_arch = "x86", feature = "jab_lib"))]
const JAB_LIB_NAME: &str = "windowsaccessbridge-32.dll";
#[cfg(all(target_arch = "x86_64", feature = "jab_lib"))]
const JAB_LIB_NAME: &str = "windowsaccessbridge-64.dll";
static LIBRARY_DIRECTORY: OnceLock<PathBuf> = OnceLock::new();
pub fn get_library_path(lib_name: &str) -> PathBuf {
LIBRARY_DIRECTORY.get().unwrap().join(lib_name)
}
pub fn setup_for_rigela() {
let path = get_rigela_library_path();
setup(&path)
}
pub fn setup(path: &PathBuf) {
#[cfg(feature = "ia2_lib")]
setup_library(&path.join(IA2_LIB_NAME), include_bytes!("../lib/IAccessible2Proxy.dll"));
#[cfg(all(target_arch = "x86", feature = "jab_lib"))]
setup_library(&path.join(JAB_LIB_NAME), include_bytes!("../lib/WindowsAccessBridge-32.dll"));
#[cfg(all(target_arch = "x86_64", feature = "jab_lib"))]
setup_library(&path.join(JAB_LIB_NAME), include_bytes!("../lib/windowsaccessbridge-64.dll"));
let _ = LIBRARY_DIRECTORY.set(path.clone());
}
#[cfg(feature = "ia2_lib")]
pub fn get_ia2_lib_path() -> PathBuf {
LIBRARY_DIRECTORY.get().unwrap().join(IA2_LIB_NAME)
}
#[cfg(feature = "jab_lib")]
pub fn get_jab_lib_path() -> PathBuf {
LIBRARY_DIRECTORY.get().unwrap().join(JAB_LIB_NAME)
}