IDeviceModelPlugIn
COM公式ドキュメント
IDeviceModelPlugIn コンポーネントオブジェクトモデル (COM) インターフェイスに定義されているメソッドについて説明します。
メソッド 11
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
デバイスモデルプラグイン全体を含むストリームへのポインターを入力として受け取り、プラグインが必要とする内部パラメーターを初期化します。
| bstrXml | LPWSTR | in | BSTR XML デバイスモデルプラグインプロファイルを含む文字列です。このパラメーターはデータをリトルエンディアンの Unicode XML として格納しますが、それを示すための先頭バイトが付いていない場合があります。また、XML 内の encoding キーワードが、これがリトルエンディアンの Unicode としてフォーマットされていることを反映していない場合もあります。さらに、MSXML エンジンの動作により、BSTR XML ファイルは処理されるため、元の XML ファイルとまったく同じ内容ではない可能性があります。 |
| cNumModels | DWORD | in | 変換シーケンス内のモデルの総数です。 |
| iModelPosition | DWORD | in | Initialize 関数で指定される uiNumModels のワークフローにおける、他のデバイスモデルの 1 から始まるモデル位置です。 |
戻り値
解説(Remarks)
この関数が複数回呼び出された場合、以降の呼び出しでは割り当て済みのメモリを解放し、新しい bstrXml パラメーターに従って再初期化します。
デバイスチャネルの数をパラメーター pNumChannels に返します。
| pNumChannels | DWORD* | out | デバイスのカラーチャネル数を表す符号なし整数へのポインターです。 |
戻り値
指定された色数、チャネル数、デバイスカラー、および独自のプラグインアルゴリズムに応じて、適切な XYZ カラーを返します。(IDeviceModelPlugIn.DeviceToColorimetricColors)
| cColors | DWORD | in | pXYZColors 配列および pDeviceValues 配列内の色の数です。 |
| cChannels | DWORD | in | pDeviceValues 配列内のカラーチャネルの数です。 |
| pDeviceValues | FLOAT* | in | 出力される XYZColors の配列へのポインターです。 |
| pXYZColors | XYZColorF* | out | XYZColors に変換する、入力されるデバイスカラーの配列へのポインターです。 |
戻り値
解説(Remarks)
cColors または cChannels が 0 の場合、戻り値は E_FAIL です。
指定された色数、チャネル数、デバイスカラー、および独自のプラグインアルゴリズムに応じて、適切な XYZ カラーを返します。(IDeviceModelPlugIn.ColorimetricToDeviceColors)
| cColors | DWORD | in | pXYZColors 配列および pDeviceValues 配列内の色の数です。 |
| cChannels | DWORD | in | pDeviceValues 配列内のカラーチャネルの数です。 |
| pXYZColors | XYZColorF* | in | デバイスカラーに変換する、入力される XYZColors の配列へのポインターです。 |
| pDeviceValues | FLOAT* | out | 変換結果として出力されるデバイスカラー値を格納する配列へのポインターです。 |
戻り値
解説(Remarks)
cColors または cChannels が 0 の場合、戻り値は E_FAIL です。無効な色や色域外の色がある場合 (色域マッピングモデルによる事前処理が行われた場合に発生する可能性があります)、戻り値は E_FAIL です。
入力される色数、チャネル数、ブラック情報、Commission Internationale l'Eclairge XYZ (CIEXYZ) カラー、および独自のプラグインアルゴリズムに応じて、適切なデバイスカラーを返します。
| cColors | DWORD | in | pXYZColors 配列および pDeviceValues 配列内の色の数です。 |
| cChannels | DWORD | in | pDeviceValues 配列内のカラーチャネルの数です。 |
| pXYZColors | XYZColorF* | in | 出力される XYZColorF 構造体の配列へのポインターです。 |
| pBlackInformation | BlackInformation* | in | BlackInformation へのポインターです。 |
| pDeviceValues | FLOAT* | out | XYZColorF 構造体に変換される、入力されるデバイスカラーの配列へのポインターです。 |
戻り値
解説(Remarks)
cColors または cChannels が 0 の場合、戻り値は E_FAIL です。
特定のプラグインが変換シーケンス内のどこに位置するかを判断するためのパラメーターをプラグインに提供します。
| iModelPosition | DWORD | in | Initialize 関数で指定される uiNumModels のワークフローにおける、他のデバイスモデルの 1 から始まるモデル位置です。 |
| pIDeviceModelOther | IDeviceModelPlugIn* | in | 変換シーケンス内の他のデバイスモデルを含む IDeviceModelPlugIn インターフェイスへのポインターです。 |
戻り値
解説(Remarks)
この関数は CreateMultiProfileTransform 関数によって呼び出され、この関数が必要に応じて AddRef と Release の呼び出しを担当します。この関数により、プラグインデバイスモデルは独自のプラグインインターフェイス関数にアクセスして、独自の方法で情報を交換できます。
他のデバイスモデルがベースラインデバイスモデルである場合、そのようなモデルはプラグインではなくプラグイン間通信がサポートされていないため、この関数は失敗します。
プライマリサンプルの測定色を返します。
| pPrimaryColor | PrimaryXYZColors* | out | 色相環の順序を使用して決定されるプライマリカラーの種類です。プラグインデバイスモデルが赤、黄、緑、シアン、青、マゼンタ、黒、白のプライマリをネイティブにサポートしていない場合でも、仮想プライマリデータを返す必要があります。 |
戻り値
GetGamutBoundaryMesh 関数に必要なデータ構造のサイズを返します。
| pNumVertices | DWORD* | out | 必要な頂点の数です。 |
| pNumTriangles | DWORD* | out | 必要な三角形の数です。 |
戻り値
この関数が成功した場合、戻り値は S_OK です。
プラグインデバイスモデルが WCS に色域境界メッシュを計算させたい場合、戻り値は S_FALSE です。
この関数が失敗した場合、戻り値は E_FAIL です。
解説(Remarks)
この関数は CreateMultiProfileTransform 関数によって呼び出されます。
プラグインから三角形メッシュを返します。この関数は GamutBoundaryDescription の計算に使用されます。
| cChannels | DWORD | in | チャネルの数です。 |
| cVertices | DWORD | in | 頂点の数です。 |
| cTriangles | DWORD | in | 三角形の数です。 |
| pVertices | FLOAT* | out | プラグインモデルの色域シェル内の頂点の配列へのポインターです。 |
| pTriangles | GamutShellTriangle* | out | プラグインモデルの色域シェル内の三角形の配列へのポインターです。 |
戻り値
解説(Remarks)
この関数は CreateMultiProfileTransform 関数によって呼び出されます。
IDeviceModelPlugIn::GetNeutralAxisSize 関数は、GetNeutralAxis 関数によって返される、ニュートラル軸に沿ったデータ点の数を返します。
| pcColors | DWORD* | out | GetNeutralAxis の呼び出しによって返される点の数です。最小値は 2 (黒と白) です。 |
戻り値
IDeviceModelPlugIn::GetNeutralAxis は、デバイスのニュートラル軸に沿ったサンプル点の XYZ 測色値を返します。
| cColors | DWORD | in | 返される点の数です。 |
| pXYZColors | XYZColorF* | out | XYZColorF 構造体の配列へのポインターです。 |
戻り値
解説(Remarks)
「ニュートラル軸」は、デバイスに適した方法で定義してください。通常は、デバイスのグレー値によって作られる点です。これは R=G=B、または C=M=Y=0 で K が任意の値である場合があります。一部のデバイスでは、最も好ましいグレーは M=Y=0 と C=K のように異なる色材の組み合わせを使用するものである場合があります。プラグインは、ニュートラル軸の値のサンプリングの測色値を決定し、それらを返す役割を担います。サンプリングは 2 点 (白と黒) と同程度に疎であっても、任意の密度と同程度に密であっても構いません。
サンプルがいずれかの色空間内で均一な間隔で配置されている必要はありません。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IDeviceModelPlugIn "{1CD63475-07C4-46FE-A903-D655316D11FD}" #usecom global IDeviceModelPlugIn IID_IDeviceModelPlugIn "{}" #comfunc global IDeviceModelPlugIn_Initialize 3 wstr,int,int #comfunc global IDeviceModelPlugIn_GetNumChannels 4 var #comfunc global IDeviceModelPlugIn_DeviceToColorimetricColors 5 int,int,var,var #comfunc global IDeviceModelPlugIn_ColorimetricToDeviceColors 6 int,int,var,var #comfunc global IDeviceModelPlugIn_ColorimetricToDeviceColorsWithBlack 7 int,int,var,var,var #comfunc global IDeviceModelPlugIn_SetTransformDeviceModelInfo 8 int,sptr #comfunc global IDeviceModelPlugIn_GetPrimarySamples 9 var #comfunc global IDeviceModelPlugIn_GetGamutBoundaryMeshSize 10 var,var #comfunc global IDeviceModelPlugIn_GetGamutBoundaryMesh 11 int,int,int,var,var #comfunc global IDeviceModelPlugIn_GetNeutralAxisSize 12 var #comfunc global IDeviceModelPlugIn_GetNeutralAxis 13 int,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IDeviceModelPlugIn "{1CD63475-07C4-46FE-A903-D655316D11FD}" #usecom global IDeviceModelPlugIn IID_IDeviceModelPlugIn "{}" #comfunc global IDeviceModelPlugIn_Initialize 3 wstr,int,int #comfunc global IDeviceModelPlugIn_GetNumChannels 4 sptr #comfunc global IDeviceModelPlugIn_DeviceToColorimetricColors 5 int,int,sptr,sptr #comfunc global IDeviceModelPlugIn_ColorimetricToDeviceColors 6 int,int,sptr,sptr #comfunc global IDeviceModelPlugIn_ColorimetricToDeviceColorsWithBlack 7 int,int,sptr,sptr,sptr #comfunc global IDeviceModelPlugIn_SetTransformDeviceModelInfo 8 int,sptr #comfunc global IDeviceModelPlugIn_GetPrimarySamples 9 sptr #comfunc global IDeviceModelPlugIn_GetGamutBoundaryMeshSize 10 sptr,sptr #comfunc global IDeviceModelPlugIn_GetGamutBoundaryMesh 11 int,int,int,sptr,sptr #comfunc global IDeviceModelPlugIn_GetNeutralAxisSize 12 sptr #comfunc global IDeviceModelPlugIn_GetNeutralAxis 13 int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。