traverso-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Traverso-commit] traverso/src core/AudioClip.cpp traverso/songca...


From: Remon Sijrier
Subject: [Traverso-commit] traverso/src core/AudioClip.cpp traverso/songca...
Date: Thu, 26 Apr 2007 13:46:42 +0000

CVSROOT:        /sources/traverso
Module name:    traverso
Changes by:     Remon Sijrier <r_sijrier>       07/04/26 13:46:42

Modified files:
        src/core       : AudioClip.cpp 
        src/traverso/songcanvas: AudioClipView.cpp CurveNodeView.cpp 
                                 CurveNodeView.h CurveView.cpp 
                                 CurveView.h 

Log message:
        * Added start offset for CurveViews and Node Views.
        Needs to be set explicitly, which we do for AudioClips.
        Fixes problem when splitting clip moves the curve in the second clip to 
wrong position,
        as well as moving the left edge...

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/AudioClip.cpp?cvsroot=traverso&r1=1.80&r2=1.81
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/songcanvas/AudioClipView.cpp?cvsroot=traverso&r1=1.51&r2=1.52
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/songcanvas/CurveNodeView.cpp?cvsroot=traverso&r1=1.7&r2=1.8
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/songcanvas/CurveNodeView.h?cvsroot=traverso&r1=1.5&r2=1.6
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/songcanvas/CurveView.cpp?cvsroot=traverso&r1=1.39&r2=1.40
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/songcanvas/CurveView.h?cvsroot=traverso&r1=1.8&r2=1.9

Patches:
Index: core/AudioClip.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/core/AudioClip.cpp,v
retrieving revision 1.80
retrieving revision 1.81
diff -u -b -r1.80 -r1.81
--- core/AudioClip.cpp  25 Apr 2007 20:35:18 -0000      1.80
+++ core/AudioClip.cpp  26 Apr 2007 13:46:42 -0000      1.81
@@ -448,7 +448,7 @@
                m_fades.at(i)->process(mixdown, read_frames);
        }
        
-       m_gainEnvelope->process(mixdown, (m_song->get_transport_frame() - 
trackStartFrame), read_frames);
+       m_gainEnvelope->process(mixdown, (m_song->get_transport_frame() - 
(trackStartFrame - sourceStartFrame)), read_frames);
        
        return 1;
 }

Index: traverso/songcanvas/AudioClipView.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/songcanvas/AudioClipView.cpp,v
retrieving revision 1.51
retrieving revision 1.52
diff -u -b -r1.51 -r1.52
--- traverso/songcanvas/AudioClipView.cpp       25 Apr 2007 15:58:50 -0000      
1.51
+++ traverso/songcanvas/AudioClipView.cpp       26 Apr 2007 13:46:42 -0000      
1.52
@@ -71,6 +71,11 @@
        }
        
        curveView = new CurveView(m_sv, this, m_clip->get_gain_envelope());
+       // CurveViews don't 'get' their start offset, it's only a property for 
AudioClips..
+       // So to be sure the CurveNodeViews start offset get updated as well,
+       // we call curveviews calculate_bounding_rect() function!
+       curveView->set_start_offset(m_clip->get_source_start_frame());
+       curveView->calculate_bounding_rect();
        
        connect(m_clip, SIGNAL(muteChanged()), this, SLOT(repaint()));
        connect(m_clip, SIGNAL(stateChanged()), this, SLOT(repaint()));
@@ -279,7 +284,8 @@
        }
        
        int mixcurvedata = 0;
-       mixcurvedata |= curveView->get_vector(xstart, pixelcount, curvemixdown);
+       int offset = m_clip->get_source_start_frame() / m_sv->scalefactor;
+       mixcurvedata |= curveView->get_vector(xstart + offset, pixelcount, 
curvemixdown);
        
        float fademixdown[pixelcount];
        for (int i = 0; i < m_fadeViews.size(); ++i) {
@@ -624,6 +630,12 @@
 
 void AudioClipView::position_changed()
 {
+       // Update the curveview start offset, only needed for left edge dragging
+       // but who cares :)
+       // the calculate_bounding_rect() will update AudioClipViews children, so
+       // the CurveView and it's nodes get updated as well, no need to set
+       // the start offset for those manually!
+       curveView->set_start_offset(m_clip->get_source_start_frame());
        calculate_bounding_rect();
        update();
 }

Index: traverso/songcanvas/CurveNodeView.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/songcanvas/CurveNodeView.cpp,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- traverso/songcanvas/CurveNodeView.cpp       23 Feb 2007 13:54:33 -0000      
1.7
+++ traverso/songcanvas/CurveNodeView.cpp       26 Apr 2007 13:46:42 -0000      
1.8
@@ -1,5 +1,5 @@
 /*
-Copyright (C) 2006 Remon Sijrier
+Copyright (C) 2006-2007 Remon Sijrier
 
 This file is part of Traverso
 
@@ -17,7 +17,6 @@
 along with this program; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA.
 
-$Id: CurveNodeView.cpp,v 1.7 2007/02/23 13:54:33 r_sijrier Exp $
 */
 
 #include "CurveNodeView.h"
@@ -28,16 +27,18 @@
 #include <CurveNode.h>
 #include <Themer.h>
 #include <Curve.h>
+#include "CurveView.h"
 
 #include <Debugger.h>
 
-CurveNodeView::CurveNodeView( SongView * sv, ViewItem * parentViewItem, 
CurveNode * node, Curve* guicurve)
-       : ViewItem(parentViewItem, 0)
+CurveNodeView::CurveNodeView( SongView * sv, CurveView* curveview, CurveNode * 
node, Curve* guicurve)
+       : ViewItem(curveview, 0)
        , CurveNode(guicurve, node->get_when(), node->get_value())
        , m_node(node)
 {
        PENTERCONS;
        m_sv = sv;
+       m_curveview = curveview;
        m_boundingRect = QRectF(0, 0, 6, 6);
        load_theme_data();
        
@@ -104,7 +105,7 @@
 
 void CurveNodeView::update_pos( )
 {
-       setPos( (m_node->get_when() / m_sv->scalefactor) - 
(m_boundingRect.width() / 2),
+       setPos( ((m_node->get_when() - m_curveview->get_start_offset()) / 
m_sv->scalefactor) - (m_boundingRect.width() / 2),
                m_parentViewItem->boundingRect().height() - 
(m_node->get_value() * m_parentViewItem->boundingRect().height() + 
m_boundingRect.height() / 2 ));
                
        set_when_and_value((m_node->get_when() / m_sv->scalefactor), 
m_node->get_value());
@@ -131,3 +132,4 @@
 }
 
 //eof
+

Index: traverso/songcanvas/CurveNodeView.h
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/songcanvas/CurveNodeView.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- traverso/songcanvas/CurveNodeView.h 23 Feb 2007 13:54:33 -0000      1.5
+++ traverso/songcanvas/CurveNodeView.h 26 Apr 2007 13:46:42 -0000      1.6
@@ -1,5 +1,5 @@
 /*
-Copyright (C) 2006 Remon Sijrier 
+Copyright (C) 2006-2007 Remon Sijrier 
 
 This file is part of Traverso
 
@@ -17,7 +17,6 @@
 along with this program; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA.
 
-$Id: CurveNodeView.h,v 1.5 2007/02/23 13:54:33 r_sijrier Exp $
 */
 
 #ifndef CURVE_NODE_VIEW_H
@@ -27,12 +26,14 @@
 
 #include <CurveNode.h>
 
+class CurveView;
+
 class CurveNodeView : public ViewItem, public CurveNode
 {
        Q_OBJECT
 
 public:
-       CurveNodeView(SongView* sv, ViewItem* parentViewItem, CurveNode* node, 
Curve* guicurve);
+       CurveNodeView(SongView* sv, CurveView* curveview, CurveNode* node, 
Curve* guicurve);
        ~CurveNodeView();
        
        enum {Type = UserType + 9};
@@ -48,6 +49,7 @@
        CurveNode* get_curve_node() const {return m_node;}
        
 private:
+       CurveView*      m_curveview;
        CurveNode*      m_node;
        QColor          m_color;
 

Index: traverso/songcanvas/CurveView.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/songcanvas/CurveView.cpp,v
retrieving revision 1.39
retrieving revision 1.40
diff -u -b -r1.39 -r1.40
--- traverso/songcanvas/CurveView.cpp   25 Apr 2007 18:53:26 -0000      1.39
+++ traverso/songcanvas/CurveView.cpp   26 Apr 2007 13:46:42 -0000      1.40
@@ -181,6 +181,7 @@
        
        m_blinkColorDirection = 1;
        m_blinkingNode = 0;
+       m_startoffset = 0;
        m_guicurve = new Curve(0, m_sv->get_song());
        
        QList<CurveNode* >* nodes = m_curve->get_nodes();
@@ -246,9 +247,9 @@
        float vector[pixelcount];
        
 //     printf("range: %d\n", (int)m_nodeViews.last()->pos().x());
-       
-       m_guicurve->get_vector(xstart,
-                               xstart + pixelcount,
+       int offset = m_startoffset / m_sv->scalefactor;
+       m_guicurve->get_vector(xstart + offset,
+                               xstart + pixelcount + offset,
                                vector,
                                pixelcount);
        
@@ -257,7 +258,7 @@
        }
        // We could miss the last one since we skip 3 pixels at a time.
        // so, always add the last one!
-       polygon <<  QPointF(xstart + pixelcount-1, height - 
(vector[pixelcount-1] * height) );
+       polygon <<  QPointF(xstart + pixelcount, height - (vector[pixelcount-1] 
* height) );
        
        // Depending on the zoom level, curve nodes can end up to be aligned 
        // vertically at the exact same x position. The curve line won't be 
painted
@@ -463,7 +464,8 @@
        PENTER;
        QPointF point = mapFromScene(cpointer().scene_pos());
        
-       CurveNode* node = new CurveNode(m_curve, point.x() * m_sv->scalefactor, 
(m_boundingRect.height() - point.y()) / m_boundingRect.height());
+       CurveNode* node = new CurveNode(m_curve, point.x() * m_sv->scalefactor 
+ m_startoffset,
+                                        (m_boundingRect.height() - point.y()) 
/ m_boundingRect.height());
        return m_curve->add_node(node);
 }
 
@@ -571,5 +573,10 @@
        calculate_bounding_rect();
 }
 
+void CurveView::set_start_offset(nframes_t offset)
+{
+       m_startoffset = offset;
+}
+
 //eof
 

Index: traverso/songcanvas/CurveView.h
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/songcanvas/CurveView.h,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- traverso/songcanvas/CurveView.h     25 Apr 2007 01:34:02 -0000      1.8
+++ traverso/songcanvas/CurveView.h     26 Apr 2007 13:46:42 -0000      1.9
@@ -1,5 +1,5 @@
 /*
-Copyright (C) 2006 Remon Sijrier 
+Copyright (C) 2006-2007 Remon Sijrier 
 
 This file is part of Traverso
 
@@ -17,7 +17,6 @@
 along with this program; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA.
 
-$Id: CurveView.h,v 1.8 2007/04/25 01:34:02 benjie Exp $
 */
 
 #ifndef CURVE_VIEW_H
@@ -51,6 +50,9 @@
        void calculate_bounding_rect();
        void load_theme_data();
        
+       void set_start_offset(nframes_t offset);
+       nframes_t get_start_offset() const {return m_startoffset;}
+       
 
 protected:
        void hoverEnterEvent ( QGraphicsSceneHoverEvent * event );
@@ -65,6 +67,7 @@
        QColor          m_blinkColor;
        int             m_blinkColorDirection;
        QList<CurveNodeView*>   m_nodeViews;
+       nframes_t       m_startoffset;
        
        void update_softselected_node(QPoint pos, bool force = false);
 




reply via email to

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