2010-02-18 41 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