高度な検索
Developer Connection
Member Login ログイン | ご入会 ADC連絡先

Technote 1185

New ColorSync 3.0 APIs


目次

システム要件

ColorSync 3.0 のチェック

ColorSync 3.0 バージョン情報の取得

システム全体にわたるカラー管理設定の利用

標準デバイスのプロファイルを対象とする処理

ドキュメントのデフォルトプロファイルを対象とする処理

CMM の初期設定の取得

アプリケーションから「ColorSync」コントロールパネルの起動

のテクニカルノートでは、アプリケーションが ColorSync 3.0 の新機能を利用するために使用できる API について説明します。


システム要件

ColorSync 3.0 は、Mac OS 8.5 またはそれ以降を実行する PowerPC コンピュータを必要とします。

ページの先頭に戻る

ColorSync 3.0 のチェック


ColorSync Manager 共有ライブラリが PowerPC マシンにロードされているかどうかを判断するには、gestaltColorMatchingAttr セレクタを含む Gestalt 関数を使用します。応答パラメータの gestaltColorMatchingLibLoaded 定数によって示されるビットフィールド (ビット 1) をテストします。ビットがセットされている場合、ColorSync Manager 共有ライブラリはロードされています。次のサンプルコードはこの処理の実行方法を示しています。このサンプルコードでは、ColorSyncAvailable Boolean 変数の初期値として false が設定されています。


Boolean CheckIfColorSyncAvailableOnPPC (void)
 {
      Boolean ColorSyncAvailable = false;
      long gestaltResponse;
  
       if (Gestalt(gestaltColorMatchingAttr, &gestaltResponse) == noErr)
       {
           ColorSyncAvailable = gestaltResponse & (1 << gestaltColorMatchingLibLoaded);
       }
        
       return ColorSyncAvailable;
 }

また、ColorSync 関数の CMGetColorSyncVersion (詳細については、「Technote 1160: ColorSync 2.6 の改良点」を参照してください) を使って、ColorSync が存在するかどうかをチェックすることもできます。

CMGetColorSyncVersion 関数は ColorSync のバージョン情報も返します。次に、ColorSync 3.0 の存在をチェックするサンプルコードを示します。


#define  kColorSync3  0x00000300
  
 CMError err;
 UInt32 version;
  
 err = CMGetColorSyncVersion(&version);
 if (err == noErr)
 {
     if (version >= kColorSync3)
     {
        /* ColorSync 3 がインストールされている */
     }
 }
 else
 {
     /* ColorSync は存在しない */
 }

ページの先頭に戻る

ColorSync 3.0 バージョン情報の取得

前のセクションで述べたように、ColorSync の CMGetColorSyncVersion 関数を使用すると、ColorSync のバージョン情報を取得することができます。

また、gestaltColorMatchingVersion セレクタを含む Gestalt 関数を使って ColorSync のバージョン情報を取得することもできます。

次のサンプルコードを修正して使用すると、ColorSync Manager がバージョン 3.0 であるかどうかをテストできます。この関数では、Boolean 変数 ColorSyncAvailable の初期値が false に設定されていて、バージョン 3.0 またはそれ以降の ColorSync Manager がインストールされている場合は、この変数値は true に設定されます。


#define  kColorSync3  0x00000300
  
 Boolean CheckForColorSyncVersion3(void)
 {
     Boolean ColorSyncAvailable = false;
     long version;
  
         if (Gestalt(gestaltColorMatchingVersion, &version) == noErr)
         { 
             if (version >= kColorSync3)
             {
                 ColorSyncAvailable = true;
             }
         }
  
     return ColorSyncAvailable;
 }

ページの先頭に戻る

システム全体にわたるカラー管理設定の利用

このテクニカルノートで説明する新しい API とともに使用される「ColorSync 3.0」コントロールパネルは、システム全体にわたるカラー管理設定への一貫したインタフェースを提供します。このインタフェースを利用することで、あらゆるレベルのユーザのカラー管理操作を向上させることができるだけでなく、同時に、ユーザ固有のカラー初期設定を行う独自のインタフェースを作成する時間を節約することもできます。

ColorSync 3.0 が登場するまで、多くのエンドユーザは ColorSync の存在を認識していないか、ColorSync の使い方がわからないという状況でした。一方、印刷やデザインの専門家は ColorSync を使って基本的なカラー管理に伴う多くの問題を解決していましたが、さらに厳密な管理をマニュアルで制御できればという必要性を感じていました。システム全体にわたる一貫したインタフェースが存在しないため、それぞれのアプリケーションではデバイスプロファイルを選択したり、ユーザの意図を表現するために独自の UI を表示する必要がありました。また、スキャンデータやプリントデータにカラープロファイルを割り当てるための一貫したインタフェースも存在しませんでした。

次のセクションで「ColorSync 3.0」コントロールパネルの概要を示します。なお詳細については「ColorSync 3.0 について」(ColorSync 3.0 とともに配布されている) で説明されています。「ColorSync 3.0」コントロールパネルは、次の機能を含めたカラー管理プロセス全般にわたるより高いレベルの制御機能をユーザに提供します。

  • 入力デバイス、表示デバイス、出力デバイス、および校正デバイスに対するデフォルトのプロファイルを設定する。
  • RGB、CMYK、グレイ、Lab など、ドキュメントのカラー空間に対するデフォルトのプロファイルを設定する (また、プログラムにより XYZ 空間に対するデフォルトのプロファイルを設定することもできる)。
  • CMM の初期設定を選択する。
  • これらのカラー設定に「ワークフロー」に応じた名前を付けて保存し、必要に応じて、最適なカラー設定に切り替える。

ColorSync のデフォルトの設定により、初心者ユーザには必要十分なカラー制御機能が提供されます。また、専門家は、特定のデバイスまたはイメージに対するプロファイルの割り当て、設定の保存、作業目的に応じた設定の切り替えを容易に行うことができるようになります。さらに、最新の「ColorSync」コントロールパネルは独立したアプリケーションとしてインプリメントされています。このため、他のアプリケーションから CMLaunchControlPanel 関数を使って「ColorSync」コントロールパネルを起動することができます。

以下のセクションでは、ColorSync の新機能へのアクセスに使用できる API について説明します。

ページの先頭に戻る

標準デバイスのプロファイルを対象とする処理

ColorSync 3.0 の導入により、ユーザは「ColorSync」コントロールパネルを使って、入力デバイス、出力デバイス、表示デバイス、および校正デバイスのシステム全体に適用されるプロファイルを独自に設定できるようになりました。次の図は、デバイスプロファイルのデフォルトの設定を示しています。ユーザはこれらの設定を個別に変更することもできますが、新しいワークフロー (デバイスプロファイル、ドキュメントプロファイル、および CMM の初期設定を指定します) に切り替えることで全体として変更することもできます。ワークフローの詳細については、「ColorSync 3.0 について」を参照してください。

 

gif.1

図 1 標準デバイスのプロファイル

アプリケーションで CMGetDefaultProfileByUse 関数を使用すると、デバイスプロファイルのユーザ初期設定を取得することができます。また、CMSetDefaultProfileByUse 関数を使って、デバイスプロファイルに値を設定することもできます。これらの関数を呼び出すときは、次の enum に含まれるいずれかの定数を使用して、取得または設定するデバイスプロファイルのタイプを指定します。


enum {
     cmInputUse   = 'inpt',
     cmOutputUse  = 'outp',
     cmDisplayUse = 'dply',
     cmProofUse   = 'pruf'
};

cmInputUse

入力デバイスプロファイルの初期設定を指定する。

cmOutputUse

出力デバイスプロファイルの初期設定を指定する。

cmDisplayUse

表示デバイスプロファイルの初期設定を指定する。

cmProofUse

校正デバイスプロファイルの初期設定を指定する。


CMGetDefaultProfileByUse は ColorSync 3.0 から使用できるようになった関数です。この関数は次のように定義されています。


pascal CMError CMGetDefaultProfileByUse (
         OSType use,
         CMProfileRef * prof);

use - OSType 型の値。前述した定数のいずれかを渡して、プロファイルを取得するデバイスのタイプを指定します。

prof - CMProfileRef 型のプロファイル参照へのポインタ (詳細については、「Managing Color With ColorSync」を参照してください)。関数が値を返すとき、この参照は use によって指定されたデバイスに対応するプロファイルを参照します。アプリケーションがこの参照を使い終わったときは、CMCloseProfile 関数を呼び出して参照をクローズする必要があります。

function result - CMError 型の結果コード。取りうる値については、「Managing Color With ColorSync」を参照してください。

CMSetDefaultProfileByUse も ColorSync 3.0 から使用できるようになった関数です。この関数は次のように定義されています。


pascal CMError CMSetDefaultProfileByUse (
        OSType use,
        CMProfileRef prof);

use - OSType 型の値。前述した定数のいずれかを渡して、プロファイルを設定するデバイスのタイプを指定します。

prof - CMProfileRef 型のプロファイル参照 (詳細については、「Managing Color With ColorSync」を参照してください)。ColorSync は、use パラメータによって指定されているデバイスのプロファイルに、この参照によって指定されるプロファイルを設定します。

function result - CMError 型の結果コード。取りうる値については、「Managing Color With ColorSync」を参照してください。

ページの先頭に戻る

ドキュメントのデフォルトプロファイルを対象とする処理

ColorSync 3.0 の導入により、ユーザは「ColorSync」コントロールパネルを使って、RGB、CMYK、グレイ、および Lab カラー空間に対するデフォルトのドキュメントプロファイルを指定できるようになりました (ColorSync の以前のバージョンでは、RGB および CMYK 空間に対するプロファイルしか設定できませんでした)。アプリケーションでは、ファイルをオープンするときと新しいファイルを作成するときにこれらのプロファイルを使用できます。たとえば、あるドキュメントにプロファイルが埋め込まれていない RGB イメージが含まれている場合は、RGB のデフォルトドキュメントプロファイルを使用することができます。

同様に、ユーザが新しい RGB ドキュメントを作成するときにも、同一の RGB デフォルトプロファイル、あるいは表示デバイスプロファイルを持つカラー空間の中でイメージを作成することができます。

次の図は、ドキュメントカラー空間プロファイルのデフォルトの設定を示しています。ユーザはこれらの設定を個別に変更することもできますが、新しいワークフロー (デバイスプロファイル、ドキュメントプロファイル、および CMM の初期設定を指定します) に切り替えることで全体として変更することもできます。ワークフローの詳細については、「ColorSync 3.0 について」を参照してください。

gif.2

図 2 デフォルトプロファイル

アプリケーションで CMGetDefaultProfileBySpace または CMSetDefaultProfileBySpace を使用すると、さまざまなカラー空間に対するデフォルトのドキュメントプロファイルを取得または設定することができます。デフォルトのプロファイルを取得または設定するカラー空間を指定するには、以下に示す定数のいずれかを使用します。なお、ユーザが XYZ 空間に対するデフォルトプロファイルを設定することはできませんが、デベロッパはアプリケーション内でこの設定を行うことができます。


enum {
    cmXYZData  = 'XYZ ',
    cmLabData  = 'Lab ',
    cmRGBData  = 'RGB ',
    cmGrayData = 'GRAY',
    cmCMYKData = 'CMYK'
};

cmXYZData

XYZ 空間を指定する。

cmLabData

LAB 空間を指定する。

cmRGBData

cmRGBData RGB 空間を指定する。

cmGrayData

cmGrayData グレイ空間を指定する。

cmCMYKData

cmCMYKData CMYK 空間を指定する。


CMGetDefaultProfileBySpace 関数は次のように定義されています。

pascal CMError CMGetDefaultProfileBySpace (
        OSType dataColorSpace,
        CMProfileRef * prof);

dataColorSpace - OSType 型の値。前述した定数のいずれかを渡して、デフォルトのドキュメントプロファイルを取得するカラー空間を指定します。ColorSync 3.0 以前は、グレイカラー空間に対するデフォルトは存在しませんでした。

prof - CMProfileRef 型のプロファイル参照へのポインタ (詳細については、「Managing Color With ColorSync」を参照してください)。関数が値を返すとき、この参照は dataColorSpace によって指定されたカラー空間に対応するデフォルトドキュメントプロファイルを参照します。アプリケーションがこの参照を使い終わったときは、CMCloseProfile 関数を呼び出して参照をクローズする必要があります。

function result - CMError 型の結果コード。取りうる値については、「Managing Color With ColorSync」を参照してください。

CMSetDefaultProfileBySpace 関数は次のように定義されています。


pascal CMError CMSetDefaultProfileBySpace (
        OSType dataColorSpace,
        CMProfileRef prof);

dataColorSpace - OSType 型の値。前述した定数のいずれかを渡して、デフォルトのドキュメントプロファイルを設定するカラー空間を指定します。ColorSync 3.0 以前は、グレイカラー空間に対するデフォルトは存在しませんでした。

prof - CMProfileRef 型のプロファイル参照 (詳細については、「Managing Color With ColorSync」を参照してください)。ColorSync は、dataColorSpace パラメータによって指定されているカラー空間のデフォルトドキュメントプロファイルに、この参照によって指定されるプロファイルを設定します。

function result - CMError 型の結果コード。取りうる値については、「Managing Color With ColorSync」を参照してください。

CMM の初期設定の取得

ColorSync 2.5 の導入以降、ユーザは「ColorSync」コントロールパネルを使って、CMM の初期設定を設定できるようになり、アプリケーションでは CMGetPreferredCMM 関数を呼び出して、CMM の初期設定を取得できるようになりました。この関数は次のように定義されています。


pascal CMError CMGetPreferredCMM (
        OSType * cmmType,
        Boolean * preferredCMMnotfound);

cmmType - OSType へのポインタ。関数が値を返すとき、CMM の初期設定のコンポーネントサブタイプが返されます。たとえば、ColorSync のデフォルト CMM に対するサブタイプは 'appl' で、Kodak CMM に対するサブタイプは 'KCMS' です。戻り値の NULL は、「ColorSync」コントロールパネルで「CMM の初期設定」に「自動」が設定されていることを示します。この場合、ColorSync は「Managing Color With ColorSync」で説明されているいくらか複雑なアルゴリズムにしたがって CMM の初期設定を決定します。

preferredCMMnotfound - CMM の初期設定が存在するかどうかを示す Boolean フラグへのポインタ。関数が値を返すとき、CMM が存在しなければこの値は true になり、存在すれば false になります。

function result - CMError 型の結果コード。取りうる値については、「Managing Color With ColorSync」を参照してください。

ページの先頭に戻る

アプリケーションから「ColorSync」コントロールパネルの起動



注意:
ここで説明する CMLaunchControlPanel ルーチンは、ColorSync 3.0 では適切に動作しません。この問題は ColorSync の次のリリースで修正される予定です。


ColorSync 3.0 の導入により、アプリケーションでは「ColorSync」コントロールパネルを起動して、デバイスとドキュメントのデフォルトプロファイルや CMM の初期設定を含めたカラー選択を要求できるようになりました。また、ユーザは、ワークフロー (詳細については、「ColorSync 3.0 について」を参照してください) と呼ばれる名前の付いたカラー設定のコレクションを切り替えて使用できるようになりました。

これまで多くのアプリケーションは独自のユーザインタフェース (UI) の一部として、カラー管理の初期設定に対する決定を自分自身で行ってきました。アプリケーションの内部から「ColorSync」コントロールパネルを起動できるため、今後は、このような独自の UI およびコードの一部または全部を削除できるようになります。また、ユーザには、ColorSync によって提供される標準的なカラー管理 UI を表示できるようになります。

アプリケーションから「ColorSync」コントロールパネルを起動するには、次の関数を呼び出します。


pascal CMError CMLaunchControlPanel (UInt32 flags);

flags - このパラメータには値として 0 を渡す必要があります。ColorSync の将来のバージョンでは、「ColorSync」コントロールパネルの起動方法を指定するフラグパラメータに対応した定数が定義される予定です。

function result - CMError 型の結果コード。取りうる値については、 「Managing Color With ColorSync」を参照してください。

アプリケーションが CMLaunchControlPanel ルーチンを呼び出すとき、ユーザによって加えられた変更は「ColorSync」コントロールパネルをクローズするまで使用可能にはなりません (CMGetDefaultProfileBySpace などの呼び出しを介して)。現在のところ、「ColorSync」コントロールパネルがクローズされているかどうかを判断する ColorSync API は用意されていませんが、この目的で Process Manager API を使用することができます。

参考文献


ページの先頭に戻る


更新日: 1999 年 10 月 5 日