Blender  V2.93
Classes | Macros | Typedefs | Functions | Variables
sequencer_draw.c File Reference
#include <math.h>
#include <string.h>
#include "BLI_blenlib.h"
#include "BLI_math.h"
#include "BLI_string_utils.h"
#include "BLI_threads.h"
#include "BLI_utildefines.h"
#include "IMB_imbuf_types.h"
#include "DNA_anim_types.h"
#include "DNA_mask_types.h"
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
#include "DNA_screen_types.h"
#include "DNA_sound_types.h"
#include "DNA_space_types.h"
#include "DNA_userdef_types.h"
#include "BKE_context.h"
#include "BKE_fcurve.h"
#include "BKE_global.h"
#include "BKE_scene.h"
#include "BKE_sound.h"
#include "IMB_colormanagement.h"
#include "IMB_imbuf.h"
#include "GPU_framebuffer.h"
#include "GPU_immediate.h"
#include "GPU_immediate_util.h"
#include "GPU_matrix.h"
#include "GPU_state.h"
#include "GPU_vertex_buffer.h"
#include "GPU_viewport.h"
#include "ED_anim_api.h"
#include "ED_gpencil.h"
#include "ED_markers.h"
#include "ED_mask.h"
#include "ED_screen.h"
#include "ED_sequencer.h"
#include "ED_space_api.h"
#include "ED_time_scrub_ui.h"
#include "ED_util.h"
#include "BIF_glutil.h"
#include "SEQ_effects.h"
#include "SEQ_prefetch.h"
#include "SEQ_proxy.h"
#include "SEQ_relations.h"
#include "SEQ_render.h"
#include "SEQ_select.h"
#include "SEQ_sequencer.h"
#include "SEQ_time.h"
#include "SEQ_transform.h"
#include "SEQ_utils.h"
#include "UI_interface.h"
#include "UI_resources.h"
#include "UI_view2d.h"
#include "WM_api.h"
#include "WM_types.h"
#include "BLF_api.h"
#include "MEM_guardedalloc.h"
#include "sequencer_intern.h"

Go to the source code of this file.

Classes

struct  WaveVizData
 
struct  CacheDrawData
 

Macros

#define SEQ_LEFTHANDLE   1
 
#define SEQ_RIGHTHANDLE   2
 
#define SEQ_HANDLE_SIZE   8.0f
 
#define SEQ_SCROLLER_TEXT_OFFSET   8
 
#define MUTE_ALPHA   120
 

Typedefs

typedef struct WaveVizData WaveVizData
 
typedef struct CacheDrawData CacheDrawData
 

Functions

void color3ubv_from_seq (Scene *curscene, Sequence *seq, uchar col[3])
 
static int get_section_len (WaveVizData *start, WaveVizData *end)
 
static void draw_waveform (WaveVizData *iter, WaveVizData *end, GPUPrimType prim_type, bool use_rms)
 
static float clamp_frame_coord_to_pixel (float frame_coord, float pixel_frac, float frames_per_pixel)
 
static void draw_seq_waveform_overlay (View2D *v2d, const bContext *C, SpaceSeq *sseq, Scene *scene, Sequence *seq, float x1, float y1, float x2, float y2, float frames_per_pixel)
 
static void drawmeta_contents (Scene *scene, Sequence *seqm, float x1, float y1, float x2, float y2)
 
float sequence_handle_size_get_clamped (Sequence *seq, const float pixelx)
 
static void draw_seq_handle (View2D *v2d, Sequence *seq, const float handsize_clamped, const short direction, uint pos, bool seq_active, float pixelx, bool y_threshold)
 
static void draw_seq_outline (Sequence *seq, uint pos, float x1, float x2, float y1, float y2, float pixelx, float pixely, bool seq_active)
 
static const char * draw_seq_text_get_name (Sequence *seq)
 
static void draw_seq_text_get_source (Sequence *seq, char *r_source, size_t source_len)
 
static size_t draw_seq_text_get_overlay_string (SpaceSeq *sseq, Sequence *seq, char *r_overlay_string, size_t overlay_string_len)
 
static void draw_seq_text_overlay (View2D *v2d, Sequence *seq, SpaceSeq *sseq, float x1, float x2, float y1, float y2, bool seq_active)
 
static void draw_sequence_extensions_overlay (Scene *scene, Sequence *seq, uint pos, float pixely)
 
static void draw_color_strip_band (Sequence *seq, uint pos, float text_margin_y, float y1)
 
static void draw_seq_background (Scene *scene, Sequence *seq, uint pos, float x1, float x2, float y1, float y2, bool is_single_image)
 
static void draw_seq_locked (float x1, float y1, float x2, float y2)
 
static void draw_seq_invalid (float x1, float x2, float y2, float text_margin_y)
 
static void calculate_seq_text_offsets (View2D *v2d, Sequence *seq, float *x1, float *x2, float pixelx)
 
static void fcurve_batch_add_verts (GPUVertBuf *vbo, float y1, float y2, float y_height, int timeline_frame, float curve_val, unsigned int *vert_count)
 
static void draw_seq_fcurve_overlay (Scene *scene, View2D *v2d, Sequence *seq, float x1, float y1, float x2, float y2, float pixelx)
 
static void draw_seq_strip (const bContext *C, SpaceSeq *sseq, Scene *scene, ARegion *region, Sequence *seq, float pixelx, bool seq_active)
 
static void draw_effect_inputs_highlight (Sequence *seq)
 
void sequencer_special_update_set (Sequence *seq)
 
SequenceED_sequencer_special_preview_get (void)
 
void ED_sequencer_special_preview_set (bContext *C, const int mval[2])
 
void ED_sequencer_special_preview_clear (void)
 
ImBufsequencer_ibuf_get (struct Main *bmain, ARegion *region, struct Depsgraph *depsgraph, Scene *scene, SpaceSeq *sseq, int timeline_frame, int frame_ofs, const char *viewname)
 
static void sequencer_check_scopes (SequencerScopes *scopes, ImBuf *ibuf)
 
static ImBufsequencer_make_scope (Scene *scene, ImBuf *ibuf, ImBuf *(*make_scope_fn)(ImBuf *ibuf))
 
static void sequencer_display_size (Scene *scene, float r_viewrect[2])
 
static void sequencer_draw_gpencil_overlay (const bContext *C)
 
static void sequencer_draw_borders_overlay (const SpaceSeq *sseq, const View2D *v2d, const Scene *scene)
 
static void seq_prefetch_wm_notify (const bContext *C, Scene *scene)
 
static void * sequencer_OCIO_transform_ibuf (const bContext *C, ImBuf *ibuf, bool *r_glsl_used, eGPUTextureFormat *r_format, eGPUDataFormat *r_data, void **r_buffer_cache_handle)
 
static void sequencer_stop_running_jobs (const bContext *C, Scene *scene)
 
static void sequencer_preview_clear (void)
 
static void sequencer_preview_get_rect (rctf *preview, Scene *scene, ARegion *region, SpaceSeq *sseq, bool draw_overlay, bool draw_backdrop)
 
static void sequencer_draw_display_buffer (const bContext *C, Scene *scene, ARegion *region, SpaceSeq *sseq, ImBuf *ibuf, ImBuf *scope, bool draw_overlay, bool draw_backdrop)
 
static ImBufsequencer_get_scope (Scene *scene, SpaceSeq *sseq, ImBuf *ibuf, bool draw_backdrop)
 
static bool sequencer_draw_get_transform_preview (SpaceSeq *sseq, Scene *scene)
 
static int sequencer_draw_get_transform_preview_frame (Scene *scene)
 
void sequencer_draw_preview (const bContext *C, Scene *scene, ARegion *region, SpaceSeq *sseq, int timeline_frame, int offset, bool draw_overlay, bool draw_backdrop)
 
static void draw_seq_backdrop (View2D *v2d)
 
static void draw_seq_strips (const bContext *C, Editing *ed, ARegion *region)
 
static void seq_draw_sfra_efra (Scene *scene, View2D *v2d)
 
static bool draw_cache_view_init_fn (void *userdata, size_t item_count)
 
static bool draw_cache_view_iter_fn (void *userdata, struct Sequence *seq, int timeline_frame, int cache_type)
 
static void draw_cache_view_batch (GPUVertBuf *vbo, size_t vert_count, float col_r, float col_g, float col_b, float col_a)
 
static void draw_cache_view (const bContext *C)
 
void draw_timeline_seq (const bContext *C, ARegion *region)
 
void draw_timeline_seq_display (const bContext *C, ARegion *region)
 

Variables

static Sequencespecial_seq_update = NULL
 

Macro Definition Documentation

◆ MUTE_ALPHA

#define MUTE_ALPHA   120

Definition at line 102 of file sequencer_draw.c.

◆ SEQ_HANDLE_SIZE

#define SEQ_HANDLE_SIZE   8.0f

Definition at line 100 of file sequencer_draw.c.

◆ SEQ_LEFTHANDLE

#define SEQ_LEFTHANDLE   1

Definition at line 98 of file sequencer_draw.c.

◆ SEQ_RIGHTHANDLE

#define SEQ_RIGHTHANDLE   2

Definition at line 99 of file sequencer_draw.c.

◆ SEQ_SCROLLER_TEXT_OFFSET

#define SEQ_SCROLLER_TEXT_OFFSET   8

Definition at line 101 of file sequencer_draw.c.

Typedef Documentation

◆ CacheDrawData

typedef struct CacheDrawData CacheDrawData

◆ WaveVizData

typedef struct WaveVizData WaveVizData

Function Documentation

◆ calculate_seq_text_offsets()

static void calculate_seq_text_offsets ( View2D v2d,
Sequence seq,
float x1,
float x2,
float  pixelx 
)
static

◆ clamp_frame_coord_to_pixel()

static float clamp_frame_coord_to_pixel ( float  frame_coord,
float  pixel_frac,
float  frames_per_pixel 
)
static

Definition at line 307 of file sequencer_draw.c.

Referenced by draw_seq_waveform_overlay().

◆ color3ubv_from_seq()

void color3ubv_from_seq ( Scene curscene,
Sequence seq,
uchar  col[3] 
)

◆ draw_cache_view()

static void draw_cache_view ( const bContext C)
static

◆ draw_cache_view_batch()

static void draw_cache_view_batch ( GPUVertBuf vbo,
size_t  vert_count,
float  col_r,
float  col_g,
float  col_b,
float  col_a 
)
static

◆ draw_cache_view_init_fn()

static bool draw_cache_view_init_fn ( void *  userdata,
size_t  item_count 
)
static

◆ draw_cache_view_iter_fn()

static bool draw_cache_view_iter_fn ( void *  userdata,
struct Sequence seq,
int  timeline_frame,
int  cache_type 
)
static

◆ draw_color_strip_band()

static void draw_color_strip_band ( Sequence seq,
uint  pos,
float  text_margin_y,
float  y1 
)
static

◆ draw_effect_inputs_highlight()

static void draw_effect_inputs_highlight ( Sequence seq)
static

◆ draw_seq_backdrop()

static void draw_seq_backdrop ( View2D v2d)
static

◆ draw_seq_background()

static void draw_seq_background ( Scene scene,
Sequence seq,
uint  pos,
float  x1,
float  x2,
float  y1,
float  y2,
bool  is_single_image 
)
static

◆ draw_seq_fcurve_overlay()

static void draw_seq_fcurve_overlay ( Scene scene,
View2D v2d,
Sequence seq,
float  x1,
float  y1,
float  x2,
float  y2,
float  pixelx 
)
static

◆ draw_seq_handle()

static void draw_seq_handle ( View2D v2d,
Sequence seq,
const float  handsize_clamped,
const short  direction,
uint  pos,
bool  seq_active,
float  pixelx,
bool  y_threshold 
)
static

◆ draw_seq_invalid()

static void draw_seq_invalid ( float  x1,
float  x2,
float  y2,
float  text_margin_y 
)
static

◆ draw_seq_locked()

static void draw_seq_locked ( float  x1,
float  y1,
float  x2,
float  y2 
)
static

◆ draw_seq_outline()

static void draw_seq_outline ( Sequence seq,
uint  pos,
float  x1,
float  x2,
float  y1,
float  y2,
float  pixelx,
float  pixely,
bool  seq_active 
)
static

◆ draw_seq_strip()

static void draw_seq_strip ( const bContext C,
SpaceSeq sseq,
Scene scene,
ARegion region,
Sequence seq,
float  pixelx,
bool  seq_active 
)
static

◆ draw_seq_strips()

static void draw_seq_strips ( const bContext C,
Editing ed,
ARegion region 
)
static

◆ draw_seq_text_get_name()

static const char* draw_seq_text_get_name ( Sequence seq)
static

Definition at line 805 of file sequencer_draw.c.

References Sequence::name, and SEQ_sequence_give_name().

Referenced by draw_seq_text_get_overlay_string().

◆ draw_seq_text_get_overlay_string()

static size_t draw_seq_text_get_overlay_string ( SpaceSeq sseq,
Sequence seq,
char *  r_overlay_string,
size_t  overlay_string_len 
)
static

◆ draw_seq_text_get_source()

static void draw_seq_text_get_source ( Sequence seq,
char *  r_source,
size_t  source_len 
)
static

◆ draw_seq_text_overlay()

static void draw_seq_text_overlay ( View2D v2d,
Sequence seq,
SpaceSeq sseq,
float  x1,
float  x2,
float  y1,
float  y2,
bool  seq_active 
)
static

◆ draw_seq_waveform_overlay()

static void draw_seq_waveform_overlay ( View2D v2d,
const bContext C,
SpaceSeq sseq,
Scene scene,
Sequence seq,
float  x1,
float  y1,
float  x2,
float  y2,
float  frames_per_pixel 
)
static

◆ draw_sequence_extensions_overlay()

static void draw_sequence_extensions_overlay ( Scene scene,
Sequence seq,
uint  pos,
float  pixely 
)
static

◆ draw_timeline_seq()

void draw_timeline_seq ( const bContext C,
ARegion region 
)

Definition at line 2558 of file sequencer_draw.c.

References ANIM_draw_previewrange(), BLI_rcti_init(), C, RenderData::cfra, col, CTX_data_scene(), CTX_wm_space_seq(), View2D::cur, draw_cache_view(), SpaceSeq::draw_flag, DRAW_MARKERS_MARGIN, draw_seq_backdrop(), draw_seq_strips(), DRAWCFRA_UNIT_SECONDS, Scene::ed, ED_markers_draw(), ED_region_draw_cb_draw(), ED_time_scrub_draw(), ListBase::first, SpaceSeq::flag, FPS, GPU_clear_color(), GPU_COMP_F32, GPU_DEPTH_NONE, GPU_depth_test(), GPU_FETCH_FLOAT, GPU_framebuffer_bind(), GPU_framebuffer_bind_no_srgb(), GPU_PRIM_LINES, GPU_SHADER_2D_LINE_DASHED_UNIFORM_COLOR, GPU_vertformat_attr_add(), GPU_viewport_framebuffer_overlay_get(), GPU_viewport_size_get_f(), immBegin(), immBindBuiltinProgram(), immEnd(), immUnbindProgram(), immUniform1f(), immUniform1i(), immUniform2f(), immUniformThemeColor(), immVertex2f(), immVertexFormat(), Editing::metastack, Editing::over_cfra, Editing::over_flag, Editing::over_ofs, pos, Scene::r, REGION_DRAW_POST_VIEW, REGION_DRAW_PRE_VIEW, scene, SEQ_active_seqbase_get(), SEQ_DRAW_BACKDROP, seq_draw_sfra_efra(), SEQ_DRAWFRAMES, SEQ_EDIT_OVERLAY_ABS, SEQ_EDIT_OVERLAY_SHOW, SEQ_editing_get(), seq_prefetch_wm_notify(), SEQ_SHOW_MARKERS, SEQ_timeline_boundbox(), SEQ_VIEW_SEQUENCE, sequencer_draw_get_transform_preview(), sequencer_draw_get_transform_preview_frame(), sequencer_draw_preview(), TH_BACK, TH_CFRAME, TH_SCROLL_TEXT, View2D::tot, UI_DPI_FAC, UI_GetThemeColor3fv(), UI_TIME_SCRUB_MARGIN_Y, UI_view2d_constant_grid_draw(), UI_view2d_draw_scale_y__block(), UI_view2d_text_cache_draw(), UI_view2d_view_ortho(), UI_view2d_view_orthoSpecial(), UI_view2d_view_restore(), ARegion::v2d, SpaceSeq::view, ARegion::winy, WM_draw_region_get_viewport(), rctf::ymax, and rctf::ymin.

Referenced by sequencer_main_region_draw().

◆ draw_timeline_seq_display()

void draw_timeline_seq_display ( const bContext C,
ARegion region 
)

◆ draw_waveform()

static void draw_waveform ( WaveVizData iter,
WaveVizData end,
GPUPrimType  prim_type,
bool  use_rms 
)
static

◆ drawmeta_contents()

static void drawmeta_contents ( Scene scene,
Sequence seqm,
float  x1,
float  y1,
float  x2,
float  y2 
)
static

◆ ED_sequencer_special_preview_clear()

void ED_sequencer_special_preview_clear ( void  )

Definition at line 1465 of file sequencer_draw.c.

References NULL, and sequencer_special_update_set().

Referenced by change_frame_seq_preview_end().

◆ ED_sequencer_special_preview_get()

Sequence* ED_sequencer_special_preview_get ( void  )

Definition at line 1450 of file sequencer_draw.c.

References special_seq_update.

Referenced by change_frame_seq_preview_end().

◆ ED_sequencer_special_preview_set()

void ED_sequencer_special_preview_set ( bContext C,
const int  mval[2] 
)

◆ fcurve_batch_add_verts()

static void fcurve_batch_add_verts ( GPUVertBuf vbo,
float  y1,
float  y2,
float  y_height,
int  timeline_frame,
float  curve_val,
unsigned int *  vert_count 
)
static

Definition at line 1180 of file sequencer_draw.c.

References copy_v2_fl2(), GPU_vertbuf_vert_set(), and y1.

Referenced by draw_seq_fcurve_overlay().

◆ get_section_len()

static int get_section_len ( WaveVizData start,
WaveVizData end 
)
static

Definition at line 242 of file sequencer_draw.c.

References WaveVizData::end, and len.

Referenced by draw_waveform().

◆ seq_draw_sfra_efra()

static void seq_draw_sfra_efra ( Scene scene,
View2D v2d 
)
static

◆ seq_prefetch_wm_notify()

static void seq_prefetch_wm_notify ( const bContext C,
Scene scene 
)
static

◆ sequence_handle_size_get_clamped()

float sequence_handle_size_get_clamped ( Sequence seq,
const float  pixelx 
)

◆ sequencer_check_scopes()

static void sequencer_check_scopes ( SequencerScopes scopes,
ImBuf ibuf 
)
static

◆ sequencer_display_size()

static void sequencer_display_size ( Scene scene,
float  r_viewrect[2] 
)
static

◆ sequencer_draw_borders_overlay()

static void sequencer_draw_borders_overlay ( const SpaceSeq sseq,
const View2D v2d,
const Scene scene 
)
static

◆ sequencer_draw_display_buffer()

static void sequencer_draw_display_buffer ( const bContext C,
Scene scene,
ARegion region,
SpaceSeq sseq,
ImBuf ibuf,
ImBuf scope,
bool  draw_overlay,
bool  draw_backdrop 
)
static

◆ sequencer_draw_get_transform_preview()

static bool sequencer_draw_get_transform_preview ( SpaceSeq sseq,
Scene scene 
)
static

◆ sequencer_draw_get_transform_preview_frame()

static int sequencer_draw_get_transform_preview_frame ( Scene scene)
static

◆ sequencer_draw_gpencil_overlay()

static void sequencer_draw_gpencil_overlay ( const bContext C)
static

◆ sequencer_draw_preview()

void sequencer_draw_preview ( const bContext C,
Scene scene,
ARegion region,
SpaceSeq sseq,
int  timeline_frame,
int  offset,
bool  draw_overlay,
bool  draw_backdrop 
)

◆ sequencer_get_scope()

static ImBuf* sequencer_get_scope ( Scene scene,
SpaceSeq sseq,
ImBuf ibuf,
bool  draw_backdrop 
)
static

◆ sequencer_ibuf_get()

ImBuf* sequencer_ibuf_get ( struct Main bmain,
ARegion region,
struct Depsgraph depsgraph,
Scene scene,
SpaceSeq sseq,
int  timeline_frame,
int  frame_ofs,
const char *  viewname 
)

◆ sequencer_make_scope()

static ImBuf* sequencer_make_scope ( Scene scene,
ImBuf ibuf,
ImBuf *(*)(ImBuf *ibuf)  make_scope_fn 
)
static

◆ sequencer_OCIO_transform_ibuf()

static void* sequencer_OCIO_transform_ibuf ( const bContext C,
ImBuf ibuf,
bool *  r_glsl_used,
eGPUTextureFormat r_format,
eGPUDataFormat r_data,
void **  r_buffer_cache_handle 
)
static

◆ sequencer_preview_clear()

static void sequencer_preview_clear ( void  )
static

Definition at line 1798 of file sequencer_draw.c.

References TH_SEQ_PREVIEW, and UI_ThemeClearColor().

Referenced by sequencer_draw_preview().

◆ sequencer_preview_get_rect()

static void sequencer_preview_get_rect ( rctf preview,
Scene scene,
ARegion region,
SpaceSeq sseq,
bool  draw_overlay,
bool  draw_backdrop 
)
static

◆ sequencer_special_update_set()

void sequencer_special_update_set ( Sequence seq)

◆ sequencer_stop_running_jobs()

static void sequencer_stop_running_jobs ( const bContext C,
Scene scene 
)
static

Variable Documentation

◆ special_seq_update

Sequence* special_seq_update = NULL
static