代码之家  ›  专栏  ›  技术社区  ›  Paul J. Lucas

用未弃用的64位代码替换CMNewProfileSearch

  •  1
  • Paul J. Lucas  · 技术社区  · 15 年前

    我有使用 CMNewProfileSearch 要查找颜色配置文件,请在系统上进行迭代,以获取它们的名称和完整路径。不幸地 CMNewProfileSearch

    在阅读ColorSync Manager 2.5参考资料时,似乎迭代安装的颜色配置文件的新方法是使用 CMIterateColorSyncFolder 作用

    1. 有没有办法代替我做我想做的事?
    2. 有人有样本代码吗?

    谢谢

    1 回复  |  直到 15 年前
        1
  •  1
  •   Naaff    15 年前
    1. ColorSync Manager Reference 他说:

      CMNewProfileSearch函数没有充分利用优化的配置文件 可从ColorSync 2.5版开始搜索。使用CMIterateColorSyncFolder

    2. CMIterateColorSyncFolder 这样做的方法。此外,它也是 方法

    3. Apple's ImageApp sample code :

    编辑:我已经修改了要删除的代码示例 NewCMProfileIterateUPP 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;
        }
    

    NewCMProfileIterateUPP DisposeCMProfileIterateUPP 据我所知,它们还没有被任何东西取代。相反,您可以使用匹配的签名定义回调函数 profileIterate 在上面然后,您可以直接将回调函数传递给 .

    ImageApp 在MacOSX10.5上,它可以正常工作。