motion_core/drawing/
evaluation.rs1use std::sync::Arc;
4
5use super::RenderQuality;
6
7#[derive(Clone, Debug)]
14pub struct Evaluation {
15 time: crate::Time,
16 quality: RenderQuality,
17 assets: crate::Assets,
18 fonts: Option<crate::asset::environment::FontEnvironment>,
19 diagnostics: crate::RequestDiagnostics,
20 cache: Option<crate::RenderCache>,
21}
22
23impl Default for Evaluation {
24 fn default() -> Self {
25 Self {
26 time: crate::Time::ZERO,
27 quality: RenderQuality::Final,
28 assets: crate::Assets::default(),
29 fonts: None,
30 diagnostics: crate::RequestDiagnostics::default(),
31 cache: None,
32 }
33 }
34}
35
36impl Evaluation {
37 pub fn new() -> Self {
39 Self::default()
40 }
41
42 pub fn with_quality(mut self, quality: RenderQuality) -> Self {
44 self.quality = quality;
45 self
46 }
47
48 pub fn quality(&self) -> RenderQuality {
50 self.quality
51 }
52
53 pub fn with_time(mut self, time: crate::Time) -> Self {
55 self.time = time;
56 self
57 }
58
59 pub fn time(&self) -> crate::Time {
61 self.time
62 }
63
64 pub fn with_assets(mut self, assets: &crate::Assets) -> Self {
69 self.assets = assets.clone().with_diagnostics(self.diagnostics.clone());
70 if let Some(fonts) = assets.fonts() {
71 self.fonts = Some(fonts.clone());
72 }
73 self
74 }
75
76 pub fn assets(&self) -> &crate::Assets {
78 &self.assets
79 }
80
81 pub fn with_fonts(
83 mut self,
84 fonts: impl Into<crate::asset::environment::FontEnvironment>,
85 ) -> Self {
86 self.fonts = Some(fonts.into());
87 self
88 }
89
90 pub fn fonts(&self) -> Option<&crate::asset::environment::FontEnvironment> {
92 self.fonts.as_ref()
93 }
94
95 pub fn with_diagnostics(mut self, diagnostics: crate::RequestDiagnostics) -> Self {
97 self.diagnostics = diagnostics;
98 self.assets = self.assets.with_diagnostics(self.diagnostics.clone());
99 self
100 }
101
102 pub fn diagnostics(&self) -> &crate::RequestDiagnostics {
104 &self.diagnostics
105 }
106
107 pub fn with_cache(mut self, cache: crate::RenderCache) -> Self {
109 self.cache = Some(cache);
110 self
111 }
112
113 pub fn cache(&self) -> Option<&crate::RenderCache> {
115 self.cache.as_ref()
116 }
117
118 pub fn shared(self) -> Arc<Self> {
120 Arc::new(self)
121 }
122}