Skip to content

Commit

Permalink
Hide simulation output, by default
Browse files Browse the repository at this point in the history
  • Loading branch information
sharkdp committed Aug 25, 2019
1 parent 5d8b80e commit 2d590a5
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 15 deletions.
18 changes: 10 additions & 8 deletions src/cli/commands/distinct.rs
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,6 @@ fn print_colors(
impl GenericCommand for DistinctCommand {
fn run(&self, out: &mut dyn Write, matches: &ArgMatches, config: &Config) -> Result<()> {
let stderr = io::stderr();
let mut out_stderr = stderr.lock();

let brush_stderr = Brush::from_environment(Stream::Stderr);

let count = matches.value_of("number").expect("required argument");
Expand Down Expand Up @@ -92,19 +90,23 @@ impl GenericCommand for DistinctCommand {
},
);

annealing.run(|stats| {
print_iteration(&mut out_stderr, &brush_stderr, stats).ok();
});
let mut callback: Box<dyn FnMut(&IterationStatistics)> = if matches.is_present("verbose") {
Box::new(|stats: &IterationStatistics| {
print_iteration(&mut stderr.lock(), &brush_stderr, stats).ok();
})
} else {
Box::new(|_: &IterationStatistics| {})
};

annealing.run(&mut callback);

annealing.parameters.initial_temperature = 0.5;
annealing.parameters.cooling_rate = 0.98;
annealing.parameters.num_iterations = 200_000;
annealing.parameters.opt_target = OptimizationTarget::Min;
annealing.parameters.opt_mode = OptimizationMode::Local;

annealing.run(|stats| {
print_iteration(&mut out_stderr, &brush_stderr, stats).ok();
});
annealing.run(&mut callback);

for color in annealing.get_colors() {
show_color(out, config, &color)?;
Expand Down
13 changes: 10 additions & 3 deletions src/cli/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -147,18 +147,25 @@ fn run() -> Result<ExitCode> {
Arg::with_name("number")
.help("Number of distinct colors in the set")
.takes_value(true)
.default_value("8")
.default_value("10")
.value_name("count"),
)
.arg(
Arg::with_name("metric")
.long("metric")
.short("m")
.help("Distance metric to compute mutual color distances")
.help("Distance metric to compute mutual color distances. The CIEDE2000 is \
more accurate, but also much slower.")
.takes_value(true)
.possible_values(&["CIEDE2000", "CIE76"])
.value_name("name")
.default_value("CIEDE2000")
.default_value("CIE76")
)
.arg(
Arg::with_name("verbose")
.long("verbose")
.short("v")
.help("Print simulation output to STDERR")
),
)
.subcommand(
Expand Down
5 changes: 1 addition & 4 deletions src/distinct.rs
Original file line number Diff line number Diff line change
Expand Up @@ -154,10 +154,7 @@ impl SimulatedAnnealing {
color.1 = color.0.to_lab();
}

pub fn run<C>(&mut self, mut callback: C)
where
C: FnMut(&IterationStatistics),
{
pub fn run(&mut self, callback: &mut impl FnMut(&IterationStatistics)) {
self.temperature = self.parameters.initial_temperature;

let mut result = self.mutual_distance(&self.colors);
Expand Down

0 comments on commit 2d590a5

Please sign in to comment.