次の方法で共有


CreateMultiProfileTransform 関数 (icm.h)

プロファイルの配列または単一の デバイス リンク プロファイル を受け入れ、アプリケーションがカラー マッピングの実行に使用できる色変換を作成します。

構文

HTRANSFORM CreateMultiProfileTransform(
  PHPROFILE pahProfiles,
  DWORD     nProfiles,
  PDWORD    padwIntent,
  DWORD     nIntents,
  DWORD     dwFlags,
  DWORD     indexPreferredCMM
);

パラメーター

pahProfiles

使用するプロファイルへのハンドルの配列へのポインター。 この関数は、HPROFILEs に International Color Consortium (ICC) または Windows Color System (WCS) プロファイル情報が含まれているかどうかを決定し、適切に処理します。 OpenColorProfileW および WcsOpenColorProfileW によって有効な WCS プロファイルが返されると、これらのプロファイル ハンドルには DMP、CAMP、および GMMP プロファイルの組み合わせが含まれます。

nProfiles

配列内のプロファイルの数を指定します。 最大値は 10 です。

padwIntent

使用する意図の配列へのポインター。 各意図は、次のいずれかの値です。

INTENT_PERCEPTUAL

INTENT_SATURATION

INTENT_RELATIVE_COLORIMETRIC

INTENT_ABSOLUTE_COLORIMETRIC

GMMP は意図の一般化です。 意図には、"destination" プロファイルと CreateMultiProfileTransform の意図リスト パラメーターの 2 つのソースが考えられます。 "destination" という用語は使用されません。プロファイル リスト パラメーター内の 2 つのプロファイル以外はすべて、最初の宛先として機能し、次にソースとして機能します。

詳細については、「意図の レンダリング」を参照してください。

nIntents

intents 配列内の要素の数を指定します。1 または nProfiles と同じ値を指定できます。 WCS プロファイルを含むプロファイル配列の場合、最初のレンダリング意図は無視され、これらのプロファイル配列には nProfiles -1 要素のみが使用されます。 nIntents の最大数は 10 です。

dwFlags

変換の作成を制御するために使用されるフラグを指定します。 「解説」を参照してください。

indexPreferredCMM

使用するカラー管理モジュール (CMM) を示すカラー プロファイルの 1 から始まるインデックスを指定します。 アプリケーション開発者は、このパラメーターを INDEX_DONT_CARE に設定することで、Windows で CMM の選択を許可できます。 「 カラー管理モジュール (CMM) サードパーティ CM の使用は ICC ワークフローでのみ使用できる」を参照してください。 WCS プロファイルを含むプロファイル配列では、このフラグは無視されます。 また、ICC プロファイルのみを使用する場合や、WCS_ALWAYS フラグを使用する場合も無視されます。

戻り値

この関数が成功した場合、戻り値はカラー変換のハンドルになります。

この関数が失敗した場合、戻り値は NULL になります。 拡張エラー情報については、 GetLastError を呼び出します。

解説

デバイス リンク プロファイルが使用されている場合、 nProfiles が 1 に設定されていない場合、関数は失敗します。

意図の配列は、プロファイルを組み合わせる方法を指定します。 n番目の意図は、配列内の n番目のプロファイルを結合するために使用されます。 意図が 1 つだけ指定されている場合は、最初のプロファイルに使用され、他のすべてのプロファイルは Match 意図を使用して結合されます。

dwFlags の値は、ヒントのみを目的としています。 色管理モジュールは、それらを使用する最適な方法を決定する必要があります。

Windows Vista: dwFlags で使用できる 3 つの新しいフラグが追加されました。

フラグ 説明
PRESERVEBLACK このビットが設定されている場合、変換エンジンは、変換シーケンスの最後の GMMP として適切なブラック世代 GMMP を挿入します。 このフラグは、純粋な WCS 変換でのみ機能します。
SEQUENTIAL_TRANSFORM このビットが設定されている場合、WCS 処理パイプラインの各ステップはイメージ内のすべてのピクセルに対して実行され、最適化されたカラー変換は作成されません。 このフラグは、純粋な WCS 変換でのみ機能します。制限事項: SEQUENTIAL_TRANSFORM フラグセットを使用して作成された変換は、作成されたスレッドでのみ使用でき、一度に 1 つの色変換呼び出しに対してのみ使用できます。 COM は、シーケンシャル変換を作成する前に初期化する必要があり、変換オブジェクトの有効期間にわたって初期化されたままになります。
WCS_ALWAYS このビットが設定されている場合、すべての ICC 変換でも WCS コード パスが使用されます。

注意

SEQUENTIAL_TRANSFORMは、Windows Vista SDK の icm.h ヘッダーから誤って省略されました。 SEQUENTIAL_TRANSFORM フラグを使用する場合は、アプリケーションで次のように定義します。

#define SEQUENTIAL_TRANSFORM 0x80800000

詳細については、「 CMM Transform Creation Flags」を参照してください。 そこに記載されているすべてのフラグは、純粋な ICC から ICC への変換でのみ機能するFAST_TRANSLATEとUSE_RELATIVE_COLORIMETRICを除き、すべての種類の変換でサポートされています。

CreateMultiProfileTransform 関数は、デバイス コンテキストの外部で使用されます。 カラー プロファイルから同じカラー プロファイルに変換すると、色がシフトする場合があります。 これは、精度エラーが原因です。 そのため、このような状況では色変換を実行しないでください。

ソースと宛先の DMP の間には、GMMP が 1 つだけ存在することをお勧めします。 色域境界の説明 (GBD) は、DMP/CAMP の組み合わせから作成されます。 後続の GMMP は、使用するシーケンス内に次に DMP/CAMP GBD が存在するまで、処理チェーン内のそれらの前に GDB を使用します。 たとえば、シーケンス DMP1、CAMP1、GMMP1、GMMP2、GMMP3、DMP2、CAMP2、GMMP4、GMMP5、CAMP3、DMP3 があるとします。 次に、GMMP1、GMMP2 はソースと宛先として GBD1 を使用します。 次に、GMMP3 はソースとして GBD1 を使用し、宛先として GBD2 を使用します。 その後、GMMP4 はソースと宛先として GBD2 を使用します。 最後に、GMMP5 はソースとして GBD2 を使用し、宛先として GBD3 を使用します。 これは、次の GMMP と同じ GMMP がないことを前提としています。

WCS プロファイルの場合は、WCS プロファイル ハンドル内で GMMP を使用するために、レンダリングインテントをDWORD_MAXに設定することをお勧めします。 これは、レンダリング 意図の配列が、HPROFILEs によって指定されたプロファイルに指定または含まれているレンダリング 意図または色域マッピング モデルよりも優先されるためです。 レンダリング 意図の配列は、それらのレンダリング 意図の既定の GMMP を参照します。 理想的には、WCS プロファイル情報を使用して HPROFILE を作成するときに、1 つまたは他の GMMP を NULL に設定することで、ソース デバイスと宛先デバイスの間で 1 つの色域マッピングのみが実行されます。 WCS DMP を使用するレガシ アプリケーションは、一連の GMP を呼び出します。 GDB は、DMP と CAMP に基づいて選択されます。 中間 GMMP の色域境界では、ソースと宛先の GBD が使用されます。

要約すると、 nIntents == 1 の場合、最初の GMM は padwIntent 値の default* として設定されている GMMP に基づいて設定されます。その値がDWORD_MAXされていない限り、2 番目のプロファイルの埋め込み GMM 情報が使用されます (埋め込まれた GMM 情報は GMMP であるか、ICC プロファイルの場合は ** プロファイル ヘッダーからの意図に対応するベースライン GMM)。 残りの GMM は、RelativeColorimetric の既定値 * として設定されている GMMP に基づいて設定されます。

nIntents = nProfiles -1 の場合、各 GMM は、padwIntent 値がDWORD_MAXされている場合を除き、対応するインデックスの padwIntent 配列の値の default* として設定される GMMP に基づいて設定されます。 DWORD_MAXされる padwIntent 配列の値の場合、対応する位置の GMM は、GMM によってマップされる 2 つのプロファイルの 2 番目のプロファイルの埋め込み GMM 情報に基づいて設定されます。 (ここでも、埋め込まれた GMM 情報は GMMP であるか、ICC プロファイルの場合はプロファイル ヘッダーからの意図** に対応するベースライン GMM です)。

nIntents nProfiles = の場合、最初の意図は無視され、nIntents nProfiles = -1 の場合と同様に関数が動作します。

padwIntentsnIntents の他の組み合わせは、エラーを返します。

* "set as default" とは、既定の GMMP が wcsGetDefaultColorProfile を使用して照会され、 profileManagementScope パラメーターが WCS_PROFILE_MANAGEMENT_SCOPE_CURRENT_USER に設定されていることを意味します。 これは 、WcsGetDefaultColorProfile のドキュメントで説明されているように、現在のユーザーまたはシステム全体の既定値を返す場合があります。

** "に対応する GMM" は、"既定として設定された GMMP からの GMM" を意味するものではありません。 代わりに、"ICC プロファイル意図とベースライン GMM アルゴリズムの間の一定の関連付け" を意味します。

ICC ColorSpace プロファイルの WCS 変換のサポートは、RGB カラースペース プロファイルに制限されます。 次の ICC プロファイルの種類は、CITE で処理された変換 (混合 WCS/ICC 変換、または WCS_ALWAYS が設定された all-ICC 変換) では使用できません。

  • RGB 以外の ColorSpace プロファイル
  • NamedColor プロファイル
  • n チャネル プロファイル (n > 8)
  • DeviceLink プロファイル
  • 抽象プロファイル

要件

   
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
Header icm.h
Library Mscms.lib
[DLL] Mscms.dll

関連項目