[Bf-blender-cvs] [191fc1c98e4] temp-vse-preview-transform2: Draw outline for selected strips
Richard Antalik
noreply at git.blender.org
Wed Sep 15 17:19:53 CEST 2021
Commit: 191fc1c98e4cd9d4262ed58e7ee2adef8ea8b5b0
Author: Richard Antalik
Date: Fri Sep 10 09:16:32 2021 +0200
Branches: temp-vse-preview-transform2
https://developer.blender.org/rB191fc1c98e4cd9d4262ed58e7ee2adef8ea8b5b0
Draw outline for selected strips
===================================================================
M source/blender/editors/space_sequencer/sequencer_draw.c
M source/blender/editors/transform/transform_gizmo_2d.c
===================================================================
diff --git a/source/blender/editors/space_sequencer/sequencer_draw.c b/source/blender/editors/space_sequencer/sequencer_draw.c
index c05e1abdbea..c6c8d21512f 100644
--- a/source/blender/editors/space_sequencer/sequencer_draw.c
+++ b/source/blender/editors/space_sequencer/sequencer_draw.c
@@ -2048,9 +2048,19 @@ static int sequencer_draw_get_transform_preview_frame(Scene *scene)
return preview_frame;
}
-static void seq_draw_origins(const bContext *C, Sequence *seq)
+static void seq_draw_image_origin_and_outline(const bContext *C, Sequence *seq)
{
+ Editing *ed = SEQ_editing_get(CTX_data_scene(C));
+ if ((seq->flag & SELECT) == 0 && seq != ed->act_seq) {
+ return;
+ }
+ if (ED_screen_animation_no_scrub(CTX_wm_manager(C))) {
+ return;
+ }
+
const StripTransform *transform = seq->strip->transform;
+
+ /* Origin. */
float x = transform->xofs + transform->origin[0];
float y = transform->yofs + transform->origin[1];
@@ -2060,11 +2070,56 @@ static void seq_draw_origins(const bContext *C, Sequence *seq)
immUniform1f("outlineWidth", 1.5f);
immUniformColor3f(1.0f, 1.0f, 1.0f);
immUniform4f("outlineColor", 0.0f, 0.0f, 0.0f, 1.0f);
- immUniform1f("size", 12.0f);
+ immUniform1f("size", 15.0f * U.pixelsize);
immBegin(GPU_PRIM_POINTS, 1);
immVertex2f(pos, x, y);
immEnd();
immUnbindProgram();
+
+ /* Outline. */
+ StripElem *strip_elem = seq->strip->stripdata;
+ float transform_matrix[3][3];
+ loc_rot_size_to_mat3(transform_matrix,
+ (const float[]){transform->xofs, transform->yofs},
+ transform->rotation,
+ (const float[]){transform->scale_x, transform->scale_y});
+ transform_pivot_set_m3(transform_matrix, transform->origin);
+
+ float image_size[2] = {strip_elem->orig_height, strip_elem->orig_height};
+ mul_v2_fl(image_size, 0.5f);
+ float a[2] = {image_size[0], image_size[1]};
+ float b[2] = {image_size[0], -image_size[1]};
+ float c[2] = {-image_size[0], -image_size[1]};
+ float d[2] = {-image_size[0], image_size[1]};
+ mul_m3_v2(transform_matrix, a);
+ mul_m3_v2(transform_matrix, b);
+ mul_m3_v2(transform_matrix, c);
+ mul_m3_v2(transform_matrix, d);
+
+ GPU_line_smooth(true);
+ GPU_blend(GPU_BLEND_ALPHA);
+ GPU_line_width(2);
+ immBindBuiltinProgram(GPU_SHADER_2D_UNIFORM_COLOR);
+
+ float col[3];
+ if (seq == ed->act_seq) {
+ UI_GetThemeColor3fv(TH_SEQ_ACTIVE, col);
+ }
+ else {
+ UI_GetThemeColor3fv(TH_SEQ_SELECTED, col);
+ }
+ immUniformColor3fv(col);
+ immUniform1f("lineWidth", U.pixelsize);
+ immBegin(GPU_PRIM_LINE_LOOP, 4);
+ immVertex2f(pos, a[0], a[1]);
+ immVertex2f(pos, b[0], b[1]);
+ immVertex2f(pos, c[0], c[1]);
+ immVertex2f(pos, d[0], d[1]);
+ immEnd();
+ immUnbindProgram();
+ GPU_line_width(1);
+ GPU_blend(GPU_BLEND_NONE);
+ GPU_line_smooth(false);
}
void sequencer_draw_preview(const bContext *C,
@@ -2156,10 +2211,10 @@ void sequencer_draw_preview(const bContext *C,
}
/* Image origins, may be only visible for development. */
- SeqCollection *collection = SEQ_query_all_strips(&scene->ed->seqbase);
+ SeqCollection *collection = Seq_query_rendered_strips(&scene->ed->seqbase, timeline_frame, 0);
Sequence *seq;
SEQ_ITERATOR_FOREACH (seq, collection) {
- seq_draw_origins(C, seq);
+ seq_draw_image_origin_and_outline(C, seq);
}
SEQ_collection_free(collection);
diff --git a/source/blender/editors/transform/transform_gizmo_2d.c b/source/blender/editors/transform/transform_gizmo_2d.c
index 4a89cb5cfbc..eb89c0011a8 100644
--- a/source/blender/editors/transform/transform_gizmo_2d.c
+++ b/source/blender/editors/transform/transform_gizmo_2d.c
@@ -391,6 +391,11 @@ static void gizmo2d_xform_setup(const bContext *C, wmGizmoGroup *gzgroup)
}
}
+ ScrArea *area = CTX_wm_area(C);
+ if (area->spacetype == SPACE_SEQ) {
+ RNA_boolean_set(ptr, "sequencer_image", true);
+ }
+
RNA_boolean_set(ptr, "release_confirm", true);
}
More information about the Bf-blender-cvs
mailing list