LMMS
Loading...
Searching...
No Matches
lmms::gui::Fader Class Reference

#include <Fader.h>

Inheritance diagram for lmms::gui::Fader:
lmms::gui::TypedModelView< FloatModel > lmms::gui::AutomatableModelView lmms::gui::ModelView lmms::gui::EqFader

Public Types

enum class  AdjustmentDirection { Up , Down }

Signals

void peakChanged (float peak)

Public Member Functions

 Fader (FloatModel *model, const QString &name, QWidget *parent, bool modelIsLinear=true)
 Fader (FloatModel *model, const QString &name, QWidget *parent, const QPixmap &knob, bool modelIsLinear=true)
 ~Fader () override=default
void setPeak_L (float fPeak)
float getPeak_L ()
void setPeak_R (float fPeak)
float getPeak_R ()
float getMinPeak () const
void setMinPeak (float minPeak)
float getMaxPeak () const
void setMaxPeak (float maxPeak)
bool getRenderUnityLine () const
void setRenderUnityLine (bool value=true)
void adjust (const Qt::KeyboardModifiers &modifiers, AdjustmentDirection direction)
void adjustByDecibelDelta (float value)
void adjustByDialog ()
void setDisplayConversion (bool b)
void setHintText (const QString &txt_before, const QString &txt_after)
Public Member Functions inherited from lmms::gui::TypedModelView< FloatModel >
 TypedModelView (Model *model, QWidget *_this)
FloatModelmodel ()
const FloatModelmodel () const
Public Member Functions inherited from lmms::gui::AutomatableModelView
 AutomatableModelView (Model *model, QWidget *_this)
 ~AutomatableModelView () override=default
AutomatableModelmodelUntyped ()
const AutomatableModelmodelUntyped () const
void setModel (Model *model, bool isOldModelValid=true) override
void unsetModel () override
template<typename T>
value () const
void setDescription (const QString &desc)
void setUnit (const QString &unit)
void addDefaultActions (QMenu *menu)
void setConversionFactor (float factor)
float getConversionFactor ()
Public Member Functions inherited from lmms::gui::ModelView
 ModelView (Model *model, QWidget *widget)
virtual ~ModelView ()
Modelmodel ()
const Modelmodel () const
template<class T>
T * castModel ()
template<class T>
const T * castModel () const

Properties

QColor peakOk
QColor peakClip
QColor peakWarn
bool levelsDisplayedInDBFS
bool renderUnityLine
QColor unityMarker

Private Member Functions

void contextMenuEvent (QContextMenuEvent *me) override
void mousePressEvent (QMouseEvent *ev) override
void mouseDoubleClickEvent (QMouseEvent *mouseEvent) override
void mouseMoveEvent (QMouseEvent *ev) override
void mouseReleaseEvent (QMouseEvent *me) override
void wheelEvent (QWheelEvent *ev) override
void paintEvent (QPaintEvent *ev) override
void paintLevels (QPaintEvent *ev, QPainter &painter, bool linear=false)
void paintFaderTicks (QPainter &painter)
float determineAdjustmentDelta (const Qt::KeyboardModifiers &modifiers) const
void adjustModelByDBDelta (float value)
int calculateKnobPosYFromModel () const
void setVolumeByLocalPixelValue (int y)
float computeScaledRatio (float dBValue) const
 Computes the scaled ratio between the maximum dB value supported by the model and the minimum dB value that's supported by the fader from the given actual dB value.
void setPeak (float fPeak, float &targetPeak, float &persistentPeak, QElapsedTimer &lastPeakTimer)
void updateTextFloat ()
void modelValueChanged ()
QString getModelValueAsDbString () const
bool modelIsLinear () const

Private Attributes

float m_fPeakValue_L {0.}
float m_fPeakValue_R {0.}
float m_persistentPeak_L {0.}
float m_persistentPeak_R {0.}
float m_fMinPeak {dbfsToAmp(-42)}
float m_fMaxPeak {dbfsToAmp(9)}
QElapsedTimer m_lastPeakTimer_L
QElapsedTimer m_lastPeakTimer_R
QPixmap m_knob {embed::getIconPixmap("fader_knob")}
QSize m_knobSize
int m_knobCenterOffset {0}
 Stores the offset to the knob center when the user drags the fader knob.
bool m_levelsDisplayedInDBFS {true}
bool m_modelIsLinear {false}
QColor m_peakOk {10, 212, 92}
QColor m_peakClip {193, 32, 56}
QColor m_peakWarn {214, 236, 82}
QColor m_unityMarker {63, 63, 63, 255}
bool m_renderUnityLine {true}

Static Private Attributes

static SimpleTextFloats_textFloat = nullptr

Additional Inherited Members

Protected Member Functions inherited from lmms::gui::ModelView
virtual void modelChanged ()
QWidget * widget ()
virtual void doConnections ()
Protected Attributes inherited from lmms::gui::AutomatableModelView
QString m_description
QString m_unit
float m_conversionFactor

Member Enumeration Documentation

◆ AdjustmentDirection

Enumerator
Up 
Down 

Constructor & Destructor Documentation

◆ Fader() [1/2]

lmms::gui::Fader::Fader ( FloatModel * model,
const QString & name,
QWidget * parent,
bool modelIsLinear = true )

◆ Fader() [2/2]

lmms::gui::Fader::Fader ( FloatModel * model,
const QString & name,
QWidget * parent,
const QPixmap & knob,
bool modelIsLinear = true )

◆ ~Fader()

lmms::gui::Fader::~Fader ( )
overridedefault

Member Function Documentation

◆ adjust()

void lmms::gui::Fader::adjust ( const Qt::KeyboardModifiers & modifiers,
AdjustmentDirection direction )

◆ adjustByDecibelDelta()

void lmms::gui::Fader::adjustByDecibelDelta ( float value)

◆ adjustByDialog()

void lmms::gui::Fader::adjustByDialog ( )

◆ adjustModelByDBDelta()

void lmms::gui::Fader::adjustModelByDBDelta ( float value)
private

◆ calculateKnobPosYFromModel()

int lmms::gui::Fader::calculateKnobPosYFromModel ( ) const
private

◆ computeScaledRatio()

float lmms::gui::Fader::computeScaledRatio ( float dBValue) const
private

Computes the scaled ratio between the maximum dB value supported by the model and the minimum dB value that's supported by the fader from the given actual dB value.

If the provided input value lies inside the aforementioned interval then the result will be a value between 0 (value == minimum value) and 1 (value == maximum model value). If you look at the graphical representation of the fader then 0 represents a point at the bottom of the fader and 1 a point at the top of the fader. The ratio is scaled by an internal exponent which is an implementation detail that cannot be changed for now.

◆ contextMenuEvent()

void lmms::gui::Fader::contextMenuEvent ( QContextMenuEvent * me)
overrideprivate

◆ determineAdjustmentDelta()

float lmms::gui::Fader::determineAdjustmentDelta ( const Qt::KeyboardModifiers & modifiers) const
private

◆ getMaxPeak()

float lmms::gui::Fader::getMaxPeak ( ) const
inline

◆ getMinPeak()

float lmms::gui::Fader::getMinPeak ( ) const
inline

◆ getModelValueAsDbString()

QString lmms::gui::Fader::getModelValueAsDbString ( ) const
private

◆ getPeak_L()

float lmms::gui::Fader::getPeak_L ( )
inline

◆ getPeak_R()

float lmms::gui::Fader::getPeak_R ( )
inline

◆ getRenderUnityLine()

bool lmms::gui::Fader::getRenderUnityLine ( ) const
inline

◆ modelIsLinear()

bool lmms::gui::Fader::modelIsLinear ( ) const
inlineprivate

◆ modelValueChanged()

void lmms::gui::Fader::modelValueChanged ( )
private

◆ mouseDoubleClickEvent()

void lmms::gui::Fader::mouseDoubleClickEvent ( QMouseEvent * mouseEvent)
overrideprivate

◆ mouseMoveEvent()

void lmms::gui::Fader::mouseMoveEvent ( QMouseEvent * ev)
overrideprivate

◆ mousePressEvent()

void lmms::gui::Fader::mousePressEvent ( QMouseEvent * ev)
overrideprivatevirtual

Reimplemented from lmms::gui::AutomatableModelView.

◆ mouseReleaseEvent()

void lmms::gui::Fader::mouseReleaseEvent ( QMouseEvent * me)
overrideprivate

◆ paintEvent()

void lmms::gui::Fader::paintEvent ( QPaintEvent * ev)
overrideprivate

◆ paintFaderTicks()

void lmms::gui::Fader::paintFaderTicks ( QPainter & painter)
private

◆ paintLevels()

void lmms::gui::Fader::paintLevels ( QPaintEvent * ev,
QPainter & painter,
bool linear = false )
private

◆ peakChanged

void lmms::gui::Fader::peakChanged ( float peak)
signal

◆ setDisplayConversion()

void lmms::gui::Fader::setDisplayConversion ( bool b)
inline

◆ setHintText()

void lmms::gui::Fader::setHintText ( const QString & txt_before,
const QString & txt_after )
inline

◆ setMaxPeak()

void lmms::gui::Fader::setMaxPeak ( float maxPeak)
inline

◆ setMinPeak()

void lmms::gui::Fader::setMinPeak ( float minPeak)
inline

◆ setPeak()

void lmms::gui::Fader::setPeak ( float fPeak,
float & targetPeak,
float & persistentPeak,
QElapsedTimer & lastPeakTimer )
private

Set peak value (0.0 .. 1.0)

◆ setPeak_L()

void lmms::gui::Fader::setPeak_L ( float fPeak)

◆ setPeak_R()

void lmms::gui::Fader::setPeak_R ( float fPeak)

◆ setRenderUnityLine()

void lmms::gui::Fader::setRenderUnityLine ( bool value = true)
inline

◆ setVolumeByLocalPixelValue()

void lmms::gui::Fader::setVolumeByLocalPixelValue ( int y)
private

◆ updateTextFloat()

void lmms::gui::Fader::updateTextFloat ( )
private

◆ wheelEvent()

void lmms::gui::Fader::wheelEvent ( QWheelEvent * ev)
overrideprivate

Member Data Documentation

◆ m_fMaxPeak

float lmms::gui::Fader::m_fMaxPeak {dbfsToAmp(9)}
private

◆ m_fMinPeak

float lmms::gui::Fader::m_fMinPeak {dbfsToAmp(-42)}
private

◆ m_fPeakValue_L

float lmms::gui::Fader::m_fPeakValue_L {0.}
private

◆ m_fPeakValue_R

float lmms::gui::Fader::m_fPeakValue_R {0.}
private

◆ m_knob

QPixmap lmms::gui::Fader::m_knob {embed::getIconPixmap("fader_knob")}
private

◆ m_knobCenterOffset

int lmms::gui::Fader::m_knobCenterOffset {0}
private

Stores the offset to the knob center when the user drags the fader knob.

This is needed to make it feel like the users drag the knob without it jumping immediately to the click position.

◆ m_knobSize

QSize lmms::gui::Fader::m_knobSize
private

◆ m_lastPeakTimer_L

QElapsedTimer lmms::gui::Fader::m_lastPeakTimer_L
private

◆ m_lastPeakTimer_R

QElapsedTimer lmms::gui::Fader::m_lastPeakTimer_R
private

◆ m_levelsDisplayedInDBFS

bool lmms::gui::Fader::m_levelsDisplayedInDBFS {true}
private

◆ m_modelIsLinear

bool lmms::gui::Fader::m_modelIsLinear {false}
private

◆ m_peakClip

QColor lmms::gui::Fader::m_peakClip {193, 32, 56}
private

◆ m_peakOk

QColor lmms::gui::Fader::m_peakOk {10, 212, 92}
private

◆ m_peakWarn

QColor lmms::gui::Fader::m_peakWarn {214, 236, 82}
private

◆ m_persistentPeak_L

float lmms::gui::Fader::m_persistentPeak_L {0.}
private

◆ m_persistentPeak_R

float lmms::gui::Fader::m_persistentPeak_R {0.}
private

◆ m_renderUnityLine

bool lmms::gui::Fader::m_renderUnityLine {true}
private

◆ m_unityMarker

QColor lmms::gui::Fader::m_unityMarker {63, 63, 63, 255}
private

◆ s_textFloat

SimpleTextFloat * lmms::gui::Fader::s_textFloat = nullptr
staticprivate

Property Documentation

◆ levelsDisplayedInDBFS

bool lmms::gui::Fader::levelsDisplayedInDBFS

◆ peakClip

QColor lmms::gui::Fader::peakClip

◆ peakOk

QColor lmms::gui::Fader::peakOk

◆ peakWarn

QColor lmms::gui::Fader::peakWarn

◆ renderUnityLine

bool lmms::gui::Fader::renderUnityLine
readwrite

◆ unityMarker

QColor lmms::gui::Fader::unityMarker

The documentation for this class was generated from the following files: