# HG changeset patch # User benoitrigolleau # Date 1205243639 0 # Node ID e006f4a57f866447beceb60575eeaade0c7820ad # Parent 858a1121ebf78210e373570ee7f52f4cff02111d add labels in plotter widget fix some bugs in the graphical equalizer diff -r 858a1121ebf7 -r e006f4a57f86 data/fileio/ModelReader.cpp --- a/data/fileio/ModelReader.cpp Fri Mar 07 15:56:26 2008 +0000 +++ b/data/fileio/ModelReader.cpp Tue Mar 11 13:53:59 2008 +0000 @@ -250,6 +250,7 @@ if (ok) model->setMaximumLevel(maximum); m_model = model; + m_model->setObjectName(m_modelName); return true; } else @@ -267,7 +268,7 @@ READ_MANDATORY(int, resolution, toInt); SparseOneDimensionalModel *model = new SparseOneDimensionalModel(sampleRate, resolution); m_model = model; - + m_model->setObjectName(m_modelName); return true; } else if (dimensions == 2 || dimensions == 3) @@ -301,6 +302,7 @@ model->setScaleUnits(units); m_model = model; } + m_model->setObjectName(m_modelName); return true; } else @@ -316,6 +318,7 @@ IntervalModel * model = new IntervalModel(sampleRate, resolution, notifyOnAdd); m_model = model; + m_model->setObjectName(m_modelName); return true; } else @@ -324,7 +327,7 @@ << type.toLocal8Bit().data() << "\" for model id" << id << std::endl; } - return false; + return false; } bool ModelHandler::readDatasetStart(const QXmlAttributes &attributes) @@ -541,6 +544,7 @@ } QString name = attributes.value("name"); + m_modelName = name; m_layer->setObjectName(name); return true; diff -r 858a1121ebf7 -r e006f4a57f86 data/fileio/ModelReader.h --- a/data/fileio/ModelReader.h Fri Mar 07 15:56:26 2008 +0000 +++ b/data/fileio/ModelReader.h Tue Mar 11 13:53:59 2008 +0000 @@ -74,6 +74,8 @@ QString m_datasetSeparator; + QString m_modelName; + }; #endif diff -r 858a1121ebf7 -r e006f4a57f86 sv/filter/EqualizerFilter.cpp --- a/sv/filter/EqualizerFilter.cpp Fri Mar 07 15:56:26 2008 +0000 +++ b/sv/filter/EqualizerFilter.cpp Tue Mar 11 13:53:59 2008 +0000 @@ -50,6 +50,7 @@ m_plotbandcurve=(float *)malloc(sizeof(float)*(m_resolution)); + m_mutex->lock(); if (m_simpleMode) { create_filterbands(); @@ -60,13 +61,16 @@ m_eqcurve.push_back(0); } } + m_mutex->unlock(); setFilterEnabled(false); } EqualizerFilter::~EqualizerFilter() { + m_mutex->lock(); m_eqcurve.clear(); + m_mutex->unlock(); for(int i = 0 ; i < m_nbBand ; i++){ delete band[i]; @@ -167,15 +171,24 @@ emit propertyChanged("Enable"); } else if (name == "DrawCurve"){ m_simpleMode = (value > 0) ? false : true; - if (m_simpleMode) + if (!m_simpleMode) { + emit enableDrawCurve(!m_simpleMode); + } + else + { + m_mutex->lock(); + emit enableDrawCurve(!m_simpleMode); create_filterbands(); + m_mutex->unlock(); + } - emit enableDrawCurve(!m_simpleMode); } else if (name.left(8) == "GainBand"){ int i = name.right(1).toInt(); m_gainband[i] = value; + m_mutex->lock(); create_filterbands(); + m_mutex->unlock(); } #ifdef DEBUG_FILTERS @@ -189,12 +202,15 @@ void EqualizerFilter::setProperty(const PropertyName &name , QVector value) { + if (name == "Equalizer"){ + m_mutex->lock(); m_eqcurve.clear(); for (int i = 0; i < value.size(); i++) { m_eqcurve.push_back(value.at(i)); } + m_mutex->unlock(); } } @@ -218,7 +234,7 @@ void EqualizerFilter::create_filterbands() { - m_mutex->lock(); + //m_mutex->lock(); float binwidth = 44100/4096; @@ -378,10 +394,10 @@ m_eqcurve.push_back(instgain); } - m_mutex->unlock(); - log10plot2(m_eqcurve,m_plotbandcurve, m_framesize, m_resolution); emit filterChanged(m_plotbandcurve); + + //m_mutex->unlock(); } \ No newline at end of file diff -r 858a1121ebf7 -r e006f4a57f86 sv/filter/EqualizerFilter.h --- a/sv/filter/EqualizerFilter.h Fri Mar 07 15:56:26 2008 +0000 +++ b/sv/filter/EqualizerFilter.h Tue Mar 11 13:53:59 2008 +0000 @@ -2,7 +2,7 @@ /* Sound Access EASAIER client application. - Silogic 2007. Laure Bajard. + Silogic 2008. Laure Bajard. Integration of the filter provided by: Dublin Institute of Technology - Audio Research Group 2007 diff -r 858a1121ebf7 -r e006f4a57f86 sv/sound_access.vcproj --- a/sv/sound_access.vcproj Fri Mar 07 15:56:26 2008 +0000 +++ b/sv/sound_access.vcproj Tue Mar 11 13:53:59 2008 +0000 @@ -309,6 +309,10 @@ Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx" > + + @@ -505,6 +509,32 @@ Name="Moc" > + + + + + + + + @@ -820,7 +850,7 @@ @@ -831,7 +861,7 @@ @@ -994,7 +1024,7 @@ @@ -1005,7 +1035,7 @@ @@ -1016,7 +1046,7 @@ @@ -1177,6 +1207,10 @@ Filter="cpp;c;cxx;moc;h;qrc;def;odl;idl;res" > + + diff -r 858a1121ebf7 -r e006f4a57f86 widgets/Plotter.cpp --- a/widgets/Plotter.cpp Fri Mar 07 15:56:26 2008 +0000 +++ b/widgets/Plotter.cpp Tue Mar 11 13:53:59 2008 +0000 @@ -26,8 +26,9 @@ for(int i = 0 ; i < m_signalWidth ; i++){ m_curveMask.push_back(0); } + m_oldCurveMask = m_curveMask; - setMinimumSize(QSize(m_signalWidth + 10, m_signalHeight + 10)); + setMinimumSize(QSize(m_signalWidth + 2*m_margin, m_signalHeight + 2*m_margin + 10)); refreshPixmap(); @@ -141,6 +142,7 @@ m_lastPoint.setX(x); m_lastPoint.setY(y); refreshPixmap(); + emit filterChanged(m_curveMask); } } } @@ -151,14 +153,41 @@ if ((event->button() == Qt::LeftButton) && m_curveMaskActive) { m_curveMaskActive = false; unsetCursor(); - emit filterChanged(m_curveMask); + //emit filterChanged(m_curveMask); } } } void Plotter::drawGrid(QPainter *painter){ QPixmap pm(":icons/grid.png"); + painter->setPen(Qt::white); painter->drawPixmap(0,0,pm); + + + /**VLines **************/ + + // middle line + painter->drawLine(m_signalWidth/2+m_margin, m_margin, m_signalWidth/2+m_margin , m_signalHeight + m_margin); + //quater lines + painter->drawLine(m_signalWidth/4+m_margin, m_margin, m_signalWidth/4+m_margin , m_signalHeight + m_margin); + painter->drawLine(3*m_signalWidth/4+m_margin, m_margin, 3*m_signalWidth/4+m_margin , m_signalHeight + m_margin); + + // border lines + painter->drawLine(m_margin, m_margin, m_margin , m_signalHeight + m_margin); + painter->drawLine(m_signalWidth+m_margin, m_margin, m_signalWidth+m_margin , m_signalHeight + m_margin); + + /** HLines *************/ + + + /** Labels *************/ + painter->setPen(Qt::darkGray); + painter->drawText(0, m_signalHeight+2*m_margin+10, "10Hz"); + painter->drawText(m_signalWidth/4 -10, m_signalHeight+2*m_margin+10, "100Hz"); + painter->drawText(m_signalWidth/2 -10, m_signalHeight+2*m_margin+10, "1000Hz"); + painter->drawText(3*m_signalWidth/4 -10, m_signalHeight+2*m_margin+10, "10000Hz"); + painter->drawText(m_signalWidth -22, m_signalHeight+2*m_margin+10, "22KHz"); + + } void Plotter::drawCurve(QPainter *painter){ @@ -209,6 +238,7 @@ void Plotter::setFilter(float* filter) { + m_curveMask.clear(); for (int i=0; i aux = m_curveMask; + m_curveMask = m_oldCurveMask; + m_oldCurveMask = aux; + refreshPixmap(); + if(enable){ + emit filterChanged(m_curveMask); + } + } m_enableDrawCurve = enable; } \ No newline at end of file diff -r 858a1121ebf7 -r e006f4a57f86 widgets/Plotter.h --- a/widgets/Plotter.h Fri Mar 07 15:56:26 2008 +0000 +++ b/widgets/Plotter.h Tue Mar 11 13:53:59 2008 +0000 @@ -56,6 +56,7 @@ void drawMaskCurve(QPainter *painter); QVector m_curve; QVector m_curveMask; + QVector m_oldCurveMask; QPixmap m_pixmap; int m_signalHeight; int m_signalWidth; diff -r 858a1121ebf7 -r e006f4a57f86 widgets/PropertyBox.cpp --- a/widgets/PropertyBox.cpp Fri Mar 07 15:56:26 2008 +0000 +++ b/widgets/PropertyBox.cpp Tue Mar 11 13:53:59 2008 +0000 @@ -574,8 +574,8 @@ if (!have) { connect(cb, SIGNAL(filterChanged(QVector&)), this, SLOT(propertyControllerChanged(QVector&))); connect(m_container, SIGNAL(signalChanged(float*)), cb, SLOT(setCurve(float*))); + connect(m_container, SIGNAL(enableDrawCurve(bool)), cb, SLOT(enableDrawCurve(bool))); connect(m_container, SIGNAL(filterChanged(float*)), cb, SLOT(setFilter(float*))); - connect(m_container, SIGNAL(enableDrawCurve(bool)), cb, SLOT(enableDrawCurve(bool))); connect(cb, SIGNAL(mouseEntered()), this, SLOT(mouseEnteredWidget())); connect(cb, SIGNAL(mouseLeft()), this, SLOT(mouseLeftWidget()));