2009-05-05 19 views
1

私はCMNewProfileSearchを使用して、システム上のカラープロファイルを繰り返し検索し、名前とフルパスを取得する既存のコードを使用しています。残念ながら、CMNewProfileSearchはMac OS X 10.5では推奨されておらず、64ビットアプリケーションをコンパイルする際には利用できません。CMNewProfileSearchを廃止予定の64ビットコードに置き換える

ColorSync Manager 2.5リファレンスを読むと、インストールされたカラープロファイルを反復する新しい方法がCMIterateColorSyncFolder機能を使用するように思えます。

  1. これは本当ですか?
  2. 代わりに私がしたいことをするためのココアの方法はありますか?
  3. サンプルコードはありますか?

ありがとうございます。

答えて

1
  1. はい。

    CMNewProfileSearch関数は、最適化されたプロファイル のColorSyncバージョン2.5以降の検索を最大限に活用していません。ColorSync Manager Referenceは次のように述べています。代わりにCMIterateColorSyncFolder を使用してください。

  2. CMIterateColorSyncFolderは、公式の方法です。また、の方法でも最適化されています。 Apple's ImageApp sample codeから

編集:私は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; 
    } 

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

ImageAppで変更をテストしましたが、Mac OS X 10.5では期待通りに動作します。

+0

Mac OS X 10.5では、関数NewCMProfileIterateUPP()およびDisposeCMProfileIterateUPP()は推奨されていません。 –

+0

良い点。 NewCMProfileIterateUPP()とDisposeCMProfileIterateUPP()が使用されなくなるようにコードサンプルを編集しました。うまくいけば、それはあなたのためにすべての答えです。 ;) – Naaff

関連する問題