1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
use super::*; use guion::handler::standard::StdHandler; use crate::handler::Handler; use crate::simple::env::SimpleEnv; use guion::state::handler::AsHandlerStateful; use crate::core::Queue; use style::Style; use sdl2::ttf::Sdl2TtfContext; pub struct SimpleCtx { pub handler: StdHandler<Handler<(),SimpleEnv>,SimpleEnv>, } impl SimpleCtx { pub fn from_sdl2(sdl: Sdl, ttf: Sdl2TtfContext) -> Result<Self,String> { Ok( Self{ handler: StdHandler::new( Handler::new( Core::from_sdl2(sdl,ttf)?, (), ) ) } ) } } pub type SimpleHandler = StdHandler<Handler<(),SimpleEnv>,SimpleEnv>; impl GuionContext<SimpleEnv> for SimpleCtx { type Handler = SimpleHandler; type Queue = Queue<SimpleEnv>; fn queue_mut(&mut self) -> &mut Self::Queue { &mut self.queue } fn queue(&self) -> &Self::Queue { &self.queue } fn _handler_mut(&mut self) -> &mut Self::Handler { &mut self.handler } fn _handler(&self) -> &Self::Handler { &self.handler } fn default_style(&self) -> &Style { &self.default_style } fn default_border(&self) -> &Border { &self.default_border } } impl AsRefMut<SimpleHandler> for SimpleCtx { fn as_ref(&self) -> &SimpleHandler { &self.handler } fn as_mut(&mut self) -> &mut SimpleHandler { &mut self.handler } } impl AsRefMut<Core<SimpleEnv>> for SimpleCtx { fn as_ref(&self) -> &Core<SimpleEnv> { &self.handler.sup.inner } fn as_mut(&mut self) -> &mut Core<SimpleEnv> { &mut self.handler.sup.inner } } impl AsHandlerStateful<SimpleEnv> for SimpleCtx { type T = SimpleHandler; fn stateful_mut(&mut self) -> &mut Self::T { &mut self.handler } fn stateful(&self) -> &Self::T { &self.handler } } impl Deref for SimpleCtx { type Target = Core<SimpleEnv>; fn deref(&self) -> &Self::Target { AsRefMut::as_ref(self) } } impl DerefMut for SimpleCtx { fn deref_mut(&mut self) -> &mut Self::Target { AsRefMut::as_mut(self) } }