[Top][All Lists]
[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);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Traverso-commit] traverso/src core/AudioClip.cpp traverso/songca...,
Remon Sijrier <=