| @@ -21,6 +21,11 @@ ifeq ($(HAVE_DGL),true) | |||
| endif | |||
| plugins: libs | |||
| # glBars (needs OpenGL) | |||
| ifeq ($(HAVE_DGL),true) | |||
| $(MAKE) all -C plugins/glBars | |||
| endif | |||
| # Kars | |||
| $(MAKE) all -C plugins/Kars | |||
| @@ -40,7 +45,7 @@ plugins: libs | |||
| # Nekobi | |||
| $(MAKE) all -C plugins/Nekobi | |||
| # ProM (needs DGL + ProjectM) | |||
| # ProM (needs OpenGL + ProjectM) | |||
| ifeq ($(HAVE_DGL),true) | |||
| ifeq ($(HAVE_PROJM),true) | |||
| $(MAKE) all -C plugins/ProM | |||
| @@ -70,6 +75,9 @@ ifeq ($(HAVE_DGL),true) | |||
| endif | |||
| $(MAKE) clean -C dpf/utils/lv2-ttl-generator | |||
| # glBars | |||
| $(MAKE) clean -C plugins/glBars | |||
| # Kars | |||
| $(MAKE) clean -C plugins/Kars | |||
| @@ -1,6 +1,6 @@ | |||
| /* | |||
| * DISTRHO Plugin Framework (DPF) | |||
| * Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com> | |||
| * Copyright (C) 2012-2016 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| @@ -1,6 +1,6 @@ | |||
| /* | |||
| * DISTRHO Plugin Framework (DPF) | |||
| * Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com> | |||
| * Copyright (C) 2012-2016 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| @@ -1,6 +1,6 @@ | |||
| /* | |||
| * DISTRHO Plugin Framework (DPF) | |||
| * Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com> | |||
| * Copyright (C) 2012-2016 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| @@ -1,6 +1,6 @@ | |||
| /* | |||
| * DISTRHO Plugin Framework (DPF) | |||
| * Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com> | |||
| * Copyright (C) 2012-2016 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| @@ -1,6 +1,6 @@ | |||
| /* | |||
| * DISTRHO Plugin Framework (DPF) | |||
| * Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com> | |||
| * Copyright (C) 2012-2016 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| @@ -1,23 +0,0 @@ | |||
| /* | |||
| * DISTRHO Plugin Framework (DPF) | |||
| * Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| * permission notice appear in all copies. | |||
| * | |||
| * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD | |||
| * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN | |||
| * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL | |||
| * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER | |||
| * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN | |||
| * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |||
| */ | |||
| #ifndef DGL_IMAGE_ABOUT_WINDOW_HPP_INCLUDED | |||
| #define DGL_IMAGE_ABOUT_WINDOW_HPP_INCLUDED | |||
| #warning This is a deprecated file, please include ImageWidgets.hpp instead. | |||
| #include "ImageWidgets.hpp" | |||
| #endif // DGL_IMAGE_ABOUT_WINDOW_HPP_INCLUDED | |||
| @@ -1,23 +0,0 @@ | |||
| /* | |||
| * DISTRHO Plugin Framework (DPF) | |||
| * Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| * permission notice appear in all copies. | |||
| * | |||
| * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD | |||
| * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN | |||
| * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL | |||
| * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER | |||
| * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN | |||
| * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |||
| */ | |||
| #ifndef DGL_IMAGE_BUTTON_HPP_INCLUDED | |||
| #define DGL_IMAGE_BUTTON_HPP_INCLUDED | |||
| #warning This is a deprecated file, please include ImageWidgets.hpp instead. | |||
| #include "ImageWidgets.hpp" | |||
| #endif // DGL_IMAGE_BUTTON_HPP_INCLUDED | |||
| @@ -1,23 +0,0 @@ | |||
| /* | |||
| * DISTRHO Plugin Framework (DPF) | |||
| * Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| * permission notice appear in all copies. | |||
| * | |||
| * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD | |||
| * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN | |||
| * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL | |||
| * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER | |||
| * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN | |||
| * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |||
| */ | |||
| #ifndef DGL_IMAGE_KNOB_HPP_INCLUDED | |||
| #define DGL_IMAGE_KNOB_HPP_INCLUDED | |||
| #warning This is a deprecated file, please include ImageWidgets.hpp instead. | |||
| #include "ImageWidgets.hpp" | |||
| #endif // DGL_IMAGE_KNOB_HPP_INCLUDED | |||
| @@ -1,23 +0,0 @@ | |||
| /* | |||
| * DISTRHO Plugin Framework (DPF) | |||
| * Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| * permission notice appear in all copies. | |||
| * | |||
| * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD | |||
| * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN | |||
| * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL | |||
| * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER | |||
| * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN | |||
| * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |||
| */ | |||
| #ifndef DGL_IMAGE_SLIDER_HPP_INCLUDED | |||
| #define DGL_IMAGE_SLIDER_HPP_INCLUDED | |||
| #warning This is a deprecated file, please include ImageWidgets.hpp instead. | |||
| #include "ImageWidgets.hpp" | |||
| #endif // DGL_IMAGE_SLIDER_HPP_INCLUDED | |||
| @@ -1,23 +0,0 @@ | |||
| /* | |||
| * DISTRHO Plugin Framework (DPF) | |||
| * Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| * permission notice appear in all copies. | |||
| * | |||
| * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD | |||
| * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN | |||
| * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL | |||
| * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER | |||
| * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN | |||
| * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |||
| */ | |||
| #ifndef DGL_IMAGE_SWITCH_HPP_INCLUDED | |||
| #define DGL_IMAGE_SWITCH_HPP_INCLUDED | |||
| #warning This is a deprecated file, please include ImageWidgets.hpp instead. | |||
| #include "ImageWidgets.hpp" | |||
| #endif // DGL_IMAGE_SWITCH_HPP_INCLUDED | |||
| @@ -1,6 +1,6 @@ | |||
| /* | |||
| * DISTRHO Plugin Framework (DPF) | |||
| * Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com> | |||
| * Copyright (C) 2012-2016 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| @@ -12,9 +12,6 @@ BUILD_C_FLAGS += $(DGL_FLAGS) -I. -Isrc | |||
| BUILD_CXX_FLAGS += $(DGL_FLAGS) -I. -Isrc | |||
| LINK_FLAGS += $(DGL_LIBS) | |||
| # needed by oui-blendish | |||
| BUILD_CXX_FLAGS += -Wno-unused-parameter | |||
| # -------------------------------------------------------------- | |||
| OBJS = \ | |||
| @@ -24,7 +21,6 @@ OBJS = \ | |||
| src/Image.cpp.o \ | |||
| src/ImageWidgets.cpp.o \ | |||
| src/NanoVG.cpp.o \ | |||
| src/NanoWidgets.cpp.o \ | |||
| src/Resources.cpp.o \ | |||
| src/Widget.cpp.o | |||
| @@ -1,6 +1,6 @@ | |||
| /* | |||
| * DISTRHO Plugin Framework (DPF) | |||
| * Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com> | |||
| * Copyright (C) 2012-2016 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| @@ -1,77 +0,0 @@ | |||
| /* | |||
| * DISTRHO Plugin Framework (DPF) | |||
| * Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| * permission notice appear in all copies. | |||
| * | |||
| * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD | |||
| * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN | |||
| * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL | |||
| * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER | |||
| * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN | |||
| * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |||
| */ | |||
| #ifndef DGL_NANO_WIDGETS_HPP_INCLUDED | |||
| #define DGL_NANO_WIDGETS_HPP_INCLUDED | |||
| #include "NanoVG.hpp" | |||
| START_NAMESPACE_DGL | |||
| // ----------------------------------------------------------------------- | |||
| class BlendishWidget : public NanoWidget | |||
| { | |||
| public: | |||
| explicit BlendishWidget(Window& parent); | |||
| explicit BlendishWidget(NanoWidget* widget); | |||
| void loadSharedResources() override; | |||
| }; | |||
| // ----------------------------------------------------------------------- | |||
| class BlendishButton : public BlendishWidget | |||
| { | |||
| public: | |||
| class Callback | |||
| { | |||
| public: | |||
| virtual ~Callback() {} | |||
| virtual void blendishButtonClicked(BlendishButton* blendishButton, int button) = 0; | |||
| }; | |||
| explicit BlendishButton(Window& parent, const char* text = "", int iconId = -1); | |||
| explicit BlendishButton(NanoWidget* widget, const char* text = "", int iconId = -1); | |||
| ~BlendishButton() override; | |||
| int getIconId() const noexcept; | |||
| void setIconId(int iconId) noexcept; | |||
| const char* getText() const noexcept; | |||
| void setText(const char* text) noexcept; | |||
| void setCallback(Callback* callback) noexcept; | |||
| protected: | |||
| void onNanoDisplay() override; | |||
| bool onMouse(const MouseEvent&) override; | |||
| bool onMotion(const MotionEvent&) override; | |||
| private: | |||
| struct PrivateData; | |||
| PrivateData* const pData; | |||
| void _updateBounds(); | |||
| DISTRHO_LEAK_DETECTOR(BlendishButton) | |||
| }; | |||
| // ----------------------------------------------------------------------- | |||
| END_NAMESPACE_DGL | |||
| #endif // DGL_NANO_WIDGETS_HPP_INCLUDED | |||
| @@ -1,6 +1,6 @@ | |||
| /* | |||
| * DISTRHO Plugin Framework (DPF) | |||
| * Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com> | |||
| * Copyright (C) 2012-2016 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| @@ -1,6 +1,6 @@ | |||
| /* | |||
| * DISTRHO Plugin Framework (DPF) | |||
| * Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com> | |||
| * Copyright (C) 2012-2016 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| @@ -1,6 +1,6 @@ | |||
| /* | |||
| * DISTRHO Plugin Framework (DPF) | |||
| * Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com> | |||
| * Copyright (C) 2012-2016 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| @@ -1,6 +1,6 @@ | |||
| /* | |||
| * DISTRHO Plugin Framework (DPF) | |||
| * Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com> | |||
| * Copyright (C) 2012-2016 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| @@ -1,6 +1,6 @@ | |||
| /* | |||
| * DISTRHO Plugin Framework (DPF) | |||
| * Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com> | |||
| * Copyright (C) 2012-2016 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| @@ -1,6 +1,6 @@ | |||
| /* | |||
| * DISTRHO Plugin Framework (DPF) | |||
| * Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com> | |||
| * Copyright (C) 2012-2016 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| @@ -1,6 +1,6 @@ | |||
| /* | |||
| * DISTRHO Plugin Framework (DPF) | |||
| * Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com> | |||
| * Copyright (C) 2012-2016 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| @@ -18,7 +18,6 @@ | |||
| #define DGL_COMMON_HPP_INCLUDED | |||
| #include "../ImageWidgets.hpp" | |||
| #include "../NanoWidgets.hpp" | |||
| START_NAMESPACE_DGL | |||
| @@ -35,15 +34,13 @@ struct ButtonImpl { | |||
| int state; | |||
| Widget* self; | |||
| BlendishButton::Callback* callback_b; | |||
| ImageButton::Callback* callback_i; | |||
| ImageButton::Callback* callback_img; | |||
| ButtonImpl(Widget* const s) noexcept | |||
| : button(-1), | |||
| state(kStateNormal), | |||
| self(s), | |||
| callback_b(nullptr), | |||
| callback_i(nullptr) {} | |||
| callback_img(nullptr) {} | |||
| bool onMouse(const Widget::MouseEvent& ev) | |||
| { | |||
| @@ -68,10 +65,8 @@ struct ButtonImpl { | |||
| state = kStateHover; | |||
| self->repaint(); | |||
| if (callback_b != nullptr) | |||
| callback_b->blendishButtonClicked((BlendishButton*)self, button2); | |||
| if (callback_i != nullptr) | |||
| callback_i->imageButtonClicked((ImageButton*)self, button2); | |||
| if (callback_img != nullptr) | |||
| callback_img->imageButtonClicked((ImageButton*)self, button2); | |||
| return true; | |||
| } | |||
| @@ -1,6 +1,6 @@ | |||
| /* | |||
| * DISTRHO Plugin Framework (DPF) | |||
| * Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com> | |||
| * Copyright (C) 2012-2016 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| @@ -1,6 +1,6 @@ | |||
| /* | |||
| * DISTRHO Plugin Framework (DPF) | |||
| * Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com> | |||
| * Copyright (C) 2012-2016 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| @@ -1,6 +1,6 @@ | |||
| /* | |||
| * DISTRHO Plugin Framework (DPF) | |||
| * Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com> | |||
| * Copyright (C) 2012-2016 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| @@ -159,7 +159,7 @@ ImageButton::~ImageButton() | |||
| void ImageButton::setCallback(Callback* callback) noexcept | |||
| { | |||
| pData->impl.callback_i = callback; | |||
| pData->impl.callback_img = callback; | |||
| } | |||
| void ImageButton::onDisplay() | |||
| @@ -1,6 +1,6 @@ | |||
| /* | |||
| * DISTRHO Plugin Framework (DPF) | |||
| * Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com> | |||
| * Copyright (C) 2012-2016 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| @@ -1,152 +0,0 @@ | |||
| /* | |||
| * DISTRHO Plugin Framework (DPF) | |||
| * Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| * permission notice appear in all copies. | |||
| * | |||
| * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD | |||
| * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN | |||
| * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL | |||
| * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER | |||
| * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN | |||
| * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |||
| */ | |||
| #include "Common.hpp" | |||
| #include "Resources.hpp" | |||
| #define BLENDISH_IMPLEMENTATION | |||
| #include "nanovg/nanovg.h" | |||
| #include "oui-blendish/blendish.h" | |||
| #include "../distrho/extra/String.hpp" | |||
| START_NAMESPACE_DGL | |||
| // ----------------------------------------------------------------------- | |||
| BlendishWidget::BlendishWidget(Window& parent) | |||
| : NanoWidget(parent) | |||
| { | |||
| loadSharedResources(); | |||
| } | |||
| BlendishWidget::BlendishWidget(NanoWidget* widget) | |||
| : NanoWidget(widget) | |||
| { | |||
| loadSharedResources(); | |||
| } | |||
| void BlendishWidget::loadSharedResources() | |||
| { | |||
| if (nvgFindFont(fContext, NANOVG_DEJAVU_SANS_TTF) >= 0) | |||
| return; | |||
| using namespace dpf_resources; | |||
| bndSetFont(nvgCreateFontMem(fContext, NANOVG_DEJAVU_SANS_TTF, (const uchar*)dejavusans_ttf, dejavusans_ttf_size, 0)); | |||
| bndSetIconImage(nvgCreateImageMem(fContext, 0, (const uchar*)blender_icons16_png, blender_icons16_png_size)); | |||
| } | |||
| // ----------------------------------------------------------------------- | |||
| struct BlendishButton::PrivateData { | |||
| ButtonImpl impl; | |||
| int iconId; | |||
| DISTRHO_NAMESPACE::String text; | |||
| PrivateData(Widget* const s, const char* const t, const int i) noexcept | |||
| : impl(s), | |||
| iconId(i), | |||
| text(t) {} | |||
| DISTRHO_DECLARE_NON_COPY_STRUCT(PrivateData) | |||
| }; | |||
| // ----------------------------------------------------------------------- | |||
| BlendishButton::BlendishButton(Window& parent, const char* text, int iconId) | |||
| : BlendishWidget(parent), | |||
| pData(new PrivateData(this, text, iconId)) | |||
| { | |||
| _updateBounds(); | |||
| } | |||
| BlendishButton::BlendishButton(NanoWidget* widget, const char* text, int iconId) | |||
| : BlendishWidget(widget), | |||
| pData(new PrivateData(this, text, iconId)) | |||
| { | |||
| _updateBounds(); | |||
| } | |||
| BlendishButton::~BlendishButton() | |||
| { | |||
| delete pData; | |||
| } | |||
| int BlendishButton::getIconId() const noexcept | |||
| { | |||
| return pData->iconId; | |||
| } | |||
| void BlendishButton::setIconId(int iconId) noexcept | |||
| { | |||
| if (pData->iconId == iconId) | |||
| return; | |||
| pData->iconId = iconId; | |||
| _updateBounds(); | |||
| repaint(); | |||
| } | |||
| const char* BlendishButton::getText() const noexcept | |||
| { | |||
| return pData->text; | |||
| } | |||
| void BlendishButton::setText(const char* text) noexcept | |||
| { | |||
| if (pData->text == text) | |||
| return; | |||
| pData->text = text; | |||
| _updateBounds(); | |||
| repaint(); | |||
| } | |||
| void BlendishButton::setCallback(Callback* callback) noexcept | |||
| { | |||
| pData->impl.callback_b = callback; | |||
| } | |||
| void BlendishButton::onNanoDisplay() | |||
| { | |||
| bndToolButton(getContext(), | |||
| getAbsoluteX(), getAbsoluteY(), getWidth(), getHeight(), | |||
| 0, static_cast<BNDwidgetState>(pData->impl.state), pData->iconId, pData->text); | |||
| } | |||
| bool BlendishButton::onMouse(const MouseEvent& ev) | |||
| { | |||
| return pData->impl.onMouse(ev); | |||
| } | |||
| bool BlendishButton::onMotion(const MotionEvent& ev) | |||
| { | |||
| return pData->impl.onMotion(ev); | |||
| } | |||
| void BlendishButton::_updateBounds() | |||
| { | |||
| const float width = bndLabelWidth (getContext(), pData->iconId, pData->text); | |||
| const float height = bndLabelHeight(getContext(), pData->iconId, pData->text, width); | |||
| setSize(width, height); | |||
| } | |||
| // ----------------------------------------------------------------------- | |||
| END_NAMESPACE_DGL | |||
| // ----------------------------------------------------------------------- | |||
| @@ -5,11 +5,8 @@ | |||
| namespace dpf_resources | |||
| { | |||
| extern const char* blender_icons16_png; | |||
| const unsigned int blender_icons16_png_size = 250706; | |||
| extern const char* dejavusans_ttf; | |||
| const unsigned int dejavusans_ttf_size = 741536; | |||
| extern const char* dejavusans_ttf; | |||
| const unsigned int dejavusans_ttf_size = 741536; | |||
| }; | |||
| #endif | |||
| @@ -1,6 +1,6 @@ | |||
| /* | |||
| * DISTRHO Plugin Framework (DPF) | |||
| * Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com> | |||
| * Copyright (C) 2012-2016 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| @@ -1,6 +1,6 @@ | |||
| /* | |||
| * DISTRHO Plugin Framework (DPF) | |||
| * Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com> | |||
| * Copyright (C) 2012-2016 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| @@ -1,6 +1,6 @@ | |||
| /* | |||
| * DISTRHO Plugin Framework (DPF) | |||
| * Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com> | |||
| * Copyright (C) 2012-2016 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| @@ -1,21 +0,0 @@ | |||
| Blendish - Blender 2.5 UI based theming functions for NanoVG | |||
| Copyright (c) 2014 Leonard Ritter <leonard.ritter@duangle.com> | |||
| Permission is hereby granted, free of charge, to any person obtaining a copy | |||
| of this software and associated documentation files (the "Software"), to deal | |||
| in the Software without restriction, including without limitation the rights | |||
| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |||
| copies of the Software, and to permit persons to whom the Software is | |||
| furnished to do so, subject to the following conditions: | |||
| The above copyright notice and this permission notice shall be included in | |||
| all copies or substantial portions of the Software. | |||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |||
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |||
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |||
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |||
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |||
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | |||
| THE SOFTWARE. | |||
| @@ -1,280 +0,0 @@ | |||
| GNU GENERAL PUBLIC LICENSE | |||
| Version 2, June 1991 | |||
| Copyright (C) 1989, 1991 Free Software Foundation, Inc. | |||
| 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |||
| Everyone is permitted to copy and distribute verbatim copies | |||
| of this license document, but changing it is not allowed. | |||
| Preamble | |||
| The licenses for most software are designed to take away your | |||
| freedom to share and change it. By contrast, the GNU General Public | |||
| License is intended to guarantee your freedom to share and change free | |||
| software--to make sure the software is free for all its users. This | |||
| General Public License applies to most of the Free Software | |||
| Foundation's software and to any other program whose authors commit to | |||
| using it. (Some other Free Software Foundation software is covered by | |||
| the GNU Library General Public License instead.) You can apply it to | |||
| your programs, too. | |||
| When we speak of free software, we are referring to freedom, not | |||
| price. Our General Public Licenses are designed to make sure that you | |||
| have the freedom to distribute copies of free software (and charge for | |||
| this service if you wish), that you receive source code or can get it | |||
| if you want it, that you can change the software or use pieces of it | |||
| in new free programs; and that you know you can do these things. | |||
| To protect your rights, we need to make restrictions that forbid | |||
| anyone to deny you these rights or to ask you to surrender the rights. | |||
| These restrictions translate to certain responsibilities for you if you | |||
| distribute copies of the software, or if you modify it. | |||
| For example, if you distribute copies of such a program, whether | |||
| gratis or for a fee, you must give the recipients all the rights that | |||
| you have. You must make sure that they, too, receive or can get the | |||
| source code. And you must show them these terms so they know their | |||
| rights. | |||
| We protect your rights with two steps: (1) copyright the software, and | |||
| (2) offer you this license which gives you legal permission to copy, | |||
| distribute and/or modify the software. | |||
| Also, for each author's protection and ours, we want to make certain | |||
| that everyone understands that there is no warranty for this free | |||
| software. If the software is modified by someone else and passed on, we | |||
| want its recipients to know that what they have is not the original, so | |||
| that any problems introduced by others will not reflect on the original | |||
| authors' reputations. | |||
| Finally, any free program is threatened constantly by software | |||
| patents. We wish to avoid the danger that redistributors of a free | |||
| program will individually obtain patent licenses, in effect making the | |||
| program proprietary. To prevent this, we have made it clear that any | |||
| patent must be licensed for everyone's free use or not licensed at all. | |||
| The precise terms and conditions for copying, distribution and | |||
| modification follow. | |||
| GNU GENERAL PUBLIC LICENSE | |||
| TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION | |||
| 0. This License applies to any program or other work which contains | |||
| a notice placed by the copyright holder saying it may be distributed | |||
| under the terms of this General Public License. The "Program", below, | |||
| refers to any such program or work, and a "work based on the Program" | |||
| means either the Program or any derivative work under copyright law: | |||
| that is to say, a work containing the Program or a portion of it, | |||
| either verbatim or with modifications and/or translated into another | |||
| language. (Hereinafter, translation is included without limitation in | |||
| the term "modification".) Each licensee is addressed as "you". | |||
| Activities other than copying, distribution and modification are not | |||
| covered by this License; they are outside its scope. The act of | |||
| running the Program is not restricted, and the output from the Program | |||
| is covered only if its contents constitute a work based on the | |||
| Program (independent of having been made by running the Program). | |||
| Whether that is true depends on what the Program does. | |||
| 1. You may copy and distribute verbatim copies of the Program's | |||
| source code as you receive it, in any medium, provided that you | |||
| conspicuously and appropriately publish on each copy an appropriate | |||
| copyright notice and disclaimer of warranty; keep intact all the | |||
| notices that refer to this License and to the absence of any warranty; | |||
| and give any other recipients of the Program a copy of this License | |||
| along with the Program. | |||
| You may charge a fee for the physical act of transferring a copy, and | |||
| you may at your option offer warranty protection in exchange for a fee. | |||
| 2. You may modify your copy or copies of the Program or any portion | |||
| of it, thus forming a work based on the Program, and copy and | |||
| distribute such modifications or work under the terms of Section 1 | |||
| above, provided that you also meet all of these conditions: | |||
| a) You must cause the modified files to carry prominent notices | |||
| stating that you changed the files and the date of any change. | |||
| b) You must cause any work that you distribute or publish, that in | |||
| whole or in part contains or is derived from the Program or any | |||
| part thereof, to be licensed as a whole at no charge to all third | |||
| parties under the terms of this License. | |||
| c) If the modified program normally reads commands interactively | |||
| when run, you must cause it, when started running for such | |||
| interactive use in the most ordinary way, to print or display an | |||
| announcement including an appropriate copyright notice and a | |||
| notice that there is no warranty (or else, saying that you provide | |||
| a warranty) and that users may redistribute the program under | |||
| these conditions, and telling the user how to view a copy of this | |||
| License. (Exception: if the Program itself is interactive but | |||
| does not normally print such an announcement, your work based on | |||
| the Program is not required to print an announcement.) | |||
| These requirements apply to the modified work as a whole. If | |||
| identifiable sections of that work are not derived from the Program, | |||
| and can be reasonably considered independent and separate works in | |||
| themselves, then this License, and its terms, do not apply to those | |||
| sections when you distribute them as separate works. But when you | |||
| distribute the same sections as part of a whole which is a work based | |||
| on the Program, the distribution of the whole must be on the terms of | |||
| this License, whose permissions for other licensees extend to the | |||
| entire whole, and thus to each and every part regardless of who wrote it. | |||
| Thus, it is not the intent of this section to claim rights or contest | |||
| your rights to work written entirely by you; rather, the intent is to | |||
| exercise the right to control the distribution of derivative or | |||
| collective works based on the Program. | |||
| In addition, mere aggregation of another work not based on the Program | |||
| with the Program (or with a work based on the Program) on a volume of | |||
| a storage or distribution medium does not bring the other work under | |||
| the scope of this License. | |||
| 3. You may copy and distribute the Program (or a work based on it, | |||
| under Section 2) in object code or executable form under the terms of | |||
| Sections 1 and 2 above provided that you also do one of the following: | |||
| a) Accompany it with the complete corresponding machine-readable | |||
| source code, which must be distributed under the terms of Sections | |||
| 1 and 2 above on a medium customarily used for software interchange; or, | |||
| b) Accompany it with a written offer, valid for at least three | |||
| years, to give any third party, for a charge no more than your | |||
| cost of physically performing source distribution, a complete | |||
| machine-readable copy of the corresponding source code, to be | |||
| distributed under the terms of Sections 1 and 2 above on a medium | |||
| customarily used for software interchange; or, | |||
| c) Accompany it with the information you received as to the offer | |||
| to distribute corresponding source code. (This alternative is | |||
| allowed only for noncommercial distribution and only if you | |||
| received the program in object code or executable form with such | |||
| an offer, in accord with Subsection b above.) | |||
| The source code for a work means the preferred form of the work for | |||
| making modifications to it. For an executable work, complete source | |||
| code means all the source code for all modules it contains, plus any | |||
| associated interface definition files, plus the scripts used to | |||
| control compilation and installation of the executable. However, as a | |||
| special exception, the source code distributed need not include | |||
| anything that is normally distributed (in either source or binary | |||
| form) with the major components (compiler, kernel, and so on) of the | |||
| operating system on which the executable runs, unless that component | |||
| itself accompanies the executable. | |||
| If distribution of executable or object code is made by offering | |||
| access to copy from a designated place, then offering equivalent | |||
| access to copy the source code from the same place counts as | |||
| distribution of the source code, even though third parties are not | |||
| compelled to copy the source along with the object code. | |||
| 4. You may not copy, modify, sublicense, or distribute the Program | |||
| except as expressly provided under this License. Any attempt | |||
| otherwise to copy, modify, sublicense or distribute the Program is | |||
| void, and will automatically terminate your rights under this License. | |||
| However, parties who have received copies, or rights, from you under | |||
| this License will not have their licenses terminated so long as such | |||
| parties remain in full compliance. | |||
| 5. You are not required to accept this License, since you have not | |||
| signed it. However, nothing else grants you permission to modify or | |||
| distribute the Program or its derivative works. These actions are | |||
| prohibited by law if you do not accept this License. Therefore, by | |||
| modifying or distributing the Program (or any work based on the | |||
| Program), you indicate your acceptance of this License to do so, and | |||
| all its terms and conditions for copying, distributing or modifying | |||
| the Program or works based on it. | |||
| 6. Each time you redistribute the Program (or any work based on the | |||
| Program), the recipient automatically receives a license from the | |||
| original licensor to copy, distribute or modify the Program subject to | |||
| these terms and conditions. You may not impose any further | |||
| restrictions on the recipients' exercise of the rights granted herein. | |||
| You are not responsible for enforcing compliance by third parties to | |||
| this License. | |||
| 7. If, as a consequence of a court judgment or allegation of patent | |||
| infringement or for any other reason (not limited to patent issues), | |||
| conditions are imposed on you (whether by court order, agreement or | |||
| otherwise) that contradict the conditions of this License, they do not | |||
| excuse you from the conditions of this License. If you cannot | |||
| distribute so as to satisfy simultaneously your obligations under this | |||
| License and any other pertinent obligations, then as a consequence you | |||
| may not distribute the Program at all. For example, if a patent | |||
| license would not permit royalty-free redistribution of the Program by | |||
| all those who receive copies directly or indirectly through you, then | |||
| the only way you could satisfy both it and this License would be to | |||
| refrain entirely from distribution of the Program. | |||
| If any portion of this section is held invalid or unenforceable under | |||
| any particular circumstance, the balance of the section is intended to | |||
| apply and the section as a whole is intended to apply in other | |||
| circumstances. | |||
| It is not the purpose of this section to induce you to infringe any | |||
| patents or other property right claims or to contest validity of any | |||
| such claims; this section has the sole purpose of protecting the | |||
| integrity of the free software distribution system, which is | |||
| implemented by public license practices. Many people have made | |||
| generous contributions to the wide range of software distributed | |||
| through that system in reliance on consistent application of that | |||
| system; it is up to the author/donor to decide if he or she is willing | |||
| to distribute software through any other system and a licensee cannot | |||
| impose that choice. | |||
| This section is intended to make thoroughly clear what is believed to | |||
| be a consequence of the rest of this License. | |||
| 8. If the distribution and/or use of the Program is restricted in | |||
| certain countries either by patents or by copyrighted interfaces, the | |||
| original copyright holder who places the Program under this License | |||
| may add an explicit geographical distribution limitation excluding | |||
| those countries, so that distribution is permitted only in or among | |||
| countries not thus excluded. In such case, this License incorporates | |||
| the limitation as if written in the body of this License. | |||
| 9. The Free Software Foundation may publish revised and/or new versions | |||
| of the General Public License from time to time. Such new versions will | |||
| be similar in spirit to the present version, but may differ in detail to | |||
| address new problems or concerns. | |||
| Each version is given a distinguishing version number. If the Program | |||
| specifies a version number of this License which applies to it and "any | |||
| later version", you have the option of following the terms and conditions | |||
| either of that version or of any later version published by the Free | |||
| Software Foundation. If the Program does not specify a version number of | |||
| this License, you may choose any version ever published by the Free Software | |||
| Foundation. | |||
| 10. If you wish to incorporate parts of the Program into other free | |||
| programs whose distribution conditions are different, write to the author | |||
| to ask for permission. For software which is copyrighted by the Free | |||
| Software Foundation, write to the Free Software Foundation; we sometimes | |||
| make exceptions for this. Our decision will be guided by the two goals | |||
| of preserving the free status of all derivatives of our free software and | |||
| of promoting the sharing and reuse of software generally. | |||
| NO WARRANTY | |||
| 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY | |||
| FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN | |||
| OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES | |||
| PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED | |||
| OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | |||
| MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS | |||
| TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE | |||
| PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, | |||
| REPAIR OR CORRECTION. | |||
| 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING | |||
| WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR | |||
| REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, | |||
| INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING | |||
| OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED | |||
| TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY | |||
| YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER | |||
| PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE | |||
| POSSIBILITY OF SUCH DAMAGES. | |||
| END OF TERMS AND CONDITIONS | |||
| @@ -1,6 +1,6 @@ | |||
| /* | |||
| * DISTRHO Plugin Framework (DPF) | |||
| * Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com> | |||
| * Copyright (C) 2012-2016 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| @@ -1,6 +1,6 @@ | |||
| /* | |||
| * DISTRHO Plugin Framework (DPF) | |||
| * Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com> | |||
| * Copyright (C) 2012-2016 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| @@ -1,6 +1,6 @@ | |||
| /* | |||
| * DISTRHO Plugin Framework (DPF) | |||
| * Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com> | |||
| * Copyright (C) 2012-2016 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| @@ -1,6 +1,6 @@ | |||
| /* | |||
| * DISTRHO Plugin Framework (DPF) | |||
| * Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com> | |||
| * Copyright (C) 2012-2016 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| @@ -1,6 +1,6 @@ | |||
| /* | |||
| * DISTRHO Plugin Framework (DPF) | |||
| * Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com> | |||
| * Copyright (C) 2012-2016 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| @@ -1,6 +1,6 @@ | |||
| /* | |||
| * DISTRHO Plugin Framework (DPF) | |||
| * Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com> | |||
| * Copyright (C) 2012-2016 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| @@ -1,6 +1,6 @@ | |||
| /* | |||
| * DISTRHO Plugin Framework (DPF) | |||
| * Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com> | |||
| * Copyright (C) 2012-2016 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| @@ -1,6 +1,6 @@ | |||
| /* | |||
| * DISTRHO Plugin Framework (DPF) | |||
| * Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com> | |||
| * Copyright (C) 2012-2016 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| @@ -1,6 +1,6 @@ | |||
| /* | |||
| * DISTRHO Plugin Framework (DPF) | |||
| * Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com> | |||
| * Copyright (C) 2012-2016 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| @@ -1,6 +1,6 @@ | |||
| /* | |||
| * DISTRHO Plugin Framework (DPF) | |||
| * Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com> | |||
| * Copyright (C) 2012-2016 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| @@ -1,6 +1,6 @@ | |||
| /* | |||
| * DISTRHO Plugin Framework (DPF) | |||
| * Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com> | |||
| * Copyright (C) 2012-2016 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| @@ -1,6 +1,6 @@ | |||
| /* | |||
| * DISTRHO Plugin Framework (DPF) | |||
| * Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com> | |||
| * Copyright (C) 2012-2016 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| @@ -1,6 +1,6 @@ | |||
| /* | |||
| * DISTRHO Plugin Framework (DPF) | |||
| * Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com> | |||
| * Copyright (C) 2012-2016 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| @@ -1,6 +1,6 @@ | |||
| /* | |||
| * DISTRHO Plugin Framework (DPF) | |||
| * Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com> | |||
| * Copyright (C) 2012-2016 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * This program is free software; you can redistribute it and/or | |||
| * modify it under the terms of the GNU Lesser General Public | |||
| @@ -1,6 +1,6 @@ | |||
| /* | |||
| * DISTRHO Plugin Framework (DPF) | |||
| * Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com> | |||
| * Copyright (C) 2012-2016 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| @@ -1,6 +1,6 @@ | |||
| /* | |||
| * DISTRHO Plugin Framework (DPF) | |||
| * Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com> | |||
| * Copyright (C) 2012-2016 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| @@ -1,6 +1,6 @@ | |||
| /* | |||
| * DISTRHO Plugin Framework (DPF) | |||
| * Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com> | |||
| * Copyright (C) 2012-2016 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * This program is free software; you can redistribute it and/or | |||
| * modify it under the terms of the GNU Lesser General Public | |||
| @@ -1,6 +1,6 @@ | |||
| /* | |||
| * DISTRHO Plugin Framework (DPF) | |||
| * Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com> | |||
| * Copyright (C) 2012-2016 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| @@ -1,6 +1,6 @@ | |||
| /* | |||
| * DISTRHO Plugin Framework (DPF) | |||
| * Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com> | |||
| * Copyright (C) 2012-2016 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| @@ -1,6 +1,6 @@ | |||
| /* | |||
| * DISTRHO Plugin Framework (DPF) | |||
| * Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com> | |||
| * Copyright (C) 2012-2016 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| @@ -1,6 +1,6 @@ | |||
| /* | |||
| * DISTRHO Plugin Framework (DPF) | |||
| * Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com> | |||
| * Copyright (C) 2012-2016 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| @@ -1,6 +1,6 @@ | |||
| /* | |||
| * DISTRHO Plugin Framework (DPF) | |||
| * Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com> | |||
| * Copyright (C) 2012-2016 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| @@ -242,11 +242,14 @@ SEARCH_INCLUDES = YES | |||
| INCLUDE_PATH = | |||
| INCLUDE_FILE_PATTERNS = | |||
| PREDEFINED = DOXYGEN \ | |||
| HAVE_DGL=1 \ | |||
| DISTRHO_PLUGIN_NAME="Plugin Name" \ | |||
| DISTRHO_PLUGIN_NUM_INPUTS=2 \ | |||
| DISTRHO_PLUGIN_NUM_OUTPUTS=2 \ | |||
| DISTRHO_PLUGIN_URI="urn:distrho:name" \ | |||
| DISTRHO_PLUGIN_HAS_UI=1 \ | |||
| DISTRHO_PLUGIN_HAS_EMBED_UI=1 \ | |||
| DISTRHO_PLUGIN_HAS_EXTERNAL_UI=1 \ | |||
| DISTRHO_PLUGIN_IS_RT_SAFE=1 \ | |||
| DISTRHO_PLUGIN_IS_SYNTH=1 \ | |||
| DISTRHO_PLUGIN_WANT_DIRECT_ACCESS=1 \ | |||
| @@ -256,6 +259,7 @@ PREDEFINED = DOXYGEN \ | |||
| DISTRHO_PLUGIN_WANT_PROGRAMS=1 \ | |||
| DISTRHO_PLUGIN_WANT_STATE=1 \ | |||
| DISTRHO_PLUGIN_WANT_TIMEPOS=1 \ | |||
| DISTRHO_PLUGIN_WANT_FULL_STATE=1 \ | |||
| DISTRHO_UI_USE_NANOVG=1 | |||
| EXPAND_AS_DEFINED = YES | |||
| SKIP_FUNCTION_MACROS = YES | |||
| @@ -1,5 +1,17 @@ | |||
| /* | |||
| * DPF LV2 *.ttl generator | |||
| * DISTRHO Plugin Framework (DPF) | |||
| * Copyright (C) 2012-2016 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| * permission notice appear in all copies. | |||
| * | |||
| * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD | |||
| * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN | |||
| * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL | |||
| * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER | |||
| * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN | |||
| * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |||
| */ | |||
| #include <stdio.h> | |||
| @@ -1,4 +1,19 @@ | |||
| #!/usr/bin/env python | |||
| # -*- coding: utf-8 -*- | |||
| # DISTRHO Plugin Framework (DPF) | |||
| # Copyright (C) 2012-2016 Filipe Coelho <falktx@falktx.com> | |||
| # | |||
| # Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| # or without fee is hereby granted, provided that the above copyright notice and this | |||
| # permission notice appear in all copies. | |||
| # | |||
| # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD | |||
| # TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN | |||
| # NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL | |||
| # DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER | |||
| # IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN | |||
| # CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |||
| import os, numpy, sys | |||
| import Image | |||
| @@ -2,7 +2,7 @@ | |||
| set -e | |||
| PLUGINS=("Kars" "Mini-Series" "MVerb" "Nekobi" "ProM" "ndc-Plugs" "DPF-Max-Gen") | |||
| PLUGINS=("glBars" "Kars" "Mini-Series" "MVerb" "Nekobi" "ProM" "ndc-Plugs" "DPF-Max-Gen") | |||
| if [ ! -f Makefile ]; then | |||
| echo "Makefile not found, please run this script from DPF-Plugins root source dir" | |||
| @@ -0,0 +1,88 @@ | |||
| #!/usr/bin/make -f | |||
| # Makefile for DISTRHO Plugins # | |||
| # ---------------------------- # | |||
| # Created by falkTX | |||
| # | |||
| # NAME, OBJS_DSP and OBJS_UI have been defined before | |||
| include ../../Makefile.mk | |||
| # -------------------------------------------------------------- | |||
| # Basic setup | |||
| TARGET_DIR = ../../bin | |||
| BUILD_C_FLAGS += -I. | |||
| BUILD_CXX_FLAGS += -I. -I../../dpf/distrho -I../../dpf/dgl | |||
| BASE_FLAGS += -DHAVE_DGL | |||
| ifeq ($(HAVE_JACK),true) | |||
| BASE_FLAGS += -DHAVE_JACK | |||
| endif | |||
| # -------------------------------------------------------------- | |||
| # Set plugin binary file targets | |||
| jack = $(TARGET_DIR)/$(NAME)$(APP_EXT) | |||
| lv2 = $(TARGET_DIR)/$(NAME).lv2/$(NAME)$(LIB_EXT) | |||
| vst = $(TARGET_DIR)/$(NAME)-vst$(LIB_EXT) | |||
| # -------------------------------------------------------------- | |||
| # Set distrho code files | |||
| DISTRHO_PLUGIN_FILES = ../../dpf/distrho/DistrhoPluginMain.cpp | |||
| DISTRHO_UI_FILES = ../../dpf/distrho/DistrhoUIMain.cpp ../../dpf/libdgl.a | |||
| # -------------------------------------------------------------- | |||
| # all needs to be first | |||
| all: | |||
| # -------------------------------------------------------------- | |||
| # Common | |||
| %.c.o: %.c | |||
| $(CC) $< $(BUILD_C_FLAGS) -MD -MP -c -o $@ | |||
| %.cpp.o: %.cpp | |||
| $(CXX) $< $(BUILD_CXX_FLAGS) -MD -MP -c -o $@ | |||
| clean: | |||
| rm -f *.d *.o | |||
| rm -rf $(TARGET_DIR)/$(NAME) $(TARGET_DIR)/$(NAME)-* $(TARGET_DIR)/$(NAME).lv2/ | |||
| # -------------------------------------------------------------- | |||
| # JACK | |||
| jack: $(jack) | |||
| $(jack): $(OBJS_DSP) $(OBJS_UI) $(DISTRHO_PLUGIN_FILES) $(DISTRHO_UI_FILES) | |||
| mkdir -p $(shell dirname $@) | |||
| $(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(DGL_LIBS) $(shell pkg-config --cflags --libs jack) -lpthread -DDISTRHO_PLUGIN_TARGET_JACK -o $@ | |||
| # -------------------------------------------------------------- | |||
| # LV2 | |||
| lv2: $(lv2) | |||
| $(lv2): $(OBJS_DSP) $(OBJS_UI) $(DISTRHO_PLUGIN_FILES) $(DISTRHO_UI_FILES) | |||
| mkdir -p $(shell dirname $@) | |||
| $(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(DGL_LIBS) -lpthread $(SHARED) -DDISTRHO_PLUGIN_TARGET_LV2 -o $@ | |||
| # -------------------------------------------------------------- | |||
| # VST | |||
| vst: $(vst) | |||
| $(vst): $(OBJS_DSP) $(OBJS_UI) $(DISTRHO_PLUGIN_FILES) $(DISTRHO_UI_FILES) | |||
| mkdir -p $(shell dirname $@) | |||
| $(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(DGL_LIBS) -lpthread $(SHARED) -DDISTRHO_PLUGIN_TARGET_VST -o $@ | |||
| # -------------------------------------------------------------- | |||
| -include $(OBJS_DSP:%.o=%.d) | |||
| -include $(OBJS_UI:%.o=%.d) | |||
| # -------------------------------------------------------------- | |||
| @@ -14,8 +14,8 @@ | |||
| * For a full copy of the license see the LICENSE file. | |||
| */ | |||
| #ifndef DISTRHO_PLUGIN_3BANDEQ_HPP_INCLUDED | |||
| #define DISTRHO_PLUGIN_3BANDEQ_HPP_INCLUDED | |||
| #ifndef DISTRHO_PLUGIN_PROM_HPP_INCLUDED | |||
| #define DISTRHO_PLUGIN_PROM_HPP_INCLUDED | |||
| #include "DistrhoPlugin.hpp" | |||
| @@ -103,4 +103,4 @@ private: | |||
| END_NAMESPACE_DISTRHO | |||
| #endif // DISTRHO_PLUGIN_3BANDEQ_HPP_INCLUDED | |||
| #endif // DISTRHO_PLUGIN_PROM_HPP_INCLUDED | |||
| @@ -14,8 +14,8 @@ | |||
| * For a full copy of the license see the LICENSE file. | |||
| */ | |||
| #ifndef DISTRHO_UI_3BANDEQ_HPP_INCLUDED | |||
| #define DISTRHO_UI_3BANDEQ_HPP_INCLUDED | |||
| #ifndef DISTRHO_UI_PROM_HPP_INCLUDED | |||
| #define DISTRHO_UI_PROM_HPP_INCLUDED | |||
| #include "DistrhoUI.hpp" | |||
| @@ -60,4 +60,4 @@ private: | |||
| END_NAMESPACE_DISTRHO | |||
| #endif // DISTRHO_UI_3BANDEQ_HPP_INCLUDED | |||
| #endif // DISTRHO_UI_PROM_HPP_INCLUDED | |||
| @@ -0,0 +1,149 @@ | |||
| /* | |||
| * DISTRHO glBars Plugin based on XMMS/XBMC "GL Bars" | |||
| * Copyright (C) 1998-2000 Peter Alm, Mikael Alm, Olle Hallnas, Thomas Nilsson and 4Front Technologies | |||
| * Copyright (C) 2000 Christian Zander <phoenix@minion.de> | |||
| * Copyright (C) 2015 Nedko Arnaudov | |||
| * Copyright (C) 2016 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 license see the LICENSE file. | |||
| */ | |||
| #include "DistrhoPluginGLBars.hpp" | |||
| #include "glBars.hpp" | |||
| START_NAMESPACE_DISTRHO | |||
| // ----------------------------------------------------------------------- | |||
| DistrhoPluginGLBars::DistrhoPluginGLBars() | |||
| : Plugin(kParameterCount, 0, 0), | |||
| fState(nullptr) | |||
| { | |||
| fParameters[kParameterScale] = 1.f / log(256.f); | |||
| fParameters[kParameterSpeed] = 0.025f; | |||
| fParameters[kParameterX] = 0.0f; | |||
| fParameters[kParameterY] = 0.5f; | |||
| fParameters[kParameterZ] = 0.0f; | |||
| } | |||
| DistrhoPluginGLBars::~DistrhoPluginGLBars() | |||
| { | |||
| DISTRHO_SAFE_ASSERT(fState == nullptr); | |||
| } | |||
| // ----------------------------------------------------------------------- | |||
| // Init | |||
| void DistrhoPluginGLBars::initParameter(uint32_t index, Parameter& parameter) | |||
| { | |||
| switch (index) | |||
| { | |||
| case kParameterScale: | |||
| parameter.hints = kParameterIsAutomable|kParameterIsLogarithmic; | |||
| parameter.name = "Scale"; | |||
| parameter.symbol = "scale"; | |||
| parameter.unit = ""; | |||
| parameter.ranges.def = 1.0f / log(256.f); | |||
| parameter.ranges.min = 0.5f / log(256.f); | |||
| parameter.ranges.max = 3.0f / log(256.f); | |||
| break; | |||
| case kParameterSpeed: | |||
| parameter.hints = kParameterIsAutomable|kParameterIsLogarithmic; | |||
| parameter.name = "Speed"; | |||
| parameter.symbol = "speed"; | |||
| parameter.unit = ""; | |||
| parameter.ranges.def = 0.025f; | |||
| parameter.ranges.min = 0.0125f; | |||
| parameter.ranges.max = 0.1f; | |||
| break; | |||
| case kParameterX: | |||
| parameter.hints = kParameterIsAutomable; | |||
| parameter.name = "X"; | |||
| parameter.symbol = "x"; | |||
| parameter.unit = ""; | |||
| parameter.ranges.def = -4.0f; | |||
| parameter.ranges.min = 0.0f; | |||
| parameter.ranges.max = 4.0f; | |||
| break; | |||
| case kParameterY: | |||
| parameter.hints = kParameterIsAutomable; | |||
| parameter.name = "Y"; | |||
| parameter.symbol = "y"; | |||
| parameter.unit = ""; | |||
| parameter.ranges.def = 0.5f; | |||
| parameter.ranges.min = -4.0f; | |||
| parameter.ranges.max = 4.0f; | |||
| break; | |||
| case kParameterZ: | |||
| parameter.hints = kParameterIsAutomable; | |||
| parameter.name = "Z"; | |||
| parameter.symbol = "z"; | |||
| parameter.unit = ""; | |||
| parameter.ranges.def = 0.0f; | |||
| parameter.ranges.min = -4.0f; | |||
| parameter.ranges.max = 4.0f; | |||
| break; | |||
| } | |||
| } | |||
| // ----------------------------------------------------------------------- | |||
| // Internal data | |||
| float DistrhoPluginGLBars::getParameterValue(uint32_t index) const | |||
| { | |||
| if (index >= kParameterCount) | |||
| return 0.0f; | |||
| return fParameters[index]; | |||
| } | |||
| void DistrhoPluginGLBars::setParameterValue(uint32_t index, float value) | |||
| { | |||
| if (index >= kParameterCount) | |||
| return; | |||
| fParameters[index] = value; | |||
| } | |||
| // ----------------------------------------------------------------------- | |||
| // Process | |||
| void DistrhoPluginGLBars::run(const float** inputs, float** outputs, uint32_t frames) | |||
| { | |||
| const float* in = inputs[0]; | |||
| float* out = outputs[0]; | |||
| if (out != in) | |||
| std::memcpy(out, in, sizeof(float)*frames); | |||
| const MutexLocker csm(fMutex); | |||
| if (fState != nullptr) | |||
| fState->AudioData(in, frames); | |||
| } | |||
| // ----------------------------------------------------------------------- | |||
| Plugin* createPlugin() | |||
| { | |||
| return new DistrhoPluginGLBars(); | |||
| } | |||
| // ----------------------------------------------------------------------- | |||
| END_NAMESPACE_DISTRHO | |||
| @@ -0,0 +1,110 @@ | |||
| /* | |||
| * DISTRHO glBars Plugin based on XMMS/XBMC "GL Bars" | |||
| * Copyright (C) 1998-2000 Peter Alm, Mikael Alm, Olle Hallnas, Thomas Nilsson and 4Front Technologies | |||
| * Copyright (C) 2000 Christian Zander <phoenix@minion.de> | |||
| * Copyright (C) 2015 Nedko Arnaudov | |||
| * Copyright (C) 2016 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 license see the LICENSE file. | |||
| */ | |||
| #ifndef DISTRHO_PLUGIN_GLBARS_HPP_INCLUDED | |||
| #define DISTRHO_PLUGIN_GLBARS_HPP_INCLUDED | |||
| #include "DistrhoPlugin.hpp" | |||
| #include "extra/Mutex.hpp" | |||
| class DistrhoUIGLBars; | |||
| struct glBarsState; | |||
| START_NAMESPACE_DISTRHO | |||
| // ----------------------------------------------------------------------- | |||
| class DistrhoPluginGLBars : public Plugin | |||
| { | |||
| public: | |||
| DistrhoPluginGLBars(); | |||
| ~DistrhoPluginGLBars() override; | |||
| protected: | |||
| // ------------------------------------------------------------------- | |||
| // Information | |||
| const char* getLabel() const noexcept override | |||
| { | |||
| return "glBars"; | |||
| } | |||
| const char* getDescription() const override | |||
| { | |||
| return "OpenGL Bars"; | |||
| } | |||
| const char* getMaker() const noexcept override | |||
| { | |||
| return "DISTRHO"; | |||
| } | |||
| const char* getHomePage() const override | |||
| { | |||
| return "https://github.com/DISTRHO/GLBars"; | |||
| } | |||
| const char* getLicense() const noexcept override | |||
| { | |||
| return "LGPL"; | |||
| } | |||
| uint32_t getVersion() const noexcept override | |||
| { | |||
| return d_version(1, 0, 0); | |||
| } | |||
| int64_t getUniqueId() const noexcept override | |||
| { | |||
| return d_cconst('D', 'g', 'l', 'B'); | |||
| } | |||
| // ------------------------------------------------------------------- | |||
| // Init | |||
| void initParameter(uint32_t, Parameter&) override; | |||
| // ------------------------------------------------------------------- | |||
| // Internal data | |||
| float getParameterValue(uint32_t) const override; | |||
| void setParameterValue(uint32_t, float) override; | |||
| // ------------------------------------------------------------------- | |||
| // Process | |||
| void run(const float** inputs, float** outputs, uint32_t frames) override; | |||
| // ------------------------------------------------------------------- | |||
| private: | |||
| Mutex fMutex; | |||
| glBarsState* fState; | |||
| float fParameters[kParameterCount]; | |||
| friend class DistrhoUIGLBars; | |||
| DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(DistrhoPluginGLBars) | |||
| }; | |||
| // ----------------------------------------------------------------------- | |||
| END_NAMESPACE_DISTRHO | |||
| #endif // DISTRHO_PLUGIN_GLBARS_HPP_INCLUDED | |||
| @@ -0,0 +1,43 @@ | |||
| /* | |||
| * DISTRHO glBars Plugin based on XMMS/XBMC "GL Bars" | |||
| * Copyright (C) 1998-2000 Peter Alm, Mikael Alm, Olle Hallnas, Thomas Nilsson and 4Front Technologies | |||
| * Copyright (C) 2000 Christian Zander <phoenix@minion.de> | |||
| * Copyright (C) 2015 Nedko Arnaudov | |||
| * Copyright (C) 2016 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 license see the LICENSE file. | |||
| */ | |||
| #ifndef DISTRHO_PLUGIN_INFO_H_INCLUDED | |||
| #define DISTRHO_PLUGIN_INFO_H_INCLUDED | |||
| #define DISTRHO_PLUGIN_BRAND "DISTRHO" | |||
| #define DISTRHO_PLUGIN_NAME "glBars" | |||
| #define DISTRHO_PLUGIN_URI "http://distrho.sf.net/plugins/glBars" | |||
| #define DISTRHO_PLUGIN_HAS_UI 1 | |||
| #define DISTRHO_PLUGIN_NUM_INPUTS 1 | |||
| #define DISTRHO_PLUGIN_NUM_OUTPUTS 1 | |||
| #define DISTRHO_PLUGIN_WANT_DIRECT_ACCESS 1 | |||
| #define DISTRHO_PLUGIN_LV2_CATEGORY "lv2:AnalyserPlugin" | |||
| enum Parameters { | |||
| kParameterScale = 0, | |||
| kParameterSpeed, | |||
| kParameterX, | |||
| kParameterY, | |||
| kParameterZ, | |||
| kParameterCount | |||
| }; | |||
| #endif // DISTRHO_PLUGIN_INFO_H_INCLUDED | |||
| @@ -0,0 +1,133 @@ | |||
| /* | |||
| * DISTRHO glBars Plugin based on XMMS/XBMC "GL Bars" | |||
| * Copyright (C) 1998-2000 Peter Alm, Mikael Alm, Olle Hallnas, Thomas Nilsson and 4Front Technologies | |||
| * Copyright (C) 2000 Christian Zander <phoenix@minion.de> | |||
| * Copyright (C) 2015 Nedko Arnaudov | |||
| * Copyright (C) 2016 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 license see the LICENSE file. | |||
| */ | |||
| #include "DistrhoPluginGLBars.hpp" | |||
| #include "DistrhoUIGLBars.hpp" | |||
| START_NAMESPACE_DISTRHO | |||
| // ----------------------------------------------------------------------- | |||
| DistrhoUIGLBars::DistrhoUIGLBars() | |||
| : UI(512, 512) {} | |||
| DistrhoUIGLBars::~DistrhoUIGLBars() | |||
| { | |||
| if (DistrhoPluginGLBars* const dspPtr = (DistrhoPluginGLBars*)getPluginInstancePointer()) | |||
| { | |||
| const MutexLocker csm(dspPtr->fMutex); | |||
| dspPtr->fState = nullptr; | |||
| } | |||
| } | |||
| // ----------------------------------------------------------------------- | |||
| // DSP Callbacks | |||
| void DistrhoUIGLBars::parameterChanged(uint32_t index, float value) | |||
| { | |||
| switch (index) | |||
| { | |||
| case kParameterScale: | |||
| fState.scale = value; | |||
| break; | |||
| case kParameterSpeed: | |||
| fState.hSpeed = value; | |||
| break; | |||
| case kParameterX: | |||
| fState.x_speed = value; | |||
| break; | |||
| case kParameterY: | |||
| fState.y_speed = value; | |||
| break; | |||
| case kParameterZ: | |||
| fState.z_speed = value; | |||
| break; | |||
| } | |||
| } | |||
| // ----------------------------------------------------------------------- | |||
| // UI Callbacks | |||
| void DistrhoUIGLBars::uiIdle() | |||
| { | |||
| repaint(); | |||
| if (DistrhoPluginGLBars* const dspPtr = (DistrhoPluginGLBars*)getPluginInstancePointer()) | |||
| { | |||
| if (dspPtr->fState != nullptr) | |||
| return; | |||
| const MutexLocker csm(dspPtr->fMutex); | |||
| dspPtr->fState = &fState; | |||
| } | |||
| } | |||
| // ----------------------------------------------------------------------- | |||
| // Widget Callbacks | |||
| void DistrhoUIGLBars::onDisplay() | |||
| { | |||
| fState.Render(); | |||
| } | |||
| bool DistrhoUIGLBars::onKeyboard(const KeyboardEvent& ev) | |||
| { | |||
| if (ev.press && (ev.key == '1' || ev.key == '+' || ev.key == '-')) | |||
| { | |||
| if (ev.key == '1') | |||
| { | |||
| if (getWidth() != 512 || getHeight() != 512) | |||
| setSize(512, 512); | |||
| } | |||
| else if (ev.key == '+') | |||
| { | |||
| /**/ if (getWidth() < 1100 && getHeight() < 1100) | |||
| setSize(getWidth()+100, getHeight()+100); | |||
| else if (getWidth() != 1100 || getHeight() != 1100) | |||
| setSize(1100, 1100); | |||
| } | |||
| else if (ev.key == '-') | |||
| { | |||
| /**/ if (getWidth() >= 200 && getHeight() >= 200) | |||
| setSize(getWidth()-100, getHeight()-100); | |||
| else if (getWidth() != 100 || getHeight() != 100) | |||
| setSize(100, 100); | |||
| } | |||
| return true; | |||
| } | |||
| return true; | |||
| } | |||
| // ----------------------------------------------------------------------- | |||
| UI* createUI() | |||
| { | |||
| return new DistrhoUIGLBars(); | |||
| } | |||
| // ----------------------------------------------------------------------- | |||
| END_NAMESPACE_DISTRHO | |||
| @@ -0,0 +1,66 @@ | |||
| /* | |||
| * DISTRHO glBars Plugin based on XMMS/XBMC "GL Bars" | |||
| * Copyright (C) 1998-2000 Peter Alm, Mikael Alm, Olle Hallnas, Thomas Nilsson and 4Front Technologies | |||
| * Copyright (C) 2000 Christian Zander <phoenix@minion.de> | |||
| * Copyright (C) 2015 Nedko Arnaudov | |||
| * Copyright (C) 2016 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 license see the LICENSE file. | |||
| */ | |||
| #ifndef DISTRHO_UI_GLBARS_HPP_INCLUDED | |||
| #define DISTRHO_UI_GLBARS_HPP_INCLUDED | |||
| #include "DistrhoUI.hpp" | |||
| #include "glBars.hpp" | |||
| START_NAMESPACE_DISTRHO | |||
| // ----------------------------------------------------------------------- | |||
| class DistrhoUIGLBars : public UI | |||
| { | |||
| public: | |||
| DistrhoUIGLBars(); | |||
| ~DistrhoUIGLBars() override; | |||
| protected: | |||
| // ------------------------------------------------------------------- | |||
| // DSP Callbacks | |||
| void parameterChanged(uint32_t, float) override; | |||
| // ------------------------------------------------------------------- | |||
| // UI Callbacks | |||
| void uiIdle() override; | |||
| // void uiReshape(uint width, uint height) override; | |||
| // ------------------------------------------------------------------- | |||
| // Widget Callbacks | |||
| void onDisplay() override; | |||
| bool onKeyboard(const KeyboardEvent&) override; | |||
| private: | |||
| glBarsState fState; | |||
| DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(DistrhoUIGLBars) | |||
| }; | |||
| // ----------------------------------------------------------------------- | |||
| END_NAMESPACE_DISTRHO | |||
| #endif // DISTRHO_UI_GLBARS_HPP_INCLUDED | |||
| @@ -0,0 +1,37 @@ | |||
| #!/usr/bin/make -f | |||
| # Makefile for DISTRHO Plugins # | |||
| # ---------------------------- # | |||
| # Created by falkTX | |||
| # | |||
| # -------------------------------------------------------------- | |||
| # Project name, used for binaries | |||
| NAME = glBars | |||
| # -------------------------------------------------------------- | |||
| # Files to build | |||
| OBJS_DSP = \ | |||
| DistrhoPluginGLBars.cpp.o | |||
| OBJS_UI = \ | |||
| DistrhoUIGLBars.cpp.o | |||
| # -------------------------------------------------------------- | |||
| # Do some magic | |||
| include ../Makefile.glBars.mk | |||
| # -------------------------------------------------------------- | |||
| # Enable all possible plugin types | |||
| ifeq ($(HAVE_JACK),true) | |||
| TARGETS += jack | |||
| endif | |||
| TARGETS += lv2 | |||
| TARGETS += vst | |||
| all: $(TARGETS) | |||
| # -------------------------------------------------------------- | |||
| @@ -0,0 +1,234 @@ | |||
| /* | |||
| * DISTRHO glBars Plugin based on XMMS/XBMC "GL Bars" | |||
| * Copyright (C) 1998-2000 Peter Alm, Mikael Alm, Olle Hallnas, Thomas Nilsson and 4Front Technologies | |||
| * Copyright (C) 2000 Christian Zander <phoenix@minion.de> | |||
| * Copyright (C) 2015 Nedko Arnaudov | |||
| * Copyright (C) 2016 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * This program is free software; you can redistribute it and/or | |||
| * modify it under the terms of the GNU Lesser General Public | |||
| * License as published by the Free Software Foundation. | |||
| * | |||
| * 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 Lesser General Public License for more details. | |||
| * | |||
| * For a full copy of the license see the LICENSE file. | |||
| */ | |||
| #ifndef GLBARS_STATE_HPP_INCLUDED | |||
| #define GLBARS_STATE_HPP_INCLUDED | |||
| #include "Base.hpp" | |||
| static inline | |||
| void draw_rectangle(GLfloat x1, GLfloat y1, GLfloat z1, GLfloat x2, GLfloat y2, GLfloat z2) | |||
| { | |||
| if (y1 == y2) | |||
| { | |||
| glVertex3f(x1, y1, z1); | |||
| glVertex3f(x2, y1, z1); | |||
| glVertex3f(x2, y2, z2); | |||
| glVertex3f(x2, y2, z2); | |||
| glVertex3f(x1, y2, z2); | |||
| glVertex3f(x1, y1, z1); | |||
| } | |||
| else | |||
| { | |||
| glVertex3f(x1, y1, z1); | |||
| glVertex3f(x2, y1, z2); | |||
| glVertex3f(x2, y2, z2); | |||
| glVertex3f(x2, y2, z2); | |||
| glVertex3f(x1, y2, z1); | |||
| glVertex3f(x1, y1, z1); | |||
| } | |||
| } | |||
| static inline | |||
| void draw_bar(GLenum mode, GLfloat x_offset, GLfloat z_offset, GLfloat height, GLfloat red, GLfloat green, GLfloat blue) | |||
| { | |||
| const GLfloat width = 0.1; | |||
| if (mode == GL_POINT) | |||
| glColor3f(0.2, 1.0, 0.2); | |||
| if (mode != GL_POINT) | |||
| { | |||
| glColor3f(red,green,blue); | |||
| draw_rectangle(x_offset, height, z_offset, x_offset + width, height, z_offset + 0.1); | |||
| } | |||
| draw_rectangle(x_offset, 0, z_offset, x_offset + width, 0, z_offset + 0.1); | |||
| if (mode != GL_POINT) | |||
| { | |||
| glColor3f(0.5 * red, 0.5 * green, 0.5 * blue); | |||
| draw_rectangle(x_offset, 0.0, z_offset + 0.1, x_offset + width, height, z_offset + 0.1); | |||
| } | |||
| draw_rectangle(x_offset, 0.0, z_offset, x_offset + width, height, z_offset ); | |||
| if (mode != GL_POINT) | |||
| { | |||
| glColor3f(0.25 * red, 0.25 * green, 0.25 * blue); | |||
| draw_rectangle(x_offset, 0.0, z_offset , x_offset, height, z_offset + 0.1); | |||
| } | |||
| draw_rectangle(x_offset + width, 0.0, z_offset , x_offset + width, height, z_offset + 0.1); | |||
| } | |||
| struct glBarsState { | |||
| GLenum g_mode; | |||
| GLfloat x_angle, x_speed; | |||
| GLfloat y_angle, y_speed; | |||
| GLfloat z_angle, z_speed; | |||
| GLfloat heights[16][16], cHeights[16][16], scale; | |||
| GLfloat hSpeed; | |||
| glBarsState() | |||
| { | |||
| g_mode = GL_FILL; | |||
| x_angle = 20.0; | |||
| x_speed = 0.0; | |||
| y_angle = 15.0; // was 45 | |||
| y_speed = 0.5; | |||
| z_angle = 0.0; | |||
| z_speed = 0.0; | |||
| // Set "Bar Height" | |||
| scale = 1.f / log(256.f); // "Default" / standard | |||
| //scale = 2.f / log(256.f); // "Big" | |||
| //scale = 3.f / log(256.f); // "Very Big" / real big | |||
| //scale = 0.33f / log(256.f); // unused | |||
| //scale = 0.5f / log(256.f); // "Small" | |||
| // Set "Speed" | |||
| //hSpeed = 0.025f; // "Slow" | |||
| hSpeed = 0.0125f; // "Default" | |||
| //hSpeed = 0.1f; // "Fast" | |||
| //hSpeed = 0.2f; // "Very Fast" | |||
| //hSpeed = 0.05f; // "Very Slow" | |||
| for (int x = 0; x < 16; x++) | |||
| { | |||
| for (int y = 0; y < 16; y++) | |||
| cHeights[y][x] = heights[y][x] = 0; | |||
| } | |||
| } | |||
| void drawBars() | |||
| { | |||
| GLfloat x_offset, z_offset, r_base, b_base; | |||
| glClear(GL_DEPTH_BUFFER_BIT); | |||
| glPushMatrix(); | |||
| glTranslatef(0.0,-0.5,-5.0); | |||
| glRotatef(x_angle,1.0,0.0,0.0); | |||
| glRotatef(y_angle,0.0,1.0,0.0); | |||
| glRotatef(z_angle,0.0,0.0,1.0); | |||
| glPolygonMode(GL_FRONT_AND_BACK, g_mode); | |||
| glBegin(GL_TRIANGLES); | |||
| for (int y = 0; y < 16; y++) | |||
| { | |||
| z_offset = -1.6 + ((15 - y) * 0.2); | |||
| b_base = y * (1.0 / 15); | |||
| r_base = 1.0 - b_base; | |||
| for (int x = 0; x < 16; x++) | |||
| { | |||
| x_offset = -1.6 + ((float)x * 0.2); | |||
| if (::fabs(cHeights[y][x]-heights[y][x])>hSpeed) | |||
| { | |||
| if (cHeights[y][x]<heights[y][x]) | |||
| cHeights[y][x] += hSpeed; | |||
| else | |||
| cHeights[y][x] -= hSpeed; | |||
| } | |||
| draw_bar(g_mode, x_offset, z_offset, | |||
| cHeights[y][x], r_base - (float(x) * (r_base / 15.0)), | |||
| (float)x * (1.0 / 15), b_base /*, 16*y+x*/); | |||
| } | |||
| } | |||
| glEnd(); | |||
| glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); | |||
| glPopMatrix(); | |||
| } | |||
| void Render() | |||
| { | |||
| glDisable(GL_BLEND); | |||
| glMatrixMode(GL_PROJECTION); | |||
| glPushMatrix(); | |||
| glLoadIdentity(); | |||
| glFrustum(-1, 1, -1, 1, 1.5, 10); | |||
| glMatrixMode(GL_MODELVIEW); | |||
| glPushMatrix(); | |||
| glLoadIdentity(); | |||
| glEnable(GL_DEPTH_TEST); | |||
| glDepthFunc(GL_LESS); | |||
| glPolygonMode(GL_FRONT, GL_FILL); | |||
| //glPolygonMode(GL_BACK, GL_FILL); | |||
| x_angle += x_speed; | |||
| if (x_angle >= 360.0) | |||
| x_angle -= 360.0; | |||
| y_angle += y_speed; | |||
| if (y_angle >= 360.0) | |||
| y_angle -= 360.0; | |||
| z_angle += z_speed; | |||
| if (z_angle >= 360.0) | |||
| z_angle -= 360.0; | |||
| drawBars(); | |||
| glPopMatrix(); | |||
| glMatrixMode(GL_PROJECTION); | |||
| glPopMatrix(); | |||
| glDisable(GL_DEPTH_TEST); | |||
| glEnable(GL_BLEND); | |||
| } | |||
| void AudioData(const float* pAudioData, int iAudioDataLength) | |||
| { | |||
| const int xscale[] = {0, 1, 2, 3, 5, 7, 10, 14, 20, 28, 40, 54, 74, 101, 137, 187, 255}; | |||
| GLfloat val; | |||
| for (int y = 15; y > 0; y--) | |||
| { | |||
| for (int i = 0; i < 16; i++) | |||
| heights[y][i] = heights[y - 1][i]; | |||
| } | |||
| for (int i = 0; i < 16; i++) | |||
| { | |||
| int y = 0; | |||
| for (int c = xscale[i]; c < xscale[i + 1]; c++) | |||
| { | |||
| if (c<iAudioDataLength) | |||
| { | |||
| if ((int)(pAudioData[c] * (INT16_MAX)) > y) | |||
| y = (int)(pAudioData[c] * (INT16_MAX)); | |||
| } | |||
| else | |||
| { | |||
| continue; | |||
| } | |||
| } | |||
| y >>= 7; | |||
| if (y > 0) | |||
| val = (logf(y) * scale); | |||
| else | |||
| val = 0; | |||
| heights[0][i] = val; | |||
| } | |||
| } | |||
| }; | |||
| #endif // GLBARS_STATE_HPP_INCLUDED | |||