Signed-off-by: falkTX <falktx@gmail.com>tags/v2.1-alpha1-winvst
@@ -0,0 +1,40 @@ | |||||
/* | |||||
* Carla AU Plugin | |||||
* Copyright (C) 2014 Filipe Coelho <falktx@falktx.com> | |||||
* | |||||
* This program is free software; you can redistribute it and/or | |||||
* modify it under the terms of the GNU General Public License as | |||||
* published by the Free Software Foundation; either version 2 of | |||||
* the License, or any later version. | |||||
* | |||||
* This program 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. | |||||
* | |||||
* For a full copy of the GNU General Public License see the doc/GPL.txt file. | |||||
*/ | |||||
#include "CarlaPlugin.hpp" | |||||
#include "CarlaEngine.hpp" | |||||
#include "CarlaUtils.hpp" | |||||
CARLA_BACKEND_START_NAMESPACE | |||||
// ------------------------------------------------------------------------------------------------------------------- | |||||
CarlaPlugin* CarlaPlugin::newAU(const Initializer& init) | |||||
{ | |||||
carla_debug("CarlaPlugin::newAU({%p, \"%s\", \"%s\", \"%s\", " P_INT64 "})", init.engine, init.filename, init.name, init.label, init.uniqueId); | |||||
#if defined(CARLA_OS_MAC) | |||||
return newJuce(init, "AU"); | |||||
#else | |||||
init.engine->setLastError("AU support not available"); | |||||
return nullptr; | |||||
#endif | |||||
} | |||||
// ------------------------------------------------------------------------------------------------------------------- | |||||
CARLA_BACKEND_END_NAMESPACE |
@@ -0,0 +1,40 @@ | |||||
/* | |||||
* Carla VST3 Plugin | |||||
* Copyright (C) 2014 Filipe Coelho <falktx@falktx.com> | |||||
* | |||||
* This program is free software; you can redistribute it and/or | |||||
* modify it under the terms of the GNU General Public License as | |||||
* published by the Free Software Foundation; either version 2 of | |||||
* the License, or any later version. | |||||
* | |||||
* This program 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. | |||||
* | |||||
* For a full copy of the GNU General Public License see the doc/GPL.txt file. | |||||
*/ | |||||
#include "CarlaPlugin.hpp" | |||||
#include "CarlaEngine.hpp" | |||||
#include "CarlaUtils.hpp" | |||||
CARLA_BACKEND_START_NAMESPACE | |||||
// ------------------------------------------------------------------------------------------------------------------- | |||||
CarlaPlugin* CarlaPlugin::newVST3(const Initializer& init) | |||||
{ | |||||
carla_debug("CarlaPlugin::newVST3({%p, \"%s\", \"%s\", " P_INT64 "})", init.engine, init.filename, init.name, init.uniqueId); | |||||
#ifdef USING_JUCE | |||||
return newJuce(init, "VST3"); | |||||
#else | |||||
init.engine->setLastError("VST3 support not available"); | |||||
return nullptr; | |||||
#endif | |||||
} | |||||
// ------------------------------------------------------------------------------------------------------------------- | |||||
CARLA_BACKEND_END_NAMESPACE |
@@ -0,0 +1,116 @@ | |||||
/* | |||||
* Juce Plugin Window Helper | |||||
* Copyright (C) 2013-2014 Filipe Coelho <falktx@falktx.com> | |||||
* | |||||
* This program is free software; you can redistribute it and/or | |||||
* modify it under the terms of the GNU General Public License as | |||||
* published by the Free Software Foundation; either version 2 of | |||||
* the License, or any later version. | |||||
* | |||||
* This program 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. | |||||
* | |||||
* For a full copy of the GNU General Public License see the doc/GPL.txt file. | |||||
*/ | |||||
#ifndef JUCE_PLUGIN_WINDOW_HPP_INCLUDED | |||||
#define JUCE_PLUGIN_WINDOW_HPP_INCLUDED | |||||
#include "CarlaJuceUtils.hpp" | |||||
#include "juce_gui_basics/juce_gui_basics.h" | |||||
#ifdef HAVE_X11 | |||||
# include <X11/Xlib.h> | |||||
#endif | |||||
// ----------------------------------------------------------------------- | |||||
namespace juce { | |||||
#ifdef HAVE_X11 | |||||
extern Display* display; | |||||
#endif | |||||
class JucePluginWindow : public DocumentWindow | |||||
{ | |||||
public: | |||||
JucePluginWindow() | |||||
: DocumentWindow("JucePluginWindow", Colour(50, 50, 200), DocumentWindow::closeButton, false), | |||||
fClosed(false) | |||||
{ | |||||
setVisible(false); | |||||
//setAlwaysOnTop(true); | |||||
setOpaque(true); | |||||
setResizable(false, false); | |||||
setUsingNativeTitleBar(true); | |||||
} | |||||
void show(Component* const comp, const bool useContentOwned = false) | |||||
{ | |||||
fClosed = false; | |||||
centreWithSize(comp->getWidth(), comp->getHeight()); | |||||
if (useContentOwned) | |||||
setContentOwned(comp, false); | |||||
else | |||||
setContentNonOwned(comp, true); | |||||
if (! isOnDesktop()) | |||||
addToDesktop(); | |||||
setVisible(true); | |||||
} | |||||
void hide() | |||||
{ | |||||
setVisible(false); | |||||
if (isOnDesktop()) | |||||
removeFromDesktop(); | |||||
clearContentComponent(); | |||||
} | |||||
bool wasClosedByUser() const noexcept | |||||
{ | |||||
return fClosed; | |||||
} | |||||
void setTransientWinId(const uintptr_t winId) const | |||||
{ | |||||
CARLA_SAFE_ASSERT_RETURN(winId != 0,); | |||||
#ifdef HAVE_X11 | |||||
CARLA_SAFE_ASSERT_RETURN(display != nullptr,); | |||||
::Window window = (::Window)getWindowHandle(); | |||||
CARLA_SAFE_ASSERT_RETURN(window != 0,); | |||||
XSetTransientForHint(display, window, static_cast<Window>(winId)); | |||||
#endif | |||||
} | |||||
protected: | |||||
void closeButtonPressed() override | |||||
{ | |||||
fClosed = true; | |||||
} | |||||
private: | |||||
volatile bool fClosed; | |||||
CARLA_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(JucePluginWindow) | |||||
}; | |||||
} // namespace juce | |||||
using juce::JucePluginWindow; | |||||
// ----------------------------------------------------------------------- | |||||
#endif // JUCE_PLUGIN_WINDOW_HPP_INCLUDED |