return equivalent(ptr);
}
-void SubMask::copy_from(SubMask& ptr)
+void SubMask::copy_from(SubMask& ptr, int do_name)
{
- memset(name, 0, sizeof(name));
- strncpy(name, ptr.name, sizeof(name-1));
+ if( do_name ) {
+ memset(name, 0, sizeof(name));
+ strncpy(name, ptr.name, sizeof(name-1));
+ }
fader = ptr.fader;
feather = ptr.feather;
points.remove_all_objects();
if(points.total)
{
file->tag.set_title("MASK");
- file->tag.set_property("NUMBER", keyframe->masks.number_of(this));
+ file->tag.set_property("NUMBER",
+ !keyframe ? -1 : keyframe->masks.number_of(this));
file->tag.set_property("NAME", name);
file->tag.set_property("FADER", fader);
file->tag.set_property("FEATHER", feather);
}
}
+int MaskAuto::has_active_mask()
+{
+ int total_points = 0;
+ float min_fader = 100;
+ for( int i=0; i<masks.size(); ++i ) {
+ SubMask *mask = get_submask(i);
+ int submask_points = mask->points.size();
+ if( submask_points > 1 ) total_points += submask_points;
+ int fader = mask->fader;
+ if( fader < min_fader ) min_fader = fader;
+ }
+ return min_fader >= 0 && total_points < 2 ? 0 : 1;
+}