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
//! Implements GIF disposal method for the gif crate. //! //! The gif crate only exposes raw frame data that is not sufficient //! to render GIFs properly. GIF requires special composing of frames //! which, as this crate shows, is non-trivial. //! //! ```rust,ignore //! let file = File::open("example.gif")?; //! let mut decoder = Decoder::new(file); //! //! // Important: //! decoder.set(gif::ColorOutput::Indexed); //! //! let mut reader = decoder.read_info()?; //! //! let mut screen = Screen::new_reader(&reader); //! while let Some(frame) = reader.read_next_frame()? { //! screen.blit(&frame)?; //! screen.pixels // that's the frame now //! } //! mod disposal; mod screen; mod subimage; pub use crate::screen::Screen; pub use rgb::{RGB8, RGBA8}; use std::error::Error as StdError; use std::fmt; #[derive(Eq, PartialEq, Copy, Clone, Debug)] pub enum Error { NoPalette } impl fmt::Display for Error { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { f.write_str(self.description()) } } impl StdError for Error { fn description(&self) -> &str { return "No palette"; } }