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.cpp


From: Remon Sijrier
Subject: [Traverso-commit] traverso/src/traverso/songcanvas AudioClipView.cpp
Date: Fri, 19 Oct 2007 15:42:27 +0000

CVSROOT:        /sources/traverso
Module name:    traverso
Changes by:     Remon Sijrier <r_sijrier>       07/10/19 15:42:27

Modified files:
        src/traverso/songcanvas: AudioClipView.cpp 

Log message:
        * paint waveform classical in 2 passes, a path for top and one for 
bottom. 
        @ Ben && Nic, does this solve your paint problems ? 

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/songcanvas/AudioClipView.cpp?cvsroot=traverso&r1=1.110&r2=1.111

Patches:
Index: AudioClipView.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/songcanvas/AudioClipView.cpp,v
retrieving revision 1.110
retrieving revision 1.111
diff -u -b -r1.110 -r1.111
--- AudioClipView.cpp   18 Oct 2007 17:48:41 -0000      1.110
+++ AudioClipView.cpp   19 Oct 2007 15:42:27 -0000      1.111
@@ -472,24 +472,31 @@
                                }
                        }
                        
-                       QPainterPath path;
-                       // in rectified view, we add an additional point, hence 
+ 1
+                       // we add one start/stop point so reserve some more...
                        m_polygontop.clear();
-                       m_polygontop.reserve(pixelcount + 1);
+                       m_polygontop.reserve(pixelcount + 3);
                        int bufferpos = 0;
 
                        if (m_classicView) {
+                               QPainterPath pathtop;
+                               QPainterPath pathbottom;
+                               
                                m_polygonbottom.clear();
-                               m_polygonbottom.reserve(pixelcount);
+                               m_polygonbottom.reserve(pixelcount + 3);
+                               
+                               m_polygontop.append(QPointF(0, 0));
+                               m_polygonbottom.append(QPointF(0, 0));
                                
                                for (int x = 0; x < pixelcount; x+=2) {
                                        m_polygontop.append( QPointF(x, 
scaleFactor * pixeldata[chan][bufferpos++]) );
                                        m_polygonbottom.append( QPointF(x, 
-scaleFactor * pixeldata[chan][bufferpos++]) );
                                }
                                
-                               path.addPolygon(m_polygontop);
-                               path.lineTo(m_polygonbottom.last());
-                               path.addPolygon(m_polygonbottom);
+                               m_polygontop.append(QPointF(pixelcount, 0));
+                               m_polygonbottom.append(QPointF(pixelcount, 0));
+                               
+                               pathtop.addPolygon(m_polygontop);
+                               pathbottom.addPolygon(m_polygonbottom);
                                
                                if (m_mergedView) {
                                        ytrans = (height / 2) * channels;
@@ -497,7 +504,14 @@
                                        ytrans = (height / 2) + (chan * height);
                                }
                        
+                               p->setMatrix(matrix().translate(xstart + 
adjustforevenpixel, ytrans), true);
+                               
+                               p->drawPath(pathtop);
+                               p->drawPath(pathbottom);
+                       
                        } else {
+                               QPainterPath path;
+                               
                                scaleFactor =  (float) height * 0.95 * 
m_clip->get_gain() / Peak::MAX_DB_VALUE * curveDefaultValue;
                                ytrans = height + (chan * height);
                
@@ -515,12 +529,12 @@
                                path.addPolygon(m_polygontop);
                                path.lineTo(0, 0);
                                
-                       }
-                       
                        p->setMatrix(matrix().translate(xstart + 
adjustforevenpixel, ytrans), true);
                        p->drawPath(path);
                }
                
+               }
+               
                p->restore();
                
                




reply via email to

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