The JUCE cross-platform C++ framework, with DISTRHO/KXStudio specific changes
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

81 lines
2.9KB

  1. /*
  2. ==============================================================================
  3. This file is part of the JUCE library - "Jules' Utility Class Extensions"
  4. Copyright 2004-11 by Raw Material Software Ltd.
  5. ------------------------------------------------------------------------------
  6. JUCE can be redistributed and/or modified under the terms of the GNU General
  7. Public License (Version 2), as published by the Free Software Foundation.
  8. A copy of the license is included in the JUCE distribution, or can be found
  9. online at www.gnu.org/licenses.
  10. JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
  11. WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
  12. A PARTICULAR PURPOSE. See the GNU General Public License for more details.
  13. ------------------------------------------------------------------------------
  14. To release a closed-source product which uses JUCE, commercial licenses are
  15. available: visit www.rawmaterialsoftware.com/juce for more information.
  16. ==============================================================================
  17. */
  18. #if _MSC_VER
  19. #include <windows.h>
  20. #endif
  21. // Your project must contain an AppConfig.h file with your project-specific settings in it,
  22. // and your header search path must make it accessible to the module's files.
  23. #include "AppConfig.h"
  24. #include "../utility/juce_CheckSettingMacros.h"
  25. #include "juce_IncludeModuleHeaders.h"
  26. #if _MSC_VER
  27. #if JucePlugin_Build_RTAS
  28. extern "C" BOOL WINAPI DllMainRTAS (HINSTANCE, DWORD, LPVOID);
  29. #endif
  30. extern "C" BOOL WINAPI DllMain (HINSTANCE instance, DWORD reason, LPVOID reserved)
  31. {
  32. if (reason == DLL_PROCESS_ATTACH)
  33. Process::setCurrentModuleInstanceHandle (instance);
  34. #if JucePlugin_Build_RTAS
  35. if (GetModuleHandleA ("DAE.DLL") != 0)
  36. {
  37. #if JucePlugin_Build_AAX
  38. if (! File::getSpecialLocation (File::currentExecutableFile).hasFileExtension ("aaxplugin"))
  39. #endif
  40. return DllMainRTAS (instance, reason, reserved);
  41. }
  42. #endif
  43. (void) reserved;
  44. return TRUE;
  45. }
  46. #endif
  47. //==============================================================================
  48. /** Somewhere in the codebase of your plugin, you need to implement this function
  49. and make it return a new instance of the filter subclass that you're building.
  50. */
  51. extern AudioProcessor* JUCE_CALLTYPE createPluginFilter();
  52. AudioProcessor* JUCE_CALLTYPE createPluginFilterOfType (AudioProcessor::WrapperType type)
  53. {
  54. AudioProcessor::setTypeOfNextNewPlugin (type);
  55. AudioProcessor* const pluginInstance = createPluginFilter();
  56. AudioProcessor::setTypeOfNextNewPlugin (AudioProcessor::wrapperType_Undefined);
  57. // your createPluginFilter() method must return an object!
  58. jassert (pluginInstance != nullptr && pluginInstance->wrapperType == type);
  59. return pluginInstance;
  60. }