Move Pimg/Dref to emote

Revert part of last commit
This commit is contained in:
2025-08-17 09:32:10 +08:00
parent 0a8df19d19
commit 02707fc867
9 changed files with 37 additions and 32 deletions

View File

@@ -46,7 +46,7 @@ zstd = { version = "0.13", optional = true }
default = ["all-fmt", "image-jpg", "image-webp"] default = ["all-fmt", "image-jpg", "image-webp"]
all-fmt = ["all-script", "all-img", "all-arc", "all-audio"] all-fmt = ["all-script", "all-img", "all-arc", "all-audio"]
all-script = ["artemis", "bgi", "cat-system", "circus", "entis-gls", "escude", "ex-hibit", "hexen-haus", "kirikiri", "softpal", "will-plus", "yaneurao", "yaneurao-itufuru"] all-script = ["artemis", "bgi", "cat-system", "circus", "entis-gls", "escude", "ex-hibit", "hexen-haus", "kirikiri", "softpal", "will-plus", "yaneurao", "yaneurao-itufuru"]
all-img = ["bgi-img", "cat-system-img", "circus-img", "kirikiri-img"] all-img = ["bgi-img", "cat-system-img", "circus-img", "emote-img", "kirikiri-img"]
all-arc = ["artemis-arc", "bgi-arc", "cat-system-arc", "circus-arc", "escude-arc"] all-arc = ["artemis-arc", "bgi-arc", "cat-system-arc", "circus-arc", "escude-arc"]
all-audio = ["bgi-audio", "circus-audio"] all-audio = ["bgi-audio", "circus-audio"]
artemis = ["utils-escape"] artemis = ["utils-escape"]
@@ -62,13 +62,14 @@ circus = []
circus-arc = ["circus"] circus-arc = ["circus"]
circus-audio = ["circus", "flate2", "int-enum", "utils-pcm"] circus-audio = ["circus", "flate2", "int-enum", "utils-pcm"]
circus-img = ["circus", "image", "flate2", "zstd"] circus-img = ["circus", "image", "flate2", "zstd"]
emote-img = ["emote-psb", "image", "libtlg-rs", "url"]
entis-gls = ["xml5ever", "markup5ever", "markup5ever_rcdom"] entis-gls = ["xml5ever", "markup5ever", "markup5ever_rcdom"]
escude = ["int-enum"] escude = ["int-enum"]
escude-arc = ["escude", "rand", "utils-bit-stream"] escude-arc = ["escude", "rand", "utils-bit-stream"]
ex-hibit = [] ex-hibit = []
hexen-haus = ["memchr", "utils-str"] hexen-haus = ["memchr", "utils-str"]
kirikiri = ["emote-psb", "fancy-regex", "flate2", "json", "utils-escape"] kirikiri = ["emote-psb", "fancy-regex", "flate2", "json", "utils-escape"]
kirikiri-img = ["kirikiri", "emote-psb", "image", "libtlg-rs", "url"] kirikiri-img = ["kirikiri", "image", "libtlg-rs"]
softpal = ["int-enum"] softpal = ["int-enum"]
will-plus = ["utils-str"] will-plus = ["utils-str"]
yaneurao = [] yaneurao = []

View File

@@ -124,6 +124,15 @@ msg-tool create -t <script-type> <input> <output>
|---|---|---|---|---|---|---|---|---| |---|---|---|---|---|---|---|---|---|
| `circus-crx` | `circus-img` | Circus Image File (.crx) | ✔️ | ✔️ | ❌ | ❌ | ✔️ | | | `circus-crx` | `circus-img` | Circus Image File (.crx) | ✔️ | ✔️ | ❌ | ❌ | ✔️ | |
| `circus-crxd` | `circus-img` | Circus Differential Image File (.crx) | ✔️ | ❌ | ❌ | ❌ | ❌ | | | `circus-crxd` | `circus-img` | Circus Differential Image File (.crx) | ✔️ | ❌ | ❌ | ❌ | ❌ | |
### Emote
| Image Type | Feature Name | Name | Export | Import | Export Multiple | Import Multiple | Create | Remarks |
|---|---|---|---|---|---|---|---|---|
| `emote-pimg`/`pimg` | `emote-img` | Emote Multiple Image File (.pimg) | ❌ | ❌ | ✔️ | ❌ | ❌ | |
| `emote-dref`/`dref` | `emote-img` | Emote DPAK-referenced Image File (.dref) | ✔️ | ❌ | ❌ | ❌ | ❌ | |
### Entis GLS engine
| Script Type | Feature Name | Name | Export | Import | Custom Export | Custom Import | Create | Remarks |
|---|---|---|---|---|---|---|---|---|
| `entis-gls` | `entis-gls` | Entis GLS engine XML Script (.srcxml) | ✔️ | ✔️ | ❌ | ❌ | ❌ | |
### Escu:de ### Escu:de
| Script Type | Feature Name | Name | Export | Import | Custom Export | Custom Import | Create | Remarks | | Script Type | Feature Name | Name | Export | Import | Custom Export | Custom Import | Create | Remarks |
|---|---|---|---|---|---|---|---|---| |---|---|---|---|---|---|---|---|---|
@@ -133,10 +142,6 @@ msg-tool create -t <script-type> <input> <output>
| Archive Type | Feature Name | Name | Unpack | Pack | Remarks | | Archive Type | Feature Name | Name | Unpack | Pack | Remarks |
|---|---|---|---|---|---| |---|---|---|---|---|---|
| `escude-arc` | `escude-arc` | Escu:de Archive File (.bin) | ✔️ | ✔️ | | | `escude-arc` | `escude-arc` | Escu:de Archive File (.bin) | ✔️ | ✔️ | |
### Entis GLS engine
| Script Type | Feature Name | Name | Export | Import | Custom Export | Custom Import | Create | Remarks |
|---|---|---|---|---|---|---|---|---|
| `entis-gls` | `entis-gls` | Entis GLS engine XML Script (.srcxml) | ✔️ | ✔️ | ❌ | ❌ | ❌ | |
### ExHibit ### ExHibit
| Script Type | Feature Name | Name | Export | Import | Custom Export | Custom Import | Create | Remarks | | Script Type | Feature Name | Name | Export | Import | Custom Export | Custom Import | Create | Remarks |
|---|---|---|---|---|---|---|---|---| |---|---|---|---|---|---|---|---|---|
@@ -156,8 +161,6 @@ msg-tool create -t <script-type> <input> <output>
| Image Type | Feature Name | Name | Export | Import | Export Multiple | Import Multiple | Create | Remarks | | Image Type | Feature Name | Name | Export | Import | Export Multiple | Import Multiple | Create | Remarks |
|---|---|---|---|---|---|---|---|---| |---|---|---|---|---|---|---|---|---|
| `kirikiri-tlg`/`kr-tlg` | `kirikiri-img` | Kirikiri TLG Image File (.tlg) | ✔️ | ✔️ | ❌ | ❌ | ✔️ | tlg6 is not supported when importing/creating image | | `kirikiri-tlg`/`kr-tlg` | `kirikiri-img` | Kirikiri TLG Image File (.tlg) | ✔️ | ✔️ | ❌ | ❌ | ✔️ | tlg6 is not supported when importing/creating image |
| `kirikiri-pimg`/`kr-pimg` | `kirikiri-img` | Kirikiri Multiple Image File (.pimg) | ❌ | ❌ | ✔️ | ❌ | ❌ | |
| `kirikiri-dref`/`kr-dref` | `kirikiri-img` | Kirikiri DPAK-referenced Image File (.dref) | ✔️ | ❌ | ❌ | ❌ | ❌ | |
### Softpal ### Softpal
| Script Type | Feature Name | Name | Export | Import | Custom Export | Custom Import | Create | Remarks | | Script Type | Feature Name | Name | Export | Import | Custom Export | Custom Import | Create | Remarks |
|---|---|---|---|---|---|---|---|---| |---|---|---|---|---|---|---|---|---|

View File

@@ -1,4 +1,4 @@
//! Kirikiri DPAK-referenced Image File (.dref) //! Emote DPAK-referenced Image File (.dref)
use crate::ext::io::*; use crate::ext::io::*;
use crate::ext::psb::*; use crate::ext::psb::*;
use crate::scripts::base::*; use crate::scripts::base::*;
@@ -13,7 +13,7 @@ use std::path::{Path, PathBuf};
use url::Url; use url::Url;
#[derive(Debug)] #[derive(Debug)]
/// Kirikiri DREF Script Builder /// Emote DREF Script Builder
pub struct DrefBuilder {} pub struct DrefBuilder {}
impl DrefBuilder { impl DrefBuilder {
@@ -47,7 +47,7 @@ impl ScriptBuilder for DrefBuilder {
} }
fn script_type(&self) -> &'static ScriptType { fn script_type(&self) -> &'static ScriptType {
&ScriptType::KirikiriDref &ScriptType::EmoteDref
} }
fn is_image(&self) -> bool { fn is_image(&self) -> bool {
@@ -177,7 +177,7 @@ impl DpakLoader {
} }
} }
/// Kirikiri DREF Script /// Emote DREF Script
pub struct Dref { pub struct Dref {
urls: Vec<Url>, urls: Vec<Url>,
dir: PathBuf, dir: PathBuf,

2
src/scripts/emote/mod.rs Normal file
View File

@@ -0,0 +1,2 @@
pub mod dref;
pub mod pimg;

View File

@@ -1,4 +1,4 @@
//! Kirikiri Multiple Image File (.pimg) //! Emote Multiple Image File (.pimg)
use crate::ext::io::*; use crate::ext::io::*;
use crate::ext::psb::*; use crate::ext::psb::*;
use crate::scripts::base::*; use crate::scripts::base::*;
@@ -13,7 +13,7 @@ use std::io::{Read, Seek};
use std::path::Path; use std::path::Path;
#[derive(Debug)] #[derive(Debug)]
/// Kirikiri PImg Script Builder /// Emote PImg Script Builder
pub struct PImgBuilder {} pub struct PImgBuilder {}
impl PImgBuilder { impl PImgBuilder {
@@ -75,7 +75,7 @@ impl ScriptBuilder for PImgBuilder {
} }
fn script_type(&self) -> &'static ScriptType { fn script_type(&self) -> &'static ScriptType {
&ScriptType::KirikiriPimg &ScriptType::EmotePimg
} }
fn is_this_format(&self, filename: &str, buf: &[u8], buf_len: usize) -> Option<u8> { fn is_this_format(&self, filename: &str, buf: &[u8], buf_len: usize) -> Option<u8> {
@@ -97,7 +97,7 @@ impl ScriptBuilder for PImgBuilder {
} }
#[derive(Debug)] #[derive(Debug)]
/// Kirikiri PImg Script /// Emote PImg Script
pub struct PImg { pub struct PImg {
psb: VirtualPsbFixed, psb: VirtualPsbFixed,
overlay: Option<bool>, overlay: Option<bool>,

View File

@@ -1,4 +1,2 @@
//! Kirikiri Images //! Kirikiri Images
pub mod dref;
pub mod pimg;
pub mod tlg; pub mod tlg;

View File

@@ -8,6 +8,8 @@ pub mod bgi;
pub mod cat_system; pub mod cat_system;
#[cfg(feature = "circus")] #[cfg(feature = "circus")]
pub mod circus; pub mod circus;
#[cfg(feature = "emote-img")]
pub mod emote;
#[cfg(feature = "entis-gls")] #[cfg(feature = "entis-gls")]
pub mod entis_gls; pub mod entis_gls;
#[cfg(feature = "escude")] #[cfg(feature = "escude")]
@@ -70,10 +72,10 @@ lazy_static::lazy_static! {
Box::new(kirikiri::ks::KsBuilder::new()), Box::new(kirikiri::ks::KsBuilder::new()),
#[cfg(feature = "kirikiri-img")] #[cfg(feature = "kirikiri-img")]
Box::new(kirikiri::image::tlg::TlgImageBuilder::new()), Box::new(kirikiri::image::tlg::TlgImageBuilder::new()),
#[cfg(feature = "kirikiri-img")] #[cfg(feature = "emote-img")]
Box::new(kirikiri::image::pimg::PImgBuilder::new()), Box::new(emote::pimg::PImgBuilder::new()),
#[cfg(feature = "kirikiri-img")] #[cfg(feature = "emote-img")]
Box::new(kirikiri::image::dref::DrefBuilder::new()), Box::new(emote::dref::DrefBuilder::new()),
#[cfg(feature = "kirikiri")] #[cfg(feature = "kirikiri")]
Box::new(kirikiri::mdf::MdfBuilder::new()), Box::new(kirikiri::mdf::MdfBuilder::new()),
#[cfg(feature = "will-plus")] #[cfg(feature = "will-plus")]

View File

@@ -428,6 +428,14 @@ pub enum ScriptType {
#[cfg(feature = "circus-img")] #[cfg(feature = "circus-img")]
/// Circus Differential Image /// Circus Differential Image
CircusCrxd, CircusCrxd,
#[cfg(feature = "emote-img")]
#[value(alias("pimg"))]
/// Emote PIMG image
EmotePimg,
#[cfg(feature = "emote-img")]
#[value(alias("dref"))]
/// Emote DREF(DPAK-referenced) image
EmoteDref,
#[cfg(feature = "entis-gls")] #[cfg(feature = "entis-gls")]
/// Entis GLS srcxml Script /// Entis GLS srcxml Script
EntisGls, EntisGls,
@@ -462,14 +470,6 @@ pub enum ScriptType {
#[value(alias("kr-tlg"))] #[value(alias("kr-tlg"))]
/// Kirikiri TLG image /// Kirikiri TLG image
KirikiriTlg, KirikiriTlg,
#[cfg(feature = "kirikiri-img")]
#[value(alias("kr-pimg"))]
/// Kirikiri PIMG image
KirikiriPimg,
#[cfg(feature = "kirikiri-img")]
#[value(alias("kr-dref"))]
/// Kirikiri DREF(DPAK-referenced) image
KirikiriDref,
#[cfg(feature = "kirikiri")] #[cfg(feature = "kirikiri")]
#[value(alias("kr-mdf"))] #[value(alias("kr-mdf"))]
/// Kirikiri MDF (zlib compressed) file /// Kirikiri MDF (zlib compressed) file

View File

@@ -88,8 +88,7 @@ pub fn decode_to_string(
Encoding::Auto => decode_to_string(Encoding::Utf8, data, check) Encoding::Auto => decode_to_string(Encoding::Utf8, data, check)
.or_else(|_| decode_to_string(Encoding::Cp932, data, check)) .or_else(|_| decode_to_string(Encoding::Cp932, data, check))
.or_else(|_| decode_to_string(Encoding::Gb2312, data, check)), .or_else(|_| decode_to_string(Encoding::Gb2312, data, check)),
// Keep same behavior as Windows API (Code Page 65001) Encoding::Utf8 => Ok(String::from_utf8(data.to_vec())?),
Encoding::Utf8 => Ok(String::from_utf8_lossy(data).into_owned()),
Encoding::Cp932 => { Encoding::Cp932 => {
let result = encoding::codec::japanese::Windows31JEncoding let result = encoding::codec::japanese::Windows31JEncoding
.decode( .decode(