Win32 API 日本語リファレンス
ホームUI.ColorSystem › IDeviceModelPlugIn

IDeviceModelPlugIn

COM
IID1cd63475-07c4-46fe-a903-d655316d11fd継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

IDeviceModelPlugIn コンポーネントオブジェクトモデル (COM) インターフェイスに定義されているメソッドについて説明します。

メソッド 11

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT Initialize(LPWSTR bstrXml, DWORD cNumModels, DWORD iModelPosition)

デバイスモデルプラグイン全体を含むストリームへのポインターを入力として受け取り、プラグインが必要とする内部パラメーターを初期化します。

bstrXmlLPWSTRinBSTR XML デバイスモデルプラグインプロファイルを含む文字列です。このパラメーターはデータをリトルエンディアンの Unicode XML として格納しますが、それを示すための先頭バイトが付いていない場合があります。また、XML 内の encoding キーワードが、これがリトルエンディアンの Unicode としてフォーマットされていることを反映していない場合もあります。さらに、MSXML エンジンの動作により、BSTR XML ファイルは処理されるため、元の XML ファイルとまったく同じ内容ではない可能性があります。
cNumModelsDWORDin変換シーケンス内のモデルの総数です。
iModelPositionDWORDinInitialize 関数で指定される uiNumModels のワークフローにおける、他のデバイスモデルの 1 から始まるモデル位置です。

戻り値

この関数が成功した場合、戻り値は S_OK です。

この関数が失敗した場合、戻り値は E_FAIL です。

解説(Remarks)

この関数が複数回呼び出された場合、以降の呼び出しでは割り当て済みのメモリを解放し、新しい bstrXml パラメーターに従って再初期化します。

vtbl 4 HRESULT GetNumChannels(DWORD* pNumChannels)

デバイスチャネルの数をパラメーター pNumChannels に返します。

pNumChannelsDWORD*outデバイスのカラーチャネル数を表す符号なし整数へのポインターです。

戻り値

この関数が成功した場合、戻り値は S_OK です。

この関数が失敗した場合、戻り値は E_FAIL です。

vtbl 5 HRESULT DeviceToColorimetricColors(DWORD cColors, DWORD cChannels, FLOAT* pDeviceValues, XYZColorF* pXYZColors)

指定された色数、チャネル数、デバイスカラー、および独自のプラグインアルゴリズムに応じて、適切な XYZ カラーを返します。(IDeviceModelPlugIn.DeviceToColorimetricColors)

cColorsDWORDinpXYZColors 配列および pDeviceValues 配列内の色の数です。
cChannelsDWORDinpDeviceValues 配列内のカラーチャネルの数です。
pDeviceValuesFLOAT*in出力される XYZColors の配列へのポインターです。
pXYZColorsXYZColorF*outXYZColors に変換する、入力されるデバイスカラーの配列へのポインターです。

戻り値

この関数が成功した場合、戻り値は S_OK です。

この関数が失敗した場合、戻り値は E_FAIL です。詳細なエラー情報を取得するには GetLastError を呼び出してください。

解説(Remarks)

cColors または cChannels が 0 の場合、戻り値は E_FAIL です。

vtbl 6 HRESULT ColorimetricToDeviceColors(DWORD cColors, DWORD cChannels, XYZColorF* pXYZColors, FLOAT* pDeviceValues)

指定された色数、チャネル数、デバイスカラー、および独自のプラグインアルゴリズムに応じて、適切な XYZ カラーを返します。(IDeviceModelPlugIn.ColorimetricToDeviceColors)

cColorsDWORDinpXYZColors 配列および pDeviceValues 配列内の色の数です。
cChannelsDWORDinpDeviceValues 配列内のカラーチャネルの数です。
pXYZColorsXYZColorF*inデバイスカラーに変換する、入力される XYZColors の配列へのポインターです。
pDeviceValuesFLOAT*out変換結果として出力されるデバイスカラー値を格納する配列へのポインターです。

戻り値

この関数が成功した場合、戻り値は S_OK です。

この関数が失敗した場合、戻り値は E_FAIL です。

解説(Remarks)

cColors または cChannels が 0 の場合、戻り値は E_FAIL です。無効な色や色域外の色がある場合 (色域マッピングモデルによる事前処理が行われた場合に発生する可能性があります)、戻り値は E_FAIL です。

vtbl 7 HRESULT ColorimetricToDeviceColorsWithBlack(DWORD cColors, DWORD cChannels, XYZColorF* pXYZColors, BlackInformation* pBlackInformation, FLOAT* pDeviceValues)

入力される色数、チャネル数、ブラック情報、Commission Internationale l'Eclairge XYZ (CIEXYZ) カラー、および独自のプラグインアルゴリズムに応じて、適切なデバイスカラーを返します。

cColorsDWORDinpXYZColors 配列および pDeviceValues 配列内の色の数です。
cChannelsDWORDinpDeviceValues 配列内のカラーチャネルの数です。
pXYZColorsXYZColorF*in出力される XYZColorF 構造体の配列へのポインターです。
pBlackInformationBlackInformation*inBlackInformation へのポインターです。
pDeviceValuesFLOAT*outXYZColorF 構造体に変換される、入力されるデバイスカラーの配列へのポインターです。

戻り値

この関数が成功した場合、戻り値は S_OK です。

この関数が失敗した場合、戻り値は E_FAIL です。詳細なエラー情報を取得するには GetLastError を呼び出してください。

解説(Remarks)

cColors または cChannels が 0 の場合、戻り値は E_FAIL です。

vtbl 8 HRESULT SetTransformDeviceModelInfo(DWORD iModelPosition, IDeviceModelPlugIn* pIDeviceModelOther)

特定のプラグインが変換シーケンス内のどこに位置するかを判断するためのパラメーターをプラグインに提供します。

iModelPositionDWORDinInitialize 関数で指定される uiNumModels のワークフローにおける、他のデバイスモデルの 1 から始まるモデル位置です。
pIDeviceModelOtherIDeviceModelPlugIn*in変換シーケンス内の他のデバイスモデルを含む IDeviceModelPlugIn インターフェイスへのポインターです。

戻り値

この関数が成功した場合、戻り値は S_OK です。

この関数が失敗した場合、戻り値は E_FAIL です。

解説(Remarks)

この関数は CreateMultiProfileTransform 関数によって呼び出され、この関数が必要に応じて AddRefRelease の呼び出しを担当します。この関数により、プラグインデバイスモデルは独自のプラグインインターフェイス関数にアクセスして、独自の方法で情報を交換できます。

他のデバイスモデルがベースラインデバイスモデルである場合、そのようなモデルはプラグインではなくプラグイン間通信がサポートされていないため、この関数は失敗します。

vtbl 9 HRESULT GetPrimarySamples(PrimaryXYZColors* pPrimaryColor)

プライマリサンプルの測定色を返します。

pPrimaryColorPrimaryXYZColors*out色相環の順序を使用して決定されるプライマリカラーの種類です。プラグインデバイスモデルが赤、黄、緑、シアン、青、マゼンタ、黒、白のプライマリをネイティブにサポートしていない場合でも、仮想プライマリデータを返す必要があります。

戻り値

この関数が成功した場合、戻り値は S_OK です。

この関数が失敗した場合、戻り値は E_FAIL です。

vtbl 10 HRESULT GetGamutBoundaryMeshSize(DWORD* pNumVertices, DWORD* pNumTriangles)

GetGamutBoundaryMesh 関数に必要なデータ構造のサイズを返します。

pNumVerticesDWORD*out必要な頂点の数です。
pNumTrianglesDWORD*out必要な三角形の数です。

戻り値

この関数が成功した場合、戻り値は S_OK です。

プラグインデバイスモデルが WCS に色域境界メッシュを計算させたい場合、戻り値は S_FALSE です。

この関数が失敗した場合、戻り値は E_FAIL です。

解説(Remarks)

この関数は CreateMultiProfileTransform 関数によって呼び出されます。

vtbl 11 HRESULT GetGamutBoundaryMesh(DWORD cChannels, DWORD cVertices, DWORD cTriangles, FLOAT* pVertices, GamutShellTriangle* pTriangles)

プラグインから三角形メッシュを返します。この関数は GamutBoundaryDescription の計算に使用されます。

cChannelsDWORDinチャネルの数です。
cVerticesDWORDin頂点の数です。
cTrianglesDWORDin三角形の数です。
pVerticesFLOAT*outプラグインモデルの色域シェル内の頂点の配列へのポインターです。
pTrianglesGamutShellTriangle*outプラグインモデルの色域シェル内の三角形の配列へのポインターです。

戻り値

この関数が成功した場合、戻り値は S_OK です。

この関数が失敗した場合、戻り値は E_FAIL です。

解説(Remarks)

この関数は CreateMultiProfileTransform 関数によって呼び出されます。

vtbl 12 HRESULT GetNeutralAxisSize(DWORD* pcColors)

IDeviceModelPlugIn::GetNeutralAxisSize 関数は、GetNeutralAxis 関数によって返される、ニュートラル軸に沿ったデータ点の数を返します。

pcColorsDWORD*outGetNeutralAxis の呼び出しによって返される点の数です。最小値は 2 (黒と白) です。

戻り値

この関数が成功した場合、戻り値は S_OK です。

この関数が失敗した場合、戻り値は E_FAIL です。

vtbl 13 HRESULT GetNeutralAxis(DWORD cColors, XYZColorF* pXYZColors)

IDeviceModelPlugIn::GetNeutralAxis は、デバイスのニュートラル軸に沿ったサンプル点の XYZ 測色値を返します。

cColorsDWORDin返される点の数です。
pXYZColorsXYZColorF*outXYZColorF 構造体の配列へのポインターです。

戻り値

この関数が成功した場合、戻り値は S_OK です。

この関数が失敗した場合、戻り値は E_FAIL です。

解説(Remarks)

「ニュートラル軸」は、デバイスに適した方法で定義してください。通常は、デバイスのグレー値によって作られる点です。これは R=G=B、または C=M=Y=0 で K が任意の値である場合があります。一部のデバイスでは、最も好ましいグレーは M=Y=0 と C=K のように異なる色材の組み合わせを使用するものである場合があります。プラグインは、ニュートラル軸の値のサンプリングの測色値を決定し、それらを返す役割を担います。サンプリングは 2 点 (白と黒) と同程度に疎であっても、任意の密度と同程度に密であっても構いません。

サンプルがいずれかの色空間内で均一な間隔で配置されている必要はありません。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
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 指定が可能。