1#![allow(unused_variables)]
2
3use imgref::ImgVec;
4use rgb::RGBA8;
5
6use crate::{ErrorKind, ImageInfo, ImageSource, ImageStore};
7
8use super::{Command, ImageId, Renderer, Vertex};
9
10/// Void renderer used for testing
11pub struct Void;
12
13impl Renderer for Void {
14 type Image = VoidImage;
15 type NativeTexture = ();
16 type Surface = ();
17 type CommandBuffer = ();
18
19 fn set_size(&mut self, width: u32, height: u32, dpi: f32) {}
20
21 fn render(
22 &mut self,
23 _surface: &Self::Surface,
24 images: &mut ImageStore<VoidImage>,
25 verts: &[Vertex],
26 commands: Vec<Command>,
27 ) {
28 }
29
30 fn alloc_image(&mut self, info: ImageInfo) -> Result<Self::Image, ErrorKind> {
31 Ok(VoidImage { info })
32 }
33
34 fn create_image_from_native_texture(
35 &mut self,
36 _native_texture: Self::NativeTexture,
37 _info: ImageInfo,
38 ) -> Result<Self::Image, ErrorKind> {
39 Err(ErrorKind::UnsupportedImageFormat)
40 }
41
42 fn update_image(
43 &mut self,
44 image: &mut Self::Image,
45 data: ImageSource,
46 x: usize,
47 y: usize,
48 ) -> Result<(), ErrorKind> {
49 let size = data.dimensions();
50
51 if x + size.width > image.info.width() {
52 return Err(ErrorKind::ImageUpdateOutOfBounds);
53 }
54
55 if y + size.height > image.info.height() {
56 return Err(ErrorKind::ImageUpdateOutOfBounds);
57 }
58
59 Ok(())
60 }
61
62 fn delete_image(&mut self, image: Self::Image, _image_id: ImageId) {}
63
64 fn screenshot(&mut self) -> Result<ImgVec<RGBA8>, ErrorKind> {
65 Ok(ImgVec::new(Vec::new(), 0, 0))
66 }
67}
68
69pub struct VoidImage {
70 info: ImageInfo,
71}
72