Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/interface/view2d_draw.cc
| Show First 20 Lines • Show All 87 Lines • ▼ Show 20 Lines | |||||
| static float view2d_major_step_y__continuous(const View2D *v2d) | static float view2d_major_step_y__continuous(const View2D *v2d) | ||||
| { | { | ||||
| return select_major_distance(continuous_value_scales, | return select_major_distance(continuous_value_scales, | ||||
| ARRAY_SIZE(continuous_value_scales), | ARRAY_SIZE(continuous_value_scales), | ||||
| BLI_rcti_size_y(&v2d->mask), | BLI_rcti_size_y(&v2d->mask), | ||||
| BLI_rctf_size_y(&v2d->cur)); | BLI_rctf_size_y(&v2d->cur)); | ||||
| } | } | ||||
| static float view2d_major_step_x__time(const View2D *v2d, const Scene *scene) | static float view2d_major_step_x__time(const View2D *v2d, const double fps) | ||||
| { | { | ||||
| const double fps = FPS; | |||||
| blender::Vector<float, 32> possible_distances; | blender::Vector<float, 32> possible_distances; | ||||
| for (int step = 1; step < fps; step *= 2) { | for (int step = 1; step < fps; step *= 2) { | ||||
| possible_distances.append(step); | possible_distances.append(step); | ||||
| } | } | ||||
| possible_distances.append(fps); | possible_distances.append(fps); | ||||
| possible_distances.append(2 * fps); | possible_distances.append(2 * fps); | ||||
| possible_distances.append(5 * fps); | possible_distances.append(5 * fps); | ||||
| ▲ Show 20 Lines • Show All 303 Lines • ▼ Show 20 Lines | static void view_to_string__frame_number( | ||||
| void * /*user_data*/, float v2d_pos, float /*v2d_step*/, uint max_len, char *r_str) | void * /*user_data*/, float v2d_pos, float /*v2d_step*/, uint max_len, char *r_str) | ||||
| { | { | ||||
| BLI_snprintf(r_str, max_len, "%d", int(v2d_pos)); | BLI_snprintf(r_str, max_len, "%d", int(v2d_pos)); | ||||
| } | } | ||||
| static void view_to_string__time( | static void view_to_string__time( | ||||
| void *user_data, float v2d_pos, float v2d_step, uint max_len, char *r_str) | void *user_data, float v2d_pos, float v2d_step, uint max_len, char *r_str) | ||||
| { | { | ||||
| const Scene *scene = (const Scene *)user_data; | const double fps = *static_cast<double *>(user_data); | ||||
| int brevity_level = 0; | int brevity_level = 0; | ||||
| if (U.timecode_style == USER_TIMECODE_MINIMAL && v2d_step >= FPS) { | if (U.timecode_style == USER_TIMECODE_MINIMAL && v2d_step >= fps) { | ||||
| brevity_level = 1; | brevity_level = 1; | ||||
| } | } | ||||
| BLI_timecode_string_from_time( | BLI_timecode_string_from_time( | ||||
| r_str, max_len, brevity_level, v2d_pos / float(FPS), FPS, U.timecode_style); | r_str, max_len, brevity_level, v2d_pos / float(fps), fps, U.timecode_style); | ||||
| } | } | ||||
| static void view_to_string__value( | static void view_to_string__value( | ||||
| void * /*user_data*/, float v2d_pos, float v2d_step, uint max_len, char *r_str) | void * /*user_data*/, float v2d_pos, float v2d_step, uint max_len, char *r_str) | ||||
| { | { | ||||
| if (v2d_step >= 1.0f) { | if (v2d_step >= 1.0f) { | ||||
| BLI_snprintf(r_str, max_len, "%d", int(v2d_pos)); | BLI_snprintf(r_str, max_len, "%d", int(v2d_pos)); | ||||
| } | } | ||||
| else if (v2d_step >= 0.1f) { | else if (v2d_step >= 0.1f) { | ||||
| BLI_snprintf(r_str, max_len, "%.1f", v2d_pos); | BLI_snprintf(r_str, max_len, "%.1f", v2d_pos); | ||||
| } | } | ||||
| else if (v2d_step >= 0.01f) { | else if (v2d_step >= 0.01f) { | ||||
| BLI_snprintf(r_str, max_len, "%.2f", v2d_pos); | BLI_snprintf(r_str, max_len, "%.2f", v2d_pos); | ||||
| } | } | ||||
| else { | else { | ||||
| BLI_snprintf(r_str, max_len, "%.3f", v2d_pos); | BLI_snprintf(r_str, max_len, "%.3f", v2d_pos); | ||||
| } | } | ||||
| } | } | ||||
| /* Grid Resolution API | /* Grid Resolution API | ||||
| **************************************************/ | **************************************************/ | ||||
| float UI_view2d_grid_resolution_x__frames_or_seconds(const struct View2D *v2d, | float UI_view2d_grid_resolution_x__frames_or_seconds(const struct View2D *v2d, | ||||
| const struct Scene *scene, | const double fps, | ||||
| bool display_seconds) | bool display_seconds) | ||||
| { | { | ||||
| if (display_seconds) { | if (display_seconds) { | ||||
| return view2d_major_step_x__time(v2d, scene); | return view2d_major_step_x__time(v2d, fps); | ||||
| } | } | ||||
| return view2d_major_step_x__continuous(v2d); | return view2d_major_step_x__continuous(v2d); | ||||
| } | } | ||||
| float UI_view2d_grid_resolution_y__values(const struct View2D *v2d) | float UI_view2d_grid_resolution_y__values(const struct View2D *v2d) | ||||
| { | { | ||||
| return view2d_major_step_y__continuous(v2d); | return view2d_major_step_y__continuous(v2d); | ||||
| } | } | ||||
| Show All 16 Lines | |||||
| void UI_view2d_draw_lines_y__values(const View2D *v2d) | void UI_view2d_draw_lines_y__values(const View2D *v2d) | ||||
| { | { | ||||
| const float major_line_distance = view2d_major_step_y__continuous(v2d); | const float major_line_distance = view2d_major_step_y__continuous(v2d); | ||||
| view2d_draw_lines(v2d, major_line_distance, true, 'h'); | view2d_draw_lines(v2d, major_line_distance, true, 'h'); | ||||
| } | } | ||||
| void UI_view2d_draw_lines_x__discrete_time(const View2D *v2d, | void UI_view2d_draw_lines_x__discrete_time(const View2D *v2d, | ||||
| const Scene *scene, | const double fps, | ||||
| bool display_minor_lines) | bool display_minor_lines) | ||||
| { | { | ||||
| const float major_line_distance = view2d_major_step_x__time(v2d, scene); | const float major_line_distance = view2d_major_step_x__time(v2d, fps); | ||||
| view2d_draw_lines( | view2d_draw_lines( | ||||
| v2d, major_line_distance, display_minor_lines && (major_line_distance > 1), 'v'); | v2d, major_line_distance, display_minor_lines && (major_line_distance > 1), 'v'); | ||||
| } | } | ||||
| void UI_view2d_draw_lines_x__discrete_frames_or_seconds(const View2D *v2d, | void UI_view2d_draw_lines_x__discrete_frames_or_seconds(const View2D *v2d, | ||||
| const Scene *scene, | const double fps, | ||||
| bool display_seconds, | bool display_seconds, | ||||
| bool display_minor_lines) | bool display_minor_lines) | ||||
| { | { | ||||
| if (display_seconds) { | if (display_seconds) { | ||||
| UI_view2d_draw_lines_x__discrete_time(v2d, scene, display_minor_lines); | UI_view2d_draw_lines_x__discrete_time(v2d, fps, display_minor_lines); | ||||
| } | } | ||||
| else { | else { | ||||
| UI_view2d_draw_lines_x__discrete_values(v2d, display_minor_lines); | UI_view2d_draw_lines_x__discrete_values(v2d, display_minor_lines); | ||||
| } | } | ||||
| } | } | ||||
| void UI_view2d_draw_lines_x__frames_or_seconds(const View2D *v2d, | void UI_view2d_draw_lines_x__frames_or_seconds(const View2D *v2d, | ||||
| const Scene *scene, | const double fps, | ||||
| bool display_seconds) | bool display_seconds) | ||||
| { | { | ||||
| if (display_seconds) { | if (display_seconds) { | ||||
| UI_view2d_draw_lines_x__discrete_time(v2d, scene, true); | UI_view2d_draw_lines_x__discrete_time(v2d, fps, true); | ||||
| } | } | ||||
| else { | else { | ||||
| UI_view2d_draw_lines_x__values(v2d); | UI_view2d_draw_lines_x__values(v2d); | ||||
| } | } | ||||
| } | } | ||||
| /* Scale indicator text drawing API | /* Scale indicator text drawing API | ||||
| **************************************************/ | **************************************************/ | ||||
| static void UI_view2d_draw_scale_x__discrete_values(const ARegion *region, | static void UI_view2d_draw_scale_x__discrete_values(const ARegion *region, | ||||
| const View2D *v2d, | const View2D *v2d, | ||||
| const rcti *rect, | const rcti *rect, | ||||
| int colorid) | int colorid) | ||||
| { | { | ||||
| const float number_step = view2d_major_step_x__discrete(v2d); | const float number_step = view2d_major_step_x__discrete(v2d); | ||||
| draw_horizontal_scale_indicators( | draw_horizontal_scale_indicators( | ||||
| region, v2d, number_step, rect, view_to_string__frame_number, nullptr, colorid); | region, v2d, number_step, rect, view_to_string__frame_number, nullptr, colorid); | ||||
| } | } | ||||
| static void UI_view2d_draw_scale_x__discrete_time( | static void UI_view2d_draw_scale_x__discrete_time( | ||||
| const ARegion *region, const View2D *v2d, const rcti *rect, const Scene *scene, int colorid) | const ARegion *region, const View2D *v2d, const rcti *rect, const double fps, int colorid) | ||||
| { | { | ||||
| const float step = view2d_major_step_x__time(v2d, scene); | const float step = view2d_major_step_x__time(v2d, fps); | ||||
| draw_horizontal_scale_indicators( | draw_horizontal_scale_indicators( | ||||
| region, v2d, step, rect, view_to_string__time, (void *)scene, colorid); | region, v2d, step, rect, view_to_string__time, (void *)&fps, colorid); | ||||
| } | } | ||||
| static void UI_view2d_draw_scale_x__values(const ARegion *region, | static void UI_view2d_draw_scale_x__values(const ARegion *region, | ||||
| const View2D *v2d, | const View2D *v2d, | ||||
| const rcti *rect, | const rcti *rect, | ||||
| int colorid) | int colorid) | ||||
| { | { | ||||
| const float step = view2d_major_step_x__continuous(v2d); | const float step = view2d_major_step_x__continuous(v2d); | ||||
| Show All 18 Lines | |||||
| { | { | ||||
| draw_vertical_scale_indicators( | draw_vertical_scale_indicators( | ||||
| region, v2d, 1.0f, 0.5f, rect, view_to_string__value, nullptr, colorid); | region, v2d, 1.0f, 0.5f, rect, view_to_string__value, nullptr, colorid); | ||||
| } | } | ||||
| void UI_view2d_draw_scale_x__discrete_frames_or_seconds(const struct ARegion *region, | void UI_view2d_draw_scale_x__discrete_frames_or_seconds(const struct ARegion *region, | ||||
| const struct View2D *v2d, | const struct View2D *v2d, | ||||
| const struct rcti *rect, | const struct rcti *rect, | ||||
| const struct Scene *scene, | const double fps, | ||||
| bool display_seconds, | bool display_seconds, | ||||
| int colorid) | int colorid) | ||||
| { | { | ||||
| if (display_seconds) { | if (display_seconds) { | ||||
| UI_view2d_draw_scale_x__discrete_time(region, v2d, rect, scene, colorid); | UI_view2d_draw_scale_x__discrete_time(region, v2d, rect, fps, colorid); | ||||
| } | } | ||||
| else { | else { | ||||
| UI_view2d_draw_scale_x__discrete_values(region, v2d, rect, colorid); | UI_view2d_draw_scale_x__discrete_values(region, v2d, rect, colorid); | ||||
| } | } | ||||
| } | } | ||||
| void UI_view2d_draw_scale_x__frames_or_seconds(const struct ARegion *region, | void UI_view2d_draw_scale_x__frames_or_seconds(const struct ARegion *region, | ||||
| const struct View2D *v2d, | const struct View2D *v2d, | ||||
| const struct rcti *rect, | const struct rcti *rect, | ||||
| const struct Scene *scene, | const double fps, | ||||
| bool display_seconds, | bool display_seconds, | ||||
| int colorid) | int colorid) | ||||
| { | { | ||||
| if (display_seconds) { | if (display_seconds) { | ||||
| UI_view2d_draw_scale_x__discrete_time(region, v2d, rect, scene, colorid); | UI_view2d_draw_scale_x__discrete_time(region, v2d, rect, fps, colorid); | ||||
| } | } | ||||
| else { | else { | ||||
| UI_view2d_draw_scale_x__values(region, v2d, rect, colorid); | UI_view2d_draw_scale_x__values(region, v2d, rect, colorid); | ||||
| } | } | ||||
| } | } | ||||