Author: Yu Chen <jco...@gmail.com>
Date:   Sat Dec 10 20:00:30 2011 +0800

Use one function for previous/next rendered frame

---

 synfig-studio/src/gui/preview.cpp |   25 ++++++++++++-------------
 synfig-studio/src/gui/preview.h   |    3 +--
 2 files changed, 13 insertions(+), 15 deletions(-)

diff --git a/synfig-studio/src/gui/preview.cpp 
b/synfig-studio/src/gui/preview.cpp
index 33e054e..10bc916 100644
--- a/synfig-studio/src/gui/preview.cpp
+++ b/synfig-studio/src/gui/preview.cpp
@@ -366,7 +366,8 @@ playing(false)
        prev_framebutton->add(*icon0);
        prev_framebutton->set_relief(Gtk::RELIEF_NONE);
        prev_framebutton->show();
-       
prev_framebutton->signal_clicked().connect(sigc::mem_fun(*this,&Widget_Preview::prev_frame));
+       
prev_framebutton->signal_clicked().connect(sigc::bind(sigc::mem_fun(*this,&Widget_Preview::seek_frame),
 -1));
+
        hbox->pack_start(*prev_framebutton, Gtk::PACK_SHRINK, 0);
 
        //play pause
@@ -391,7 +392,8 @@ playing(false)
        next_framebutton->add(*icon2);
        next_framebutton->set_relief(Gtk::RELIEF_NONE);
        next_framebutton->show();
-       
next_framebutton->signal_clicked().connect(sigc::mem_fun(*this,&Widget_Preview::next_frame));
+       
next_framebutton->signal_clicked().connect(sigc::bind(sigc::mem_fun(*this,&Widget_Preview::seek_frame),1));
+
        hbox->pack_start(*next_framebutton, Gtk::PACK_SHRINK, 0);
 
        //space between next frame button and loop button
@@ -874,18 +876,15 @@ void studio::Widget_Preview::on_play_pause_pressed()
        if(play_flag) play(); else pause();
 }
 
-void studio::Widget_Preview::next_frame()
-{
-       if(playing) pause();
-       float rate = preview->get_fps();
-       
adj_time_scrub.set_value((adj_time_scrub.get_value()*rate+1.000001)/rate);
-}
-
-void studio::Widget_Preview::prev_frame()
+void studio::Widget_Preview::seek_frame(int frames)
 {
-       if(playing) pause();
-       float rate = preview->get_fps();
-       
adj_time_scrub.set_value((adj_time_scrub.get_value()*rate-0.99999)/rate);
+//     if(!frames)     return;
+       float fps = preview->get_fps();
+       float currenttime = adj_time_scrub.get_value();
+       Time newtime(currenttime+(float)frames/fps);
+       newtime = newtime.round(fps);
+       
+       adj_time_scrub.set_value(newtime);
 }
 
 bool studio::Widget_Preview::scroll_move_event(GdkEvent *event)
diff --git a/synfig-studio/src/gui/preview.h b/synfig-studio/src/gui/preview.h
index a194c33..a8c7767 100644
--- a/synfig-studio/src/gui/preview.h
+++ b/synfig-studio/src/gui/preview.h
@@ -245,8 +245,7 @@ public:
 
        void on_play_pause_pressed();
 
-       void prev_frame();
-       void next_frame();
+       void seek_frame(int frames);
 
        void stoprender();
 


------------------------------------------------------------------------------
Try before you buy = See our experts in action!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
http://p.sf.net/sfu/learndevnow-dev2
_______________________________________________
Synfig-devl mailing list
Synfig-devl@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/synfig-devl

Reply via email to