use std::collections::HashMap;
use std::sync::OnceLock;
use parking_lot::RwLock;
use crate::ImageHandle;
fn registry() -> &'static RwLock<HashMap<ImageHandle, (u32, u32)>> {
static REGISTRY: OnceLock<RwLock<HashMap<ImageHandle, (u32, u32)>>> = OnceLock::new();
REGISTRY.get_or_init(RwLock::default)
}
pub fn set_image_intrinsic_size(handle: ImageHandle, width: u32, height: u32) {
if width == 0 || height == 0 {
return;
}
let changed = registry().write().insert(handle, (width, height));
if changed != Some((width, height)) {
crate::request_frame();
}
}
pub fn image_intrinsic_size(handle: ImageHandle) -> Option<(u32, u32)> {
registry().read().get(&handle).copied()
}
pub fn clear_image_intrinsic_size(handle: ImageHandle) {
if registry().write().remove(&handle).is_some() {
crate::request_frame();
}
}