objective-c – 如何实现基于Cocoa的Adobe Photoshop插件

栏目: Objective-C · 发布时间: 5年前

内容简介:翻译自:https://stackoverflow.com/questions/1108550/how-to-implement-a-cocoa-based-adobe-photoshop-plugin
Cocoa曾经使用 trick of putting a Cocoa bundle inside the main Carbon plugin bundle

在CS3上工作,从Carbon加载它并发出NSApplicationLoad().那是因为Photoshop CS3只是Carbon并用于卸载插件包.

Photoshop CS4使用Cocoa并在主线程上有自己的NSAutorelease池.

在Photoshop CS4上,由NSWindowController加载的非常简单的基于窗口的xibs / nib工作开箱即用.

但是只需在窗口上添加一个绑定到控件上就可以了,当你关闭窗口时,或者第二次使用插件时,或者甚至在关闭Photoshop本身时,你都会遇到有趣的崩溃.

为什么一切似乎都运行良好,直到我使用一些高级Cocoa功能?我被卡住了.

编辑:我真的发现自己解决了更广泛的问题“如何在Photoshop CS3 / CS4插件中使用Cocoa?”.见下文.

您必须创建一个包含您的nib和Cocoa代码的新的可装入捆绑包目标.将捆绑产品添加到插件的Copy Bundle Resources阶段.然后,加载带有一些控件的Cocoa窗口的过滤器插件的代码将是:
Boolean DoUI (void) {

    // Create the CF Cocoa bundle
    CFBundleRef pluginBundle;
    CFURLRef cocoaBundleURL;
    pluginBundle = CFBundleGetBundleWithIdentifier(CFSTR("com.example.plugin"));
    cocoaBundleURL = CFBundleCopyResourceURL(pluginBundle, 
                                             CFSTR("Cocoa_bundle"), 
                                             CFSTR("bundle"), 
                                             NULL);
    CFBundleRef cocoaBundleRef;
    cocoaBundleRef = CFBundleCreate(kCFAllocatorDefault, cocoaBundleURL);
    CFRelease(cocoaBundleURL);

    // start Cocoa (for CS3)
    NSApplicationLoad(); 

    NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];

    // load the cocoa bundle by identifier
    NSBundle* cocoaBundle;
    cocoaBundle = [NSBundle bundleWithIdentifier:@"com.example.plugin.cocoa"];

    // load the window controller from the bundle
    Class testControllerClass;
    testControllerClass = [cocoaBundle classNamed:@"MyWindowController"];

    MyWindowController* winController = [[testControllerClass alloc] init];
    [NSApp runModalForWindow:[winController window]];
    [[winController window] performClose:nil];
    [winController release];

    // release the bundle
    CFRelease(cocoaBundleRef);

    [pool release];

    return 1;
}

这是基于Craig Hockenberry bundle trick .我还在测试它,但它应该适用于CS3和CS4.

翻译自:https://stackoverflow.com/questions/1108550/how-to-implement-a-cocoa-based-adobe-photoshop-plugin


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Search User Interfaces

Search User Interfaces

Marti A. Hearst / Cambridge University Press / 2009-9-21 / USD 59.00

搜索引擎的本质是帮助用户更快、更方便、更有效地查找与获取所需信息。在不断改进搜索算法和提升性能(以技术为中心)的同时,关注用户的信息需求、搜寻行为、界面设计与交互模式是以用户为中心的一条并行发展思路。创新的搜索界面及其配套的交互机制对一项搜索服务的成功来说是至关重要的。Marti Hearst教授带来的这本新作《Search User Interfaces》即是后一条思路的研究成果,将信息检索与人......一起来看看 《Search User Interfaces》 这本书的介绍吧!

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具