EQUIV(control_y2, ptr.control_y2);
}
-SubMask::SubMask(MaskAuto *keyframe)
+SubMask::SubMask(MaskAuto *keyframe, int no)
{
this->keyframe = keyframe;
+ memset(name, 0, sizeof(name));
+ sprintf(name, "%d", no);
}
SubMask::~SubMask()
void SubMask::copy_from(SubMask& ptr)
{
+ memset(name, 0, sizeof(name));
+ strncpy(name, ptr.name, sizeof(name-1));
points.remove_all_objects();
//printf("SubMask::copy_from 1 %p %d\n", this, ptr.points.total);
for(int i = 0; i < ptr.points.total; i++)
{
file->tag.set_title("MASK");
file->tag.set_property("NUMBER", keyframe->masks.number_of(this));
+ file->tag.set_property("NAME", name);
file->append_tag();
file->append_newline();
// submask matches.
for(int i = 0; i < SUBMASKS; i++)
- masks.append(new SubMask(this));
+ masks.append(new SubMask(this, i));
}
MaskAuto::~MaskAuto()
void MaskAuto::update_parameter(MaskAuto *ref, MaskAuto *src)
{
if(src->value != ref->value)
- {
this->value = src->value;
- }
-
if(src->mode != ref->mode)
- {
this->mode = src->mode;
- }
-
+ if(src->apply_before_plugins != ref->apply_before_plugins)
+ this->apply_before_plugins = src->apply_before_plugins;
+ if(src->disable_opengl_masking != ref->disable_opengl_masking)
+ this->disable_opengl_masking = src->disable_opengl_masking;
if(!EQUIV(src->feather, ref->feather))
- {
this->feather = src->feather;
- }
- for(int i = 0; i < masks.size(); i++)
- {
+ for( int i=0; i<masks.size(); ++i ) {
if(!src->get_submask(i)->equivalent(*ref->get_submask(i)))
this->get_submask(i)->copy_from(*src->get_submask(i));
}
masks.remove_all_objects();
for(int i = 0; i < src->masks.size(); i++)
{
- masks.append(new SubMask(this));
+ masks.append(new SubMask(this, i));
masks.values[i]->copy_from(*src->masks.values[i]);
}
}
i < mask_auto1->masks.total;
i++)
{
- SubMask *new_submask = new SubMask(this);
+ SubMask *new_submask = new SubMask(this, i);
masks.append(new_submask);
SubMask *mask1 = mask_auto1->masks.values[i];
SubMask *mask2 = mask_auto2->masks.values[i];
for(int i = 0; i < masks.size(); i++)
{
delete masks.values[i];
- masks.values[i] = new SubMask(this);
+ masks.values[i] = new SubMask(this, i);
}
int result = 0;
- while(!result)
- {
- result = file->read_tag();
-
- if(!result)
- {
- if(file->tag.title_is("/AUTO"))
- result = 1;
- else
- if(file->tag.title_is("MASK"))
- {
- SubMask *mask = masks.values[file->tag.get_property("NUMBER", 0)];
- mask->load(file);
- }
+ while( !(result = file->read_tag()) ) {
+ if( file->tag.title_is("/AUTO") ) break;
+ if( file->tag.title_is("MASK") ) {
+ int no = file->tag.get_property("NUMBER", 0);
+ char name[BCTEXTLEN]; name[0] = 0;
+ file->tag.get_property("NAME", name);
+ if( !name[0] ) sprintf(name, "%d", no);
+ SubMask *mask = masks.values[no];
+ memset(mask->name, 0, sizeof(mask->name));
+ strncpy(mask->name, name, sizeof(mask->name));
+ mask->load(file);
}
}
// dump();
//printf("MaskAuto::copy 10\n");
}
- file->append_newline();
file->tag.set_title("/AUTO");
file->append_tag();
file->append_newline();