[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Traverso-commit] traverso/src core/Curve.cpp core/Curve.h traver...
From: |
Ben Levitt |
Subject: |
[Traverso-commit] traverso/src core/Curve.cpp core/Curve.h traver... |
Date: |
Thu, 26 Apr 2007 16:53:42 +0000 |
CVSROOT: /sources/traverso
Module name: traverso
Changes by: Ben Levitt <benjie> 07/04/26 16:53:42
Modified files:
src/core : Curve.cpp Curve.h
src/traverso/songcanvas: CurveView.cpp
Log message:
Fix deleting of last CurveNode. Now instead of deleting last node,
moves last node to original pos.
(Has the effect of resetting curve to the initial state upon deleting
last node.)
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/Curve.cpp?cvsroot=traverso&r1=1.38&r2=1.39
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/Curve.h?cvsroot=traverso&r1=1.20&r2=1.21
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/songcanvas/CurveView.cpp?cvsroot=traverso&r1=1.41&r2=1.42
Patches:
Index: core/Curve.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/core/Curve.cpp,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -b -r1.38 -r1.39
--- core/Curve.cpp 16 Apr 2007 18:44:26 -0000 1.38
+++ core/Curve.cpp 26 Apr 2007 16:53:42 -0000 1.39
@@ -38,6 +38,7 @@
#include <QStringList>
#include <QThread>
#include <AddRemove.h>
+#include <Command.h>
#include <CommandGroup.h>
#include "Mixer.h"
@@ -48,6 +49,54 @@
using namespace std;
+class MoveNode : public Command
+{
+
+public:
+ MoveNode(Curve* curve, CurveNode* node, double when, double val, const
QString& des);
+
+ int prepare_actions();
+ int do_action();
+ int undo_action();
+
+private :
+ CurveNode* m_node;
+ double m_origWhen;
+ double m_origVal;
+ double m_newWhen;
+ double m_newVal;
+};
+
+
+MoveNode::MoveNode(Curve* curve, CurveNode* node, double when, double val,
const QString& des)
+ : Command(curve, des)
+{
+ m_node = node;
+ m_origWhen = m_node->get_when();
+ m_origVal = m_node->get_value();
+ m_newWhen = when;
+ m_newVal = val;
+}
+
+int MoveNode::prepare_actions()
+{
+ return 1;
+}
+
+int MoveNode::do_action()
+{
+ m_node->set_when_and_value(m_newWhen, m_newVal);
+ return 1;
+}
+
+int MoveNode::undo_action()
+{
+ m_node->set_when_and_value(m_origWhen, m_origVal);
+ return 1;
+}
+
+
+
Curve::Curve(ContextItem* parent, Song* song)
: ContextItem(parent)
, m_song(song)
@@ -80,6 +129,7 @@
m_lookup_cache.range.first = m_nodes.end();
m_defaultValue = 1.0f;
+ m_defaultInitialValue = 1.0f;
connect(this, SIGNAL(nodePositionChanged()), this, SLOT(set_changed()));
}
@@ -574,6 +624,14 @@
{
PENTER2;
+ if (m_nodes.size() == 1) {
+ MoveNode* cmd;
+
+ cmd = new MoveNode(this, node, 0.0f, m_defaultInitialValue,
tr("Remove CurveNode"));
+
+ return cmd;
+ }
+
AddRemove* cmd;
cmd = new AddRemove(this, node, historable, m_song,
Index: core/Curve.h
===================================================================
RCS file: /sources/traverso/traverso/src/core/Curve.h,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -b -r1.20 -r1.21
--- core/Curve.h 17 Apr 2007 19:56:46 -0000 1.20
+++ core/Curve.h 26 Apr 2007 16:53:42 -0000 1.21
@@ -63,6 +63,8 @@
QList<CurveNode* >* get_nodes() {return &m_nodes;}
Song* get_song() const {return m_song;}
+ double get_default_initial_value() {return m_defaultInitialValue;}
+
// Set functions
virtual void set_range(double when);
@@ -75,6 +77,8 @@
// to avoid this, use this function to not let this happen...
void clear_curve() {m_nodes.clear();}
+ void set_default_initial_value(double val) {m_defaultInitialValue =
val;}
+
protected:
struct LookupCache {
double left; /* leftmost x coordinate used when finding
"range" */
@@ -98,6 +102,8 @@
double m_defaultValue;
+ double m_defaultInitialValue;
+
double multipoint_eval (double x);
void x_scale(double factor);
Index: traverso/songcanvas/CurveView.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/songcanvas/CurveView.cpp,v
retrieving revision 1.41
retrieving revision 1.42
diff -u -b -r1.41 -r1.42
--- traverso/songcanvas/CurveView.cpp 26 Apr 2007 14:48:25 -0000 1.41
+++ traverso/songcanvas/CurveView.cpp 26 Apr 2007 16:53:42 -0000 1.42
@@ -471,11 +471,6 @@
{
PENTER;
if (m_blinkingNode) {
- // Never remove first node, temp fix since curves should have
- // some kind of 'fixed' default node that can't be removed ?
- if (m_blinkingNode == m_nodeViews.first()) {
- return 0;
- }
CurveNode* node = m_blinkingNode->get_curve_node();
m_blinkingNode = 0;
return m_curve->remove_node(node);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Traverso-commit] traverso/src core/Curve.cpp core/Curve.h traver...,
Ben Levitt <=