吉里吉里Z (KirikiriZ) 用の CLIP STUDIO PAINT (.clip) 読み込み / 編集プラグイン。
CLIP のパース・合成・書き出しは wamsoft/clipparse
が担い、このリポジトリはそれを submodule で取り込んで TJS2 へ公開する薄いラッパーです。
psdfile (psdparse のラッパー) と対になる構成で、
clip:// ストレージや getLayerData 系の名前・意味論を psdfile に揃えてあるので、
スクリプト側で PSD と CLIP を似た形で扱えます。
.clipからレイヤ単位の画像を吉里吉里Layerへ読み出す (getLayerData/getLayerDataRaw/getLayerDataMask)- 重なる 256x256 タイルだけを展開する部分読み (
getLayerRegion) — CLIP は画素を タイルで持っているので、大きなレイヤの一部を取るのが安い - レイヤツリー / 属性の参照 (
getLayerInfo/getRoots/getChildren) - 全レイヤの合成 (
getBlend) — 合成モード 27 種・表現色 4 種・マスク・ クリッピング・通過フォルダ・調整レイヤ 5 種に対応 (clipparse 側の実装) - 埋め込みの完成画 (
getPreviewPNG) clip://ストレージ経由でレイヤ画像を普通のファイルとしてロード- 編集と書き出し (
CLIPWriter) — レイヤ属性 / 画素の差し替え / レイヤ追加・削除 / キャンバスのリサイズ。無変更で書き戻すと元ファイルと sha256 が一致します
TJS2 の API 仕様は manual.tjs が正本です。
clip://CLIPファイル名/root/フォルダ名/.../レイヤ名.bmp
clip://CLIPファイル名/id/LayerId.bmp
- CLIP ファイル名はベース名のみ、小文字に正規化されます
- フォルダ名 / レイヤ名も小文字に正規化され、含まれる
/は_に置換されます - 名前が重複する場合は後にあるものが優先されます
- 画像を持たないレイヤ (フォルダ・調整レイヤ・空レイヤ) は列挙されません
Plugins.link("clipfile.dll");
var clip = new CLIP();
if (clip.load("sample.clip")) {
Debug.message("canvas: " + clip.width + "x" + clip.height);
for (var i = 0; i < clip.layer_count; i++) {
var info = clip.getLayerInfo(i);
Debug.message(info.name + " " + info.width + "x" + info.height);
}
var lay = new Layer(window, null);
clip.getLayerData(lay, 0);
}
// clip:// 経由で普通の画像として読む
var lay2 = new Layer(window, null);
lay2.loadImages("clip://sample.clip/root/背景/空.bmp");
編集して書き出す場合:
var w = new CLIPWriter();
w.load("in.clip");
w.setLayerAttr(5, %[ opacity: 128, composite: CLIPWriter.composite_multiply ]);
w.save("out.clip");
// CSP で開く前に必ず検査する
var problems = CLIPWriter.validate("out.clip");
if (problems.count) Debug.message(problems.join("\n"));
CLIPWriter の opacity は CLIP の生値 0..256 です (CLIP.getLayerInfo() の
opacity は PSD / 吉里吉里 に揃えた 0..255、生値は opacity_raw)。
setPixels に渡す Layer のサイズは そのレイヤの 100% ミップの寸法 に
合わせる必要があります。これはキャンバスサイズとは限らず (CSP は 256x256 ブロック
境界へ切り上げることがあり、300x400 のキャンバスでも 512x512 になる)、
CLIP.getLayerAttribute(レイヤ番号) の width / height で調べられます。
git clone --recursive <this repo>
# or:
git submodule update --init --recursive要件: MSVC、CMake 3.16+、vcpkg (VCPKG_ROOT 必須)、隣接の
tp_stub / ncbind、configure 時にネットワーク (clipparse が sqlite3
amalgamation をソースから取得します)。
$env:VCPKG_ROOT = 'd:\vcpkg'
# Debug
make PRESET=x64-windows BUILD_TYPE=Debug build
# Release
make PRESET=x64-windows BUILD_TYPE=Release build成果物は build/x64-windows/{Debug,Release}/clipfile.dll。
同梱コンポーネントのライセンスは submodule 側 (clipparse / zlib / SQLite) を参照。