From 231ab35f7b51b7e28a02e721f221598e201a8c7b Mon Sep 17 00:00:00 2001 From: Piyush Mishra Date: Sun, 27 Mar 2022 00:16:29 +0530 Subject: [PATCH] Formating of code --- Cargo.lock | 2 +- Cargo.toml | 6 +-- src/about_window.rs | 3 +- src/config.rs | 8 +-- src/config_window.rs | 31 ++++------- src/crop_window.rs | 2 +- src/dialog.rs | 14 +++-- src/draw_thread.rs | 25 ++++----- src/main_window.rs | 43 +++++++++------ src/result_ext.rs | 5 +- src/utils.rs | 121 ++++++++++++++++++++++++++++++------------- 11 files changed, 155 insertions(+), 105 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0687c9f..7287599 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -877,7 +877,7 @@ dependencies = [ [[package]] name = "post_maker" -version = "0.4.0-alpha.3" +version = "0.4.0-alpha.4" dependencies = [ "clap", "dirs", diff --git a/Cargo.toml b/Cargo.toml index 057ca62..30581c1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "post_maker" -version = "0.4.0-alpha.3" +version = "0.4.0-alpha.4" edition = "2021" description = "Post Maker helps you to make post for Instagram and other Social Media apps easily." authors = ["PiyushXCoder "] @@ -23,7 +23,7 @@ simplelog = "0.11" fltk = "1.2" fltk-theme = "0.4" image = "0.24.1" -imageproc = { git = "https://github.com/image-rs/imageproc"} +imageproc = { git = "https://github.com/image-rs/imageproc" } webp = "0.2" rusttype = "0.9" serde_json = "1.0" @@ -33,4 +33,4 @@ dirs = "4.0" infer = "0.7.0" textwrap = "0.14" webbrowser = "0.5" -mozjpeg = "0.9.2" \ No newline at end of file +mozjpeg = "0.9.2" diff --git a/src/about_window.rs b/src/about_window.rs index 0cea209..42af250 100644 --- a/src/about_window.rs +++ b/src/about_window.rs @@ -167,7 +167,8 @@ impl About { // License Link self.license_link.handle(|_, ev| { if ev == Event::Push { - webbrowser::open("https://www.gnu.org/licenses/gpl-3.0.html").warn_log("Failed to open the link!"); + webbrowser::open("https://www.gnu.org/licenses/gpl-3.0.html") + .warn_log("Failed to open the link!"); } true }); diff --git a/src/config.rs b/src/config.rs index 21b7e37..3d08530 100644 --- a/src/config.rs +++ b/src/config.rs @@ -13,9 +13,10 @@ */ //! load, save configuration and parse cli args -use crate::{config_picker::ConfigPicker, globals, result_ext::ResultExt, utils::ImageType}; +use crate::{ + config_picker::ConfigPicker, dialog, globals, result_ext::ResultExt, utils::ImageType, +}; use clap::{ArgEnum, Parser}; -use crate::dialog; use fltk_theme::ThemeType; use lazy_static::lazy_static; use serde::{Deserialize, Serialize}; @@ -211,7 +212,8 @@ pub(crate) fn get_configs() -> Option> { /// Save configs pub(crate) fn save_configs(configs: HashMap) { - std::fs::write(&*CONFIG_FILE, serde_json::to_string(&configs).unwrap()).expect_log("Can't write config!"); + std::fs::write(&*CONFIG_FILE, serde_json::to_string(&configs).unwrap()) + .expect_log("Can't write config!"); } pub(crate) fn log_file() -> File { diff --git a/src/config_window.rs b/src/config_window.rs index fd37f2a..58c0049 100644 --- a/src/config_window.rs +++ b/src/config_window.rs @@ -14,9 +14,11 @@ //! Window to edit configuration -use std::{cell::RefCell, collections::HashMap, rc::Rc}; -use crate::dialog; - +use crate::{ + config::{self, ConfigFile}, + dialog, globals, + utils::{self, ImageType}, +}; use fltk::{ app, browser::{Browser, BrowserType}, @@ -31,11 +33,7 @@ use fltk::{ valuator::ValueInput, window::Window, }; - -use crate::{ - config::{self, ConfigFile}, - globals, utils::{self, ImageType}, -}; +use std::{cell::RefCell, collections::HashMap, rc::Rc}; pub(crate) struct ConfigWindow { pub(crate) win: Window, @@ -378,15 +376,10 @@ impl ConfigWindow { image_ratio_grp.end(); col.set_size(&image_ratio_grp, 30); - - - - let mut label = Frame::default().with_label("Image with limits:"); label.set_label_font(enums::Font::HelveticaBold); col.set_size(&label, 15); - let mut hint = - Frame::default().with_label("Limiting width of image in pixels"); + let mut hint = Frame::default().with_label("Limiting width of image in pixels"); hint.set_label_font(Font::CourierItalic); hint.set_label_size(12); col.set_size(&hint, 20); @@ -423,10 +416,6 @@ impl ConfigWindow { row_grp.end(); col.set_size(&row_grp, 40); - - - - let mut label = Frame::default().with_label("Colour for dark layer:"); label.set_label_font(enums::Font::HelveticaBold); col.set_size(&label, 15); @@ -555,8 +544,10 @@ impl ConfigWindow { .set_value(config.tag2_position_ratio); self.image_ratio_width.set_value(config.image_ratio.0); self.image_ratio_height.set_value(config.image_ratio.1); - self.minimum_width_limit.set_value(config.minimum_width_limit); - self.maximum_width_limit.set_value(config.maximum_width_limit); + self.minimum_width_limit + .set_value(config.minimum_width_limit); + self.maximum_width_limit + .set_value(config.maximum_width_limit); utils::set_color_btn_rgba(config.color_layer, &mut self.translucent_layer_rgb); self.translucent_layer_alpha .set_value(config.color_layer[3] as f64); diff --git a/src/crop_window.rs b/src/crop_window.rs index f54481f..cc2769f 100644 --- a/src/crop_window.rs +++ b/src/crop_window.rs @@ -15,7 +15,7 @@ //! Window to change Crop properties of image use crate::{ globals, - utils::{self, Coord, ImageContainer, ImageProperties, ImageInfo}, + utils::{self, Coord, ImageContainer, ImageInfo, ImageProperties}, }; use fltk::{ app, button::Button, draw, enums::Event, frame::Frame, group::Flex, image::SvgImage, diff --git a/src/dialog.rs b/src/dialog.rs index dd17f98..1f8f5a0 100644 --- a/src/dialog.rs +++ b/src/dialog.rs @@ -1,24 +1,22 @@ -use fltk::dialog; -use fltk::app::get_mouse; -pub(crate) use dialog::color_chooser_with_default; -pub(crate) use dialog::ColorMode; +pub(crate) use fltk::dialog::{color_chooser_with_default, ColorMode}; +use fltk::{app::get_mouse, dialog}; pub(crate) fn input_default(txt: &str, deflt: &str) -> Option { - let (x,y) = get_mouse(); + let (x, y) = get_mouse(); dialog::input(x, y, txt, deflt) } pub(crate) fn alert_default(txt: &str) { - let (x,y) = get_mouse(); + let (x, y) = get_mouse(); dialog::alert(x, y, txt) } pub(crate) fn message_default(txt: &str) { - let (x,y) = get_mouse(); + let (x, y) = get_mouse(); dialog::message(x, y, txt) } pub(crate) fn choice_default(txt: &str, b0: &str, b1: &str) -> i32 { - let (x,y) = get_mouse(); + let (x, y) = get_mouse(); dialog::choice(x, y, txt, b0, b1, "") } diff --git a/src/draw_thread.rs b/src/draw_thread.rs index 99c5661..2409166 100644 --- a/src/draw_thread.rs +++ b/src/draw_thread.rs @@ -14,12 +14,11 @@ //! Thread to manage drawing in background -use crate::globals; -use crate::result_ext::ResultExt; -use crate::utils::{ImageContainer, ImageProperties, ImageInfo}; use crate::{ + globals, main_window::{MainWindow, Page}, - utils::{self, ImagePropertiesFile}, + result_ext::ResultExt, + utils::{self, ImageContainer, ImageInfo, ImageProperties, ImagePropertiesFile}, AppMessage, }; use fltk::{ @@ -57,7 +56,7 @@ pub(crate) enum DrawMessage { /// Show details about images linke count of quotes ShowImagesDetails, /// Check If image is proper - CheckImage + CheckImage, } /// Spawn thread to manage all actions related to image, like: edit, save, delete @@ -222,9 +221,7 @@ pub(crate) fn spawn_image_thread( app::awake(); } } - DrawMessage::ShowImagesDetails => { - show_images_details(Arc::clone(&images_list)) - } + DrawMessage::ShowImagesDetails => show_images_details(Arc::clone(&images_list)), DrawMessage::CheckImage => { let (width, height) = properties.read().unwrap().original_dimension; if utils::is_too_small(width, height) { @@ -286,8 +283,9 @@ fn load_image( let read = match serde_json::from_str::(&read) { Ok(r) => r, Err(e) => { - Result::<(),_>::Err(e).warn_log("Config is corrupt"); - fs::remove_file(&properties_file).warn_log("Failed to delete image properties file!"); + Result::<(), _>::Err(e).warn_log("Config is corrupt"); + fs::remove_file(&properties_file) + .warn_log("Failed to delete image properties file!"); ImagePropertiesFile::default() } }; @@ -379,12 +377,15 @@ fn show_images_details(images_list: Arc>>) { } else { image_with_quote += 1; } - }else { + } else { image_without_quote += 1; } } - utils::show_message(&format!("With Quote: {}\nWithout Quote: {}", image_with_quote, image_without_quote)); + utils::show_message(&format!( + "With Quote: {}\nWithout Quote: {}", + image_with_quote, image_without_quote + )); } /// Flush the Buffer from image container to drawing buffer for fltk diff --git a/src/main_window.rs b/src/main_window.rs index 2451755..60ca1ce 100644 --- a/src/main_window.rs +++ b/src/main_window.rs @@ -13,16 +13,16 @@ */ //! Main window where you do all editing -use crate::about_window::About; -use crate::crop_window::CropWindow; -use crate::draw_thread::*; -use crate::result_ext::ResultExt; -use crate::utils; -use crate::utils::ImageInfo; -use crate::utils::ImageType; -use crate::utils::ImageProperties; -use crate::{config_window::ConfigWindow, globals}; -use crate::dialog; +use crate::{ + about_window::About, + config_window::ConfigWindow, + crop_window::CropWindow, + dialog, + draw_thread::*, + globals, + result_ext::ResultExt, + utils::{self, ImageInfo, ImageProperties, ImageType}, +}; use fltk::{ button::Button, dialog::NativeFileChooser, @@ -38,10 +38,13 @@ use fltk::{ valuator::{Slider, SliderType}, window::Window, }; -use std::ffi::OsStr; -use std::path::PathBuf; -use std::sync::{mpsc, RwLock}; -use std::{ fs, sync::Arc}; +use std::{ + ffi::OsStr, + fs, + path::PathBuf, + sync::Arc, + sync::{mpsc, RwLock}, +}; pub(crate) struct MainWindow { pub(crate) win: Window, @@ -430,7 +433,12 @@ impl MainWindow { return; } } - win.set_label(&format!("{} - Post Maker", path.file_name().unwrap_or(OsStr::new("Unknown")).to_string_lossy())); + win.set_label(&format!( + "{} - Post Maker", + path.file_name() + .unwrap_or(OsStr::new("Unknown")) + .to_string_lossy() + )); load_dir(&path, Arc::clone(&imgs), &mut file_choice, &sender); }, ); @@ -1047,7 +1055,10 @@ fn load_dir( ImageType::None => (), _ => { text = format!("{}|{}", text, path.file_name().unwrap().to_str().unwrap()); - imgs_b.push(ImageInfo { path, image_type: ImageType::from_mime(mime) }); + imgs_b.push(ImageInfo { + path, + image_type: ImageType::from_mime(mime), + }); } } } diff --git a/src/result_ext.rs b/src/result_ext.rs index e518bd6..120a07d 100644 --- a/src/result_ext.rs +++ b/src/result_ext.rs @@ -1,5 +1,4 @@ -use std::fmt::Debug; -use std::panic::Location; +use std::{fmt::Debug, panic::Location}; use crate::utils; @@ -37,4 +36,4 @@ impl ResultExt for Result { warn!("{}\n{:?}", msg, e); } } -} \ No newline at end of file +} diff --git a/src/utils.rs b/src/utils.rs index 791030c..731152b 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -14,16 +14,17 @@ use std::{ fs::{self, File}, + io::Read, path::{Path, PathBuf}, - sync::{Arc, RwLock}, io::Read + sync::{Arc, RwLock}, }; use fltk::{button::Button, enums, prelude::*}; use image::{DynamicImage, GenericImageView, ImageBuffer, ImageEncoder}; use serde::{Deserialize, Serialize}; -use crate::result_ext::ResultExt; use crate::globals; +use crate::result_ext::ResultExt; /// helps cast tupels to f64 pub(crate) struct Coord(pub(crate) f64, pub(crate) f64); @@ -64,7 +65,6 @@ impl Into<(i32, i32)> for Coord { } } - impl Into<(usize, usize)> for Coord { fn into(self) -> (usize, usize) { (self.0 as usize, self.1 as usize) @@ -74,7 +74,7 @@ impl Into<(usize, usize)> for Coord { #[derive(Serialize, Deserialize, Debug, Clone)] pub(crate) struct ImageInfo { pub(crate) path: PathBuf, - pub(crate) image_type: ImageType + pub(crate) image_type: ImageType, } #[derive(Serialize, Deserialize, Debug, Clone)] @@ -82,16 +82,16 @@ pub(crate) enum ImageType { Jpeg, Png, Webp, - None + None, } impl ImageType { pub(crate) fn from_mime(v: &str) -> Self { match v { - "image/jpeg" | "image/jpg" => Self::Jpeg, - "image/png" => Self::Png, - "image/webp" => Self::Webp, - _ => Self::None + "image/jpeg" | "image/jpg" => Self::Jpeg, + "image/png" => Self::Png, + "image/webp" => Self::Webp, + _ => Self::None, } } @@ -100,8 +100,9 @@ impl ImageType { Self::Jpeg => "jpg", Self::Png => "png", Self::Webp => "webp", - Self::None => "none" - }.to_owned() + Self::None => "none", + } + .to_owned() } } @@ -221,7 +222,11 @@ impl ImageContainer { let prop = self.properties.read().unwrap(); let image_info = &prop.image_info; let (export_path, path_properties, mut original_image) = match image_info { - Some(p) => (get_export_image_path(p), get_properties_path(p), load_image(p)), + Some(p) => ( + get_export_image_path(p), + get_properties_path(p), + load_image(p), + ), None => return, }; let config = globals::CONFIG.read().unwrap(); @@ -229,7 +234,11 @@ impl ImageContainer { let mut prop = prop.clone(); prop.image_info = None; - fs::write(&path_properties, serde_json::to_string(&ImagePropertiesFile::from(&prop)).unwrap()).warn_log("Failed to save properties!"); + fs::write( + &path_properties, + serde_json::to_string(&ImagePropertiesFile::from(&prop)).unwrap(), + ) + .warn_log("Failed to save properties!"); let (width, height): (f64, f64) = Coord::from(original_image.dimensions()).into(); let (crop_x, crop_y) = prop.crop_position.unwrap(); @@ -242,8 +251,15 @@ impl ImageContainer { ); if crop_width > config.maximum_width_limit { - let (resize_width,resize_height) = (config.maximum_width_limit, height_from_width(config.maximum_width_limit)); - img = img.resize_exact(resize_width as u32,resize_height as u32, image::imageops::FilterType::Lanczos3); + let (resize_width, resize_height) = ( + config.maximum_width_limit, + height_from_width(config.maximum_width_limit), + ); + img = img.resize_exact( + resize_width as u32, + resize_height as u32, + image::imageops::FilterType::Lanczos3, + ); } draw_layer_and_text( @@ -275,16 +291,18 @@ impl ImageContainer { let encoder = image::codecs::png::PngEncoder::new_with_quality( &mut output, image::codecs::png::CompressionType::Best, - image::codecs::png::FilterType::Sub + image::codecs::png::FilterType::Sub, ); let (w, h) = img.dimensions(); - encoder.write_image(&img.into_rgba8(), w, h, image::ColorType::Rgba8).warn_log("Failed to export Image!"); + encoder + .write_image(&img.into_rgba8(), w, h, image::ColorType::Rgba8) + .warn_log("Failed to export Image!"); } ImageType::Jpeg => { let (width, height) = Coord::from(img.dimensions()).into(); let buf = img.into_rgb8(); - + let mut comp = mozjpeg::Compress::new(mozjpeg::ColorSpace::JCS_RGB); comp.set_size(width, height); @@ -298,8 +316,10 @@ impl ImageContainer { comp.finish_compress(); match comp.data_to_vec() { - Ok(data) => std::fs::write(&export_path, data).warn_log("Failed to export Image!"), - Err(e) => Result::<(), _>::Err(e).warn_log("Failed to encode image!") + Ok(data) => { + std::fs::write(&export_path, data).warn_log("Failed to export Image!") + } + Err(e) => Result::<(), _>::Err(e).warn_log("Failed to encode image!"), } } _ => (), @@ -325,11 +345,13 @@ impl ImageContainer { let path_properties_new = get_properties_path(&new_image_info); if image_info.path.exists() { - fs::copy(&image_info.path, &new_image_info.path).warn_log("Failed to clone image!"); + fs::copy(&image_info.path, &new_image_info.path) + .warn_log("Failed to clone image!"); } if path_properties.exists() { - fs::copy(path_properties, &path_properties_new).warn_log("Failed to clone image properties!"); + fs::copy(path_properties, &path_properties_new) + .warn_log("Failed to clone image properties!"); } Some(new_image_info) } @@ -342,7 +364,11 @@ impl ImageContainer { let image_info = &prop.image_info; let (export_path, path_image, path_properties) = match image_info { - Some(p) => (get_export_image_path(p), Path::new(&p.path), get_properties_path(p)), + Some(p) => ( + get_export_image_path(p), + Path::new(&p.path), + get_properties_path(p), + ), None => return, }; @@ -490,7 +516,10 @@ fn load_image(image_info: &ImageInfo) -> DynamicImage { let mut f = File::open(&image_info.path).expect_log("Failed to open image!"); let mut buf = vec![]; f.read_to_end(&mut buf).expect_log("Failed to read image!"); - let a = webp::Decoder::new(&buf).decode().ok_or("").expect_log("Failed to decode image!"); + let a = webp::Decoder::new(&buf) + .decode() + .ok_or("") + .expect_log("Failed to decode image!"); a.to_image() } ImageType::Jpeg => { @@ -498,15 +527,20 @@ fn load_image(image_info: &ImageInfo) -> DynamicImage { let mut buf = vec![]; f.read_to_end(&mut buf).expect_log("Failed to read image!"); - let d = mozjpeg::Decompress::with_markers(mozjpeg::ALL_MARKERS).from_mem(&buf) - .expect_log("Failed to decompress image!"); + let d = mozjpeg::Decompress::with_markers(mozjpeg::ALL_MARKERS) + .from_mem(&buf) + .expect_log("Failed to decompress image!"); let mut image = d.rgb().expect_log("Failed to covert to rgb image!"); let pixels = image.read_scanlines_flat().unwrap(); - let image = ImageBuffer::from_raw(image.width() as u32, image.height() as u32, pixels).unwrap(); + let image = + ImageBuffer::from_raw(image.width() as u32, image.height() as u32, pixels).unwrap(); DynamicImage::ImageRgb8(image) } ImageType::Png => { - let dec = image::codecs::png::PngDecoder::new(File::open(&image_info.path).expect_log("Failed to open image!")).expect_log("Failed to decode image!"); + let dec = image::codecs::png::PngDecoder::new( + File::open(&image_info.path).expect_log("Failed to open image!"), + ) + .expect_log("Failed to decode image!"); DynamicImage::from_decoder(dec).expect_log("Failed to open image!") } ImageType::None => { @@ -659,13 +693,11 @@ pub(crate) fn get_properties_path(image_info: &ImageInfo) -> PathBuf { let path = img.with_extension("prop"); if path.exists() { - match std::fs::copy(&path, &default_path){ - Ok(_) => { - std::fs::remove_file(&path).warn_log("Failed to delete depricated prop file") - } - Err(e) => Result::<(), _>::Err(e).warn_log("Failed to copy depricated prop file") + match std::fs::copy(&path, &default_path) { + Ok(_) => std::fs::remove_file(&path).warn_log("Failed to delete depricated prop file"), + Err(e) => Result::<(), _>::Err(e).warn_log("Failed to copy depricated prop file"), } - } + } default_path } @@ -674,9 +706,24 @@ pub(crate) fn get_properties_path(image_info: &ImageInfo) -> PathBuf { pub(crate) fn get_export_image_path(image_info: &ImageInfo) -> PathBuf { let config = globals::CONFIG.read().unwrap(); let export_format = &config.image_format; - let mut export = image_info.path.parent().unwrap().join("export") - .join(format!("{}-{}", image_info.path.file_stem().unwrap_or_default().to_string_lossy(), - image_info.path.extension().unwrap_or_default().to_string_lossy())); + let mut export = image_info + .path + .parent() + .unwrap() + .join("export") + .join(format!( + "{}-{}", + image_info + .path + .file_stem() + .unwrap_or_default() + .to_string_lossy(), + image_info + .path + .extension() + .unwrap_or_default() + .to_string_lossy() + )); export.set_extension(export_format.as_extension()); export }