/* * 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 * Copyright (C) 2015 Nedko Arnaudov * Copyright (C) 2016 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 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