57 #include "RNA_prototypes.h"
86 #define SEQ_LEFTHANDLE 1
87 #define SEQ_RIGHTHANDLE 2
88 #define SEQ_HANDLE_SIZE 8.0f
89 #define SEQ_SCROLLER_TEXT_OFFSET 8
90 #define MUTE_ALPHA 120
96 const bool show_strip_color_tag,
142 if (seq->
scene == curscene) {
220 blendcol[0] = blendcol[1] = blendcol[2] = 128;
259 if (strip_is_valid && overlays_enabled && ovelay_option) {
288 bool draw_line = waveform_data->
draw_line;
301 size_t vertices_done = 0;
305 if (vertex_count <= 2) {
317 while (vertices_done < vertex_count && !waveform_data->final_sample) {
319 if (waveform_data->
clip) {
346 return vertices_done;
351 size_t items_done = 0;
352 while (items_done < wave_data_len) {
353 if (!waveform_data[items_done].draw_line) {
362 return round_fl_to_int(frame_coord / frames_per_pixel) * frames_per_pixel;
368 const bool is_clipping,
369 const bool draw_line)
371 waveform_data->
pos[0] =
pos.x;
372 waveform_data->
pos[1] =
pos.y;
373 waveform_data->
clip = is_clipping;
380 const float value_min,
381 const float value_max,
385 const bool is_clipping,
386 const bool is_line_strip)
388 size_t data_written = 0;
389 pos.y = y_mid + value_min * y_scale;
390 float rms_value = y_mid +
max_ff(-rms, value_min) * y_scale;
395 if (!is_line_strip) {
396 pos.y = y_mid + value_max * y_scale;
397 rms_value = y_mid +
min_ff(rms, value_max) * y_scale;
416 float samples_per_pixel = samples_per_frame * frames_per_pixel;
423 const int pixels_to_draw =
round_fl_to_int((frame_end - frame_start) / frames_per_pixel);
425 if (pixels_to_draw < 2) {
432 if (waveform ==
NULL || waveform->
length == 0) {
439 size_t wave_data_len = 0;
444 float start_sample = strip_offset * samples_per_frame;
447 start_sample += (frame_start - x1_aligned) * samples_per_frame;
449 for (
int i = 0; i < pixels_to_draw; i++) {
450 float sample = start_sample + i * samples_per_pixel;
453 if (sample_index < 0) {
457 if (sample_index >= waveform->
length) {
461 float value_min = waveform->
data[sample_index * 3];
462 float value_max = waveform->
data[sample_index * 3 + 1];
463 float rms = waveform->
data[sample_index * 3 + 2];
465 if (sample_index + 1 < waveform->
length) {
467 float f =
sample - sample_index;
468 value_min = (1.0f - f) * value_min + f * waveform->
data[sample_index * 3 + 3];
469 value_max = (1.0f - f) * value_max + f * waveform->
data[sample_index * 3 + 4];
470 rms = (1.0f - f) * rms + f * waveform->
data[sample_index * 3 + 5];
471 if (samples_per_pixel > 1.0f) {
473 float next_pos =
sample + samples_per_pixel;
474 int end_idx = next_pos;
476 for (
int j = sample_index + 1; (j < waveform->
length) && (j < end_idx); j++) {
477 value_min =
min_ff(value_min, waveform->
data[j * 3]);
478 value_max =
max_ff(value_max, waveform->
data[j * 3 + 1]);
484 float volume = seq->
volume;
486 float evaltime = frame_start + (i * frames_per_pixel);
495 bool is_clipping =
false;
497 if (value_max > 1 || value_min < -1) {
504 bool is_line_strip = (value_max - value_min < 0.05f);
506 float y_mid = (
y1 + y2) / 2.0f;
508 float y_scale = (y2 -
y1) / 2.0f;
510 vec2f pos = {frame_start + i * frames_per_pixel, y_mid + value_min * y_scale};
511 WaveVizData *new_data = &waveform_data[wave_data_len];
513 new_data,
pos, value_min, value_max, y_mid, y_scale, rms, is_clipping, is_line_strip);
540 const bool show_strip_color_tag)
548 float draw_range = y2 -
y1;
572 for (seq = meta_seqbase->
first; seq; seq = seq->
next) {
577 chan_range = (chan_max - chan_min) + 1;
578 draw_height = draw_range / chan_range;
586 for (seq = meta_seqbase->
first; seq; seq = seq->
next) {
590 if ((startdisp >
x2 || enddisp < x1) == 0) {
591 float y_chan = (seq->
machine - chan_min) / (
float)(chan_range)*draw_range;
592 float x1_chan = startdisp;
593 float x2_chan = enddisp;
594 float y1_chan, y2_chan;
648 const float handsize_clamped,
649 const short direction,
655 float rx1 = 0, rx2 = 0;
656 float x1,
x2,
y1, y2;
669 rx2 = x1 + handsize_clamped;
673 rx1 =
x2 - handsize_clamped;
683 if (seq->
flag & whichsel) {
718 float tot_width =
BLF_width(fontid, numstr, numstr_len);
720 if ((
x2 - x1) / pixelx > 20 + tot_width) {
722 float text_margin = 1.2f * handsize_clamped;
733 x1 =
x2 - (text_margin + pixelx *
BLF_width(fontid, numstr, numstr_len));
794 immRectf(
pos, x1 - pixelx, y2 - 2 * pixely,
x2 + pixelx, y2);
804 const char *name = seq->
name + 2;
805 if (name[0] ==
'\0') {
870 char *r_overlay_string,
871 size_t overlay_string_len)
873 const char *text_sep =
" | ";
874 const char *text_array[5];
884 if (source[0] !=
'\0') {
886 text_array[i++] = text_sep;
888 text_array[i++] = source;
892 char strip_duration_text[16];
896 SNPRINTF(strip_duration_text,
"%d", strip_duration);
898 text_array[i++] = text_sep;
900 text_array[i++] = strip_duration_text;
924 scene, sseq, seq, overlay_string,
sizeof(overlay_string));
926 if (overlay_string_len == 0) {
932 col[0] =
col[1] =
col[2] = seq_active ? 255 : 10;
959 float x1,
x2,
y1, y2;
983 if (left_handle_frame > strip_content_start) {
991 if (right_handle_frame < strip_content_end) {
1049 bool is_single_image,
1050 bool show_strip_color_tag)
1087 if (is_single_image) {
1099 if (!is_single_image) {
1118 float vert_pos[3][2];
1185 float text_margin = 2.0f * handsize_clamped;
1193 if (*x1 < v2d->cur.xmin + scroller_vert_xoffs) {
1194 *x1 = v2d->
cur.
xmin + scroller_vert_xoffs;
1196 else if (*x1 > v2d->
cur.
xmax) {
1199 if (*x2 < v2d->cur.xmin) {
1213 unsigned int *vert_count)
1215 float vert_pos[2][2];
1217 copy_v2_fl2(vert_pos[0], timeline_frame, (curve_val * y_height) +
y1);
1250 if (eval_start >= eval_end) {
1258 uint max_verts = 2 * ((eval_end - eval_start) / eval_step + 1);
1260 uint vert_count = 0;
1262 const float y_height = y2 -
y1;
1264 float prev_val = INT_MIN;
1267 for (
int timeline_frame = eval_start; timeline_frame <= eval_end;
1268 timeline_frame += eval_step) {
1270 CLAMP(curve_val, 0.0f, 1.0f);
1273 if (curve_val == prev_val && timeline_frame < eval_end - eval_step) {
1281 vbo,
y1, y2, y_height, timeline_frame - eval_step, prev_val, &vert_count);
1286 prev_val = curve_val;
1295 if (vert_count > 0) {
1317 float x1,
x2,
y1, y2;
1341 float text_margin_y;
1348 text_margin_y = y2 -
min_ff(0.40f, 20 *
U.dpi_fac * pixely);
1351 y_threshold = ((y2 -
y1) / pixely) > 20 *
U.dpi_fac;
1355 y_threshold =
false;
1370 if (!is_single_image && pixely > 0) {
1391 v2d,
C,
scene, seq,
y1, y_threshold ? text_margin_y : y2, pixelx, pixely);
1402 C, region, seq, x1, y_threshold ?
y1 + 0.05f :
y1,
x2, y_threshold ? text_margin_y : y2);
1441 if (((
x2 - x1) > 32 * pixelx *
U.dpi_fac) && ((y2 -
y1) > 8 * pixely *
U.dpi_fac)) {
1444 scene, v2d, seq, sseq, x1,
x2, y_threshold ? text_margin_y :
y1, y2, seq_active);
1466 if (seq2 && seq2 != seq1) {
1473 if (seq3 && !
ELEM(seq3, seq1, seq2)) {
1516 const char *viewname)
1522 short is_break =
G.is_break;
1576 G.is_break = is_break;
1619 scope = make_scope_fn(display_ibuf);
1666 float viewport_size[4];
1719 float aspx = 1.0f, aspy = 1.0f;
1756 void **r_buffer_cache_handle)
1758 void *display_buffer;
1759 bool force_fallback =
false;
1760 *r_glsl_used =
false;
1762 force_fallback |= (ibuf->
dither != 0.0f);
1769 if (force_fallback) {
1770 *r_glsl_used =
false;
1771 display_buffer =
NULL;
1785 BLI_assert_msg(0,
"Incompatible number of channels for float buffer in sequencer");
1787 display_buffer =
NULL;
1798 else if (ibuf->
rect) {
1799 display_buffer = ibuf->
rect;
1805 display_buffer =
NULL;
1816 return display_buffer;
1862 float image_aspect = viewrect[0] / viewrect[1];
1864 if (aspect >= image_aspect) {
1865 preview->xmax = image_aspect / aspect;
1869 preview->ymax = aspect / image_aspect;
1887 void *display_buffer;
1888 void *buffer_cache_handle =
NULL;
1898 bool glsl_used =
false;
1917 C, ibuf, &glsl_used, &
format, &
data, &buffer_cache_handle);
1976 if (buffer_cache_handle) {
1998 switch (sseq->
mainb) {
2054 if (last_seq ==
NULL) {
2077 return preview_frame;
2118 float seq_image_quad[4][2];
2127 if (is_active_seq) {
2167 if (
G.is_rendering) {
2171 int preview_frame = timeline_frame;
2242 sequencer_draw_maskedit(
C,
scene, region, sseq);
2268 while (i < v2d->cur.ymax) {
2289 for (j = 0; j < 2; j++) {
2297 if (seq == last_seq && (last_seq->
flag &
SELECT)) {
2386 if (frame_sta < frame_end) {
2460 if (item_count == 0) {
2466 size_t max_vert_count = item_count * 6;
2483 float stripe_bot, stripe_top, stripe_ofs_y, stripe_ht;
2491 stripe_top = stripe_bot + stripe_ht;
2499 stripe_top = stripe_bot + stripe_ht;
2508 stripe_top = stripe_bot + stripe_ht;
2517 stripe_bot = stripe_top - stripe_ht;
2525 float vert_pos[6][2];
2526 copy_v2_fl2(vert_pos[0], timeline_frame, stripe_bot);
2527 copy_v2_fl2(vert_pos[1], timeline_frame, stripe_top);
2528 copy_v2_fl2(vert_pos[2], timeline_frame + 1, stripe_top);
2531 copy_v2_fl2(vert_pos[5], timeline_frame + 1, stripe_bot);
2533 for (
int i = 0; i < 6; i++) {
2542 GPUVertBuf *vbo,
size_t vert_count,
float col_r,
float col_g,
float col_b,
float col_a)
2545 if (vert_count > 0) {
2568 float stripe_bot, stripe_top;
2578 stripe_top = stripe_bot + stripe_ht;
2579 const float bg_color[4] = {1.0f, 0.4f, 0.2f, 0.1f};
2596 stripe_top = stripe_bot + stripe_ht;
2599 const float bg_color[4] = {1.0f, 0.1f, 0.02f, 0.1f};
2608 stripe_bot += stripe_ht + stripe_ofs_y;
2609 stripe_top = stripe_bot + stripe_ht;
2612 const float bg_color[4] = {0.1f, 0.1f, 0.75f, 0.1f};
2622 stripe_bot = stripe_top - stripe_ht;
2625 const float bg_color[4] = {1.0f, 0.6f, 0.0f, 0.1f};
2676 float viewport_size[4];
2678 immUniform2f(
"viewport_size", viewport_size[2], viewport_size[3]);
2715 U.v2d_min_gridsize *= 3;
2718 U.v2d_min_gridsize /= 3;
typedef float(TangentPoint)[2]
int ED_draw_imbuf_method(struct ImBuf *ibuf)
struct Scene * CTX_data_scene(const bContext *C)
struct wmWindowManager * CTX_wm_manager(const bContext *C)
struct SpaceSeq * CTX_wm_space_seq(const bContext *C)
struct Depsgraph * CTX_data_expect_evaluated_depsgraph(const bContext *C)
struct ARegion * CTX_wm_region(const bContext *C)
struct Main * CTX_data_main(const bContext *C)
float evaluate_fcurve(struct FCurve *fcu, float evaltime)
bool BKE_fcurve_is_empty(struct FCurve *fcu)
struct FCurve * id_data_find_fcurve(ID *id, void *data, struct StructRNA *type, const char *prop_name, int index, bool *r_driven)
void BKE_render_resolution(const struct RenderData *r, const bool use_crop, int *r_width, int *r_height)
int BKE_scene_multiview_view_id_get(const struct RenderData *rd, const char *viewname)
#define SOUND_WAVE_SAMPLES_PER_SECOND
float BLF_width(int fontid, const char *str, size_t str_len) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
int BLF_set_default(void)
#define BLI_assert_msg(a, msg)
BLI_INLINE bool BLI_listbase_is_empty(const struct ListBase *lb)
MINLINE int round_fl_to_int(float a)
MINLINE float max_ff(float a, float b)
MINLINE int min_ii(int a, int b)
MINLINE float min_ff(float a, float b)
MINLINE int max_ii(int a, int b)
void rgb_byte_set_hue_float_offset(unsigned char rgb[3], float hue_offset)
void rgb_float_to_uchar(unsigned char r_col[3], const float col_f[3])
MINLINE void copy_v2_fl2(float v[2], float x, float y)
MINLINE void copy_v3_v3_uchar(unsigned char r[3], const unsigned char a[3])
MINLINE void copy_v2_v2(float r[2], const float a[2])
void BLI_join_dirfile(char *__restrict dst, size_t maxlen, const char *__restrict dir, const char *__restrict file) ATTR_NONNULL()
BLI_INLINE int BLI_rcti_size_y(const struct rcti *rct)
void BLI_rctf_init(struct rctf *rect, float xmin, float xmax, float ymin, float ymax)
BLI_INLINE int BLI_rcti_size_x(const struct rcti *rct)
BLI_INLINE float BLI_rctf_size_x(const struct rctf *rct)
BLI_INLINE float BLI_rctf_size_y(const struct rctf *rct)
#define SNPRINTF(dst, format,...)
size_t BLI_snprintf_rlen(char *__restrict dst, size_t maxncpy, const char *__restrict format,...) ATTR_NONNULL(1
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, size_t maxncpy) ATTR_NONNULL()
size_t BLI_snprintf(char *__restrict dst, size_t maxncpy, const char *__restrict format,...) ATTR_NONNULL(1
char * BLI_string_join_array(char *result, size_t result_len, const char *strings[], uint strings_len) ATTR_NONNULL()
void BLI_spin_unlock(SpinLock *spin)
void BLI_spin_lock(SpinLock *spin)
struct Depsgraph Depsgraph
Object is a sort of wrapper for general info.
#define STEREO_RIGHT_NAME
#define SEQ_EDIT_OVERLAY_FRAME_ABS
#define SEQ_EDIT_OVERLAY_FRAME_SHOW
@ SEQ_CACHE_STORE_PREPROCESSED
@ SEQ_CACHE_STORE_FINAL_OUT
@ SEQ_CACHE_STORE_COMPOSITE
@ SEQ_CACHE_VIEW_FINAL_OUT
@ SEQ_CACHE_VIEW_COMPOSITE
@ SEQ_CACHE_VIEW_PREPROCESSED
@ SEQ_AUDIO_DRAW_WAVEFORM
#define SEQ_STRIP_OFSBOTTOM
@ SOUND_TAGS_WAVEFORM_LOADING
@ SEQ_TIMELINE_SHOW_FCURVES
@ SEQ_TIMELINE_SHOW_STRIP_DURATION
@ SEQ_TIMELINE_SHOW_THUMBNAILS
@ SEQ_TIMELINE_SHOW_STRIP_OFFSETS
@ SEQ_TIMELINE_ALL_WAVEFORMS
@ SEQ_TIMELINE_SHOW_STRIP_SOURCE
@ SEQ_TIMELINE_SHOW_STRIP_NAME
@ SEQ_TIMELINE_NO_WAVEFORMS
@ SEQ_TIMELINE_SHOW_STRIP_COLOR_TAG
@ SEQ_PREVIEW_SHOW_METADATA
@ SEQ_PREVIEW_SHOW_GPENCIL
@ SEQ_PREVIEW_SHOW_SAFE_MARGINS
@ SEQ_PREVIEW_SHOW_OUTLINE_SELECTED
@ SEQ_PREVIEW_SHOW_SAFE_CENTER
@ SEQ_DRAW_TRANSFORM_PREVIEW
@ SEQ_OVERLAY_FRAME_TYPE_RECT
@ SEQ_OVERLAY_FRAME_TYPE_REFERENCE
@ SEQ_DRAW_IMG_VECTORSCOPE
@ SEQ_DRAW_COLOR_SEPARATED
void ED_mask_draw_region(struct Depsgraph *depsgraph, struct Mask *mask, struct ARegion *region, char draw_flag, char draw_type, eMaskOverlayMode overlay_mode, float blend_factor, int width_i, int height_i, float aspx, float aspy, bool do_scale_applied, bool do_draw_cb, float stabmat[4][4], const struct bContext *C)
bScreen * ED_screen_animation_no_scrub(const struct wmWindowManager *wm)
bool ED_space_sequencer_check_show_imbuf(struct SpaceSeq *sseq)
#define REGION_DRAW_POST_VIEW
void ED_region_draw_cb_draw(const struct bContext *C, struct ARegion *region, int type)
#define REGION_DRAW_PRE_VIEW
void ED_region_image_metadata_draw(int x, int y, struct ImBuf *ibuf, const rctf *frame, float zoomx, float zoomy)
void GPU_batch_discard(GPUBatch *)
void GPU_batch_program_set_builtin(GPUBatch *batch, eGPUBuiltinShader shader_id)
GPUBatch * GPU_batch_create_ex(GPUPrimType prim, GPUVertBuf *vert, GPUIndexBuf *elem, eGPUBatchFlag owns_flag)
void GPU_batch_draw(GPUBatch *batch)
#define GPU_batch_uniform_4f(batch, name, x, y, z, w)
struct GPUFrameBuffer GPUFrameBuffer
void GPU_framebuffer_bind_no_srgb(GPUFrameBuffer *fb)
void GPU_framebuffer_restore(void)
GPUFrameBuffer * GPU_framebuffer_active_get(void)
void GPU_framebuffer_bind(GPUFrameBuffer *fb)
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble w _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat w _GL_VOID_RET _GL_VOID GLint GLint GLint w _GL_VOID_RET _GL_VOID GLshort GLshort GLshort w _GL_VOID_RET _GL_VOID GLdouble y1
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei height
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble w _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat w _GL_VOID_RET _GL_VOID GLint GLint GLint w _GL_VOID_RET _GL_VOID GLshort GLshort GLshort w _GL_VOID_RET _GL_VOID GLdouble GLdouble x2
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei width
void GPU_matrix_pop(void)
void GPU_matrix_identity_projection_set(void)
void GPU_matrix_pop_projection(void)
void GPU_matrix_push(void)
void GPU_matrix_identity_set(void)
void GPU_matrix_push_projection(void)
@ GPU_SHADER_2D_DIAG_STRIPES
@ GPU_SHADER_2D_LINE_DASHED_UNIFORM_COLOR
@ GPU_SHADER_2D_UNIFORM_COLOR
@ GPU_SHADER_2D_POINT_UNIFORM_SIZE_UNIFORM_COLOR_OUTLINE_AA
@ GPU_SHADER_2D_IMAGE_COLOR
@ GPU_SHADER_2D_FLAT_COLOR
void GPU_blend(eGPUBlend blend)
void GPU_line_width(float width)
void GPU_line_smooth(bool enable)
void GPU_depth_test(eGPUDepthTest test)
void GPU_viewport_size_get_f(float coords[4])
struct GPUTexture GPUTexture
void GPU_texture_update(GPUTexture *tex, eGPUDataFormat data_format, const void *data)
void GPU_texture_free(GPUTexture *tex)
void GPU_texture_filter_mode(GPUTexture *tex, bool use_filter)
void GPU_texture_unbind(GPUTexture *tex)
GPUTexture * GPU_texture_create_2d(const char *name, int w, int h, int mip_len, eGPUTextureFormat format, const float *data)
void GPU_texture_bind(GPUTexture *tex, int unit)
void GPU_vertbuf_vert_set(GPUVertBuf *verts, uint v_idx, const void *data)
#define GPU_vertbuf_create_with_format(format)
struct GPUVertBuf GPUVertBuf
void GPU_vertbuf_data_alloc(GPUVertBuf *, uint v_len)
void GPU_vertbuf_data_len_set(GPUVertBuf *, uint v_len)
void GPU_viewport_bind(GPUViewport *viewport, int view, const rcti *rect)
GPUFrameBuffer * GPU_viewport_framebuffer_overlay_get(GPUViewport *viewport)
void GPU_viewport_unbind(GPUViewport *viewport)
unsigned char * IMB_display_buffer_acquire_ctx(const struct bContext *C, struct ImBuf *ibuf, void **cache_handle)
void IMB_colormanagement_imbuf_make_display_space(struct ImBuf *ibuf, const struct ColorManagedViewSettings *view_settings, const struct ColorManagedDisplaySettings *display_settings)
bool IMB_colormanagement_setup_glsl_draw_from_space_ctx(const struct bContext *C, struct ColorSpace *colorspace, float dither, bool predivide)
void IMB_display_buffer_release(void *cache_handle)
bool IMB_colormanagement_setup_glsl_draw_ctx(const struct bContext *C, float dither, bool predivide)
void IMB_colormanagement_finish_glsl_draw(void)
struct ImBuf * IMB_dupImBuf(const struct ImBuf *ibuf1)
void IMB_rect_from_float(struct ImBuf *ibuf)
Contains defines and structs used throughout the imbuf module.
Read Guarded memory(de)allocation.
Group Output data from inside of a node group A color picker Mix two input colors RGB to Convert a color s luminance to a grayscale value Generate a normal vector and a dot product Bright Control the brightness and contrast of the input color Vector Map an input vectors to used to fine tune the interpolation of the input Camera Retrieve information about the camera and how it relates to the current shading point s position CLAMP
Group Output data from inside of a node group A color picker Mix two input colors RGB to Convert a color s luminance to a grayscale value Generate a normal vector and a dot product Bright Control the brightness and contrast of the input color Vector Map an input vectors to used to fine tune the interpolation of the input Camera Retrieve information about the camera and how it relates to the current shading point s position Clamp a value between a minimum and a maximum Vector Perform vector math operation Invert a producing a negative Combine Generate a color from its and blue channels(Deprecated)") DefNode(ShaderNode
#define SEQ_ITERATOR_FOREACH(var, collection)
void UI_draw_safe_areas(uint pos, const struct rctf *rect, const float title_aspect[2], const float action_aspect[2])
void UI_GetThemeColor3fv(int colorid, float col[3])
void UI_ThemeClearColor(int colorid)
void UI_GetThemeColor3ubv(int colorid, unsigned char col[3])
void UI_Theme_Restore(struct bThemeState *theme_state)
struct bTheme * UI_GetTheme(void)
void UI_GetThemeColorShade3ubv(int colorid, int offset, unsigned char col[3])
void UI_GetColorPtrBlendShade3ubv(const unsigned char cp1[3], const unsigned char cp2[3], unsigned char col[3], float fac, int offset)
void UI_SetTheme(int spacetype, int regionid)
void UI_GetColorPtrShade3ubv(const unsigned char cp1[3], unsigned char col[3], int offset)
void UI_Theme_Store(struct bThemeState *theme_state)
char char char char void UI_view2d_text_cache_add(struct View2D *v2d, float x, float y, const char *str, size_t str_len, const unsigned char col[4])
#define V2D_SCROLL_HANDLE_HEIGHT
void UI_view2d_totRect_set(struct View2D *v2d, int width, int height)
void UI_view2d_view_restore(const struct bContext *C)
#define V2D_SCROLL_HANDLE_WIDTH
void UI_view2d_view_orthoSpecial(struct ARegion *region, struct View2D *v2d, bool xaxis)
void UI_view2d_draw_lines_x__discrete_frames_or_seconds(const struct View2D *v2d, const struct Scene *scene, bool display_seconds, bool display_minor_lines)
void UI_view2d_view_ortho(const struct View2D *v2d)
void UI_view2d_text_cache_draw(struct ARegion *region)
void UI_view2d_scrollers_draw(struct View2D *v2d, const struct rcti *mask_custom)
float UI_view2d_region_to_view_y(const struct View2D *v2d, float y)
void UI_view2d_text_cache_add_rectf(struct View2D *v2d, const struct rctf *rect_view, const char *str, size_t str_len, const unsigned char col[4])
void UI_view2d_curRect_validate(struct View2D *v2d)
@ WM_JOB_TYPE_RENDER_PREVIEW
@ WM_GIZMOMAP_DRAWSTEP_2D
void ANIM_draw_previewrange(const bContext *C, View2D *v2d, int end_frame_width)
void ED_markers_draw(const bContext *C, int flag)
void ED_annotation_draw_2dimage(const bContext *C)
void ED_annotation_draw_view2d(const bContext *C, bool onlyv2d)
ListBase * SEQ_channels_displayed_get(Editing *ed)
const Depsgraph * depsgraph
static void draw_backdrop(const int fontid, const rctf *main_line_rect, const uint8_t color_bg[4], const short region_y_size, const float base_tick_height)
depth_tx normal_tx diffuse_light_tx specular_light_tx volume_light_tx environment_tx ambient_occlusion_tx aov_value_tx in_weight_img GPU_RGBA16F
int SEQ_effect_get_num_inputs(int seq_type)
void GPU_clear_color(float red, float green, float blue, float alpha)
void IMB_freeImBuf(ImBuf *UNUSED(ibuf))
void SEQ_cache_iterate(struct Scene *scene, void *userdata, bool callback_init(void *userdata, size_t item_count), bool callback_iter(void *userdata, struct Sequence *seq, int timeline_frame, int cache_type))
BLI_INLINE float fb(float length, float L)
SeqCollection * SEQ_query_rendered_strips(const Scene *scene, ListBase *channels, ListBase *seqbase, const int timeline_frame, const int displayed_channel)
void SEQ_collection_free(SeqCollection *collection)
ccl_gpu_kernel_postfix ccl_global float int int int int float bool int offset
void(* MEM_freeN)(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
ccl_device_inline float4 mask(const int4 &mask, const float4 &a)
T length(const vec_base< T, Size > &a)
static const pxr::TfToken preview("preview", pxr::TfToken::Immortal)
bool SEQ_prefetch_need_redraw(Main *bmain, Scene *scene)
double SEQ_rendersize_to_scale_factor(int render_size)
ImBuf * SEQ_render_give_ibuf(const SeqRenderData *context, float timeline_frame, int chanshown)
ImBuf * SEQ_render_give_ibuf_direct(const SeqRenderData *context, float timeline_frame, Sequence *seq)
void SEQ_render_new_render_data(Main *bmain, struct Depsgraph *depsgraph, Scene *scene, int rectx, int recty, int preview_render_size, int for_render, SeqRenderData *r_context)
bool SEQ_render_is_muted(const ListBase *channels, const Sequence *seq)
ListBase * SEQ_active_seqbase_get(const Editing *ed)
eSeqOverlapMode SEQ_tool_settings_overlap_mode_get(Scene *scene)
Editing * SEQ_editing_get(const Scene *scene)
static void seq_prefetch_wm_notify(const bContext *C, Scene *scene)
static void sequencer_display_size(Scene *scene, float r_viewrect[2])
static void draw_cache_view(const bContext *C)
static void sequencer_check_scopes(SequencerScopes *scopes, ImBuf *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 void draw_color_strip_band(const Scene *scene, ListBase *channels, Sequence *seq, uint pos, float text_margin_y, float y1)
static float align_frame_with_pixel(float frame_coord, float frames_per_pixel)
static void draw_sequence_extensions_overlay(Scene *scene, Sequence *seq, uint pos, float pixely, const bool show_strip_color_tag)
Sequence * ED_sequencer_special_preview_get(void)
static void draw_seq_outline(Scene *scene, Sequence *seq, uint pos, float x1, float x2, float y1, float y2, float pixelx, float pixely, bool seq_active)
struct WaveVizData WaveVizData
static void sequencer_preview_get_rect(rctf *preview, Scene *scene, ARegion *region, SpaceSeq *sseq, bool draw_overlay, bool draw_backdrop)
static int sequencer_draw_get_transform_preview_frame(Scene *scene)
#define SEQ_SCROLLER_TEXT_OFFSET
void draw_timeline_seq_display(const bContext *C, ARegion *region)
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_strips(const bContext *C, Editing *ed, ARegion *region)
static void draw_effect_inputs_highlight(const Scene *scene, Sequence *seq)
static size_t draw_waveform_segment(WaveVizData *waveform_data, bool use_rms)
static bool draw_cache_view_iter_fn(void *userdata, struct Sequence *seq, int timeline_frame, int cache_type)
static bool sequencer_draw_get_transform_preview(SpaceSeq *sseq, Scene *scene)
void color3ubv_from_seq(const Scene *curscene, const Sequence *seq, const bool show_strip_color_tag, uchar r_col[3])
static void write_waveform_data(WaveVizData *waveform_data, const vec2f pos, const float rms, const bool is_clipping, const bool draw_line)
static void sequencer_preview_clear(void)
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)
static void draw_seq_background(Scene *scene, Sequence *seq, uint pos, float x1, float x2, float y1, float y2, bool is_single_image, bool show_strip_color_tag)
static ImBuf * sequencer_get_scope(Scene *scene, SpaceSeq *sseq, ImBuf *ibuf, bool draw_backdrop)
static const char * draw_seq_text_get_name(Sequence *seq)
void sequencer_special_update_set(Sequence *seq)
static void drawmeta_contents(Scene *scene, Sequence *seqm, float x1, float y1, float x2, float y2, const bool show_strip_color_tag)
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 ImBuf * sequencer_make_scope(Scene *scene, ImBuf *ibuf, ImBuf *(*make_scope_fn)(ImBuf *ibuf))
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 void draw_waveform(WaveVizData *waveform_data, size_t wave_data_len)
static void draw_seq_locked(float x1, float y1, float x2, float y2)
static void draw_seq_handle(const Scene *scene, 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_waveform_overlay(const bContext *C, ARegion *region, Sequence *seq, float x1, float y1, float x2, float y2)
static void sequencer_draw_gpencil_overlay(const bContext *C)
static bool seq_draw_waveforms_poll(const bContext *UNUSED(C), SpaceSeq *sseq, Sequence *seq)
static void draw_seq_timeline_channels(View2D *v2d)
static void draw_cache_view_batch(GPUVertBuf *vbo, size_t vert_count, float col_r, float col_g, float col_b, float col_a)
void draw_timeline_seq(const bContext *C, ARegion *region)
static void seq_draw_image_origin_and_outline(const bContext *C, Sequence *seq, bool is_active_seq)
static Sequence * special_seq_update
static bool draw_cache_view_init_fn(void *userdata, size_t item_count)
static void sequencer_stop_running_jobs(const bContext *C, Scene *scene)
static size_t get_vertex_count(WaveVizData *waveform_data)
static void draw_overlap_frame_indicator(const struct Scene *scene, const View2D *v2d)
static void draw_seq_text_get_source(Sequence *seq, char *r_source, size_t source_len)
static void seq_draw_sfra_efra(const Scene *scene, View2D *v2d)
void ED_sequencer_special_preview_clear(void)
static void sequencer_draw_borders_overlay(const SpaceSeq *sseq, const View2D *v2d, const Scene *scene)
static size_t waveform_append_sample(WaveVizData *waveform_data, vec2f pos, const float value_min, const float value_max, const float y_mid, const float y_scale, const float rms, const bool is_clipping, const bool is_line_strip)
float sequence_handle_size_get_clamped(const Scene *scene, Sequence *seq, const 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 calculate_seq_text_offsets(const Scene *scene, View2D *v2d, Sequence *seq, float *x1, float *x2, float pixelx)
static void draw_seq_invalid(float x1, float x2, float y2, float text_margin_y)
static size_t draw_seq_text_get_overlay_string(const Scene *scene, SpaceSeq *sseq, Sequence *seq, char *r_overlay_string, size_t overlay_string_len)
void ED_sequencer_special_preview_set(bContext *C, const int mval[2])
static void waveform_job_start_if_needed(const bContext *C, Sequence *seq)
static void draw_seq_text_overlay(Scene *scene, View2D *v2d, Sequence *seq, SpaceSeq *sseq, float x1, float x2, float y1, float y2, bool seq_active)
struct CacheDrawData CacheDrawData
bool sequencer_view_preview_only_poll(const bContext *C)
struct ImBuf * make_vectorscope_view_from_ibuf(struct ImBuf *ibuf)
struct ImBuf * make_waveform_view_from_ibuf(struct ImBuf *ibuf)
struct ImBuf * make_histogram_view_from_ibuf(struct ImBuf *ibuf)
void sequencer_preview_add_sound(const struct bContext *C, struct Sequence *seq)
struct ImBuf * make_sep_waveform_view_from_ibuf(struct ImBuf *ibuf)
struct ImBuf * make_zebra_view_from_ibuf(struct ImBuf *ibuf, float perc)
struct Sequence * find_nearest_seq(struct Scene *scene, struct View2D *v2d, int *hand, const int mval[2])
void draw_seq_strip_thumbnail(struct View2D *v2d, const struct bContext *C, struct Scene *scene, struct Sequence *seq, float y1, float y2, float pixelx, float pixely)
Sequence * SEQ_select_active_get(Scene *scene)
int SEQ_time_strip_length_get(const Scene *scene, const Sequence *seq)
bool SEQ_time_has_right_still_frames(const Scene *scene, const Sequence *seq)
bool SEQ_time_has_left_still_frames(const Scene *scene, const Sequence *seq)
int SEQ_time_left_handle_frame_get(const Scene *UNUSED(scene), const Sequence *seq)
void SEQ_timeline_boundbox(const Scene *scene, const ListBase *seqbase, rctf *rect)
float SEQ_time_start_frame_get(const Sequence *seq)
int SEQ_time_right_handle_frame_get(const Scene *scene, const Sequence *seq)
struct wmGizmoMap * gizmo_map
GPUVertBuf * preprocessed_vbo
size_t composite_vert_count
size_t final_out_vert_count
GPUVertBuf * composite_vbo
size_t preprocessed_vert_count
GPUVertBuf * final_out_vbo
struct ColorSpace * rect_colorspace
struct ColorSpace * float_colorspace
ColorManagedViewSettings view_settings
struct DisplaySafeAreas safe_areas
ColorManagedDisplaySettings display_settings
struct Object * scene_camera
struct ImBuf * reference_ibuf
struct ImBuf * waveform_ibuf
struct ImBuf * sep_waveform_ibuf
struct ImBuf * zebra_ibuf
struct ImBuf * histogram_ibuf
struct ImBuf * vector_ibuf
struct SequencerScopes scopes
struct SequencerTimelineOverlay timeline_overlay
struct SequencerPreviewOverlay preview_overlay
ThemeStripColor strip_color[9]
void ED_time_scrub_draw_current_frame(const ARegion *region, const Scene *scene, bool display_seconds)
void ED_time_scrub_draw(const ARegion *region, const Scene *scene, bool display_seconds, bool discrete_frames)
const char * SEQ_sequence_give_name(Sequence *seq)
Mask * SEQ_active_mask_get(Scene *scene)
ListBase * SEQ_get_seqbase_from_sequence(Sequence *seq, ListBase **r_channels, int *r_offset)
bool SEQ_sequence_has_source(const Sequence *seq)
GPUViewport * WM_draw_region_get_viewport(ARegion *region)
GPUViewport * WM_draw_region_get_bound_viewport(ARegion *region)
void WM_event_add_notifier(const bContext *C, uint type, void *reference)
void WM_gizmomap_draw(wmGizmoMap *gzmap, const bContext *C, const eWM_GizmoFlagMapDrawStep drawstep)
void WM_jobs_kill_type(struct wmWindowManager *wm, const void *owner, int job_type)