diff --git a/effects/internal/transformeffect.cpp b/effects/internal/transformeffect.cpp index 52cf6d7eb..517e21cda 100644 --- a/effects/internal/transformeffect.cpp +++ b/effects/internal/transformeffect.cpp @@ -24,6 +24,7 @@ TransformEffect::TransformEffect(Clip* c, const EffectMeta* em) : Effect(c, em) { enable_coords = true; + enable_gizmos = true; EffectRow* position_row = add_row("Position:"); position_x = position_row->add_field(EFFECT_FIELD_DOUBLE, "posx"); // position X @@ -139,5 +140,9 @@ void TransformEffect::process_coords(double timecode, GLTextureCoords& coords, i // opacity float color[4]; glGetFloatv(GL_CURRENT_COLOR, color); - glColor4f(1.0, 1.0, 1.0, color[3]*(opacity->get_double_value(timecode)*0.01)); + glColor4f(1.0, 1.0, 1.0, color[3]*(opacity->get_double_value(timecode)*0.01)); +} + +void TransformEffect::process_gizmos() { + // TODO put gizmo code here } diff --git a/effects/internal/transformeffect.h b/effects/internal/transformeffect.h index bfeffcbf6..b9e3704ac 100644 --- a/effects/internal/transformeffect.h +++ b/effects/internal/transformeffect.h @@ -9,6 +9,7 @@ public: TransformEffect(Clip* c, const EffectMeta* em); void refresh(); void process_coords(double timecode, GLTextureCoords& coords, int data); + void process_gizmos(); EffectField* position_x; EffectField* position_y; diff --git a/panels/effectcontrols.cpp b/panels/effectcontrols.cpp index 2bb27b32b..b4b0cdeee 100644 --- a/panels/effectcontrols.cpp +++ b/panels/effectcontrols.cpp @@ -193,6 +193,7 @@ void EffectControls::deselect_all_effects(QWidget* sender) { } } } + panel_sequence_viewer->viewer_widget->update(); } void EffectControls::open_effect(QVBoxLayout* layout, Effect* e) { diff --git a/panels/project.cpp b/panels/project.cpp index 74228c232..4cec12011 100644 --- a/panels/project.cpp +++ b/panels/project.cpp @@ -811,7 +811,6 @@ QTreeWidgetItem* Project::find_loaded_folder_by_id(int id) { const EffectMeta* get_meta_from_name(const QString& name, int type) { QVector& effect_list = (type == EFFECT_TYPE_VIDEO) ? video_effects : audio_effects; for (int j=0;j #include @@ -457,7 +458,12 @@ GLuint ViewerWidget::compose_sequence(QVector& nests, bool render_audio) // EFFECT CODE START double timecode = ((double)(playhead-c->get_timeline_in_with_transition()+c->get_clip_in_with_transition())/(double)c->sequence->frame_rate); for (int j=0;jeffects.size();j++) { - process_effect(c, c->effects.at(j), timecode, coords, composite_texture, fbo_switcher, TA_NO_TRANSITION); + Effect* e = c->effects.at(j); + process_effect(c, e, timecode, coords, composite_texture, fbo_switcher, TA_NO_TRANSITION); + + if (e->enable_gizmos && e->container->selected) { + gizmos = e; + } } if (c->get_opening_transition() != NULL) { @@ -612,6 +618,8 @@ GLuint ViewerWidget::compose_sequence(QVector& nests, bool render_audio) void ViewerWidget::paintGL() { if (viewer->seq != NULL) { + gizmos = NULL; + bool render_audio = (viewer->playing || rendering); bool loop = false; do { @@ -670,6 +678,10 @@ void ViewerWidget::paintGL() { drawTitleSafeArea(); } + if (gizmos != NULL && !rendering) { + gizmos->process_gizmos(); + } + glDisable(GL_BLEND); glDisable(GL_TEXTURE_2D); } while (loop); diff --git a/ui/viewerwidget.h b/ui/viewerwidget.h index 7d15b8cc2..3b3cc709f 100644 --- a/ui/viewerwidget.h +++ b/ui/viewerwidget.h @@ -47,6 +47,7 @@ private: GLuint compose_sequence(QVector &nests, bool render_audio); GLuint draw_clip(QOpenGLFramebufferObject *clip, GLuint texture, bool clear); void process_effect(Clip* c, Effect* e, double timecode, GLTextureCoords& coords, GLuint& composite_texture, bool& fbo_switcher, int data); + Effect* gizmos; private slots: void retry(); void show_context_menu();