diff --git a/modules/juce_browser_plugin_client/How to build a browser plugin.txt b/modules/juce_browser_plugin_client/How to build a browser plugin.txt index 82e15ea97a..d845e0d5c8 100644 --- a/modules/juce_browser_plugin_client/How to build a browser plugin.txt +++ b/modules/juce_browser_plugin_client/How to build a browser plugin.txt @@ -1,69 +1,68 @@ - - - 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. + + + 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. +- By default the build will produce an ActiveX plugin. To disable this, you can set JUCE_BUILD_ACTIVEX = 0 +- 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.