diff options
Diffstat (limited to 'source/blender/editors/animation/anim_markers.c')
-rw-r--r-- | source/blender/editors/animation/anim_markers.c | 214 |
1 files changed, 107 insertions, 107 deletions
diff --git a/source/blender/editors/animation/anim_markers.c b/source/blender/editors/animation/anim_markers.c index c9e96e35149..624c6e9f5de 100644 --- a/source/blender/editors/animation/anim_markers.c +++ b/source/blender/editors/animation/anim_markers.c @@ -85,8 +85,8 @@ static ListBase *context_get_markers(Scene *scene, ScrArea *sa) if (sa) { if (sa->spacetype == SPACE_ACTION) { SpaceAction *saction = (SpaceAction *)sa->spacedata.first; - - /* local markers can only be shown when there's only a single active action to grab them from + + /* local markers can only be shown when there's only a single active action to grab them from * - flag only takes effect when there's an action, otherwise it can get too confusing? */ if (ELEM(saction->mode, SACTCONT_ACTION, SACTCONT_SHAPEKEY) && (saction->action)) { @@ -96,7 +96,7 @@ static ListBase *context_get_markers(Scene *scene, ScrArea *sa) } } } - + /* default to using the scene's markers */ return &scene->markers; } @@ -135,7 +135,7 @@ int ED_markers_post_apply_transform(ListBase *markers, Scene *scene, int mode, f TimeMarker *marker; float cfra = (float)CFRA; int changed_tot = 0; - + /* sanity check - no markers, or locked markers */ if ((scene->toolsettings->lock_markers) || (markers == NULL)) @@ -170,7 +170,7 @@ int ED_markers_post_apply_transform(ListBase *markers, Scene *scene, int mode, f } } } - + return changed_tot; } @@ -182,18 +182,18 @@ TimeMarker *ED_markers_find_nearest_marker(ListBase *markers, float x) { TimeMarker *marker, *nearest = NULL; float dist, min_dist = 1000000; - + if (markers) { for (marker = markers->first; marker; marker = marker->next) { dist = fabsf((float)marker->frame - x); - + if (dist < min_dist) { min_dist = dist; nearest = marker; } } } - + return nearest; } @@ -209,7 +209,7 @@ void ED_markers_get_minmax(ListBase *markers, short sel, float *first, float *la { TimeMarker *marker; float min, max; - + /* sanity check */ //printf("markers = %p - %p, %p\n", markers, markers->first, markers->last); if (ELEM(NULL, markers, markers->first, markers->last)) { @@ -228,7 +228,7 @@ void ED_markers_get_minmax(ListBase *markers, short sel, float *first, float *la max = (float)marker->frame; } } - + /* set the min/max values */ *first = min; *last = max; @@ -240,16 +240,16 @@ void ED_markers_get_minmax(ListBase *markers, short sel, float *first, float *la static void add_marker_to_cfra_elem(ListBase *lb, TimeMarker *marker, short only_sel) { CfraElem *ce, *cen; - + /* should this one only be considered if it is selected? */ if ((only_sel) && ((marker->flag & SELECT) == 0)) return; - + /* insertion sort - try to find a previous cfra elem */ for (ce = lb->first; ce; ce = ce->next) { if (ce->cfra == marker->frame) { /* do because of double keys */ - if (marker->flag & SELECT) + if (marker->flag & SELECT) ce->sel = marker->flag; return; } @@ -257,7 +257,7 @@ static void add_marker_to_cfra_elem(ListBase *lb, TimeMarker *marker, short only break; } } - + cen = MEM_callocN(sizeof(CfraElem), "add_to_cfra_elem"); if (ce) BLI_insertlinkbefore(lb, ce, cen); else BLI_addtail(lb, cen); @@ -273,7 +273,7 @@ static void add_marker_to_cfra_elem(ListBase *lb, TimeMarker *marker, short only void ED_markers_make_cfra_list(ListBase *markers, ListBase *lb, short only_sel) { TimeMarker *marker; - + if (lb) { /* Clear the list first, since callers have no way of knowing * whether this terminated early otherwise. This may lead @@ -284,11 +284,11 @@ void ED_markers_make_cfra_list(ListBase *markers, ListBase *lb, short only_sel) else { return; } - + if (markers == NULL) { return; } - + for (marker = markers->first; marker; marker = marker->next) add_marker_to_cfra_elem(lb, marker, only_sel); } @@ -299,37 +299,37 @@ void ED_markers_make_cfra_list(ListBase *markers, ListBase *lb, short only_sel) TimeMarker *ED_markers_get_first_selected(ListBase *markers) { TimeMarker *marker; - + if (markers) { for (marker = markers->first; marker; marker = marker->next) { if (marker->flag & SELECT) return marker; } } - + return NULL; } /* --------------------------------- */ -/* Print debugging prints of list of markers +/* Print debugging prints of list of markers * BSI's: do NOT make static or put in if-defs as "unused code". That's too much trouble when we need to use for quick debugging! */ void debug_markers_print_list(ListBase *markers) { TimeMarker *marker; - + if (markers == NULL) { printf("No markers list to print debug for\n"); return; } - + printf("List of markers follows: -----\n"); - + for (marker = markers->first; marker; marker = marker->next) { printf("\t'%s' on %d at %p with %u\n", marker->name, marker->frame, (void *)marker, marker->flag); } - + printf("End of list ------------------\n"); } @@ -344,7 +344,7 @@ static void draw_marker_name( /* minimal y coordinate which wouldn't be occluded by scroll */ int min_y = 17.0f * UI_DPI_FAC; - + if (marker->flag & SELECT) { UI_GetThemeColor4ubv(TH_TEXT_HI, text_col); x = xpos + 4.0f * UI_DPI_FAC; @@ -422,7 +422,7 @@ static void draw_marker( immUnbindProgram(); } - + /* 5 px to offset icon to align properly, space / pixels corrects for zoom */ if (flag & DRAW_MARKERS_LOCAL) { icon_id = (marker->flag & ACTIVE) ? ICON_PMARKER_ACT : @@ -439,11 +439,11 @@ static void draw_marker( icon_id = (marker->flag & SELECT) ? ICON_MARKER_HLT : ICON_MARKER; } - + UI_icon_draw(xpos - 0.45f * UI_DPI_ICON_SIZE, yoffs + UI_DPI_ICON_SIZE, icon_id); - + glDisable(GL_BLEND); - + /* and the marker name too, shifted slightly to the top-right */ #ifdef DURIAN_CAMERA_SWITCH if (marker->camera) { @@ -530,7 +530,7 @@ void ED_markers_draw(const bContext *C, int flag) } /* ************************ Marker Wrappers API ********************* */ -/* These wrappers allow marker operators to function within the confines +/* These wrappers allow marker operators to function within the confines * of standard animation editors, such that they can coexist with the * primary operations of those editors. */ @@ -541,11 +541,11 @@ void ED_markers_draw(const bContext *C, int flag) static int ed_markers_poll_selected_markers(bContext *C) { ListBase *markers = ED_context_get_markers(C); - + /* first things first: markers can only exist in timeline views */ if (ED_operator_animview_active(C) == 0) return 0; - + /* check if some marker is selected */ return ED_markers_get_first_selected(markers) != NULL; } @@ -572,19 +572,19 @@ static int ed_markers_poll_markers_exist(bContext *C) { ListBase *markers = ED_context_get_markers(C); ToolSettings *ts = CTX_data_tool_settings(C); - + if (ts->lock_markers) return 0; /* first things first: markers can only exist in timeline views */ if (ED_operator_animview_active(C) == 0) return 0; - + /* list of markers must exist, as well as some markers in it! */ return (markers && markers->first); } - -/* ------------------------ */ + +/* ------------------------ */ /** * Second-tier invoke() callback that performs context validation before running the @@ -637,30 +637,30 @@ static int ed_marker_add_exec(bContext *C, wmOperator *UNUSED(op)) ListBase *markers = ED_context_get_markers(C); TimeMarker *marker; int frame = CTX_data_scene(C)->r.cfra; - + if (markers == NULL) return OPERATOR_CANCELLED; - + /* prefer not having 2 markers at the same place, * though the user can move them to overlap once added */ for (marker = markers->first; marker; marker = marker->next) { - if (marker->frame == frame) + if (marker->frame == frame) return OPERATOR_CANCELLED; } - + /* deselect all */ for (marker = markers->first; marker; marker = marker->next) marker->flag &= ~SELECT; - + marker = MEM_callocN(sizeof(TimeMarker), "TimeMarker"); marker->flag = SELECT; marker->frame = frame; BLI_snprintf(marker->name, sizeof(marker->name), "F_%02d", frame); // XXX - temp code only BLI_addtail(markers, marker); - + WM_event_add_notifier(C, NC_SCENE | ND_MARKERS, NULL); WM_event_add_notifier(C, NC_ANIMATION | ND_MARKERS, NULL); - + return OPERATOR_FINISHED; } @@ -670,19 +670,19 @@ static void MARKER_OT_add(wmOperatorType *ot) ot->name = "Add Time Marker"; ot->description = "Add a new time marker"; ot->idname = "MARKER_OT_add"; - + /* api callbacks */ ot->exec = ed_marker_add_exec; ot->invoke = ed_markers_opwrap_invoke; ot->poll = ED_operator_animview_active; - + /* flags */ ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; } /* ************************** transform markers *************************** */ -/* operator state vars used: +/* operator state vars used: * frs: delta movement * * functions: @@ -820,12 +820,12 @@ static bool ed_marker_move_init(bContext *C, wmOperator *op) static void ed_marker_move_exit(bContext *C, wmOperator *op) { MarkerMove *mm = op->customdata; - + /* free data */ MEM_freeN(mm->oldframe); MEM_freeN(op->customdata); op->customdata = NULL; - + /* clear custom header prints */ ED_area_headerprint(CTX_wm_area(C), NULL); } @@ -834,14 +834,14 @@ static int ed_marker_move_invoke(bContext *C, wmOperator *op, const wmEvent *eve { if (ed_marker_move_init(C, op)) { MarkerMove *mm = op->customdata; - + mm->evtx = event->x; mm->firstx = event->x; mm->event_type = event->type; - + /* add temp handler */ WM_event_add_modal_handler(C, op); - + /* reset frs delta */ RNA_int_set(op->ptr, "frames", 0); @@ -849,7 +849,7 @@ static int ed_marker_move_invoke(bContext *C, wmOperator *op, const wmEvent *eve return OPERATOR_RUNNING_MODAL; } - + return OPERATOR_CANCELLED; } @@ -869,7 +869,7 @@ static void ed_marker_move_apply(bContext *C, wmOperator *op) MarkerMove *mm = op->customdata; TimeMarker *marker; int a, offs; - + offs = RNA_int_get(op->ptr, "frames"); for (a = 0, marker = mm->markers->first; marker; marker = marker->next) { if (marker->flag & SELECT) { @@ -880,7 +880,7 @@ static void ed_marker_move_apply(bContext *C, wmOperator *op) WM_event_add_notifier(C, NC_SCENE | ND_MARKERS, NULL); WM_event_add_notifier(C, NC_ANIMATION | ND_MARKERS, NULL); - + #ifdef DURIAN_CAMERA_SWITCH /* so we get view3d redraws */ BKE_scene_camera_switch_update(scene); @@ -1002,17 +1002,17 @@ static void MARKER_OT_move(wmOperatorType *ot) ot->name = "Move Time Marker"; ot->description = "Move selected time marker(s)"; ot->idname = "MARKER_OT_move"; - + /* api callbacks */ ot->exec = ed_marker_move_exec; ot->invoke = ed_marker_move_invoke_wrapper; ot->modal = ed_marker_move_modal; ot->poll = ed_markers_poll_selected_no_locked_markers; ot->cancel = ed_marker_move_cancel; - + /* flags */ ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO | OPTYPE_BLOCKING | OPTYPE_GRAB_CURSOR; - + /* rna storage */ RNA_def_int(ot->srna, "frames", 0, INT_MIN, INT_MAX, "Frames", "", INT_MIN, INT_MAX); } @@ -1040,8 +1040,8 @@ static void ed_marker_duplicate_apply(bContext *C) { ListBase *markers = ED_context_get_markers(C); TimeMarker *marker, *newmarker; - - if (markers == NULL) + + if (markers == NULL) return; /* go through the list of markers, duplicate selected markers and add duplicated copies @@ -1051,13 +1051,13 @@ static void ed_marker_duplicate_apply(bContext *C) if (marker->flag & SELECT) { /* unselect selected marker */ marker->flag &= ~SELECT; - + /* create and set up new marker */ newmarker = MEM_callocN(sizeof(TimeMarker), "TimeMarker"); newmarker->flag = SELECT; newmarker->frame = marker->frame; BLI_strncpy(newmarker->name, marker->name, sizeof(marker->name)); - + #ifdef DURIAN_CAMERA_SWITCH newmarker->camera = marker->camera; #endif @@ -1073,9 +1073,9 @@ static int ed_marker_duplicate_exec(bContext *C, wmOperator *op) { ed_marker_duplicate_apply(C); ed_marker_move_exec(C, op); /* assumes frs delta set */ - + return OPERATOR_FINISHED; - + } static int ed_marker_duplicate_invoke(bContext *C, wmOperator *op, const wmEvent *event) @@ -1095,17 +1095,17 @@ static void MARKER_OT_duplicate(wmOperatorType *ot) ot->name = "Duplicate Time Marker"; ot->description = "Duplicate selected time marker(s)"; ot->idname = "MARKER_OT_duplicate"; - + /* api callbacks */ ot->exec = ed_marker_duplicate_exec; ot->invoke = ed_marker_duplicate_invoke_wrapper; ot->modal = ed_marker_move_modal; ot->poll = ed_markers_poll_selected_no_locked_markers; ot->cancel = ed_marker_move_cancel; - + /* flags */ ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; - + /* rna storage */ RNA_def_int(ot->srna, "frames", 0, INT_MIN, INT_MAX, "Frames", "", INT_MIN, INT_MAX); } @@ -1152,18 +1152,18 @@ static int ed_marker_select(bContext *C, const wmEvent *event, bool extend, bool View2D *v2d = UI_view2d_fromcontext(C); float viewx; int x, cfra; - + if (markers == NULL) return OPERATOR_PASS_THROUGH; x = event->x - ar->winrct.xmin; - + viewx = UI_view2d_region_to_view_x(v2d, x); - + cfra = ED_markers_find_nearest_marker_time(markers, viewx); - + select_timeline_marker_frame(markers, cfra, extend); - + #ifdef DURIAN_CAMERA_SWITCH if (camera) { @@ -1172,17 +1172,17 @@ static int ed_marker_select(bContext *C, const wmEvent *event, bool extend, bool Base *base; TimeMarker *marker; int sel = 0; - + if (!extend) BKE_view_layer_base_deselect_all(view_layer); - + for (marker = markers->first; marker; marker = marker->next) { if (marker->frame == cfra) { sel = (marker->flag & SELECT); break; } } - + for (marker = markers->first; marker; marker = marker->next) { if (marker->camera) { if (marker->frame == cfra) { @@ -1195,7 +1195,7 @@ static int ed_marker_select(bContext *C, const wmEvent *event, bool extend, bool } } } - + WM_event_add_notifier(C, NC_SCENE | ND_OB_SELECT, scene); } #else @@ -1232,11 +1232,11 @@ static void MARKER_OT_select(wmOperatorType *ot) ot->name = "Select Time Marker"; ot->description = "Select time marker(s)"; ot->idname = "MARKER_OT_select"; - + /* api callbacks */ ot->invoke = ed_marker_select_invoke_wrapper; ot->poll = ed_markers_poll_markers_exist; - + /* flags */ ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; @@ -1250,7 +1250,7 @@ static void MARKER_OT_select(wmOperatorType *ot) /* *************************** border select markers **************** */ -/* operator state vars used: (added by default WM callbacks) +/* operator state vars used: (added by default WM callbacks) * xmin, ymin * xmax, ymax * @@ -1277,13 +1277,13 @@ static int ed_marker_border_select_exec(bContext *C, wmOperator *op) bool select = !RNA_boolean_get(op->ptr, "deselect"); bool extend = RNA_boolean_get(op->ptr, "extend"); rctf rect; - + WM_operator_properties_border_to_rctf(op, &rect); UI_view2d_region_to_view_rctf(v2d, &rect, &rect); - + if (markers == NULL) return 0; - + /* XXX marker context */ for (marker = markers->first; marker; marker = marker->next) { if (BLI_rctf_isect_x(&rect, marker->frame)) { @@ -1298,7 +1298,7 @@ static int ed_marker_border_select_exec(bContext *C, wmOperator *op) marker->flag &= ~SELECT; } } - + WM_event_add_notifier(C, NC_SCENE | ND_MARKERS, NULL); WM_event_add_notifier(C, NC_ANIMATION | ND_MARKERS, NULL); @@ -1316,18 +1316,18 @@ static void MARKER_OT_select_border(wmOperatorType *ot) ot->name = "Marker Border Select"; ot->description = "Select all time markers using border selection"; ot->idname = "MARKER_OT_select_border"; - + /* api callbacks */ ot->exec = ed_marker_border_select_exec; ot->invoke = ed_marker_select_border_invoke_wrapper; ot->modal = WM_gesture_border_modal; ot->cancel = WM_gesture_border_cancel; - + ot->poll = ed_markers_poll_markers_exist; - + /* flags */ ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; - + /* rna */ WM_operator_properties_gesture_border_select(ot); } @@ -1346,7 +1346,7 @@ static int ed_marker_select_all_exec(bContext *C, wmOperator *op) if (action == SEL_TOGGLE) { action = (ED_markers_get_first_selected(markers) != NULL) ? SEL_DESELECT : SEL_SELECT; } - + for (marker = markers->first; marker; marker = marker->next) { switch (action) { case SEL_SELECT: @@ -1360,7 +1360,7 @@ static int ed_marker_select_all_exec(bContext *C, wmOperator *op) break; } } - + WM_event_add_notifier(C, NC_SCENE | ND_MARKERS, NULL); WM_event_add_notifier(C, NC_ANIMATION | ND_MARKERS, NULL); @@ -1373,15 +1373,15 @@ static void MARKER_OT_select_all(wmOperatorType *ot) ot->name = "(De)select all Markers"; ot->description = "Change selection of all time markers"; ot->idname = "MARKER_OT_select_all"; - + /* api callbacks */ ot->exec = ed_marker_select_all_exec; ot->invoke = ed_markers_opwrap_invoke; ot->poll = ed_markers_poll_markers_exist; - + /* flags */ ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; - + /* rna */ WM_operator_properties_select_all(ot); } @@ -1394,10 +1394,10 @@ static int ed_marker_delete_exec(bContext *C, wmOperator *UNUSED(op)) ListBase *markers = ED_context_get_markers(C); TimeMarker *marker, *nmarker; bool changed = false; - + if (markers == NULL) return OPERATOR_CANCELLED; - + for (marker = markers->first; marker; marker = nmarker) { nmarker = marker->next; if (marker->flag & SELECT) { @@ -1405,12 +1405,12 @@ static int ed_marker_delete_exec(bContext *C, wmOperator *UNUSED(op)) changed = true; } } - + if (changed) { WM_event_add_notifier(C, NC_SCENE | ND_MARKERS, NULL); WM_event_add_notifier(C, NC_ANIMATION | ND_MARKERS, NULL); } - + return OPERATOR_FINISHED; } @@ -1426,12 +1426,12 @@ static void MARKER_OT_delete(wmOperatorType *ot) ot->name = "Delete Markers"; ot->description = "Delete selected time marker(s)"; ot->idname = "MARKER_OT_delete"; - + /* api callbacks */ ot->invoke = ed_marker_delete_invoke_wrapper; ot->exec = ed_marker_delete_exec; ot->poll = ed_markers_poll_selected_no_locked_markers; - + /* flags */ ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; } @@ -1446,10 +1446,10 @@ static int ed_marker_rename_exec(bContext *C, wmOperator *op) if (marker) { RNA_string_get(op->ptr, "name", marker->name); - + WM_event_add_notifier(C, NC_SCENE | ND_MARKERS, NULL); WM_event_add_notifier(C, NC_ANIMATION | ND_MARKERS, NULL); - + return OPERATOR_FINISHED; } else { @@ -1463,7 +1463,7 @@ static int ed_marker_rename_invoke_wrapper(bContext *C, wmOperator *op, const wm TimeMarker *marker = ED_markers_get_first_selected(ED_context_get_markers(C)); if (marker) RNA_string_set(op->ptr, "name", marker->name); - + /* now see if the operator is usable */ return ed_markers_opwrap_invoke_custom(C, op, event, WM_operator_props_popup_confirm); } @@ -1474,15 +1474,15 @@ static void MARKER_OT_rename(wmOperatorType *ot) ot->name = "Rename Marker"; ot->description = "Rename first selected time marker"; ot->idname = "MARKER_OT_rename"; - + /* api callbacks */ ot->invoke = ed_marker_rename_invoke_wrapper; ot->exec = ed_marker_rename_exec; ot->poll = ed_markers_poll_selected_no_locked_markers; - + /* flags */ ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; - + /* properties */ ot->prop = RNA_def_string(ot->srna, "name", "RenamedMarker", sizeof(((TimeMarker *)NULL)->name), "Name", "New name for marker"); //RNA_def_boolean(ot->srna, "ensure_unique", 0, "Ensure Unique", "Ensure that new name is unique within collection of markers"); @@ -1516,7 +1516,7 @@ static int ed_marker_make_links_scene_exec(bContext *C, wmOperator *op) if (marker->flag & SELECT) { marker_new = MEM_dupallocN(marker); marker_new->prev = marker_new->next = NULL; - + BLI_addtail(&scene_to->markers, marker_new); } } @@ -1645,7 +1645,7 @@ void ED_keymap_marker(wmKeyConfig *keyconf) { wmKeyMap *keymap = WM_keymap_find(keyconf, "Markers", 0, 0); wmKeyMapItem *kmi; - + WM_keymap_verify_item(keymap, "MARKER_OT_add", MKEY, KM_PRESS, 0, 0); WM_keymap_verify_item(keymap, "MARKER_OT_move", EVT_TWEAK_S, KM_ANY, 0, 0); WM_keymap_verify_item(keymap, "MARKER_OT_duplicate", DKEY, KM_PRESS, KM_SHIFT, 0); @@ -1664,13 +1664,13 @@ void ED_keymap_marker(wmKeyConfig *keyconf) #else (void)kmi; #endif - + WM_keymap_verify_item(keymap, "MARKER_OT_select_border", BKEY, KM_PRESS, 0, 0); WM_keymap_verify_item(keymap, "MARKER_OT_select_all", AKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "MARKER_OT_delete", XKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "MARKER_OT_delete", DELKEY, KM_PRESS, 0, 0); WM_keymap_verify_item(keymap, "MARKER_OT_rename", MKEY, KM_PRESS, KM_CTRL, 0); - + WM_keymap_add_item(keymap, "MARKER_OT_move", GKEY, KM_PRESS, 0, 0); #ifdef DURIAN_CAMERA_SWITCH WM_keymap_add_item(keymap, "MARKER_OT_camera_bind", BKEY, KM_PRESS, KM_CTRL, 0); |