-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

After applying the patch: when changing crop start in the duration
dialog duration will alter accordingly.
Until now when crop start was changed you also influenced crop end.

regards till
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAkti9LUACgkQzwEyz7QP6nSQlwCeNtmE2YCIkOxLmU75QmF0ijTo
zFMAn3YIVrLEwjNoi8N6Idb8TX2hIGBk
=qU1X
-----END PGP SIGNATURE-----
Index: src/clipdurationdialog.cpp
===================================================================
--- src/clipdurationdialog.cpp	(revision 4251)
+++ src/clipdurationdialog.cpp	(working copy)
@@ -49,10 +49,12 @@
         m_view.crop_position->hide();
         m_view.crop_label->hide();
     }
-
     m_view.clip_position->setText(tc.getTimecode(m_clip->startPos()));
     m_view.crop_position->setText(tc.getTimecode(m_clip->cropStart()));
     m_view.clip_duration->setText(tc.getTimecode(m_clip->cropDuration()));
+    
+    m_crop = m_tc.getFrameCount(m_view.crop_position->text());
+    
     connect(m_view.position_up, SIGNAL(clicked()), this, SLOT(slotPosUp()));
     connect(m_view.position_down, SIGNAL(clicked()), this, SLOT(slotPosDown()));
     connect(m_view.crop_up, SIGNAL(clicked()), this, SLOT(slotCropUp()));
@@ -106,11 +108,20 @@
 {
     int dur = m_tc.getFrameCount(m_view.clip_duration->text());
     int crop = m_tc.getFrameCount(m_view.crop_position->text());
+    int dur_orig = dur;
+    if(m_crop < crop && dur - crop + m_crop > 0) {
+        dur = dur - crop + m_crop;
+    } else if(m_crop > crop && dur + m_crop - crop > 0) {
+        dur = dur + m_crop - crop;
+    }
     GenTime duration(dur, m_fps);
     GenTime cropStart(crop, m_fps);
     GenTime maxDuration = m_clip->maxDuration();
     if (maxDuration != GenTime() && cropStart + duration > maxDuration) {
-        m_view.crop_position->setText(m_tc.getTimecode(maxDuration - duration));
+        m_view.crop_position->setText(m_tc.getTimecode(maxDuration - GenTime(dur_orig, m_fps)));
+    } else {
+        m_crop = crop;
+        m_view.clip_duration->setText(m_tc.getTimecode(duration));
     }
 }
 
@@ -149,10 +160,12 @@
 
 void ClipDurationDialog::slotCropUp()
 {
+    slotDurDown();
     int crop = m_tc.getFrameCount(m_view.crop_position->text());
     int duration = m_tc.getFrameCount(m_view.clip_duration->text());
     if (m_clip->maxDuration() != GenTime() && duration + crop > m_clip->maxDuration().frames(m_fps)) return;
     crop ++;
+    m_crop = crop;
     m_view.crop_position->setText(m_tc.getTimecode(GenTime(crop, m_fps)));
 }
 
@@ -161,7 +174,9 @@
     int crop = m_tc.getFrameCount(m_view.crop_position->text());
     if (crop <= 0) return;
     crop --;
+    m_crop = crop;
     m_view.crop_position->setText(m_tc.getTimecode(GenTime(crop, m_fps)));
+    slotDurUp();
 }
 
 GenTime ClipDurationDialog::startPos() const
Index: src/clipdurationdialog.h
===================================================================
--- src/clipdurationdialog.h	(revision 4251)
+++ src/clipdurationdialog.h	(working copy)
@@ -60,6 +60,7 @@
     double m_fps;
     GenTime m_min;
     GenTime m_max;
+    int m_crop;
 };
 
 
------------------------------------------------------------------------------
The Planet: dedicated and managed hosting, cloud storage, colocation
Stay online with enterprise data centers and the best network in the business
Choose flexible plans and management services without long-term contracts
Personal 24x7 support from experience hosting pros just a phone call away.
http://p.sf.net/sfu/theplanet-com
_______________________________________________
Kdenlive-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/kdenlive-devel

Reply via email to