Fix memory leaks (#6879)

* Replace knobFModel with std::vector

* Create QPixmap's on the stack

* Assign parent for QGraphicsScene
A call to QGraphicsView::setScene does not make
the view take ownership of the scene.

* Do not allocate QList on the heap

* Use static QPixmap's
The QPixmap's need to be created within the constructor, and not outside
where they are defined, since it can't find them otherwise.
I'm not too sure why.

* Clear m_vi2->knobFModel in destructor

* Use local static QPixmap's

* Do not allocate QPixmap with new in AudioFileProcessor

* Do not allocate QPixmap with new in Nes

* Do not allocate QPixmap with new in Organic

* Do not allocate QPixmap with new in SaControlsDialog

* Do not allocate QPixmap with new in Vestige

* Do not allocate QPixmap with new for FileBrowser

* Do not allocate QPixmap with new in MixerLine

* Do not allocate QPixmap with new in SendButtonIndicator

* Do not allocate QPixmap with new in AutomationClipView

* Do not allocate QPixmap with new in MidiClipView

* Do not allocate QPixmap with new in AutomationEditor

* Do not allocate QPixmap with new in PianoRoll

* Do not allocate QPixmap with new in TimeLineWidget

* Do not allocate QPixmap with new in EnvelopeAndLfoView

* Do not allocate QPixmap with new in PianoView

* Do not allocate QPixmap with new in ComboBox

* Do not allocate QPixmap with new in Fader

* Do not allocate QPixmap with new for LcdWidget

* Do not allocate QPixmap with new for LedCheckbox

* Use m_ as prefix for members

* Use uniform initialization
I already started using uniform initialization for the QPixmap changes
for some reason, so I'm finishing that up.

* Uniform initiaization

* And then he realized he was making copies...

* Do not call QPixmap copy constructor

* Do not call QPixmap copy constructor in SaControlsDialog

* Do not make pixmap's static for Lcd's and Led's

* Initialize pixmaps in-class

* Fix few mistakes and formatting
This commit is contained in:
saker
2023-11-19 00:44:15 -05:00
committed by GitHub
parent fad0011508
commit aa050ae0b7
43 changed files with 289 additions and 729 deletions

View File

@@ -74,9 +74,6 @@ private:
QPixmap m_paintPixmap;
QStaticText m_staticTextName;
static QPixmap * s_clip_rec;
void scaleTimemapToFit( float oldMin, float oldMax );
} ;

View File

@@ -187,13 +187,13 @@ private:
AutomationEditor( const AutomationEditor & );
~AutomationEditor() override;
static QPixmap * s_toolDraw;
static QPixmap * s_toolErase;
static QPixmap * s_toolDrawOut;
static QPixmap * s_toolEditTangents;
static QPixmap * s_toolMove;
static QPixmap * s_toolYFlip;
static QPixmap * s_toolXFlip;
QPixmap m_toolDraw = embed::getIconPixmap("edit_draw");
QPixmap m_toolErase = embed::getIconPixmap("edit_erase");
QPixmap m_toolDrawOut = embed::getIconPixmap("edit_draw_outvalue");
QPixmap m_toolEditTangents = embed::getIconPixmap("edit_tangent");
QPixmap m_toolMove = embed::getIconPixmap("edit_move");
QPixmap m_toolYFlip = embed::getIconPixmap("flip_y");
QPixmap m_toolXFlip = embed::getIconPixmap("flip_x");
ComboBoxModel m_zoomingXModel;
ComboBoxModel m_zoomingYModel;

View File

@@ -66,9 +66,9 @@ protected:
private:
static QPixmap* s_background;
static QPixmap* s_arrow;
static QPixmap* s_arrowSelected;
QPixmap m_background = embed::getIconPixmap("combobox_bg");
QPixmap m_arrow = embed::getIconPixmap("combobox_arrow");
QPixmap m_arrowSelected = embed::getIconPixmap("combobox_arrow_selected");
QMenu m_menu;

View File

@@ -29,6 +29,7 @@
#include <QWidget>
#include "ModelView.h"
#include "embed.h"
class QPaintEvent;
class QPixmap;
@@ -71,8 +72,8 @@ protected slots:
private:
static QPixmap * s_envGraph;
static QPixmap * s_lfoGraph;
QPixmap m_envGraph = embed::getIconPixmap("envelope_graph");
QPixmap m_lfoGraph = embed::getIconPixmap("lfo_graph");
EnvelopeAndLfoParameters * m_params;

View File

@@ -53,6 +53,7 @@
#include "AutomatableModelView.h"
#include "embed.h"
namespace lmms::gui
@@ -131,7 +132,7 @@ private:
float fRange = model()->maxValue() - model()->minValue();
float realVal = model()->value() - model()->minValue();
return height() - ( ( height() - m_knob->height() ) * ( realVal / fRange ) );
return height() - ((height() - m_knob.height()) * (realVal / fRange));
}
void setPeak( float fPeak, float &targetPeak, float &persistentPeak, QElapsedTimer &lastPeakTimer );
@@ -151,13 +152,9 @@ private:
QElapsedTimer m_lastPeakTimer_L;
QElapsedTimer m_lastPeakTimer_R;
static QPixmap * s_back;
static QPixmap * s_leds;
static QPixmap * s_knob;
QPixmap * m_back;
QPixmap * m_leds;
QPixmap * m_knob;
QPixmap m_back = embed::getIconPixmap("fader_background");
QPixmap m_leds = embed::getIconPixmap("fader_leds");
QPixmap m_knob = embed::getIconPixmap("fader_knob");
bool m_levelsDisplayedInDBFS;

View File

@@ -28,6 +28,7 @@
#include <QCheckBox>
#include <QDir>
#include <QMutex>
#include "embed.h"
#include "FileBrowserSearcher.h"
#include <QProgressBar>
@@ -221,14 +222,12 @@ public:
private:
void initPixmaps();
bool addItems( const QString & path );
static QPixmap * s_folderPixmap;
static QPixmap * s_folderOpenedPixmap;
static QPixmap * s_folderLockedPixmap;
QPixmap m_folderPixmap = embed::getIconPixmap("folder");
QPixmap m_folderOpenedPixmap = embed::getIconPixmap("folder_opened");
QPixmap m_folderLockedPixmap = embed::getIconPixmap("folder_locked");
//! Directories that lead here
//! Initially, this is just set to the current path of a directory
@@ -305,14 +304,6 @@ private:
void initPixmaps();
void determineFileType();
static QPixmap * s_projectFilePixmap;
static QPixmap * s_presetFilePixmap;
static QPixmap * s_sampleFilePixmap;
static QPixmap * s_soundfontFilePixmap;
static QPixmap * s_vstPluginFilePixmap;
static QPixmap * s_midiFilePixmap;
static QPixmap * s_unknownFilePixmap;
QString m_path;
FileType m_type;
FileHandling m_handling;

View File

@@ -47,8 +47,6 @@ public:
LcdWidget(int numDigits, const QString& style, QWidget* parent, const QString& name = QString(),
bool leadingZero = false);
~LcdWidget() override;
void setValue(int value);
void setValue(float value);
void setLabel(const QString& label);
@@ -98,7 +96,7 @@ private:
QString m_display;
QString m_label;
QPixmap* m_lcdPixmap;
QPixmap m_lcdPixmap;
QColor m_textColor;
QColor m_textShadowColor;

View File

@@ -54,9 +54,6 @@ public:
LedColor _color = LedColor::Yellow,
bool legacyMode = true);
~LedCheckBox() override;
inline const QString & text()
{
return( m_text );
@@ -71,8 +68,8 @@ protected:
private:
QPixmap * m_ledOnPixmap;
QPixmap * m_ledOffPixmap;
QPixmap m_ledOnPixmap;
QPixmap m_ledOffPixmap;
QString m_text;

View File

@@ -27,6 +27,7 @@
#include <QStaticText>
#include "ClipView.h"
#include "embed.h"
namespace lmms
{
@@ -85,10 +86,10 @@ protected:
private:
static QPixmap * s_stepBtnOn0;
static QPixmap * s_stepBtnOn200;
static QPixmap * s_stepBtnOff;
static QPixmap * s_stepBtnOffLight;
QPixmap m_stepBtnOn0 = embed::getIconPixmap("step_btn_on_0");
QPixmap m_stepBtnOn200 = embed::getIconPixmap("step_btn_on_200");
QPixmap m_stepBtnOff = embed::getIconPixmap("step_btn_off");
QPixmap m_stepBtnOffLight = embed::getIconPixmap("step_btn_off_light");
MidiClip* m_clip;
QPixmap m_paintPixmap;

View File

@@ -94,8 +94,6 @@ private:
QColor m_strokeOuterInactive;
QColor m_strokeInnerActive;
QColor m_strokeInnerInactive;
static QPixmap * s_sendBgArrow;
static QPixmap * s_receiveBgArrow;
bool m_inRename;
QLineEdit * m_renameLineEdit;
QGraphicsView * m_view;

View File

@@ -340,12 +340,12 @@ private:
static const int cm_scrollAmtHoriz = 10;
static const int cm_scrollAmtVert = 1;
static QPixmap * s_toolDraw;
static QPixmap * s_toolErase;
static QPixmap * s_toolSelect;
static QPixmap * s_toolMove;
static QPixmap * s_toolOpen;
static QPixmap* s_toolKnife;
QPixmap m_toolDraw = embed::getIconPixmap("edit_draw");
QPixmap m_toolErase = embed::getIconPixmap("edit_erase");
QPixmap m_toolSelect = embed::getIconPixmap("edit_select");
QPixmap m_toolMove = embed::getIconPixmap("edit_move");
QPixmap m_toolOpen = embed::getIconPixmap("automation");
QPixmap m_toolKnife = embed::getIconPixmap("edit_knife");
static std::array<KeyType, 12> prKeyOrder;

View File

@@ -30,6 +30,7 @@
#include "AutomatableModel.h"
#include "ModelView.h"
#include "embed.h"
namespace lmms
{
@@ -73,12 +74,12 @@ private:
int getKeyHeight(int key_num) const;
IntModel *getNearestMarker(int key, QString* title = nullptr);
static QPixmap * s_whiteKeyPm;
static QPixmap * s_blackKeyPm;
static QPixmap * s_whiteKeyPressedPm;
static QPixmap * s_blackKeyPressedPm;
static QPixmap * s_whiteKeyDisabledPm;
static QPixmap * s_blackKeyDisabledPm;
QPixmap m_whiteKeyPm = embed::getIconPixmap("white_key");
QPixmap m_blackKeyPm = embed::getIconPixmap("black_key");
QPixmap m_whiteKeyPressedPm = embed::getIconPixmap("white_key_pressed");
QPixmap m_blackKeyPressedPm = embed::getIconPixmap("black_key_pressed");
QPixmap m_whiteKeyDisabledPm = embed::getIconPixmap("white_key_disabled");
QPixmap m_blackKeyDisabledPm = embed::getIconPixmap("black_key_disabled");
Piano * m_piano;

View File

@@ -26,6 +26,7 @@
#define LMMS_GUI_SEND_BUTTON_INDICATOR_H
#include <QLabel>
#include "embed.h"
namespace lmms
@@ -53,8 +54,8 @@ private:
MixerLine * m_parent;
MixerView * m_mv;
static QPixmap * s_qpmOn;
static QPixmap * s_qpmOff;
QPixmap m_qpmOff = embed::getIconPixmap("mixer_send_off", 29, 20);
QPixmap m_qpmOn = embed::getIconPixmap("mixer_send_on", 29, 20);
FloatModel * getSendModel();
};

View File

@@ -28,6 +28,7 @@
#include <QWidget>
#include "Song.h"
#include "embed.h"
class QPixmap;
@@ -205,7 +206,7 @@ protected:
private:
static QPixmap * s_posMarkerPixmap;
QPixmap m_posMarkerPixmap = embed::getIconPixmap("playpos_marker");
QColor m_inactiveLoopColor;
QBrush m_inactiveLoopBrush;

View File

@@ -451,19 +451,12 @@ namespace gui
{
QPixmap * AudioFileProcessorView::s_artwork = nullptr;
AudioFileProcessorView::AudioFileProcessorView( Instrument * _instrument,
QWidget * _parent ) :
InstrumentViewFixedSize( _instrument, _parent )
{
if( s_artwork == nullptr )
{
s_artwork = new QPixmap( PLUGIN_NAME::getIconPixmap(
"artwork" ) );
}
m_openAudioFileButton = new PixmapButton( this );
m_openAudioFileButton->setCursor( QCursor( Qt::PointingHandCursor ) );
m_openAudioFileButton->move( 227, 72 );
@@ -649,7 +642,8 @@ void AudioFileProcessorView::paintEvent( QPaintEvent * )
{
QPainter p( this );
p.drawPixmap( 0, 0, *s_artwork );
static auto s_artwork = PLUGIN_NAME::getIconPixmap("artwork");
p.drawPixmap(0, 0, s_artwork);
auto a = castModel<AudioFileProcessor>();

View File

@@ -145,7 +145,6 @@ protected:
private:
virtual void modelChanged();
static QPixmap * s_artwork;
AudioFileProcessorWaveView * m_waveView;
Knob * m_ampKnob;

View File

@@ -72,17 +72,17 @@ EqControlsDialog::EqControlsDialog( EqControls *controls ) :
setBand( 6, &controls->m_highShelfActiveModel, &controls->m_highShelfFreqModel, &controls->m_highShelfResModel, &controls->m_highShelfGainModel, QColor(255 ,255, 255), tr( "High-shelf" ), &controls->m_highShelfPeakL, &controls->m_highShelfPeakR,0,0,0,0,0,0 );
setBand( 7, &controls->m_lpActiveModel, &controls->m_lpFreqModel, &controls->m_lpResModel, 0, QColor(255 ,255, 255), tr( "LP" ) ,0,0,0,0,0, &controls->m_lp12Model, &controls->m_lp24Model, &controls->m_lp48Model);
auto faderBg = new QPixmap(PLUGIN_NAME::getIconPixmap("faderback"));
auto faderLeds = new QPixmap(PLUGIN_NAME::getIconPixmap("faderleds"));
auto faderKnob = new QPixmap(PLUGIN_NAME::getIconPixmap("faderknob"));
static auto s_faderBg = PLUGIN_NAME::getIconPixmap("faderback");
static auto s_faderLeds = PLUGIN_NAME::getIconPixmap("faderleds");
static auto s_faderKnob = PLUGIN_NAME::getIconPixmap("faderknob");
auto GainFaderIn = new EqFader(&controls->m_inGainModel, tr("Input gain"), this, faderBg, faderLeds, faderKnob,
auto GainFaderIn = new EqFader(&controls->m_inGainModel, tr("Input gain"), this, &s_faderBg, &s_faderLeds, &s_faderKnob,
&controls->m_inPeakL, &controls->m_inPeakR);
GainFaderIn->move( 23, 295 );
GainFaderIn->setDisplayConversion( false );
GainFaderIn->setHintText( tr( "Gain" ), "dBv");
auto GainFaderOut = new EqFader(&controls->m_outGainModel, tr("Output gain"), this, faderBg, faderLeds, faderKnob,
auto GainFaderOut = new EqFader(&controls->m_outGainModel, tr("Output gain"), this, &s_faderBg, &s_faderLeds, &s_faderKnob,
&controls->m_outPeakL, &controls->m_outPeakR);
GainFaderOut->move( 453, 295);
GainFaderOut->setDisplayConversion( false );
@@ -92,8 +92,8 @@ EqControlsDialog::EqControlsDialog( EqControls *controls ) :
int distance = 126;
for( int i = 1; i < m_parameterWidget->bandCount() - 1; i++ )
{
auto gainFader = new EqFader(m_parameterWidget->getBandModels(i)->gain, tr(""), this, faderBg, faderLeds,
faderKnob, m_parameterWidget->getBandModels(i)->peakL, m_parameterWidget->getBandModels(i)->peakR);
auto gainFader = new EqFader(m_parameterWidget->getBandModels(i)->gain, tr(""), this, &s_faderBg, &s_faderLeds,
&s_faderKnob, m_parameterWidget->getBandModels(i)->peakL, m_parameterWidget->getBandModels(i)->peakR);
gainFader->move( distance, 295 );
distance += 44;
gainFader->setMinimumHeight(80);
@@ -242,4 +242,4 @@ EqBand* EqControlsDialog::setBand(int index, BoolModel* active, FloatModel* freq
}
} // namespace lmms::gui
} // namespace lmms::gui

View File

@@ -56,7 +56,7 @@ EqParameterWidget::EqParameterWidget( QWidget *parent, EqControls * controls ) :
m_pixelsPerOctave = EqHandle::freqToXPixel( 10000, m_displayWidth ) - EqHandle::freqToXPixel( 5000, m_displayWidth );
//GraphicsScene and GraphicsView stuff
auto scene = new QGraphicsScene();
auto scene = new QGraphicsScene(this);
scene->setSceneRect( 0, 0, m_displayWidth, m_displayHeigth );
auto view = new QGraphicsView(this);
view->setStyleSheet( "border-style: none; background: transparent;" );
@@ -65,22 +65,22 @@ EqParameterWidget::EqParameterWidget( QWidget *parent, EqControls * controls ) :
view->setScene( scene );
//adds the handles
m_handleList = new QList<EqHandle*>;
m_handleList.reserve(bandCount());
for ( int i = 0; i < bandCount(); i++ )
{
m_handle = new EqHandle ( i, m_displayWidth, m_displayHeigth );
m_handleList->append( m_handle );
m_handleList.append(m_handle);
m_handle->setZValue( 1 );
scene->addItem( m_handle );
}
//adds the curve widget
m_eqcurve = new EqCurve( m_handleList, m_displayWidth, m_displayHeigth );
m_eqcurve = new EqCurve(&m_handleList, m_displayWidth, m_displayHeigth);
scene->addItem( m_eqcurve );
for ( int i = 0; i < bandCount(); i++ )
{
// if the data of handle position has changed update the models
QObject::connect( m_handleList->at( i ) ,SIGNAL( positionChanged() ), this ,SLOT( updateModels() ) );
QObject::connect(m_handleList.at(i), SIGNAL(positionChanged()), this, SLOT(updateModels()));
}
}
@@ -112,16 +112,13 @@ void EqParameterWidget::updateHandle()
m_eqcurve->setModelChanged( true );
for( int i = 0 ; i < bandCount(); i++ )
{
if ( !m_handleList->at( i )->mousePressed() ) //prevents a short circuit between handle and data model
if (!m_handleList.at(i)->mousePressed()) // prevents a short circuit between handle and data model
{
//sets the band on active if a fader or a knob is moved
bool hover = false; // prevents an action if handle is moved
for ( int j = 0; j < bandCount(); j++ )
{
if ( m_handleList->at(j)->isMouseHover() )
{
hover = true;
}
if (m_handleList.at(j)->isMouseHover()) { hover = true; }
}
if ( !hover )
{
@@ -131,17 +128,14 @@ void EqParameterWidget::updateHandle()
}
changeHandle( i );
}
else
{
m_handleList->at( i )->setHandleActive( m_bands[i].active->value() );
}
else { m_handleList.at(i)->setHandleActive(m_bands[i].active->value()); }
}
if ( m_bands[0].hp12->value() ) m_handleList->at( 0 )->sethp12();
if ( m_bands[0].hp24->value() ) m_handleList->at( 0 )->sethp24();
if ( m_bands[0].hp48->value() ) m_handleList->at( 0 )->sethp48();
if ( m_bands[7].lp12->value() ) m_handleList->at( 7 )->setlp12();
if ( m_bands[7].lp24->value() ) m_handleList->at( 7 )->setlp24();
if ( m_bands[7].lp48->value() ) m_handleList->at( 7 )->setlp48();
if (m_bands[0].hp12->value()) m_handleList.at(0)->sethp12();
if (m_bands[0].hp24->value()) m_handleList.at(0)->sethp24();
if (m_bands[0].hp48->value()) m_handleList.at(0)->sethp48();
if (m_bands[7].lp12->value()) m_handleList.at(7)->setlp12();
if (m_bands[7].lp24->value()) m_handleList.at(7)->setlp24();
if (m_bands[7].lp48->value()) m_handleList.at(7)->setlp48();
}
@@ -151,7 +145,7 @@ void EqParameterWidget::changeHandle( int i )
{
//fill x, y, and bw with data from model
float x = EqHandle::freqToXPixel( m_bands[i].freq->value(), m_displayWidth );
float y = m_handleList->at( i )->y();
float y = m_handleList.at(i)->y();
//for pass filters there is no gain model
if( m_bands[i].gain )
{
@@ -164,48 +158,45 @@ void EqParameterWidget::changeHandle( int i )
switch ( i )
{
case 0 :
m_handleList->at( i )->setType( EqHandleType::HighPass );
m_handleList->at( i )->setPos( x, m_displayHeigth / 2 );
m_handleList.at(i)->setType(EqHandleType::HighPass);
m_handleList.at(i)->setPos(x, m_displayHeigth / 2);
break;
case 1:
m_handleList->at( i )->setType( EqHandleType::LowShelf );
m_handleList->at( i )->setPos( x, y );
m_handleList.at(i)->setType(EqHandleType::LowShelf);
m_handleList.at(i)->setPos(x, y);
break;
case 2:
m_handleList->at( i )->setType( EqHandleType::Para );
m_handleList->at( i )->setPos( x, y );
m_handleList.at(i)->setType(EqHandleType::Para);
m_handleList.at(i)->setPos(x, y);
break;
case 3:
m_handleList->at( i )->setType( EqHandleType::Para );
m_handleList->at( i )->setPos( x, y );
m_handleList.at(i)->setType(EqHandleType::Para);
m_handleList.at(i)->setPos(x, y);
break;
case 4:
m_handleList->at( i )->setType( EqHandleType::Para );
m_handleList->at( i )->setPos( x, y );
m_handleList.at(i)->setType(EqHandleType::Para);
m_handleList.at(i)->setPos(x, y);
break;
case 5:
m_handleList->at( i )->setType( EqHandleType::Para );
m_handleList->at( i )->setPos( x, y );
m_handleList.at(i)->setType(EqHandleType::Para);
m_handleList.at(i)->setPos(x, y);
break;
case 6:
m_handleList->at( i )->setType( EqHandleType::HighShelf );
m_handleList->at( i )->setPos( x, y );
m_handleList.at(i)->setType(EqHandleType::HighShelf);
m_handleList.at(i)->setPos(x, y);
break;
case 7:
m_handleList->at( i )->setType( EqHandleType::LowPass );
m_handleList->at( i )->setPos( QPointF( x, m_displayHeigth / 2 ) );
m_handleList.at(i)->setType(EqHandleType::LowPass);
m_handleList.at(i)->setPos(QPointF(x, m_displayHeigth / 2));
break;
}
// set resonance/bandwidth for each handle
if ( m_handleList->at( i )->getResonance() != bw )
{
m_handleList->at( i )->setResonance( bw );
}
if (m_handleList.at(i)->getResonance() != bw) { m_handleList.at(i)->setResonance(bw); }
// and the active status
m_handleList->at( i )->setHandleActive( m_bands[i].active->value() );
m_handleList->at( i )->update();
m_handleList.at(i)->setHandleActive(m_bands[i].active->value());
m_handleList.at(i)->update();
m_eqcurve->update();
}
@@ -216,19 +207,17 @@ void EqParameterWidget::updateModels()
{
for ( int i=0 ; i < bandCount(); i++ )
{
m_bands[i].freq->setValue( EqHandle::xPixelToFreq( m_handleList->at( i )->x(), m_displayWidth ) );
m_bands[i].freq->setValue(EqHandle::xPixelToFreq(m_handleList.at(i)->x(), m_displayWidth));
if( m_bands[i].gain )
{
m_bands[i].gain->setValue( EqHandle::yPixelToGain( m_handleList->at(i)->y(), m_displayHeigth, m_pixelsPerUnitHeight ) );
m_bands[i].gain->setValue(
EqHandle::yPixelToGain(m_handleList.at(i)->y(), m_displayHeigth, m_pixelsPerUnitHeight));
}
m_bands[i].res->setValue( m_handleList->at( i )->getResonance() );
m_bands[i].res->setValue(m_handleList.at(i)->getResonance());
//identifies the handle which is moved and set the band active
if ( sender() == m_handleList->at( i ) )
{
m_bands[i].active->setValue( true );
}
if (sender() == m_handleList.at(i)) { m_bands[i].active->setValue(true); }
}
m_eqcurve->update();
}

View File

@@ -75,7 +75,7 @@ class EqParameterWidget : public QWidget
public:
explicit EqParameterWidget( QWidget *parent = 0, EqControls * controls = 0 );
~EqParameterWidget() override;
QList<EqHandle*> *m_handleList;
QList<EqHandle*> m_handleList;
const int bandCount()
{

View File

@@ -719,7 +719,6 @@ namespace gui
{
QPixmap * NesInstrumentView::s_artwork = nullptr;
NesInstrumentView::NesInstrumentView( Instrument * instrument, QWidget * parent ) :
@@ -728,12 +727,8 @@ NesInstrumentView::NesInstrumentView( Instrument * instrument, QWidget * parent
setAutoFillBackground( true );
QPalette pal;
if( s_artwork == nullptr )
{
s_artwork = new QPixmap( PLUGIN_NAME::getIconPixmap( "artwork" ) );
}
pal.setBrush( backgroundRole(), *s_artwork );
static auto s_artwork = PLUGIN_NAME::getIconPixmap("artwork");
pal.setBrush(backgroundRole(), s_artwork);
setPalette( pal );
const int KNOB_Y1 = 24;

View File

@@ -372,7 +372,6 @@ private:
Knob * m_masterVolKnob;
Knob * m_vibratoKnob;
static QPixmap * s_artwork;
};

View File

@@ -60,7 +60,6 @@ Plugin::Descriptor PLUGIN_EXPORT organic_plugin_descriptor =
}
QPixmap * gui::OrganicInstrumentView::s_artwork = nullptr;
float * OrganicInstrument::s_harmonics = nullptr;
/***********************************************************************
@@ -420,8 +419,8 @@ OrganicInstrumentView::OrganicInstrumentView( Instrument * _instrument,
setAutoFillBackground( true );
QPalette pal;
pal.setBrush( backgroundRole(), PLUGIN_NAME::getIconPixmap(
"artwork" ) );
static auto s_artwork = PLUGIN_NAME::getIconPixmap("artwork");
pal.setBrush(backgroundRole(), s_artwork);
setPalette( pal );
// setup knob for FX1
@@ -451,12 +450,6 @@ OrganicInstrumentView::OrganicInstrumentView( Instrument * _instrument,
oi, SLOT( randomiseSettings() ) );
if( s_artwork == nullptr )
{
s_artwork = new QPixmap( PLUGIN_NAME::getIconPixmap(
"artwork" ) );
}
}

View File

@@ -227,7 +227,6 @@ private:
int m_numOscillators;
static QPixmap * s_artwork;
protected slots:
void updateKnobHint();

View File

@@ -89,28 +89,28 @@ SaControlsDialog::SaControlsDialog(SaControls *controls, SaProcessor *processor)
// pause and freeze buttons
auto pauseButton = new PixmapButton(this, tr("Pause"));
pauseButton->setToolTip(tr("Pause data acquisition"));
auto pauseOnPixmap = new QPixmap(
PLUGIN_NAME::getIconPixmap("play").scaled(buttonSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation));
auto pauseOffPixmap = new QPixmap(
PLUGIN_NAME::getIconPixmap("pause").scaled(buttonSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation));
pauseOnPixmap->setDevicePixelRatio(devicePixelRatio());
pauseOffPixmap->setDevicePixelRatio(devicePixelRatio());
pauseButton->setActiveGraphic(*pauseOnPixmap);
pauseButton->setInactiveGraphic(*pauseOffPixmap);
static auto s_pauseOnPixmap
= PLUGIN_NAME::getIconPixmap("play").scaled(buttonSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
static auto s_pauseOffPixmap
= PLUGIN_NAME::getIconPixmap("pause").scaled(buttonSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
s_pauseOnPixmap.setDevicePixelRatio(devicePixelRatio());
s_pauseOffPixmap.setDevicePixelRatio(devicePixelRatio());
pauseButton->setActiveGraphic(s_pauseOnPixmap);
pauseButton->setInactiveGraphic(s_pauseOffPixmap);
pauseButton->setCheckable(true);
pauseButton->setModel(&controls->m_pauseModel);
config_layout->addWidget(pauseButton, 0, 0, 2, 1, Qt::AlignHCenter);
auto refFreezeButton = new PixmapButton(this, tr("Reference freeze"));
refFreezeButton->setToolTip(tr("Freeze current input as a reference / disable falloff in peak-hold mode."));
auto freezeOnPixmap = new QPixmap(
PLUGIN_NAME::getIconPixmap("freeze").scaled(buttonSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation));
auto freezeOffPixmap = new QPixmap(
PLUGIN_NAME::getIconPixmap("freeze_off").scaled(buttonSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation));
freezeOnPixmap->setDevicePixelRatio(devicePixelRatio());
freezeOffPixmap->setDevicePixelRatio(devicePixelRatio());
refFreezeButton->setActiveGraphic(*freezeOnPixmap);
refFreezeButton->setInactiveGraphic(*freezeOffPixmap);
static auto s_freezeOnPixmap
= PLUGIN_NAME::getIconPixmap("freeze").scaled(buttonSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
static auto s_freezeOffPixmap
= PLUGIN_NAME::getIconPixmap("freeze_off").scaled(buttonSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
s_freezeOnPixmap.setDevicePixelRatio(devicePixelRatio());
s_freezeOffPixmap.setDevicePixelRatio(devicePixelRatio());
refFreezeButton->setActiveGraphic(s_freezeOnPixmap);
refFreezeButton->setInactiveGraphic(s_freezeOffPixmap);
refFreezeButton->setCheckable(true);
refFreezeButton->setModel(&controls->m_refFreezeModel);
config_layout->addWidget(refFreezeButton, 2, 0, 2, 1, Qt::AlignHCenter);
@@ -147,14 +147,14 @@ SaControlsDialog::SaControlsDialog(SaControls *controls, SaProcessor *processor)
// frequency: linear / log. switch and range selector
auto logXButton = new PixmapButton(this, tr("Logarithmic frequency"));
logXButton->setToolTip(tr("Switch between logarithmic and linear frequency scale"));
auto logXOnPixmap = new QPixmap(
PLUGIN_NAME::getIconPixmap("x_log").scaled(iconSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation));
auto logXOffPixmap = new QPixmap(
PLUGIN_NAME::getIconPixmap("x_linear").scaled(iconSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation));
logXOnPixmap->setDevicePixelRatio(devicePixelRatio());
logXOffPixmap->setDevicePixelRatio(devicePixelRatio());
logXButton->setActiveGraphic(*logXOnPixmap);
logXButton->setInactiveGraphic(*logXOffPixmap);
static auto s_logXOnPixmap
= PLUGIN_NAME::getIconPixmap("x_log").scaled(iconSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
static auto s_logXOffPixmap
= PLUGIN_NAME::getIconPixmap("x_linear").scaled(iconSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
s_logXOnPixmap.setDevicePixelRatio(devicePixelRatio());
s_logXOffPixmap.setDevicePixelRatio(devicePixelRatio());
logXButton->setActiveGraphic(s_logXOnPixmap);
logXButton->setInactiveGraphic(s_logXOffPixmap);
logXButton->setCheckable(true);
logXButton->setModel(&controls->m_logXModel);
config_layout->addWidget(logXButton, 0, 2, 2, 1, Qt::AlignRight);
@@ -169,14 +169,14 @@ SaControlsDialog::SaControlsDialog(SaControls *controls, SaProcessor *processor)
// amplitude: linear / log switch and range selector
auto logYButton = new PixmapButton(this, tr("Logarithmic amplitude"));
logYButton->setToolTip(tr("Switch between logarithmic and linear amplitude scale"));
auto logYOnPixmap = new QPixmap(
PLUGIN_NAME::getIconPixmap("y_log").scaled(iconSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation));
auto logYOffPixmap = new QPixmap(
PLUGIN_NAME::getIconPixmap("y_linear").scaled(iconSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation));
logYOnPixmap->setDevicePixelRatio(devicePixelRatio());
logYOffPixmap->setDevicePixelRatio(devicePixelRatio());
logYButton->setActiveGraphic(*logYOnPixmap);
logYButton->setInactiveGraphic(*logYOffPixmap);
static auto s_logYOnPixmap
= PLUGIN_NAME::getIconPixmap("y_log").scaled(iconSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
static auto s_logYOffPixmap
= PLUGIN_NAME::getIconPixmap("y_linear").scaled(iconSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
s_logYOnPixmap.setDevicePixelRatio(devicePixelRatio());
s_logYOffPixmap.setDevicePixelRatio(devicePixelRatio());
logYButton->setActiveGraphic(s_logYOnPixmap);
logYButton->setInactiveGraphic(s_logYOffPixmap);
logYButton->setCheckable(true);
logYButton->setModel(&controls->m_logYModel);
config_layout->addWidget(logYButton, 2, 2, 2, 1, Qt::AlignRight);
@@ -190,9 +190,9 @@ SaControlsDialog::SaControlsDialog(SaControls *controls, SaProcessor *processor)
// FFT: block size: icon and selector
auto blockSizeLabel = new QLabel("", this);
auto blockSizeIcon = new QPixmap(PLUGIN_NAME::getIconPixmap("block_size"));
blockSizeIcon->setDevicePixelRatio(devicePixelRatio());
blockSizeLabel->setPixmap(blockSizeIcon->scaled(iconSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation));
static auto s_blockSizeIcon = PLUGIN_NAME::getIconPixmap("block_size");
s_blockSizeIcon.setDevicePixelRatio(devicePixelRatio());
blockSizeLabel->setPixmap(s_blockSizeIcon.scaled(iconSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation));
config_layout->addWidget(blockSizeLabel, 0, 4, 2, 1, Qt::AlignRight);
auto blockSizeCombo = new ComboBox(this, tr("FFT block size"));
@@ -206,9 +206,9 @@ SaControlsDialog::SaControlsDialog(SaControls *controls, SaProcessor *processor)
// FFT: window type: icon and selector
auto windowLabel = new QLabel("", this);
auto windowIcon = new QPixmap(PLUGIN_NAME::getIconPixmap("window"));
windowIcon->setDevicePixelRatio(devicePixelRatio());
windowLabel->setPixmap(windowIcon->scaled(iconSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation));
static auto s_windowIcon = PLUGIN_NAME::getIconPixmap("window");
s_windowIcon.setDevicePixelRatio(devicePixelRatio());
windowLabel->setPixmap(s_windowIcon.scaled(iconSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation));
config_layout->addWidget(windowLabel, 2, 4, 2, 1, Qt::AlignRight);
auto windowCombo = new ComboBox(this, tr("FFT window type"));
@@ -307,14 +307,14 @@ SaControlsDialog::SaControlsDialog(SaControls *controls, SaProcessor *processor)
// Advanced settings button
auto advancedButton = new PixmapButton(this, tr("Advanced settings"));
advancedButton->setToolTip(tr("Access advanced settings"));
auto advancedOnPixmap = new QPixmap(PLUGIN_NAME::getIconPixmap("advanced_on")
.scaled(advButtonSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation));
auto advancedOffPixmap = new QPixmap(PLUGIN_NAME::getIconPixmap("advanced_off")
.scaled(advButtonSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation));
advancedOnPixmap->setDevicePixelRatio(devicePixelRatio());
advancedOffPixmap->setDevicePixelRatio(devicePixelRatio());
advancedButton->setActiveGraphic(*advancedOnPixmap);
advancedButton->setInactiveGraphic(*advancedOffPixmap);
static auto s_advancedOnPixmap = PLUGIN_NAME::getIconPixmap("advanced_on")
.scaled(advButtonSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
static auto s_advancedOffPixmap = PLUGIN_NAME::getIconPixmap("advanced_off")
.scaled(advButtonSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
s_advancedOnPixmap.setDevicePixelRatio(devicePixelRatio());
s_advancedOffPixmap.setDevicePixelRatio(devicePixelRatio());
advancedButton->setActiveGraphic(s_advancedOnPixmap);
advancedButton->setInactiveGraphic(s_advancedOffPixmap);
advancedButton->setCheckable(true);
controls_layout->addStretch(0);
controls_layout->addWidget(advancedButton);

View File

@@ -485,21 +485,11 @@ gui::PluginView * VestigeInstrument::instantiateView( QWidget * _parent )
namespace gui
{
QPixmap * VestigeInstrumentView::s_artwork = nullptr;
QPixmap * ManageVestigeInstrumentView::s_artwork = nullptr;
VestigeInstrumentView::VestigeInstrumentView( Instrument * _instrument,
QWidget * _parent ) :
InstrumentViewFixedSize( _instrument, _parent ),
lastPosInMenu (0)
{
if( s_artwork == nullptr )
{
s_artwork = new QPixmap( PLUGIN_NAME::getIconPixmap(
"artwork" ) );
}
m_openPluginButton = new PixmapButton( this, "" );
m_openPluginButton->setCheckable( false );
m_openPluginButton->setCursor( Qt::PointingHandCursor );
@@ -881,7 +871,8 @@ void VestigeInstrumentView::paintEvent( QPaintEvent * )
{
QPainter p( this );
p.drawPixmap( 0, 0, *s_artwork );
static auto s_artwork = PLUGIN_NAME::getIconPixmap("artwork");
p.drawPixmap(0, 0, s_artwork);
QString plugin_name = ( m_vi->m_plugin != nullptr ) ?
m_vi->m_plugin->name()/* + QString::number(

View File

@@ -131,8 +131,6 @@ protected:
private:
static QPixmap * s_artwork;
VestigeInstrument * m_vi;
QWidget *widget;
@@ -175,7 +173,6 @@ protected:
private:
virtual void modelChanged();
static QPixmap * s_artwork;
VestigeInstrument * m_vi;

View File

@@ -50,7 +50,6 @@ VstEffectControls::VstEffectControls( VstEffect * _eff ) :
EffectControls( _eff ),
m_effect( _eff ),
m_subWindow( nullptr ),
knobFModel( nullptr ),
ctrHandle( nullptr ),
lastPosInMenu (0),
m_vstGuiVisible ( true )
@@ -84,7 +83,7 @@ void VstEffectControls::loadSettings( const QDomElement & _this )
const QMap<QString, QString> & dump = m_effect->m_plugin->parameterDump();
paramCount = dump.size();
auto paramStr = std::array<char, 35>{};
knobFModel = new FloatModel *[ paramCount ];
knobFModel.resize(paramCount);
QStringList s_dumpValues;
for( int i = 0; i < paramCount; i++ )
{
@@ -131,7 +130,7 @@ void VstEffectControls::saveSettings( QDomDocument & _doc, QDomElement & _this )
if( m_effect->m_plugin != nullptr )
{
m_effect->m_plugin->saveSettings( _doc, _this );
if (knobFModel != nullptr) {
if (!knobFModel.empty()) {
const QMap<QString, QString> & dump = m_effect->m_plugin->parameterDump();
paramCount = dump.size();
auto paramStr = std::array<char, 35>{};
@@ -376,8 +375,9 @@ ManageVSTEffectView::ManageVSTEffectView( VstEffect * _eff, VstEffectControls *
vstKnobs = new CustomTextKnob *[ m_vi->paramCount ];
bool hasKnobModel = true;
if (m_vi->knobFModel == nullptr) {
m_vi->knobFModel = new FloatModel *[ m_vi->paramCount ];
if (m_vi->knobFModel.empty())
{
m_vi->knobFModel.resize(m_vi->paramCount);
hasKnobModel = false;
}
@@ -543,7 +543,7 @@ void ManageVSTEffectView::syncParameterText()
ManageVSTEffectView::~ManageVSTEffectView()
{
if( m_vi2->knobFModel != nullptr )
if (!m_vi2->knobFModel.empty())
{
for( int i = 0; i < m_vi2->paramCount; i++ )
{
@@ -558,11 +558,7 @@ ManageVSTEffectView::~ManageVSTEffectView()
vstKnobs = nullptr;
}
if( m_vi2->knobFModel != nullptr )
{
delete [] m_vi2->knobFModel;
m_vi2->knobFModel = nullptr;
}
m_vi2->knobFModel.clear();
if( m_vi2->m_scrollArea != nullptr )
{

View File

@@ -89,7 +89,7 @@ private:
QMdiSubWindow * m_subWindow;
QScrollArea * m_scrollArea;
FloatModel ** knobFModel;
std::vector<FloatModel*> knobFModel;
int paramCount;
QObject * ctrHandle;

View File

@@ -1011,11 +1011,6 @@ void FileBrowserTreeWidget::updateDirectory(QTreeWidgetItem * item )
}
}
QPixmap * Directory::s_folderPixmap = nullptr;
QPixmap * Directory::s_folderOpenedPixmap = nullptr;
QPixmap * Directory::s_folderLockedPixmap = nullptr;
Directory::Directory(const QString& filename, const QString& path, const QString& filter, bool disableEntryPopulation)
: QTreeWidgetItem(QStringList(filename), TypeDirectoryItem)
, m_directories(path)
@@ -1023,56 +1018,19 @@ Directory::Directory(const QString& filename, const QString& path, const QString
, m_dirCount(0)
, m_disableEntryPopulation(disableEntryPopulation)
{
initPixmaps();
setIcon(0, !QDir{fullName()}.isReadable() ? m_folderLockedPixmap : m_folderPixmap);
setChildIndicatorPolicy( QTreeWidgetItem::ShowIndicator );
if( !QDir( fullName() ).isReadable() )
{
setIcon( 0, *s_folderLockedPixmap );
}
else
{
setIcon( 0, *s_folderPixmap );
}
}
void Directory::initPixmaps()
{
if( s_folderPixmap == nullptr )
{
s_folderPixmap = new QPixmap(
embed::getIconPixmap( "folder" ) );
}
if( s_folderOpenedPixmap == nullptr )
{
s_folderOpenedPixmap = new QPixmap(
embed::getIconPixmap( "folder_opened" ) );
}
if( s_folderLockedPixmap == nullptr )
{
s_folderLockedPixmap = new QPixmap(
embed::getIconPixmap( "folder_locked" ) );
}
}
void Directory::update()
{
if( !isExpanded() )
{
setIcon( 0, *s_folderPixmap );
setIcon(0, m_folderPixmap);
return;
}
setIcon( 0, *s_folderOpenedPixmap );
setIcon(0, m_folderOpenedPixmap);
if (!m_disableEntryPopulation && !childCount())
{
m_dirCount = 0;
@@ -1142,15 +1100,6 @@ bool Directory::addItems(const QString& path)
QPixmap * FileItem::s_projectFilePixmap = nullptr;
QPixmap * FileItem::s_presetFilePixmap = nullptr;
QPixmap * FileItem::s_sampleFilePixmap = nullptr;
QPixmap * FileItem::s_soundfontFilePixmap = nullptr;
QPixmap * FileItem::s_vstPluginFilePixmap = nullptr;
QPixmap * FileItem::s_midiFilePixmap = nullptr;
QPixmap * FileItem::s_unknownFilePixmap = nullptr;
FileItem::FileItem(QTreeWidget * parent, const QString & name,
const QString & path ) :
QTreeWidgetItem( parent, QStringList( name) , TypeFileItem ),
@@ -1176,72 +1125,38 @@ FileItem::FileItem(const QString & name, const QString & path ) :
void FileItem::initPixmaps()
{
if( s_projectFilePixmap == nullptr )
{
s_projectFilePixmap = new QPixmap( embed::getIconPixmap(
"project_file", 16, 16 ) );
}
if( s_presetFilePixmap == nullptr )
{
s_presetFilePixmap = new QPixmap( embed::getIconPixmap(
"preset_file", 16, 16 ) );
}
if( s_sampleFilePixmap == nullptr )
{
s_sampleFilePixmap = new QPixmap( embed::getIconPixmap(
"sample_file", 16, 16 ) );
}
if ( s_soundfontFilePixmap == nullptr )
{
s_soundfontFilePixmap = new QPixmap( embed::getIconPixmap(
"soundfont_file", 16, 16 ) );
}
if ( s_vstPluginFilePixmap == nullptr )
{
s_vstPluginFilePixmap = new QPixmap( embed::getIconPixmap(
"vst_plugin_file", 16, 16 ) );
}
if( s_midiFilePixmap == nullptr )
{
s_midiFilePixmap = new QPixmap( embed::getIconPixmap(
"midi_file", 16, 16 ) );
}
if( s_unknownFilePixmap == nullptr )
{
s_unknownFilePixmap = new QPixmap( embed::getIconPixmap(
"unknown_file" ) );
}
static auto s_projectFilePixmap = embed::getIconPixmap("project_file", 16, 16);
static auto s_presetFilePixmap = embed::getIconPixmap("preset_file", 16, 16);
static auto s_sampleFilePixmap = embed::getIconPixmap("sample_file", 16, 16);
static auto s_soundfontFilePixmap = embed::getIconPixmap("soundfont_file", 16, 16);
static auto s_vstPluginFilePixmap = embed::getIconPixmap("vst_plugin_file", 16, 16);
static auto s_midiFilePixmap = embed::getIconPixmap("midi_file", 16, 16);
static auto s_unknownFilePixmap = embed::getIconPixmap("unknown_file");
switch( m_type )
{
case FileType::Project:
setIcon( 0, *s_projectFilePixmap );
setIcon(0, s_projectFilePixmap);
break;
case FileType::Preset:
setIcon( 0, *s_presetFilePixmap );
setIcon(0, s_presetFilePixmap);
break;
case FileType::SoundFont:
setIcon( 0, *s_soundfontFilePixmap );
setIcon(0, s_soundfontFilePixmap);
break;
case FileType::VstPlugin:
setIcon( 0, *s_vstPluginFilePixmap );
setIcon(0, s_vstPluginFilePixmap);
break;
case FileType::Sample:
case FileType::Patch: // TODO
setIcon( 0, *s_sampleFilePixmap );
setIcon(0, s_sampleFilePixmap);
break;
case FileType::Midi:
setIcon( 0, *s_midiFilePixmap );
setIcon(0, s_midiFilePixmap);
break;
case FileType::Unknown:
default:
setIcon( 0, *s_unknownFilePixmap );
setIcon(0, s_unknownFilePixmap);
break;
}
}

View File

@@ -68,8 +68,6 @@ bool MixerLine::eventFilter( QObject *dist, QEvent *event )
}
const int MixerLine::MixerLineHeight = 287;
QPixmap * MixerLine::s_sendBgArrow = nullptr;
QPixmap * MixerLine::s_receiveBgArrow = nullptr;
MixerLine::MixerLine( QWidget * _parent, MixerView * _mv, int _channelIndex ) :
QWidget( _parent ),
@@ -82,15 +80,6 @@ MixerLine::MixerLine( QWidget * _parent, MixerView * _mv, int _channelIndex ) :
m_strokeInnerInactive( 0, 0, 0 ),
m_inRename( false )
{
if( !s_sendBgArrow )
{
s_sendBgArrow = new QPixmap( embed::getIconPixmap( "send_bg_arrow", 29, 56 ) );
}
if( !s_receiveBgArrow )
{
s_receiveBgArrow = new QPixmap( embed::getIconPixmap( "receive_bg_arrow", 29, 56 ) );
}
setFixedSize( 33, MixerLineHeight );
setAttribute( Qt::WA_OpaquePaintEvent, true );
setCursor( QCursor( embed::getIconPixmap( "hand" ), 3, 3 ) );
@@ -193,14 +182,10 @@ void MixerLine::drawMixerLine( QPainter* p, const MixerLine *mixerLine, bool isA
p->drawRect( 0, 0, width-1, height-1 );
// draw the mixer send background
if( sendToThis )
{
p->drawPixmap( 2, 0, 29, 56, *s_sendBgArrow );
}
else if( receiveFromThis )
{
p->drawPixmap( 2, 0, 29, 56, *s_receiveBgArrow );
}
static auto s_sendBgArrow = embed::getIconPixmap("send_bg_arrow", 29, 56);
static auto s_receiveBgArrow = embed::getIconPixmap("receive_bg_arrow", 29, 56);
p->drawPixmap(2, 0, 29, 56, sendToThis ? s_sendBgArrow : s_receiveBgArrow);
}

View File

@@ -8,30 +8,17 @@
namespace lmms::gui
{
QPixmap * SendButtonIndicator::s_qpmOff = nullptr;
QPixmap * SendButtonIndicator::s_qpmOn = nullptr;
SendButtonIndicator:: SendButtonIndicator( QWidget * _parent, MixerLine * _owner,
MixerView * _mv) :
QLabel( _parent ),
m_parent( _owner ),
m_mv( _mv )
{
if( ! s_qpmOff )
{
s_qpmOff = new QPixmap( embed::getIconPixmap( "mixer_send_off", 29, 20 ) );
}
if( ! s_qpmOn )
{
s_qpmOn = new QPixmap( embed::getIconPixmap( "mixer_send_on", 29, 20 ) );
}
// don't do any initializing yet, because the MixerView and MixerLine
// that were passed to this constructor are not done with their constructors
// yet.
setPixmap( *s_qpmOff );
setPixmap(m_qpmOff);
}
void SendButtonIndicator::mousePressEvent( QMouseEvent * e )
@@ -64,7 +51,7 @@ FloatModel * SendButtonIndicator::getSendModel()
void SendButtonIndicator::updateLightStatus()
{
setPixmap( getSendModel() == nullptr ? *s_qpmOff : *s_qpmOn );
setPixmap(!getSendModel() ? m_qpmOff : m_qpmOn);
}

View File

@@ -44,8 +44,6 @@
namespace lmms::gui
{
QPixmap * AutomationClipView::s_clip_rec = nullptr;
AutomationClipView::AutomationClipView( AutomationClip * _clip,
TrackView * _parent ) :
ClipView( _clip, _parent ),
@@ -61,10 +59,6 @@ AutomationClipView::AutomationClipView( AutomationClip * _clip,
setToolTip(m_clip->name());
setStyle( QApplication::style() );
if( s_clip_rec == nullptr ) { s_clip_rec = new QPixmap( embed::getIconPixmap(
"clip_rec" ) ); }
update();
}
@@ -379,7 +373,8 @@ void AutomationClipView::paintEvent( QPaintEvent * )
// recording icon for when recording automation
if( m_clip->isRecording() )
{
p.drawPixmap( 1, rect().bottom() - s_clip_rec->height(), *s_clip_rec );
static auto s_clipRec = embed::getIconPixmap("clip_rec");
p.drawPixmap(1, rect().bottom() - s_clipRec.height(), s_clipRec);
}
// clip name

View File

@@ -57,31 +57,6 @@ MidiClipView::MidiClipView( MidiClip* clip, TrackView* parent ) :
{
connect( getGUI()->pianoRoll(), SIGNAL(currentMidiClipChanged()),
this, SLOT(update()));
if( s_stepBtnOn0 == nullptr )
{
s_stepBtnOn0 = new QPixmap( embed::getIconPixmap(
"step_btn_on_0" ) );
}
if( s_stepBtnOn200 == nullptr )
{
s_stepBtnOn200 = new QPixmap( embed::getIconPixmap(
"step_btn_on_200" ) );
}
if( s_stepBtnOff == nullptr )
{
s_stepBtnOff = new QPixmap( embed::getIconPixmap(
"step_btn_off" ) );
}
if( s_stepBtnOffLight == nullptr )
{
s_stepBtnOffLight = new QPixmap( embed::getIconPixmap(
"step_btn_off_light" ) );
}
update();
setStyle( QApplication::style() );
@@ -253,9 +228,8 @@ void MidiClipView::constructContextMenu( QMenu * _cm )
void MidiClipView::mousePressEvent( QMouseEvent * _me )
{
bool displayPattern = fixedClips() || (pixelsPerBar() >= 96 && m_legacySEPattern);
if( _me->button() == Qt::LeftButton &&
m_clip->m_clipType == MidiClip::Type::BeatClip &&
displayPattern && _me->y() > height() - s_stepBtnOff->height() )
if (_me->button() == Qt::LeftButton && m_clip->m_clipType == MidiClip::Type::BeatClip && displayPattern
&& _me->y() > height() - m_stepBtnOff.height())
// when mouse button is pressed in pattern mode
@@ -325,7 +299,7 @@ void MidiClipView::wheelEvent(QWheelEvent * we)
{
if(m_clip->m_clipType == MidiClip::Type::BeatClip &&
(fixedClips() || pixelsPerBar() >= 96) &&
position(we).y() > height() - s_stepBtnOff->height())
position(we).y() > height() - m_stepBtnOff.height())
{
// get the step number that was wheeled on and
// do calculations in floats to prevent rounding errors...
@@ -472,22 +446,14 @@ void MidiClipView::paintEvent( QPaintEvent * )
const int w = width() - 2 * BORDER_WIDTH;
// scale step graphics to fit the beat clip length
stepon0 = s_stepBtnOn0->scaled(w / steps,
s_stepBtnOn0->height(),
Qt::IgnoreAspectRatio,
Qt::SmoothTransformation);
stepon200 = s_stepBtnOn200->scaled(w / steps,
s_stepBtnOn200->height(),
Qt::IgnoreAspectRatio,
Qt::SmoothTransformation);
stepoff = s_stepBtnOff->scaled(w / steps,
s_stepBtnOff->height(),
Qt::IgnoreAspectRatio,
Qt::SmoothTransformation);
stepoffl = s_stepBtnOffLight->scaled(w / steps,
s_stepBtnOffLight->height(),
Qt::IgnoreAspectRatio,
Qt::SmoothTransformation);
stepon0
= m_stepBtnOn0.scaled(w / steps, m_stepBtnOn0.height(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
stepon200 = m_stepBtnOn200.scaled(
w / steps, m_stepBtnOn200.height(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
stepoff
= m_stepBtnOff.scaled(w / steps, m_stepBtnOff.height(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
stepoffl = m_stepBtnOffLight.scaled(
w / steps, m_stepBtnOffLight.height(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
for (int it = 0; it < steps; it++) // go through all the steps in the beat clip
{
@@ -495,7 +461,7 @@ void MidiClipView::paintEvent( QPaintEvent * )
// figure out x and y coordinates for step graphic
const int x = BORDER_WIDTH + static_cast<int>(it * w / steps);
const int y = height() - s_stepBtnOff->height() - 1;
const int y = height() - m_stepBtnOff.height() - 1;
if (n)
{

View File

@@ -64,15 +64,6 @@
namespace lmms::gui
{
QPixmap * AutomationEditor::s_toolDraw = nullptr;
QPixmap * AutomationEditor::s_toolErase = nullptr;
QPixmap * AutomationEditor::s_toolDrawOut = nullptr;
QPixmap * AutomationEditor::s_toolEditTangents = nullptr;
QPixmap * AutomationEditor::s_toolMove = nullptr;
QPixmap * AutomationEditor::s_toolYFlip = nullptr;
QPixmap * AutomationEditor::s_toolXFlip = nullptr;
const std::array<float, 7> AutomationEditor::m_zoomXLevels =
{ 0.125f, 0.25f, 0.5f, 1.0f, 2.0f, 4.0f, 8.0f };
@@ -135,17 +126,6 @@ AutomationEditor::AutomationEditor() :
this, SLOT(setQuantization()));
m_quantizeModel.setValue( m_quantizeModel.findText( "1/8" ) );
if (s_toolYFlip == nullptr)
{
s_toolYFlip = new QPixmap( embed::getIconPixmap(
"flip_y" ) );
}
if (s_toolXFlip == nullptr)
{
s_toolXFlip = new QPixmap( embed::getIconPixmap(
"flip_x" ) );
}
// add time-line
m_timeLine = new TimeLineWidget( VALUES_WIDTH, 0, m_ppb,
Engine::getSong()->getPlayPos(
@@ -169,28 +149,6 @@ AutomationEditor::AutomationEditor() :
connect( m_topBottomScroll, SIGNAL(valueChanged(int)), this,
SLOT(verScrolled(int)));
// init pixmaps
if (s_toolDraw == nullptr)
{
s_toolDraw = new QPixmap(embed::getIconPixmap("edit_draw"));
}
if (s_toolErase == nullptr)
{
s_toolErase= new QPixmap(embed::getIconPixmap("edit_erase"));
}
if (s_toolDrawOut == nullptr)
{
s_toolDrawOut = new QPixmap(embed::getIconPixmap("edit_draw_outvalue"));
}
if (s_toolEditTangents == nullptr)
{
s_toolEditTangents = new QPixmap(embed::getIconPixmap("edit_tangent"));
}
if (s_toolMove == nullptr)
{
s_toolMove = new QPixmap(embed::getIconPixmap("edit_move"));
}
setCurrentClip(nullptr);
setMouseTracking( true );
@@ -1400,26 +1358,26 @@ void AutomationEditor::paintEvent(QPaintEvent * pe )
{
case EditMode::Draw:
{
if (m_action == Action::EraseValues) { cursor = s_toolErase; }
else if (m_action == Action::MoveValue) { cursor = s_toolMove; }
else { cursor = s_toolDraw; }
if (m_action == Action::EraseValues) { cursor = &m_toolErase; }
else if (m_action == Action::MoveValue) { cursor = &m_toolMove; }
else { cursor = &m_toolDraw; }
break;
}
case EditMode::Erase:
{
cursor = s_toolErase;
cursor = &m_toolErase;
break;
}
case EditMode::DrawOutValues:
{
if (m_action == Action::ResetOutValues) { cursor = s_toolErase; }
else if (m_action == Action::MoveOutValue) { cursor = s_toolMove; }
else { cursor = s_toolDrawOut; }
if (m_action == Action::ResetOutValues) { cursor = &m_toolErase; }
else if (m_action == Action::MoveOutValue) { cursor = &m_toolMove; }
else { cursor = &m_toolDrawOut; }
break;
}
case EditMode::EditTangents:
{
cursor = m_action == Action::MoveTangent ? s_toolMove : s_toolEditTangents;
cursor = m_action == Action::MoveTangent ? &m_toolMove : &m_toolEditTangents;
break;
}
}

View File

@@ -119,15 +119,6 @@ const int INITIAL_START_KEY = Octave::Octave_4 + Key::C;
const int NUM_EVEN_LENGTHS = 6;
const int NUM_TRIPLET_LENGTHS = 5;
QPixmap * PianoRoll::s_toolDraw = nullptr;
QPixmap * PianoRoll::s_toolErase = nullptr;
QPixmap * PianoRoll::s_toolSelect = nullptr;
QPixmap * PianoRoll::s_toolMove = nullptr;
QPixmap * PianoRoll::s_toolOpen = nullptr;
QPixmap* PianoRoll::s_toolKnife = nullptr;
SimpleTextFloat * PianoRoll::s_textFloat = nullptr;
static std::array<QString, 12> s_noteStrings {
@@ -264,32 +255,6 @@ PianoRoll::PianoRoll() :
m_semiToneMarkerMenu->addAction( unmarkAllAction );
m_semiToneMarkerMenu->addAction( copyAllNotesAction );
// init pixmaps
if( s_toolDraw == nullptr )
{
s_toolDraw = new QPixmap( embed::getIconPixmap( "edit_draw" ) );
}
if( s_toolErase == nullptr )
{
s_toolErase= new QPixmap( embed::getIconPixmap( "edit_erase" ) );
}
if( s_toolSelect == nullptr )
{
s_toolSelect = new QPixmap( embed::getIconPixmap( "edit_select" ) );
}
if( s_toolMove == nullptr )
{
s_toolMove = new QPixmap( embed::getIconPixmap( "edit_move" ) );
}
if( s_toolOpen == nullptr )
{
s_toolOpen = new QPixmap( embed::getIconPixmap( "automation" ) );
}
if (s_toolKnife == nullptr)
{
s_toolKnife = new QPixmap(embed::getIconPixmap("edit_knife"));
}
// init text-float
if( s_textFloat == nullptr )
{
@@ -3703,21 +3668,29 @@ void PianoRoll::paintEvent(QPaintEvent * pe )
case EditMode::Draw:
if( m_mouseDownRight )
{
cursor = s_toolErase;
cursor = &m_toolErase;
}
else if( m_action == Action::MoveNote )
{
cursor = s_toolMove;
cursor = &m_toolMove;
}
else
{
cursor = s_toolDraw;
cursor = &m_toolDraw;
}
break;
case EditMode::Erase: cursor = s_toolErase; break;
case EditMode::Select: cursor = s_toolSelect; break;
case EditMode::Detuning: cursor = s_toolOpen; break;
case EditMode::Knife: cursor = s_toolKnife; break;
case EditMode::Erase:
cursor = &m_toolErase;
break;
case EditMode::Select:
cursor = &m_toolSelect;
break;
case EditMode::Detuning:
cursor = &m_toolOpen;
break;
case EditMode::Knife:
cursor = &m_toolKnife;
break;
}
QPoint mousePosition = mapFromGlobal( QCursor::pos() );
if( cursor != nullptr && mousePosition.y() > keyAreaTop() && mousePosition.x() > noteEditLeft())

View File

@@ -45,9 +45,6 @@ namespace
constexpr int MIN_BAR_LABEL_DISTANCE = 35;
}
QPixmap * TimeLineWidget::s_posMarkerPixmap = nullptr;
TimeLineWidget::TimeLineWidget( const int xoff, const int yoff, const float ppb,
Song::PlayPos & pos, const TimePos & begin, Song::PlayMode mode,
QWidget * parent ) :
@@ -80,16 +77,10 @@ TimeLineWidget::TimeLineWidget( const int xoff, const int yoff, const float ppb,
m_loopPos[0] = 0;
m_loopPos[1] = DefaultTicksPerBar;
if( s_posMarkerPixmap == nullptr )
{
s_posMarkerPixmap = new QPixmap( embed::getIconPixmap(
"playpos_marker" ) );
}
setAttribute( Qt::WA_OpaquePaintEvent, true );
move( 0, yoff );
m_xOffset -= s_posMarkerPixmap->width() / 2;
m_xOffset -= m_posMarkerPixmap.width() / 2;
setMouseTracking(true);
m_pos.m_timeLine = this;
@@ -119,7 +110,7 @@ TimeLineWidget::~TimeLineWidget()
void TimeLineWidget::setXOffset(const int x)
{
m_xOffset = x;
if (s_posMarkerPixmap != nullptr) { m_xOffset -= s_posMarkerPixmap->width() / 2; }
m_xOffset -= m_posMarkerPixmap.width() / 2;
}
@@ -245,7 +236,7 @@ void TimeLineWidget::paintEvent( QPaintEvent * )
p.fillRect( 0, 0, width(), height(), p.background() );
// Clip so that we only draw everything starting from the offset
const int leftMargin = m_xOffset + s_posMarkerPixmap->width() / 2;
const int leftMargin = m_xOffset + m_posMarkerPixmap.width() / 2;
p.setClipRect(leftMargin, 0, width() - leftMargin, height() );
// Draw the loop rectangle
@@ -273,8 +264,8 @@ void TimeLineWidget::paintEvent( QPaintEvent * )
QColor const & barNumberColor = getBarNumberColor();
bar_t barNumber = m_begin.getBar();
int const x = m_xOffset + s_posMarkerPixmap->width() / 2 -
( ( static_cast<int>( m_begin * m_ppb ) / TimePos::ticksPerBar() ) % static_cast<int>( m_ppb ) );
int const x = m_xOffset + m_posMarkerPixmap.width() / 2
- ((static_cast<int>(m_begin * m_ppb) / TimePos::ticksPerBar()) % static_cast<int>(m_ppb));
// Double the interval between bar numbers until they are far enough appart
int barLabelInterval = 1;
@@ -307,12 +298,12 @@ void TimeLineWidget::paintEvent( QPaintEvent * )
p.drawRect( innerRectangle );
// Only draw the position marker if the position line is in view
if (m_posMarkerX >= m_xOffset && m_posMarkerX < width() - s_posMarkerPixmap->width() / 2)
if (m_posMarkerX >= m_xOffset && m_posMarkerX < width() - m_posMarkerPixmap.width() / 2)
{
// Let the position marker extrude to the left
p.setClipping(false);
p.setOpacity(0.6);
p.drawPixmap(m_posMarkerX, height() - s_posMarkerPixmap->height(), *s_posMarkerPixmap);
p.drawPixmap(m_posMarkerX, height() - m_posMarkerPixmap.height(), m_posMarkerPixmap);
}
}
@@ -328,13 +319,13 @@ void TimeLineWidget::mousePressEvent( QMouseEvent* event )
if( event->button() == Qt::LeftButton && !(event->modifiers() & Qt::ShiftModifier) )
{
m_action = Action::MovePositionMarker;
if( event->x() - m_xOffset < s_posMarkerPixmap->width() )
if (event->x() - m_xOffset < m_posMarkerPixmap.width())
{
m_moveXOff = event->x() - m_xOffset;
}
else
{
m_moveXOff = s_posMarkerPixmap->width() / 2;
m_moveXOff = m_posMarkerPixmap.width() / 2;
}
}
else if( event->button() == Qt::LeftButton && (event->modifiers() & Qt::ShiftModifier) )
@@ -344,7 +335,7 @@ void TimeLineWidget::mousePressEvent( QMouseEvent* event )
}
else if( event->button() == Qt::RightButton )
{
m_moveXOff = s_posMarkerPixmap->width() / 2;
m_moveXOff = m_posMarkerPixmap.width() / 2;
const TimePos t = m_begin + static_cast<int>( qMax( event->x() - m_xOffset - m_moveXOff, 0 ) * TimePos::ticksPerBar() / m_ppb );
const TimePos loopMid = ( m_loopPos[0] + m_loopPos[1] ) / 2;

View File

@@ -79,25 +79,11 @@ const int LFO_AMOUNT_KNOB_X = LFO_SPEED_KNOB_X+KNOB_X_SPACING;
const int LFO_SHAPES_X = LFO_GRAPH_X;//PREDELAY_KNOB_X;
const int LFO_SHAPES_Y = LFO_GRAPH_Y + 50;
QPixmap * EnvelopeAndLfoView::s_envGraph = nullptr;
QPixmap * EnvelopeAndLfoView::s_lfoGraph = nullptr;
EnvelopeAndLfoView::EnvelopeAndLfoView( QWidget * _parent ) :
QWidget( _parent ),
ModelView( nullptr, this ),
m_params( nullptr )
{
if( s_envGraph == nullptr )
{
s_envGraph = new QPixmap( embed::getIconPixmap( "envelope_graph" ) );
}
if( s_lfoGraph == nullptr )
{
s_lfoGraph = new QPixmap( embed::getIconPixmap( "lfo_graph" ) );
}
m_predelayKnob = new Knob( KnobType::Bright26, this );
m_predelayKnob->setLabel( tr( "DEL" ) );
@@ -277,8 +263,7 @@ void EnvelopeAndLfoView::mousePressEvent( QMouseEvent * _me )
return;
}
if( QRect( ENV_GRAPH_X, ENV_GRAPH_Y, s_envGraph->width(),
s_envGraph->height() ).contains( _me->pos() ) == true )
if (QRect(ENV_GRAPH_X, ENV_GRAPH_Y, m_envGraph.width(), m_envGraph.height()).contains(_me->pos()))
{
if( m_params->m_amountModel.value() < 1.0f )
{
@@ -289,8 +274,7 @@ void EnvelopeAndLfoView::mousePressEvent( QMouseEvent * _me )
m_params->m_amountModel.setValue( 0.0f );
}
}
else if( QRect( LFO_GRAPH_X, LFO_GRAPH_Y, s_lfoGraph->width(),
s_lfoGraph->height() ).contains( _me->pos() ) == true )
else if (QRect(LFO_GRAPH_X, LFO_GRAPH_Y, m_lfoGraph.width(), m_lfoGraph.height()).contains(_me->pos()))
{
if( m_params->m_lfoAmountModel.value() < 1.0f )
{
@@ -351,10 +335,9 @@ void EnvelopeAndLfoView::paintEvent( QPaintEvent * )
p.setRenderHint( QPainter::Antialiasing );
// draw envelope-graph
p.drawPixmap( ENV_GRAPH_X, ENV_GRAPH_Y, *s_envGraph );
p.drawPixmap(ENV_GRAPH_X, ENV_GRAPH_Y, m_envGraph);
// draw LFO-graph
p.drawPixmap( LFO_GRAPH_X, LFO_GRAPH_Y, *s_lfoGraph );
p.drawPixmap(LFO_GRAPH_X, LFO_GRAPH_Y, m_lfoGraph);
p.setFont( pointSize<8>( p.font() ) );
@@ -368,8 +351,8 @@ void EnvelopeAndLfoView::paintEvent( QPaintEvent * )
const QColor end_points_color( 0x99, 0xAF, 0xFF );
const QColor end_points_bg_color( 0, 0, 2 );
const int y_base = ENV_GRAPH_Y + s_envGraph->height() - 3;
const int avail_height = s_envGraph->height() - 6;
const int y_base = ENV_GRAPH_Y + m_envGraph.height() - 3;
const int avail_height = m_envGraph.height() - 6;
int x1 = static_cast<int>( m_predelayKnob->value<float>() * TIME_UNIT_WIDTH );
int x2 = x1 + static_cast<int>( m_attackKnob->value<float>() * TIME_UNIT_WIDTH );
@@ -422,9 +405,8 @@ void EnvelopeAndLfoView::paintEvent( QPaintEvent * )
p.fillRect( x5 - 1, y_base - 2, 4, 4, end_points_bg_color );
p.fillRect( x5, y_base - 1, 2, 2, end_points_color );
int LFO_GRAPH_W = s_lfoGraph->width() - 3; // subtract border
int LFO_GRAPH_H = s_lfoGraph->height() - 6; // subtract border
int LFO_GRAPH_W = m_lfoGraph.width() - 3; // subtract border
int LFO_GRAPH_H = m_lfoGraph.height() - 6; // subtract border
int graph_x_base = LFO_GRAPH_X + 2;
int graph_y_base = LFO_GRAPH_Y + 3 + LFO_GRAPH_H / 2;
@@ -505,11 +487,8 @@ void EnvelopeAndLfoView::paintEvent( QPaintEvent * )
int ms_per_osc = static_cast<int>( SECS_PER_LFO_OSCILLATION *
m_lfoSpeedKnob->value<float>() *
1000.0f );
p.drawText( LFO_GRAPH_X + 4, LFO_GRAPH_Y + s_lfoGraph->height() - 6,
tr( "ms/LFO:" ) );
p.drawText( LFO_GRAPH_X + 52, LFO_GRAPH_Y + s_lfoGraph->height() - 6,
QString::number( ms_per_osc ) );
p.drawText(LFO_GRAPH_X + 4, LFO_GRAPH_Y + m_lfoGraph.height() - 6, tr("ms/LFO:"));
p.drawText(LFO_GRAPH_X + 52, LFO_GRAPH_Y + m_lfoGraph.height() - 6, QString::number(ms_per_osc));
}
@@ -536,4 +515,4 @@ void EnvelopeAndLfoView::lfoUserWaveChanged()
} // namespace gui
} // namespace lmms
} // namespace lmms

View File

@@ -67,15 +67,6 @@ auto WhiteKeys = std::array
Key::C, Key::D, Key::E, Key::F, Key::G, Key::A, Key::H
} ;
QPixmap * PianoView::s_whiteKeyPm = nullptr; /*!< A white key released */
QPixmap * PianoView::s_blackKeyPm = nullptr; /*!< A black key released */
QPixmap * PianoView::s_whiteKeyPressedPm = nullptr; /*!< A white key pressed */
QPixmap * PianoView::s_blackKeyPressedPm = nullptr; /*!< A black key pressed */
QPixmap * PianoView::s_whiteKeyDisabledPm = nullptr; /*!< A white key disabled */
QPixmap * PianoView::s_blackKeyDisabledPm = nullptr; /*!< A black key disabled */
const int PIANO_BASE = 11; /*!< The height of the root note display */
const int PW_WHITE_KEY_WIDTH = 10; /*!< The width of a white key */
const int PW_BLACK_KEY_WIDTH = 8; /*!< The width of a black key */
@@ -99,31 +90,6 @@ PianoView::PianoView(QWidget *parent) :
m_lastKey(-1), /*!< The last key displayed? */
m_movedNoteModel(nullptr) /*!< Key marker which is being moved */
{
if (s_whiteKeyPm == nullptr)
{
s_whiteKeyPm = new QPixmap(embed::getIconPixmap("white_key"));
}
if (s_blackKeyPm == nullptr)
{
s_blackKeyPm = new QPixmap(embed::getIconPixmap("black_key"));
}
if (s_whiteKeyPressedPm == nullptr)
{
s_whiteKeyPressedPm = new QPixmap(embed::getIconPixmap("white_key_pressed"));
}
if (s_blackKeyPressedPm == nullptr)
{
s_blackKeyPressedPm = new QPixmap(embed::getIconPixmap("black_key_pressed"));
}
if (s_whiteKeyDisabledPm == nullptr)
{
s_whiteKeyDisabledPm = new QPixmap(embed::getIconPixmap("white_key_disabled"));
}
if (s_blackKeyDisabledPm == nullptr)
{
s_blackKeyDisabledPm = new QPixmap(embed::getIconPixmap("black_key_disabled"));
}
setAttribute(Qt::WA_OpaquePaintEvent, true);
setFocusPolicy(Qt::StrongFocus);
@@ -894,16 +860,16 @@ void PianoView::paintEvent( QPaintEvent * )
{
if (m_piano && m_piano->isKeyPressed(cur_key))
{
p.drawPixmap(x, PIANO_BASE, *s_whiteKeyPressedPm);
p.drawPixmap(x, PIANO_BASE, m_whiteKeyPressedPm);
}
else
{
p.drawPixmap(x, PIANO_BASE, *s_whiteKeyPm);
p.drawPixmap(x, PIANO_BASE, m_whiteKeyPm);
}
}
else
{
p.drawPixmap(x, PIANO_BASE, *s_whiteKeyDisabledPm);
p.drawPixmap(x, PIANO_BASE, m_whiteKeyDisabledPm);
}
x += PW_WHITE_KEY_WIDTH;
@@ -928,16 +894,16 @@ void PianoView::paintEvent( QPaintEvent * )
{
if (m_piano && m_piano->isKeyPressed(startKey))
{
p.drawPixmap(0 - PW_WHITE_KEY_WIDTH / 2, PIANO_BASE, *s_blackKeyPressedPm);
p.drawPixmap(0 - PW_WHITE_KEY_WIDTH / 2, PIANO_BASE, m_blackKeyPressedPm);
}
else
{
p.drawPixmap(0 - PW_WHITE_KEY_WIDTH / 2, PIANO_BASE, *s_blackKeyPm);
p.drawPixmap(0 - PW_WHITE_KEY_WIDTH / 2, PIANO_BASE, m_blackKeyPm);
}
}
else
{
p.drawPixmap(0 - PW_WHITE_KEY_WIDTH / 2, PIANO_BASE, *s_blackKeyDisabledPm);
p.drawPixmap(0 - PW_WHITE_KEY_WIDTH / 2, PIANO_BASE, m_blackKeyDisabledPm);
}
}
@@ -951,16 +917,16 @@ void PianoView::paintEvent( QPaintEvent * )
{
if (m_piano && m_piano->isKeyPressed(cur_key))
{
p.drawPixmap(x + PW_WHITE_KEY_WIDTH / 2, PIANO_BASE, *s_blackKeyPressedPm);
p.drawPixmap(x + PW_WHITE_KEY_WIDTH / 2, PIANO_BASE, m_blackKeyPressedPm);
}
else
{
p.drawPixmap(x + PW_WHITE_KEY_WIDTH / 2, PIANO_BASE, *s_blackKeyPm);
p.drawPixmap(x + PW_WHITE_KEY_WIDTH / 2, PIANO_BASE, m_blackKeyPm);
}
}
else
{
p.drawPixmap(x + PW_WHITE_KEY_WIDTH / 2, PIANO_BASE, *s_blackKeyDisabledPm);
p.drawPixmap(x + PW_WHITE_KEY_WIDTH / 2, PIANO_BASE, m_blackKeyDisabledPm);
}
x += PW_WHITE_KEY_WIDTH;
white_cnt = 0;

View File

@@ -38,11 +38,6 @@
namespace lmms::gui
{
QPixmap * ComboBox::s_background = nullptr;
QPixmap * ComboBox::s_arrow = nullptr;
QPixmap * ComboBox::s_arrowSelected = nullptr;
const int CB_ARROW_BTN_WIDTH = 18;
@@ -54,21 +49,6 @@ ComboBox::ComboBox( QWidget * _parent, const QString & _name ) :
{
setFixedHeight( ComboBox::DEFAULT_HEIGHT );
if( s_background == nullptr )
{
s_background = new QPixmap( embed::getIconPixmap( "combobox_bg" ) );
}
if( s_arrow == nullptr )
{
s_arrow = new QPixmap( embed::getIconPixmap( "combobox_arrow" ) );
}
if( s_arrowSelected == nullptr )
{
s_arrowSelected = new QPixmap( embed::getIconPixmap( "combobox_arrow_selected" ) );
}
setFont( pointSize<9>( font() ) );
connect( &m_menu, SIGNAL(triggered(QAction*)),
@@ -172,7 +152,7 @@ void ComboBox::paintEvent( QPaintEvent * _pe )
{
QPainter p( this );
p.fillRect( 2, 2, width()-2, height()-4, *s_background );
p.fillRect(2, 2, width() - 2, height() - 4, m_background);
QColor shadow = palette().shadow().color();
QColor highlight = palette().highlight().color();
@@ -194,9 +174,9 @@ void ComboBox::paintEvent( QPaintEvent * _pe )
style()->drawPrimitive( QStyle::PE_Frame, &opt, &p, this );
QPixmap * arrow = m_pressed ? s_arrowSelected : s_arrow;
auto arrow = m_pressed ? m_arrowSelected : m_arrow;
p.drawPixmap( width() - CB_ARROW_BTN_WIDTH + 3, 4, *arrow );
p.drawPixmap(width() - CB_ARROW_BTN_WIDTH + 3, 4, arrow);
if( model() && model()->size() > 0 )
{

View File

@@ -59,11 +59,7 @@
namespace lmms::gui
{
SimpleTextFloat * Fader::s_textFloat = nullptr;
QPixmap * Fader::s_back = nullptr;
QPixmap * Fader::s_leds = nullptr;
QPixmap * Fader::s_knob = nullptr;
Fader::Fader( FloatModel * _model, const QString & _name, QWidget * _parent ) :
QWidget( _parent ),
@@ -85,22 +81,6 @@ Fader::Fader( FloatModel * _model, const QString & _name, QWidget * _parent ) :
{
s_textFloat = new SimpleTextFloat;
}
if( ! s_back )
{
s_back = new QPixmap( embed::getIconPixmap( "fader_background" ) );
}
if( ! s_leds )
{
s_leds = new QPixmap( embed::getIconPixmap( "fader_leds" ) );
}
if( ! s_knob )
{
s_knob = new QPixmap( embed::getIconPixmap( "fader_knob" ) );
}
m_back = s_back;
m_leds = s_leds;
m_knob = s_knob;
init(_model, _name);
@@ -128,10 +108,6 @@ Fader::Fader( FloatModel * model, const QString & name, QWidget * parent, QPixma
s_textFloat = new SimpleTextFloat;
}
m_back = back;
m_leds = leds;
m_knob = knob;
init(model, name);
}
@@ -139,7 +115,7 @@ void Fader::init(FloatModel * model, QString const & name)
{
setWindowTitle( name );
setAttribute( Qt::WA_OpaquePaintEvent, false );
QSize backgroundSize = m_back->size();
QSize backgroundSize = m_back.size();
setMinimumSize( backgroundSize );
setMaximumSize( backgroundSize );
resize( backgroundSize );
@@ -166,7 +142,7 @@ void Fader::mouseMoveEvent( QMouseEvent *mouseEvent )
{
int dy = m_moveStartPoint - mouseEvent->globalY();
float delta = dy * ( model()->maxValue() - model()->minValue() ) / (float) ( height() - ( *m_knob ).height() );
float delta = dy * (model()->maxValue() - model()->minValue()) / (float)(height() - (m_knob).height());
const auto step = model()->step<float>();
float newValue = static_cast<float>( static_cast<int>( ( m_startValue + delta ) / step + 0.5 ) ) * step;
@@ -191,7 +167,7 @@ void Fader::mousePressEvent( QMouseEvent* mouseEvent )
thisModel->saveJournallingState( false );
}
if( mouseEvent->y() >= knobPosY() - ( *m_knob ).height() && mouseEvent->y() < knobPosY() )
if (mouseEvent->y() >= knobPosY() - (m_knob).height() && mouseEvent->y() < knobPosY())
{
updateTextFloat();
s_textFloat->show();
@@ -335,9 +311,9 @@ void Fader::updateTextFloat()
inline int Fader::calculateDisplayPeak( float fPeak )
{
int peak = (int)( m_back->height() - ( fPeak / ( m_fMaxPeak - m_fMinPeak ) ) * m_back->height() );
int peak = static_cast<int>(m_back.height() - (fPeak / (m_fMaxPeak - m_fMinPeak)) * m_back.height());
return qMin( peak, m_back->height() );
return qMin(peak, m_back.height());
}
@@ -346,7 +322,7 @@ void Fader::paintEvent( QPaintEvent * ev)
QPainter painter(this);
// Draw the background
painter.drawPixmap( ev->rect(), *m_back, ev->rect() );
painter.drawPixmap(ev->rect(), m_back, ev->rect());
// Draw the levels with peaks
if (getLevelsDisplayedInDBFS())
@@ -359,14 +335,14 @@ void Fader::paintEvent( QPaintEvent * ev)
}
// Draw the knob
painter.drawPixmap( 0, knobPosY() - m_knob->height(), *m_knob );
painter.drawPixmap(0, knobPosY() - m_knob.height(), m_knob);
}
void Fader::paintDBFSLevels(QPaintEvent * ev, QPainter & painter)
{
int height = m_back->height();
int width = m_back->width() / 2;
int center = m_back->width() - width;
int height = m_back.height();
int width = m_back.width() / 2;
int center = m_back.width() - width;
float const maxDB(ampToDbfs(m_fMaxPeak));
float const minDB(ampToDbfs(m_fMinPeak));
@@ -380,7 +356,7 @@ void Fader::paintDBFSLevels(QPaintEvent * ev, QPainter & painter)
float const leftSpan = ampToDbfs(qMax<float>(0.0001, m_fPeakValue_L)) - minDB;
int peak_L = height * leftSpan * fullSpanReciprocal;
QRect drawRectL( 0, height - peak_L, width, peak_L ); // Source and target are identical
painter.drawPixmap( drawRectL, *m_leds, drawRectL );
painter.drawPixmap(drawRectL, m_leds, drawRectL);
float const persistentLeftPeakDBFS = ampToDbfs(qMax<float>(0.0001, m_persistentPeak_L));
int persistentPeak_L = height * (1 - (persistentLeftPeakDBFS - minDB) * fullSpanReciprocal);
@@ -402,7 +378,7 @@ void Fader::paintDBFSLevels(QPaintEvent * ev, QPainter & painter)
float const rightSpan = ampToDbfs(qMax<float>(0.0001, m_fPeakValue_R)) - minDB;
int peak_R = height * rightSpan * fullSpanReciprocal;
QRect const drawRectR( center, height - peak_R, width, peak_R ); // Source and target are identical
painter.drawPixmap( drawRectR, *m_leds, drawRectR );
painter.drawPixmap(drawRectR, m_leds, drawRectR);
float const persistentRightPeakDBFS = ampToDbfs(qMax<float>(0.0001, m_persistentPeak_R));
int persistentPeak_R = height * (1 - (persistentRightPeakDBFS - minDB) * fullSpanReciprocal);
@@ -425,13 +401,13 @@ void Fader::paintLinearLevels(QPaintEvent * ev, QPainter & painter)
// peak leds
//float fRange = abs( m_fMaxPeak ) + abs( m_fMinPeak );
int height = m_back->height();
int width = m_back->width() / 2;
int center = m_back->width() - width;
int height = m_back.height();
int width = m_back.width() / 2;
int center = m_back.width() - width;
int peak_L = calculateDisplayPeak( m_fPeakValue_L - m_fMinPeak );
int persistentPeak_L = qMax<int>( 3, calculateDisplayPeak( m_persistentPeak_L - m_fMinPeak ) );
painter.drawPixmap( QRect( 0, peak_L, width, height - peak_L ), *m_leds, QRect( 0, peak_L, width, height - peak_L ) );
painter.drawPixmap(QRect(0, peak_L, width, height - peak_L), m_leds, QRect(0, peak_L, width, height - peak_L));
if( m_persistentPeak_L > 0.05 )
{
@@ -442,7 +418,7 @@ void Fader::paintLinearLevels(QPaintEvent * ev, QPainter & painter)
int peak_R = calculateDisplayPeak( m_fPeakValue_R - m_fMinPeak );
int persistentPeak_R = qMax<int>( 3, calculateDisplayPeak( m_persistentPeak_R - m_fMinPeak ) );
painter.drawPixmap( QRect( center, peak_R, width, height - peak_R ), *m_leds, QRect( center, peak_R, width, height - peak_R ) );
painter.drawPixmap(QRect(center, peak_R, width, height - peak_R), m_leds, QRect(center, peak_R, width, height - peak_R));
if( m_persistentPeak_R > 0.05 )
{

View File

@@ -66,17 +66,6 @@ LcdWidget::LcdWidget(int numDigits, const QString& style, QWidget* parent, const
initUi( name, style );
}
LcdWidget::~LcdWidget()
{
delete m_lcdPixmap;
}
void LcdWidget::setValue(int value)
{
QString s = m_textForValue[value];
@@ -162,11 +151,8 @@ void LcdWidget::paintEvent( QPaintEvent* )
{
p.translate(margin, margin);
// Left Margin
p.drawPixmap(
cellRect,
*m_lcdPixmap,
QRect(QPoint(charsPerPixmap * m_cellWidth, isEnabled() ? 0 : m_cellHeight), cellSize)
);
p.drawPixmap(cellRect, m_lcdPixmap,
QRect(QPoint(charsPerPixmap * m_cellWidth, isEnabled() ? 0 : m_cellHeight), cellSize));
p.translate(m_marginWidth, 0);
}
@@ -174,8 +160,7 @@ void LcdWidget::paintEvent( QPaintEvent* )
// Padding
for( int i=0; i < m_numDigits - m_display.length(); i++ )
{
p.drawPixmap( cellRect, *m_lcdPixmap,
QRect( QPoint( 10 * m_cellWidth, isEnabled()?0:m_cellHeight) , cellSize ) );
p.drawPixmap(cellRect, m_lcdPixmap, QRect(QPoint(10 * m_cellWidth, isEnabled() ? 0 : m_cellHeight), cellSize));
p.translate( m_cellWidth, 0 );
}
@@ -189,19 +174,14 @@ void LcdWidget::paintEvent( QPaintEvent* )
else
val = 10;
}
p.drawPixmap( cellRect, *m_lcdPixmap,
QRect( QPoint( val*m_cellWidth,
isEnabled()?0:m_cellHeight ),
cellSize ) );
p.drawPixmap(cellRect, m_lcdPixmap, QRect(QPoint(val * m_cellWidth, isEnabled() ? 0 : m_cellHeight), cellSize));
p.translate( m_cellWidth, 0 );
}
// Right Margin
p.drawPixmap(QRect(0, 0, m_seamlessRight ? 0 : m_marginWidth - 1, m_cellHeight),
*m_lcdPixmap,
p.drawPixmap(QRect(0, 0, m_seamlessRight ? 0 : m_marginWidth - 1, m_cellHeight), m_lcdPixmap,
QRect(charsPerPixmap * m_cellWidth, isEnabled() ? 0 : m_cellHeight, m_cellWidth / 2, m_cellHeight));
p.restore();
// Border
@@ -294,12 +274,12 @@ void LcdWidget::initUi(const QString& name , const QString& style)
setWindowTitle( name );
// We should make a factory for these or something.
//m_lcdPixmap = new QPixmap( embed::getIconPixmap( QString( "lcd_" + style ).toUtf8().constData() ) );
//m_lcdPixmap = new QPixmap( embed::getIconPixmap( "lcd_19green" ) ); // TODO!!
m_lcdPixmap = new QPixmap( embed::getIconPixmap( QString( "lcd_" + style ).toUtf8().constData() ) );
//m_lcdPixmap = embed::getIconPixmap(QString("lcd_" + style).toUtf8().constData());
//m_lcdPixmap = embed::getIconPixmap("lcd_19green"); // TODO!!
m_cellWidth = m_lcdPixmap->size().width() / LcdWidget::charsPerPixmap;
m_cellHeight = m_lcdPixmap->size().height() / 2;
m_lcdPixmap = embed::getIconPixmap(QString("lcd_" + style).toUtf8().constData());
m_cellWidth = m_lcdPixmap.size().width() / LcdWidget::charsPerPixmap;
m_cellHeight = m_lcdPixmap.size().height() / 2;
m_marginWidth = m_cellWidth / 2;

View File

@@ -61,17 +61,6 @@ LedCheckBox::LedCheckBox( QWidget * _parent,
{
}
LedCheckBox::~LedCheckBox()
{
delete m_ledOnPixmap;
delete m_ledOffPixmap;
}
void LedCheckBox::setText( const QString &s )
{
m_text = s;
@@ -100,9 +89,8 @@ void LedCheckBox::initUi( LedColor _color )
{
setCheckable( true );
m_ledOnPixmap = new QPixmap( embed::getIconPixmap(
names[static_cast<std::size_t>(_color)].toUtf8().constData() ) );
m_ledOffPixmap = new QPixmap( embed::getIconPixmap( "led_off" ) );
m_ledOnPixmap = embed::getIconPixmap(names[static_cast<std::size_t>(_color)].toUtf8().constData());
m_ledOffPixmap = embed::getIconPixmap("led_off");
if (m_legacyMode)
{
@@ -119,8 +107,8 @@ void LedCheckBox::onTextUpdated()
{
QFontMetrics const fm = fontMetrics();
int const width = m_ledOffPixmap->width() + 5 + horizontalAdvance(fm, text());
int const height = m_legacyMode ? m_ledOffPixmap->height() : qMax(m_ledOffPixmap->height(), fm.height());
int const width = m_ledOffPixmap.width() + 5 + horizontalAdvance(fm, text());
int const height = m_legacyMode ? m_ledOffPixmap.height() : qMax(m_ledOffPixmap.height(), fm.height());
setFixedSize(width, height);
}
@@ -130,31 +118,24 @@ void LedCheckBox::paintLegacy(QPaintEvent * pe)
QPainter p( this );
p.setFont( pointSize<7>( font() ) );
if( model()->value() == true )
{
p.drawPixmap( 0, 0, *m_ledOnPixmap );
}
else
{
p.drawPixmap( 0, 0, *m_ledOffPixmap );
}
p.drawPixmap(0, 0, model()->value() ? m_ledOnPixmap : m_ledOffPixmap);
p.setPen( QColor( 64, 64, 64 ) );
p.drawText( m_ledOffPixmap->width() + 4, 11, text() );
p.drawText(m_ledOffPixmap.width() + 4, 11, text());
p.setPen( QColor( 255, 255, 255 ) );
p.drawText( m_ledOffPixmap->width() + 3, 10, text() );
p.drawText(m_ledOffPixmap.width() + 3, 10, text());
}
void LedCheckBox::paintNonLegacy(QPaintEvent * pe)
{
QPainter p(this);
QPixmap * drawnPixmap = model()->value() ? m_ledOnPixmap : m_ledOffPixmap;
auto drawnPixmap = model()->value() ? m_ledOnPixmap : m_ledOffPixmap;
p.drawPixmap( 0, rect().height() / 2 - drawnPixmap->height() / 2, *drawnPixmap);
p.drawPixmap(0, rect().height() / 2 - drawnPixmap.height() / 2, drawnPixmap);
QRect r = rect();
r -= QMargins(m_ledOffPixmap->width() + 5, 0, 0, 0);
r -= QMargins(m_ledOffPixmap.width() + 5, 0, 0, 0);
p.drawText(r, text());
}

View File

@@ -39,13 +39,6 @@
namespace lmms
{
QPixmap * gui::MidiClipView::s_stepBtnOn0 = nullptr;
QPixmap * gui::MidiClipView::s_stepBtnOn200 = nullptr;
QPixmap * gui::MidiClipView::s_stepBtnOff = nullptr;
QPixmap * gui::MidiClipView::s_stepBtnOffLight = nullptr;
MidiClip::MidiClip( InstrumentTrack * _instrument_track ) :
Clip( _instrument_track ),
m_instrumentTrack( _instrument_track ),