#include <algorithm>
#include <sstream>
-#include <glibmm/thread.h>
+#include <glibmm/threads.h>
#include "pbd/xml++.h"
#include "ardour/debug.h"
PBD::PropertyDescriptor<bool> muted;
PBD::PropertyDescriptor<bool> opaque;
PBD::PropertyDescriptor<bool> locked;
+ PBD::PropertyDescriptor<bool> video_locked;
PBD::PropertyDescriptor<bool> automatic;
PBD::PropertyDescriptor<bool> whole_file;
PBD::PropertyDescriptor<bool> import;
DEBUG_TRACE (DEBUG::Properties, string_compose ("quark for opaque = %1\n", Properties::opaque.property_id));
Properties::locked.property_id = g_quark_from_static_string (X_("locked"));
DEBUG_TRACE (DEBUG::Properties, string_compose ("quark for locked = %1\n", Properties::locked.property_id));
+ Properties::video_locked.property_id = g_quark_from_static_string (X_("video-locked"));
+ DEBUG_TRACE (DEBUG::Properties, string_compose ("quark for video-locked = %1\n", Properties::video_locked.property_id));
Properties::automatic.property_id = g_quark_from_static_string (X_("automatic"));
DEBUG_TRACE (DEBUG::Properties, string_compose ("quark for automatic = %1\n", Properties::automatic.property_id));
Properties::whole_file.property_id = g_quark_from_static_string (X_("whole-file"));
add_property (_muted);
add_property (_opaque);
add_property (_locked);
+ add_property (_video_locked);
add_property (_automatic);
add_property (_whole_file);
add_property (_import);
, _muted (Properties::muted, false) \
, _opaque (Properties::opaque, true) \
, _locked (Properties::locked, false) \
+ , _video_locked (Properties::video_locked, false) \
, _automatic (Properties::automatic, false) \
, _whole_file (Properties::whole_file, false) \
, _import (Properties::import, false) \
, _muted (Properties::muted, other->_muted) \
, _opaque (Properties::opaque, other->_opaque) \
, _locked (Properties::locked, other->_locked) \
+ , _video_locked (Properties::video_locked, other->_video_locked) \
, _automatic (Properties::automatic, other->_automatic) \
, _whole_file (Properties::whole_file, other->_whole_file) \
, _import (Properties::import, other->_import) \
void
Region::nudge_position (frameoffset_t n)
{
- if (locked()) {
+ if (locked() || video_locked()) {
return;
}
void
Region::set_start (framepos_t pos)
{
- if (locked() || position_locked()) {
+ if (locked() || position_locked() || video_locked()) {
return;
}
/* This just sets the start, nothing else. It effectively shifts
}
void
-Region::trim_start (framepos_t new_position)
+Region::move_start (frameoffset_t distance)
{
- if (locked() || position_locked()) {
+ if (locked() || position_locked() || video_locked()) {
return;
}
framepos_t new_start;
- frameoffset_t const start_shift = new_position - _position;
- if (start_shift > 0) {
+ if (distance > 0) {
- if (_start > max_framepos - start_shift) {
- new_start = max_framepos;
+ if (_start > max_framepos - distance) {
+ new_start = max_framepos; // makes no sense
} else {
- new_start = _start + start_shift;
+ new_start = _start + distance;
}
if (!verify_start (new_start)) {
return;
}
- } else if (start_shift < 0) {
+ } else if (distance < 0) {
- if (_start < -start_shift) {
+ if (_start < -distance) {
new_start = 0;
} else {
- new_start = _start + start_shift;
+ new_start = _start + distance;
}
} else {
}
set_start_internal (new_start);
+
_whole_file = false;
first_edit ();
}
}
+void
+Region::set_video_locked (bool yn)
+{
+ if (video_locked() != yn) {
+ _video_locked = yn;
+ send_change (Properties::video_locked);
+ }
+}
+
void
Region::set_position_locked (bool yn)
{
LocaleGuard lg (X_("POSIX"));
const char* fe = NULL;
- add_properties (*node);
+ /* custom version of 'add_properties (*node);'
+ * skip values that have have dedicated save functions
+ * in AudioRegion::state()
+ */
+ for (OwnedPropertyList::iterator i = _properties->begin(); i != _properties->end(); ++i) {
+ if (!strcmp(i->second->property_name(), (const char*)"Envelope")) continue;
+ if (!strcmp(i->second->property_name(), (const char*)"FadeIn")) continue;
+ if (!strcmp(i->second->property_name(), (const char*)"FadeOut")) continue;
+ if (!strcmp(i->second->property_name(), (const char*)"InverseFadeIn")) continue;
+ if (!strcmp(i->second->property_name(), (const char*)"InverseFadeOut")) continue;
+ i->second->get_value (*node);
+ }
id().print (buf, sizeof (buf));
node->add_property ("id", buf);
return true;
}
+bool
+Region::any_source_equivalent (boost::shared_ptr<const Region> other) const
+{
+ if (!other) {
+ return false;
+ }
+
+ SourceList::const_iterator i;
+ SourceList::const_iterator io;
+
+ for (i = _sources.begin(), io = other->_sources.begin(); i != _sources.end() && io != other->_sources.end(); ++i, ++io) {
+ if ((*i)->id() == (*io)->id()) {
+ return true;
+ }
+ }
+
+ return false;
+}
+
std::string
Region::source_string () const
{
}
}
+ for (SourceList::const_iterator i = _master_sources.begin(); i != _master_sources.end(); ++i) {
+ if (*i == source) {
+ return true;
+ }
+
+ boost::shared_ptr<PlaylistSource> ps = boost::dynamic_pointer_cast<PlaylistSource> (*i);
+
+ if (ps) {
+ if (ps->playlist()->uses_source (source)) {
+ return true;
+ }
+ }
+ }
+
return false;
}