[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Traverso-commit] traverso/src/traverso/songcanvas AudioClipView....
From: |
Remon Sijrier |
Subject: |
[Traverso-commit] traverso/src/traverso/songcanvas AudioClipView.... |
Date: |
Tue, 16 Oct 2007 19:49:24 +0000 |
CVSROOT: /sources/traverso
Module name: traverso
Changes by: Remon Sijrier <r_sijrier> 07/10/16 19:49:24
Modified files:
src/traverso/songcanvas: AudioClipView.cpp AudioClipView.h
Log message:
* make polygontop/bottom private _members_ of AudioClipView instead of
allocating them on the stack, seems to improve painting speed (don't ask me why
though)
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/songcanvas/AudioClipView.cpp?cvsroot=traverso&r1=1.103&r2=1.104
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/songcanvas/AudioClipView.h?cvsroot=traverso&r1=1.32&r2=1.33
Patches:
Index: AudioClipView.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/songcanvas/AudioClipView.cpp,v
retrieving revision 1.103
retrieving revision 1.104
diff -u -b -r1.103 -r1.104
--- AudioClipView.cpp 1 Oct 2007 17:33:38 -0000 1.103
+++ AudioClipView.cpp 16 Oct 2007 19:49:24 -0000 1.104
@@ -130,7 +130,7 @@
painter->save();
QRectF clipRect = m_boundingRect.adjusted(0, -1, 1, 1);
- painter->setClipRect(clipRect);
+ painter->setClipRect(m_boundingRect);
if (m_clip->is_readsource_invalid()) {
painter->fillRect(xstart, 0, pixelcount, m_height,
themer()->get_color("AudioClip:invalidreadsource"));
@@ -225,7 +225,6 @@
void AudioClipView::draw_peaks(QPainter* p, int xstart, int pixelcount)
{
PENTER2;
-
// when painting with a path, I _have_ to use path.lineTo()
// which looks ugly when only parts of the clip is repainted
// when using a different color for the brush then the outline.
@@ -409,7 +408,9 @@
// Microview, paint waveform as polyline
if (microView) {
- QPolygonF polygon;
+ m_polygontop.clear();
+ m_polygontop.reserve(pixelcount);
+
int bufferPos = 0;
if (m_mergedView) {
@@ -429,7 +430,7 @@
p->drawLine(xstart, 0, xstart + pixelcount, 0);
for (int x = xstart; x < (pixelcount+xstart); x++) {
- polygon.append( QPointF(x, scaleFactor *
pixeldata[chan][bufferPos++]) );
+ m_polygontop.append( QPointF(x, scaleFactor *
pixeldata[chan][bufferPos++]) );
}
if
(themer()->get_property("AudioClip:wavemicroview:antialiased", 0).toInt()) {
@@ -437,7 +438,7 @@
}
p->setPen(themer()->get_color("AudioClip:wavemicroview"));
- p->drawPolyline(polygon);
+ p->drawPolyline(m_polygontop);
// Macroview, paint waveform with painterpath
} else {
@@ -469,21 +470,23 @@
QPainterPath path;
// in rectified view, we add an additional point, hence
+ 1
- QPolygonF polygontop(pixelcount + 1);
+ m_polygontop.clear();
+ m_polygontop.reserve(pixelcount + 1);
int bufferpos = 0;
if (m_classicView) {
- QPolygonF polygonbottom(pixelcount);
+ m_polygonbottom.clear();
+ m_polygonbottom.reserve(pixelcount);
int range = pixelcount;
for (int x = 0; x < range; x+=2) {
- polygontop.append( QPointF(x,
scaleFactor * pixeldata[chan][bufferpos++]) );
- polygonbottom.append( QPointF(x,
-scaleFactor * pixeldata[chan][bufferpos++]) );
+ m_polygontop.append( QPointF(x,
scaleFactor * pixeldata[chan][bufferpos++]) );
+ m_polygonbottom.append( QPointF(x,
-scaleFactor * pixeldata[chan][bufferpos++]) );
}
- path.addPolygon(polygontop);
- path.lineTo(polygonbottom.last());
- path.addPolygon(polygonbottom);
+ path.addPolygon(m_polygontop);
+ path.lineTo(m_polygonbottom.last());
+ path.addPolygon(m_polygonbottom);
if (m_mergedView) {
ytrans = (height / 2) * channels;
@@ -501,16 +504,17 @@
}
for (int x=0; x<pixelcount; x+=2) {
- polygontop.append( QPointF(x,
scaleFactor * pixeldata[chan][bufferpos]) );
+ m_polygontop.append( QPointF(x,
scaleFactor * pixeldata[chan][bufferpos]) );
bufferpos++;
}
- polygontop.append(QPointF(xstart + pixelcount,
0));
- path.addPolygon(polygontop);
+ m_polygontop.append(QPointF(xstart +
pixelcount, 0));
+ path.addPolygon(m_polygontop);
path.lineTo(xstart, 0);
}
+
p->setMatrix(matrix().translate(xstart +
adjustforevenpixel, ytrans), true);
p->drawPath(path);
Index: AudioClipView.h
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/songcanvas/AudioClipView.h,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -b -r1.32 -r1.33
--- AudioClipView.h 1 Oct 2007 17:33:38 -0000 1.32
+++ AudioClipView.h 16 Oct 2007 19:49:24 -0000 1.33
@@ -26,6 +26,7 @@
#include <defines.h>
#include <QList>
#include <QTimer>
+#include <QPolygonF>
class AudioClip;
class Song;
@@ -79,6 +80,8 @@
Song* m_song;
CurveView* curveView;
PositionIndicator* m_posIndicator;
+ QPolygonF m_polygonbottom;
+ QPolygonF m_polygontop;
QTimer m_recordingTimer;