LoginSignup
0
1

More than 5 years have passed since last update.

CLIP STUDIO プラグインを複数のレイヤー表現色に対応させるために

Last updated at Posted at 2017-08-06

CLIP STDUIO PAINT EXのプラグイン開発に関する話です。

CLIP STUDIO PAINTでは「カラー」「グレー」「モノクロ」の3種類のレイヤー表現色を使うことができる。
サンプルではカラーのみに対応しているが、他のレイヤーモードにも対応するために必要な事柄を書く。

フィルタを実行できるレイヤーモードを設定

サンプルの初期化の部分のtarget[]の要素をを増やす。
この種類はドキュメント16p「ターゲットレイヤーの種類」に書いてある。
表現色と「ターゲットレイヤーの種類」は以下のように対応する。

カラー <-> kTriglavPlugInFilterTargetKindRasterLayerRGBAlpha
グレー <-> kTriglavPlugInFilterTargetKindRasterLayerGrayAlpha
モノクロ <-> kTriglavPlugInFilterTargetKindRasterLayerBinarizationGrayAlpha

コードは例えば以下のようになる。

TriglavPlugInInt target[]={kTriglavPlugInFilterTargetKindRasterLayerRGBAlpha, 
                           kTriglavPlugInFilterTargetKindRasterLayerGrayAlpha, 
                           kTriglavPlugInFilterTargetKindRasterLayerBinarizationGrayAlpha
};
TriglavPlugInFilterInitializeSetTargetKinds(pRecordSuite,hostObject,target,3);

レイヤーの表現色を判定

オフスクリーンサービスのgetChannelOrderProcを使って「チャンネルオーダー」を取得する。

TriglavPlugInInt order;
pOffscreenService->getChannelOrderProc(&order, sourceOffscreenObject);

得られる値はドキュメント16p「オフスクリーンのチャンネルオーダー」のいずれかである。
レイヤー表現色とチャンネルオーダーの対応は上記「表現色・チャンネルオーダー・色深度の関係まとめ」のようになる。

カラー <-> kTriglavPlugInOffscreenChannelOrderRGBAlpha (0x03)
グレー <-> kTriglavPlugInOffscreenChannelOrderGrayAlpha (0x02)
モノクロ <-> kTriglavPlugInOffscreenChannelOrderBinarizationGrayAlpha (0x06)

ドキュメントによるとチャンネルオーダーは全部で8種類があるようだが、他のモードが返ってくる場面があるのかは分からない。上記の3つに対応しておけばひとまず十分と思われる。

色深度の設定

ドキュメント13ページ「■フィルタの実装における注意点」にある1-5の流れを行う場合、ビットマップサービスのcreateProc()の第4引数に適切な色深度を設定する必要がある。
その場合は表現色に応じて以下のようにする。

カラー <-> 4
グレー <-> 2
モノクロ <-> 2

これより少なくすると動かなくなるが、多くした場合は動く(が、メモリを食うので推奨されないと思われる)。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1