2010-02-18 44 views
0

我正在尝试为mac重新编写一个旧的图像查看插件。旧版本使用QuickDraw(我说这是旧的)和资源(真的很旧),所以它不适用于Firefox 3.6(这就是为什么我正在重写它)示例mac Firefox插件?

我知道一些目标C ,所以我想我会重新写这个,使用新的Mac例程和笔尖等。但是,我不知道如何开始。我已经获得了Mozilla源代码的BasicPlugin示例,所以我知道如何创建带入口点的插件等。但是,我不知道如何创建笔尖,以及如何使Obj-C与入口点交互,等等

有谁知道更高级的样本比Mac的BasicPlugin.bundle? (最好简单一点,我可以看看它,了解它...)

谢谢。

回答

2

可悲的是我并不知道任何好的“中间”的例子。但是,整合Obj-C并不困难。因此,以下是对需要完成的工作的简要概述。

您可以在同一个项目中使用Obj-C和C/C++ - 源代码,只是建议在某种程度上将它们分开。这可以例如通过使源文件具有入口点和其他NPAPI接口保持普通的C或C++文件和例如从那里转发呼叫到插件。
Opaque pointers有助于保持清洁的分离,参见例如here

您插件的主要变化包括切换到不同的绘图和事件模型。这些必须在NPP_New()here协商是一个绘图模型的例子。使用Cocoa并支持64位环境时,您需要使用Cocoa event model

吸引你应该能够使用NSGraphicsContextfrom the CGContextRef,然后得出一个NSViewin the context UI元素。另请参阅this post及其后续内容中提供的详细信息。

+0

其实我的主要问题(目前)是将笔尖整合到项目中。特别是,如何让NSView进入我的插件空间......我有NPAPI的东西,一个简单的extern“C”应该照顾任何事情,如果它甚至需要...... – 2010-02-19 14:33:43

+0

你不需要在MacOSX上获得子窗口,所以没有什么可以附加你的NSView。你为什么不能直接画出你得到的上下文? – 2010-02-19 20:55:33

+0

但我怎么得到按钮,滚动条等?我认为我得到的上下文是Quartz/Carbon上下文,但我不认为这是支持的,因此,我有点困惑......或者,我不知道如何绘制上下文.. 。 – 2010-02-19 21:14:32