Rust JPEG 2000 codec
-
Safe Public Rust JPEG 2000 APIs
-
Use j2k for safe public JPEG 2000 Part 1 application APIs in Rust: inspect, decode, encode, recode, JP2 still-image containers, J2K/J2C codestreams, and HTJ2K/JPH paths. Audited unsafe code remains isolated at documented implementation boundaries.
+
Pure-Rust JPEG 2000 Codec
+
Use j2k as a pure-Rust JPEG 2000 and HTJ2K codec: inspect, decode, encode, recode, handle JP2/JPH still-image containers, and process J2K/J2C codestreams through safe public APIs. Audited unsafe code remains isolated at documented implementation boundaries.
cargo add j2k
API docs
diff --git a/docs/sitemap.xml b/docs/sitemap.xml
index 4fc48dea..7fc38d7e 100644
--- a/docs/sitemap.xml
+++ b/docs/sitemap.xml
@@ -2,11 +2,11 @@
https://frames-sg.github.io/j2k/
- 1.0
+ 0.8
https://frames-sg.github.io/j2k/rust-jpeg2000-codec/
- 0.9
+ 1.0
https://frames-sg.github.io/j2k/gpu-jpeg2000-rust/
diff --git a/xtask/tests/repo_lint_support/public_docs_policy.rs b/xtask/tests/repo_lint_support/public_docs_policy.rs
index ec37eb5b..314284bc 100644
--- a/xtask/tests/repo_lint_support/public_docs_policy.rs
+++ b/xtask/tests/repo_lint_support/public_docs_policy.rs
@@ -834,3 +834,37 @@ fn packaged_rust_sources_do_not_include_files_outside_their_crate() {
"package source include paths must stay inside their crate so packaged tests/benches/examples are not dead: {escaping:?}"
);
}
+
+#[test]
+fn public_search_metadata_routes_generic_queries_to_one_landing_page() {
+ let root = repo_root();
+ let read = |relative: &str| {
+ let path = root.join(relative);
+ fs::read_to_string(&path).unwrap_or_else(|err| panic!("read {}: {err}", path.display()))
+ };
+
+ let root_readme = read("README.md");
+ let workspace_manifest = read("Cargo.toml");
+ let crate_manifest = read("crates/j2k/Cargo.toml");
+ let crate_readme = read("crates/j2k/README.md");
+ let crate_lib = read("crates/j2k/src/lib.rs");
+ let home = read("docs/index.html");
+ let landing = read("docs/rust-jpeg2000-codec/index.html");
+ let sitemap = read("docs/sitemap.xml");
+
+ assert!(root_readme.starts_with("# J2K — Pure-Rust JPEG 2000 and HTJ2K Codec\n"));
+ assert!(root_readme.contains("[Pure-Rust JPEG 2000 codec documentation](https://frames-sg.github.io/j2k/rust-jpeg2000-codec/)"));
+ assert!(workspace_manifest
+ .contains("homepage = \"https://frames-sg.github.io/j2k/rust-jpeg2000-codec/\""));
+ assert!(crate_manifest.contains("description = \"Pure-Rust JPEG 2000"));
+ assert!(crate_manifest.contains("homepage.workspace = true"));
+ assert!(crate_readme.contains("[Pure-Rust JPEG 2000 codec documentation](https://frames-sg.github.io/j2k/rust-jpeg2000-codec/)"));
+ assert!(crate_lib.contains("//! Pure-Rust JPEG 2000"));
+ assert!(landing.contains("Pure-Rust JPEG 2000 Codec — J2K"));
+ assert!(landing.contains("Pure-Rust JPEG 2000 Codec
"));
+ assert!(landing.contains(
+ ""
+ ));
+ assert!(!home.contains("J2K: Rust JPEG 2000 / HTJ2K Codec"));
+ assert!(sitemap.contains("https://frames-sg.github.io/j2k/rust-jpeg2000-codec/\n 1.0"));
+}