#![allow(dead_code)]
#[allow(dead_code)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub struct LayerPriority(pub u32);
#[allow(dead_code)]
#[derive(Debug, Clone)]
pub struct RenderLayer {
pub name: String,
pub priority: LayerPriority,
pub visible: bool,
pub draw_count: usize,
}
#[allow(dead_code)]
pub fn new_render_layer_rl(name: &str, priority: u32) -> RenderLayer {
RenderLayer {
name: name.to_string(),
priority: LayerPriority(priority),
visible: true,
draw_count: 0,
}
}
#[allow(dead_code)]
pub fn layer_priority(layer: &RenderLayer) -> u32 {
layer.priority.0
}
#[allow(dead_code)]
pub fn layer_is_visible(layer: &RenderLayer) -> bool {
layer.visible
}
#[allow(dead_code)]
pub fn set_layer_visible(layer: &mut RenderLayer, visible: bool) {
layer.visible = visible;
}
#[allow(dead_code)]
pub fn layer_draw_count(layer: &RenderLayer) -> usize {
layer.draw_count
}
#[allow(dead_code)]
pub fn layer_name_rl(layer: &RenderLayer) -> &str {
&layer.name
}
#[allow(dead_code)]
pub fn layer_to_json(layer: &RenderLayer) -> String {
format!(
"{{\"name\":\"{}\",\"priority\":{},\"visible\":{}}}",
layer.name, layer.priority.0, layer.visible
)
}
#[allow(dead_code)]
pub fn layer_clear(layer: &mut RenderLayer) {
layer.draw_count = 0;
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn new_layer() {
let l = new_render_layer_rl("opaque", 0);
assert!(layer_is_visible(&l));
}
#[test]
fn priority_accessor() {
let l = new_render_layer_rl("transparent", 10);
assert_eq!(layer_priority(&l), 10);
}
#[test]
fn toggle_visibility() {
let mut l = new_render_layer_rl("x", 0);
set_layer_visible(&mut l, false);
assert!(!layer_is_visible(&l));
}
#[test]
fn draw_count_starts_zero() {
let l = new_render_layer_rl("x", 0);
assert_eq!(layer_draw_count(&l), 0);
}
#[test]
fn name_accessor() {
let l = new_render_layer_rl("overlay", 5);
assert_eq!(layer_name_rl(&l), "overlay");
}
#[test]
fn to_json() {
let l = new_render_layer_rl("test", 1);
let j = layer_to_json(&l);
assert!(j.contains("\"test\""));
}
#[test]
fn clear_draw_count() {
let mut l = new_render_layer_rl("x", 0);
l.draw_count = 42;
layer_clear(&mut l);
assert_eq!(layer_draw_count(&l), 0);
}
#[test]
fn priority_ordering() {
let a = LayerPriority(1);
let b = LayerPriority(10);
assert!(a < b);
}
#[test]
fn visible_by_default() {
let l = new_render_layer_rl("default", 0);
assert!(l.visible);
}
#[test]
fn set_visible_true() {
let mut l = new_render_layer_rl("x", 0);
set_layer_visible(&mut l, false);
set_layer_visible(&mut l, true);
assert!(layer_is_visible(&l));
}
}