Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/animation/anim_draw.c
| Show First 20 Lines • Show All 610 Lines • ▼ Show 20 Lines | if (doneprev || donenext) { | ||||
| } | } | ||||
| return true; | return true; | ||||
| } | } | ||||
| return false; | return false; | ||||
| } | } | ||||
| void ANIM_center_frame(struct bContext *C, int smooth_viewtx) | void ANIM_center_frame(struct bContext *C, float fps, int cfra, int smooth_viewtx) | ||||
| { | { | ||||
| ARegion *region = CTX_wm_region(C); | ARegion *region = CTX_wm_region(C); | ||||
| Scene *scene = CTX_data_scene(C); | |||||
| float w = BLI_rctf_size_x(®ion->v2d.cur); | float w = BLI_rctf_size_x(®ion->v2d.cur); | ||||
| rctf newrct; | rctf newrct; | ||||
| int nextfra, prevfra; | int nextfra, prevfra; | ||||
| switch (U.view_frame_type) { | switch (U.view_frame_type) { | ||||
| case ZOOM_FRAME_MODE_SECONDS: { | case ZOOM_FRAME_MODE_SECONDS: { | ||||
| const float fps = FPS; | newrct.xmax = cfra + U.view_frame_seconds * fps + 1; | ||||
| newrct.xmax = scene->r.cfra + U.view_frame_seconds * fps + 1; | newrct.xmin = cfra - U.view_frame_seconds * fps - 1; | ||||
| newrct.xmin = scene->r.cfra - U.view_frame_seconds * fps - 1; | |||||
| newrct.ymax = region->v2d.cur.ymax; | newrct.ymax = region->v2d.cur.ymax; | ||||
| newrct.ymin = region->v2d.cur.ymin; | newrct.ymin = region->v2d.cur.ymin; | ||||
| break; | break; | ||||
| } | } | ||||
| /* hardest case of all, look for all keyframes around frame and display those */ | /* hardest case of all, look for all keyframes around frame and display those */ | ||||
| case ZOOM_FRAME_MODE_KEYFRAMES: | case ZOOM_FRAME_MODE_KEYFRAMES: | ||||
| if (find_prev_next_keyframes(C, &nextfra, &prevfra)) { | if (find_prev_next_keyframes(C, &nextfra, &prevfra)) { | ||||
| newrct.xmax = nextfra; | newrct.xmax = nextfra; | ||||
| newrct.xmin = prevfra; | newrct.xmin = prevfra; | ||||
| newrct.ymax = region->v2d.cur.ymax; | newrct.ymax = region->v2d.cur.ymax; | ||||
| newrct.ymin = region->v2d.cur.ymin; | newrct.ymin = region->v2d.cur.ymin; | ||||
| break; | break; | ||||
| } | } | ||||
| /* else drop through, keep range instead */ | /* else drop through, keep range instead */ | ||||
| ATTR_FALLTHROUGH; | ATTR_FALLTHROUGH; | ||||
| case ZOOM_FRAME_MODE_KEEP_RANGE: | case ZOOM_FRAME_MODE_KEEP_RANGE: | ||||
| default: | default: | ||||
| newrct.xmax = scene->r.cfra + (w / 2); | newrct.xmax = cfra + (w / 2); | ||||
| newrct.xmin = scene->r.cfra - (w / 2); | newrct.xmin = cfra - (w / 2); | ||||
| newrct.ymax = region->v2d.cur.ymax; | newrct.ymax = region->v2d.cur.ymax; | ||||
| newrct.ymin = region->v2d.cur.ymin; | newrct.ymin = region->v2d.cur.ymin; | ||||
| break; | break; | ||||
| } | } | ||||
| UI_view2d_smooth_view(C, region, &newrct, smooth_viewtx); | UI_view2d_smooth_view(C, region, &newrct, smooth_viewtx); | ||||
| } | } | ||||
| /* *************************************************** */ | /* *************************************************** */ | ||||