16e652d70Sopenharmony_ci#![allow(clippy::type_complexity, clippy::uninlined_format_args)] 26e652d70Sopenharmony_ci 36e652d70Sopenharmony_ciuse image::{ImageBuffer, Rgb}; 46e652d70Sopenharmony_ciuse std::process; 56e652d70Sopenharmony_ci 66e652d70Sopenharmony_cifn main() { 76e652d70Sopenharmony_ci let width = 512; 86e652d70Sopenharmony_ci let height = 400; 96e652d70Sopenharmony_ci let diagrams: [(&str, fn(char) -> bool); 2] = [ 106e652d70Sopenharmony_ci ("xid_start.png", unicode_ident::is_xid_start), 116e652d70Sopenharmony_ci ("xid_continue.png", unicode_ident::is_xid_continue), 126e652d70Sopenharmony_ci ]; 136e652d70Sopenharmony_ci for (name, f) in diagrams { 146e652d70Sopenharmony_ci let mut imgbuf = ImageBuffer::new(width, height); 156e652d70Sopenharmony_ci for (col, row, pixel) in imgbuf.enumerate_pixels_mut() { 166e652d70Sopenharmony_ci *pixel = if char::from_u32(row * width + col).map_or(false, f) { 176e652d70Sopenharmony_ci Rgb([0u8, 0, 0]) 186e652d70Sopenharmony_ci } else { 196e652d70Sopenharmony_ci Rgb([255, 255, 255]) 206e652d70Sopenharmony_ci }; 216e652d70Sopenharmony_ci } 226e652d70Sopenharmony_ci if let Err(err) = imgbuf.save(name) { 236e652d70Sopenharmony_ci eprintln!("Error: {}", err); 246e652d70Sopenharmony_ci process::exit(1); 256e652d70Sopenharmony_ci } 266e652d70Sopenharmony_ci } 276e652d70Sopenharmony_ci} 28