Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/space_sequencer/sequencer_draw.c
| Show All 34 Lines | |||||
| #include "DNA_anim_types.h" | #include "DNA_anim_types.h" | ||||
| #include "DNA_mask_types.h" | #include "DNA_mask_types.h" | ||||
| #include "DNA_object_types.h" | #include "DNA_object_types.h" | ||||
| #include "DNA_scene_types.h" | #include "DNA_scene_types.h" | ||||
| #include "DNA_screen_types.h" | #include "DNA_screen_types.h" | ||||
| #include "DNA_sound_types.h" | #include "DNA_sound_types.h" | ||||
| #include "DNA_space_types.h" | #include "DNA_space_types.h" | ||||
| #include "DNA_userdef_types.h" | #include "DNA_userdef_types.h" | ||||
| #include "DNA_windowmanager_types.h" | |||||
| #include "BKE_context.h" | #include "BKE_context.h" | ||||
| #include "BKE_fcurve.h" | #include "BKE_fcurve.h" | ||||
| #include "BKE_global.h" | #include "BKE_global.h" | ||||
| #include "BKE_report.h" | |||||
| #include "BKE_scene.h" | #include "BKE_scene.h" | ||||
| #include "BKE_sound.h" | #include "BKE_sound.h" | ||||
| #include "IMB_colormanagement.h" | #include "IMB_colormanagement.h" | ||||
| #include "IMB_imbuf.h" | #include "IMB_imbuf.h" | ||||
| #include "GPU_framebuffer.h" | #include "GPU_framebuffer.h" | ||||
| #include "GPU_immediate.h" | #include "GPU_immediate.h" | ||||
| ▲ Show 20 Lines • Show All 2,093 Lines • ▼ Show 20 Lines | static void seq_draw_image_origin_and_outline(const bContext *C, Sequence *seq, bool is_active_seq) | ||||
| immVertex2f(pos, seq_image_quad[3][0], seq_image_quad[3][1]); | immVertex2f(pos, seq_image_quad[3][0], seq_image_quad[3][1]); | ||||
| immEnd(); | immEnd(); | ||||
| immUnbindProgram(); | immUnbindProgram(); | ||||
| GPU_line_width(1); | GPU_line_width(1); | ||||
| GPU_blend(GPU_BLEND_NONE); | GPU_blend(GPU_BLEND_NONE); | ||||
| GPU_line_smooth(false); | GPU_line_smooth(false); | ||||
| } | } | ||||
| static void report_seek_errors(const bContext *C, Scene *scene) | |||||
| { | |||||
| Editing *ed = SEQ_editing_get(scene); | |||||
| ReportList *reports = CTX_wm_reports(C); | |||||
| GSet *error_log, *acknowledged; | |||||
| SEQ_editing_seek_error_log_acquire(ed, &error_log, &acknowledged); | |||||
| if (error_log == NULL || BLI_gset_len(error_log) == 0) { | |||||
| return; | |||||
| } | |||||
| bool got_reports = false; | |||||
| GSET_FOREACH_BEGIN (Sequence *, seq, error_log) { | |||||
| if (BLI_gset_haskey(acknowledged, seq)) { | |||||
| continue; | |||||
| } | |||||
| IMB_Timecode_Type timecode_type = IMB_TC_NONE; | |||||
| StripAnim *sanim = seq->anims.first; | |||||
| if (sanim && sanim->anim) { | |||||
| timecode_type = IMB_anim_timecode_get_existing(sanim->anim); | |||||
| } | |||||
| if (timecode_type != IMB_TC_NONE) { | |||||
| BKE_reportf(reports, | |||||
| RPT_WARNING, | |||||
| "Seeking failed in strip %s. Use timecode index to resolve this issue", | |||||
| seq->name + 2); | |||||
| } | |||||
| else { | |||||
| BKE_reportf(reports, | |||||
| RPT_WARNING, | |||||
| "Seeking failed in strip %s. Build proxies to resolve this issue", | |||||
| seq->name + 2); | |||||
| } | |||||
| BLI_gset_add(acknowledged, seq); | |||||
| got_reports = true; | |||||
| } | |||||
| GSET_FOREACH_END(); | |||||
| SEQ_editing_seek_error_log_release(ed); | |||||
| if (got_reports) { | |||||
| WM_report_banner_show(); | |||||
| } | |||||
| } | |||||
| void sequencer_draw_preview(const bContext *C, | void sequencer_draw_preview(const bContext *C, | ||||
| Scene *scene, | Scene *scene, | ||||
| ARegion *region, | ARegion *region, | ||||
| SpaceSeq *sseq, | SpaceSeq *sseq, | ||||
| int timeline_frame, | int timeline_frame, | ||||
| int offset, | int offset, | ||||
| bool draw_overlay, | bool draw_overlay, | ||||
| bool draw_backdrop) | bool draw_backdrop) | ||||
| Show All 16 Lines | void sequencer_draw_preview(const bContext *C, | ||||
| int preview_frame = timeline_frame; | int preview_frame = timeline_frame; | ||||
| if (sequencer_draw_get_transform_preview(sseq, scene)) { | if (sequencer_draw_get_transform_preview(sseq, scene)) { | ||||
| preview_frame = sequencer_draw_get_transform_preview_frame(scene); | preview_frame = sequencer_draw_get_transform_preview_frame(scene); | ||||
| } | } | ||||
| /* Get image. */ | /* Get image. */ | ||||
| ibuf = sequencer_ibuf_get( | ibuf = sequencer_ibuf_get( | ||||
| bmain, region, depsgraph, scene, sseq, preview_frame, offset, names[sseq->multiview_eye]); | bmain, region, depsgraph, scene, sseq, preview_frame, offset, names[sseq->multiview_eye]); | ||||
| report_seek_errors(C, scene); | |||||
| /* Setup off-screen buffers. */ | /* Setup off-screen buffers. */ | ||||
| GPUViewport *viewport = WM_draw_region_get_viewport(region); | GPUViewport *viewport = WM_draw_region_get_viewport(region); | ||||
| GPUFrameBuffer *framebuffer_overlay = GPU_viewport_framebuffer_overlay_get(viewport); | GPUFrameBuffer *framebuffer_overlay = GPU_viewport_framebuffer_overlay_get(viewport); | ||||
| GPU_framebuffer_bind_no_srgb(framebuffer_overlay); | GPU_framebuffer_bind_no_srgb(framebuffer_overlay); | ||||
| GPU_depth_test(GPU_DEPTH_NONE); | GPU_depth_test(GPU_DEPTH_NONE); | ||||
| if (sseq->render_size == SEQ_RENDER_SIZE_NONE) { | if (sseq->render_size == SEQ_RENDER_SIZE_NONE) { | ||||
| ▲ Show 20 Lines • Show All 602 Lines • Show Last 20 Lines | |||||