@@ -3,7 +3,8 @@ use crate::core::image;
33use crate :: core:: renderer;
44use crate :: core:: svg;
55use crate :: core:: {
6- self , Background , Color , Image , Point , Rectangle , Size , Svg , Transformation ,
6+ self , Background , Color , Font , Image , Pixels , Point , Rectangle , Size , Svg ,
7+ Transformation ,
78} ;
89use crate :: graphics;
910use crate :: graphics:: compositor;
@@ -350,29 +351,18 @@ where
350351 }
351352 }
352353
353- fn screenshot < T : AsRef < str > > (
354+ fn screenshot (
354355 & mut self ,
355356 renderer : & mut Self :: Renderer ,
356357 viewport : & graphics:: Viewport ,
357358 background_color : Color ,
358- overlay : & [ T ] ,
359359 ) -> Vec < u8 > {
360360 match ( self , renderer) {
361361 ( Self :: Primary ( compositor) , Renderer :: Primary ( renderer) ) => {
362- compositor. screenshot (
363- renderer,
364- viewport,
365- background_color,
366- overlay,
367- )
362+ compositor. screenshot ( renderer, viewport, background_color)
368363 }
369364 ( Self :: Secondary ( compositor) , Renderer :: Secondary ( renderer) ) => {
370- compositor. screenshot (
371- renderer,
372- viewport,
373- background_color,
374- overlay,
375- )
365+ compositor. screenshot ( renderer, viewport, background_color)
376366 }
377367 _ => unreachable ! ( ) ,
378368 }
@@ -614,6 +604,41 @@ mod geometry {
614604 }
615605}
616606
607+ impl < A , B > renderer:: Headless for Renderer < A , B >
608+ where
609+ A : renderer:: Headless ,
610+ B : renderer:: Headless ,
611+ {
612+ async fn new (
613+ default_font : Font ,
614+ default_text_size : Pixels ,
615+ ) -> Option < Self > {
616+ if let Some ( renderer) = A :: new ( default_font, default_text_size) . await {
617+ return Some ( Self :: Primary ( renderer) ) ;
618+ }
619+
620+ B :: new ( default_font, default_text_size)
621+ . await
622+ . map ( Self :: Secondary )
623+ }
624+
625+ fn screenshot (
626+ & mut self ,
627+ size : Size < u32 > ,
628+ scale_factor : f32 ,
629+ background_color : Color ,
630+ ) -> Vec < u8 > {
631+ match self {
632+ crate :: fallback:: Renderer :: Primary ( renderer) => {
633+ renderer. screenshot ( size, scale_factor, background_color)
634+ }
635+ crate :: fallback:: Renderer :: Secondary ( renderer) => {
636+ renderer. screenshot ( size, scale_factor, background_color)
637+ }
638+ }
639+ }
640+ }
641+
617642impl < A , B > compositor:: Default for Renderer < A , B >
618643where
619644 A : compositor:: Default ,
0 commit comments