anchor points now recenter when the media is replaced (#226)
This commit is contained in:
@@ -119,24 +119,52 @@ TransformEffect::TransformEffect(Clip* c, const EffectMeta* em) : Effect(c, em)
|
||||
// set defaults
|
||||
uniform_scale_field->set_bool_value(true);
|
||||
blend_mode_box->set_combo_index(0);
|
||||
set = false;
|
||||
refresh();
|
||||
}
|
||||
|
||||
void adjust_field(EffectField* field, double old_offset, double new_offset) {
|
||||
if (field->keyframes.size() > 0) {
|
||||
for (int i=0;i<field->keyframes.size();i++) {
|
||||
field->keyframes[i].data = field->keyframes.at(i).data.toDouble() - old_offset + new_offset;
|
||||
}
|
||||
} else {
|
||||
field->set_current_data(field->get_current_data().toDouble() - old_offset + new_offset);
|
||||
}
|
||||
}
|
||||
|
||||
void TransformEffect::refresh() {
|
||||
if (parent_clip != NULL && parent_clip->sequence != NULL) {
|
||||
double default_pos_x = parent_clip->sequence->width/2;
|
||||
double default_pos_y = parent_clip->sequence->height/2;
|
||||
double new_default_pos_x = parent_clip->sequence->width/2;
|
||||
double new_default_pos_y = parent_clip->sequence->height/2;
|
||||
|
||||
/*if (set) {
|
||||
adjust_field(position_x, default_pos_x, new_default_pos_x);
|
||||
adjust_field(position_y, default_pos_y, new_default_pos_y);
|
||||
}*/
|
||||
|
||||
default_pos_x = new_default_pos_x;
|
||||
default_pos_y = new_default_pos_y;
|
||||
|
||||
position_x->set_double_default_value(default_pos_x);
|
||||
position_y->set_double_default_value(default_pos_y);
|
||||
scale_x->set_double_default_value(100);
|
||||
scale_y->set_double_default_value(100);
|
||||
|
||||
default_anchor_x = parent_clip->getWidth()/2;
|
||||
default_anchor_y = parent_clip->getHeight()/2;
|
||||
int new_default_anchor_x = parent_clip->getWidth()/2;
|
||||
int new_default_anchor_y = parent_clip->getHeight()/2;
|
||||
|
||||
if (default_anchor_x == 0) default_anchor_x = default_pos_x;
|
||||
if (default_anchor_y == 0) default_anchor_y = default_pos_y;
|
||||
if (new_default_anchor_x == 0) new_default_anchor_x = default_pos_x;
|
||||
if (new_default_anchor_y == 0) new_default_anchor_y = default_pos_y;
|
||||
|
||||
// adjust anchors for new size
|
||||
if (set) {
|
||||
adjust_field(anchor_x_box, default_anchor_x, new_default_anchor_x);
|
||||
adjust_field(anchor_y_box, default_anchor_y, new_default_anchor_y);
|
||||
}
|
||||
|
||||
default_anchor_x = new_default_anchor_x;
|
||||
default_anchor_y = new_default_anchor_y;
|
||||
|
||||
anchor_x_box->set_double_default_value(default_anchor_x);
|
||||
anchor_y_box->set_double_default_value(default_anchor_y);
|
||||
@@ -157,6 +185,8 @@ void TransformEffect::refresh() {
|
||||
left_center_gizmo->x_field_multi1 = -x_percent_multipler;
|
||||
right_center_gizmo->x_field_multi1 = x_percent_multipler;
|
||||
rotate_gizmo->x_field_multi1 = x_percent_multipler;
|
||||
|
||||
set = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -39,6 +39,9 @@ private:
|
||||
|
||||
int default_anchor_x;
|
||||
int default_anchor_y;
|
||||
double default_pos_x;
|
||||
double default_pos_y;
|
||||
bool set;
|
||||
};
|
||||
|
||||
#endif // TRANSFORMEFFECT_H
|
||||
|
||||
Reference in New Issue
Block a user