use crate::raylib_images::Texture2DHolder;
use crate::renderer::RaylibRender;
use cotis_utils::math::Dimensions;
use cotis_utils::traits::{CotisFrameContext, CotisWindowContext};
use raylib::texture::Texture2D;
use std::ops::Deref;
use std::sync::Arc;
impl CotisWindowContext for RaylibRender {
fn window_dimensions(&self) -> Dimensions {
let rl = self.lock_handle();
(rl.get_screen_width() as f32, rl.get_screen_height() as f32).into()
}
}
impl CotisFrameContext for RaylibRender {
fn get_delta_time(&self) -> f32 {
self.delta_time()
}
}
mod traits {
use crate::functions_raylib::raylib_measure_text_inner;
use crate::renderer::RaylibRender;
use cotis_defaults::element_configs::text_config::TextConfig;
use cotis_utils::text::{RendererTextMeasuringProvider, TextMeasurer};
impl RendererTextMeasuringProvider<TextConfig> for RaylibRender {
fn provide_measurer(&mut self) -> Box<TextMeasurer<'_, TextConfig>> {
let fonts = self.fonts();
Box::new(move |str, config| raylib_measure_text_inner(str, config, fonts.clone()))
}
}
#[cfg(feature = "test-render")]
use crate::test_render::RayTestRender;
#[cfg(feature = "test-render")]
impl RendererTextMeasuringProvider<TextConfig> for RayTestRender {
fn provide_measurer(&mut self) -> Box<TextMeasurer<'_, TextConfig>> {
let fonts = self.get_render().fonts();
Box::new(move |str, config| raylib_measure_text_inner(str, config, fonts.clone()))
}
}
}
impl Texture2DHolder for Arc<Texture2D> {
fn texture(&self) -> &Texture2D {
self.deref()
}
}