124 short is_break =
G.is_break;
131 render_size = scene->
r.
size / 100.0;
137 rectx = roundf(render_size * scene->
r.
xsch);
138 recty = roundf(render_size * scene->
r.
ysch);
144 context.is_playing = screen->
animtimer !=
nullptr;
145 context.is_scrubbing = screen->
scrubbing;
180 G.is_break = is_break;
195 scope = make_scope_fn(display_ibuf);
204 r_viewrect[0] = float(render_data.
xsch);
205 r_viewrect[1] = float(render_data.
ysch);
207 r_viewrect[0] *= render_data.
xasp / render_data.
yasp;
242 float viewport_size[4];
281 Mask *
mask = SEQ_active_mask_get(scene);
285 float aspx = 1.0f, aspy = 1.0f;
348 return texture_coord;
374 const float xmin = v2d.
tot.
xmin;
375 const float ymin = v2d.
tot.
ymin;
412 return texture_coord;
420 if (hist.
data.is_empty()) {
425 uchar col_grid[4] = {128, 128, 128, 128};
426 float grid_x_0 = area.
xmin;
427 float grid_x_1 = area.
xmax;
432 grid_x_0 = area.
xmin + (area.
xmax - area.
xmin) * ratio_0;
433 grid_x_1 = area.
xmin + (area.
xmax - area.
xmin) * ratio_1;
437 float text_scale_x, text_scale_y;
440 for (
int line = 0; line <= 4; line++) {
441 float val = float(line) / 4;
442 float x = grid_x_0 + (grid_x_1 - grid_x_0) * val;
449 float text_width, text_height;
451 text_width *= text_scale_x;
452 text_height *= text_scale_y;
454 &v2d,
x - text_width / 2, area.
ymax - text_height * 1.3f, buf, buf_len, col_grid);
458 uchar col_border[4] = {64, 64, 64, 128};
464 for (
int ch = 0; ch < 3; ++ch) {
468 uchar col_line[4] = {32, 32, 32, 255};
469 uchar col_area[4] = {64, 64, 64, 128};
473 float x_scale = (area.
xmax - area.
xmin) / hist.
data.size();
474 float yb = area.
ymin;
475 for (
int bin = 0; bin < hist.
data.size() - 1; bin++) {
476 float x0 = area.
xmin + (bin + 0.5f) * x_scale;
477 float x1 = area.
xmin + (bin + 1.5f) * x_scale;
479 float y0 = area.
ymin + hist.
data[bin][ch] * y_scale;
480 float y1 = area.
ymin + hist.
data[bin + 1][ch] * y_scale;
481 quads.
add_quad(x0, yb, x0, y0, x1, yb, x1, y1, col_area);
482 quads.
add_line(x0, y0, x1, y1, col_line);
504 const float lines[3] = {0.1f, 0.7f, 0.9f};
505 uchar col_grid[4] = {160, 64, 64, 128};
506 const float x0 = area.
xmin;
507 const float x1 = area.
xmax;
509 for (
int i = 0;
i < 3;
i++) {
517 uchar col_border[4] = {64, 64, 64, 128};
526 const float skin_rad =
DEG2RADF(123.0f);
531 const float radius = ((
w < h) ?
w : h) * 0.5f;
534 constexpr int circle_delta = 6;
535 constexpr int num_circle_points = 360 / circle_delta;
536 float2 circle_pos[num_circle_points];
537 float3 circle_col[num_circle_points];
538 for (
int i = 0;
i < num_circle_points;
i++) {
555 constexpr float alpha_f = 0.8f;
556 constexpr uchar alpha_b =
uchar(alpha_f * 255.0f);
557 const uchar4 col_center(50, 50, 50, alpha_b);
559 uchar4 col1(0, 0, 0, alpha_b);
560 uchar4 col2(0, 0, 0, alpha_b);
561 uchar4 col3(0, 0, 0, alpha_b);
565 constexpr float mul_background = 0.2f;
566 for (
int i = 0;
i < num_circle_points;
i += 2) {
568 int idx2 = (
i + 1) % num_circle_points;
569 int idx3 = (
i + 2) % num_circle_points;
570 float2 pt1 = center + circle_pos[idx1] * radius;
571 float2 pt2 = center + circle_pos[idx2] * radius;
572 float2 pt3 = center + circle_pos[idx3] * radius;
573 float3 rgb1 = circle_col[idx1] * mul_background;
574 float3 rgb2 = circle_col[idx2] * mul_background;
575 float3 rgb3 = circle_col[idx3] * mul_background;
594 const float outer_radius = radius * 1.02f;
595 for (
int i = 0;
i < num_circle_points;
i++) {
597 int idx2 = (
i + 1) % num_circle_points;
598 float2 pt1a = center + circle_pos[idx1] * radius;
599 float2 pt2a = center + circle_pos[idx2] * radius;
600 float2 pt1b = center + circle_pos[idx1] * outer_radius;
601 float2 pt2b = center + circle_pos[idx2] * outer_radius;
602 float3 rgb1 = circle_col[idx1];
603 float3 rgb2 = circle_col[idx2];
607 pt1a.x, pt1a.y, pt1b.x, pt1b.y, pt2a.x, pt2a.y, pt2b.x, pt2b.y, col1, col1, col2, col2);
614 const uchar4 col_grid(128, 128, 128, 128);
617 quads.
add_line(center.x - radius, center.y, center.x + radius, center.y, col_grid);
618 quads.
add_line(center.x, center.y - radius, center.x, center.y + radius, col_grid);
621 for (
int j = 1; j < 5; j++) {
622 float r = radius * j * 0.2f;
623 for (
int i = 0;
i < num_circle_points;
i++) {
625 int idx2 = (
i + 1) % num_circle_points;
626 float2 pt1 = center + circle_pos[idx1] * r;
627 float2 pt2 = center + circle_pos[idx2] * r;
628 quads.
add_line(pt1.x, pt1.y, pt2.x, pt2.y, col_grid);
633 const float3 primaries[6] = {
641 const char *names =
"RYGCBM";
644 char buf[2] = {
'M', 0};
645 float text_scale_x, text_scale_y;
647 float text_width, text_height;
649 text_width *= text_scale_x;
650 text_height *= text_scale_y;
652 const uchar4 col_target(128, 128, 128, 192);
653 const float delta = radius * 0.01f;
654 for (
int i = 0;
i < 6;
i++) {
655 float3 safe = primaries[
i] * 0.75f;
661 pos.x + delta * 1.2f + text_width / 4,
662 pos.y - text_height / 2,
669 const uchar4 col_tone(255, 102, 0, 128);
672 center.x +
cosf(skin_rad) * radius,
673 center.y +
sinf(skin_rad) * radius,
688 float vecscope_aspect = 1.0f;
692 vecscope_aspect = width / height;
693 if (vecscope_aspect >= 1.0f) {
711 uchar black[4] = {0, 0, 0, 255};
719 ImBuf *scope_image =
nullptr;
737 if (scope_image !=
nullptr) {
746 "seq_display_buf", scope_image->
x, scope_image->
y, 1,
format, usage,
nullptr);
805 const int timeline_frame)
817 switch (space_sequencer.
mainb) {
823 display_ibuf, &view_settings, &display_settings);
847 display_ibuf, &view_settings, &display_settings);
867 if (last_seq ==
nullptr) {
890 return preview_frame;
982 const int line_start = selection_start.y;
983 const int line_end = selection_end.y;
985 for (
int line_index = line_start; line_index <= line_end; line_index++) {
990 if (line_index == selection_start.y) {
991 character_start = line.
characters[selection_start.x];
993 if (line_index == selection_end.y) {
994 character_end = line.
characters[selection_end.x];
997 const float line_y = character_start.
position.y +
text->font_descender;
1000 const float view_aspect = scene->
r.
xasp / scene->
r.
yasp;
1003 {character_start.
position.x, line_y},
1004 {character_start.
position.x, line_y +
text->line_height},
1013 selection_quad[
i] += view_offs;
1015 selection_quad[
i].x *= view_aspect;
1029 coords_view.x = std::round(coords_view.x);
1030 coords_view.y = std::round(coords_view.y);
1033 v2d, coords_view.x, coords_view.y, &coords_region_aligned.x, &coords_region_aligned.y);
1034 return coords_region_aligned;
1044 const float view_aspect = scene->
r.
xasp / scene->
r.
yasp;
1047 data->cursor_offset);
1048 const float cursor_width = 10;
1050 text->lines[cursor_position.y].characters[cursor_position.x].position;
1053 rcti text_boundbox =
text->text_boundbox;
1054 text_boundbox.
xmax -= cursor_width +
U.pixelsize;
1055 text_boundbox.
xmin +=
U.pixelsize;
1057 cursor_coords.x = std::clamp(
1058 cursor_coords.x,
float(text_boundbox.
xmin),
float(text_boundbox.
xmax));
1062 {cursor_coords.x, cursor_coords.y},
1063 {cursor_coords.x, cursor_coords.y +
text->line_height},
1064 {cursor_coords.x + cursor_width, cursor_coords.y +
text->line_height},
1065 {cursor_coords.x + cursor_width, cursor_coords.y},
1073 cursor_quad[
i] += descender_offs + view_offs;
1075 cursor_quad[
i].x *= view_aspect;
1091 const float view_aspect = scene->
r.
xasp / scene->
r.
yasp;
1094 {float(
text->text_boundbox.xmin), float(
text->text_boundbox.ymin)},
1095 {float(
text->text_boundbox.xmin), float(
text->text_boundbox.ymax)},
1096 {float(
text->text_boundbox.xmax), float(
text->text_boundbox.ymax)},
1097 {float(
text->text_boundbox.xmax), float(
text->text_boundbox.ymin)},
1110 box_quad[
i] += view_offs;
1112 box_quad[
i].x *= view_aspect;
1175 if (
G.is_rendering) {
1185 viewport, &view_settings, &display_settings, render_data.
dither_intensity);
1215 float col[4] = {0, 0, 0, 0};
1238 const rctf &position,
1239 const rctf &texture_coord)
1264 const char *texture_colorspace_name,
1265 const bool predivide,
1266 const rctf &position,
1267 const rctf &texture_coord)
1296 const int timeline_frame)
1300 scene, channels, editing.
seqbasep, timeline_frame, 0);
1302 for (
Strip *strip : strips) {
1335 float original_proj[4][4];
1355 const float f5 = 0.25f;
1356 const float f10 = 0.5f;
1357 const float f20 = 1.0f;
1359 const float red[3] = {1.0f, 0.0f, 0.0f};
1360 const float white[3] = {1.0f, 1.0f, 1.0f};
1362 const int segments = 16;
1364 for (
int i = 0;
i < segments + 1;
i++) {
1365 float angle = float(2 *
M_PI) * (float(
i) / float(segments));
1374 float crosshair_color[3];
1428 GPUTexture *
texture =
nullptr;
1443 BLI_assert_msg(0,
"Incompatible number of channels for float buffer in sequencer");
1448 "seq_display_buf", ibuf.
x, ibuf.
y, 1, texture_format, texture_usage,
nullptr);
1453 "seq_display_buf", ibuf.
x, ibuf.
y, 1,
GPU_RGBA8, texture_usage,
nullptr);
1496 const ImBuf *current_ibuf,
1497 GPUTexture *current_texture,
1498 const ImBuf *reference_ibuf,
1499 GPUTexture *reference_texture)
1503 if (current_texture) {
1510 *current_texture, texture_colorspace, predivide, position, texture_coord);
1513 if (reference_texture) {
1520 *reference_texture, texture_colorspace, predivide, position, texture_coord);
1546 GPUTexture *current_texture,
1547 GPUTexture *reference_texture,
1548 const ImBuf *overlay_ibuf,
1549 const int timeline_frame)
1556 bool has_scopes =
false;
1559 space_sequencer, view_settings, display_settings, *overlay_ibuf, timeline_frame))
1573 if (current_texture) {
1578 if (reference_texture) {
1605 if (!has_scopes && overlay_ibuf) {
1649 int xoffset = rect->
xmin +
U.widget_unit;
1650 int yoffset = rect->
ymax;
1655 float text_color[4] = {1, 1, 1, 1}, shadow_color[4] = {0, 0, 0, 0.8f};
1694 const bool need_current_frame = !(draw_frame_overlay && (space_sequencer.
overlay_frame_type ==
1696 const bool need_reference_frame = draw_frame_overlay && space_sequencer.
overlay_frame_type !=
1699 int timeline_frame = render_data.
cfra;
1708 GPUTexture *current_texture =
nullptr;
1709 GPUTexture *reference_texture =
nullptr;
1714 ImBuf *current_ibuf =
nullptr;
1715 ImBuf *reference_ibuf =
nullptr;
1716 if (need_current_frame) {
1719 if (show_imbuf && current_ibuf) {
1723 if (need_reference_frame) {
1726 C, timeline_frame + offset, view_names[space_sequencer.
multiview_eye]);
1727 if (show_imbuf && reference_ibuf) {
1733 ImBuf *overlay_ibuf = need_current_frame ? current_ibuf : reference_ibuf;
1757 sequencer_draw_maskedit(
C, scene, region, sseq);
1761 if (current_texture) {
1764 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)
const char * IMB_colormanagement_role_colorspace_name_get(int role)
void IMB_colormanagement_finish_glsl_draw()
@ COLOR_ROLE_DEFAULT_BYTE
@ COLOR_ROLE_SCENE_LINEAR
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 @322267210234315156101051232377144105261061020300::@131245035034130001365207177247226171236063071202 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)
Editing * editing_get(const Scene *scene)
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)