72 int height = (frame == cfra) ? 22 : 10;
73 int x = (frame - sfra) * framelen;
108 BLI_assert(marker_index < plane_track->markersnr);
139 BLI_assert(marker_index < plane_track->markersnr);
149 int *points, totseg, i,
a;
150 float sfra =
SFRA, efra =
EFRA, framelen = region->
winx / (efra - sfra + 1);
171 if (act_track || act_plane_track) {
172 for (i = sfra - clip->
start_frame + 1,
a = 0; i <= efra - clip->start_frame + 1; i++) {
176 while (
a < markersnr) {
179 if (marker_framenr >= i) {
183 if (
a < markersnr - 1 &&
222 for (i = sfra,
a = 0; i <= efra; i++) {
226 if (cameras[
a].framenr == i) {
230 if (cameras[
a].framenr > i) {
280 bool full_redraw =
false;
282 if (tracking->
stats) {
288 strcpy(
str,
"Locked");
293 float fill_color[4] = {0.0f, 0.0f, 0.0f, 0.6f};
324 bool use_filter =
true;
353 x,
y, ibuf, &frame, zoomx *
width / ibuf->
x, zoomy *
height / ibuf->
y);
383 float viewport_size[4];
438 int point_index =
count;
440 for (
int i = 0; i <
count; ++i) {
444 point_index += direction;
445 current_frame += direction;
456 uint position_attribute,
457 const int start_point,
458 const int num_points)
460 if (num_points == 0) {
464 for (
int i = 0; i < num_points; i++) {
472 uint position_attribute,
473 const int start_point,
474 const int num_points)
477 for (
int i = 0; i < num_points; i++) {
487 uint position_attribute,
488 const int start_point,
489 const int num_points)
491 if (num_points < 2) {
495 for (
int i = 0; i < num_points; i++) {
504 #define MAX_STATIC_PATH 64
523 if (num_points_before == 0 && num_points_after == 0) {
527 int num_all_points = num_points_before + num_points_after;
529 if (num_points_before != 0 && num_points_after != 0) {
533 const int path_start_index =
count - num_points_before + 1;
534 const int path_center_index =
count;
575 if (path != path_static) {
581 #undef MAX_STATIC_PATH
587 const float marker_pos[2],
593 bool show_search =
false;
698 const float marker_pos[2],
706 bool show_search =
false;
707 float col[3], scol[3];
723 float viewport_size[4];
875 float len_sq = FLT_MAX;
877 for (
int i = 0; i < 4; i++) {
878 int next = (i + 1) % 4;
880 len_sq =
min_ff(cur_len, len_sq);
883 return sqrtf(len_sq);
887 float x,
float y,
float dx,
float dy,
int outline,
const float px[2],
uint pos)
903 float x,
float y,
float dx,
float dy,
int outline,
const float px[2],
uint pos)
925 const float marker_pos[2],
933 float dx, dy, patdx, patdy, searchdx, searchdy;
935 float col[3], scol[3], px[2], side;
982 float pat_min[2], pat_max[2];
991 for (
int i = 0; i < 4; i++) {
1023 const float marker_pos[2],
1030 char str[128] = {0},
state[64] = {0};
1031 float dx = 0.0f, dy = 0.0f, fontsize,
pos[3];
1039 BLF_size(fontid, 11.0f *
U.pixelsize,
U.dpi);
1062 float pat_min[2], pat_max[2];
1069 pos[0] = (marker_pos[0] + dx) *
width;
1076 pos[1] =
pos[1] * zoomy - fontsize;
1079 strcpy(
state,
"disabled");
1082 strcpy(
state,
"estimated");
1085 strcpy(
state,
"tracked");
1088 strcpy(
state,
"keyframed");
1125 const float start_corner[2],
1126 const float end_corner[2],
1134 direction[0] *=
width;
1138 direction[0] /=
width;
1146 gl_matrix[0][0] = matrix[0][0];
1147 gl_matrix[0][1] = matrix[0][1];
1148 gl_matrix[0][2] = 0.0f;
1149 gl_matrix[0][3] = matrix[0][2];
1151 gl_matrix[1][0] = matrix[1][0];
1152 gl_matrix[1][1] = matrix[1][1];
1153 gl_matrix[1][2] = 0.0f;
1154 gl_matrix[1][3] = matrix[1][2];
1156 gl_matrix[2][0] = 0.0f;
1157 gl_matrix[2][1] = 0.0f;
1158 gl_matrix[2][2] = 1.0f;
1159 gl_matrix[2][3] = 0.0f;
1161 gl_matrix[3][0] = matrix[2][0];
1162 gl_matrix[3][1] = matrix[2][1];
1163 gl_matrix[3][2] = 0.0f;
1164 gl_matrix[3][3] = matrix[2][2];
1175 if (image ==
NULL) {
1182 uchar *display_buffer;
1194 if (display_buffer) {
1195 float frame_corners[4][2] = {{0.0f, 0.0f}, {1.0f, 0.0f}, {1.0f, 1.0f}, {0.0f, 1.0f}};
1196 float perspective_matrix[3][3];
1197 float gl_matrix[4][4];
1198 bool transparent =
false;
1200 frame_corners, plane_marker->
corners, perspective_matrix);
1266 bool is_active_track,
1272 bool is_selected_track = (plane_track->
flag &
SELECT) != 0;
1273 const bool has_image = plane_track->
image !=
NULL &&
1275 const bool draw_plane_quad = !has_image || plane_track->
image_opacity == 0.0f;
1277 float color[3], selected_color[3];
1283 if (draw_outline ==
false) {
1287 if (draw_plane_quad || is_selected_track) {
1293 float viewport_size[4];
1299 if (is_selected_track) {
1303 if (draw_plane_quad) {
1304 const bool stipple = !draw_outline && tiny;
1305 const bool thick = draw_outline && !tiny;
1333 if (!draw_outline) {
1370 if (is_selected_track) {
1380 for (
int i = 0; i < 4; i++) {
1408 bool is_active_track,
1413 sc,
scene, plane_track, plane_marker, is_active_track,
false,
width,
height);
1420 bool is_active_track,
1451 float *marker_pos =
NULL, *fp, *active_pos =
NULL, cur_pos[2];
1474 for (plane_track = plane_tracks_base->
first; plane_track; plane_track = plane_track->
next) {
1477 sc,
scene, plane_track, framenr, plane_track == active_plane_track,
width,
height);
1485 track = tracksbase->
first;
1495 track = track->
next;
1500 marker_pos =
MEM_callocN(
sizeof(
float[2]) *
count,
"draw_tracking_tracks marker_pos");
1502 track = tracksbase->
first;
1511 if (track == act_track) {
1519 track = track->
next;
1525 track = tracksbase->
first;
1531 track = track->
next;
1541 track = tracksbase->
first;
1561 track = track->
next;
1566 track = tracksbase->
first;
1570 int act = track == act_track;
1587 track = track->
next;
1606 float pos[4], vec[4], mat[4][4], aspy;
1613 track = tracksbase->
first;
1630 if (npos[0] >= 0.0f && npos[1] >= 0.0f && npos[0] <=
width && npos[1] <=
height * aspy) {
1657 track = track->
next;
1667 track = tracksbase->
first;
1674 int act = track == act_track;
1686 track = track->
next;
1707 float tpos[2], grid[11][11][2];
1712 float offsx = 0.0f, offsy = 0.0f;
1737 float val[4][2], idx[4][2];
1740 for (
int a = 0;
a < 4;
a++) {
1742 val[
a][
a % 2] = FLT_MAX;
1745 val[
a][
a % 2] = -FLT_MAX;
1749 for (
int i = 0; i <= n; i++) {
1750 for (
int j = 0; j <= n; j++) {
1751 if (i == 0 || j == 0 || i == n || j == n) {
1752 const float pos[2] = {dx * j, dy * i};
1755 for (
int a = 0;
a < 4;
a++) {
1759 ok = tpos[
a % 2] < val[
a][
a % 2];
1762 ok = tpos[
a % 2] > val[
a][
a % 2];
1777 for (
int a = 0;
a < 4;
a++) {
1778 const float pos[2] = {idx[
a][0] * dx, idx[
a][1] * dy};
1785 dx = (
max[0] -
min[0]) / n;
1786 dy = (
max[1] -
min[1]) / n;
1788 for (
int i = 0; i <= n; i++) {
1789 for (
int j = 0; j <= n; j++) {
1790 const float pos[2] = {
min[0] + dx * j,
min[1] + dy * i};
1794 grid[i][j][0] /=
width;
1795 grid[i][j][1] /=
height * aspy;
1801 for (
int i = 0; i <= n; i++) {
1804 for (
int j = 0; j <= n; j++) {
1811 for (
int j = 0; j <= n; j++) {
1814 for (
int i = 0; i <= n; i++) {
1833 layer = layer->
next;
1848 for (
int i = 0; i < stroke->
totpoints - 1; i++) {
1849 float pos[2], npos[2], dpos[2],
len;
1856 npos[1] = (stroke->
points[i + 1].
y + offsy) *
height * aspy;
1872 for (
int j = 0; j <=
steps; j++) {
1889 stroke = stroke->
next;
1892 frame = frame->
next;
1895 layer = layer->
next;
1922 float translation[2];
1924 float smat[4][4], ismat[4][4];
1941 smat[0][0] = 1.0f /
width;
1942 smat[1][1] = 1.0f /
height;
2003 if (is_track_source) {
typedef float(TangentPoint)[2]
void ED_draw_imbuf_ctx(const struct bContext *C, struct ImBuf *ibuf, float x, float y, bool use_filter, float zoom_x, float zoom_y)
struct Scene * CTX_data_scene(const bContext *C)
struct SpaceClip * CTX_wm_space_clip(const bContext *C)
void BKE_image_release_ibuf(struct Image *ima, struct ImBuf *ibuf, void *lock)
bool BKE_image_has_ibuf(struct Image *ima, struct ImageUser *iuser)
struct ImBuf * BKE_image_acquire_ibuf(struct Image *ima, struct ImageUser *iuser, void **r_lock)
void BKE_movieclip_get_cache_segments(struct MovieClip *clip, struct MovieClipUser *user, int *r_totseg, int **r_points)
struct MovieTrackingPlaneTrack * BKE_tracking_plane_track_get_active(struct MovieTracking *tracking)
void BKE_tracking_stabilization_data_to_mat4(int width, int height, float aspect, float translation[2], float scale, float angle, float mat[4][4])
struct ListBase * BKE_tracking_get_active_tracks(struct MovieTracking *tracking)
#define MARKER_VISIBLE(sc, track, marker)
struct MovieTrackingPlaneMarker * BKE_tracking_plane_marker_get(struct MovieTrackingPlaneTrack *plane_track, int framenr)
struct MovieTrackingTrack * BKE_tracking_track_get_active(struct MovieTracking *tracking)
struct MovieTrackingReconstruction * BKE_tracking_get_active_reconstruction(struct MovieTracking *tracking)
struct MovieTrackingMarker * BKE_tracking_marker_get_exact(struct MovieTrackingTrack *track, int framenr)
struct ListBase * BKE_tracking_get_active_plane_tracks(struct MovieTracking *tracking)
void BKE_tracking_distort_v2(struct MovieTracking *tracking, int image_width, int image_height, const float co[2], float r_co[2])
#define TRACK_VIEW_SELECTED(sc, track)
void BKE_tracking_marker_pattern_minmax(const struct MovieTrackingMarker *marker, float min[2], float max[2])
void BKE_tracking_get_projection_matrix(struct MovieTracking *tracking, struct MovieTrackingObject *object, int framenr, int winx, int winy, float mat[4][4])
struct MovieTrackingMarker * BKE_tracking_marker_get(struct MovieTrackingTrack *track, int framenr)
void BKE_tracking_undistort_v2(struct MovieTracking *tracking, int image_width, int image_height, const float co[2], float r_co[2])
void BKE_tracking_homography_between_two_quads(float reference_corners[4][2], float corners[4][2], float H[3][3])
struct MovieTrackingObject * BKE_tracking_object_get_active(struct MovieTracking *tracking)
void BLF_draw(int fontid, const char *str, size_t len) ATTR_NONNULL(2)
void BLF_size(int fontid, int size, int dpi)
int BLF_height_max(int fontid) ATTR_WARN_UNUSED_RESULT
void BLF_color4ubv(int fontid, const unsigned char rgba[4])
void BLF_position(int fontid, float x, float y, float z)
MINLINE int min_ii(int a, int b)
MINLINE float min_ff(float a, float b)
int isect_point_quad_v2(const float p[2], const float v1[2], const float v2[2], const float v3[2], const float v4[2])
void mul_v4_m4v4(float r[4], const float M[4][4], const float v[4])
void unit_m4(float m[4][4])
bool invert_m4_m4(float R[4][4], const float A[4][4])
void mul_m4_v3(const float M[4][4], float r[3])
#define mul_m4_series(...)
MINLINE float len_squared_v2(const float v[2]) ATTR_WARN_UNUSED_RESULT
MINLINE float len_squared_v2v2(const float a[2], const float b[2]) ATTR_WARN_UNUSED_RESULT
MINLINE void sub_v2_v2(float r[2], const float a[2])
MINLINE void mul_v2_fl(float r[2], float f)
MINLINE void copy_v2_v2(float r[2], const float a[2])
MINLINE void copy_v3_v3(float r[3], const float a[3])
void minmax_v2v2_v2(float min[2], float max[2], const float vec[2])
MINLINE void add_v2_v2(float r[2], const float a[2])
MINLINE void add_v2_v2v2(float r[2], const float a[2], const float b[2])
MINLINE void sub_v2_v2v2(float r[2], const float a[2], const float b[2])
MINLINE void zero_v2(float r[2])
MINLINE float len_v2v2(const float a[2], const float b[2]) ATTR_WARN_UNUSED_RESULT
MINLINE void mul_v3_v3fl(float r[3], const float a[3], float f)
MINLINE float normalize_v2(float r[2])
MINLINE void mul_v2_v2fl(float r[2], const float a[2], float f)
void BLI_rctf_init(struct rctf *rect, float xmin, float xmax, float ymin, float ymax)
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()
#define INIT_MINMAX2(min, max)
#define UNUSED_VARS_NDEBUG(...)
@ MCLIP_PROXY_RENDER_UNDISTORT
@ MCLIP_PROXY_RENDER_SIZE_100
@ MCLIP_PROXY_RENDER_SIZE_FULL
@ TRACKING_2D_STABILIZATION
int ED_space_clip_get_clip_frame_number(struct SpaceClip *sc)
void ED_clip_point_undistorted_pos(struct SpaceClip *sc, const float co[2], float r_co[2])
struct ImBuf * ED_space_clip_get_buffer(struct SpaceClip *sc)
void ED_space_clip_get_zoom(struct SpaceClip *sc, struct ARegion *region, float *zoomx, float *zoomy)
void ED_space_clip_get_size(struct SpaceClip *sc, int *width, int *height)
struct ImBuf * ED_space_clip_get_stable_buffer(struct SpaceClip *sc, float loc[2], float *scale, float *angle)
struct MovieClip * ED_space_clip_get_clip(struct SpaceClip *sc)
void ED_mask_draw_frames(struct Mask *mask, struct ARegion *region, const int cfra, const int sfra, const int efra)
void ED_region_info_draw(struct ARegion *region, const char *text, float fill_color[4], const bool full_redraw)
void ED_region_grid_draw(struct ARegion *region, float zoomx, float zoomy, float x0, float y0)
void ED_region_cache_draw_background(struct ARegion *region)
void ED_region_cache_draw_curfra_label(const int framenr, const float x, const float y)
void ED_region_cache_draw_cached_segments(struct ARegion *region, const int num_segments, const int *points, const int sfra, const int efra)
void ED_region_image_metadata_draw(int x, int y, struct ImBuf *ibuf, const rctf *frame, float zoomx, float zoomy)
_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 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 y
void GPU_matrix_pop(void)
void GPU_matrix_translate_2fv(const float vec[2])
void GPU_matrix_scale_2f(float x, float y)
#define GPU_matrix_mul(x)
void GPU_matrix_push(void)
void GPU_matrix_translate_2f(float x, float y)
@ GPU_SHADER_2D_LINE_DASHED_UNIFORM_COLOR
@ GPU_SHADER_3D_IMAGE_MODULATE_ALPHA
@ GPU_SHADER_2D_UNIFORM_COLOR
void GPU_blend(eGPUBlend blend)
void GPU_line_width(float width)
void GPU_logic_op_xor_set(bool enable)
void GPU_point_size(float size)
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 IMB_display_buffer_release(void *cache_handle)
unsigned char * IMB_display_buffer_acquire(struct ImBuf *ibuf, const struct ColorManagedViewSettings *view_settings, const struct ColorManagedDisplaySettings *display_settings, void **cache_handle)
void IMB_freeImBuf(struct ImBuf *ibuf)
Contains defines and structs used throughout the imbuf module.
Read Guarded memory(de)allocation.
void UI_GetThemeColor3fv(int colorid, float col[3])
@ TH_PATH_KEYFRAME_BEFORE
void UI_GetThemeColorShade4ubv(int colorid, int offset, unsigned char col[4])
void UI_FontThemeColor(int fontid, int colorid)
void UI_view2d_view_to_region_fl(const struct View2D *v2d, float x, float y, float *r_region_x, float *r_region_y) ATTR_NONNULL()
void UI_view2d_view_to_region(const struct View2D *v2d, float x, float y, int *r_region_x, int *r_region_y) ATTR_NONNULL()
void ED_annotation_draw_2dimage(const bContext *C)
void ED_annotation_draw_view2d(const bContext *C, bool onlyv2d)
static void draw_marker_areas(SpaceClip *sc, MovieTrackingTrack *track, MovieTrackingMarker *marker, const float marker_pos[2], int width, int height, int act, int sel, const uint shdr_pos)
void clip_draw_cache_and_notes(const bContext *C, SpaceClip *sc, ARegion *region)
static void draw_movieclip_notes(SpaceClip *sc, ARegion *region)
static void draw_movieclip_cache(SpaceClip *sc, ARegion *region, MovieClip *clip, Scene *scene)
static void track_colors(MovieTrackingTrack *track, int act, float col[3], float scol[3])
static void draw_movieclip_muted(ARegion *region, int width, int height, float zoomx, float zoomy)
static void draw_marker_outline(SpaceClip *sc, MovieTrackingTrack *track, MovieTrackingMarker *marker, const float marker_pos[2], int width, int height, uint position)
static void draw_track_path_points(const TrackPathPoint *path, uint position_attribute, const int start_point, const int num_points)
static void draw_plane_marker(SpaceClip *sc, Scene *scene, MovieTrackingPlaneTrack *plane_track, MovieTrackingPlaneMarker *plane_marker, bool is_active_track, int width, int height)
static void getArrowEndPoint(const int width, const int height, const float zoom, const float start_corner[2], const float end_corner[2], float end_point[2])
struct TrachPathPoint TrackPathPoint
static void draw_marker_slide_triangle(float x, float y, float dx, float dy, int outline, const float px[2], uint pos)
static void draw_track_path_keyframe_points(const TrackPathPoint *path, uint position_attribute, const int start_point, const int num_points)
void clip_draw_main(const bContext *C, SpaceClip *sc, ARegion *region)
static void draw_marker_texts(SpaceClip *sc, MovieTrackingTrack *track, MovieTrackingMarker *marker, const float marker_pos[2], int act, int width, int height, float zoomx, float zoomy)
static int track_to_path_segment(SpaceClip *sc, MovieTrackingTrack *track, int direction, TrackPathPoint *path)
static void draw_plane_marker_ex(SpaceClip *sc, Scene *scene, MovieTrackingPlaneTrack *plane_track, MovieTrackingPlaneMarker *plane_marker, bool is_active_track, bool draw_outline, int width, int height)
static void draw_plane_track(SpaceClip *sc, Scene *scene, MovieTrackingPlaneTrack *plane_track, int framenr, bool is_active_track, int width, int height)
static void marker_to_path_point(SpaceClip *sc, const MovieTrackingTrack *track, const MovieTrackingMarker *marker, TrackPathPoint *point)
@ PATH_POINT_FLAG_KEYFRAME
static void draw_distortion(SpaceClip *sc, ARegion *region, MovieClip *clip, int width, int height, float zoomx, float zoomy)
static float get_shortest_pattern_side(MovieTrackingMarker *marker)
static void plane_track_colors(bool is_active, float color[3], float selected_color[3])
static bool generic_track_is_marker_enabled(MovieTrackingTrack *track, MovieTrackingPlaneTrack *plane_track, int marker_index)
static void draw_tracking_tracks(SpaceClip *sc, Scene *scene, ARegion *region, MovieClip *clip, int width, int height, float zoomx, float zoomy)
static void draw_track_path(SpaceClip *sc, MovieClip *UNUSED(clip), MovieTrackingTrack *track)
static int generic_track_get_marker_framenr(MovieTrackingTrack *track, MovieTrackingPlaneTrack *plane_track, int marker_index)
static void draw_keyframe(int frame, int cfra, int sfra, float framelen, int width, uint pos)
static void draw_movieclip_buffer(const bContext *C, SpaceClip *sc, ARegion *region, ImBuf *ibuf, int width, int height, float zoomx, float zoomy)
void clip_draw_grease_pencil(bContext *C, int onlyv2d)
static void draw_stabilization_border(SpaceClip *sc, ARegion *region, int width, int height, float zoomx, float zoomy)
static void draw_marker_slide_square(float x, float y, float dx, float dy, int outline, const float px[2], uint pos)
static void draw_track_path_lines(const TrackPathPoint *path, uint position_attribute, const int start_point, const int num_points)
static int generic_track_get_markersnr(MovieTrackingTrack *track, MovieTrackingPlaneTrack *plane_track)
static void homogeneous_2d_to_gl_matrix(float matrix[3][3], float gl_matrix[4][4])
static void draw_plane_marker_image(Scene *scene, MovieTrackingPlaneTrack *plane_track, MovieTrackingPlaneMarker *plane_marker)
static bool generic_track_is_marker_keyframed(MovieTrackingTrack *track, MovieTrackingPlaneTrack *plane_track, int marker_index)
static void draw_marker_slide_zones(SpaceClip *sc, MovieTrackingTrack *track, MovieTrackingMarker *marker, const float marker_pos[2], int outline, int sel, int act, int width, int height, uint pos)
static void draw_plane_marker_outline(SpaceClip *sc, Scene *scene, MovieTrackingPlaneTrack *plane_track, MovieTrackingPlaneMarker *plane_marker, int width, int height)
const ProjectiveReconstruction & reconstruction
void(* MEM_freeN)(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
void *(* MEM_mallocN)(size_t len, const char *str)
struct MovieTracking tracking
float pattern_corners[4][2]
struct MovieTrackingPlaneTrack * next
MovieTrackingPlaneMarker * markers
MovieTrackingMarker * markers
struct MovieTrackingTrack * next
MovieTrackingStats * stats
MovieTrackingStabilization stabilization
MovieTrackingCamera camera
ColorManagedViewSettings view_settings
ColorManagedDisplaySettings display_settings
struct MovieClipUser user
ccl_device_inline float3 ceil(const float3 &a)