@@ -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> |