Add const shorthands for delta filters
This commit is contained in:
parent
8c3758b9f4
commit
7f98f7c557
11 changed files with 105 additions and 176 deletions
|
|
@ -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]
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
},
|
||||
|
|
|
|||
112
tests/filters.rs
112
tests/filters.rs
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
};
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Reference in a new issue