120 short is_break =
G.is_break;
127 render_size = scene->
r.
size / 100.0;
133 rectx = roundf(render_size * scene->
r.
xsch);
134 recty = roundf(render_size * scene->
r.
ysch);
140 context.is_playing = screen->
animtimer !=
nullptr;
141 context.is_scrubbing = screen->
scrubbing;
176 G.is_break = is_break;
191 scope = make_scope_fn(display_ibuf);
200 r_viewrect[0] = float(render_data.
xsch);
201 r_viewrect[1] = float(render_data.
ysch);
203 r_viewrect[0] *= render_data.
xasp / render_data.
yasp;
238 float viewport_size[4];
277 Mask *
mask = SEQ_active_mask_get(scene);
281 float aspx = 1.0f, aspy = 1.0f;
344 return texture_coord;
370 const float xmin = v2d.
tot.
xmin;
371 const float ymin = v2d.
tot.
ymin;
408 return texture_coord;
416 if (hist.
data.is_empty()) {
421 uchar col_grid[4] = {128, 128, 128, 128};
422 float grid_x_0 = area.
xmin;
423 float grid_x_1 = area.
xmax;
428 grid_x_0 = area.
xmin + (area.
xmax - area.
xmin) * ratio_0;
429 grid_x_1 = area.
xmin + (area.
xmax - area.
xmin) * ratio_1;
433 float text_scale_x, text_scale_y;
436 for (
int line = 0; line <= 4; line++) {
437 float val = float(line) / 4;
438 float x = grid_x_0 + (grid_x_1 - grid_x_0) * val;
445 float text_width, text_height;
447 text_width *= text_scale_x;
448 text_height *= text_scale_y;
450 &v2d,
x - text_width / 2, area.
ymax - text_height * 1.3f, buf, buf_len, col_grid);
454 uchar col_border[4] = {64, 64, 64, 128};
460 for (
int ch = 0; ch < 3; ++ch) {
464 uchar col_line[4] = {32, 32, 32, 255};
465 uchar col_area[4] = {64, 64, 64, 128};
469 float x_scale = (area.
xmax - area.
xmin) / hist.
data.size();
470 float yb = area.
ymin;
471 for (
int bin = 0; bin < hist.
data.size() - 1; bin++) {
472 float x0 = area.
xmin + (bin + 0.5f) * x_scale;
473 float x1 = area.
xmin + (bin + 1.5f) * x_scale;
475 float y0 = area.
ymin + hist.
data[bin][ch] * y_scale;
476 float y1 = area.
ymin + hist.
data[bin + 1][ch] * y_scale;
477 quads.
add_quad(x0, yb, x0, y0, x1, yb, x1, y1, col_area);
478 quads.
add_line(x0, y0, x1, y1, col_line);
500 const float lines[3] = {0.1f, 0.7f, 0.9f};
501 uchar col_grid[4] = {160, 64, 64, 128};
502 const float x0 = area.
xmin;
503 const float x1 = area.
xmax;
505 for (
int i = 0;
i < 3;
i++) {
513 uchar col_border[4] = {64, 64, 64, 128};
522 const float skin_rad =
DEG2RADF(123.0f);
527 const float radius = ((
w < h) ?
w : h) * 0.5f;
530 constexpr int circle_delta = 6;
531 constexpr int num_circle_points = 360 / circle_delta;
532 float2 circle_pos[num_circle_points];
533 float3 circle_col[num_circle_points];
534 for (
int i = 0;
i < num_circle_points;
i++) {
551 constexpr float alpha_f = 0.8f;
552 constexpr uchar alpha_b =
uchar(alpha_f * 255.0f);
553 const uchar4 col_center(50, 50, 50, alpha_b);
555 uchar4 col1(0, 0, 0, alpha_b);
556 uchar4 col2(0, 0, 0, alpha_b);
557 uchar4 col3(0, 0, 0, alpha_b);
561 constexpr float mul_background = 0.2f;
562 for (
int i = 0;
i < num_circle_points;
i += 2) {
564 int idx2 = (
i + 1) % num_circle_points;
565 int idx3 = (
i + 2) % num_circle_points;
566 float2 pt1 = center + circle_pos[idx1] * radius;
567 float2 pt2 = center + circle_pos[idx2] * radius;
568 float2 pt3 = center + circle_pos[idx3] * radius;
569 float3 rgb1 = circle_col[idx1] * mul_background;
570 float3 rgb2 = circle_col[idx2] * mul_background;
571 float3 rgb3 = circle_col[idx3] * mul_background;
590 const float outer_radius = radius * 1.02f;
591 for (
int i = 0;
i < num_circle_points;
i++) {
593 int idx2 = (
i + 1) % num_circle_points;
594 float2 pt1a = center + circle_pos[idx1] * radius;
595 float2 pt2a = center + circle_pos[idx2] * radius;
596 float2 pt1b = center + circle_pos[idx1] * outer_radius;
597 float2 pt2b = center + circle_pos[idx2] * outer_radius;
598 float3 rgb1 = circle_col[idx1];
599 float3 rgb2 = circle_col[idx2];
603 pt1a.x, pt1a.y, pt1b.x, pt1b.y, pt2a.x, pt2a.y, pt2b.x, pt2b.y, col1, col1, col2, col2);
610 const uchar4 col_grid(128, 128, 128, 128);
613 quads.
add_line(center.x - radius, center.y, center.x + radius, center.y, col_grid);
614 quads.
add_line(center.x, center.y - radius, center.x, center.y + radius, col_grid);
617 for (
int j = 1; j < 5; j++) {
618 float r = radius * j * 0.2f;
619 for (
int i = 0;
i < num_circle_points;
i++) {
621 int idx2 = (
i + 1) % num_circle_points;
622 float2 pt1 = center + circle_pos[idx1] * r;
623 float2 pt2 = center + circle_pos[idx2] * r;
624 quads.
add_line(pt1.x, pt1.y, pt2.x, pt2.y, col_grid);
629 const float3 primaries[6] = {
637 const char *names =
"RYGCBM";
640 char buf[2] = {
'M', 0};
641 float text_scale_x, text_scale_y;
643 float text_width, text_height;
645 text_width *= text_scale_x;
646 text_height *= text_scale_y;
648 const uchar4 col_target(128, 128, 128, 192);
649 const float delta = radius * 0.01f;
650 for (
int i = 0;
i < 6;
i++) {
651 float3 safe = primaries[
i] * 0.75f;
657 pos.x + delta * 1.2f + text_width / 4,
658 pos.y - text_height / 2,
665 const uchar4 col_tone(255, 102, 0, 128);
668 center.x +
cosf(skin_rad) * radius,
669 center.y +
sinf(skin_rad) * radius,
684 float vecscope_aspect = 1.0f;
688 vecscope_aspect = width / height;
689 if (vecscope_aspect >= 1.0f) {
707 uchar black[4] = {0, 0, 0, 255};
715 ImBuf *scope_image =
nullptr;
733 if (scope_image !=
nullptr) {
742 "seq_display_buf", scope_image->
x, scope_image->
y, 1,
format, usage,
nullptr);
801 const int timeline_frame)
813 switch (space_sequencer.
mainb) {
819 display_ibuf, &view_settings, &display_settings);
843 display_ibuf, &view_settings, &display_settings);
863 if (last_seq ==
nullptr) {
886 return preview_frame;
978 const int line_start = selection_start.y;
979 const int line_end = selection_end.y;
981 for (
int line_index = line_start; line_index <= line_end; line_index++) {
986 if (line_index == selection_start.y) {
987 character_start = line.
characters[selection_start.x];
989 if (line_index == selection_end.y) {
990 character_end = line.
characters[selection_end.x];
993 const float line_y = character_start.
position.y +
text->font_descender;
996 const float view_aspect = scene->
r.
xasp / scene->
r.
yasp;
999 {character_start.
position.x, line_y},
1000 {character_start.
position.x, line_y +
text->line_height},
1009 selection_quad[
i] += view_offs;
1011 selection_quad[
i].x *= view_aspect;
1025 coords_view.x = std::round(coords_view.x);
1026 coords_view.y = std::round(coords_view.y);
1029 v2d, coords_view.x, coords_view.y, &coords_region_aligned.x, &coords_region_aligned.y);
1030 return coords_region_aligned;
1040 const float view_aspect = scene->
r.
xasp / scene->
r.
yasp;
1043 data->cursor_offset);
1044 const float cursor_width = 10;
1046 text->lines[cursor_position.y].characters[cursor_position.x].position;
1049 rcti text_boundbox =
text->text_boundbox;
1050 text_boundbox.
xmax -= cursor_width +
U.pixelsize;
1051 text_boundbox.
xmin +=
U.pixelsize;
1053 cursor_coords.x = std::clamp(
1054 cursor_coords.x,
float(text_boundbox.
xmin),
float(text_boundbox.
xmax));
1058 {cursor_coords.x, cursor_coords.y},
1059 {cursor_coords.x, cursor_coords.y +
text->line_height},
1060 {cursor_coords.x + cursor_width, cursor_coords.y +
text->line_height},
1061 {cursor_coords.x + cursor_width, cursor_coords.y},
1069 cursor_quad[
i] += descender_offs + view_offs;
1071 cursor_quad[
i].x *= view_aspect;
1087 const float view_aspect = scene->
r.
xasp / scene->
r.
yasp;
1090 {float(
text->text_boundbox.xmin), float(
text->text_boundbox.ymin)},
1091 {float(
text->text_boundbox.xmin), float(
text->text_boundbox.ymax)},
1092 {float(
text->text_boundbox.xmax), float(
text->text_boundbox.ymax)},
1093 {float(
text->text_boundbox.xmax), float(
text->text_boundbox.ymin)},
1106 box_quad[
i] += view_offs;
1108 box_quad[
i].x *= view_aspect;
1171 if (
G.is_rendering) {
1181 viewport, &view_settings, &display_settings, render_data.
dither_intensity);
1211 float col[4] = {0, 0, 0, 0};
1234 const rctf &position,
1235 const rctf &texture_coord)
1260 const char *texture_colorspace_name,
1261 const bool predivide,
1262 const rctf &position,
1263 const rctf &texture_coord)
1292 const int timeline_frame)
1296 scene, channels, editing.
seqbasep, timeline_frame, 0);
1298 for (
Strip *strip : strips) {
1331 float original_proj[4][4];
1351 const float f5 = 0.25f;
1352 const float f10 = 0.5f;
1353 const float f20 = 1.0f;
1355 const float red[3] = {1.0f, 0.0f, 0.0f};
1356 const float white[3] = {1.0f, 1.0f, 1.0f};
1358 const int segments = 16;
1360 for (
int i = 0;
i < segments + 1;
i++) {
1361 float angle = float(2 *
M_PI) * (float(
i) / float(segments));
1370 float crosshair_color[3];
1424 GPUTexture *
texture =
nullptr;
1439 BLI_assert_msg(0,
"Incompatible number of channels for float buffer in sequencer");
1444 "seq_display_buf", ibuf.
x, ibuf.
y, 1, texture_format, texture_usage,
nullptr);
1449 "seq_display_buf", ibuf.
x, ibuf.
y, 1,
GPU_RGBA8, texture_usage,
nullptr);
1492 const ImBuf *current_ibuf,
1493 GPUTexture *current_texture,
1494 const ImBuf *reference_ibuf,
1495 GPUTexture *reference_texture)
1499 if (current_texture) {
1506 *current_texture, texture_colorspace, predivide, position, texture_coord);
1509 if (reference_texture) {
1516 *reference_texture, texture_colorspace, predivide, position, texture_coord);
1542 GPUTexture *current_texture,
1543 GPUTexture *reference_texture,
1544 const ImBuf *overlay_ibuf,
1545 const int timeline_frame)
1552 bool has_scopes =
false;
1555 space_sequencer, view_settings, display_settings, *overlay_ibuf, timeline_frame))
1569 if (current_texture) {
1574 if (reference_texture) {
1601 if (!has_scopes && overlay_ibuf) {
1645 int xoffset = rect->
xmin +
U.widget_unit;
1646 int yoffset = rect->
ymax;
1651 float text_color[4] = {1, 1, 1, 1}, shadow_color[4] = {0, 0, 0, 0.8f};
1690 const bool need_current_frame = !(draw_frame_overlay && (space_sequencer.
overlay_frame_type ==
1692 const bool need_reference_frame = draw_frame_overlay && space_sequencer.
overlay_frame_type !=
1695 int timeline_frame = render_data.
cfra;
1704 GPUTexture *current_texture =
nullptr;
1705 GPUTexture *reference_texture =
nullptr;
1710 ImBuf *current_ibuf =
nullptr;
1711 ImBuf *reference_ibuf =
nullptr;
1712 if (need_current_frame) {
1715 if (show_imbuf && current_ibuf) {
1719 if (need_reference_frame) {
1722 C, timeline_frame + offset, view_names[space_sequencer.
multiview_eye]);
1723 if (show_imbuf && reference_ibuf) {
1729 ImBuf *overlay_ibuf = need_current_frame ? current_ibuf : reference_ibuf;
1753 sequencer_draw_maskedit(
C, scene, region, sseq);
1757 if (current_texture) {
1760 if (reference_texture) {
Depsgraph * CTX_data_expect_evaluated_depsgraph(const bContext *C)
bScreen * CTX_wm_screen(const bContext *C)
ScrArea * CTX_wm_area(const bContext *C)
Scene * CTX_data_scene(const bContext *C)
SpaceSeq * CTX_wm_space_seq(const bContext *C)
Main * CTX_data_main(const bContext *C)
ARegion * CTX_wm_region(const bContext *C)
wmWindowManager * CTX_wm_manager(const bContext *C)
void BKE_render_resolution(const RenderData *r, const bool use_crop, int *r_width, int *r_height)
int BKE_scene_multiview_view_id_get(const RenderData *rd, const char *viewname)
void BLF_shadow(int fontid, FontShadowType type, const float rgba[4]=nullptr)
void BLF_width_and_height(int fontid, const char *str, size_t str_len, float *r_width, float *r_height) ATTR_NONNULL()
void BLF_color4fv(int fontid, const float rgba[4])
void BLF_shadow_offset(int fontid, int x, int y)
void BLF_disable(int fontid, int option)
void BLF_enable(int fontid, int option)
#define BLI_assert_msg(a, msg)
MINLINE float ratiof(float min, float max, float pos)
#define BLI_YUV_ITU_BT709
void rgb_to_yuv(float r, float g, float b, float *r_y, float *r_u, float *r_v, int colorspace)
void yuv_to_rgb(float y, float u, float v, float *r_r, float *r_g, float *r_b, int colorspace)
void rgb_float_to_uchar(unsigned char r_col[3], const float col_f[3])
void BLI_rctf_resize_y(struct rctf *rect, float y)
BLI_INLINE float BLI_rctf_cent_y(const struct rctf *rct)
BLI_INLINE float BLI_rctf_cent_x(const struct rctf *rct)
void BLI_rctf_resize_x(struct rctf *rect, float x)
void BLI_rctf_init(struct rctf *rect, float xmin, float xmax, float ymin, float ymax)
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,...)
#define SNPRINTF_RLEN(dst, format,...)
#define STEREO_RIGHT_NAME
struct TextVarsRuntime TextVarsRuntime
@ SEQ_EDIT_OVERLAY_FRAME_ABS
@ SEQ_EDIT_OVERLAY_FRAME_SHOW
@ SEQ_PREVIEW_SHOW_METADATA
@ SEQ_PREVIEW_SHOW_GPENCIL
@ SEQ_PREVIEW_SHOW_SAFE_MARGINS
@ SEQ_PREVIEW_SHOW_OUTLINE_SELECTED
@ SEQ_PREVIEW_SHOW_SAFE_CENTER
@ SEQ_PREVIEW_SHOW_2D_CURSOR
@ SEQ_DRAW_TRANSFORM_PREVIEW
@ SEQ_OVERLAY_FRAME_TYPE_RECT
@ SEQ_OVERLAY_FRAME_TYPE_CURRENT
@ SEQ_OVERLAY_FRAME_TYPE_REFERENCE
@ SEQ_DRAW_IMG_VECTORSCOPE
void ED_mask_draw_region(Depsgraph *depsgraph, Mask *mask, 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 bContext *C)
const rcti * ED_region_visible_rect(ARegion *region)
bScreen * ED_screen_animation_no_scrub(const wmWindowManager *wm)
void ED_region_pixelspace(const ARegion *region)
bScreen * ED_screen_animation_playing(const wmWindowManager *wm)
void ED_region_draw_cb_draw(const bContext *C, ARegion *region, int type)
#define REGION_DRAW_POST_VIEW
void ED_region_image_metadata_draw(int x, int y, const ImBuf *ibuf, const rctf *frame, float zoomx, float zoomy)
void ED_scene_draw_fps(const Scene *scene, int xoffset, int *yoffset)
void GPU_framebuffer_bind_no_srgb(GPUFrameBuffer *fb)
GPUFrameBuffer * GPU_framebuffer_active_get()
void GPU_framebuffer_restore()
void GPU_framebuffer_bind(GPUFrameBuffer *fb)
void GPU_framebuffer_clear_color(GPUFrameBuffer *fb, const float clear_col[4])
void GPU_matrix_scale_2f(float x, float y)
#define GPU_matrix_projection_get(x)
#define GPU_matrix_projection_set(x)
void GPU_matrix_translate_2f(float x, float y)
@ GPU_SHADER_3D_LINE_DASHED_UNIFORM_COLOR
@ GPU_SHADER_3D_UNIFORM_COLOR
@ GPU_SHADER_2D_POINT_UNIFORM_SIZE_UNIFORM_COLOR_OUTLINE_AA
@ GPU_SHADER_3D_POLYLINE_FLAT_COLOR
@ GPU_SHADER_3D_IMAGE_COLOR
@ GPU_BLEND_OVERLAY_MASK_FROM_ALPHA
void GPU_blend(eGPUBlend blend)
void GPU_line_width(float width)
void GPU_line_smooth(bool enable)
void GPU_depth_mask(bool depth)
void GPU_color_mask(bool r, bool g, bool b, bool a)
void GPU_depth_test(eGPUDepthTest test)
void GPU_viewport_size_get_f(float coords[4])
void GPU_texture_bind(GPUTexture *texture, int unit)
GPUTexture * GPU_texture_create_2d(const char *name, int width, int height, int mip_len, eGPUTextureFormat format, eGPUTextureUsage usage, const float *data)
void GPU_texture_free(GPUTexture *texture)
void GPU_texture_unbind(GPUTexture *texture)
void GPU_texture_extend_mode(GPUTexture *texture, GPUSamplerExtendMode extend_mode)
@ GPU_TEXTURE_USAGE_SHADER_READ
@ GPU_TEXTURE_USAGE_ATTACHMENT
@ GPU_SAMPLER_EXTEND_MODE_CLAMP_TO_BORDER
void GPU_texture_filter_mode(GPUTexture *texture, bool use_filter)
void GPU_texture_update(GPUTexture *texture, eGPUDataFormat data_format, const void *data)
void GPU_viewport_bind(GPUViewport *viewport, int view, const rcti *rect)
void GPU_viewport_colorspace_set(GPUViewport *viewport, const ColorManagedViewSettings *view_settings, const ColorManagedDisplaySettings *display_settings, float dither)
GPUFrameBuffer * GPU_viewport_framebuffer_overlay_get(GPUViewport *viewport)
void GPU_viewport_unbind(GPUViewport *viewport)
GPUFrameBuffer * GPU_viewport_framebuffer_render_get(GPUViewport *viewport)
static double angle(const Eigen::Vector3d &v1, const Eigen::Vector3d &v2)
void IMB_colormanagement_imbuf_make_display_space(ImBuf *ibuf, const ColorManagedViewSettings *view_settings, const ColorManagedDisplaySettings *display_settings)
const char * IMB_colormanagement_colorspace_get_name(const ColorSpace *colorspace)
@ COLOR_ROLE_DEFAULT_BYTE
@ COLOR_ROLE_SCENE_LINEAR
const char * IMB_colormanagement_role_colorspace_name_get(int role)
void IMB_colormanagement_finish_glsl_draw()
bool IMB_colormanagement_setup_glsl_draw_to_scene_linear(const char *from_colorspace_name, bool predivide)
ImBuf * IMB_dupImBuf(const ImBuf *ibuf1)
void IMB_byte_from_float(ImBuf *ibuf)
void IMB_freeImBuf(ImBuf *ibuf)
void UI_draw_safe_areas(uint pos, const rctf *rect, const float title_aspect[2], const float action_aspect[2])
void UI_GetThemeColor3fv(int colorid, float col[3])
void UI_GetThemeColorShade3fv(int colorid, int offset, float col[3])
void UI_ThemeClearColor(int colorid)
void UI_view2d_curRect_validate(View2D *v2d)
void UI_view2d_scale_get_inverse(const View2D *v2d, float *r_x, float *r_y)
char char char char void UI_view2d_text_cache_add(View2D *v2d, float x, float y, const char *str, size_t str_len, const unsigned char col[4])
void UI_view2d_view_restore(const bContext *C)
void UI_view2d_text_cache_draw(ARegion *region)
void UI_view2d_totRect_set(View2D *v2d, int width, int height)
void UI_view2d_view_ortho(const View2D *v2d)
View2D * UI_view2d_fromcontext(const bContext *C)
void UI_view2d_region_to_view(const View2D *v2d, float x, float y, float *r_view_x, float *r_view_y) ATTR_NONNULL()
void UI_view2d_view_to_region(const View2D *v2d, float x, float y, int *r_region_x, int *r_region_y) ATTR_NONNULL()
@ WM_JOB_TYPE_RENDER_PREVIEW
@ WM_GIZMOMAP_DRAWSTEP_2D
void ED_annotation_draw_2dimage(const bContext *C)
void ED_annotation_draw_view2d(const bContext *C, bool onlyv2d)
BMesh const char void * data
ATTR_WARN_UNUSED_RESULT const BMVert * v
BPy_StructRNA * depsgraph
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
constexpr int64_t first() const
constexpr int64_t last(const int64_t n=0) const
void add_quad(float x1, float y1, float x2, float y2, const uchar color[4])
void add_line(float x1, float y1, float x2, float y2, const uchar color[4])
void add_wire_quad(float x1, float y1, float x2, float y2, const uchar color[4])
struct @242053044010324116347033273112253060004051364061::@373043131300025057314200265134167265161140142363 attr_id
TEX_TEMPLATE DataVec texture(T, FltCoord, float=0.0f) RET
BLI_INLINE float fb(float length, float L)
ccl_device_inline float2 mask(const MaskType mask, const float2 a)
static bool sequencer_calc_scopes(const SpaceSeq &space_sequencer, const ColorManagedViewSettings &view_settings, const ColorManagedDisplaySettings &display_settings, const ImBuf &ibuf, const int timeline_frame)
blender::IndexRange strip_text_selection_range_get(const TextVars *data)
static Strip * special_seq_update
ImBuf * make_waveform_view_from_ibuf(const ImBuf *ibuf)
static void preview_draw_texture_to_linear(GPUTexture &texture, const char *texture_colorspace_name, const bool predivide, const rctf &position, const rctf &texture_coord)
static void sequencer_draw_scopes(const SpaceSeq &space_sequencer, ARegion ®ion)
ImBuf * make_vectorscope_view_from_ibuf(const ImBuf *ibuf)
static void preview_draw_end(const bContext *C)
static void preview_draw_color_render_begin(ARegion ®ion)
static void text_selection_draw(const bContext *C, const Strip *strip, uint pos)
static void draw_cursor_2d(const ARegion *region, const blender::float2 &cursor)
static void text_edit_draw_box(const bContext *C, const Strip *strip, uint pos)
static void sequencer_preview_clear()
bool sequencer_text_editing_active_poll(bContext *C)
static void preview_draw_overlay_begin(ARegion ®ion)
static GPUTexture * create_texture(const ImBuf &ibuf)
void special_preview_clear()
static rctf preview_get_reference_position(const SpaceSeq &space_sequencer, const Editing &editing, const ARegion ®ion)
static void text_edit_draw(const bContext *C)
static void draw_registered_callbacks(const bContext *C, ARegion ®ion)
static rctf preview_get_full_position(const ARegion ®ion)
static void sequencer_preview_draw_empty(ARegion ®ion)
static bool preview_draw_begin(const bContext *C, const RenderData &render_data, const ColorManagedViewSettings &view_settings, const ColorManagedDisplaySettings &display_settings, ARegion ®ion)
static rctf preview_get_full_texture_coord()
static void preview_draw_texture_simple(GPUTexture &texture, const rctf &position, const rctf &texture_coord)
void sequencer_preview_region_draw(const bContext *C, ARegion *region)
static void sequencer_preview_draw_overlays(const bContext *C, const wmWindowManager &wm, const Scene *scene, const SpaceSeq &space_sequencer, const Editing &editing, const ColorManagedViewSettings &view_settings, const ColorManagedDisplaySettings &display_settings, ARegion ®ion, GPUTexture *current_texture, GPUTexture *reference_texture, const ImBuf *overlay_ibuf, const int timeline_frame)
static void draw_histogram(ARegion ®ion, const ScopeHistogram &hist, SeqQuadsBatch &quads, const rctf &area)
static void draw_waveform_graticule(ARegion *region, SeqQuadsBatch &quads, const rctf &area)
static void sequencer_stop_running_jobs(const bContext *C, Scene *scene)
ImBuf * make_sep_waveform_view_from_ibuf(const ImBuf *ibuf)
bool sequencer_draw_get_transform_preview(SpaceSeq *sseq, Scene *scene)
ImBuf * make_zebra_view_from_ibuf(const ImBuf *ibuf, float perc)
static void preview_draw_all_image_overlays(const bContext *C, const Scene *scene, const Editing &editing, const int timeline_frame)
static void draw_vectorscope_graticule(ARegion *region, SeqQuadsBatch &quads, const rctf &area)
static rctf preview_get_reference_texture_coord(const SpaceSeq &space_sequencer, const Editing &editing)
static void text_edit_draw_cursor(const bContext *C, const Strip *strip, uint pos)
Strip * strip_under_mouse_get(const Scene *scene, const View2D *v2d, const int mval[2])
Strip * special_preview_get()
static ImBuf * sequencer_make_scope(const ColorManagedViewSettings &view_settings, const ColorManagedDisplaySettings &display_settings, const ImBuf &ibuf, ImBuf *(*make_scope_fn)(const ImBuf *ibuf))
bool sequencer_view_preview_only_poll(const bContext *C)
void sequencer_special_update_set(Strip *strip)
void special_preview_set(bContext *C, const int mval[2])
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)
bool check_show_imbuf(const SpaceSeq &sseq)
static void sequencer_draw_gpencil_overlay(const bContext *C)
blender::int2 strip_text_cursor_offset_to_position(const TextVarsRuntime *text, int cursor_offset)
int sequencer_draw_get_transform_preview_frame(const Scene *scene)
static void sequencer_preview_draw_color_render(const SpaceSeq &space_sequencer, const Editing &editing, ARegion ®ion, const ImBuf *current_ibuf, GPUTexture *current_texture, const ImBuf *reference_ibuf, GPUTexture *reference_texture)
static blender::float2 coords_region_view_align(const View2D *v2d, const blender::float2 coords)
static int get_reference_frame_offset(const Editing &editing, const RenderData &render_data)
ImBuf * sequencer_ibuf_get(const bContext *C, int timeline_frame, const char *viewname)
static blender::float2 rgb_to_uv_scaled(const blender::float3 &rgb)
static void strip_draw_image_origin_and_outline(const bContext *C, Strip *strip, bool is_active_seq)
static const char * get_texture_colorspace_name(const ImBuf &ibuf)
static void sequencer_display_size(const RenderData &render_data, float r_viewrect[2])
static bool is_cursor_visible(const SpaceSeq &sseq)
VecBase< T, 3 > transform_point(const CartesianBasis &basis, const VecBase< T, 3 > &v)
void render_new_render_data(Main *bmain, Depsgraph *depsgraph, Scene *scene, int rectx, int recty, int preview_render_size, int for_render, RenderData *r_context)
int time_right_handle_frame_get(const Scene *scene, const Strip *strip)
Array< float2 > image_transform_final_quad_get(const Scene *scene, const Strip *strip)
ImBuf * render_give_ibuf(const RenderData *context, float timeline_frame, int chanshown)
ListBase * channels_displayed_get(const Editing *ed)
bool prefetch_need_redraw(const bContext *C, Scene *scene)
float3x3 image_transform_matrix_get(const Scene *scene, const Strip *strip)
double rendersize_to_scale_factor(int render_size)
int time_left_handle_frame_get(const Scene *, const Strip *strip)
Strip * select_active_get(const Scene *scene)
bool effects_can_render_text(const Strip *strip)
float2 image_transform_origin_offset_pixelspace_get(const Scene *scene, const Strip *strip)
VectorSet< Strip * > query_rendered_strips(const Scene *scene, ListBase *channels, ListBase *seqbase, const int timeline_frame, const int displayed_channel)
float2 image_preview_unit_to_px(const Scene *scene, const float2 co_src)
ImBuf * render_give_ibuf_direct(const RenderData *context, float timeline_frame, Strip *strip)
blender::VecBase< uint8_t, 4 > uchar4
VecBase< int32_t, 2 > int2
VecBase< float, 2 > float2
MatBase< float, 4, 2 > float4x2
MatBase< float, 3, 3 > float3x3
VecBase< float, 3 > float3
ARegionRuntimeHandle * runtime
const ColorSpace * colorspace
const ColorSpace * colorspace
ImBufFloatBuffer float_buffer
ImBufByteBuffer byte_buffer
ColorManagedViewSettings view_settings
struct DisplaySafeAreas safe_areas
ColorManagedDisplaySettings display_settings
SpaceSeq_Runtime * runtime
struct SequencerPreviewOverlay preview_overlay
struct wmTimer * animtimer
static constexpr float FLOAT_VAL_MAX
bool is_float_hist() const
static constexpr float FLOAT_VAL_MIN
void calc_from_ibuf(const ImBuf *ibuf)
static constexpr float VECSCOPE_V_SCALE
const ImBuf * reference_ibuf
static constexpr float VECSCOPE_U_SCALE
ImBuf * sep_waveform_ibuf
Vector< CharInfo > characters
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(wmWindowManager *wm, const void *owner, int job_type)