mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-02-05 03:50:07 +00:00
69 lines
4 KiB
Text
69 lines
4 KiB
Text
|
|
|
|
Juce Browser Plugin Framework
|
|
=============================
|
|
|
|
These classes let you easily turn a normal Juce component into a Mac/Windows NPAPI plugin
|
|
for use in Firefox, Safari, Chrome, etc., and/or an ActiveX plugin for IE.
|
|
|
|
To create your plugin, your code just needs to implement the createBrowserPlugin() function
|
|
to return a subclass of BrowserPluginComponent, and this acts as the plugin window.
|
|
|
|
To communicate with javascript running in the host webpage, the 'var' and 'DynamicObject' juce
|
|
classes emulate javascript objects, so you can create a javascript object that represents
|
|
your plugin, and the webpage can invoke methods and access properties on this object. To
|
|
get bi-directional communication between the plugin and webpage, your webpage can simply
|
|
pass its own object to your plugin, and the plugin can call methods on this object to invoke
|
|
javascript actions.
|
|
|
|
In a similar style to audio plugins, your project has to contain a BrowserPluginCharacteristics.h
|
|
file that defines various properties of the plugin.
|
|
|
|
|
|
Building a Mac NPAPI Plugin with XCode
|
|
--------------------------------------
|
|
|
|
- Create a new "CFPlugin Bundle" project
|
|
- Add the juce wrapper source files to the project (have a look at the demo project to
|
|
find out which files this includes).
|
|
- Set up all the usual frameworks, etc, like you would for any other juce project.
|
|
- In the project or target settings, change the "Wrapper Extension" to "plugin"
|
|
- In your target, add a build phase "Build ResourceManager resources", and add the juce_NPAPI_MacResource.r file
|
|
to this step.
|
|
- Check that your info.plist contains the same items as the demo plugin, because these needs to be set for the
|
|
browser to recognise it as a plugin. In particular, the "Bundle OS Type Code" should be set to BRPL.
|
|
- The finished bundle needs to be copied into "/Library/Internet Plug-Ins", so you might want to set up a
|
|
post-build copy step to do this automatically
|
|
|
|
|
|
Building a Windows NPAPI plugin in Visual Studio
|
|
------------------------------------------------
|
|
|
|
- Create a new project to build a win32 DLL
|
|
- Add the juce wrapper source files to the project (have a look at the demo project to
|
|
find out which files this includes).
|
|
- Your compiled plugin DLL must begin with the letters 'np' (in lower case) for it to be recognised as
|
|
a plugin, so you should make sure your target settings reflect this.
|
|
- To include the BrowserPluginCharacteristics.h file, you may need to add an include path to wherever this
|
|
file lives in your project. Don't use a global include path for this - just add it to the project's
|
|
search paths (both the c++ include paths and the resource include paths)
|
|
- (Refer to the normal juce instructions for setting up other project settings such as which c++ libs to link to etc)
|
|
- The finished plugin needs to be copied into "C:\Program Files\Mozilla Firefox\plugins", so you might want
|
|
to add a post-build step to copy it
|
|
- Note that the "browser plugins/wrapper/npapi" folder contains a copy of some NPAPI header files. If you're
|
|
building a closed-source project, please check the licensing details in these files to make sure
|
|
you're not breaking any Mozilla licensing restictions.
|
|
|
|
|
|
Building a Windows ActiveX control for Internet Explorer
|
|
--------------------------------------------------------
|
|
|
|
- This is actually quite easy, because the same DLL that functions as an NPAPI plugin can
|
|
also be used as an ActiveX control.
|
|
- Just create a windows NPAPI plugin as described above, but add the juce_ActiveX_GlueCode.cpp
|
|
file to the project.
|
|
- In your BrowserPluginCharacteristics.h file, the JuceBrowserPlugin_ActiveXCLSID setting needs
|
|
to be given a unique GUID for your plugin.
|
|
- Because the plugin is a COM object, it doesn't matter where the DLL lives, but it needs to
|
|
be registered in the normal COM way, with regsvr32.exe. Note that on Vista, this command
|
|
needs to be run with administrator permissions for it to be able to write to the registry.
|