oxihuman_viewer/
render_layer.rs1#![allow(dead_code)]
4
5#[allow(dead_code)]
7#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
8pub struct LayerPriority(pub u32);
9
10#[allow(dead_code)]
12#[derive(Debug, Clone)]
13pub struct RenderLayer {
14 pub name: String,
15 pub priority: LayerPriority,
16 pub visible: bool,
17 pub draw_count: usize,
18}
19
20#[allow(dead_code)]
22pub fn new_render_layer_rl(name: &str, priority: u32) -> RenderLayer {
23 RenderLayer {
24 name: name.to_string(),
25 priority: LayerPriority(priority),
26 visible: true,
27 draw_count: 0,
28 }
29}
30
31#[allow(dead_code)]
33pub fn layer_priority(layer: &RenderLayer) -> u32 {
34 layer.priority.0
35}
36
37#[allow(dead_code)]
39pub fn layer_is_visible(layer: &RenderLayer) -> bool {
40 layer.visible
41}
42
43#[allow(dead_code)]
45pub fn set_layer_visible(layer: &mut RenderLayer, visible: bool) {
46 layer.visible = visible;
47}
48
49#[allow(dead_code)]
51pub fn layer_draw_count(layer: &RenderLayer) -> usize {
52 layer.draw_count
53}
54
55#[allow(dead_code)]
57pub fn layer_name_rl(layer: &RenderLayer) -> &str {
58 &layer.name
59}
60
61#[allow(dead_code)]
63pub fn layer_to_json(layer: &RenderLayer) -> String {
64 format!(
65 "{{\"name\":\"{}\",\"priority\":{},\"visible\":{}}}",
66 layer.name, layer.priority.0, layer.visible
67 )
68}
69
70#[allow(dead_code)]
72pub fn layer_clear(layer: &mut RenderLayer) {
73 layer.draw_count = 0;
74}
75
76#[cfg(test)]
77mod tests {
78 use super::*;
79
80 #[test]
81 fn new_layer() {
82 let l = new_render_layer_rl("opaque", 0);
83 assert!(layer_is_visible(&l));
84 }
85
86 #[test]
87 fn priority_accessor() {
88 let l = new_render_layer_rl("transparent", 10);
89 assert_eq!(layer_priority(&l), 10);
90 }
91
92 #[test]
93 fn toggle_visibility() {
94 let mut l = new_render_layer_rl("x", 0);
95 set_layer_visible(&mut l, false);
96 assert!(!layer_is_visible(&l));
97 }
98
99 #[test]
100 fn draw_count_starts_zero() {
101 let l = new_render_layer_rl("x", 0);
102 assert_eq!(layer_draw_count(&l), 0);
103 }
104
105 #[test]
106 fn name_accessor() {
107 let l = new_render_layer_rl("overlay", 5);
108 assert_eq!(layer_name_rl(&l), "overlay");
109 }
110
111 #[test]
112 fn to_json() {
113 let l = new_render_layer_rl("test", 1);
114 let j = layer_to_json(&l);
115 assert!(j.contains("\"test\""));
116 }
117
118 #[test]
119 fn clear_draw_count() {
120 let mut l = new_render_layer_rl("x", 0);
121 l.draw_count = 42;
122 layer_clear(&mut l);
123 assert_eq!(layer_draw_count(&l), 0);
124 }
125
126 #[test]
127 fn priority_ordering() {
128 let a = LayerPriority(1);
129 let b = LayerPriority(10);
130 assert!(a < b);
131 }
132
133 #[test]
134 fn visible_by_default() {
135 let l = new_render_layer_rl("default", 0);
136 assert!(l.visible);
137 }
138
139 #[test]
140 fn set_visible_true() {
141 let mut l = new_render_layer_rl("x", 0);
142 set_layer_visible(&mut l, false);
143 set_layer_visible(&mut l, true);
144 assert!(layer_is_visible(&l));
145 }
146}