cog_task/resource/
value.rs1use crate::resource::{AudioBuffer, FrameBuffer, Stream};
2use eframe::egui::{TextureId, Vec2};
3use std::fmt::{Debug, Formatter};
4use std::path::PathBuf;
5use std::sync::Arc;
6
7#[derive(Clone)]
8pub enum ResourceValue {
9 Ref(PathBuf),
10 Text(Arc<String>),
11 Image(TextureId, Vec2),
12 Audio(AudioBuffer),
13 Video(FrameBuffer, f64),
14 Stream(Stream),
15}
16
17impl Debug for ResourceValue {
18 fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
19 match self {
20 ResourceValue::Ref(path) => {
21 write!(f, "{path:?}")
22 }
23 ResourceValue::Text(_) => {
24 write!(f, "[Text]")
25 }
26 ResourceValue::Image(_, size) => {
27 write!(f, "[Image ({} x {})]", size.x, size.y)
28 }
29 ResourceValue::Audio(buffer) => {
30 write!(
31 f,
32 "[Audio ({:?} @ {}Hz)]",
33 buffer.duration(),
34 buffer.sample_rate()
35 )
36 }
37 ResourceValue::Video(frames, fps) => {
38 write!(f, "[Cached video ({} frames @ {}fps)]", frames.len(), fps,)
39 }
40 ResourceValue::Stream(stream) => {
41 write!(
42 f,
43 "[Buffered stream ({:?} @ {}fps)]",
44 stream.duration(),
45 stream.framerate()
46 )
47 }
48 }
49 }
50}