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 93 94 95 96 97 98 99 100 101 102 103
//! # Example //! //! ## Want to modify an image ? //! ``` //! use devpng::prelude::PNG; //! //! fn main() -> Result<(), String> { //! // Load. //! let mut buf = std::fs::read("img.png") //! .expect("Couldn't read the file."); //! let mut png = PNG::load(&mut buf)?; //! //! // Access image. //! let img = png.image(); //! //! // Modify image. //! for x in img.iter_mut() { //! *x = !*x; //! } //! //! // Store. //! png.store("img.png")?; //! Ok(()) //! } //! ``` //! //! ## Want to create an image ? //! ``` //! use devpng::prelude::{ColourType, Image, PNG, Point}; //! //! fn main() -> Result<(), String> { //! let mut data = vec![255; 800 * 200]; //! let img = Image::new(&mut data[..]) //! .set_ncol(800) // 200 //! .set_nrow(200) //! .set_depth(8) //! .set_colour(ColourType::RGBA); //! let mut buf = Vec::new(); //! //! let mut png = PNG::from_image(&mut buf, &img); //! let mut img = png.image(); //! //! for i in 0..50 { //! let center = Point { x: 100, y: 100 }; //! let radius = 80 - i as i32; //! let colour = &[0, (255 - i * 5) as u8, (255 - i * 5) as u8, 255]; //! img.plot_circle(center, radius, colour); //! } //! //! // Store. //! png.store("img.png")?; //! Ok(()) //! } //! ``` //! //! ## Want low level access ? //! ``` //! use devpng::prelude::DataStreamMut; //! //! fn main() -> Result<(), String> { //! // Load. //! let mut buf = std::fs::read("img.png") //! .expect("Couldn't read the file."); //! let mut datastream = DataStreamMut::from(&mut buf)?; //! //! // Access image. //! let mut cache = datastream.idat()?; //! let img = cache.image(); //! //! // Modify image. //! for x in img.iter_mut() { //! *x = !*x; //! } //! //! // Store. //! let png = datastream.rebuild(&mut Some(&mut cache)); //! std::fs::write("img.png", png) //! .expect("Couldn't write the file."); //! Ok(()) //! } //! ``` // Private. mod chunk; mod crc; // Public. pub mod cache; pub mod colour; pub mod datastream; pub mod image; pub mod png; pub mod prelude { // Private. pub(crate) use crate::chunk::chunk::{Chunk, ChunkMut}; // Public. pub use crate::cache::FiltCache; pub use crate::colour::ColourType; pub use crate::datastream::DataStreamMut; pub use crate::image::{Image, Point}; pub use crate::png::PNG; }