diff --git a/effects/internal/transformeffect.cpp b/effects/internal/transformeffect.cpp index 352e0a6e6..ca65a4b9a 100644 --- a/effects/internal/transformeffect.cpp +++ b/effects/internal/transformeffect.cpp @@ -119,55 +119,40 @@ 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; + set = false; refresh(); } void adjust_field(EffectField* field, double old_offset, double new_offset) { - if (field->keyframes.size() > 0) { - for (int i=0;ikeyframes.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); - } + if (field->keyframes.size() > 0) { + for (int i=0;ikeyframes.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 new_default_pos_x = parent_clip->sequence->width/2; - double new_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); - }*/ + /*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; + double default_pos_x = new_default_pos_x; + double 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); - int new_default_anchor_x = parent_clip->getWidth()/2; - int new_default_anchor_y = parent_clip->getHeight()/2; - - 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); + anchor_x_box->set_double_default_value(0); + anchor_y_box->set_double_default_value(0); opacity->set_double_default_value(100); double x_percent_multipler = 200.0 / parent_clip->sequence->width; @@ -186,7 +171,7 @@ void TransformEffect::refresh() { right_center_gizmo->x_field_multi1 = x_percent_multipler; rotate_gizmo->x_field_multi1 = x_percent_multipler; - set = true; + set = true; } } @@ -206,8 +191,8 @@ void TransformEffect::process_coords(double timecode, GLTextureCoords& coords, i glTranslatef(position_x->get_double_value(timecode)-(parent_clip->sequence->width/2), position_y->get_double_value(timecode)-(parent_clip->sequence->height/2), 0); // anchor point - int anchor_x_offset = (anchor_x_box->get_double_value(timecode)-default_anchor_x); - int anchor_y_offset = (anchor_y_box->get_double_value(timecode)-default_anchor_y); + int anchor_x_offset = (anchor_x_box->get_double_value(timecode)); + int anchor_y_offset = (anchor_y_box->get_double_value(timecode)); coords.vertexTopLeftX -= anchor_x_offset; coords.vertexTopRightX -= anchor_x_offset; coords.vertexBottomLeftX -= anchor_x_offset; diff --git a/effects/internal/transformeffect.h b/effects/internal/transformeffect.h index c20ff6a6d..feb875ac6 100644 --- a/effects/internal/transformeffect.h +++ b/effects/internal/transformeffect.h @@ -8,40 +8,36 @@ class TransformEffect : public Effect { public: TransformEffect(Clip* c, const EffectMeta* em); void refresh(); - void process_coords(double timecode, GLTextureCoords& coords, int data); + void process_coords(double timecode, GLTextureCoords& coords, int data); - void gizmo_draw(double timecode, GLTextureCoords& coords); + void gizmo_draw(double timecode, GLTextureCoords& coords); public slots: void toggle_uniform_scale(bool enabled); private: - EffectField* position_x; - EffectField* position_y; - EffectField* scale_x; - EffectField* scale_y; - EffectField* uniform_scale_field; - EffectField* rotation; - EffectField* anchor_x_box; - EffectField* anchor_y_box; - EffectField* opacity; - EffectField* blend_mode_box; + EffectField* position_x; + EffectField* position_y; + EffectField* scale_x; + EffectField* scale_y; + EffectField* uniform_scale_field; + EffectField* rotation; + EffectField* anchor_x_box; + EffectField* anchor_y_box; + EffectField* opacity; + EffectField* blend_mode_box; - EffectGizmo* top_left_gizmo; - EffectGizmo* top_center_gizmo; - EffectGizmo* top_right_gizmo; - EffectGizmo* bottom_left_gizmo; - EffectGizmo* bottom_center_gizmo; - EffectGizmo* bottom_right_gizmo; - EffectGizmo* left_center_gizmo; - EffectGizmo* right_center_gizmo; - EffectGizmo* anchor_gizmo; - EffectGizmo* rotate_gizmo; - EffectGizmo* rect_gizmo; + EffectGizmo* top_left_gizmo; + EffectGizmo* top_center_gizmo; + EffectGizmo* top_right_gizmo; + EffectGizmo* bottom_left_gizmo; + EffectGizmo* bottom_center_gizmo; + EffectGizmo* bottom_right_gizmo; + EffectGizmo* left_center_gizmo; + EffectGizmo* right_center_gizmo; + EffectGizmo* anchor_gizmo; + EffectGizmo* rotate_gizmo; + EffectGizmo* rect_gizmo; - int default_anchor_x; - int default_anchor_y; - double default_pos_x; - double default_pos_y; - bool set; + bool set; }; #endif // TRANSFORMEFFECT_H