[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Traverso-commit] traverso resources/themes/gradients/traversothe...
From: |
Nicola Doebelin |
Subject: |
[Traverso-commit] traverso resources/themes/gradients/traversothe... |
Date: |
Mon, 13 Apr 2009 21:33:59 +0000 |
CVSROOT: /sources/traverso
Module name: traverso
Changes by: Nicola Doebelin <n_doebelin> 09/04/13 21:33:59
Modified files:
resources/themes/gradients: traversotheme.xml
src/traverso/widgets: VUMeter.cpp VUMeter.h
Log message:
* theme changes are now applied instantly for the VU-meters
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/traverso/resources/themes/gradients/traversotheme.xml?cvsroot=traverso&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/widgets/VUMeter.cpp?cvsroot=traverso&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/widgets/VUMeter.h?cvsroot=traverso&r1=1.1&r2=1.2
Patches:
Index: resources/themes/gradients/traversotheme.xml
===================================================================
RCS file:
/sources/traverso/traverso/resources/themes/gradients/traversotheme.xml,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- resources/themes/gradients/traversotheme.xml 13 Apr 2009 15:16:18
-0000 1.1
+++ resources/themes/gradients/traversotheme.xml 13 Apr 2009 21:33:59
-0000 1.2
@@ -95,11 +95,10 @@
<color name="FFTMeter:text" red="0" green="0" blue="0"
alpha="255" />
<color name="VUMeter:background:widget" red="255" green="255"
blue="255" alpha="255" />
- <color name="VUMeter:background:bar" red="0" green="0" blue="0"
alpha="255" />
<color name="VUMeter:foreground:6db" red="255" green="0"
blue="0" alpha="255" />
<color name="VUMeter:foreground:0db" red="255" green="255"
blue="0" alpha="255" />
<color name="VUMeter:foreground:-6db" red="0" green="255"
blue="0" alpha="255" />
- <color name="VUMeter:foreground:-60db" red="0" green="255"
blue="255" alpha="255" />
+ <color name="VUMeter:foreground:-60db" red="0" green="0"
blue="255" alpha="255" />
<color name="VUMeter:font:active" red="0" green="0" blue="0"
alpha="255" />
<color name="VUMeter:font:inactive" red="100" green="100"
blue="100" alpha="255" />
<color name="VUMeter:overled:active" red="255" green="0"
blue="0" alpha="255" />
@@ -205,5 +204,10 @@
<stop value="0.0" red="248" green="248" blue="248"
alpha="255" />
<stop value="1.0" red="150" green="150" blue="150"
alpha="255" />
</gradient>
+
+ <gradient name="VUMeter:background:bar">
+ <stop value="0.0" red="0" green="0" blue="0"
alpha="255" />
+ <stop value="1.0" red="50" green="50" blue="50"
alpha="255" />
+ </gradient>
</gradients>
</Themer>
Index: src/traverso/widgets/VUMeter.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/widgets/VUMeter.cpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- src/traverso/widgets/VUMeter.cpp 24 May 2008 17:41:03 -0000 1.1
+++ src/traverso/widgets/VUMeter.cpp 13 Apr 2009 21:33:59 -0000 1.2
@@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- $Id: VUMeter.cpp,v 1.1 2008/05/24 17:41:03 r_sijrier Exp $
+ $Id: VUMeter.cpp,v 1.2 2009/04/13 21:33:59 n_doebelin Exp $
*/
#include "VUMeter.h"
@@ -69,17 +69,15 @@
setMaximumWidth(MAXIMUM_WIDTH);
m_minSpace = 0;
- int vulevelspacing = themer()->get_property("VUMeter:layout:vuspacing",
3).toInt();
- int vulayoutspacing =
themer()->get_property("VUMeter:layout:vulayoutspacing", 5).toInt();
- int mainlayoutmargin =
themer()->get_property("VUMeter:layout:mainlayoutmargin", 1).toInt();
- int mainlayoutspacing =
themer()->get_property("VUMeter:layout:mainlayoutspacing", 2).toInt();
+ mainlayout = new QVBoxLayout;
+ load_theme_data();
QWidget* levelLedLayoutwidget = new QWidget(this);
- QHBoxLayout* levelLedLayout = new QHBoxLayout(levelLedLayoutwidget);
+ levelLedLayout = new QHBoxLayout(levelLedLayoutwidget);
levelLedLayout->setSpacing(0);
levelLedLayout->setMargin(0);
- levelLedLayout->addSpacing(vulayoutspacing);
+ levelLedLayout->addSpacing(m_vulayoutspacing);
levelLedLayoutwidget->setLayout(levelLedLayout);
@@ -104,8 +102,8 @@
levelLedLayout->addWidget(widget);
if (i < bus->get_channel_count() - 1) {
- levelLedLayout->addSpacing(vulevelspacing);
- m_minSpace += vulevelspacing;
+ levelLedLayout->addSpacing(m_vulevelspacing);
+ m_minSpace += m_vulevelspacing;
}
}
@@ -114,8 +112,8 @@
levelLedLayout->addWidget(ruler);
m_minSpace += ruler->maximumWidth();
- levelLedLayout->addSpacing(vulayoutspacing);
- m_minSpace += vulayoutspacing;
+ levelLedLayout->addSpacing(m_vulayoutspacing);
+ m_minSpace += m_vulayoutspacing;
// add a tooltip showing the channel name
m_name = bus->get_name();
@@ -129,18 +127,19 @@
setAttribute(Qt::WA_OpaquePaintEvent);
channelNameLabel = new QLabel(this);
-
channelNameLabel->setFont(themer()->get_font("VUMeter:fontscale:label"));
+ channelNameLabel->setFont(m_chanNameFont);
channelNameLabel->setAlignment(Qt::AlignHCenter);
- QVBoxLayout* mainlayout = new QVBoxLayout;
mainlayout->addSpacing(5);
mainlayout->addWidget(levelLedLayoutwidget, 5);
mainlayout->addWidget(channelNameLabel);
- mainlayout->setMargin(mainlayoutmargin);
- mainlayout->setSpacing(mainlayoutspacing);
+ mainlayout->setMargin(m_mainlayoutmargin);
+ mainlayout->setSpacing(m_mainlayoutspacing);
m_minSpace += mainlayout->spacing();
setLayout(mainlayout);
+
+ connect(themer(), SIGNAL(themeLoaded()), this, SLOT(load_theme_data()),
Qt::QueuedConnection);
}
VUMeter::~ VUMeter( )
@@ -152,14 +151,14 @@
PENTER3;
QPainter painter(this);
- painter.fillRect( 0 , 0 , width(), height() ,
themer()->get_color("VUMeter:background:widget") );
+ painter.fillRect( 0 , 0 , width(), height() , m_widgetBgBrush );
}
void VUMeter::resizeEvent( QResizeEvent * )
{
PENTER3;
- QFontMetrics fm(themer()->get_font("VUMeter:fontscale:label"));
+ QFontMetrics fm(m_labelFont);
// Comment by Remon: Why the -1 here???? Without the -1 it seems to
work correctly too?
// Reply by Nic: It doesn't here (PPC). The label can't become smaller
than the text width,
@@ -221,7 +220,20 @@
}
}
-
+void VUMeter::load_theme_data()
+{
+ m_vulevelspacing = themer()->get_property("VUMeter:layout:vuspacing",
3).toInt();
+ m_vulayoutspacing =
themer()->get_property("VUMeter:layout:vulayoutspacing", 5).toInt();
+ m_mainlayoutmargin =
themer()->get_property("VUMeter:layout:mainlayoutmargin", 1).toInt();
+ m_mainlayoutspacing =
themer()->get_property("VUMeter:layout:mainlayoutspacing", 2).toInt();
+
+ mainlayout->setMargin(m_mainlayoutmargin);
+ mainlayout->setSpacing(m_mainlayoutspacing);
+
+ m_chanNameFont = themer()->get_font("VUMeter:fontscale:label");
+ m_widgetBgBrush = themer()->get_brush("VUMeter:background:widget");
+ m_labelFont = themer()->get_font("VUMeter:fontscale:label");
+}
/**********************************************************************/
/* VUMeterRuler */
@@ -243,6 +255,7 @@
: QWidget(parent)
{
setAutoFillBackground(false);
+
QFontMetrics fm(themer()->get_font("VUMeter:fontscale:label"));
setMinimumWidth(fm.width("-XX")+TICK_LINE_LENGTH + 3);
setMaximumWidth(fm.width("-XX")+TICK_LINE_LENGTH + 4);
@@ -272,24 +285,26 @@
lineMark.push_back(-45);
lineMark.push_back(-50);
lineMark.push_back(-60);
+
+ load_theme_data();
+ connect(themer(), SIGNAL(themeLoaded()), this, SLOT(load_theme_data()),
Qt::QueuedConnection);
}
void VUMeterRuler::paintEvent( QPaintEvent* )
{
PENTER4;
- QFontMetrics fm(themer()->get_font("VUMeter:fontscale:label"));
QString spm;
int deltaY;
QPainter painter(this);
- painter.setFont(themer()->get_font("VUMeter:fontscale:label"));
+ painter.setFont(m_font);
// offset is the space occupied by the 'over' LED
float levelRange = float(height() - VULED_HEIGHT);
// draw line marks
- painter.setPen(themer()->get_color("VUMeter:font:inactive"));
+ painter.setPen(m_colorInactive);
for (uint j = 0; j < lineMark.size(); ++j) {
int idx = int(LUT_MULTIPLY * float((-lineMark[j] + 6)));
@@ -301,8 +316,8 @@
painter.drawLine(0, height() - deltaY, TICK_LINE_LENGTH,
height() - deltaY);
}
- painter.setPen(themer()->get_color("VUMeter:font:active"));
- QRect markRect(0, 0, width(), fm.ascent());
+ painter.setPen(m_colorActive);
+ QRect markRect(0, 0, width(), m_fontLabelAscent);
// draw the labels
for (uint j = 0; j < presetMark.size(); ++j) {
@@ -328,8 +343,8 @@
deltaY = (int) ( VUMeter::vumeter_lut()->at(idx)/115.0 *
levelRange );
spm.sprintf("%2i", presetMark[j]);
- markRect.setY(height() - deltaY - fm.ascent()/2 - 1);
- markRect.setHeight(fm.ascent());
+ markRect.setY(height() - deltaY - m_fontLabelAscent/2 - 1);
+ markRect.setHeight(m_fontLabelAscent);
if (markRect.bottom() >= height()) {
markRect.translate(0, height() - markRect.bottom() - 1);
}
@@ -338,6 +353,17 @@
}
}
+void VUMeterRuler::load_theme_data()
+{
+ m_font = themer()->get_font("VUMeter:fontscale:label");
+ QFontMetrics fm(m_font);
+ setMinimumWidth(fm.width("-XX")+TICK_LINE_LENGTH + 3);
+ setMaximumWidth(fm.width("-XX")+TICK_LINE_LENGTH + 4);
+ m_fontLabelAscent = fm.ascent();
+
+ m_colorActive = themer()->get_color("VUMeter:font:active");
+ m_colorInactive = themer()->get_color("VUMeter:font:inactive");
+}
/**********************************************************************/
/* VUMeterOverLed */
@@ -361,12 +387,13 @@
VUMeterOverLed::VUMeterOverLed(QWidget* parent)
: QWidget(parent)
{
- int minimumwidth =
themer()->get_property("VUMeter:layout:minimumlevelwidth", 6).toInt();
setAutoFillBackground(false);
- setMinimumWidth(minimumwidth);
setMinimumHeight(VULED_HEIGHT);
isActive = false;
+
+ load_theme_data();
+ connect(themer(), SIGNAL(themeLoaded()), this, SLOT(load_theme_data()),
Qt::QueuedConnection);
}
void VUMeterOverLed::paintEvent( QPaintEvent* )
@@ -375,20 +402,20 @@
QPainter painter(this);
if (!isActive) {
- painter.fillRect(0, 0, width(), height(),
themer()->get_color("VUMeter:overled:inactive"));
+ painter.fillRect(0, 0, width(), height(), m_colInactive);
return;
}
if (width() < THREE_D_LIMIT) {
- painter.fillRect(0, 0, width(), height(),
themer()->get_color("VUMeter:overled:active"));
+ painter.fillRect(0, 0, width(), height(), m_colActive);
return;
}
// draw in 3d mode
- QColor col = themer()->get_color("VUMeter:overled:active");
- painter.fillRect(0, 0, width(), height(),
themer()->get_color("VUMeter:background:bar"));
- painter.fillRect(2, 2, width()-4, height()-4, col);
+ painter.fillRect(0, 0, width(), height(), m_colBg);
+ painter.fillRect(2, 2, width()-4, height()-4, m_colActive);
+ QColor col;
col.setRgb(255, 255, 255);
col.setAlpha(200);
painter.setPen(col);
@@ -413,7 +440,12 @@
update();
}
-
+void VUMeterOverLed::load_theme_data()
+{
+ m_colActive = themer()->get_color("VUMeter:overled:active");
+ m_colInactive = themer()->get_color("VUMeter:overled:inactive");
+ m_colBg = themer()->get_color("VUMeter:background:bar");
+}
/**********************************************************************/
/* VUMeterLevel */
@@ -445,9 +477,6 @@
: QWidget(parent)
, m_channel(chan)
{
- levelClearColor = themer()->get_color("VUMeter:background:bar");
- int minimumwidth =
themer()->get_property("VUMeter:layout:minimumlevelwidth", 6).toInt();
-
tailDeltaY = peakHoldValue = rms = -120.0;
overCount = rmsIndex = 0;
peakHoldFalling = false;
@@ -460,16 +489,15 @@
peakHistory[i] = 0.0;
}
- create_gradients();
-
setAttribute(Qt::WA_OpaquePaintEvent);
setAttribute(Qt::WA_PaintOnScreen);
setAutoFillBackground(false);
- setMinimumWidth(minimumwidth);
connect(&audiodevice(), SIGNAL(stopped()), this, SLOT(stop()));
connect(&timer, SIGNAL(timeout()), this, SLOT(update_peak()));
connect(&phTimer, SIGNAL(timeout()), this,
SLOT(reset_peak_hold_value()));
+ connect(themer(), SIGNAL(themeLoaded()), this, SLOT(load_theme_data()),
Qt::QueuedConnection);
+ load_theme_data();
timer.start(UPDATE_FREQ);
@@ -545,7 +573,7 @@
// draw Peak hold lines
if (PEAK_HOLD_MODE) {
- painter.setPen(themer()->get_color("VUMeter:overled:active"));
+ painter.setPen(m_colOverLed);
// Comment by Remon: Same here
painter.drawLine(2, peakHoldLevel, width() - 3, peakHoldLevel);
}
@@ -574,13 +602,17 @@
painter.setPen(rcol);
painter.drawLine(width()-2, 0, width()-2, height());
-
painter.setPen(QPen(themer()->get_color("VUMeter:background:bar")));
+ painter.setPen(QPen(m_colBg));
painter.drawLine(0, 0, 0, height());
painter.drawLine(width()-1, 0, width()-1, height());
}
+ painter.end();
+
clearPixmap = QPixmap(width(), height());
- clearPixmap.fill(levelClearColor);
+ levelClearColor = themer()->get_brush("VUMeter:background:bar",
QPoint(0, 0), QPoint(0, height()));
+ painter.begin(&clearPixmap);
+ painter.fillRect(0, 0, width(), height(), levelClearColor);
}
void VUMeterLevel::update_peak( )
@@ -657,7 +689,7 @@
peakHoldFalling = true;
}
-void VUMeterLevel::create_gradients()
+void VUMeterLevel::load_theme_data()
{
float zeroDB = 1.0 - 100.0/115.0; // 0 dB position
float msixDB = 1.0 - 80.0/115.0; // -6 dB position
@@ -665,12 +697,20 @@
gradient2D.setStart(0,0);
- gradient2D.setColorAt(0.0 ,
themer()->get_color("VUMeter:foreground:6db"));
+ gradient2D.setColorAt(0.0,
themer()->get_color("VUMeter:foreground:6db"));
gradient2D.setColorAt(zeroDB-smooth,
themer()->get_color("VUMeter:foreground:6db"));
gradient2D.setColorAt(zeroDB+smooth,
themer()->get_color("VUMeter:foreground:0db"));
gradient2D.setColorAt(msixDB-smooth,
themer()->get_color("VUMeter:foreground:0db"));
gradient2D.setColorAt(msixDB+smooth,
themer()->get_color("VUMeter:foreground:-6db"));
- gradient2D.setColorAt(1.0 ,
themer()->get_color("VUMeter:foreground:-60db"));
+ gradient2D.setColorAt(1.0,
themer()->get_color("VUMeter:foreground:-60db"));
+
+ levelClearColor = themer()->get_brush("VUMeter:background:bar",
QPoint(0, 0), QPoint(0, height()));
+
setMinimumWidth(themer()->get_property("VUMeter:layout:minimumlevelwidth",
6).toInt());
+
+ m_colOverLed = themer()->get_color("VUMeter:overled:active");
+ m_colBg = themer()->get_color("VUMeter:background:bar");
+
+ resize_level_pixmap(); //Â applies the new theme to the buffer pixmaps
}
// accepts dB-values and returns the position in the widget from top
Index: src/traverso/widgets/VUMeter.h
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/widgets/VUMeter.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- src/traverso/widgets/VUMeter.h 24 May 2008 17:41:03 -0000 1.1
+++ src/traverso/widgets/VUMeter.h 13 Apr 2009 21:33:59 -0000 1.2
@@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- $Id: VUMeter.h,v 1.1 2008/05/24 17:41:03 r_sijrier Exp $
+ $Id: VUMeter.h,v 1.2 2009/04/13 21:33:59 n_doebelin Exp $
*/
#ifndef VUMETER_H
@@ -32,6 +32,8 @@
class AudioChannel;
class VUMeterLevel;
class QLabel;
+class QHBoxLayout;
+class QVBoxLayout;
class VUMeterRuler : public QWidget
{
@@ -48,6 +50,12 @@
std::vector<int> presetMark;
std::vector<int> lineMark;
QFont m_font;
+ int m_fontLabelAscent;
+ QColor m_colorActive;
+ QColor m_colorInactive;
+
+private slots:
+ void load_theme_data();
};
@@ -79,12 +87,22 @@
VUMeterRuler* ruler;
static QVector<float> lut;
QList<VUMeterLevel*> m_levels;
+ int m_vulevelspacing;
+ int m_vulayoutspacing;
+ int m_mainlayoutmargin;
+ int m_mainlayoutspacing;
+ QFont m_chanNameFont;
+ QFont m_labelFont;
+ QBrush m_widgetBgBrush;
+ QVBoxLayout* mainlayout;
+ QHBoxLayout* levelLedLayout;
static void calculate_lut_data();
private slots:
void peak_monitoring_stopped();
void peak_monitoring_started();
+ void load_theme_data();
};
/**
@@ -132,6 +150,12 @@
private:
bool isActive;
+ QColor m_colActive;
+ QColor m_colInactive;
+ QBrush m_colBg;
+
+private slots:
+ void load_theme_data();
};
@@ -155,12 +179,14 @@
bool activeTail;
bool peakHoldFalling;
AudioChannel* m_channel;
- QColor levelClearColor;
+ QBrush levelClearColor;
QPixmap levelPixmap;
QPixmap clearPixmap;
QTimer timer,
phTimer;
QLinearGradient gradient2D;
+ QColor m_colOverLed,
+ m_colBg;
float presetMark[7];
float tailDeltaY;
@@ -174,7 +200,6 @@
short unsigned int overCount;
void resize_level_pixmap();
- void create_gradients();
int get_meter_position(float);
private slots:
@@ -182,6 +207,7 @@
void start();
void update_peak();
void reset_peak_hold_value();
+ void load_theme_data();
signals:
- [Traverso-commit] traverso resources/themes/gradients/traversothe...,
Nicola Doebelin <=