traverso-commit
[Top][All Lists]
Advanced

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




reply via email to

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