/* * Carla Native Plugin UI launcher * Copyright (C) 2018 Filipe Coelho * * 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 "dgl/Application.hpp" #include "dgl/ImageWidgets.hpp" #include "CarlaNative.h" #include "ui_launcher_res.hpp" // -------------------------------------------------------------------------------------------------------------------- START_NAMESPACE_DGL class CarlaButtonWidget : public Widget, private ImageButton::Callback { public: CarlaButtonWidget(Window& parent, const NativePluginDescriptor* const d, const NativePluginHandle h) : Widget(parent), startButtonImage(ui_launcher_res::carla_uiData, ui_launcher_res::carla_uiWidth, ui_launcher_res::carla_uiHeight, GL_BGR), startButton(this, startButtonImage), descriptor(d), handle(h) { startButton.setCallback(this); setSize(startButtonImage.getSize()); parent.setSize(startButtonImage.getSize()); } protected: void onDisplay() override { } void imageButtonClicked(ImageButton* imageButton, int) override { if (imageButton != &startButton) return; if (descriptor->ui_show != nullptr) descriptor->ui_show(handle, true); } private: Image startButtonImage; ImageButton startButton; const NativePluginDescriptor* const descriptor; const NativePluginHandle handle; }; END_NAMESPACE_DGL // -------------------------------------------------------------------------------------------------------------------- struct CarlaUILauncher { DGL_NAMESPACE::Application app; DGL_NAMESPACE::Window window; CarlaButtonWidget widget; CarlaUILauncher(const intptr_t winId, const NativePluginDescriptor* const d, const NativePluginHandle h) : app(), window(app, winId), widget(window, d, h) {} }; CarlaUILauncher* createUILauncher(const intptr_t winId, const NativePluginDescriptor* const d, const NativePluginHandle h) { return new CarlaUILauncher(winId, d, h); } void idleUILauncher(CarlaUILauncher* const ui) { ui->app.idle(); } void destoryUILauncher(CarlaUILauncher* const ui) { delete ui; } // --------------------------------------------------------------------------------------------------------------------