traverso-commit
[Top][All Lists]
Advanced

[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;
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]