143 for (marker =
markers->first; marker; marker = marker->
next) {
149 if ((side ==
'B') || (side ==
'L' && marker->
frame < cfra) ||
150 (side ==
'R' && marker->
frame >= cfra)) {
176 float dist, min_dist = 1000000;
179 for (marker =
markers->first; marker; marker = marker->
next) {
182 if (dist < min_dist) {
214 for (marker =
markers->first; marker; marker = marker->
next) {
241 switch (
area->spacetype) {
283 fabsf(nearest_marker->
frame - frame_at_position);
296 if ((only_sel) && ((marker->
flag &
SELECT) == 0)) {
301 for (ce = lb->
first; ce; ce = ce->
next) {
349 for (marker =
markers->first; marker; marker = marker->
next) {
384 for (marker =
markers->first; marker; marker = marker->
next) {
405 printf(
"No markers list to print debug for\n");
409 printf(
"List of markers follows: -----\n");
411 for (marker =
markers->first; marker; marker = marker->
next) {
413 "\t'%s' on %d at %p with %u\n", marker->
name, marker->
frame, (
void *)marker, marker->
flag);
416 printf(
"End of list ------------------\n");
439 const char *name = marker->
name;
440 uchar final_text_color[4];
444 #ifdef DURIAN_CAMERA_SWITCH
447 name = camera->
id.
name + 2;
449 final_text_color[3] = 100;
465 float viewport_size[4];
485 return (marker->
flag &
ACTIVE) ? ICON_PMARKER_ACT :
486 (marker->
flag &
SELECT) ? ICON_PMARKER_SEL : ICON_PMARKER;
488 #ifdef DURIAN_CAMERA_SWITCH
490 return (marker->
flag &
SELECT) ? ICON_OUTLINER_OB_CAMERA : ICON_CAMERA_DATA;
493 return (marker->
flag &
SELECT) ? ICON_MARKER_HLT : ICON_MARKER;
499 uchar line_color[4], text_color[4];
542 if (marker->
frame < frame_range[0]) {
545 if (marker->
frame > frame_range[1]) {
561 float font_width_max = (10 *
UI_DPI_FAC) / xscale;
563 r_range[1] = v2d->
cur.
xmax + font_width_max;
578 rctf markers_region_rect;
589 int clip_frame_range[2];
596 if ((marker->flag &
SELECT) == 0) {
598 draw_marker(fstyle, marker, cfra, marker->frame * xscale, flag, region->
winy);
603 if (marker->flag &
SELECT) {
605 draw_marker(fstyle, marker, cfra, marker->frame * xscale, flag, region->
winy);
676 for (marker =
markers->first; marker; marker = marker->
next) {
677 if (marker->
frame == frame) {
683 for (marker =
markers->first; marker; marker = marker->
next) {
689 marker->
frame = frame;
702 ot->
name =
"Add Time Marker";
771 for (totmark = 0, marker = mm->
markers->
first; marker; marker = marker->
next) {
788 if (totmark == 1 && selmarker) {
819 for (totmark = 0, marker =
markers->first; marker; marker = marker->
next) {
841 for (
a = 0, marker =
markers->first; marker; marker = marker->
next) {
903 #ifdef DURIAN_CAMERA_SWITCH
923 #ifdef DURIAN_CAMERA_SWITCH
964 bool handled =
false;
965 switch (event->
type) {
995 if (event->
x != mm->
evtx) {
1041 ot->
name =
"Move Time Marker";
1056 RNA_def_int(
ot->
srna,
"frames", 0, INT_MIN, INT_MAX,
"Frames",
"", INT_MIN, INT_MAX);
1058 ot->
srna,
"tweak", 0,
"Tweak",
"Operator has been activated using a tweak event");
1093 for (marker =
markers->first; marker; marker = marker->
next) {
1104 #ifdef DURIAN_CAMERA_SWITCH
1136 ot->
name =
"Duplicate Time Marker";
1138 ot->
idname =
"MARKER_OT_duplicate";
1151 RNA_def_int(
ot->
srna,
"frames", 0, INT_MIN, INT_MAX,
"Frames",
"", INT_MIN, INT_MAX);
1167 bool wait_to_deselect_others)
1173 wait_to_deselect_others =
false;
1177 for (marker =
markers->first; marker; marker = marker->
next) {
1178 if (marker->
frame == frame) {
1180 marker_selected = marker->
next;
1186 if (wait_to_deselect_others && marker_selected) {
1191 if (extend ==
false) {
1197 if (marker->
frame == frame) {
1211 #ifdef DURIAN_CAMERA_SWITCH
1224 for (marker =
markers->first; marker; marker = marker->
next) {
1225 if (marker->
frame == cfra) {
1231 for (marker =
markers->first; marker; marker = marker->
next) {
1233 if (marker->
frame == cfra) {
1254 bContext *
C,
const int mval[2],
bool extend,
bool camera,
bool wait_to_deselect_others)
1281 const bool wait_to_deselect_others =
RNA_boolean_get(op->
ptr,
"wait_to_deselect_others");
1282 bool camera =
false;
1283 #ifdef DURIAN_CAMERA_SWITCH
1307 ot->
name =
"Select Time Marker";
1323 #ifdef DURIAN_CAMERA_SWITCH
1359 if (tweak && over_marker) {
1400 ot->
name =
"Marker Box Select";
1401 ot->
description =
"Select all time markers using box selection";
1402 ot->
idname =
"MARKER_OT_select_box";
1420 ot->
srna,
"tweak", 0,
"Tweak",
"Operator has been activated using a tweak event");
1445 ot->
name =
"(De)select all Markers";
1447 ot->
idname =
"MARKER_OT_select_all";
1467 bool changed =
false;
1473 for (marker =
markers->first; marker; marker = nmarker) {
1474 nmarker = marker->
next;
1496 ot->
name =
"Delete Markers";
1542 ot->
name =
"Rename Marker";
1560 "New name for marker");
1566 "Ensure that new name is unique within collection of markers");
1579 if (scene_to ==
NULL) {
1595 for (marker =
markers->first; marker; marker = marker->
next) {
1612 ot->
name =
"Make Links to Scene";
1614 ot->
idname =
"MARKER_OT_make_links_scene";
1631 #ifdef DURIAN_CAMERA_SWITCH
1685 ot->
name =
"Bind Camera to Markers";
1686 ot->
description =
"Bind the selected camera to a marker on the current frame";
1687 ot->
idname =
"MARKER_OT_camera_bind";
1690 ot->
exec = ed_marker_camera_bind_exec;
1712 #ifdef DURIAN_CAMERA_SWITCH
typedef float(TangentPoint)[2]
struct ScrArea * CTX_wm_area(const bContext *C)
struct Scene * CTX_data_scene(const bContext *C)
struct ViewLayer * CTX_data_view_layer(const bContext *C)
struct Object * CTX_data_active_object(const bContext *C)
struct bScreen * CTX_wm_screen(const bContext *C)
struct SpaceLink * CTX_wm_space_data(const bContext *C)
struct ARegion * CTX_wm_region(const bContext *C)
struct Main * CTX_data_main(const bContext *C)
struct ToolSettings * CTX_data_tool_settings(const bContext *C)
enum eContextObjectMode CTX_data_mode_enum(const bContext *C)
void IDP_FreePropertyContent(struct IDProperty *prop)
struct IDProperty * IDP_CopyProperty(const struct IDProperty *prop) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
void BKE_view_layer_base_deselect_all(struct ViewLayer *view_layer)
struct Base * BKE_view_layer_base_find(struct ViewLayer *view_layer, struct Object *ob)
void BKE_report(ReportList *reports, ReportType type, const char *message)
bool BKE_scene_camera_switch_update(struct Scene *scene)
void BKE_screen_view3d_scene_sync(struct bScreen *screen, struct Scene *scene)
BLI_INLINE bool BLI_listbase_is_empty(const struct ListBase *lb)
void BLI_addhead(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
#define LISTBASE_FOREACH(type, var, list)
void BLI_freelinkN(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
#define LISTBASE_CIRCULAR_FORWARD_BEGIN(lb, lb_iter, lb_init)
#define LISTBASE_CIRCULAR_FORWARD_END(lb, lb_iter, lb_init)
void BLI_addtail(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void BLI_insertlinkbefore(struct ListBase *listbase, void *vnextlink, void *vnewlink) ATTR_NONNULL(1)
void * BLI_findlink(const struct ListBase *listbase, int number) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
MINLINE int round_fl_to_int(float a)
MINLINE void copy_v4_v4_uchar(unsigned char r[4], const unsigned char a[4])
bool BLI_rctf_isect_x(const rctf *rect, const float x)
BLI_INLINE int BLI_rcti_size_x(const struct rcti *rct)
BLI_INLINE float BLI_rctf_size_x(const struct rctf *rct)
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 SET_FLAG_FROM_TEST(value, test, flag)
void DEG_id_tag_update(struct ID *id, int flag)
@ SACTION_POSEMARKERS_SHOW
Object is a sort of wrapper for general info.
void ED_object_base_select(struct Base *base, eObjectSelect_Mode mode)
void ED_object_base_activate(struct bContext *C, struct Base *base)
void ED_area_status_text(ScrArea *area, const char *str)
#define SEL_OP_USE_PRE_DESELECT(sel_op)
void apply_keyb_grid(int shift, int ctrl, float *val, float fac1, float fac2, float fac3, int invert)
void GPU_matrix_pop(void)
void GPU_matrix_scale_2f(float x, float y)
void GPU_matrix_push(void)
@ GPU_SHADER_2D_LINE_DASHED_UNIFORM_COLOR
@ GPU_SHADER_2D_UNIFORM_COLOR
void GPU_blend(eGPUBlend blend)
void GPU_viewport_size_get_f(float coords[4])
Read Guarded memory(de)allocation.
const EnumPropertyItem * RNA_scene_itemf(struct bContext *C, struct PointerRNA *ptr, struct PropertyRNA *prop, bool *r_free)
void UI_fontstyle_draw_simple(const struct uiFontStyle *fs, float x, float y, const char *str, const uchar col[4])
void UI_icon_draw(float x, float y, int icon_id)
@ TH_TIME_SCRUB_BACKGROUND
@ TH_TIME_MARKER_LINE_SELECTED
void UI_GetThemeColor4ubv(int colorid, unsigned char col[4])
void UI_view2d_scale_get(const struct View2D *v2d, float *r_x, float *r_y)
#define UI_MARKER_MARGIN_Y
struct View2D * UI_view2d_fromcontext(const struct bContext *C)
void UI_view2d_region_to_view_rctf(const struct View2D *v2d, const struct rctf *rect_src, struct rctf *rect_dst) ATTR_NONNULL()
float UI_view2d_region_to_view_x(const struct View2D *v2d, float x)
float UI_view2d_scale_get_x(const struct View2D *v2d)
static int ed_marker_box_select_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static ListBase * context_get_markers(Scene *scene, ScrArea *area)
static void ed_marker_duplicate_apply(bContext *C)
void ED_markers_make_cfra_list(ListBase *markers, ListBase *lb, short only_sel)
void ED_keymap_marker(wmKeyConfig *keyconf)
static void ed_marker_move_update_header(bContext *C, wmOperator *op)
static void ed_marker_move_exit(bContext *C, wmOperator *op)
static int ed_marker_move_modal(bContext *C, wmOperator *op, const wmEvent *event)
static void marker_color_get(const TimeMarker *marker, uchar *r_text_color, uchar *r_line_color)
static void add_marker_to_cfra_elem(ListBase *lb, TimeMarker *marker, short only_sel)
static int ed_marker_rename_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static bool ED_operator_markers_region_active(bContext *C)
static int ed_marker_select_exec(bContext *C, wmOperator *op)
int ED_markers_post_apply_transform(ListBase *markers, Scene *scene, int mode, float value, char side)
static void MARKER_OT_move(wmOperatorType *ot)
static int ed_marker_make_links_scene_exec(bContext *C, wmOperator *op)
static void select_marker_camera_switch(bContext *C, bool camera, bool extend, ListBase *markers, int cfra)
static void draw_markers_background(rctf *rect)
static void MARKER_OT_add(wmOperatorType *ot)
static int ed_marker_delete_exec(bContext *C, wmOperator *UNUSED(op))
static void draw_marker_line(const uchar *color, int xpos, int ymin, int ymax)
void ED_markers_get_minmax(ListBase *markers, short sel, float *r_first, float *r_last)
static int ed_marker_add_exec(bContext *C, wmOperator *UNUSED(op))
static bool ed_markers_poll_selected_no_locked_markers(bContext *C)
static int ed_marker_duplicate_exec(bContext *C, wmOperator *op)
TimeMarker * ED_markers_get_first_selected(ListBase *markers)
static int ed_marker_rename_exec(bContext *C, wmOperator *op)
int ED_markers_find_nearest_marker_time(ListBase *markers, float x)
static void get_marker_region_rect(View2D *v2d, rctf *rect)
ListBase * ED_context_get_markers(const bContext *C)
static void deselect_markers(ListBase *markers)
static bool ed_markers_poll_selected_markers(bContext *C)
static bool ed_marker_move_init(bContext *C, wmOperator *op)
TimeMarker * ED_markers_find_nearest_marker(ListBase *markers, float x)
static void MARKER_OT_duplicate(wmOperatorType *ot)
static void ed_marker_move_apply(bContext *C, wmOperator *op)
struct MarkerMove MarkerMove
static void draw_marker(const uiFontStyle *fstyle, TimeMarker *marker, int cfra, int xpos, int flag, int region_height)
void ED_operatortypes_marker(void)
static void MARKER_OT_delete(wmOperatorType *ot)
static bool region_position_is_over_marker(View2D *v2d, ListBase *markers, float region_x)
static void MARKER_OT_select_all(wmOperatorType *ot)
static void MARKER_OT_rename(wmOperatorType *ot)
static int ed_marker_move_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static void MARKER_OT_make_links_scene(wmOperatorType *ot)
static void MARKER_OT_select(wmOperatorType *ot)
static void draw_marker_name(const uchar *text_color, const uiFontStyle *fstyle, TimeMarker *marker, float marker_x, float text_y)
static bool marker_is_in_frame_range(TimeMarker *marker, const int frame_range[2])
static bool ed_markers_poll_markers_exist(bContext *C)
static int ed_marker_box_select_exec(bContext *C, wmOperator *op)
static void MARKER_OT_select_box(wmOperatorType *ot)
static int ed_marker_move_exec(bContext *C, wmOperator *op)
static int ed_marker_select(bContext *C, const int mval[2], bool extend, bool camera, bool wait_to_deselect_others)
static bool ed_marker_move_use_time(MarkerMove *mm)
void ED_markers_deselect_all(ListBase *markers, int action)
ListBase * ED_animcontext_get_markers(const bAnimContext *ac)
static int ed_marker_duplicate_invoke(bContext *C, wmOperator *op, const wmEvent *event)
void debug_markers_print_list(ListBase *markers)
static int select_timeline_marker_frame(ListBase *markers, int frame, bool extend, bool wait_to_deselect_others)
static int marker_get_icon_id(TimeMarker *marker, int flag)
static void ed_marker_move_cancel(bContext *C, wmOperator *op)
static void get_marker_clip_frame_range(View2D *v2d, float xscale, int r_range[2])
static int ed_marker_select_all_exec(bContext *C, wmOperator *op)
void ED_markers_draw(const bContext *C, int flag)
const vector< Marker > & markers
void(* MEM_freeN)(void *vmemh)
void *(* MEM_dupallocN)(const void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
static void area(int d1, int d2, int e1, int e2, float weights[2])
void RNA_string_set(PointerRNA *ptr, const char *name, const char *value)
void RNA_int_set(PointerRNA *ptr, const char *name, int value)
PropertyRNA * RNA_struct_find_property(PointerRNA *ptr, const char *identifier)
void RNA_string_get(PointerRNA *ptr, const char *name, char *value)
int RNA_int_get(PointerRNA *ptr, const char *name)
bool RNA_boolean_get(PointerRNA *ptr, const char *name)
int RNA_enum_get(PointerRNA *ptr, const char *name)
PropertyRNA * RNA_def_boolean(StructOrFunctionRNA *cont_, const char *identifier, bool default_value, const char *ui_name, const char *ui_description)
PropertyRNA * RNA_def_string(StructOrFunctionRNA *cont_, const char *identifier, const char *default_value, int maxlen, const char *ui_name, const char *ui_description)
void RNA_def_property_flag(PropertyRNA *prop, PropertyFlag flag)
PropertyRNA * RNA_def_int(StructOrFunctionRNA *cont_, const char *identifier, int default_value, int hardmin, int hardmax, const char *ui_name, const char *ui_description, int softmin, int softmax)
void RNA_def_enum_funcs(PropertyRNA *prop, EnumPropertyItemFunc itemfunc)
PropertyRNA * RNA_def_enum(StructOrFunctionRNA *cont_, const char *identifier, const EnumPropertyItem *items, int default_value, const char *ui_name, const char *ui_description)
const EnumPropertyItem DummyRNA_NULL_items[]
struct ToolSettings * toolsettings
int(* invoke)(struct bContext *, struct wmOperator *, const struct wmEvent *) ATTR_WARN_UNUSED_RESULT
int(* modal)(struct bContext *, struct wmOperator *, const struct wmEvent *) ATTR_WARN_UNUSED_RESULT
bool(* poll)(struct bContext *) ATTR_WARN_UNUSED_RESULT
void(* cancel)(struct bContext *, struct wmOperator *)
int(* exec)(struct bContext *, struct wmOperator *) ATTR_WARN_UNUSED_RESULT
struct ReportList * reports
__forceinline const avxb select(const avxb &m, const avxb &t, const avxb &f)
bool WM_event_is_modal_tweak_exit(const wmEvent *event, int tweak_event)
wmEventHandler_Op * WM_event_add_modal_handler(bContext *C, wmOperator *op)
void WM_event_add_notifier(const bContext *C, uint type, void *reference)
void WM_gesture_box_cancel(bContext *C, wmOperator *op)
int WM_gesture_box_invoke(bContext *C, wmOperator *op, const wmEvent *event)
int WM_gesture_box_modal(bContext *C, wmOperator *op, const wmEvent *event)
wmKeyMap * WM_keymap_ensure(wmKeyConfig *keyconf, const char *idname, int spaceid, int regionid)
void WM_operator_properties_gesture_box(wmOperatorType *ot)
void WM_operator_properties_select_operation_simple(wmOperatorType *ot)
void WM_operator_properties_generic_select(wmOperatorType *ot)
void WM_operator_properties_select_all(wmOperatorType *ot)
void WM_operator_properties_border_to_rctf(struct wmOperator *op, rctf *rect)
void WM_operatortype_append(void(*opfunc)(wmOperatorType *))
int WM_operator_confirm(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
int WM_operator_props_popup_confirm(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
int WM_generic_select_invoke(bContext *C, wmOperator *op, const wmEvent *event)
int WM_menu_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
int WM_generic_select_modal(bContext *C, wmOperator *op, const wmEvent *event)