Emit floats an f32 can hold, and drop the format! that formats nothing

CI runs cargo fmt --check and clippy -D warnings, and this branch had
never been through either. Both would have failed it.

The bulk was the generated colour tables: eight significant figures where
an f32 carries about 7.2, so the eighth is noise that rounds away at
compile time and clippy's excessive_precision says so 109 times over.
Fixed in the generator rather than only in the file, so it stays fixed --
and the file is trimmed in place rather than re-derived, because
regenerating it needs a colour-science stack that has nothing to do with
the defect.

The format! in the composer is mine too, from extracting the rendering
tail: the braces in it were escaped because the text used to live inside a
larger template, and once extracted the escapes are noise and the call
formats nothing.

Also here, and clearly not mine: an unused import and a shadowed binding
in dr-gpu, and an unused import in a test. They are pre-existing --
clippy has been failing on master before this branch existed, on lints
like is_multiple_of that arrived with a toolchain rather than with
anyone's code. Fixed because CI cannot go green around them, and called
out because a merge commit is a bad place to quietly edit someone else's
crate.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-25 22:28:14 +02:00
co-authored by Claude Opus 5
parent 6925aa2a86
commit 3b5952769b
18 changed files with 490 additions and 315 deletions
+20 -12
View File
@@ -2350,9 +2350,7 @@ impl DevelopSession {
/// filter asks about the stage rather than the support.
pub fn film_choices() -> Vec<(Option<&'static str>, String)> {
let mut out = vec![(None, "None".to_string())];
out.extend(
dr_film::camera_stocks().map(|p| (Some(p.stock.as_str()), p.name.clone())),
);
out.extend(dr_film::camera_stocks().map(|p| (Some(p.stock.as_str()), p.name.clone())));
out
}
@@ -2382,18 +2380,28 @@ impl DevelopSession {
// Only a negative has a paper. Asking to print a reversal stock is not
// an error to report, it is a request that has no meaning — so it is
// quietly the same as not asking.
let paper = if print { dr_film::default_print(profile) } else { None };
let paper = if print {
dr_film::default_print(profile)
} else {
None
};
let baked = dr_film::bake(&dr_film::Recipe {
film: profile,
print: paper,
exposure_ev: self.graph.param(
dr_pipeline::ops::film_sim::ID,
dr_pipeline::ops::film_sim::EXPOSURE,
).unwrap_or(0.0),
print_exposure_ev: self.graph.param(
dr_pipeline::ops::film_sim::ID,
dr_pipeline::ops::film_sim::PRINT_EXPOSURE,
).unwrap_or(0.0),
exposure_ev: self
.graph
.param(
dr_pipeline::ops::film_sim::ID,
dr_pipeline::ops::film_sim::EXPOSURE,
)
.unwrap_or(0.0),
print_exposure_ev: self
.graph
.param(
dr_pipeline::ops::film_sim::ID,
dr_pipeline::ops::film_sim::PRINT_EXPOSURE,
)
.unwrap_or(0.0),
});
self.set_film(Some(dr_pipeline::graph::Film {