Mercurial > hg > easaier-soundaccess
comparison widgets/Plotter.cpp @ 240:e006f4a57f86
add labels in plotter widget
fix some bugs in the graphical equalizer
author | benoitrigolleau |
---|---|
date | Tue, 11 Mar 2008 13:53:59 +0000 |
parents | 858a1121ebf7 |
children |
comparison
equal
deleted
inserted
replaced
239:858a1121ebf7 | 240:e006f4a57f86 |
---|---|
24 { | 24 { |
25 //m_curveMask = new int[m_signalWidth]; | 25 //m_curveMask = new int[m_signalWidth]; |
26 for(int i = 0 ; i < m_signalWidth ; i++){ | 26 for(int i = 0 ; i < m_signalWidth ; i++){ |
27 m_curveMask.push_back(0); | 27 m_curveMask.push_back(0); |
28 } | 28 } |
29 | 29 m_oldCurveMask = m_curveMask; |
30 setMinimumSize(QSize(m_signalWidth + 10, m_signalHeight + 10)); | 30 |
31 setMinimumSize(QSize(m_signalWidth + 2*m_margin, m_signalHeight + 2*m_margin + 10)); | |
31 | 32 |
32 refreshPixmap(); | 33 refreshPixmap(); |
33 | 34 |
34 } | 35 } |
35 | 36 |
139 } | 140 } |
140 m_curveMask[x] = y; | 141 m_curveMask[x] = y; |
141 m_lastPoint.setX(x); | 142 m_lastPoint.setX(x); |
142 m_lastPoint.setY(y); | 143 m_lastPoint.setY(y); |
143 refreshPixmap(); | 144 refreshPixmap(); |
145 emit filterChanged(m_curveMask); | |
144 } | 146 } |
145 } | 147 } |
146 } | 148 } |
147 | 149 |
148 void Plotter::mouseReleaseEvent(QMouseEvent *event){ | 150 void Plotter::mouseReleaseEvent(QMouseEvent *event){ |
149 if (m_enableDrawCurve) | 151 if (m_enableDrawCurve) |
150 { | 152 { |
151 if ((event->button() == Qt::LeftButton) && m_curveMaskActive) { | 153 if ((event->button() == Qt::LeftButton) && m_curveMaskActive) { |
152 m_curveMaskActive = false; | 154 m_curveMaskActive = false; |
153 unsetCursor(); | 155 unsetCursor(); |
154 emit filterChanged(m_curveMask); | 156 //emit filterChanged(m_curveMask); |
155 } | 157 } |
156 } | 158 } |
157 } | 159 } |
158 | 160 |
159 void Plotter::drawGrid(QPainter *painter){ | 161 void Plotter::drawGrid(QPainter *painter){ |
160 QPixmap pm(":icons/grid.png"); | 162 QPixmap pm(":icons/grid.png"); |
163 painter->setPen(Qt::white); | |
161 painter->drawPixmap(0,0,pm); | 164 painter->drawPixmap(0,0,pm); |
165 | |
166 | |
167 /**VLines **************/ | |
168 | |
169 // middle line | |
170 painter->drawLine(m_signalWidth/2+m_margin, m_margin, m_signalWidth/2+m_margin , m_signalHeight + m_margin); | |
171 //quater lines | |
172 painter->drawLine(m_signalWidth/4+m_margin, m_margin, m_signalWidth/4+m_margin , m_signalHeight + m_margin); | |
173 painter->drawLine(3*m_signalWidth/4+m_margin, m_margin, 3*m_signalWidth/4+m_margin , m_signalHeight + m_margin); | |
174 | |
175 // border lines | |
176 painter->drawLine(m_margin, m_margin, m_margin , m_signalHeight + m_margin); | |
177 painter->drawLine(m_signalWidth+m_margin, m_margin, m_signalWidth+m_margin , m_signalHeight + m_margin); | |
178 | |
179 /** HLines *************/ | |
180 | |
181 | |
182 /** Labels *************/ | |
183 painter->setPen(Qt::darkGray); | |
184 painter->drawText(0, m_signalHeight+2*m_margin+10, "10Hz"); | |
185 painter->drawText(m_signalWidth/4 -10, m_signalHeight+2*m_margin+10, "100Hz"); | |
186 painter->drawText(m_signalWidth/2 -10, m_signalHeight+2*m_margin+10, "1000Hz"); | |
187 painter->drawText(3*m_signalWidth/4 -10, m_signalHeight+2*m_margin+10, "10000Hz"); | |
188 painter->drawText(m_signalWidth -22, m_signalHeight+2*m_margin+10, "22KHz"); | |
189 | |
190 | |
162 } | 191 } |
163 | 192 |
164 void Plotter::drawCurve(QPainter *painter){ | 193 void Plotter::drawCurve(QPainter *painter){ |
165 //painter->setRenderHint (QPainter::Antialiasing, true ); | 194 //painter->setRenderHint (QPainter::Antialiasing, true ); |
166 QPolygonF polyline(m_signalWidth); | 195 QPolygonF polyline(m_signalWidth); |
207 m_margin = margin; | 236 m_margin = margin; |
208 } | 237 } |
209 | 238 |
210 void Plotter::setFilter(float* filter) | 239 void Plotter::setFilter(float* filter) |
211 { | 240 { |
241 | |
212 m_curveMask.clear(); | 242 m_curveMask.clear(); |
213 for (int i=0; i<m_signalWidth; i++) | 243 for (int i=0; i<m_signalWidth; i++) |
214 { | 244 { |
215 m_curveMask.push_back((int) (m_signalHeight - filter[i]*(m_signalHeight/2-1))); | 245 m_curveMask.push_back((int) (m_signalHeight - filter[i]*(m_signalHeight/2-1))); |
216 } | 246 } |
217 refreshPixmap(); | 247 refreshPixmap(); |
218 } | 248 } |
219 | 249 |
220 void Plotter::enableDrawCurve(bool enable) | 250 void Plotter::enableDrawCurve(bool enable) |
221 { | 251 { |
252 if(enable!=m_enableDrawCurve){ | |
253 QVector<float> aux = m_curveMask; | |
254 m_curveMask = m_oldCurveMask; | |
255 m_oldCurveMask = aux; | |
256 refreshPixmap(); | |
257 if(enable){ | |
258 emit filterChanged(m_curveMask); | |
259 } | |
260 } | |
222 m_enableDrawCurve = enable; | 261 m_enableDrawCurve = enable; |
223 } | 262 } |