fix nightly
bendn 9 days ago
parent 0197274 · commit 1c5222d
-rw-r--r--Cargo.lock126
-rw-r--r--Cargo.toml4
-rw-r--r--src/diffusion.rs8
-rw-r--r--src/diffusion/sierra.rs8
-rw-r--r--src/lib.rs7
-rw-r--r--src/main.rs4
-rw-r--r--src/ordered.rs2
7 files changed, 81 insertions, 78 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 19ad69f..d54982c 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -4,33 +4,33 @@ version = 4
[[package]]
name = "adler2"
-version = "2.0.0"
+version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627"
+checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
[[package]]
-name = "atools"
-version = "0.1.6"
+name = "array_chunks"
+version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c0b30259e2e64cabf195f13dc5fd322b3adfef150546a2a216cf2272746bf8d5"
+checksum = "75892c1bdf5a3e474bbab36fa7f08d1bcc49ce35bd08fdd44cd761805b5865ac"
[[package]]
-name = "bitflags"
-version = "1.3.2"
+name = "atools"
+version = "0.1.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+checksum = "59fdfa9d3089fc0aa2676b7b3fe46484581faeef796d7b19b6eb1b908664efc3"
[[package]]
-name = "byteorder"
-version = "1.5.0"
+name = "bitflags"
+version = "2.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
+checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af"
[[package]]
name = "car"
-version = "0.1.1"
+version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d0122f0f55893530a647617887ebb7ff0888c62966817d81de4454dcee95e1c5"
+checksum = "6af0bd903a7b7fa9fbb4316af201a4034e628f4eebb8391ed6e73d78188b69da"
dependencies = [
"proc-macro2",
"quote",
@@ -39,21 +39,21 @@ dependencies = [
[[package]]
name = "cfg-if"
-version = "1.0.0"
+version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
[[package]]
name = "clipline"
-version = "0.1.2"
+version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "01c033212f55b799c43650c2fb12866ba8fe873e5786e7e649810c4dc9a76561"
+checksum = "ebc74a32c2299faf6ff143d789e25c52712eb5f81e55c37e9c916bdf2bb6fc39"
[[package]]
name = "crc32fast"
-version = "1.4.2"
+version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3"
+checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511"
dependencies = [
"cfg-if",
]
@@ -81,14 +81,17 @@ checksum = "6a02dba6a60cd31533cf16561ced53239686d18f1464bff49579dd320fcea081"
[[package]]
name = "fimg"
-version = "0.4.43"
-source = "git+https://github.com/bend-n/fimg#1aafaa225eb1ed9007be0a2ba961190a537edcb8"
+version = "0.4.52"
+source = "git+https://git.bendn.org/fimg#6db604c71c7e278c9d8c285510678dd46c49c4ab"
dependencies = [
+ "array_chunks",
"atools",
+ "car",
"clipline",
"fer",
- "hinted",
+ "hinted 1.0.0",
"libc",
+ "lower",
"mattr 0.0.2",
"png",
"umath",
@@ -97,9 +100,9 @@ dependencies = [
[[package]]
name = "flate2"
-version = "1.0.35"
+version = "1.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c"
+checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c"
dependencies = [
"crc32fast",
"miniz_oxide",
@@ -107,9 +110,9 @@ dependencies = [
[[package]]
name = "getrandom"
-version = "0.2.15"
+version = "0.2.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
+checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0"
dependencies = [
"cfg-if",
"libc",
@@ -123,25 +126,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c488b6122f67ca2749a801d562c8c952e1778c42910c43ef537a6f5a46b524f2"
[[package]]
+name = "hinted"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fad79747186550b8c2ea31ec84fd8c4cdcdf9eb99ebced0f47d7d78ad3ab614b"
+
+[[package]]
name = "libc"
-version = "0.2.169"
+version = "0.2.182"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a"
+checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112"
[[package]]
name = "lower"
-version = "0.2.0"
+version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "913cca45d9edb04b7ce3334ad0e551e29b2e8f3eea7f0c9c1f799dc2f33bc80e"
+checksum = "9faac1cfe5c3c955d3caa12e501034062890c67c7dd756eedfcf38709eb917d9"
dependencies = [
"lower-macros",
]
[[package]]
name = "lower-macros"
-version = "0.2.2"
+version = "0.2.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b47b9bb93e25bd3fb0c352152381873c16793a4cf3d3dc3358edeb0d6ea5f563"
+checksum = "a1685e573ae55817b3a8169edb1a9541b4f9e2ce166d7248e813078d2665b0f2"
dependencies = [
"proc-macro2",
"quote",
@@ -156,15 +165,15 @@ checksum = "5f63dc7ec862e5d146c89d104d437548fef5216a6a653f4afc4b87c581970677"
[[package]]
name = "mattr"
-version = "1.0.0"
+version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "47da1697d3c05194a21de2c5fa9875dfccfa4b94a7c30941b85349ec7315e516"
+checksum = "2e63a98f1fe2eb6691749f29f4cbaee9b7ecab1237b7f03ae06bd39336d0322d"
[[package]]
name = "miniz_oxide"
-version = "0.8.3"
+version = "0.8.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b8402cab7aefae129c6977bb0ff1b8fd9a04eb5b51efc50a70bea51cda0c7924"
+checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316"
dependencies = [
"adler2",
"simd-adler32",
@@ -172,9 +181,9 @@ dependencies = [
[[package]]
name = "png"
-version = "0.17.16"
+version = "0.18.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526"
+checksum = "60769b8b31b2a9f263dae2776c37b1b28ae246943cf719eb6946a1db05128a61"
dependencies = [
"bitflags",
"crc32fast",
@@ -185,27 +194,27 @@ dependencies = [
[[package]]
name = "ppv-lite86"
-version = "0.2.20"
+version = "0.2.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04"
+checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"
dependencies = [
"zerocopy",
]
[[package]]
name = "proc-macro2"
-version = "1.0.93"
+version = "1.0.106"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99"
+checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"
dependencies = [
"unicode-ident",
]
[[package]]
name = "quote"
-version = "1.0.38"
+version = "1.0.44"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc"
+checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4"
dependencies = [
"proc-macro2",
]
@@ -248,23 +257,23 @@ dependencies = [
"car",
"exoquant",
"fimg",
- "hinted",
+ "hinted 0.0.2",
"lower",
- "mattr 1.0.0",
+ "mattr 1.0.1",
"rand",
]
[[package]]
name = "simd-adler32"
-version = "0.3.7"
+version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe"
+checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2"
[[package]]
name = "syn"
-version = "2.0.98"
+version = "2.0.116"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1"
+checksum = "3df424c70518695237746f84cede799c9c58fcb37450d7b23716568cc8bc69cb"
dependencies = [
"proc-macro2",
"quote",
@@ -279,9 +288,9 @@ checksum = "42f74eb7957e3a63fa27bfa53c3d361e7ce3871e66f2518292a011eb8e2c00cc"
[[package]]
name = "unicode-ident"
-version = "1.0.16"
+version = "1.0.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a210d160f08b701c8721ba1c726c11662f877ea6b7094007e1ca9a1041945034"
+checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
[[package]]
name = "vecto"
@@ -294,25 +303,24 @@ dependencies = [
[[package]]
name = "wasi"
-version = "0.11.0+wasi-snapshot-preview1"
+version = "0.11.1+wasi-snapshot-preview1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
[[package]]
name = "zerocopy"
-version = "0.7.35"
+version = "0.8.39"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0"
+checksum = "db6d35d663eadb6c932438e763b262fe1a70987f9ae936e60158176d710cae4a"
dependencies = [
- "byteorder",
"zerocopy-derive",
]
[[package]]
name = "zerocopy-derive"
-version = "0.7.35"
+version = "0.8.39"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
+checksum = "4122cd3169e94605190e77839c9a40d40ed048d305bfdc146e7df40ab0f3e517"
dependencies = [
"proc-macro2",
"quote",
diff --git a/Cargo.toml b/Cargo.toml
index a8e008b..93a067d 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,13 +1,13 @@
[package]
name = "remapper"
version = "0.1.0"
-edition = "2021"
+edition = "2024"
[dependencies]
atools = "0.1.5"
car = "0.1.1"
exoquant = "0.2.0"
-fimg = { version = "0.4.43", git = "https://github.com/bend-n/fimg", default-features = false, features = [
+fimg = { version = "0.4.52", default-features = false, features = [
"save",
"scale",
] }
diff --git a/src/diffusion.rs b/src/diffusion.rs
index 1243cc7..639f841 100644
--- a/src/diffusion.rs
+++ b/src/diffusion.rs
@@ -17,7 +17,7 @@ pub fn atkinson<'a, const N: usize>(
1 1 1
1
*/
- let p = image.pixel(x, y);
+ let &p = image.pixel(x, y);
let (_, new, index) = palette.closest(p);
*image.pixel_mut(x, y) = new;
let error = p.asub(new);
@@ -42,9 +42,9 @@ pub fn jarvis<'a, const N: usize, const FAC: u8>(
let out = out::build(image.width() as _, image.height() as _).pal(palette);
#[rustfmt::skip]
let i = image.serpent().map(|(x, y)| unsafe {
- let p = image.pixel(x, y);
+ let &p = image.pixel(x, y);
let (_, new, r) = palette.closest(p);
- *image.pixel_mut(x, y) = new;
+ *image.pixel_mut(x, y) = new;
let error = p.asub(new);
let f = |f| {
@@ -80,7 +80,7 @@ pub fn floyd_steinberg<'p, const FAC: u8, const N: usize>(
) -> out<'p, pal<'p, N>> {
let out = out::build(image.width() as _, image.height() as _).pal(palette);
let i = image.serpent().map(|(x, y)| unsafe {
- let p = image.pixel(x, y);
+ let &p = image.pixel(x, y);
let (_, new, i) = palette.closest(p);
let error = p.asub(new);
let f = |f| {
diff --git a/src/diffusion/sierra.rs b/src/diffusion/sierra.rs
index ad96acc..c03aef3 100644
--- a/src/diffusion/sierra.rs
+++ b/src/diffusion/sierra.rs
@@ -1,5 +1,5 @@
use super::*;
-#[no_mangle]
+#[unsafe(no_mangle)]
fn seeerad<'p>(x: Image<Box<[f32]>, 1>, palette: pal<'p, 1>) -> out<'p, pal<'p, 1>>{
sierra::<255,1>(x, palette)
}
@@ -13,7 +13,7 @@ pub fn sierra<'p, const FAC: u8, const N: usize>(
let fac = const { FAC as f32 / 255.0 };
#[rustfmt::skip]
let i = image.serpent().map(|c @ (x, y)| unsafe {
- let p = image.pixel(x, y);
+ let &p = image.pixel(x, y);
let (_, new, i) = palette.closest(p);
*image.pixel_mut(x, y) = new;
let error = p.asub(new);
@@ -49,7 +49,7 @@ pub fn sierra_two<'p, const FAC: u8, const N: usize>(
let out = out::build(image.width(), image.height()).pal(palette);
#[rustfmt::skip]
let i = image.serpent().map(|c@(x, y)| unsafe {
- let p = image.pixel(x, y);
+ let &p = image.pixel(x, y);
let (_, new, i) = palette.closest(p);
*image.pixel_mut(x, y) = new;
let error = p.asub(new);
@@ -80,7 +80,7 @@ pub fn sierra_lite<'p, const FAC: u8, const N: usize>(
let out = out::build(image.width(), image.height()).pal(palette);
#[rustfmt::skip]
let i = image.serpent().map(|c@(x, y)| unsafe {
- let p = image.pixel(x, y);
+ let &p = image.pixel(x, y);
let (_, new, i) = palette.closest(p);
*image.pixel_mut(x, y) = new;
let error = p.asub(new);
diff --git a/src/lib.rs b/src/lib.rs
index 6596afc..2cc8c8b 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -2,19 +2,14 @@
#![feature(
custom_inner_attributes,
proc_macro_hygiene,
- vec_into_raw_parts,
type_alias_impl_trait,
- inline_const_pat,
- iter_chain,
adt_const_params,
stmt_expr_attributes,
iter_array_chunks,
- let_chains,
generic_const_exprs,
core_intrinsics,
iter_intersperse,
maybe_uninit_array_assume_init,
- array_windows,
iter_map_windows
)]
#![allow(non_camel_case_types)]
@@ -54,7 +49,7 @@ use std::ops::Deref;
use atools::prelude::*;
use dumb::Closest;
-use fimg::{indexed::IndexedImage, Image};
+use fimg::{Image, indexed::IndexedImage};
fn dither<'a, const C: usize>(
image: Image<impl AsRef<[f32]>, C>,
diff --git a/src/main.rs b/src/main.rs
index 911172e..c50d475 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,5 +1,5 @@
#![allow(incomplete_features)]
-#![feature(slice_as_chunks, generic_arg_infer, iter_chain, generic_const_exprs)]
+#![feature(generic_const_exprs)]
use fimg::{DynImage, Image};
use remapper::pal;
use std::time::Instant;
@@ -87,7 +87,7 @@ fn reemap() {
// .to_u8()
// .save("gamma/2_4.png");
let now = Instant::now();
- let x = remapper::ordered::triangular::<1>(
+ let x = remapper::ordered::blue::<1>(
// fimg::Image::<&[u8], 4>::make::<256, 256>().as_ref(),
i,
pal::new(&pal),
diff --git a/src/ordered.rs b/src/ordered.rs
index 9682273..854b436 100644
--- a/src/ordered.rs
+++ b/src/ordered.rs
@@ -198,7 +198,7 @@ where
dither_with::<1024, C>(
image,
|((x, y), p)| unsafe {
- let [noise] = BLUE.pixel(x as u32, y as u32);
+ let &[noise] = BLUE.pixel(x as u32, y as u32);
palette.nearest(p.map(|x| triangle(x, noise))) as u32
},
palette,