🔒 Repository is read-only – file editing is disabled.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287
use std::marker::PhantomData;
use crate::{
backend::renderer::{gles::GlesRenderer, ImportDma, ImportMem, Renderer, Texture},
utils::{Buffer, Physical, Point, Rectangle, Scale},
};
use super::{CommitCounter, Element, Id, RenderElement, Wrap};
render_elements! {
ImportMemTest<R> where R: ImportMem;
Memory=ImportMemRenderElement,
}
render_elements! {
ImportMemTest2<=GlesRenderer>;
Memory=ImportMemRenderElement,
}
render_elements! {
ImportMemTest3<'a, R, T> where R: ImportMem, T: Texture;
Memory=ImportMemRenderElement,
Custom=&'a T,
}
render_elements! {
ImportMemTest4<R> where R: ImportMem + ImportDma;
Memory=ImportMemRenderElement,
}
render_elements! {
ImportMemTest5<'a, R, T> where R: ImportMem + ImportDma, T: Texture;
Memory=ImportMemRenderElement,
Custom=&'a T,
}
render_elements! {
TextureIdTest<R> where R: ImportMem, R::TextureId: Clone;
Memory=ImportMemRenderElement,
}
render_elements! {
TextureIdTest1<R> where R: ImportMem, R::TextureId: 'static;
Memory=ImportMemRenderElement,
}
render_elements! {
TextureIdTest2<'a, R, C> where R: ImportMem, R::TextureId: 'a;
Memory=ImportMemRenderElement,
Custom=&'a C,
}
render_elements! {
TextureIdTest3<'a, R, C> where R: ImportMem, R::TextureId: Clone + 'a;
Memory=ImportMemRenderElement,
Custom=&'a C,
}
render_elements! {
Test<='a, GlesRenderer>;
Surface=TestRenderElement<'a, GlesRenderer>
}
render_elements! {
Test2<=GlesRenderer>;
Surface=TestRenderElement2<GlesRenderer>
}
render_elements! {
Test3<='a, GlesRenderer, C>;
Surface=TestRenderElement<'a, GlesRenderer>,
Custom=&'a C,
}
render_elements! {
Test4<=GlesRenderer, C>;
Surface=TestRenderElement2<GlesRenderer>,
Custom=C
}
render_elements! {
TestG<'a, R>;
Surface=TestRenderElement<'a, R>
}
render_elements! {
TestG2<R>;
Surface=TestRenderElement2<R>
}
render_elements! {
TestG3<'a, R, C>;
Surface=TestRenderElement<'a, R>,
Custom=&'a C,
}
render_elements! {
TestG4<R, C>;
Surface=TestRenderElement2<R>,
Custom=Wrap<C>
}
render_elements! {
TestG5;
What=Empty,
}
render_elements! {
TestG6<'a, R, C>;
Surface=TestRenderElement<'a, R>,
Custom=&'a C,
Custom2=Wrap<C>,
}
render_elements! {
TestG7<'a, R, C1, C2>;
Surface=TestRenderElement<'a, R>,
Custom=Wrap<C1>,
Custom2=Wrap<C2>,
}
struct ImportMemRenderElement {}
impl Element for ImportMemRenderElement {
fn id(&self) -> &Id {
todo!()
}
fn current_commit(&self) -> CommitCounter {
todo!()
}
fn geometry(&self, _scale: Scale<f64>) -> Rectangle<i32, Physical> {
todo!()
}
fn src(&self) -> Rectangle<f64, Buffer> {
todo!()
}
}
impl<R> RenderElement<R> for ImportMemRenderElement
where
R: Renderer + ImportMem,
{
fn draw(
&self,
_frame: &mut R::Frame<'_, '_>,
_src: Rectangle<f64, Buffer>,
_dst: Rectangle<i32, Physical>,
_damage: &[Rectangle<i32, Physical>],
_opaque_regions: &[Rectangle<i32, Physical>],
) -> Result<(), R::Error> {
todo!()
}
}
impl Element for Empty {
fn id(&self) -> &Id {
todo!()
}
fn current_commit(&self) -> CommitCounter {
todo!()
}
fn location(&self, _scale: Scale<f64>) -> Point<i32, Physical> {
todo!()
}
fn src(&self) -> Rectangle<f64, Buffer> {
todo!()
}
fn geometry(&self, _scale: Scale<f64>) -> Rectangle<i32, Physical> {
todo!()
}
}
impl<R> RenderElement<R> for Empty
where
R: Renderer,
{
fn draw(
&self,
_frame: &mut R::Frame<'_, '_>,
_src: Rectangle<f64, Buffer>,
_dst: Rectangle<i32, Physical>,
_damage: &[Rectangle<i32, Physical>],
_opaque_regions: &[Rectangle<i32, Physical>],
) -> Result<(), R::Error> {
todo!()
}
}
struct Empty;
struct TestRenderElement2<R> {
_phantom: PhantomData<R>,
}
impl<R> Element for TestRenderElement2<R>
where
R: Renderer,
{
fn id(&self) -> &Id {
todo!()
}
fn current_commit(&self) -> CommitCounter {
todo!()
}
fn location(&self, _scale: Scale<f64>) -> Point<i32, Physical> {
todo!()
}
fn src(&self) -> Rectangle<f64, Buffer> {
todo!()
}
fn geometry(&self, _scale: Scale<f64>) -> Rectangle<i32, Physical> {
todo!()
}
}
impl<R> RenderElement<R> for TestRenderElement2<R>
where
R: Renderer,
{
fn draw(
&self,
_frame: &mut R::Frame<'_, '_>,
_src: Rectangle<f64, Buffer>,
_dst: Rectangle<i32, Physical>,
_damage: &[Rectangle<i32, Physical>],
_opaque_regions: &[Rectangle<i32, Physical>],
) -> Result<(), R::Error> {
todo!()
}
}
struct TestRenderElement<'a, R> {
_test: &'a usize,
_phantom: PhantomData<R>,
}
impl<R> Element for TestRenderElement<'_, R>
where
R: Renderer,
{
fn id(&self) -> &Id {
todo!()
}
fn current_commit(&self) -> CommitCounter {
todo!()
}
fn location(&self, _scale: Scale<f64>) -> Point<i32, Physical> {
todo!()
}
fn src(&self) -> Rectangle<f64, Buffer> {
todo!()
}
fn geometry(&self, _scale: Scale<f64>) -> Rectangle<i32, Physical> {
todo!()
}
}
impl<R> RenderElement<R> for TestRenderElement<'_, R>
where
R: Renderer,
{
fn draw(
&self,
_frame: &mut R::Frame<'_, '_>,
_src: Rectangle<f64, Buffer>,
_dst: Rectangle<i32, Physical>,
_damage: &[Rectangle<i32, Physical>],
_opaque_regions: &[Rectangle<i32, Physical>],
) -> Result<(), R::Error> {
todo!()
}
}