/* * 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-2022 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), fInitialized(false), fResizeHandle(this) { const double scaleFactor = getScaleFactor(); if (d_isNotZero(scaleFactor)) setSize(512*scaleFactor, 512*scaleFactor); setGeometryConstraints(256*scaleFactor, 256*scaleFactor, true); // no need to show resize handle if window is user-resizable if (isResizable()) fResizeHandle.hide(); } DistrhoUIGLBars::~DistrhoUIGLBars() { if (! fInitialized) return; 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; fInitialized = true; const MutexLocker csm(dspPtr->fMutex); dspPtr->fState = &fState; } } // ----------------------------------------------------------------------- // Widget Callbacks void DistrhoUIGLBars::onDisplay() { fState.Render(); } // ----------------------------------------------------------------------- UI* createUI() { return new DistrhoUIGLBars(); } // ----------------------------------------------------------------------- END_NAMESPACE_DISTRHO