Pergunta

Eu tenho o código existente que usa CMNewProfileSearch para encontrar, em seguida, iterar sobre os perfis de cor no sistema de obtenção de seus nomes e caminhos completos. Infelizmente, CMNewProfileSearch está obsoleta no Mac OS X 10.5 e também está disponível quando a compilação de um aplicativo de 64 bits.

Ao ler o 2.5 Referência ColorSync Manager, parece que a nova forma de interagir sobre instalada perfis de cores é usar a função CMIterateColorSyncFolder.

  1. É verdade?
  2. Existe uma maneira de cacau para fazer o que eu quero em vez?
  3. Alguém tem qualquer código de exemplo?

Graças.

Foi útil?

Solução

  1. Sim. Como você indicou, a ColorSync Reference Manager diz o seguinte:

    A função CMNewProfileSearch não aproveitar ao máximo o perfil otimizado busca de partida disponível com ColorSync versão 2.5. Use CMIterateColorSyncFolder em seu lugar.

  2. CMIterateColorSyncFolder é a funcionário maneira de fazer isso. Além disso, é também o Optimizado caminho.

  3. A partir ImageApp da Apple código de exemplo :

EDIT:. Eu modificado o código de exemplo para remover NewCMProfileIterateUPP e DisposeCMProfileIterateUPP


    // 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;
    }

Acontece que não precisa NewCMProfileIterateUPP e DisposeCMProfileIterateUPP para que eles não foram substituídos com qualquer coisa, tanto quanto eu posso dizer. Em vez disso, você pode definir a função de retorno com uma assinatura que partidas profileIterate, acima. Você pode, então, basta passar a função de retorno diretamente para CMIterateColorSyncFolder.

Eu testei as minhas alterações no ImageApp no Mac OS X 10.5 ele funciona como esperado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top