98 #define SEQ_LEFTHANDLE 1
99 #define SEQ_RIGHTHANDLE 2
100 #define SEQ_HANDLE_SIZE 8.0f
101 #define SEQ_SCROLLER_TEXT_OFFSET 8
102 #define MUTE_ALPHA 120
139 if (seq->
scene == curscene) {
217 blendcol[0] = blendcol[1] = blendcol[2] = 128;
245 while (start != end) {
267 while (iter != end) {
289 if (strip_len != 0) {
309 float frames_per_pixel)
311 float cur_pixel = (frame_coord / frames_per_pixel);
312 float new_pixel = (int)(frame_coord / frames_per_pixel) + pixel_frac;
313 if (cur_pixel > new_pixel) {
316 return new_pixel * frames_per_pixel;
332 float frames_per_pixel)
341 float pixel_frac = v2d->
cur.
xmin / frames_per_pixel -
floor(v2d->
cur.
xmin / frames_per_pixel);
349 int pix_strip_len = round((x2_offset - x1_offset) / frames_per_pixel);
351 if (pix_strip_len < 2) {
376 if (waveform->
length == 0) {
392 float y_mid = (
y1 + y2) / 2.0f;
394 float y_scale = (y2 -
y1) / 2.0f;
395 float volume = seq->
volume;
398 int8_t was_line_strip = -1;
403 float samples_per_pix = samples_per_frame * frames_per_pixel;
406 float start_sample = 0;
408 if (strip_start_offset != 0) {
414 x1 - strip_start_offset, pixel_frac, frames_per_pixel);
415 start_sample =
fabsf(strip_start_offset - x1_adj) * samples_per_frame;
421 start_sample += (x1_offset - x1_adj) * samples_per_frame;
423 for (
int i = 0; i < pix_strip_len; i++) {
424 float sample_offset = start_sample + i * samples_per_pix;
425 int p = sample_offset;
427 if (p >= waveform->
length) {
431 float value_min = waveform->
data[p * 3];
432 float value_max = waveform->
data[p * 3 + 1];
433 float rms = waveform->
data[p * 3 + 2];
435 if (p + 1 < waveform->
length) {
437 float f = sample_offset - p;
438 value_min = (1.0f - f) * value_min + f * waveform->
data[p * 3 + 3];
439 value_max = (1.0f - f) * value_max + f * waveform->
data[p * 3 + 4];
440 rms = (1.0f - f) * rms + f * waveform->
data[p * 3 + 5];
441 if (samples_per_pix > 1.0f) {
443 float next_pos = sample_offset + samples_per_pix;
444 int end_idx = next_pos;
446 for (
int j = p + 1; (j < waveform->
length) && (j < end_idx); j++) {
447 value_min =
min_ff(value_min, waveform->
data[j * 3]);
448 value_max =
max_ff(value_max, waveform->
data[j * 3 + 1]);
455 float evaltime = x1_offset + (i * frames_per_pixel);
464 bool clipping =
false;
466 if (value_max > 1 || value_min < -1) {
473 bool is_line_strip = (value_max - value_min < 0.05f);
475 if (was_line_strip != -1 && is_line_strip != was_line_strip) {
481 tri_strip_iter->
pos[0] = x1_offset + i * frames_per_pixel;
482 tri_strip_iter->
pos[1] = y_mid + value_min * y_scale;
483 tri_strip_iter->
clip = clipping;
484 tri_strip_iter->
rms_pos = tri_strip_iter->
pos[1];
485 tri_strip_iter->
end =
true;
492 if (i + 1 == pix_strip_len) {
499 tri_strip_iter->
pos[0] = line_strip_iter->
pos[0];
500 tri_strip_iter->
pos[1] = line_strip_iter->
pos[1];
501 tri_strip_iter->
clip = line_strip_iter->
clip;
502 tri_strip_iter->
rms_pos = line_strip_iter->
pos[1];
507 if (line_strip_iter < line_strip_arr || line_strip_iter->end) {
514 line_strip_iter->
end =
true;
520 was_line_strip = is_line_strip;
523 line_strip_iter->
pos[0] = x1_offset + i * frames_per_pixel;
524 line_strip_iter->
pos[1] = y_mid + value_min * y_scale;
525 line_strip_iter->
clip = clipping;
529 tri_strip_iter->
pos[0] = x1_offset + i * frames_per_pixel;
530 tri_strip_iter->
pos[1] = y_mid + value_min * y_scale;
531 tri_strip_iter->
clip = clipping;
532 tri_strip_iter->
rms_pos = y_mid +
max_ff(-rms, value_min) * y_scale;
535 tri_strip_iter->
pos[0] = x1_offset + i * frames_per_pixel;
536 tri_strip_iter->
pos[1] = y_mid + value_max * y_scale;
537 tri_strip_iter->
clip = clipping;
538 tri_strip_iter->
rms_pos = y_mid +
min_ff(rms, value_max) * y_scale;
546 tri_strip_iter = tri_strip_arr;
547 line_strip_iter = line_strip_arr;
568 float draw_range = y2 -
y1;
579 offset = seqm->
start - offset;
587 for (seq = seqbase->
first; seq; seq = seq->
next) {
592 chan_range = (chan_max - chan_min) + 1;
593 draw_height = draw_range / chan_range;
601 for (seq = seqbase->
first; seq; seq = seq->
next) {
602 const int startdisp = seq->
startdisp + offset;
603 const int enddisp = seq->
enddisp + offset;
605 if ((startdisp >
x2 || enddisp < x1) == 0) {
606 float y_chan = (seq->
machine - chan_min) / (
float)(chan_range)*draw_range;
607 float x1_chan = startdisp;
608 float x2_chan = enddisp;
609 float y1_chan, y2_chan;
660 const float handsize_clamped,
661 const short direction,
667 float rx1 = 0, rx2 = 0;
668 float x1,
x2,
y1, y2;
681 rx2 = x1 + handsize_clamped;
685 rx1 =
x2 - handsize_clamped;
695 if (seq->
flag & whichsel) {
726 float tot_width =
BLF_width(fontid, numstr, numstr_len);
728 if ((
x2 - x1) / pixelx > 20 + tot_width) {
730 float text_margin = 1.2f * handsize_clamped;
739 x1 =
x2 - (text_margin + pixelx *
BLF_width(fontid, numstr, numstr_len));
797 immRectf(
pos, x1 - pixelx, y2 - 2 * pixely,
x2 + pixelx, y2);
807 const char *name = seq->
name + 2;
808 if (name[0] ==
'\0') {
872 char *r_overlay_string,
873 size_t overlay_string_len)
875 const char *text_sep =
" | ";
876 const char *text_array[5];
886 if (source[0] !=
'\0') {
888 text_array[i++] = text_sep;
890 text_array[i++] = source;
894 char strip_duration_text[16];
897 SNPRINTF(strip_duration_text,
"%d", strip_duration);
899 text_array[i++] = text_sep;
901 text_array[i++] = strip_duration_text;
922 sseq, seq, overlay_string,
sizeof(overlay_string));
924 if (overlay_string_len == 0) {
930 col[0] =
col[1] =
col[2] = seq_active ? 255 : 10;
954 float x1,
x2,
y1, y2;
1031 bool is_single_image)
1061 if (is_single_image) {
1089 float vert_pos[3][2];
1158 float text_margin = 2.0f * handsize_clamped;
1166 if (*x1 < v2d->cur.xmin + scroller_vert_xoffs) {
1167 *x1 = v2d->
cur.
xmin + scroller_vert_xoffs;
1169 else if (*x1 > v2d->
cur.
xmax) {
1172 if (*x2 < v2d->cur.xmin) {
1186 unsigned int *vert_count)
1188 float vert_pos[2][2];
1190 copy_v2_fl2(vert_pos[0], timeline_frame, (curve_val * y_height) +
y1);
1223 if (eval_start >= eval_end) {
1231 uint max_verts = 2 * ((eval_end - eval_start) / eval_step + 1);
1233 uint vert_count = 0;
1235 const float y_height = y2 -
y1;
1237 float prev_val = INT_MIN;
1240 for (
int timeline_frame = eval_start; timeline_frame <= eval_end;
1241 timeline_frame += eval_step) {
1243 CLAMP(curve_val, 0.0f, 1.0f);
1246 if (curve_val == prev_val && timeline_frame < eval_end - eval_step) {
1254 vbo,
y1, y2, y_height, timeline_frame - eval_step, prev_val, &vert_count);
1259 prev_val = curve_val;
1268 if (vert_count > 0) {
1287 float x1,
x2,
y1, y2;
1304 float text_margin_y;
1310 text_margin_y = y2 -
min_ff(0.40f, 20 *
U.dpi_fac * pixely);
1313 y_threshold = ((y2 -
y1) / pixely) > 20 *
U.dpi_fac;
1317 y_threshold =
false;
1332 if (!is_single_image && (seq->
startofs || seq->
endofs) && pixely > 0) {
1361 y_threshold ?
y1 + 0.05f :
y1,
1363 y_threshold ? text_margin_y : y2,
1381 v2d, seq, handsize_clamped,
SEQ_LEFTHANDLE,
pos, seq_active, pixelx, y_threshold);
1402 if (((
x2 - x1) > 32 * pixelx *
U.dpi_fac) && ((y2 -
y1) > 8 * pixely *
U.dpi_fac)) {
1405 v2d, seq, sseq, x1,
x2, y_threshold ? text_margin_y :
y1, y2, seq_active);
1427 if (seq2 && seq2 != seq1) {
1434 if (seq3 && !
ELEM(seq3, seq1, seq2)) {
1484 const char *viewname)
1490 short is_break =
G.is_break;
1543 G.is_break = is_break;
1586 scope = make_scope_fn(display_ibuf);
1631 float viewport_size[4];
1684 float aspx = 1.0f, aspy = 1.0f;
1722 void **r_buffer_cache_handle)
1724 void *display_buffer;
1725 bool force_fallback =
false;
1726 *r_glsl_used =
false;
1728 force_fallback |= (ibuf->
dither != 0.0f);
1735 if (force_fallback) {
1736 *r_glsl_used =
false;
1737 display_buffer =
NULL;
1751 BLI_assert(!
"Incompatible number of channels for float buffer in sequencer");
1753 display_buffer =
NULL;
1764 else if (ibuf->
rect) {
1765 display_buffer = ibuf->
rect;
1771 display_buffer =
NULL;
1782 return display_buffer;
1826 else if (draw_backdrop) {
1828 float image_aspect = viewrect[0] / viewrect[1];
1830 if (aspect >= image_aspect) {
1831 preview->
xmax = image_aspect / aspect;
1835 preview->
ymax = aspect / image_aspect;
1840 *preview = v2d->
tot;
1853 void *display_buffer;
1854 void *buffer_cache_handle =
NULL;
1864 bool glsl_used =
false;
1883 C, ibuf, &glsl_used, &
format, &
data, &buffer_cache_handle);
1886 if (draw_backdrop) {
1943 if (buffer_cache_handle) {
1951 if (draw_backdrop) {
1965 switch (sseq->
mainb) {
2021 if (last_seq ==
NULL) {
2038 preview_frame = last_seq->
enddisp - 1;
2044 return preview_frame;
2067 if (
G.is_rendering) {
2071 int preview_frame = timeline_frame;
2111 C,
scene, region, sseq, ibuf, scope, draw_overlay, draw_backdrop);
2127 sequencer_draw_maskedit(
C,
scene, region, sseq);
2161 while (i < v2d->cur.ymax) {
2172 int line_len = (int)v2d->
cur.
ymax - i + 1;
2175 while (line_len--) {
2195 for (j = 0; j < 2; j++) {
2203 if (seq == last_seq && (last_seq->
flag &
SELECT)) {
2289 if (frame_sta < frame_end) {
2363 if (item_count == 0) {
2369 size_t max_vert_count = item_count * 6;
2386 float stripe_bot, stripe_top, stripe_ofs_y, stripe_ht;
2394 stripe_top = stripe_bot + stripe_ht;
2402 stripe_top = stripe_bot + stripe_ht;
2411 stripe_top = stripe_bot + stripe_ht;
2420 stripe_bot = stripe_top - stripe_ht;
2428 float vert_pos[6][2];
2429 copy_v2_fl2(vert_pos[0], timeline_frame, stripe_bot);
2430 copy_v2_fl2(vert_pos[1], timeline_frame, stripe_top);
2431 copy_v2_fl2(vert_pos[2], timeline_frame + 1, stripe_top);
2434 copy_v2_fl2(vert_pos[5], timeline_frame + 1, stripe_bot);
2436 for (
int i = 0; i < 6; i++) {
2445 GPUVertBuf *vbo,
size_t vert_count,
float col_r,
float col_g,
float col_b,
float col_a)
2448 if (vert_count > 0) {
2471 float stripe_bot, stripe_top;
2481 stripe_top = stripe_bot + stripe_ht;
2482 const float bg_color[4] = {1.0f, 0.4f, 0.2f, 0.1f};
2493 if (seq->startdisp > v2d->
cur.
xmax || seq->enddisp < v2d->
cur.
xmin) {
2498 stripe_top = stripe_bot + stripe_ht;
2501 const float bg_color[4] = {1.0f, 0.1f, 0.02f, 0.1f};
2503 immRectf(
pos, seq->startdisp, stripe_bot, seq->enddisp, stripe_top);
2506 stripe_bot += stripe_ht + stripe_ofs_y;
2507 stripe_top = stripe_bot + stripe_ht;
2510 const float bg_color[4] = {0.1f, 0.1f, 0.75f, 0.1f};
2512 immRectf(
pos, seq->startdisp, stripe_bot, seq->enddisp, stripe_top);
2516 stripe_bot = stripe_top - stripe_ht;
2519 const float bg_color[4] = {1.0f, 0.6f, 0.0f, 0.1f};
2521 immRectf(
pos, seq->startdisp, stripe_bot, seq->enddisp, stripe_top);
2564 short cfra_flag = 0;
2625 float viewport_size[4];
2627 immUniform2f(
"viewport_size", viewport_size[2], viewport_size[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)
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 len) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
int BLF_set_default(void)
BLI_INLINE bool BLI_listbase_is_empty(const struct ListBase *lb)
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, 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_v2_v2(float r[2], const float a[2])
void BLI_join_dirfile(char *__restrict dst, const 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_rcti_init(struct rcti *rect, int xmin, int xmax, int ymin, int ymax)
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
size_t BLI_snprintf(char *__restrict dst, size_t maxncpy, const char *__restrict format,...) ATTR_NONNULL(1
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, const size_t maxncpy) ATTR_NONNULL()
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
@ SEQ_AUDIO_DRAW_WAVEFORM
#define SEQ_EDIT_OVERLAY_ABS
@ 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
#define SEQ_EDIT_OVERLAY_SHOW
#define SEQ_STRIP_OFSBOTTOM
@ SOUND_TAGS_WAVEFORM_LOADING
@ SEQ_DRAW_OVERLAY_REFERENCE
@ SEQ_DRAW_TRANSFORM_PREVIEW
@ SEQ_DRAW_IMG_VECTORSCOPE
@ SEQ_SHOW_STRIP_DURATION
@ SEQ_DRAW_COLOR_SEPARATED
void ED_mask_draw_region(struct Depsgraph *depsgraph, struct Mask *mask, struct ARegion *region, const char draw_flag, const char draw_type, const eMaskOverlayMode overlay_mode, const int width_i, const int height_i, const float aspx, const float aspy, const bool do_scale_applied, const bool do_draw_cb, float stabmat[4][4], const struct bContext *C)
bool ED_space_sequencer_check_show_imbuf(struct SpaceSeq *sseq)
#define REGION_DRAW_POST_VIEW
void ED_region_draw_cb_draw(const struct bContext *, struct ARegion *, int)
#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 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
_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 height
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_IMAGE_COLOR
@ GPU_SHADER_2D_FLAT_COLOR
void GPU_blend(eGPUBlend blend)
void GPU_line_width(float width)
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)
struct 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)
void IMB_freeImBuf(struct ImBuf *ibuf)
Contains defines and structs used throughout the imbuf module.
Read Guarded memory(de)allocation.
Group RGB to Bright Vector Camera CLAMP
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_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_GetColorPtrShade3ubv(const unsigned char cp1[3], unsigned char col[3], int offset)
void UI_view2d_constant_grid_draw(const struct View2D *v2d, float step)
#define V2D_SCROLL_HANDLE_HEIGHT
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])
void UI_view2d_totRect_set(struct View2D *v2d, int width, int height)
void UI_view2d_draw_scale_y__block(const struct ARegion *region, const struct View2D *v2d, const struct rcti *rect, int colorid)
void UI_view2d_view_restore(const struct bContext *C)
#define V2D_SCROLL_HANDLE_WIDTH
#define UI_TIME_SCRUB_MARGIN_Y
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)
void UI_view2d_view_orthoSpecial(struct ARegion *region, struct View2D *v2d, const bool xaxis)
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
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)
const Depsgraph * depsgraph
int SEQ_effect_get_num_inputs(int seq_type)
void GPU_clear_color(float red, float green, float blue, float alpha)
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)
void(* MEM_freeN)(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
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)
struct SELECTID_Context context
ListBase * SEQ_active_seqbase_get(const Editing *ed)
Editing * SEQ_editing_get(Scene *scene, bool alloc)
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_seq_text_overlay(View2D *v2d, Sequence *seq, SpaceSeq *sseq, float x1, float x2, float y1, float y2, bool seq_active)
Sequence * ED_sequencer_special_preview_get(void)
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 void calculate_seq_text_offsets(View2D *v2d, Sequence *seq, float *x1, float *x2, float pixelx)
struct WaveVizData WaveVizData
static void draw_waveform(WaveVizData *iter, WaveVizData *end, GPUPrimType prim_type, bool use_rms)
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)
void color3ubv_from_seq(Scene *curscene, Sequence *seq, uchar col[3])
static float clamp_frame_coord_to_pixel(float frame_coord, float pixel_frac, float frames_per_pixel)
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)
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 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 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_seq_background(Scene *scene, Sequence *seq, uint pos, float x1, float x2, float y1, float y2, bool is_single_image)
static void draw_color_strip_band(Sequence *seq, uint pos, float text_margin_y, float y1)
static void draw_effect_inputs_highlight(Sequence *seq)
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_locked(float x1, float y1, float x2, float y2)
static void drawmeta_contents(Scene *scene, Sequence *seqm, float x1, float y1, float x2, float y2)
static void sequencer_draw_gpencil_overlay(const bContext *C)
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 draw_sequence_extensions_overlay(Scene *scene, Sequence *seq, uint pos, float pixely)
float sequence_handle_size_get_clamped(Sequence *seq, const float pixelx)
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 void seq_draw_sfra_efra(Scene *scene, View2D *v2d)
static int get_section_len(WaveVizData *start, WaveVizData *end)
static void draw_seq_text_get_source(Sequence *seq, char *r_source, size_t source_len)
void ED_sequencer_special_preview_clear(void)
static void sequencer_draw_borders_overlay(const SpaceSeq *sseq, const View2D *v2d, const Scene *scene)
static void draw_seq_strip(const bContext *C, SpaceSeq *sseq, Scene *scene, ARegion *region, Sequence *seq, float pixelx, bool seq_active)
static void draw_seq_invalid(float x1, float x2, float y2, float text_margin_y)
void ED_sequencer_special_preview_set(bContext *C, const int mval[2])
static void draw_seq_backdrop(View2D *v2d)
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 size_t draw_seq_text_get_overlay_string(SpaceSeq *sseq, Sequence *seq, char *r_overlay_string, size_t overlay_string_len)
struct CacheDrawData CacheDrawData
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])
Sequence * SEQ_select_active_get(Scene *scene)
void SEQ_timeline_boundbox(const Scene *scene, const ListBase *seqbase, rctf *rect)
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
void ED_time_scrub_draw_current_frame(const ARegion *region, const Scene *scene, bool display_seconds, bool draw_line)
void ED_time_scrub_draw(const ARegion *region, const Scene *scene, bool display_seconds, bool discrete_frames)
ccl_device_inline float2 floor(const float2 &a)
ccl_device_inline float4 mask(const int4 &mask, const float4 &a)
const char * SEQ_sequence_give_name(Sequence *seq)
Mask * SEQ_active_mask_get(Scene *scene)
ListBase * SEQ_get_seqbase_from_sequence(Sequence *seq, int *r_offset)
bool SEQ_sequence_has_source(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_jobs_kill_type(struct wmWindowManager *wm, void *owner, int job_type)