コンテンツにスキップ

CLIP

擬似コードによるマニュアル

CLIP STUDIO PAINT (.clip) 読み込み / 編集プラグイン clipfile.dll

CLIPファイルストレージ機能 以下のパス名で CLIP ファイルのレイヤ画像を直接ファイルとしてロードできます

clip://CLIPファイル名/root/フォルダ名/.../レイヤ名.bmp clip://CLIPファイル名/id/LayerId.bmp

・CLIPファイル名はベース名のみで小文字で正規化されます ・フォルダ名、レイヤ名は全て小文字で正規化されて含まれる"/" は "_" に置換されます ・名前が重複する場合は後にあるものが優先になります ・画像を持たないレイヤ(フォルダ・調整レイヤ・空レイヤ)は列挙されません

psdfile プラグインの psd:// と同じ規則です。

メンバー一覧

プロパティ

メソッド


width

プロパティ \ アクセス: r

解説

キャンバスの横幅(実ピクセル)。

CLIP の Canvas.CanvasWidth は CanvasUnit 依存で mm 単位のファイルが実在する ため、100% ミップの属性から求めた実ピクセル値を返します。未ロードは -1


height

プロパティ \ アクセス: r

解説

キャンバスの縦幅(実ピクセル)。未ロードは -1


resolution

プロパティ \ アクセス: r

解説

解像度(dpi)。未ロードは 0


layer_count

プロパティ \ アクセス: r

解説

レイヤ数。未ロードは -1


root_layer

プロパティ \ アクセス: r

解説

ルートフォルダの LayerId。未ロードは -1


is_loaded

プロパティ \ アクセス: r

解説

ロード済みかどうか


error

プロパティ \ アクセス: r

解説

直近の失敗理由。無ければ空文字列


load

メソッド

引数

引数 既定値 説明
filename   ファイル名

戻り値

ロードに成功したら true(失敗理由は error プロパティ)

解説

CLIP ファイルのロード。

ローカルに実体があるファイルは mmap で開き、画素は 256x256 ブロック単位で 必要になったときだけ読みます(大きなファイルでも load 自体は軽い)。 アーカイブ内などローカルパスに落ちない場合はストリームから全体をメモリへ 読み込んでから解析します。


loadOctet

メソッド

引数

引数 既定値 説明
data   ファイル全体を格納した octet

戻り値

ロードに成功したら true

解説

octet に入った CLIP データをロードする。

バイト列はこのオブジェクトが保持します。ファイル名を持たないため clip:// ストレージへは登録されません。


clearData

メソッド

解説

保持しているデータを明示的に破棄する。

吉里吉里のオブジェクト寿命は GC 依存なので、大きなファイルを掴んだままに したくないときに呼びます。


getLayerName

メソッド

引数

引数 既定値 説明
no   レイヤ番号

戻り値

レイヤ名

解説

レイヤ名の取得


getLayerInfo

メソッド

引数

引数 既定値 説明
no   レイヤ番号

戻り値

レイヤ情報がはいった辞書 辞書の内容 left 左座標(キャンバス座標) top 上座標 right 右座標 bottom 底座標 width 横幅 height 縦幅 name レイヤ名 layer_id LayerId (CLIP の Layer.MainId)。CLIPWriter の各メソッドや clip://~/id/ で使うのはこの値 visible 表示状態 opacity 不透明度 0..255 (PSD / 吉里吉里 と揃えた値) opacity_raw 不透明度の生値 0..256 (CLIP は 256 段) clipping 下のレイヤでクリッピングするか (0/1) composite 合成モードの生値 (CLIP の LayerComposite。CLIPWriter の composite_* 定数と同じ値) type 合成モード(吉里吉里の対応モード)。対応が無いモードは ltPsNormal に落ちるので、正確に見たいときは composite を使う blend_mode_key 合成モードを PSD の 4 文字コードで表したもの。psdfile の getLayerInfo().blend_mode_key と見比べるとき用 is_group フォルダレイヤか is_filter 調整レイヤか(自分の画素を持たない) is_text テキストレイヤか has_mask レイヤマスクを持つか folder フォルダ属性の生値 (bit0=フォルダ / bit4=折り畳み) collapsed フォルダが折り畳まれているか layer_type_raw LayerType の生値 (bit12(4096)=調整レイヤ / bit1(2)=マスク有) parent_index 親フォルダのレイヤ番号(最上位は -1) children 直接の子のレイヤ番号配列(下から上)。フォルダ以外は空配列

解説

レイヤ情報の取得

レイヤ番号 no は 0 から layer_count-1 までで、並び順は psdfile と同じ 「中身が先、フォルダが後、下から上」の平坦順です。


getRoots

メソッド

戻り値

レイヤ番号の配列

解説

最上位(ルート直下)のレイヤ番号配列を取得する。下から上の順


getChildren

メソッド

引数

引数 既定値 説明
no   レイヤ番号

戻り値

レイヤ番号の配列(フォルダ以外は空配列)

解説

フォルダの直接の子のレイヤ番号配列を取得する。下から上の順


getLayerIndexById

メソッド

引数

引数 既定値 説明
layerId   getLayerInfo().layer_id の値

戻り値

レイヤ番号。見つからなければ -1

解説

LayerId からレイヤ番号を引く


getLayerAttribute

メソッド

引数

引数 既定値 説明
no   レイヤ番号
mask false true でマスク側のミップ連鎖を見る。既定 false

戻り値

%[ width:, height:, // 論理サイズ cols:, rows:, // ブロックグリッド color_mode: // 33=RGBA / 17=グレー・モノクロ / 1=マスク num_channels: // 4 / 1 / 0 bit_depth: // 5=8bpp RGBA / 2=8bpp / 1=1bpp plane_bytes:, block_width:, block_height:, has_init_color:, init_color: // RGBA をパックした値 block_count: // ブロック数 ] 実体が無ければ void

ここで返る width / height はキャンバスサイズとは限りません — CSP は レイヤによって 256x256 ブロック境界に切り上げた大きさ(300x400 のキャンバスでも 512x512 等)で画素を持ちます。CLIPWriter.setPixels に渡す Layer のサイズは この値に合わせる必要があるので、書き換えるときはここで調べてください。

解説

100% ミップの Offscreen 属性を取得する(ブロックグリッドや表現色の確認用)


getLayerData

メソッド

引数

引数 既定値 説明
layer   読み出し先レイヤ
no   レイヤ番号
フォルダ・調整レイヤ・空レイヤは画像を持たないので何もしません
(吉里吉里の Layer は 0 サイズにできないため)。
データ内容のほか以下のプロパティが自動的にレイヤに設定されます
left 左座標
top 上座標
width 横幅
height 縦幅
type 合成モード
opacity 不透明度(0..255 に正規化した値)
visible 表示状態
imageLeft 0になります
imageTop 0になります
imageWidth width になります
imageHeight height になります
name name が設定されます

解説

レイヤ画像の読み出し(マスクをアルファに繰り込んだもの)


getLayerDataRaw

メソッド

引数

引数 既定値 説明
layer   読み出し先レイヤ
no   レイヤ番号

解説

レイヤ画像の読み出し(マスクを繰り込まない生画像)。

設定されるプロパティは getLayerData と同じ


getLayerDataMask

メソッド

引数

引数 既定値 説明
layer   読み出し先レイヤ
no   レイヤ番号

解説

レイヤのマスクのみ(グレー)の読み出し。

マスクを持たないレイヤでは何もしません。 opacity は 255、type は ltPsNormal になります


getLayerRegion

メソッド

引数

引数 既定値 説明
layer   読み出し先レイヤ
no   レイヤ番号
x   矩形の左(キャンバス座標)
y   矩形の上
w   矩形の幅
h   矩形の高さ
mode image_mode_masked image_mode_*(既定 image_mode_masked)

解説

レイヤ画像のうち指定矩形(キャンバス座標)だけを読み出す。

CLIP は画素を 256x256 タイルで持っているので、重なるタイルしか 展開されません。大きなレイヤの一部だけ欲しいときはこちらが安いです (PSD は行 RLE なので同じことができない = clipparse 固有の口)。 読み出し先 Layer の left/top には x/y が設定されます。


getBlend

メソッド

引数

引数 既定値 説明
layer   格納先レイヤ(キャンバスサイズに調整される)

戻り値

取得に成功したら true

解説

全レイヤを下から合成した画像の取得。

psdfile の getBlend が「PSD に保存済みの合成結果を読むだけ」なのとは違い、 こちらは clipparse 側で実際に合成します(CSP の CanvasPreview と一致するのが 正しい状態)。合成モード 27 種・表現色 4 種・マスク・クリッピング・ 通過フォルダ・調整レイヤ 5 種に対応しています。 保存済みの完成画をそのまま使いたいだけなら getPreviewPNG() の方が安いです。


getPreviewPNG

メソッド

戻り値

PNG データの octet。無ければ void

解説

ファイルに埋まっている完成画(CanvasPreview)を PNG の octet で返す。

CSP が保存した画そのものなので合成の計算が不要ですが、等倍とは限りません


check

メソッド

戻り値

問題があればレポート文字列、問題が無ければ void

解説

全ブロックの構造アサーションを回す(診断用)


clearStorageCache

メソッド

解説

static method

ストレージとして保持されてるキャッシュをクリアする