From e4cd9b85e70f665646eb1944090b34011d728532 Mon Sep 17 00:00:00 2001 From: Joshua Holmer Date: Wed, 4 May 2016 10:09:26 -0400 Subject: [PATCH] Move default Options into impl Default in library --- CHANGELOG.md | 3 ++- src/lib.rs | 44 ++++++++++++++++++++++++++++++++++++++++++++ src/main.rs | 41 +---------------------------------------- 3 files changed, 47 insertions(+), 41 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d5dc5a44..b4525aa0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ -**Version 0.6.1 (unreleased)** +**Version 0.7.0 (unreleased)** - Minor compression improvement on interlaced images - Performance optimizations + - [SEMVER_MINOR] Move default Options into a Default impl **Version 0.6.0** - Fix issue where output directory would not be created if it did not exist diff --git a/src/lib.rs b/src/lib.rs index 3d06793b..e1213a67 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -81,6 +81,50 @@ pub struct Options { pub use_heuristics: bool, } +impl Default for Options { + fn default() -> Options { + // Default settings based on -o 2 from the CLI interface + let mut filter = HashSet::new(); + filter.insert(0); + filter.insert(5); + let mut compression = HashSet::new(); + compression.insert(9); + let mut memory = HashSet::new(); + memory.insert(9); + let mut strategies = HashSet::new(); + for i in 0..4 { + strategies.insert(i); + } + + Options { + backup: false, + out_file: PathBuf::new(), + out_dir: None, + stdout: false, + pretend: false, + recursive: false, + fix_errors: false, + clobber: true, + create: true, + force: false, + preserve_attrs: false, + verbosity: Some(0), + filter: filter, + interlace: None, + compression: compression, + memory: memory, + strategies: strategies, + window: 15, + bit_depth_reduction: true, + color_type_reduction: true, + palette_reduction: true, + idat_recoding: true, + strip: png::Headers::None, + use_heuristics: false, + } + } +} + /// Perform optimization on the input file using the options provided pub fn optimize(filepath: &Path, opts: &Options) -> Result<(), String> { type TrialWithData = (u8, u8, u8, u8, Vec); diff --git a/src/main.rs b/src/main.rs index 322f1277..2251c72c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -13,45 +13,6 @@ use std::path::PathBuf; const VERSION_STRING: &'static str = "0.6.0"; fn main() { - let mut filter = HashSet::new(); - filter.insert(0); - filter.insert(5); - let mut compression = HashSet::new(); - compression.insert(9); - let mut memory = HashSet::new(); - memory.insert(9); - let mut strategies = HashSet::new(); - for i in 0..4 { - strategies.insert(i); - } - - let default_opts = oxipng::Options { - backup: false, - out_file: PathBuf::new(), - out_dir: None, - stdout: false, - pretend: false, - recursive: false, - fix_errors: false, - clobber: true, - create: true, - force: false, - preserve_attrs: false, - verbosity: Some(0), - filter: filter, - interlace: None, - compression: compression, - memory: memory, - strategies: strategies, - window: 15, - bit_depth_reduction: true, - color_type_reduction: true, - palette_reduction: true, - idat_recoding: true, - strip: png::Headers::None, - use_heuristics: false, - }; - let matches = App::new("oxipng") .version(VERSION_STRING) @@ -228,7 +189,7 @@ fn main() { regardless of the order you write the arguments.") .get_matches(); - let mut opts = default_opts; + let mut opts = oxipng::Options::default(); match parse_opts_into_struct(&matches, &mut opts) { Ok(_) => (),