|
説明
カラーワールド作成と同様、プロファイルリンクの作成も柔軟にできるようになりました。プロファイルは入力デバイスのカラースペースから、出力デバイスのカラースペースに行くものと考える必要がなくなりました。返されるプロファイルは開かれた状態なので、使い終わったら閉じてください。
|
CMError
|
NCMSetSystemProfile (const
CMProfileLocation *profLoc);
|
フィールドの説明
|
profLoc
|
CMProfileLocation
データ型で指定するプロファイルの場所。プロファイルは通常ディスクファイルにあるものとされますが、ファイルのほか、ハンドルベース、ポインタベースのプロファイルでもかまいません。
|
説明
ColorSync 2.6
より前のバージョンは、システムプロファイルを設定する API
は、プロファイルを指定する方法として FSSpec
ファイル指定型しかサポートしていませんでした。この新しい API
は、Windows
のファイルシステム指定も同様にできるよう設計されたものです。
CMError NCMUnflattenProfile (CMProfileLocation *targetLocation,
CMFlattenUPP proc,
void *refCon,
Boolean *preferredCMMnotfound);
|
フィールドの説明
|
targetLocation
|
CMProfileLocation データ型で指定する非平坦化
(unflatten)
したいプロファイルの場所。プロファイルは通常ディスクファイルにあるものとされますが、ファイルのほか、ハンドルベース、ポインタベースのプロファイルでもかまいません。
|
|
proc
|
非平坦化処理中に呼び出されるユーザ定義プロシージャ。
|
|
refCon
|
呼び出し側のアプリケーションプログラムが指定したデータを含む参照用定数。
|
|
preferredCMMnotfound
|
プロファイルで指定された CMM
が見つかったかどうかを示す返り値。
|
説明
プロファイルの非平坦化(unflatten)にはこの関数を使ってください。
CMError CMIterateCMMInfo (CMMIterateUPP proc,
UInt32 *count,
void *refCon);
|
フィールドの説明
|
proc
|
呼び出し側のプログラムが提供するコールバック関数。この関数を使うと、アプリケーションから進行状態を監視したり、処理を中断することができます。
|
|
count
|
参照された CMM
の個数がこのフィールドに返されます。
|
|
refCon
|
呼び出し側のアプリケーションプログラムが指定したデータを含む参照用定数。
|
この関数で使用する新しい構造体
OSErr CMMIterateUPP(
CMMInfo* iterateData, /* 特定 CMM の情報を含む構造体へのポインタ */
void* refcon /* CMIterateCMMInfo API で渡される呼び出し側定義のデータ */
);
struct CMMInfo {
unsigned long dataSize; /* この構造体の大きさ - 互換性のため */
OSType CMMType; /* CMM のシグネチャ */
OSType CMMMfr; /* ベンダー、例えば 'appl' */
unsigned long CMMVersion; /* バージョン番号 */
Handle CMMIcons; /* サイズや深さの異なるものを複数指定可能 */
unsigned char ASCIIName[32]; /* Pascal 文字列 - 名前 */
unsigned char ASCIIDesc[256]; /* Pascal 文字列 - 説明または著作権表示 */
UniCharCount UniCodeNameCount; /* 以下の配列の UniChars の個数 */
UniChar UniCodeName[32]; /* UniCode 文字列の名前 */
UniCharCount UniCodeDescCount; /* 以下の配列の UniChars の個数 */
UniChar UniCodeDesc[256]; /* UniCode 文字列の説明 */
};
|
説明
CMIterateCMMInfo
関数はシステムにインストールされているすべての CMM
についての情報を返します。呼び出し側は CMMIterateUPP
パラメータに nil を渡して、CMM
の個数だけを調べることもできます。CMMIterateUPP
プロシージャを渡すと、インストールされている CMM
ごとに一回ずつ呼び出され、CMMInfo 構造体に該当の CMM
の情報が埋められます。呼び出し側は CMIterateCMMInfo
に参照用データを渡しておくと、それが CMMIterateUPP
に渡されてきます。たとえば refcon
としてメニュー参照を渡せば、CMMInfo
データ構造体の情報の一部をメニューに追加できます。proc と
count のどちらか 1
つのパラメータは指定しなければなりません。両方が nil
だと、呼び出し側に paramErr が返されます。
|
CMError
|
CMGetColorSyncVersion (UInt32
*version);
|
フィールドの説明
|
version
|
version マシンにインストールされた ColorSync
のバージョンがこのフィールドに返されます。
|
説明
ColorSync のバージョン情報を返します。CMGetColorSyncVersion
のおかげで Mac OS
のデベロッパは、システムにインストールされた ColorSync
のバージョンを調べるのに、Gestalt
を呼び出す必要がなくなりました。他のプラットフォームではこのような
API がないため、ColorSync 2.6
では、プラットフォームに依存しないバージョン情報取得方法を導入しました。
|
重要な注意事項:
Macintosh 版 ColorSync 2.6 のこの関数の返り値は
0x00026000 です。これは現在 Gestalt が返す値
(0x00000260) と一致しません。Macintosh 版 ColorSync
の将来のバージョンではこれを修正し、Gestalt
の返り値と一致するようにする予定です。
|
Back to top
非推奨 API
以下の API
は将来サポートが中止されるか、限定的にしか使用できなくなります。
|
API
|
ColorSyncバージョン
|
Windowsサポート
|
Macintoshサポート
|
非推奨とされる理由
|
|
(CM)BeginMatching
|
1.x
|
No
|
No
|
Pict ベース。1.x のプロファイルを使用
|
|
NCMBeginMatching
|
2.x
|
No
|
Yes
|
Pict ベース。2.x のプロファイルを使用
|
|
(CM)EndMatching
|
1.x
|
No
|
Yes
|
Pict ベース
|
|
(CM)EnableMatching(Comment)
|
1.x
|
No
|
Yes
|
Pict ベース
|
|
(CM)UseProfile(Comment)
|
1.x
|
No
|
No
|
Pict ベース。1.x のプロファイルを使用
|
|
NCMUseProfileComment
|
2.x
|
No
|
Yes
|
Pict ベース。2.x のプロファイルを使用
|
|
(CM)DrawMatchedPicture
|
1.x
|
No
|
No
|
Pict ベース。1.x のプロファイルを使用
|
|
NCMDrawMatchedPicture
|
2.x
|
No
|
Yes
|
Pict ベース。2.x のプロファイルを使用
|
|
(CM)GetProfileName
|
1.x
|
No
|
No
|
1.x のプロファイルを使用
|
|
(CM)GetProfileAdditionalDataOffset
|
1.x
|
No
|
No
|
1.x のプロファイルを使用
|
|
(CM)GetProfile
|
1.x
|
No
|
No
|
プロファイルレスポンダ関数
|
|
(CM)SetProfile
|
1.x
|
No
|
No
|
プロファイルレスポンダ関数
|
|
(CM)SetProfileDescription
|
1.x
|
No
|
No
|
プロファイルレスポンダ関数
|
|
(CM)GetIndexedProfile
|
1.x
|
No
|
No
|
プロファイルレスポンダ関数
|
|
(CM)DeleteDeviceProfile
|
1.x
|
No
|
No
|
プロファイルレスポンダ関数
|
|
ConcatenateProfiles
|
1.x
|
No
|
No
|
1.x のプロファイルを使用
|
|
CWNewColorWorld
|
1.x
|
No
|
No
|
1.x のプロファイルを使用
|
|
(CM)GetColorSyncFolderSpec
|
1.x, 2.x
|
No
|
Yes
|
Macintosh 固有のディレクトリ情報
|
|
CMSearchGetIndProfileFileSpec
|
2.x
|
No
|
Yes
|
Macintosh 固有のファイルデータ型: FSSpec
|
|
CMSetSystemProfile
|
2.x
|
No
|
Yes
|
Macintosh 固有のファイルデータ型: FSSpec
|
|
CMUnflattenProfile
|
2.x
|
No
|
Yes
|
Macintosh 固有のファイルデータ型: FSSpec
|
|
CMGetProfileByAVID
|
2.5
|
No
|
Yes
|
Macintosh 固有の Display Manager: AVID
|
|
CMSetProfileByAVI
|
2.5
|
No
|
Yes
|
Macintosh 固有の Display Manager: AVID
|
|
CWMatchPixMap
|
1.x, 2.x
|
QT?
|
Yes
|
Macintosh 固有のデータ: PixMap
|
|
|
|
- Windows に QTML
がインストールされている場合にサポート
|
|
|
|
CWCheckPixMap
|
1.x, 2.x
|
QT?
|
Yes
|
Macintosh 固有のデータ: PixMap
|
|
|
|
- Windows に QTML
がインストールされている場合にサポート
|
|
|
|
CMAccelerationLoadTables
|
2.x
|
No
|
No
|
CMM 関数 -
プラットフォーム依存のアクセラレーション
|
|
CMAccelerationCalculateData
|
2.x
|
No
|
No
|
CMM 関数 -
プラットフォーム依存のアクセラレーション
|
Back to top
Windows 版 ColorSync 2.6 の新しい API
CMError CWMatchHBITMAP (CMWorldRef cw,
HBITMAP hBitmap,
CMBitmapCallBackUPP progressProc,
void *refCon);
|
フィールドの説明
|
cw
|
マッチングを行うカラーワールドへの参照。
|
|
hBitmap
|
マッチングしたいビットマップのハンドル。これは
Windows Win32 の標準 HBITMAP 構造体です。
|
|
progressProc
|
呼び出し側のプログラムが提供するコールバック関数。この関数を使うと、ビットマップのカラーマッチングしている間に、アプリケーションから進行状態を監視したり、処理を中断することができます。
|
|
refCon
|
呼び出し側のアプリケーションプログラムが指定したデータを含む参照用定数。
|
説明
CWMatchHBITMAP は、Mac OS の CWMatchPixMap
と同様、プラットフォーム固有データのマッチングを行います。
CMError CMGetColorSyncFolderPath (Boolean createFolder,
char *lpBuffer,
UInt32 uSize);
|
フィールドの説明
|
createFolder
|
ColorSync
プロファイルのディレクトリが見つからない場合に、新しいディレクトリを作成するかどうかを指定するブール値。
|
|
lpBuffer
|
olorSync
フォルダのパスを返してもらいたいバッファへのポインタ。
|
|
uSize
|
そのバッファのサイズ。
|
説明
ColorSync 2.6 は、システムフォルダの直下の「ColorSync
Profiles」フォルダにインストール済みの全プロファイルを格納するようになりました。Mac
OS の CMGetColorSyncFolderSpec 関数と同様、Windows
デベロッパは CMGetColorSyncFolderPath
でこのフォルダの場所を調べることができます。「ColorSync
Profiles」ディレクトリが存在しない場合にフォルダを作成するかどうかは、引数
createFolder の値によって決まります。
新しい CMM API
以下の API は、ColorSync が呼び出す CMM
のエントリポイントです。NCWConcatColorWorld
関数が返す新しいカラーワールドや、NCWNewLinkProfile
関数が返す新しいリンクプロファイルの作成を処理するために呼び出されます。CMM
デベロッパ以外はこれらの API を知る必要はありません。
CMError NCMMConcatInit (CMMStorageHdl hStorage,
NCMConcatProfileSet *profileSet,
CMConcatCallBackUPP proc,
void *refCon);
|
フィールドの説明
|
hStorage
|
CMM のプライベートインスタンスの保存場所。
|
|
profileSet
|
カラーワールド作成のため連結するプロファイル群。
|
|
proc
|
コールバックプロシージャ。
|
|
refCon
|
コールバックプロシージャに渡されるユーザデータ。
|
説明
これは、アプリケーションが NCWConcatColorWorld
関数を呼び出したときに ColorSync が呼び出す API
です。この関数の新しいセレクタは kNCMMConcatInit です。CMM
の仕事は、プロファイル群に指定された各プロファイルの検証と、それらのプロファイルを使って再編成することです。CMM
がそのようなトランスフォームを構築できない場合は、cmCantConcatenateErr
エラーか、その他の適切なエラーコードを返さなければなりません。
CMError NCMMNewLinkProfile (CMMStorageHdl hStorage,
CMProfileRef prof,
NCMConcatProfileSet *profileSet,
CMConcatCallBackUPP proc,
void *refCon);
|
フィールドの説明
|
hStorage
|
CMM のプライベートインスタンスの保存場所。
|
|
prof
|
CMM
はこのプロファイルに適切なタグを追加します。
|
|
profileSet
|
リンクプロファイル作成のため連結するプロファイル群。
|
|
proc
|
コールバックプロシージャ。
|
|
refCon
|
コールバックプロシージャに渡されるユーザデータ。
|
説明
これは、アプリケーションが NCWNewLinkProfile
関数を呼んだときに ColorSync が呼び出す API
です。この関数の新しいセレクタは kNCMMNewLinkProfile
です。CMM
の仕事は、プロファイル群に指定された各プロファイルの検証と、それらのプロファイルを使ってリンクプロファイルを構築することです。CMM
がリンクプロファイルを構築できない場合は、cmCantConcatenateErr
エラーか、その他の適切なエラーコードを返さなければなりません。ColorSync
は CMM を呼び出す前に (CMNewProfile で)
プロファイルを作成してくれるため、CMM
は戻る前に単にプロファイルに適切なタグを追加するだけで済みます。ColorSync
は、呼び出し元にプロファイルを返す前に、CMUpdateProfile
でプロファイルにタグを書き込んでくれます。
Back to top
ColorSync スクリプティングライブラリの新しい
API
ColorSync 2.6 では、新しいスクリプティングライブラリ API
群が追加されました。これは、新しい ColorSync 2.6 の
AppleEvent
用語説明で提供されるのと同じファイル形式ユーティリティをアプリケーションからも利用できるようしたものです。AppleEvent
に応答する ColorSync
のコードも実はこの同じライブラリを呼び出します。新しいスクリプティングライブラリで導入された関数は、以下の通りです。
CMError CMValidImage (const FSSpec *spec);
|
フィールドの説明
|
spec
|
検証したいイメージファイルのファイル指定。
|
説明
この関数は指定されたイメージファイルを検証します。ColorSync
は、インストール済みのスクリプティングプラグインでそのイメージのファイル形式を認識できるものがあるかどうか調べます。そのイメージのファイル形式を認識できるスクリプティングプラグインが見つかれば、CMValidateImage
は noErr を返します。見つからなければ cmInvalidImageFile
を返します。
CMError CMGetImageSpace (const FSSpec *spec,
OSType *space);
|
フィールドの説明
|
spec
|
イメージファイルのファイル指定。
|
|
space
|
イメージファイルで使われている色の値のデータカラースペースのシグネチャが返されます。
|
説明
この関数は、イメージの色の値が表現されているデータカラースペースのシグネチャを返します。
CMError CMEmbedImage (const FSSpec *specFrom,
const FSSpec *specInto,
Boolean repl,
CMProfileRef embProf);
|
フィールドの説明
|
specFrom
|
イメージファイルのファイル指定。
|
|
specInto
|
このパラメータがファイルの場合は、生成されるイメージを指定します。このパラメータがフォルダの場合は、生成されるイメージを置く場所を指定し、イメージは元のファイルと同じ名前になります。このパラメータを省略すると元のファイルが変更されます。
|
|
repl
|
同名のファイルがすでに存在し、このパラメータが「true」に設定されていると、ファイルは置き換えられます。
|
|
embProf
|
イメージに埋め込みたいプロファイル。
|
説明
この関数は ICC
プロファイルとともにイメージを埋め込みます。
CMError CMUnembedImage (const FSSpec *specFrom,
const FSSpec *specInto,
Boolean repl);
|
フィールドの説明
|
specFrom
|
イメージファイルのファイル指定。
|
|
specInto
|
このパラメータがファイルの場合は、生成されるイメージを指定します。このパラメータがフォルダの場合は、生成されるイメージを置く場所を指定し、イメージは元のファイルと同じ名前になります。このパラメータを省略すると元のファイルが変更されます。
|
|
repl
|
同名のファイルがすでに存在し、このパラメータが「true」に設定されていると、ファイルは置き換えられます。
|
説明
この関数はイメージに埋め込まれている ICC
プロファイルをすべて取り除きます。
CMError CMMatchImage (const FSSpec *specFrom,
const FSSpec *specInto,
Boolean repl,
UInt32 qual,
CMProfileRef srcProf,
UInt32 srcIntent,
CMProfileRef dstProf);
|
フィールドの説明
|
specFrom
|
イメージファイルのファイル指定。
|
|
specInto
|
このパラメータがファイルの場合は、生成されるイメージを指定します。このパラメータがフォルダの場合は、生成されるイメージを置く場所を指定し、イメージは元のファイルと同じ名前になります。このパラメータを省略すると元のファイルが変更されます。
|
|
repl
|
同名のファイルがすでに存在する場合、このパラメータが「true」に設定されているとファイルが置き換えられます。
|
|
qual
|
マッチングの品質 (省略可能)。選択肢は、通常品質
(cmNormalMode)、ドラフト (cmDraftMode)、高品質
(cmBestMode) があります。
|
|
srcProf
|
マッチングのための元プロファイル
(省略可能)。
|
|
srcIntent
|
マッチングのためのレンダリングインテント。選択肢は、パーセプチュアルインテント
(cmPerceptual)、相対カラメトリックインテント
(cmRelativecolorimetric)、彩度インテント
(cmSaturation)、絶対カラメトリックインテント
(cmAbsoluteColorimetric) です。
|
|
dstProf
|
マッチングのための対象プロファイル。
|
説明
イメージファイルのカラーマッチングを行うにはこの関数を使ってください。
CMError CMProofImage (const FSSpec *specFrom,
const FSSpec *specInto,
Boolean repl,
UInt32 qual,
CMProfileRef srcProf,
UInt32 srcIntent,
CMProfileRef dstProf,
CMProfileRef prfProf);
|
フィールドの説明
|
specFrom
|
イメージファイルのファイル指定。
|
|
specInto
|
このパラメータがファイルの場合は、生成されるイメージを指定します。このパラメータがフォルダの場合は、生成されるイメージを置く場所を指定し、イメージは元のファイルと同じ名前になります。このパラメータを省略すると元のファイルが変更されます。
|
|
repl
|
同名のファイルがすでに存在し、このパラメータが「true」に設定されていると、ファイルは置き換えられます。
|
|
qual
|
マッチングの品質 (省略可能)。選択肢は、通常品質
(cmNormalMode)、ドラフト (cmDraftMode)、高品質
(cmBestMode) があります。
|
|
srcProf
|
マッチングのための元プロファイル
(省略可能)。
|
|
srcIntent
|
元プロファイルと対象プロファイル間のマッチングのためのレンダリングインテント。選択肢は、パーセプチュアルインテント
(cmPerceptual)、相対カラメトリックインテント
(cmRelativecolorimetric)、彩度インテント
(cmSaturation)、絶対カラメトリックインテント
(cmAbsoluteColorimetric) です。
|
|
dstProf
|
マッチングのための対象プロファイル。
|
|
prfProf
|
対象プロファイルと元プロファイルとのマッチングのための校正プロファイル。
|
説明
イメージファイルの校正を行うにはこの関数を使ってください。
CMError CMLinkImage (const FSSpec *specFrom,
const FSSpec *specInto,
Boolean repl,
UInt32 qual,
CMProfileRef lnkProf,
UInt32 lnkIntent);
|
フィールドの説明
|
specFrom
|
イメージファイルのファイル指定。
|
|
specInto
|
このパラメータがファイルの場合は、生成されるイメージを指定します。このパラメータがフォルダの場合は、生成されるイメージを置く場所を指定し、イメージは元のファイルと同じ名前になります。このパラメータを省略すると元のファイルが変更されます。
|
|
repl
|
同名のファイルがすでに存在し、このパラメータが「true」に設定されていると、ファイルは置き換えられます。
|
|
qual
|
マッチングの品質 (省略可能)。選択肢は、通常品質
(cmNormalMode)、ドラフト (cmDraftMode)、高品質
(cmBestMode) があります。
|
|
lnkProf
|
マッチングのためのデバイスリンクプロファイル。
|
|
lnkIntent
|
マッチングのためのレンダリングインテント。選択肢は、パーセプチュアルインテント
(cmPerceptual)、相対カラメトリックインテント
(cmRelativecolorimetric)、彩度インテント
(cmSaturation)、絶対カラメトリックインテント
(cmAbsoluteColorimetric) です。
|
説明
イメージファイルとデバイスリンクプロファイルのマッチングを行うにはこの関数を使ってください。
CMError CMCountImageProfiles (const FSSpec *spec,
UInt32 *count);
|
フィールドの説明
|
spec
|
イメージファイルのファイル指定。
|
|
count
|
イメージ内に埋め込まれたプロファイルの個数が返されます。
|
説明
指定のイメージに埋め込まれたプロファイルの個数を調べるにはこの関数を使ってください。
CMError CMGetIndImageProfile (const FSSpec *spec,
UInt32 index,
CMProfileRef *prof);
|
フィールドの説明
|
spec
|
イメージファイルのファイル指定。
|
|
index
|
返してほしいプロファイルの数値インデックス。
|
|
prof
|
プロファイルはこのフィールドに返されます。
|
説明
指定のイメージに埋め込まれた指定のプロファイルを取得するにはこの関数を使ってください。
CMError CMSetIndImageProfile (const FSSpec *specFrom,
const FSSpec *specInto,
Boolean repl,
UInt32 index,
CMProfileRef prof);
|
フィールドの説明
|
specFrom
|
イメージファイルのファイル指定。
|
|
specInto
|
このパラメータがファイルの場合は、生成されるイメージを指定します。このパラメータがフォルダの場合は、生成されるイメージを置く場所を指定し、イメージは元のファイルと同じ名前になります。このパラメータを省略すると元のファイルが変更されます。
|
|
repl
|
同名のファイルがすでに存在し、このパラメータが「true」に設定されていると、ファイルは置き換えられます。
|
|
index
|
設定したいプロファイルの数値インデックス。
|
|
prof
|
index
パラメータで指定されたインデックス位置に設定するプロファイル。
|
説明
指定のイメージに指定のプロファイルを埋め込むにはこの関数を使ってください。
新しい CMBitmap タイプ
ColorSync 2.6 には新しい CMBitmap スペースが複数追加され
(下記参照)、デベロッパは複数プラットフォームに適応した広範囲なデータ形式が利用できるようになりました。ColorSync
2.6 の Macintosh 版と Windows
版の両方が、これらのビットマップ形式をすべてサポートしています。
新しいスペース属性フラグ cmLittleEndianPacking
を設定することで下位バイト先行 (リトルエンディアン)
形式のデータであることを指定できるようになったビットマップスペースもあります。また、新旧を問わずほどんどすべてのスペースに適用できる「リバースチャネル」属性、cmReverseChannelPacking
も追加されました。
ColorSync 2.5
でサポートされていたビットマップスペース
- cmGray16Space = cmGraySpace,
- cmGrayA32Space = cmGrayASpace,
- cmRGB16Space = cmWord5ColorPacking + cmRGBSpace,
- cmRGB24Space = cm24_8ColorPacking + cmRGBSpace,
- cmRGB32Space = cm32_8ColorPacking + cmRGBSpace,
- cmRGB48Space = cm48_16ColorPacking + cmRGBSpace,
- cmARGB32Space = cm32_8ColorPacking +
cmAlphaFirstPacking + cmRGBASpace,
- cmRGBA32Space = cm32_8ColorPacking +
cmAlphaLastPacking + cmRGBASpace,
- cmCMYK32Space = cm32_8ColorPacking +
cmCMYKSpace,
- cmCMYK64Space = cm64_16ColorPacking +
cmCMYKSpace,
- cmHSV32Space = cmLong10ColorPacking +
cmHSVSpace,
- cmHLS32Space = cmLong10ColorPacking +
cmHLSSpace,
- cmYXY32Space = cmLong10ColorPacking +
cmYXYSpace,
- cmXYZ32Space = cmLong10ColorPacking +
cmXYZSpace,
- cmLUV32Space = cmLong10ColorPacking +
cmLUVSpace,
- cmLAB24Space = cm24_8ColorPacking + cmLABSpace,
- cmLAB32Space = cmLong10ColorPacking +
cmLABSpace,
- cmLAB48Space = cm48_16ColorPacking + cmLABSpace,
- cmGamutResult1Space = cmOneBitDirectPacking +
cmGamutResultSpace,
- cmNamedIndexed32Space = cm32_32ColorPacking +
cmNamedIndexedSpace,
- cmMCFive8Space = cm40_8ColorPacking +
cmMCFiveSpace,
- cmMCSix8Space = cm48_8ColorPacking +
cmMCSixSpace,
- cmMCSeven8Space = cm56_8ColorPacking +
cmMCSevenSpace,
- cmMCEight8Space = cm64_8ColorPacking +
cmMCEightSpace
ColorSync 2.6 で新しく追加されたスペース
- cmGray8Space = cmGraySpace + cm8_8ColorPacking、8
ビットグレイスケール
- cmGrayA16Space = cmGrayASpace + cm16_8ColorPacking、8
ビットグレイスケール + 8 ビットアルファ
- cmGray16LSpace = cmGraySpace +
cmLittleEndianPacking、16
ビットグレイスケール、リトルエンディアン
- cmGrayA32LSpace = cmGrayASpace +
cmLittleEndianPacking、16 ビットグレイスケール + 16
ビットアルファ、リトルエンディアン
- cmRGB565Space = cmRGBSpace +
cmWord565ColorPacking、1.5.5.5 の変形
- cmRGB565LSpace = cmRGBSpace + cmWord565ColorPacking +
cmLittleEndianPacking、1.5.5.5
の変形、リトルエンディアン
- cmRGB16LSpace = cmRGBSpace + cmWord5ColorPacking +
cmLittleEndianPacking、1.5.5.5、リトルエンディアン
- cmRGB48LSpace = cmRGBSpace + cm48_16ColorPacking +
cmLittleEndianPacking、チャネルあたり 16 ビットの
RGB、リトルエンディアン
- cmARGB64Space = cmRGBASpace + cm64_16ColorPacking +
cmAlphaFirstPacking、16 ビット RGB
- cmARGB64LSpace = cmRGBASpace + cm64_16ColorPacking +
cmAlphaFirstPacking+ cmLittleEndianPacking、16 ビット
RGB/アルファチャネル先行、リトルエンディアン
- cmRGBA64Space = cmRGBASpace + cm64_16ColorPacking +
cmAlphaLastPacking、16 ビット RGB/アルファ後続
- cmRGBA64LSpace = cmRGBASpace + cm64_16ColorPacking +
cmAlphaLastPacking+ cmLittleEndianPacking、16 ビット
RGB/アルファ後続、リトルエンディアン
- cmCMYK64LSpace = cmCMYKSpace + cm64_16ColorPacking +
cmLittleEndianPacking、16 ビット
CMYK、リトルエンディアン
- cmXYZ24Space = cmXYZSpace + cm24_8ColorPacking、8
ビット XYZ
- cmXYZ48Space = cmXYZSpace + cm48_16ColorPacking、16
ビット XYZ
- cmXYZ48LSpace = cmXYZSpace + cm48_16ColorPacking +
cmLittleEndianPacking、16 ビット
XYZ、リトルエンディアン
- cmLAB48LSpace = cmLABSpace + cm48_16ColorPacking +
cmLittleEndianPacking、16 ビット
Lab、リトルエンディアン
- cmNamedIndexed32LSpace = cm32_32ColorPacking +
cmNamedIndexedSpace+ cmLittleEndianPacking、32
ビットインデックス、リトルエンディアン
ICC プロファイルの記述 ('desc') タグの処理
ColorSync の最新リリース (バージョン 2.6) での重要な変更点の
1 つに、ICC プロファイルの記述 ('desc')
タグの処理があります。
ICC の定義によれば、プロファイルの 'desc' タグは最大 3
つの文字列を含みます。最初の文字列は必須で、7
ビットのローマン ASCII 文字列です。2
つめは省略可能で、ローカライズ済みの Unicode 文字列です。3
つめも省略可能で、Macintosh
スクリプトコード形式のローカライズ済み文字列です。アプリケーションは通常この文字列の
1
つを使って、リストボックスやポップアップメニューにプロファイル一覧を表示します。'desc'
タグに関する ICC
の定義には、他にも重要ですがややこしい細目があります。その 1
つは、これらの 3 つの文字列はすべて null
で終了しなければならないことです。また、3
つの文字列すべての先頭には、終りの null
を含めた文字数を置かなければなりません。Unicode
文字列の場合、各文字は 2
バイトなので、文字数をバイト数と混同しないように注意してください。
ColorSync
の旧バージョンでは、このタグを部分的にしか利用しておらず、その結果、内容について限られたエラーチェックしか行っていませんでした。例えば、ColorSync
関数の CMGetScriptProfileDescription は、プロファイル中に
Macintosh スクリプトコードがあればそれを返し、なければ 7
ビットローマン ASCII 文字列を返していました。Unicode
文字列は単に無視されるか、Unicode と Macintosh
のスクリプトコード文字列のどちらか (または両方)
が仕様に合わないと、cmProfileErr コードではなく、ごみ
(運がいいときには ASCII 文字列) が返されていました。
ColorSync 2.6 は、ColorSync が Mac OS と Windows
の両方で動作するようになった初めてのバージョンです。Macintosh
スクリプトコード形式の文字列は Windows
では使用できないため、ColorSync
クライアントはローカライズ済みの Unicode
文字列を参照する必要があります。(Unicode 文字列は Macintosh
でも徐々に使えるようになっています。)
こうした理由から、新しい API の CMGetProfileDescriptions
が追加され、3
つの使用可能な文字列のすべてにアクセスできるようになりました。しかし、そのためには
'desc'
タグの仕様に厳密に準拠することが必要です。例えば、ASCII
文字列や Macintosh スクリプトコード文字列が null
で終了していなかったり、文字列の文字数が間違っていたり、'desc'
タグの範囲を越えていたりすると、cmProfileErr
コードが返されます。
アプリケーションがリストボックスやポップアップメニューにプロファイルを追加する際のパフォーマンスを最大にするために、ColorSync
は「ColorSync
Profiles」フォルダとそのサブディレクトリにインストールされているすべてのプロファイルのキャッシュを保持します。このキャッシュファイルには、CMGetProfileDescriptions
を呼び出して取得した各プロファイルの 3
つの名前が入っています。CMGetProfileDescriptions が、'desc'
タグの不備のためにエラーを返すと、そのプロファイルはキャッシュに追加されません。そのプロファイルがたとえ「ColorSync
Profiles」フォルダに正常にインストールされていても、ColorSync
コントロールパネルや ColorSync
プラグインのポップアップメニュー (ColorSync 2.6
がインストールされている場合)
に表示されなくなるのはこのためです。
この問題の解決策は、原因となっているプロファイルを修正することです。残念ながら、ColorSync
2.6 の一部としてインストールされる「Rename
Profile」AppleScript を使って、間違った 'desc'
タグを持つプロファイルを直すことはできません。このスクリプトは
ColorSync
プロファイルキャッシュにあるほうのプロファイルを操作するからです。一方、「Profile
First
Aid」というシンプルなスタンダローンツールはどのようなプロファイルでも検査修復することができます。このツールは
ColorSync の Web サイト <http://www.apple.com/colorsync>
から入手可能です。
Back to top
Macintosh 版 ColorSync 2.6 の互換性について
ColorSync 1.X/2.X のサポート
バージョン 1.0 のプロファイルとハイブリッド (1.0/2.0)
のカラーワールドは、Macintosh 版 ColorSync 2.6
ではサポートされていません。ColorSync 1.0
のプロファイル、API、CMM は使用できません。
CMM
ColorSync 1.0
プロファイルのサポートはもう必要ありません。既存の CMM
との互換性はあるはずです。
CMM の新しい API: NCMConcatInit と NCMMNewLinkProfile
が追加されました (「CMM の新しい
API」を参照)。CMM はこれらの API
を実装したほうがよいですが、しなくてもかまいません。その場合はデフォルトの
CMM が代わりに呼び出されます。
プロファイルの検索
ColorSync 2.6 では、プロファイル検索関数
(CMNewProfileSearch など)
で行うプロファイル検索場所として、新しくシステムフォルダもサポートします。プロファイルフォルダ内のサブフォルダも対象になります。
カラーワールド
新しい API、NCWConcatColorWorld (「ColorSync
2.6 の新しい API」セクションを参照)
の導入により、カラーワールドの設計をデベロッパが行えるようになりました。呼び出し側は使用するプロファイルタグとレンダリングインテントを選択することができます。以前はサポートされていなかったプロファイルの組み合わせが利用できるようになりました
(例えば、複数デバイスリンクプロファイルなど)。
QuickDraw のマッチング
2.X の QuickDraw 関数
(N/NCMBeginMatching、CMEndMatching、N/CMDrawMatchedPicture、CWMatchPixMap、CWCheckPixMap)
は継続してサポートされます。
スクリプトとファイル形式
JPEG、GIF、TIFF
ファイル形式プラグインがサポートされました。
バイト順 (エンディアン) の問題
API
が構造体でデータを返す場合、そのデータはそのプラットフォームのバイト順
(エンディン) で正しく返されます。つまり、Macintosh
では上位バイト先行 (ビッグエンディアン)、Windows
では下位バイト先行 (リトルエンディアン)
になります。例えば、CMGetCWInfo 関数は CMCWInfoRecord
構造体でデータを返します。この関数が Macintosh
で呼び出された場合、構造体の中のデータは上位先行で返されます。
データを単なるバイト列として API に渡したり、API
から受け取る場合、そのデータは上位バイト先行
(ビッグエンディアン)
と見なされます。この場合、ネイティブなバイト順から上位先行への変換は、呼び出し側が行う必要があります。
Back to top
Windows 版 ColorSync 2.6 の互換性について
CMM
CMM
がサポートする必要があるのは、以下のエントリポイントのみです。
CMMatchBitmap, CMMCheckBitmap, CMMConcatInit,
CMMCheckColors, CMMClose, CMMGetCMMInfo, CMMMatchColors,
CMMOpen, NCMMInit
CMM の新しい API
NCMConcatInit と NCMMNewLinkProfile が追加されました
(「CMM の新しい API」を参照)。CMM
はこれらの API
を実装したほうがよいですが、しなくてもかまいません。その場合はデフォルトの
CMM が代わりに呼び出されます。
ColorSync 1.X/2.X のサポート
2.X の API
で作成されたアプリケーションは最小限の変更で動作します。ColorSync
1.0 のプロファイル、API、CMM はサポートされません。
プロファイルの利用
ColorSync 2.6 はシステムフォルダの直下に「ColorSync
Profiles」フォルダを置きます。CMProfileLocation 構造体
(下記「新しい CMProfileLocation 型」参照) に、このフォルダの
Windows
ファイルシステム指定を記述するための新しい場所指定型、CMPathLocation
が追加されました。
新しい CMProfileLocation 型
CMProfileLocation 型が拡張されました。Windows
システムでプロファイルを指定できるようにするため、CMProfileLocation
構造体に新しい場所指定型(Location
Type)が追加されました。
現在の場所指定型は以下の通りです。
CMFileLocation
CMHandleLocation
CMPtrLocation
CMProcedureLocation
|
現在の場所指定型は以下の通りです。
CMPathLocation (パスを char の文字列で指定)
CMBufferLocation (ポインタとサイズを含む)
|
#define CS_MAX_PATH 256 // パス名に指定可能な文字数
struct CMPathLocation {
char path[CS_MAX_PATH]; // 完全なパス
};
struct CMBufferLocation {
void * buffer; // プロファイルデータへのポインタ
UInt32 size; // ポインタ領域の大きさ
};
union CMProfLoc {
CMFileLocation fileLoc;
CMHandleLocation handleLoc;
CMPtrLocation ptrLoc;
CMProcedureLocation procLoc;
CMPathLocation pathLoc;
CMBufferLocation bufferLoc;
};
enum {
cmNoProfileBase = 0,
cmFileBasedProfile = 1,
cmHandleBasedProfile = 2,
cmPtrBasedProfile = 3,
cmProcedureBasedProfile = 4,
cmPathBasedProfile = 5,
cmBufferBasedProfile = 6
};
|
プロファイルの検索
Windows 版 ColorSync 2.6 は、標準の場所 (システムフォルダ)
でプロファイルの検索を行います。
QuickDraw のマッチング
Windows 版 ColorSync 2.6 は、以下の API
をサポートしません。
N/NCMBeginMatching, CMEndMatching,
N/CMDrawMatchedPicture, CWMatchPixMap,
CWCheckPixMap.
PixMaps は CMBitMap
によって簡単にマッチングを行うことができます。
Win32 のマッチング
新しい API の CWMatchHBITMAP (前出の「ColorSync
2.6 の新しい API」参照) は、Windows HBitMap
構造体の直接のマッチング / チェックをサポートします。
バイト順 (エンディアン) の問題
API
が構造体でデータを返す場合、そのデータはそのプラットフォームのバイト順
(エンディアン) で正しく返されます。つまり、Macintosh
では上位バイト先行 (ビッグエンディアン)、Windows
では下位バイト先行 (リトルエンディアン)
になります。例えば、CMGetCWInfo 関数は CMCWInfoRecord
構造体でデータを返します。この関数が Windows
で呼び出された場合、構造体の中のデータは下位先行で返されます。
データを単なるバイト列として API に渡したり、API
から受け取る場合、そのデータは上位バイト先行
(ビッグエンディアン)
と見なされます。この場合、ネイティブなバイト順から上位先行への変換は、呼び出し側が行う必要があります。
|