1

CMNewProfileSearchシステム上のカラー プロファイルを検索して反復処理し、名前とフル パスを取得する既存のコードがあります。残念ながら、CMNewProfileSearchMac OS X 10.5 では推奨されておらず、64 ビット アプリケーションのコンパイル時には使用できません。

ColorSync Manager 2.5 Reference を読むと、インストールされたカラー プロファイルを反復処理する新しい方法は、CMIterateColorSyncFolder関数を使用することのようです。

  1. 本当?
  2. 代わりに、私がやりたいことを行うココアの方法はありますか?
  3. 誰かサンプルコードを手に入れましたか?

ありがとう。

4

1 に答える 1

1
  1. はい。ご指摘のとおり、ColorSyncManagerリファレンスには次のように記載されています。

    CMNewProfileSearch関数は、ColorSyncバージョン2.5以降で利用可能な最適化されたプロファイル検索を十分に活用していません。代わりにCMIterateColorSyncFolderを使用してください。

  2. CMIterateColorSyncFolderこれを行う公式の方法です。その上、それはまた最適化された方法です。

  3. AppleのImageAppサンプルコードから:

編集:コードサンプルを変更して削除NewCMProfileIterateUPPDisposeCMProfileIterateUPPました。


    // Callback routine with a description of a profile that is 
    // called during an iteration through the available profiles.
    //
    static OSErr profileIterate (CMProfileIterateData *info, void *refCon)
    {
        NSMutableArray* array = (NSMutableArray*) refCon;

        Profile* prof = [Profile profileWithIterateData:info];
        if (prof)
            [array addObject:prof];

        return noErr;
    }

    // return an array of all profiles
    //
    + (NSArray*) arrayOfAllProfiles
    {
        NSMutableArray* profs=[[NSMutableArray arrayWithCapacity:0] retain];
        CMIterateColorSyncFolder(profileIterate, NULL, 0L, profs);
        return (NSArray*)profs;
    }

必要がないことが判明したNewCMProfileIterateUPPのでDisposeCMProfileIterateUPP、私が知る限り、それらは何にも置き換えられていません。代わりに、上記のに一致するシグネチャを使用してコールバック関数を定義できますprofileIterate。次に、コールバック関数をに直接渡すことができますCMIterateColorSyncFolder

I've tested my changes in ImageApp on Mac OS X 10.5 it it works as expected.

于 2009-05-05T02:15:27.663 に答える