@@ -1,69 +0,0 @@ | |||
Juce Browser Plugin Framework | |||
============================= | |||
These classes let you wrap a normal Juce component as 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 need 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. |
@@ -1,44 +0,0 @@ | |||
#include "../../src/BrowserPluginCharacteristics.h" | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |||
<plist version="1.0"> | |||
<dict> | |||
<key>CFBundleDevelopmentRegion</key> | |||
<string>English</string> | |||
<key>CFBundleExecutable</key> | |||
<string>${EXECUTABLE_NAME}</string> | |||
<key>CFBundleName</key> | |||
<string>${PRODUCT_NAME}</string> | |||
<key>CFBundleIconFile</key> | |||
<string></string> | |||
<key>CFBundleIdentifier</key> | |||
<string>com.yourcompany.${PRODUCT_NAME:identifier}</string> | |||
<key>CFBundleInfoDictionaryVersion</key> | |||
<string>6.0</string> | |||
<key>CFBundlePackageType</key> | |||
<string>BRPL</string> | |||
<key>CFBundleSignature</key> | |||
<string>????</string> | |||
<key>CFBundleVersion</key> | |||
<string>1.0</string> | |||
<key>CFBundleDisplayName</key> | |||
<string>JuceBrowserPlugin_Desc</string> | |||
<key>CFBundleShortVersionString</key> | |||
<string>JuceBrowserPlugin_Version</string> | |||
<key>WebPluginName</key> | |||
<string>JuceBrowserPlugin_Name</string> | |||
<key>WebPluginMIMETypes</key> | |||
<dict> | |||
<key>application/npjucedemo-plugin</key> | |||
<dict> | |||
<key>WebPluginExtensions</key> | |||
<array> | |||
<string>jucedemo</string> | |||
</array> | |||
<key>WebPluginTypeDescription</key> | |||
<string>Juce Demo</string> | |||
</dict> | |||
</dict> | |||
</dict> | |||
</plist> |
@@ -1,364 +0,0 @@ | |||
// !$*UTF8*$! | |||
{ | |||
archiveVersion = 1; | |||
classes = { | |||
}; | |||
objectVersion = 45; | |||
objects = { | |||
/* Begin PBXBuildFile section */ | |||
8415443F13DED0F800D66D72 /* juce_NPAPI_MacResource.r in Rez */ = {isa = PBXBuildFile; fileRef = 8415443313DEB84C00D66D72 /* juce_NPAPI_MacResource.r */; }; | |||
8415449013DEEF0D00D66D72 /* juce_browser_plugin_wrapper.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8415448213DEEF0D00D66D72 /* juce_browser_plugin_wrapper.mm */; }; | |||
8415449213DEEF0D00D66D72 /* juce_core_wrapper.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8415448413DEEF0D00D66D72 /* juce_core_wrapper.mm */; }; | |||
8415449413DEEF0D00D66D72 /* juce_data_structures_wrapper.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8415448613DEEF0D00D66D72 /* juce_data_structures_wrapper.mm */; }; | |||
8415449613DEEF0D00D66D72 /* juce_events_wrapper.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8415448813DEEF0D00D66D72 /* juce_events_wrapper.mm */; }; | |||
8415449813DEEF0D00D66D72 /* juce_graphics_wrapper.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8415448A13DEEF0D00D66D72 /* juce_graphics_wrapper.mm */; }; | |||
8415449A13DEEF0D00D66D72 /* juce_gui_basics_wrapper.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8415448C13DEEF0D00D66D72 /* juce_gui_basics_wrapper.mm */; }; | |||
841544B613DEF1DC00D66D72 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 841544B513DEF1DC00D66D72 /* QuartzCore.framework */; }; | |||
8415454713DF243A00D66D72 /* JuceBrowserPluginDemo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 842CC42E0FA5BD57008C7970 /* JuceBrowserPluginDemo.cpp */; }; | |||
842CC8E20FA5D26A008C7970 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 842CC8D30FA5D26A008C7970 /* Carbon.framework */; }; | |||
842CC8E30FA5D26A008C7970 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 842CC8D40FA5D26A008C7970 /* CoreFoundation.framework */; }; | |||
842CC8E40FA5D26A008C7970 /* DiscRecording.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 842CC8D50FA5D26A008C7970 /* DiscRecording.framework */; }; | |||
842CC8E50FA5D26A008C7970 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 842CC8D60FA5D26A008C7970 /* Cocoa.framework */; }; | |||
842CC8E60FA5D26A008C7970 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 842CC8D70FA5D26A008C7970 /* WebKit.framework */; }; | |||
842CC8E70FA5D26A008C7970 /* AGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 842CC8D80FA5D26A008C7970 /* AGL.framework */; }; | |||
842CC8E80FA5D26A008C7970 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 842CC8D90FA5D26A008C7970 /* CoreAudio.framework */; }; | |||
842CC8E90FA5D26A008C7970 /* CoreMIDI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 842CC8DA0FA5D26A008C7970 /* CoreMIDI.framework */; }; | |||
842CC8EA0FA5D26A008C7970 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 842CC8DB0FA5D26A008C7970 /* IOKit.framework */; }; | |||
842CC8EB0FA5D26A008C7970 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 842CC8DC0FA5D26A008C7970 /* OpenGL.framework */; }; | |||
842CC8EC0FA5D26A008C7970 /* QuickTime.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 842CC8DD0FA5D26A008C7970 /* QuickTime.framework */; }; | |||
842CC8ED0FA5D26A008C7970 /* QTKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 842CC8DE0FA5D26A008C7970 /* QTKit.framework */; }; | |||
842CC8EE0FA5D26A008C7970 /* CoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 842CC8DF0FA5D26A008C7970 /* CoreServices.framework */; }; | |||
842CC8EF0FA5D26A008C7970 /* ApplicationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 842CC8E00FA5D26A008C7970 /* ApplicationServices.framework */; }; | |||
842CC8F00FA5D26A008C7970 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 842CC8E10FA5D26A008C7970 /* CoreFoundation.framework */; }; | |||
842CCB300FA5F201008C7970 /* JuceBrowserPluginDemo.plugin in CopyFiles */ = {isa = PBXBuildFile; fileRef = 842CC9360FA5D51F008C7970 /* JuceBrowserPluginDemo.plugin */; }; | |||
/* End PBXBuildFile section */ | |||
/* Begin PBXCopyFilesBuildPhase section */ | |||
842CCB3F0FA5F204008C7970 /* CopyFiles */ = { | |||
isa = PBXCopyFilesBuildPhase; | |||
buildActionMask = 2147483647; | |||
dstPath = "/Library/Internet Plug-Ins"; | |||
dstSubfolderSpec = 0; | |||
files = ( | |||
842CCB300FA5F201008C7970 /* JuceBrowserPluginDemo.plugin in CopyFiles */, | |||
); | |||
runOnlyForDeploymentPostprocessing = 0; | |||
}; | |||
/* End PBXCopyFilesBuildPhase section */ | |||
/* Begin PBXFileReference section */ | |||
8415442C13DEB82500D66D72 /* How to build a browser plugin.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = "How to build a browser plugin.txt"; path = "../../How to build a browser plugin.txt"; sourceTree = SOURCE_ROOT; }; | |||
8415442E13DEB84C00D66D72 /* juce_ActiveX_GlueCode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ActiveX_GlueCode.cpp; path = ../../../../modules/juce_browser_plugin_client/wrapper/juce_ActiveX_GlueCode.cpp; sourceTree = SOURCE_ROOT; }; | |||
8415442F13DEB84C00D66D72 /* juce_BrowserPluginComponent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = juce_BrowserPluginComponent.h; path = ../../../../modules/juce_browser_plugin_client/wrapper/juce_BrowserPluginComponent.h; sourceTree = SOURCE_ROOT; }; | |||
8415443113DEB84C00D66D72 /* juce_NPAPI_GlueCode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = juce_NPAPI_GlueCode.cpp; path = ../../../../modules/juce_browser_plugin_client/wrapper/juce_NPAPI_GlueCode.cpp; sourceTree = SOURCE_ROOT; }; | |||
8415443313DEB84C00D66D72 /* juce_NPAPI_MacResource.r */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.rez; name = juce_NPAPI_MacResource.r; path = ../../../../modules/juce_browser_plugin_client/wrapper/juce_NPAPI_MacResource.r; sourceTree = SOURCE_ROOT; }; | |||
8415448213DEEF0D00D66D72 /* juce_browser_plugin_wrapper.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_browser_plugin_wrapper.mm; path = ../../src/juce_browser_plugin_wrapper.mm; sourceTree = SOURCE_ROOT; }; | |||
8415448413DEEF0D00D66D72 /* juce_core_wrapper.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_core_wrapper.mm; path = ../../src/juce_core_wrapper.mm; sourceTree = SOURCE_ROOT; }; | |||
8415448613DEEF0D00D66D72 /* juce_data_structures_wrapper.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_data_structures_wrapper.mm; path = ../../src/juce_data_structures_wrapper.mm; sourceTree = SOURCE_ROOT; }; | |||
8415448813DEEF0D00D66D72 /* juce_events_wrapper.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_events_wrapper.mm; path = ../../src/juce_events_wrapper.mm; sourceTree = SOURCE_ROOT; }; | |||
8415448A13DEEF0D00D66D72 /* juce_graphics_wrapper.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_graphics_wrapper.mm; path = ../../src/juce_graphics_wrapper.mm; sourceTree = SOURCE_ROOT; }; | |||
8415448C13DEEF0D00D66D72 /* juce_gui_basics_wrapper.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = juce_gui_basics_wrapper.mm; path = ../../src/juce_gui_basics_wrapper.mm; sourceTree = SOURCE_ROOT; }; | |||
841544B513DEF1DC00D66D72 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = /System/Library/Frameworks/QuartzCore.framework; sourceTree = "<absolute>"; }; | |||
842CC42E0FA5BD57008C7970 /* JuceBrowserPluginDemo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JuceBrowserPluginDemo.cpp; path = ../../src/JuceBrowserPluginDemo.cpp; sourceTree = SOURCE_ROOT; }; | |||
842CC4310FA5BD57008C7970 /* BrowserPluginCharacteristics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BrowserPluginCharacteristics.h; path = ../../src/BrowserPluginCharacteristics.h; sourceTree = SOURCE_ROOT; }; | |||
842CC8D30FA5D26A008C7970 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = "<absolute>"; }; | |||
842CC8D40FA5D26A008C7970 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = /System/Library/Frameworks/CoreFoundation.framework; sourceTree = "<absolute>"; }; | |||
842CC8D50FA5D26A008C7970 /* DiscRecording.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = DiscRecording.framework; path = /System/Library/Frameworks/DiscRecording.framework; sourceTree = "<absolute>"; }; | |||
842CC8D60FA5D26A008C7970 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; }; | |||
842CC8D70FA5D26A008C7970 /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = /System/Library/Frameworks/WebKit.framework; sourceTree = "<absolute>"; }; | |||
842CC8D80FA5D26A008C7970 /* AGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AGL.framework; path = /System/Library/Frameworks/AGL.framework; sourceTree = "<absolute>"; }; | |||
842CC8D90FA5D26A008C7970 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = /System/Library/Frameworks/CoreAudio.framework; sourceTree = "<absolute>"; }; | |||
842CC8DA0FA5D26A008C7970 /* CoreMIDI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMIDI.framework; path = /System/Library/Frameworks/CoreMIDI.framework; sourceTree = "<absolute>"; }; | |||
842CC8DB0FA5D26A008C7970 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = /System/Library/Frameworks/IOKit.framework; sourceTree = "<absolute>"; }; | |||
842CC8DC0FA5D26A008C7970 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = "<absolute>"; }; | |||
842CC8DD0FA5D26A008C7970 /* QuickTime.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuickTime.framework; path = /System/Library/Frameworks/QuickTime.framework; sourceTree = "<absolute>"; }; | |||
842CC8DE0FA5D26A008C7970 /* QTKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QTKit.framework; path = /System/Library/Frameworks/QTKit.framework; sourceTree = "<absolute>"; }; | |||
842CC8DF0FA5D26A008C7970 /* CoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreServices.framework; path = /System/Library/Frameworks/CoreServices.framework; sourceTree = "<absolute>"; }; | |||
842CC8E00FA5D26A008C7970 /* ApplicationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ApplicationServices.framework; path = /System/Library/Frameworks/ApplicationServices.framework; sourceTree = "<absolute>"; }; | |||
842CC8E10FA5D26A008C7970 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = /System/Library/Frameworks/CoreFoundation.framework; sourceTree = "<absolute>"; }; | |||
842CC9360FA5D51F008C7970 /* JuceBrowserPluginDemo.plugin */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = JuceBrowserPluginDemo.plugin; sourceTree = BUILT_PRODUCTS_DIR; }; | |||
842CC93B0FA5D5D1008C7970 /* test.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; name = test.html; path = ../../test.html; sourceTree = SOURCE_ROOT; }; | |||
84F71BD913E6E86D00AFBCF3 /* AppConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppConfig.h; path = ../../src/AppConfig.h; sourceTree = SOURCE_ROOT; }; | |||
84F71BDC13E6E8D900AFBCF3 /* JuceHeader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JuceHeader.h; path = ../../src/JuceHeader.h; sourceTree = SOURCE_ROOT; }; | |||
8D576317048677EA00EA77CD /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; | |||
/* End PBXFileReference section */ | |||
/* Begin PBXFrameworksBuildPhase section */ | |||
8D576313048677EA00EA77CD /* Frameworks */ = { | |||
isa = PBXFrameworksBuildPhase; | |||
buildActionMask = 2147483647; | |||
files = ( | |||
842CC8E20FA5D26A008C7970 /* Carbon.framework in Frameworks */, | |||
842CC8E30FA5D26A008C7970 /* CoreFoundation.framework in Frameworks */, | |||
842CC8E40FA5D26A008C7970 /* DiscRecording.framework in Frameworks */, | |||
842CC8E50FA5D26A008C7970 /* Cocoa.framework in Frameworks */, | |||
842CC8E60FA5D26A008C7970 /* WebKit.framework in Frameworks */, | |||
842CC8E70FA5D26A008C7970 /* AGL.framework in Frameworks */, | |||
842CC8E80FA5D26A008C7970 /* CoreAudio.framework in Frameworks */, | |||
842CC8E90FA5D26A008C7970 /* CoreMIDI.framework in Frameworks */, | |||
842CC8EA0FA5D26A008C7970 /* IOKit.framework in Frameworks */, | |||
842CC8EB0FA5D26A008C7970 /* OpenGL.framework in Frameworks */, | |||
842CC8EC0FA5D26A008C7970 /* QuickTime.framework in Frameworks */, | |||
842CC8ED0FA5D26A008C7970 /* QTKit.framework in Frameworks */, | |||
842CC8EE0FA5D26A008C7970 /* CoreServices.framework in Frameworks */, | |||
842CC8EF0FA5D26A008C7970 /* ApplicationServices.framework in Frameworks */, | |||
842CC8F00FA5D26A008C7970 /* CoreFoundation.framework in Frameworks */, | |||
841544B613DEF1DC00D66D72 /* QuartzCore.framework in Frameworks */, | |||
); | |||
runOnlyForDeploymentPostprocessing = 0; | |||
}; | |||
/* End PBXFrameworksBuildPhase section */ | |||
/* Begin PBXGroup section */ | |||
089C166AFE841209C02AAC07 /* JuceBrowserPluginDemo */ = { | |||
isa = PBXGroup; | |||
children = ( | |||
08FB77AFFE84173DC02AAC07 /* Source */, | |||
089C167CFE841241C02AAC07 /* Resources */, | |||
089C1671FE841209C02AAC07 /* External Frameworks and Libraries */, | |||
842CC9370FA5D51F008C7970 /* Products */, | |||
); | |||
name = JuceBrowserPluginDemo; | |||
sourceTree = "<group>"; | |||
}; | |||
089C1671FE841209C02AAC07 /* External Frameworks and Libraries */ = { | |||
isa = PBXGroup; | |||
children = ( | |||
842CC8D30FA5D26A008C7970 /* Carbon.framework */, | |||
842CC8D40FA5D26A008C7970 /* CoreFoundation.framework */, | |||
842CC8D50FA5D26A008C7970 /* DiscRecording.framework */, | |||
842CC8D60FA5D26A008C7970 /* Cocoa.framework */, | |||
842CC8D70FA5D26A008C7970 /* WebKit.framework */, | |||
842CC8D80FA5D26A008C7970 /* AGL.framework */, | |||
842CC8D90FA5D26A008C7970 /* CoreAudio.framework */, | |||
842CC8DA0FA5D26A008C7970 /* CoreMIDI.framework */, | |||
842CC8DB0FA5D26A008C7970 /* IOKit.framework */, | |||
842CC8DC0FA5D26A008C7970 /* OpenGL.framework */, | |||
842CC8DD0FA5D26A008C7970 /* QuickTime.framework */, | |||
842CC8DE0FA5D26A008C7970 /* QTKit.framework */, | |||
842CC8DF0FA5D26A008C7970 /* CoreServices.framework */, | |||
842CC8E00FA5D26A008C7970 /* ApplicationServices.framework */, | |||
842CC8E10FA5D26A008C7970 /* CoreFoundation.framework */, | |||
841544B513DEF1DC00D66D72 /* QuartzCore.framework */, | |||
); | |||
name = "External Frameworks and Libraries"; | |||
sourceTree = "<group>"; | |||
}; | |||
089C167CFE841241C02AAC07 /* Resources */ = { | |||
isa = PBXGroup; | |||
children = ( | |||
8D576317048677EA00EA77CD /* Info.plist */, | |||
); | |||
name = Resources; | |||
sourceTree = "<group>"; | |||
}; | |||
08FB77AFFE84173DC02AAC07 /* Source */ = { | |||
isa = PBXGroup; | |||
children = ( | |||
8415442C13DEB82500D66D72 /* How to build a browser plugin.txt */, | |||
842CC93B0FA5D5D1008C7970 /* test.html */, | |||
842CC4130FA5BB01008C7970 /* wrapper code */, | |||
842CC42E0FA5BD57008C7970 /* JuceBrowserPluginDemo.cpp */, | |||
842CC4310FA5BD57008C7970 /* BrowserPluginCharacteristics.h */, | |||
); | |||
name = Source; | |||
sourceTree = "<group>"; | |||
}; | |||
842CC4130FA5BB01008C7970 /* wrapper code */ = { | |||
isa = PBXGroup; | |||
children = ( | |||
84F71BDC13E6E8D900AFBCF3 /* JuceHeader.h */, | |||
84F71BD913E6E86D00AFBCF3 /* AppConfig.h */, | |||
8415448213DEEF0D00D66D72 /* juce_browser_plugin_wrapper.mm */, | |||
8415448413DEEF0D00D66D72 /* juce_core_wrapper.mm */, | |||
8415448613DEEF0D00D66D72 /* juce_data_structures_wrapper.mm */, | |||
8415448813DEEF0D00D66D72 /* juce_events_wrapper.mm */, | |||
8415448A13DEEF0D00D66D72 /* juce_graphics_wrapper.mm */, | |||
8415448C13DEEF0D00D66D72 /* juce_gui_basics_wrapper.mm */, | |||
8415442E13DEB84C00D66D72 /* juce_ActiveX_GlueCode.cpp */, | |||
8415442F13DEB84C00D66D72 /* juce_BrowserPluginComponent.h */, | |||
8415443113DEB84C00D66D72 /* juce_NPAPI_GlueCode.cpp */, | |||
8415443313DEB84C00D66D72 /* juce_NPAPI_MacResource.r */, | |||
); | |||
name = "wrapper code"; | |||
sourceTree = "<group>"; | |||
}; | |||
842CC9370FA5D51F008C7970 /* Products */ = { | |||
isa = PBXGroup; | |||
children = ( | |||
842CC9360FA5D51F008C7970 /* JuceBrowserPluginDemo.plugin */, | |||
); | |||
name = Products; | |||
sourceTree = "<group>"; | |||
}; | |||
/* End PBXGroup section */ | |||
/* Begin PBXNativeTarget section */ | |||
8D57630D048677EA00EA77CD /* JuceBrowserPluginDemo */ = { | |||
isa = PBXNativeTarget; | |||
buildConfigurationList = 1DEB911A08733D790010E9CD /* Build configuration list for PBXNativeTarget "JuceBrowserPluginDemo" */; | |||
buildPhases = ( | |||
842CC9580FA5D939008C7970 /* Rez */, | |||
8D57630F048677EA00EA77CD /* Resources */, | |||
8D576311048677EA00EA77CD /* Sources */, | |||
8D576313048677EA00EA77CD /* Frameworks */, | |||
842CCB3F0FA5F204008C7970 /* CopyFiles */, | |||
); | |||
buildRules = ( | |||
); | |||
dependencies = ( | |||
); | |||
name = JuceBrowserPluginDemo; | |||
productInstallPath = "$(HOME)/Library/Bundles"; | |||
productName = JuceBrowserPluginDemo; | |||
productReference = 842CC9360FA5D51F008C7970 /* JuceBrowserPluginDemo.plugin */; | |||
productType = "com.apple.product-type.bundle"; | |||
}; | |||
/* End PBXNativeTarget section */ | |||
/* Begin PBXProject section */ | |||
089C1669FE841209C02AAC07 /* Project object */ = { | |||
isa = PBXProject; | |||
buildConfigurationList = 1DEB911E08733D790010E9CD /* Build configuration list for PBXProject "JuceBrowserPluginDemo" */; | |||
compatibilityVersion = "Xcode 3.1"; | |||
developmentRegion = English; | |||
hasScannedForEncodings = 1; | |||
knownRegions = ( | |||
English, | |||
Japanese, | |||
French, | |||
German, | |||
); | |||
mainGroup = 089C166AFE841209C02AAC07 /* JuceBrowserPluginDemo */; | |||
productRefGroup = 842CC9370FA5D51F008C7970 /* Products */; | |||
projectDirPath = ""; | |||
projectRoot = ""; | |||
targets = ( | |||
8D57630D048677EA00EA77CD /* JuceBrowserPluginDemo */, | |||
); | |||
}; | |||
/* End PBXProject section */ | |||
/* Begin PBXResourcesBuildPhase section */ | |||
8D57630F048677EA00EA77CD /* Resources */ = { | |||
isa = PBXResourcesBuildPhase; | |||
buildActionMask = 2147483647; | |||
files = ( | |||
); | |||
runOnlyForDeploymentPostprocessing = 0; | |||
}; | |||
/* End PBXResourcesBuildPhase section */ | |||
/* Begin PBXRezBuildPhase section */ | |||
842CC9580FA5D939008C7970 /* Rez */ = { | |||
isa = PBXRezBuildPhase; | |||
buildActionMask = 2147483647; | |||
files = ( | |||
8415443F13DED0F800D66D72 /* juce_NPAPI_MacResource.r in Rez */, | |||
); | |||
runOnlyForDeploymentPostprocessing = 0; | |||
}; | |||
/* End PBXRezBuildPhase section */ | |||
/* Begin PBXSourcesBuildPhase section */ | |||
8D576311048677EA00EA77CD /* Sources */ = { | |||
isa = PBXSourcesBuildPhase; | |||
buildActionMask = 2147483647; | |||
files = ( | |||
8415449013DEEF0D00D66D72 /* juce_browser_plugin_wrapper.mm in Sources */, | |||
8415449213DEEF0D00D66D72 /* juce_core_wrapper.mm in Sources */, | |||
8415449413DEEF0D00D66D72 /* juce_data_structures_wrapper.mm in Sources */, | |||
8415449613DEEF0D00D66D72 /* juce_events_wrapper.mm in Sources */, | |||
8415449813DEEF0D00D66D72 /* juce_graphics_wrapper.mm in Sources */, | |||
8415449A13DEEF0D00D66D72 /* juce_gui_basics_wrapper.mm in Sources */, | |||
8415454713DF243A00D66D72 /* JuceBrowserPluginDemo.cpp in Sources */, | |||
); | |||
runOnlyForDeploymentPostprocessing = 0; | |||
}; | |||
/* End PBXSourcesBuildPhase section */ | |||
/* Begin XCBuildConfiguration section */ | |||
1DEB911B08733D790010E9CD /* Debug */ = { | |||
isa = XCBuildConfiguration; | |||
buildSettings = { | |||
ALWAYS_SEARCH_USER_PATHS = NO; | |||
COPY_PHASE_STRIP = NO; | |||
GCC_DYNAMIC_NO_PIC = NO; | |||
GCC_ENABLE_FIX_AND_CONTINUE = YES; | |||
GCC_MODEL_TUNING = G5; | |||
GCC_OPTIMIZATION_LEVEL = 0; | |||
GCC_PREPROCESSOR_DEFINITIONS = "DEBUG=1"; | |||
INFOPLIST_FILE = Info.plist; | |||
INFOPLIST_PREPROCESS = YES; | |||
INSTALL_PATH = "$(HOME)/Library/Bundles"; | |||
PRODUCT_NAME = JuceBrowserPluginDemo; | |||
WRAPPER_EXTENSION = plugin; | |||
}; | |||
name = Debug; | |||
}; | |||
1DEB911C08733D790010E9CD /* Release */ = { | |||
isa = XCBuildConfiguration; | |||
buildSettings = { | |||
ALWAYS_SEARCH_USER_PATHS = NO; | |||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; | |||
GCC_MODEL_TUNING = G5; | |||
GCC_PREPROCESSOR_DEFINITIONS = "NDEBUG=1"; | |||
INFOPLIST_FILE = Info.plist; | |||
INFOPLIST_PREPROCESS = YES; | |||
INSTALL_PATH = "$(HOME)/Library/Bundles"; | |||
PRODUCT_NAME = JuceBrowserPluginDemo; | |||
WRAPPER_EXTENSION = plugin; | |||
}; | |||
name = Release; | |||
}; | |||
1DEB911F08733D790010E9CD /* Debug */ = { | |||
isa = XCBuildConfiguration; | |||
buildSettings = { | |||
ARCHS = "$(ARCHS_STANDARD_32_BIT)"; | |||
GCC_C_LANGUAGE_STANDARD = c99; | |||
GCC_OPTIMIZATION_LEVEL = 0; | |||
GCC_WARN_ABOUT_RETURN_TYPE = YES; | |||
GCC_WARN_UNUSED_VARIABLE = YES; | |||
ONLY_ACTIVE_ARCH = YES; | |||
PREBINDING = NO; | |||
}; | |||
name = Debug; | |||
}; | |||
1DEB912008733D790010E9CD /* Release */ = { | |||
isa = XCBuildConfiguration; | |||
buildSettings = { | |||
ARCHS = "$(ARCHS_STANDARD_32_BIT)"; | |||
GCC_C_LANGUAGE_STANDARD = c99; | |||
GCC_WARN_ABOUT_RETURN_TYPE = YES; | |||
GCC_WARN_UNUSED_VARIABLE = YES; | |||
PREBINDING = NO; | |||
SDKROOT = macosx10.5; | |||
}; | |||
name = Release; | |||
}; | |||
/* End XCBuildConfiguration section */ | |||
/* Begin XCConfigurationList section */ | |||
1DEB911A08733D790010E9CD /* Build configuration list for PBXNativeTarget "JuceBrowserPluginDemo" */ = { | |||
isa = XCConfigurationList; | |||
buildConfigurations = ( | |||
1DEB911B08733D790010E9CD /* Debug */, | |||
1DEB911C08733D790010E9CD /* Release */, | |||
); | |||
defaultConfigurationIsVisible = 0; | |||
defaultConfigurationName = Release; | |||
}; | |||
1DEB911E08733D790010E9CD /* Build configuration list for PBXProject "JuceBrowserPluginDemo" */ = { | |||
isa = XCConfigurationList; | |||
buildConfigurations = ( | |||
1DEB911F08733D790010E9CD /* Debug */, | |||
1DEB912008733D790010E9CD /* Release */, | |||
); | |||
defaultConfigurationIsVisible = 0; | |||
defaultConfigurationName = Release; | |||
}; | |||
/* End XCConfigurationList section */ | |||
}; | |||
rootObject = 089C1669FE841209C02AAC07 /* Project object */; | |||
} |
@@ -1,20 +0,0 @@ | |||
 | |||
Microsoft Visual Studio Solution File, Format Version 10.00 | |||
# Visual C++ Express 2008 | |||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "JuceBrowserPluginDemo", "JuceBrowserPluginDemo.vcproj", "{865C6463-5BC7-4F36-8667-FF9221C32797}" | |||
EndProject | |||
Global | |||
GlobalSection(SolutionConfigurationPlatforms) = preSolution | |||
Debug|Win32 = Debug|Win32 | |||
Release|Win32 = Release|Win32 | |||
EndGlobalSection | |||
GlobalSection(ProjectConfigurationPlatforms) = postSolution | |||
{865C6463-5BC7-4F36-8667-FF9221C32797}.Debug|Win32.ActiveCfg = Debug|Win32 | |||
{865C6463-5BC7-4F36-8667-FF9221C32797}.Debug|Win32.Build.0 = Debug|Win32 | |||
{865C6463-5BC7-4F36-8667-FF9221C32797}.Release|Win32.ActiveCfg = Release|Win32 | |||
{865C6463-5BC7-4F36-8667-FF9221C32797}.Release|Win32.Build.0 = Release|Win32 | |||
EndGlobalSection | |||
GlobalSection(SolutionProperties) = preSolution | |||
HideSolutionNode = FALSE | |||
EndGlobalSection | |||
EndGlobal |
@@ -1,232 +0,0 @@ | |||
<?xml version="1.0" encoding="Windows-1252"?> | |||
<VisualStudioProject | |||
ProjectType="Visual C++" | |||
Version="9.00" | |||
Name="JuceBrowserPluginDemo" | |||
ProjectGUID="{865C6463-5BC7-4F36-8667-FF9221C32797}" | |||
RootNamespace="JuceBrowserPluginDemo" | |||
Keyword="Win32Proj" | |||
TargetFrameworkVersion="196613" | |||
> | |||
<Platforms> | |||
<Platform | |||
Name="Win32" | |||
/> | |||
</Platforms> | |||
<ToolFiles> | |||
</ToolFiles> | |||
<Configurations> | |||
<Configuration | |||
Name="Debug|Win32" | |||
OutputDirectory="$(SolutionDir)$(ConfigurationName)" | |||
IntermediateDirectory="$(ConfigurationName)" | |||
ConfigurationType="2" | |||
CharacterSet="1" | |||
> | |||
<Tool | |||
Name="VCPreBuildEventTool" | |||
/> | |||
<Tool | |||
Name="VCCustomBuildTool" | |||
/> | |||
<Tool | |||
Name="VCXMLDataGeneratorTool" | |||
/> | |||
<Tool | |||
Name="VCWebServiceProxyGeneratorTool" | |||
/> | |||
<Tool | |||
Name="VCMIDLTool" | |||
/> | |||
<Tool | |||
Name="VCCLCompilerTool" | |||
Optimization="0" | |||
AdditionalIncludeDirectories="../../src" | |||
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;JUCEBROWSERPLUGINDEMO_EXPORTS" | |||
MinimalRebuild="false" | |||
BasicRuntimeChecks="3" | |||
RuntimeLibrary="1" | |||
UsePrecompiledHeader="0" | |||
WarningLevel="3" | |||
DebugInformationFormat="4" | |||
/> | |||
<Tool | |||
Name="VCManagedResourceCompilerTool" | |||
/> | |||
<Tool | |||
Name="VCResourceCompilerTool" | |||
AdditionalIncludeDirectories="../../src" | |||
/> | |||
<Tool | |||
Name="VCPreLinkEventTool" | |||
/> | |||
<Tool | |||
Name="VCLinkerTool" | |||
OutputFile="$(OutDir)\np$(ProjectName).dll" | |||
LinkIncremental="2" | |||
GenerateDebugInformation="true" | |||
SubSystem="2" | |||
TargetMachine="1" | |||
/> | |||
<Tool | |||
Name="VCALinkTool" | |||
/> | |||
<Tool | |||
Name="VCManifestTool" | |||
/> | |||
<Tool | |||
Name="VCXDCMakeTool" | |||
/> | |||
<Tool | |||
Name="VCBscMakeTool" | |||
/> | |||
<Tool | |||
Name="VCFxCopTool" | |||
/> | |||
<Tool | |||
Name="VCAppVerifierTool" | |||
/> | |||
<Tool | |||
Name="VCPostBuildEventTool" | |||
CommandLine="copy /Y "$(TargetPath)" "C:\Program Files\Mozilla Firefox\plugins"" | |||
/> | |||
</Configuration> | |||
<Configuration | |||
Name="Release|Win32" | |||
OutputDirectory="$(SolutionDir)$(ConfigurationName)" | |||
IntermediateDirectory="$(ConfigurationName)" | |||
ConfigurationType="2" | |||
CharacterSet="1" | |||
WholeProgramOptimization="1" | |||
> | |||
<Tool | |||
Name="VCPreBuildEventTool" | |||
/> | |||
<Tool | |||
Name="VCCustomBuildTool" | |||
/> | |||
<Tool | |||
Name="VCXMLDataGeneratorTool" | |||
/> | |||
<Tool | |||
Name="VCWebServiceProxyGeneratorTool" | |||
/> | |||
<Tool | |||
Name="VCMIDLTool" | |||
/> | |||
<Tool | |||
Name="VCCLCompilerTool" | |||
Optimization="2" | |||
EnableIntrinsicFunctions="true" | |||
AdditionalIncludeDirectories="../../src" | |||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;JUCEBROWSERPLUGINDEMO_EXPORTS" | |||
RuntimeLibrary="0" | |||
EnableFunctionLevelLinking="true" | |||
UsePrecompiledHeader="0" | |||
WarningLevel="3" | |||
DebugInformationFormat="3" | |||
/> | |||
<Tool | |||
Name="VCManagedResourceCompilerTool" | |||
/> | |||
<Tool | |||
Name="VCResourceCompilerTool" | |||
AdditionalIncludeDirectories="../../src" | |||
/> | |||
<Tool | |||
Name="VCPreLinkEventTool" | |||
/> | |||
<Tool | |||
Name="VCLinkerTool" | |||
OutputFile="$(OutDir)\np$(ProjectName).dll" | |||
LinkIncremental="1" | |||
GenerateDebugInformation="true" | |||
SubSystem="2" | |||
OptimizeReferences="2" | |||
EnableCOMDATFolding="2" | |||
TargetMachine="1" | |||
/> | |||
<Tool | |||
Name="VCALinkTool" | |||
/> | |||
<Tool | |||
Name="VCManifestTool" | |||
/> | |||
<Tool | |||
Name="VCXDCMakeTool" | |||
/> | |||
<Tool | |||
Name="VCBscMakeTool" | |||
/> | |||
<Tool | |||
Name="VCFxCopTool" | |||
/> | |||
<Tool | |||
Name="VCAppVerifierTool" | |||
/> | |||
<Tool | |||
Name="VCPostBuildEventTool" | |||
/> | |||
</Configuration> | |||
</Configurations> | |||
<References> | |||
</References> | |||
<Files> | |||
<Filter | |||
Name="Source Files" | |||
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx" | |||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}" | |||
> | |||
<File | |||
RelativePath="..\..\src\BrowserPluginCharacteristics.h" | |||
> | |||
</File> | |||
<File | |||
RelativePath="..\..\src\JuceBrowserPluginDemo.cpp" | |||
> | |||
</File> | |||
<File | |||
RelativePath="..\..\src\JuceHeader.h" | |||
> | |||
</File> | |||
<Filter | |||
Name="wrapper" | |||
> | |||
<File | |||
RelativePath="..\..\src\AppConfig.h" | |||
> | |||
</File> | |||
<File | |||
RelativePath="..\..\src\juce_browser_plugin_wrapper.cpp" | |||
> | |||
</File> | |||
<File | |||
RelativePath="..\..\src\juce_core_wrapper.cpp" | |||
> | |||
</File> | |||
<File | |||
RelativePath="..\..\src\juce_data_structures_wrapper.cpp" | |||
> | |||
</File> | |||
<File | |||
RelativePath="..\..\src\juce_events_wrapper.cpp" | |||
> | |||
</File> | |||
<File | |||
RelativePath="..\..\src\juce_graphics_wrapper.cpp" | |||
> | |||
</File> | |||
<File | |||
RelativePath="..\..\src\juce_gui_basics_wrapper.cpp" | |||
> | |||
</File> | |||
<File | |||
RelativePath="..\..\..\..\modules\juce_browser_plugin_client\wrapper\juce_NPAPI_WinResource.rc" | |||
> | |||
</File> | |||
</Filter> | |||
</Filter> | |||
</Files> | |||
<Globals> | |||
</Globals> | |||
</VisualStudioProject> |
@@ -1,6 +0,0 @@ | |||
#define JUCE_MODULE_AVAILABLE_juce_core 1 | |||
#include "BrowserPluginCharacteristics.h" | |||
@@ -1,42 +0,0 @@ | |||
/* | |||
============================================================================== | |||
This file contains values that describe your plugin's behaviour. | |||
============================================================================== | |||
*/ | |||
//============================================================================== | |||
#define JuceBrowserPlugin_Company "ROLI Ltd" | |||
#define JuceBrowserPlugin_Name "Juce Plugin Demo!" | |||
#define JuceBrowserPlugin_Desc "Juce Browser Plugin Demo!" | |||
//============================================================================== | |||
/** This should be the same version number, in different forms.. | |||
*/ | |||
#define JuceBrowserPlugin_Version "0.1" | |||
#define JuceBrowserPlugin_WinVersion 0, 0, 1, 0 | |||
//============================================================================== | |||
/** This is the mime-type of the plugin. | |||
In your HTML, this is the 'type' parameter of the embed tag, e.g. | |||
<embed id="plugin" type="application/npjucedemo-plugin" width=90% height=500> | |||
These two macros must be the same string, but the "raw" one shouldn't have quotes around it. | |||
*/ | |||
#define JuceBrowserPlugin_MimeType_Raw application/npjucedemo-plugin | |||
#define JuceBrowserPlugin_MimeType "application/npjucedemo-plugin" | |||
//============================================================================== | |||
/** Because plugins are associated with a file-type, this is the suffix of the file type the plugin | |||
can open. If you don't need to use it, just use a made-up name here. | |||
*/ | |||
#define JuceBrowserPlugin_FileSuffix ".jucedemo" | |||
/** If you're building an activeX version, you'll need to create a unique GUID for | |||
your plugin. Use a tool like uuidgen.exe to create this. | |||
*/ | |||
#define JuceBrowserPlugin_ActiveXCLSID "F683B990-3ADF-11DE-BDFE-F9CB55D89593" |
@@ -1,141 +0,0 @@ | |||
/* | |||
============================================================================== | |||
This file is part of the JUCE library. | |||
Copyright (c) 2015 - ROLI Ltd. | |||
Permission is granted to use this software under the terms of either: | |||
a) the GPL v2 (or any later version) | |||
b) the Affero GPL v3 | |||
Details of these licenses can be found at: www.gnu.org/licenses | |||
JUCE is distributed in the hope that it will be useful, but WITHOUT ANY | |||
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR | |||
A PARTICULAR PURPOSE. See the GNU General Public License for more details. | |||
------------------------------------------------------------------------------ | |||
To release a closed-source product which uses JUCE, commercial licenses are | |||
available: visit www.juce.com for more information. | |||
============================================================================== | |||
*/ | |||
#include "JuceHeader.h" | |||
//============================================================================== | |||
/** | |||
This is our top-level component for our plugin.. | |||
*/ | |||
class JuceDemoBrowserPlugin : public BrowserPluginComponent, | |||
public Button::Listener | |||
{ | |||
public: | |||
JuceDemoBrowserPlugin() | |||
: textBox (String::empty), | |||
button ("Send a message to the webpage") | |||
{ | |||
addAndMakeVisible (textBox); | |||
textBox.setMultiLine (true); | |||
textBox.setBounds (8, 8, 300, 300); | |||
addAndMakeVisible (button); | |||
button.setBounds (320, 8, 180, 22); | |||
button.addListener (this); | |||
button.setEnabled (false); | |||
ourJavascriptObject = new DemoBrowserObject (this); | |||
textBox.setText (SystemStats::getJUCEVersion() + "\n\n" | |||
+ "Browser: " + getBrowserVersion()); | |||
} | |||
var getJavascriptObject() | |||
{ | |||
// The browser calls this to get the javascript object that represents our plugin.. | |||
return ourJavascriptObject; | |||
} | |||
void paint (Graphics& g) | |||
{ | |||
g.fillAll (Colours::lightblue); | |||
} | |||
void setJavascriptObjectFromBrowser (var callbackObject) | |||
{ | |||
javascriptObjectFromBrowser = callbackObject; | |||
button.setEnabled (javascriptObjectFromBrowser.isObject()); | |||
} | |||
void buttonClicked (Button*) | |||
{ | |||
javascriptObjectFromBrowser.call ("printmessage", "This is a message sent from the plugin..."); | |||
} | |||
var ourJavascriptObject; | |||
var javascriptObjectFromBrowser; | |||
TextEditor textBox; | |||
TextButton button; | |||
//============================================================================== | |||
/** This is the javascript object that the browser uses when the webpage accesses | |||
methods or properties on our plugin object. | |||
*/ | |||
class DemoBrowserObject : public DynamicObject | |||
{ | |||
public: | |||
DemoBrowserObject (JuceDemoBrowserPlugin* bp) : owner (bp) | |||
{ | |||
// Add a couple of methods to our object.. | |||
setMethod ("printText", printText); | |||
setMethod ("popUpMessageBox", popUpMessageBox); | |||
setMethod ("registerCallbackObject", registerCallbackObject); | |||
// Add some value properties that the webpage can access | |||
setProperty ("property1", "testing testing..."); | |||
setProperty ("property2", 12345678.0); | |||
} | |||
//============================================================================== | |||
// These methods are called by javascript in the webpage... | |||
static var printText (const var::NativeFunctionArgs& args) | |||
{ | |||
if (DemoBrowserObject* b = dynamic_cast<DemoBrowserObject*> (args.thisObject.getObject())) | |||
if (args.numArguments > 0) | |||
b->owner->textBox.setText (b->owner->textBox.getText() + "\n" + args.arguments[0].toString()); | |||
return "text was printed ok!"; | |||
} | |||
static var popUpMessageBox (const var::NativeFunctionArgs& args) | |||
{ | |||
if (DemoBrowserObject* b = dynamic_cast<DemoBrowserObject*> (args.thisObject.getObject())) | |||
if (args.numArguments > 0) | |||
AlertWindow::showMessageBox (AlertWindow::InfoIcon, | |||
"A message from the webpage", | |||
args.arguments[0].toString(), | |||
String::empty, b->owner); | |||
return var(); | |||
} | |||
static var registerCallbackObject (const var::NativeFunctionArgs& args) | |||
{ | |||
if (DemoBrowserObject* b = dynamic_cast<DemoBrowserObject*> (args.thisObject.getObject())) | |||
if (args.numArguments > 0) | |||
b->owner->setJavascriptObjectFromBrowser (args.arguments[0]); | |||
return var(); | |||
} | |||
//============================================================================== | |||
JuceDemoBrowserPlugin* owner; | |||
}; | |||
}; | |||
BrowserPluginComponent* JUCE_CALLTYPE createBrowserPlugin() | |||
{ | |||
return new JuceDemoBrowserPlugin(); | |||
} |
@@ -1,18 +0,0 @@ | |||
/* | |||
============================================================================== | |||
This file contains values that describe your plugin's behaviour. | |||
============================================================================== | |||
*/ | |||
#include "AppConfig.h" | |||
#include "../../../modules/juce_browser_plugin_client/juce_browser_plugin.h" | |||
#if ! DONT_SET_USING_JUCE_NAMESPACE | |||
/* If you're not mixing JUCE with other libraries, then this will obviously save | |||
a lot of typing, but can be disabled by setting DONT_SET_USING_JUCE_NAMESPACE. | |||
*/ | |||
using namespace juce; | |||
#endif |
@@ -1,4 +0,0 @@ | |||
#include "AppConfig.h" | |||
#include "../../../modules/juce_browser_plugin_client/juce_browser_plugin.cpp" | |||
@@ -1,4 +0,0 @@ | |||
#include "AppConfig.h" | |||
#include "../../../modules/juce_browser_plugin_client/juce_browser_plugin.cpp" | |||
@@ -1,15 +0,0 @@ | |||
/* | |||
IMPORTANT! This file is auto-generated each time you save your | |||
project - if you alter its contents, your changes may be overwritten! | |||
This file pulls in a module's source code, and builds it using the settings | |||
defined in AppConfig.h. | |||
If you want to change the method by which Juce is linked into your app, use the | |||
Jucer to change it, rather than trying to edit this file directly. | |||
*/ | |||
#include "AppConfig.h" | |||
#include "../../../modules/juce_core/juce_core.cpp" |
@@ -1,15 +0,0 @@ | |||
/* | |||
IMPORTANT! This file is auto-generated each time you save your | |||
project - if you alter its contents, your changes may be overwritten! | |||
This file pulls in a module's source code, and builds it using the settings | |||
defined in AppConfig.h. | |||
If you want to change the method by which Juce is linked into your app, use the | |||
Jucer to change it, rather than trying to edit this file directly. | |||
*/ | |||
#include "AppConfig.h" | |||
#include "../../../modules/juce_core/juce_core.cpp" |
@@ -1,15 +0,0 @@ | |||
/* | |||
IMPORTANT! This file is auto-generated each time you save your | |||
project - if you alter its contents, your changes may be overwritten! | |||
This file pulls in a module's source code, and builds it using the settings | |||
defined in AppConfig.h. | |||
If you want to change the method by which Juce is linked into your app, use the | |||
Jucer to change it, rather than trying to edit this file directly. | |||
*/ | |||
#include "AppConfig.h" | |||
#include "../../../modules/juce_data_structures/juce_data_structures.cpp" |
@@ -1,15 +0,0 @@ | |||
/* | |||
IMPORTANT! This file is auto-generated each time you save your | |||
project - if you alter its contents, your changes may be overwritten! | |||
This file pulls in a module's source code, and builds it using the settings | |||
defined in AppConfig.h. | |||
If you want to change the method by which Juce is linked into your app, use the | |||
Jucer to change it, rather than trying to edit this file directly. | |||
*/ | |||
#include "AppConfig.h" | |||
#include "../../../modules/juce_data_structures/juce_data_structures.cpp" |
@@ -1,15 +0,0 @@ | |||
/* | |||
IMPORTANT! This file is auto-generated each time you save your | |||
project - if you alter its contents, your changes may be overwritten! | |||
This file pulls in a module's source code, and builds it using the settings | |||
defined in AppConfig.h. | |||
If you want to change the method by which Juce is linked into your app, use the | |||
Jucer to change it, rather than trying to edit this file directly. | |||
*/ | |||
#include "AppConfig.h" | |||
#include "../../../modules/juce_events/juce_events.cpp" |
@@ -1,15 +0,0 @@ | |||
/* | |||
IMPORTANT! This file is auto-generated each time you save your | |||
project - if you alter its contents, your changes may be overwritten! | |||
This file pulls in a module's source code, and builds it using the settings | |||
defined in AppConfig.h. | |||
If you want to change the method by which Juce is linked into your app, use the | |||
Jucer to change it, rather than trying to edit this file directly. | |||
*/ | |||
#include "AppConfig.h" | |||
#include "../../../modules/juce_events/juce_events.cpp" |
@@ -1,15 +0,0 @@ | |||
/* | |||
IMPORTANT! This file is auto-generated each time you save your | |||
project - if you alter its contents, your changes may be overwritten! | |||
This file pulls in a module's source code, and builds it using the settings | |||
defined in AppConfig.h. | |||
If you want to change the method by which Juce is linked into your app, use the | |||
Jucer to change it, rather than trying to edit this file directly. | |||
*/ | |||
#include "AppConfig.h" | |||
#include "../../../modules/juce_graphics/juce_graphics.cpp" |
@@ -1,15 +0,0 @@ | |||
/* | |||
IMPORTANT! This file is auto-generated each time you save your | |||
project - if you alter its contents, your changes may be overwritten! | |||
This file pulls in a module's source code, and builds it using the settings | |||
defined in AppConfig.h. | |||
If you want to change the method by which Juce is linked into your app, use the | |||
Jucer to change it, rather than trying to edit this file directly. | |||
*/ | |||
#include "AppConfig.h" | |||
#include "../../../modules/juce_graphics/juce_graphics.cpp" |
@@ -1,15 +0,0 @@ | |||
/* | |||
IMPORTANT! This file is auto-generated each time you save your | |||
project - if you alter its contents, your changes may be overwritten! | |||
This file pulls in a module's source code, and builds it using the settings | |||
defined in AppConfig.h. | |||
If you want to change the method by which Juce is linked into your app, use the | |||
Jucer to change it, rather than trying to edit this file directly. | |||
*/ | |||
#include "AppConfig.h" | |||
#include "../../../modules/juce_gui_basics/juce_gui_basics.cpp" |
@@ -1,15 +0,0 @@ | |||
/* | |||
IMPORTANT! This file is auto-generated each time you save your | |||
project - if you alter its contents, your changes may be overwritten! | |||
This file pulls in a module's source code, and builds it using the settings | |||
defined in AppConfig.h. | |||
If you want to change the method by which Juce is linked into your app, use the | |||
Jucer to change it, rather than trying to edit this file directly. | |||
*/ | |||
#include "AppConfig.h" | |||
#include "../../../modules/juce_gui_basics/juce_gui_basics.cpp" |
@@ -1,69 +0,0 @@ | |||
<HTML><HEAD><TITLE>Juce Plugin Test</TITLE></HEAD> | |||
<BODY> | |||
<center> | |||
<script> | |||
function printmessage(arg) | |||
{ | |||
document.getElementById ("result").innerHTML += "<p>" + arg + "</p>"; | |||
} | |||
function getPlugin() | |||
{ | |||
return document.getElementById ("plugin"); | |||
} | |||
function showAMessage() | |||
{ | |||
var response = getPlugin().printText ("This is a message sent from the website's javascript..."); | |||
printmessage (response); | |||
} | |||
function popUpMessageBox() | |||
{ | |||
// fetch a couple of properties from the plugin and tell the plugin to show them in a pop-up box.. | |||
getPlugin().popUpMessageBox ("property1 = " + getPlugin().property1 | |||
+ "\nproperty2 = " + getPlugin().property2); | |||
} | |||
// callbacks from plugin... | |||
function WebpageCallbacks() | |||
{ | |||
this.printmessage = printmessage; | |||
} | |||
function sendCallbackObjectToPlugin() | |||
{ | |||
// This gives the plugin an object containing methods that it can call, so that it | |||
// can trigger events in the webpage.. | |||
getPlugin().registerCallbackObject (new WebpageCallbacks()); | |||
} | |||
</script> | |||
<script> | |||
if (navigator.appName == "Microsoft Internet Explorer") | |||
{ | |||
document.write('<object id="plugin" type="application/npjucedemo-plugin" classid="CLSID:F683B990-3ADF-11DE-BDFE-F9CB55D89593" width="80%" height="400"></object>'); | |||
} | |||
else | |||
{ | |||
document.write('<embed id="plugin" src="" type="application/npjucedemo-plugin" width="80%" height="400"></embed>'); | |||
} | |||
</script> | |||
<noscript> | |||
<embed id="plugin" src="" type="application/npjucedemo-plugin" width="80%" height="400"></embed> | |||
</noscript> | |||
<br> | |||
<form name="formname"> | |||
<input type=button value="Tell the plugin to show a message" onclick='showAMessage()'> | |||
<input type=button value="Tell the plugin to show a pop-up" onclick='popUpMessageBox()'> | |||
<input type=button value="Pass a callback object to the plugin" onclick='sendCallbackObjectToPlugin()'> | |||
</form> | |||
<div id="result"></div> | |||
</center> | |||
</BODY></HTML> |