Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/animation/time_scrub_ui.c
| Show First 20 Lines • Show All 85 Lines • ▼ Show 20 Lines | else { | ||||
| BLI_snprintf(r_str, max_len, "%d", frame); | BLI_snprintf(r_str, max_len, "%d", frame); | ||||
| } | } | ||||
| } | } | ||||
| static void draw_current_frame(const Scene *scene, | static void draw_current_frame(const Scene *scene, | ||||
| bool display_seconds, | bool display_seconds, | ||||
| const View2D *v2d, | const View2D *v2d, | ||||
| const rcti *scrub_region_rect, | const rcti *scrub_region_rect, | ||||
| int current_frame, | int current_frame) | ||||
| bool draw_line) | |||||
| { | { | ||||
| const uiFontStyle *fstyle = UI_FSTYLE_WIDGET; | const uiFontStyle *fstyle = UI_FSTYLE_WIDGET; | ||||
| int frame_x = UI_view2d_view_to_region_x(v2d, current_frame); | int frame_x = UI_view2d_view_to_region_x(v2d, current_frame); | ||||
| char frame_str[64]; | char frame_str[64]; | ||||
| get_current_time_str(scene, display_seconds, current_frame, sizeof(frame_str), frame_str); | get_current_time_str(scene, display_seconds, current_frame, sizeof(frame_str), frame_str); | ||||
| float text_width = UI_fontstyle_string_width(fstyle, frame_str); | float text_width = UI_fontstyle_string_width(fstyle, frame_str); | ||||
| float box_width = MAX2(text_width + 8 * UI_DPI_FAC, 24 * UI_DPI_FAC); | float box_width = MAX2(text_width + 8 * UI_DPI_FAC, 24 * UI_DPI_FAC); | ||||
| float box_padding = 3 * UI_DPI_FAC; | float box_padding = 3 * UI_DPI_FAC; | ||||
| float bg_color[4]; | float bg_color[4]; | ||||
| UI_GetThemeColorShade4fv(TH_CFRAME, -5, bg_color); | UI_GetThemeColorShade4fv(TH_CFRAME, -5, bg_color); | ||||
| if (draw_line) { | |||||
| /* Draw vertical line to from the bottom of the current frame box to the bottom of the screen. | /* Draw vertical line to from the bottom of the current frame box to the bottom of the screen. | ||||
| */ | */ | ||||
| const float subframe_x = UI_view2d_view_to_region_x(v2d, BKE_scene_ctime_get(scene)); | const float subframe_x = UI_view2d_view_to_region_x(v2d, BKE_scene_ctime_get(scene)); | ||||
| GPUVertFormat *format = immVertexFormat(); | GPUVertFormat *format = immVertexFormat(); | ||||
| uint pos = GPU_vertformat_attr_add(format, "pos", GPU_COMP_F32, 2, GPU_FETCH_FLOAT); | uint pos = GPU_vertformat_attr_add(format, "pos", GPU_COMP_F32, 2, GPU_FETCH_FLOAT); | ||||
| immBindBuiltinProgram(GPU_SHADER_2D_UNIFORM_COLOR); | immBindBuiltinProgram(GPU_SHADER_2D_UNIFORM_COLOR); | ||||
| immUniformThemeColor(TH_CFRAME); | immUniformThemeColor(TH_CFRAME); | ||||
| immRectf(pos, | immRectf(pos, | ||||
| subframe_x - U.pixelsize, | subframe_x - U.pixelsize, | ||||
| scrub_region_rect->ymax - box_padding, | scrub_region_rect->ymax - box_padding, | ||||
| subframe_x + U.pixelsize, | subframe_x + U.pixelsize, | ||||
| 0.0f); | 0.0f); | ||||
| immUnbindProgram(); | immUnbindProgram(); | ||||
david_black: Should this read?...
```
/* Draw vertical line from the bottom of the current frame box to the… | |||||
| } | |||||
| UI_draw_roundbox_corner_set(UI_CNR_ALL); | UI_draw_roundbox_corner_set(UI_CNR_ALL); | ||||
| float outline_color[4]; | float outline_color[4]; | ||||
| UI_GetThemeColorShade4fv(TH_CFRAME, 5, outline_color); | UI_GetThemeColorShade4fv(TH_CFRAME, 5, outline_color); | ||||
| UI_draw_roundbox_4fv_ex( | UI_draw_roundbox_4fv_ex( | ||||
| &(const rctf){ | &(const rctf){ | ||||
| Show All 15 Lines | UI_fontstyle_draw_simple(fstyle, | ||||
| frame_x - text_width / 2 + U.pixelsize / 2, | frame_x - text_width / 2 + U.pixelsize / 2, | ||||
| get_centered_text_y(scrub_region_rect), | get_centered_text_y(scrub_region_rect), | ||||
| frame_str, | frame_str, | ||||
| text_color); | text_color); | ||||
| } | } | ||||
| void ED_time_scrub_draw_current_frame(const ARegion *region, | void ED_time_scrub_draw_current_frame(const ARegion *region, | ||||
| const Scene *scene, | const Scene *scene, | ||||
| bool display_seconds, | bool display_seconds) | ||||
| bool draw_line) | |||||
| { | { | ||||
| const View2D *v2d = ®ion->v2d; | const View2D *v2d = ®ion->v2d; | ||||
| GPU_matrix_push_projection(); | GPU_matrix_push_projection(); | ||||
| wmOrtho2_region_pixelspace(region); | wmOrtho2_region_pixelspace(region); | ||||
| rcti scrub_region_rect; | rcti scrub_region_rect; | ||||
| get_time_scrub_region_rect(region, &scrub_region_rect); | get_time_scrub_region_rect(region, &scrub_region_rect); | ||||
| draw_current_frame(scene, display_seconds, v2d, &scrub_region_rect, scene->r.cfra, draw_line); | draw_current_frame(scene, display_seconds, v2d, &scrub_region_rect, scene->r.cfra); | ||||
| GPU_matrix_pop_projection(); | GPU_matrix_pop_projection(); | ||||
| } | } | ||||
| void ED_time_scrub_draw(const ARegion *region, | void ED_time_scrub_draw(const ARegion *region, | ||||
| const Scene *scene, | const Scene *scene, | ||||
| bool display_seconds, | bool display_seconds, | ||||
| bool discrete_frames) | bool discrete_frames) | ||||
| { | { | ||||
| ▲ Show 20 Lines • Show All 82 Lines • Show Last 20 Lines | |||||
Should this read?...