Add const shorthands for delta filters

This commit is contained in:
Andrew 2025-08-05 09:49:43 +12:00
parent 8c3758b9f4
commit 7f98f7c557
11 changed files with 105 additions and 176 deletions

View file

@ -13,10 +13,7 @@ fn filters_16_bits_filter_0(b: &mut Bencher) {
let input = test::black_box(PathBuf::from("tests/files/rgb_16_should_be_rgb_16.png"));
let png = PngData::new(&input, &Options::default()).unwrap();
b.iter(|| {
png.raw
.filter_image(FilterStrategy::Basic(RowFilter::None), false)
});
b.iter(|| png.raw.filter_image(FilterStrategy::NONE, false));
}
#[bench]
@ -24,10 +21,7 @@ fn filters_8_bits_filter_0(b: &mut Bencher) {
let input = test::black_box(PathBuf::from("tests/files/rgb_8_should_be_rgb_8.png"));
let png = PngData::new(&input, &Options::default()).unwrap();
b.iter(|| {
png.raw
.filter_image(FilterStrategy::Basic(RowFilter::None), false)
});
b.iter(|| png.raw.filter_image(FilterStrategy::NONE, false));
}
#[bench]
@ -37,10 +31,7 @@ fn filters_4_bits_filter_0(b: &mut Bencher) {
));
let png = PngData::new(&input, &Options::default()).unwrap();
b.iter(|| {
png.raw
.filter_image(FilterStrategy::Basic(RowFilter::None), false)
});
b.iter(|| png.raw.filter_image(FilterStrategy::NONE, false));
}
#[bench]
@ -50,10 +41,7 @@ fn filters_2_bits_filter_0(b: &mut Bencher) {
));
let png = PngData::new(&input, &Options::default()).unwrap();
b.iter(|| {
png.raw
.filter_image(FilterStrategy::Basic(RowFilter::None), false)
});
b.iter(|| png.raw.filter_image(FilterStrategy::NONE, false));
}
#[bench]
@ -63,10 +51,7 @@ fn filters_1_bits_filter_0(b: &mut Bencher) {
));
let png = PngData::new(&input, &Options::default()).unwrap();
b.iter(|| {
png.raw
.filter_image(FilterStrategy::Basic(RowFilter::None), false)
});
b.iter(|| png.raw.filter_image(FilterStrategy::NONE, false));
}
#[bench]
@ -74,10 +59,7 @@ fn filters_16_bits_filter_1(b: &mut Bencher) {
let input = test::black_box(PathBuf::from("tests/files/rgb_16_should_be_rgb_16.png"));
let png = PngData::new(&input, &Options::default()).unwrap();
b.iter(|| {
png.raw
.filter_image(FilterStrategy::Basic(RowFilter::Sub), false)
});
b.iter(|| png.raw.filter_image(FilterStrategy::SUB, false));
}
#[bench]
@ -85,10 +67,7 @@ fn filters_8_bits_filter_1(b: &mut Bencher) {
let input = test::black_box(PathBuf::from("tests/files/rgb_8_should_be_rgb_8.png"));
let png = PngData::new(&input, &Options::default()).unwrap();
b.iter(|| {
png.raw
.filter_image(FilterStrategy::Basic(RowFilter::Sub), false)
});
b.iter(|| png.raw.filter_image(FilterStrategy::SUB, false));
}
#[bench]
@ -98,10 +77,7 @@ fn filters_4_bits_filter_1(b: &mut Bencher) {
));
let png = PngData::new(&input, &Options::default()).unwrap();
b.iter(|| {
png.raw
.filter_image(FilterStrategy::Basic(RowFilter::Sub), false)
});
b.iter(|| png.raw.filter_image(FilterStrategy::SUB, false));
}
#[bench]
@ -111,10 +87,7 @@ fn filters_2_bits_filter_1(b: &mut Bencher) {
));
let png = PngData::new(&input, &Options::default()).unwrap();
b.iter(|| {
png.raw
.filter_image(FilterStrategy::Basic(RowFilter::Sub), false)
});
b.iter(|| png.raw.filter_image(FilterStrategy::SUB, false));
}
#[bench]
@ -124,10 +97,7 @@ fn filters_1_bits_filter_1(b: &mut Bencher) {
));
let png = PngData::new(&input, &Options::default()).unwrap();
b.iter(|| {
png.raw
.filter_image(FilterStrategy::Basic(RowFilter::Sub), false)
});
b.iter(|| png.raw.filter_image(FilterStrategy::SUB, false));
}
#[bench]
@ -135,10 +105,7 @@ fn filters_16_bits_filter_2(b: &mut Bencher) {
let input = test::black_box(PathBuf::from("tests/files/rgb_16_should_be_rgb_16.png"));
let png = PngData::new(&input, &Options::default()).unwrap();
b.iter(|| {
png.raw
.filter_image(FilterStrategy::Basic(RowFilter::Up), false)
});
b.iter(|| png.raw.filter_image(FilterStrategy::UP, false));
}
#[bench]
@ -146,10 +113,7 @@ fn filters_8_bits_filter_2(b: &mut Bencher) {
let input = test::black_box(PathBuf::from("tests/files/rgb_8_should_be_rgb_8.png"));
let png = PngData::new(&input, &Options::default()).unwrap();
b.iter(|| {
png.raw
.filter_image(FilterStrategy::Basic(RowFilter::Up), false)
});
b.iter(|| png.raw.filter_image(FilterStrategy::UP, false));
}
#[bench]
@ -159,10 +123,7 @@ fn filters_4_bits_filter_2(b: &mut Bencher) {
));
let png = PngData::new(&input, &Options::default()).unwrap();
b.iter(|| {
png.raw
.filter_image(FilterStrategy::Basic(RowFilter::Up), false)
});
b.iter(|| png.raw.filter_image(FilterStrategy::UP, false));
}
#[bench]
@ -172,10 +133,7 @@ fn filters_2_bits_filter_2(b: &mut Bencher) {
));
let png = PngData::new(&input, &Options::default()).unwrap();
b.iter(|| {
png.raw
.filter_image(FilterStrategy::Basic(RowFilter::Up), false)
});
b.iter(|| png.raw.filter_image(FilterStrategy::UP, false));
}
#[bench]
@ -185,10 +143,7 @@ fn filters_1_bits_filter_2(b: &mut Bencher) {
));
let png = PngData::new(&input, &Options::default()).unwrap();
b.iter(|| {
png.raw
.filter_image(FilterStrategy::Basic(RowFilter::Up), false)
});
b.iter(|| png.raw.filter_image(FilterStrategy::UP, false));
}
#[bench]
@ -196,10 +151,7 @@ fn filters_16_bits_filter_3(b: &mut Bencher) {
let input = test::black_box(PathBuf::from("tests/files/rgb_16_should_be_rgb_16.png"));
let png = PngData::new(&input, &Options::default()).unwrap();
b.iter(|| {
png.raw
.filter_image(FilterStrategy::Basic(RowFilter::Average), false)
});
b.iter(|| png.raw.filter_image(FilterStrategy::AVERAGE, false));
}
#[bench]
@ -207,10 +159,7 @@ fn filters_8_bits_filter_3(b: &mut Bencher) {
let input = test::black_box(PathBuf::from("tests/files/rgb_8_should_be_rgb_8.png"));
let png = PngData::new(&input, &Options::default()).unwrap();
b.iter(|| {
png.raw
.filter_image(FilterStrategy::Basic(RowFilter::Average), false)
});
b.iter(|| png.raw.filter_image(FilterStrategy::AVERAGE, false));
}
#[bench]
@ -220,10 +169,7 @@ fn filters_4_bits_filter_3(b: &mut Bencher) {
));
let png = PngData::new(&input, &Options::default()).unwrap();
b.iter(|| {
png.raw
.filter_image(FilterStrategy::Basic(RowFilter::Average), false)
});
b.iter(|| png.raw.filter_image(FilterStrategy::AVERAGE, false));
}
#[bench]
@ -233,10 +179,7 @@ fn filters_2_bits_filter_3(b: &mut Bencher) {
));
let png = PngData::new(&input, &Options::default()).unwrap();
b.iter(|| {
png.raw
.filter_image(FilterStrategy::Basic(RowFilter::Average), false)
});
b.iter(|| png.raw.filter_image(FilterStrategy::AVERAGE, false));
}
#[bench]
@ -246,10 +189,7 @@ fn filters_1_bits_filter_3(b: &mut Bencher) {
));
let png = PngData::new(&input, &Options::default()).unwrap();
b.iter(|| {
png.raw
.filter_image(FilterStrategy::Basic(RowFilter::Average), false)
});
b.iter(|| png.raw.filter_image(FilterStrategy::AVERAGE, false));
}
#[bench]
@ -257,10 +197,7 @@ fn filters_16_bits_filter_4(b: &mut Bencher) {
let input = test::black_box(PathBuf::from("tests/files/rgb_16_should_be_rgb_16.png"));
let png = PngData::new(&input, &Options::default()).unwrap();
b.iter(|| {
png.raw
.filter_image(FilterStrategy::Basic(RowFilter::Paeth), false)
});
b.iter(|| png.raw.filter_image(FilterStrategy::PAETH, false));
}
#[bench]
@ -268,10 +205,7 @@ fn filters_8_bits_filter_4(b: &mut Bencher) {
let input = test::black_box(PathBuf::from("tests/files/rgb_8_should_be_rgb_8.png"));
let png = PngData::new(&input, &Options::default()).unwrap();
b.iter(|| {
png.raw
.filter_image(FilterStrategy::Basic(RowFilter::Paeth), false)
});
b.iter(|| png.raw.filter_image(FilterStrategy::PAETH, false));
}
#[bench]
@ -281,10 +215,7 @@ fn filters_4_bits_filter_4(b: &mut Bencher) {
));
let png = PngData::new(&input, &Options::default()).unwrap();
b.iter(|| {
png.raw
.filter_image(FilterStrategy::Basic(RowFilter::Paeth), false)
});
b.iter(|| png.raw.filter_image(FilterStrategy::PAETH, false));
}
#[bench]
@ -294,10 +225,7 @@ fn filters_2_bits_filter_4(b: &mut Bencher) {
));
let png = PngData::new(&input, &Options::default()).unwrap();
b.iter(|| {
png.raw
.filter_image(FilterStrategy::Basic(RowFilter::Paeth), false)
});
b.iter(|| png.raw.filter_image(FilterStrategy::PAETH, false));
}
#[bench]
@ -307,10 +235,7 @@ fn filters_1_bits_filter_4(b: &mut Bencher) {
));
let png = PngData::new(&input, &Options::default()).unwrap();
b.iter(|| {
png.raw
.filter_image(FilterStrategy::Basic(RowFilter::Paeth), false)
});
b.iter(|| png.raw.filter_image(FilterStrategy::PAETH, false));
}
#[bench]

View file

@ -19,6 +19,14 @@ pub enum FilterStrategy {
Predefined(Vec<RowFilter>),
}
impl FilterStrategy {
pub const NONE: Self = Self::Basic(RowFilter::None);
pub const SUB: Self = Self::Basic(RowFilter::Sub);
pub const UP: Self = Self::Basic(RowFilter::Up);
pub const AVERAGE: Self = Self::Basic(RowFilter::Average);
pub const PAETH: Self = Self::Basic(RowFilter::Paeth);
}
impl Display for FilterStrategy {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {

View file

@ -432,7 +432,7 @@ fn optimize_raw(
opts.filter.clone()
} else {
// None and Bigrams work well together, especially for alpha reductions
indexset! {FilterStrategy::Basic(RowFilter::None), FilterStrategy::Bigrams}
indexset! {FilterStrategy::NONE, FilterStrategy::Bigrams}
};
// This will collect all versions of images and pick one that compresses best
let eval = Evaluator::new(
@ -551,7 +551,7 @@ fn perform_trials(
filters.insert(FilterStrategy::Bigrams);
} else {
// Otherwise delta filters generally don't work well, so just stick with None
filters.insert(FilterStrategy::Basic(RowFilter::None));
filters.insert(FilterStrategy::NONE);
}
}

View file

@ -8,10 +8,7 @@ use indexmap::{IndexSet, indexset};
use log::warn;
use crate::{
deflate::Deflaters,
filters::{FilterStrategy, RowFilter},
headers::StripChunks,
interlace::Interlacing,
deflate::Deflaters, filters::FilterStrategy, headers::StripChunks, interlace::Interlacing,
};
/// Write destination for [`optimize`][crate::optimize].
@ -212,7 +209,7 @@ impl Options {
fn apply_preset_3(mut self) -> Self {
self.fast_evaluation = false;
self.filter = indexset! {
FilterStrategy::Basic(RowFilter::None),
FilterStrategy::NONE,
FilterStrategy::Bigrams,
FilterStrategy::BigEnt,
FilterStrategy::Brute
@ -229,7 +226,7 @@ impl Options {
fn apply_preset_5(mut self) -> Self {
self.fast_evaluation = false;
self.filter.insert(FilterStrategy::Basic(RowFilter::Up));
self.filter.insert(FilterStrategy::UP);
self.filter.insert(FilterStrategy::MinSum);
self.filter.insert(FilterStrategy::BigEnt);
self.filter.insert(FilterStrategy::Brute);
@ -240,9 +237,8 @@ impl Options {
}
fn apply_preset_6(mut self) -> Self {
self.filter
.insert(FilterStrategy::Basic(RowFilter::Average));
self.filter.insert(FilterStrategy::Basic(RowFilter::Paeth));
self.filter.insert(FilterStrategy::AVERAGE);
self.filter.insert(FilterStrategy::PAETH);
self.apply_preset_5()
}
}
@ -254,8 +250,8 @@ impl Default for Options {
fix_errors: false,
force: false,
filter: indexset! {
FilterStrategy::Basic(RowFilter::None),
FilterStrategy::Basic(RowFilter::Sub),
FilterStrategy::NONE,
FilterStrategy::SUB,
FilterStrategy::Entropy,
FilterStrategy::Bigrams
},

View file

@ -14,7 +14,7 @@ const RGBA: u8 = 6;
fn get_opts(input: &Path) -> (OutFile, oxipng::Options) {
let options = oxipng::Options {
force: true,
filter: indexset! {FilterStrategy::Basic(RowFilter::None)},
filter: indexset! {FilterStrategy::NONE},
..Default::default()
};
(OutFile::from_path(input.with_extension("out.png")), options)
@ -65,7 +65,7 @@ fn test_it_converts(
fn filter_0_for_rgba_16() {
test_it_converts(
"tests/files/filter_0_for_rgba_16.png",
FilterStrategy::Basic(RowFilter::None),
FilterStrategy::NONE,
RGBA,
BitDepth::Sixteen,
RGBA,
@ -77,7 +77,7 @@ fn filter_0_for_rgba_16() {
fn filter_1_for_rgba_16() {
test_it_converts(
"tests/files/filter_1_for_rgba_16.png",
FilterStrategy::Basic(RowFilter::Sub),
FilterStrategy::SUB,
RGBA,
BitDepth::Sixteen,
RGBA,
@ -89,7 +89,7 @@ fn filter_1_for_rgba_16() {
fn filter_2_for_rgba_16() {
test_it_converts(
"tests/files/filter_2_for_rgba_16.png",
FilterStrategy::Basic(RowFilter::Up),
FilterStrategy::UP,
RGBA,
BitDepth::Sixteen,
RGBA,
@ -101,7 +101,7 @@ fn filter_2_for_rgba_16() {
fn filter_3_for_rgba_16() {
test_it_converts(
"tests/files/filter_3_for_rgba_16.png",
FilterStrategy::Basic(RowFilter::Average),
FilterStrategy::AVERAGE,
RGBA,
BitDepth::Sixteen,
RGBA,
@ -113,7 +113,7 @@ fn filter_3_for_rgba_16() {
fn filter_4_for_rgba_16() {
test_it_converts(
"tests/files/filter_4_for_rgba_16.png",
FilterStrategy::Basic(RowFilter::Paeth),
FilterStrategy::PAETH,
RGBA,
BitDepth::Sixteen,
RGBA,
@ -137,7 +137,7 @@ fn filter_5_for_rgba_16() {
fn filter_0_for_rgba_8() {
test_it_converts(
"tests/files/filter_0_for_rgba_8.png",
FilterStrategy::Basic(RowFilter::None),
FilterStrategy::NONE,
RGBA,
BitDepth::Eight,
RGBA,
@ -149,7 +149,7 @@ fn filter_0_for_rgba_8() {
fn filter_1_for_rgba_8() {
test_it_converts(
"tests/files/filter_1_for_rgba_8.png",
FilterStrategy::Basic(RowFilter::Sub),
FilterStrategy::SUB,
RGBA,
BitDepth::Eight,
RGBA,
@ -161,7 +161,7 @@ fn filter_1_for_rgba_8() {
fn filter_2_for_rgba_8() {
test_it_converts(
"tests/files/filter_2_for_rgba_8.png",
FilterStrategy::Basic(RowFilter::Up),
FilterStrategy::UP,
RGBA,
BitDepth::Eight,
RGBA,
@ -173,7 +173,7 @@ fn filter_2_for_rgba_8() {
fn filter_3_for_rgba_8() {
test_it_converts(
"tests/files/filter_3_for_rgba_8.png",
FilterStrategy::Basic(RowFilter::Average),
FilterStrategy::AVERAGE,
RGBA,
BitDepth::Eight,
RGBA,
@ -185,7 +185,7 @@ fn filter_3_for_rgba_8() {
fn filter_4_for_rgba_8() {
test_it_converts(
"tests/files/filter_4_for_rgba_8.png",
FilterStrategy::Basic(RowFilter::Paeth),
FilterStrategy::PAETH,
RGBA,
BitDepth::Eight,
RGBA,
@ -209,7 +209,7 @@ fn filter_5_for_rgba_8() {
fn filter_0_for_rgb_16() {
test_it_converts(
"tests/files/filter_0_for_rgb_16.png",
FilterStrategy::Basic(RowFilter::None),
FilterStrategy::NONE,
RGB,
BitDepth::Sixteen,
RGB,
@ -221,7 +221,7 @@ fn filter_0_for_rgb_16() {
fn filter_1_for_rgb_16() {
test_it_converts(
"tests/files/filter_1_for_rgb_16.png",
FilterStrategy::Basic(RowFilter::Sub),
FilterStrategy::SUB,
RGB,
BitDepth::Sixteen,
RGB,
@ -233,7 +233,7 @@ fn filter_1_for_rgb_16() {
fn filter_2_for_rgb_16() {
test_it_converts(
"tests/files/filter_2_for_rgb_16.png",
FilterStrategy::Basic(RowFilter::Up),
FilterStrategy::UP,
RGB,
BitDepth::Sixteen,
RGB,
@ -245,7 +245,7 @@ fn filter_2_for_rgb_16() {
fn filter_3_for_rgb_16() {
test_it_converts(
"tests/files/filter_3_for_rgb_16.png",
FilterStrategy::Basic(RowFilter::Average),
FilterStrategy::AVERAGE,
RGB,
BitDepth::Sixteen,
RGB,
@ -257,7 +257,7 @@ fn filter_3_for_rgb_16() {
fn filter_4_for_rgb_16() {
test_it_converts(
"tests/files/filter_4_for_rgb_16.png",
FilterStrategy::Basic(RowFilter::Paeth),
FilterStrategy::PAETH,
RGB,
BitDepth::Sixteen,
RGB,
@ -281,7 +281,7 @@ fn filter_5_for_rgb_16() {
fn filter_0_for_rgb_8() {
test_it_converts(
"tests/files/filter_0_for_rgb_8.png",
FilterStrategy::Basic(RowFilter::None),
FilterStrategy::NONE,
RGB,
BitDepth::Eight,
RGB,
@ -293,7 +293,7 @@ fn filter_0_for_rgb_8() {
fn filter_1_for_rgb_8() {
test_it_converts(
"tests/files/filter_1_for_rgb_8.png",
FilterStrategy::Basic(RowFilter::Sub),
FilterStrategy::SUB,
RGB,
BitDepth::Eight,
RGB,
@ -305,7 +305,7 @@ fn filter_1_for_rgb_8() {
fn filter_2_for_rgb_8() {
test_it_converts(
"tests/files/filter_2_for_rgb_8.png",
FilterStrategy::Basic(RowFilter::Up),
FilterStrategy::UP,
RGB,
BitDepth::Eight,
RGB,
@ -317,7 +317,7 @@ fn filter_2_for_rgb_8() {
fn filter_3_for_rgb_8() {
test_it_converts(
"tests/files/filter_3_for_rgb_8.png",
FilterStrategy::Basic(RowFilter::Average),
FilterStrategy::AVERAGE,
RGB,
BitDepth::Eight,
RGB,
@ -329,7 +329,7 @@ fn filter_3_for_rgb_8() {
fn filter_4_for_rgb_8() {
test_it_converts(
"tests/files/filter_4_for_rgb_8.png",
FilterStrategy::Basic(RowFilter::Paeth),
FilterStrategy::PAETH,
RGB,
BitDepth::Eight,
RGB,
@ -353,7 +353,7 @@ fn filter_5_for_rgb_8() {
fn filter_0_for_grayscale_alpha_16() {
test_it_converts(
"tests/files/filter_0_for_grayscale_alpha_16.png",
FilterStrategy::Basic(RowFilter::None),
FilterStrategy::NONE,
GRAYSCALE_ALPHA,
BitDepth::Sixteen,
GRAYSCALE_ALPHA,
@ -365,7 +365,7 @@ fn filter_0_for_grayscale_alpha_16() {
fn filter_1_for_grayscale_alpha_16() {
test_it_converts(
"tests/files/filter_1_for_grayscale_alpha_16.png",
FilterStrategy::Basic(RowFilter::Sub),
FilterStrategy::SUB,
GRAYSCALE_ALPHA,
BitDepth::Sixteen,
GRAYSCALE_ALPHA,
@ -377,7 +377,7 @@ fn filter_1_for_grayscale_alpha_16() {
fn filter_2_for_grayscale_alpha_16() {
test_it_converts(
"tests/files/filter_2_for_grayscale_alpha_16.png",
FilterStrategy::Basic(RowFilter::Up),
FilterStrategy::UP,
GRAYSCALE_ALPHA,
BitDepth::Sixteen,
GRAYSCALE_ALPHA,
@ -389,7 +389,7 @@ fn filter_2_for_grayscale_alpha_16() {
fn filter_3_for_grayscale_alpha_16() {
test_it_converts(
"tests/files/filter_3_for_grayscale_alpha_16.png",
FilterStrategy::Basic(RowFilter::Average),
FilterStrategy::AVERAGE,
GRAYSCALE_ALPHA,
BitDepth::Sixteen,
GRAYSCALE_ALPHA,
@ -401,7 +401,7 @@ fn filter_3_for_grayscale_alpha_16() {
fn filter_4_for_grayscale_alpha_16() {
test_it_converts(
"tests/files/filter_4_for_grayscale_alpha_16.png",
FilterStrategy::Basic(RowFilter::Paeth),
FilterStrategy::PAETH,
GRAYSCALE_ALPHA,
BitDepth::Sixteen,
GRAYSCALE_ALPHA,
@ -425,7 +425,7 @@ fn filter_5_for_grayscale_alpha_16() {
fn filter_0_for_grayscale_alpha_8() {
test_it_converts(
"tests/files/filter_0_for_grayscale_alpha_8.png",
FilterStrategy::Basic(RowFilter::None),
FilterStrategy::NONE,
GRAYSCALE_ALPHA,
BitDepth::Eight,
GRAYSCALE_ALPHA,
@ -437,7 +437,7 @@ fn filter_0_for_grayscale_alpha_8() {
fn filter_1_for_grayscale_alpha_8() {
test_it_converts(
"tests/files/filter_1_for_grayscale_alpha_8.png",
FilterStrategy::Basic(RowFilter::Sub),
FilterStrategy::SUB,
GRAYSCALE_ALPHA,
BitDepth::Eight,
GRAYSCALE_ALPHA,
@ -449,7 +449,7 @@ fn filter_1_for_grayscale_alpha_8() {
fn filter_2_for_grayscale_alpha_8() {
test_it_converts(
"tests/files/filter_2_for_grayscale_alpha_8.png",
FilterStrategy::Basic(RowFilter::Up),
FilterStrategy::UP,
GRAYSCALE_ALPHA,
BitDepth::Eight,
GRAYSCALE_ALPHA,
@ -461,7 +461,7 @@ fn filter_2_for_grayscale_alpha_8() {
fn filter_3_for_grayscale_alpha_8() {
test_it_converts(
"tests/files/filter_3_for_grayscale_alpha_8.png",
FilterStrategy::Basic(RowFilter::Average),
FilterStrategy::AVERAGE,
GRAYSCALE_ALPHA,
BitDepth::Eight,
GRAYSCALE_ALPHA,
@ -473,7 +473,7 @@ fn filter_3_for_grayscale_alpha_8() {
fn filter_4_for_grayscale_alpha_8() {
test_it_converts(
"tests/files/filter_4_for_grayscale_alpha_8.png",
FilterStrategy::Basic(RowFilter::Paeth),
FilterStrategy::PAETH,
GRAYSCALE_ALPHA,
BitDepth::Eight,
GRAYSCALE_ALPHA,
@ -497,7 +497,7 @@ fn filter_5_for_grayscale_alpha_8() {
fn filter_0_for_grayscale_16() {
test_it_converts(
"tests/files/filter_0_for_grayscale_16.png",
FilterStrategy::Basic(RowFilter::None),
FilterStrategy::NONE,
GRAYSCALE,
BitDepth::Sixteen,
GRAYSCALE,
@ -509,7 +509,7 @@ fn filter_0_for_grayscale_16() {
fn filter_1_for_grayscale_16() {
test_it_converts(
"tests/files/filter_1_for_grayscale_16.png",
FilterStrategy::Basic(RowFilter::Sub),
FilterStrategy::SUB,
GRAYSCALE,
BitDepth::Sixteen,
GRAYSCALE,
@ -521,7 +521,7 @@ fn filter_1_for_grayscale_16() {
fn filter_2_for_grayscale_16() {
test_it_converts(
"tests/files/filter_2_for_grayscale_16.png",
FilterStrategy::Basic(RowFilter::Up),
FilterStrategy::UP,
GRAYSCALE,
BitDepth::Sixteen,
GRAYSCALE,
@ -533,7 +533,7 @@ fn filter_2_for_grayscale_16() {
fn filter_3_for_grayscale_16() {
test_it_converts(
"tests/files/filter_3_for_grayscale_16.png",
FilterStrategy::Basic(RowFilter::Average),
FilterStrategy::AVERAGE,
GRAYSCALE,
BitDepth::Sixteen,
GRAYSCALE,
@ -545,7 +545,7 @@ fn filter_3_for_grayscale_16() {
fn filter_4_for_grayscale_16() {
test_it_converts(
"tests/files/filter_4_for_grayscale_16.png",
FilterStrategy::Basic(RowFilter::Paeth),
FilterStrategy::PAETH,
GRAYSCALE,
BitDepth::Sixteen,
GRAYSCALE,
@ -569,7 +569,7 @@ fn filter_5_for_grayscale_16() {
fn filter_0_for_grayscale_8() {
test_it_converts(
"tests/files/filter_0_for_grayscale_8.png",
FilterStrategy::Basic(RowFilter::None),
FilterStrategy::NONE,
GRAYSCALE,
BitDepth::Eight,
GRAYSCALE,
@ -581,7 +581,7 @@ fn filter_0_for_grayscale_8() {
fn filter_1_for_grayscale_8() {
test_it_converts(
"tests/files/filter_1_for_grayscale_8.png",
FilterStrategy::Basic(RowFilter::Sub),
FilterStrategy::SUB,
GRAYSCALE,
BitDepth::Eight,
GRAYSCALE,
@ -593,7 +593,7 @@ fn filter_1_for_grayscale_8() {
fn filter_2_for_grayscale_8() {
test_it_converts(
"tests/files/filter_2_for_grayscale_8.png",
FilterStrategy::Basic(RowFilter::Up),
FilterStrategy::UP,
GRAYSCALE,
BitDepth::Eight,
GRAYSCALE,
@ -605,7 +605,7 @@ fn filter_2_for_grayscale_8() {
fn filter_3_for_grayscale_8() {
test_it_converts(
"tests/files/filter_3_for_grayscale_8.png",
FilterStrategy::Basic(RowFilter::Average),
FilterStrategy::AVERAGE,
GRAYSCALE,
BitDepth::Eight,
GRAYSCALE,
@ -617,7 +617,7 @@ fn filter_3_for_grayscale_8() {
fn filter_4_for_grayscale_8() {
test_it_converts(
"tests/files/filter_4_for_grayscale_8.png",
FilterStrategy::Basic(RowFilter::Paeth),
FilterStrategy::PAETH,
GRAYSCALE,
BitDepth::Eight,
GRAYSCALE,
@ -641,7 +641,7 @@ fn filter_5_for_grayscale_8() {
fn filter_0_for_palette_4() {
test_it_converts(
"tests/files/filter_0_for_palette_4.png",
FilterStrategy::Basic(RowFilter::None),
FilterStrategy::NONE,
INDEXED,
BitDepth::Four,
INDEXED,
@ -653,7 +653,7 @@ fn filter_0_for_palette_4() {
fn filter_1_for_palette_4() {
test_it_converts(
"tests/files/filter_1_for_palette_4.png",
FilterStrategy::Basic(RowFilter::Sub),
FilterStrategy::SUB,
INDEXED,
BitDepth::Four,
INDEXED,
@ -665,7 +665,7 @@ fn filter_1_for_palette_4() {
fn filter_2_for_palette_4() {
test_it_converts(
"tests/files/filter_2_for_palette_4.png",
FilterStrategy::Basic(RowFilter::Up),
FilterStrategy::UP,
INDEXED,
BitDepth::Four,
INDEXED,
@ -677,7 +677,7 @@ fn filter_2_for_palette_4() {
fn filter_3_for_palette_4() {
test_it_converts(
"tests/files/filter_3_for_palette_4.png",
FilterStrategy::Basic(RowFilter::Average),
FilterStrategy::AVERAGE,
INDEXED,
BitDepth::Four,
INDEXED,
@ -689,7 +689,7 @@ fn filter_3_for_palette_4() {
fn filter_4_for_palette_4() {
test_it_converts(
"tests/files/filter_4_for_palette_4.png",
FilterStrategy::Basic(RowFilter::Paeth),
FilterStrategy::PAETH,
INDEXED,
BitDepth::Four,
INDEXED,
@ -713,7 +713,7 @@ fn filter_5_for_palette_4() {
fn filter_0_for_palette_2() {
test_it_converts(
"tests/files/filter_0_for_palette_2.png",
FilterStrategy::Basic(RowFilter::None),
FilterStrategy::NONE,
INDEXED,
BitDepth::Two,
INDEXED,
@ -725,7 +725,7 @@ fn filter_0_for_palette_2() {
fn filter_1_for_palette_2() {
test_it_converts(
"tests/files/filter_1_for_palette_2.png",
FilterStrategy::Basic(RowFilter::Sub),
FilterStrategy::SUB,
INDEXED,
BitDepth::Two,
INDEXED,
@ -737,7 +737,7 @@ fn filter_1_for_palette_2() {
fn filter_2_for_palette_2() {
test_it_converts(
"tests/files/filter_2_for_palette_2.png",
FilterStrategy::Basic(RowFilter::Up),
FilterStrategy::UP,
INDEXED,
BitDepth::Two,
INDEXED,
@ -749,7 +749,7 @@ fn filter_2_for_palette_2() {
fn filter_3_for_palette_2() {
test_it_converts(
"tests/files/filter_3_for_palette_2.png",
FilterStrategy::Basic(RowFilter::Average),
FilterStrategy::AVERAGE,
INDEXED,
BitDepth::Two,
INDEXED,
@ -761,7 +761,7 @@ fn filter_3_for_palette_2() {
fn filter_4_for_palette_2() {
test_it_converts(
"tests/files/filter_4_for_palette_2.png",
FilterStrategy::Basic(RowFilter::Paeth),
FilterStrategy::PAETH,
INDEXED,
BitDepth::Two,
INDEXED,
@ -785,7 +785,7 @@ fn filter_5_for_palette_2() {
fn filter_0_for_palette_1() {
test_it_converts(
"tests/files/filter_0_for_palette_1.png",
FilterStrategy::Basic(RowFilter::None),
FilterStrategy::NONE,
INDEXED,
BitDepth::One,
INDEXED,
@ -797,7 +797,7 @@ fn filter_0_for_palette_1() {
fn filter_1_for_palette_1() {
test_it_converts(
"tests/files/filter_1_for_palette_1.png",
FilterStrategy::Basic(RowFilter::Sub),
FilterStrategy::SUB,
INDEXED,
BitDepth::One,
INDEXED,
@ -809,7 +809,7 @@ fn filter_1_for_palette_1() {
fn filter_2_for_palette_1() {
test_it_converts(
"tests/files/filter_2_for_palette_1.png",
FilterStrategy::Basic(RowFilter::Up),
FilterStrategy::UP,
INDEXED,
BitDepth::One,
INDEXED,
@ -821,7 +821,7 @@ fn filter_2_for_palette_1() {
fn filter_3_for_palette_1() {
test_it_converts(
"tests/files/filter_3_for_palette_1.png",
FilterStrategy::Basic(RowFilter::Average),
FilterStrategy::AVERAGE,
INDEXED,
BitDepth::One,
INDEXED,
@ -833,7 +833,7 @@ fn filter_3_for_palette_1() {
fn filter_4_for_palette_1() {
test_it_converts(
"tests/files/filter_4_for_palette_1.png",
FilterStrategy::Basic(RowFilter::Paeth),
FilterStrategy::PAETH,
INDEXED,
BitDepth::One,
INDEXED,

View file

@ -16,7 +16,7 @@ fn get_opts(input: &Path) -> (OutFile, Options) {
let options = Options {
force: true,
fast_evaluation: false,
filter: indexset! {FilterStrategy::Basic(RowFilter::None)},
filter: indexset! {FilterStrategy::NONE},
..Default::default()
};
(OutFile::from_path(input.with_extension("out.png")), options)
@ -409,7 +409,7 @@ fn interlaced_0_to_1_other_filter_mode() {
let input = PathBuf::from("tests/files/interlaced_0_to_1_other_filter_mode.png");
let (output, mut opts) = get_opts(&input);
opts.interlace = Some(Interlacing::Adam7);
opts.filter = indexset! {FilterStrategy::Basic(RowFilter::Paeth)};
opts.filter = indexset! {FilterStrategy::PAETH};
test_it_converts_callbacks(
input,

View file

@ -15,7 +15,7 @@ fn get_opts(input: &Path) -> (OutFile, oxipng::Options) {
let options = oxipng::Options {
force: true,
fast_evaluation: false,
filter: indexset! {FilterStrategy::Basic(RowFilter::None)},
filter: indexset! {FilterStrategy::NONE},
interlace: None,
..Default::default()
};

View file

@ -11,7 +11,7 @@ const INDEXED: u8 = 3;
fn get_opts(input: &Path) -> (OutFile, oxipng::Options) {
let options = oxipng::Options {
force: true,
filter: indexset! {FilterStrategy::Basic(RowFilter::None)},
filter: indexset! {FilterStrategy::NONE},
..Default::default()
};
(OutFile::from_path(input.with_extension("out.png")), options)

View file

@ -5,7 +5,7 @@ use oxipng::{internal_tests::*, *};
fn get_opts() -> Options {
Options {
force: true,
filter: indexset! {FilterStrategy::Basic(RowFilter::None)},
filter: indexset! {FilterStrategy::NONE},
..Default::default()
}
}

View file

@ -15,7 +15,7 @@ fn get_opts(input: &Path) -> (OutFile, oxipng::Options) {
let options = oxipng::Options {
force: true,
fast_evaluation: false,
filter: indexset! {FilterStrategy::Basic(RowFilter::None)},
filter: indexset! {FilterStrategy::NONE},
..Default::default()
};
(OutFile::from_path(input.with_extension("out.png")), options)

View file

@ -14,7 +14,7 @@ const RGBA: u8 = 6;
fn get_opts(input: &Path) -> (OutFile, oxipng::Options) {
let options = oxipng::Options {
force: true,
filter: indexset! {FilterStrategy::Basic(RowFilter::None)},
filter: indexset! {FilterStrategy::NONE},
..Default::default()
};
(OutFile::from_path(input.with_extension("out.png")), options)