57 #define MIN_MAJOR_LINE_DISTANCE (U.v2d_min_gridsize * UI_DPI_FAC)
66 if (
IS_EQF(view_width, 0.0f)) {
67 return possible_distances[0];
70 const float pixels_per_view_unit = pixel_width / view_width;
72 for (
uint i = 0; i < amount; i++) {
73 const float distance = possible_distances[i];
78 return possible_distances[amount - 1];
82 1, 2, 5, 10, 20, 50, 100, 200, 500, 1000, 2000, 5000, 10000, 20000, 50000, 100000};
85 5, 10, 20, 50, 100, 200, 500, 1000,
86 2000, 5000, 10000, 20000, 50000, 100000};
114 const double fps =
FPS;
116 float *possible_distances =
NULL;
119 for (
uint step = 1; step < fps; step *= 2) {
157 if (region_start >= region_end) {
169 if (region_start <= *r_first && region_end >= *r_first) {
182 const rcti *rect_mask,
183 const uchar color[3],
189 if (direction ==
'v') {
212 if (
U.pixelsize > 1.0f) {
228 if (direction ==
'v') {
230 const float xpos = first + i * lines->
distance;
237 const float ypos = first + i * lines->
distance;
249 const uchar color[3],
259 float major_distance,
260 bool display_minor_lines,
264 uchar major_color[3];
267 major_lines.
distance = major_distance;
272 if (display_minor_lines) {
273 uchar minor_color[3];
276 minor_lines.
distance = major_distance;
277 minor_lines.
offset = major_distance / 2.0f;
286 void *
user_data,
float v2d_pos,
float v2d_step,
uint max_len,
char *r_str);
293 void *to_string_data,
326 const float xmin = rect->
xmin;
327 const float xmax = rect->
xmax;
330 const float xpos_view = start + i *
distance;
334 const float text_width =
BLF_width(font_id, text, strlen(text));
336 if (xpos_region - text_width / 2.0f >= xmin && xpos_region + text_width / 2.0f <= xmax) {
349 float display_offset,
352 void *to_string_data,
388 const float ymin = rect->
ymin;
389 const float ymax = rect->
ymax;
392 const float ypos_view = start + i *
distance;
396 const float text_width =
BLF_width(font_id, text, strlen(text));
398 if (ypos_region - text_width / 2.0f >= ymin && ypos_region + text_width / 2.0f <= ymax) {
420 const int brevity_level = 0;
422 r_str, max_len, brevity_level, v2d_pos / (
float)
FPS,
FPS,
U.timecode_style);
428 if (v2d_step >= 1.0f) {
431 else if (v2d_step >= 0.1f) {
434 else if (v2d_step >= 0.01f) {
447 bool display_seconds)
449 if (display_seconds) {
489 bool display_seconds)
491 if (display_seconds) {
501 bool display_seconds)
503 if (display_seconds) {
562 const struct rcti *rect,
564 bool display_seconds,
567 if (display_seconds) {
577 const struct rcti *rect,
579 bool display_seconds,
582 if (display_seconds) {
float BLF_width(int fontid, const char *str, size_t len) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
void BLF_disable(int fontid, int option)
void BLF_rotation(int fontid, float angle)
void BLF_draw_default_ascii(float x, float y, float z, const char *str, size_t len) ATTR_NONNULL()
void BLF_batch_draw_begin(void)
void BLF_enable(int fontid, int option)
void BLF_batch_draw_end(void)
A (mainly) macro array library.
#define BLI_array_append(arr, item)
#define BLI_array_staticdeclare(arr, maxstatic)
#define BLI_array_len(arr)
#define BLI_array_free(arr)
BLI_INLINE int BLI_rcti_size_y(const struct rcti *rct)
BLI_INLINE int BLI_rcti_size_x(const struct rcti *rct)
BLI_INLINE float BLI_rctf_size_x(const struct rctf *rct)
BLI_INLINE float BLI_rctf_size_y(const struct rctf *rct)
size_t BLI_snprintf(char *__restrict dst, size_t maxncpy, const char *__restrict format,...) ATTR_NONNULL(1
size_t BLI_timecode_string_from_time(char *str, const size_t maxncpy, const int brevity_level, const float time_seconds, const double scene_fps, const short timecode_style) ATTR_NONNULL()
void GPU_matrix_pop_projection(void)
void GPU_matrix_push_projection(void)
@ GPU_SHADER_3D_POLYLINE_UNIFORM_COLOR
@ GPU_SHADER_2D_UNIFORM_COLOR
void GPU_viewport_size_get_f(float coords[4])
Read Guarded memory(de)allocation.
void UI_GetThemeColor3ubv(int colorid, unsigned char col[3])
void UI_FontThemeColor(int fontid, int colorid)
void UI_GetThemeColorShade3ubv(int colorid, int offset, unsigned char col[3])
float UI_view2d_view_to_region_x(const struct View2D *v2d, float x)
float UI_view2d_view_to_region_y(const struct View2D *v2d, float y)
void UI_view2d_view_ortho(const struct View2D *v2d)
float UI_view2d_scale_get_y(const struct View2D *v2d)
float UI_view2d_region_to_view_x(const struct View2D *v2d, float x)
float UI_view2d_scale_get_x(const struct View2D *v2d)
float UI_view2d_region_to_view_y(const struct View2D *v2d, float y)
std::string to_string(const T &n)
ccl_device_inline float distance(const float2 &a, const float2 &b)
static void draw_vertical_scale_indicators(const ARegion *region, const View2D *v2d, float distance, float display_offset, const rcti *rect, PositionToString to_string, void *to_string_data, int colorid)
static void draw_horizontal_scale_indicators(const ARegion *region, const View2D *v2d, float distance, const rcti *rect, PositionToString to_string, void *to_string_data, int colorid)
void UI_view2d_draw_lines_x__values(const View2D *v2d)
static void view_to_string__value(void *UNUSED(user_data), float v2d_pos, float v2d_step, uint max_len, char *r_str)
static float select_major_distance(const float *possible_distances, uint amount, float pixel_width, float view_width)
static void UI_view2d_draw_scale_x__values(const ARegion *region, const View2D *v2d, const rcti *rect, int colorid)
#define MIN_MAJOR_LINE_DISTANCE
void UI_view2d_draw_lines_x__frames_or_seconds(const View2D *v2d, const Scene *scene, bool display_seconds)
static float view2d_major_step_x__continuous(const View2D *v2d)
static void view2d_draw_lines(const View2D *v2d, float major_distance, bool display_minor_lines, char direction)
static void view_to_string__time(void *user_data, float v2d_pos, float UNUSED(v2d_step), uint max_len, char *r_str)
struct ParallelLinesSet ParallelLinesSet
float UI_view2d_grid_resolution_x__frames_or_seconds(const struct View2D *v2d, const struct Scene *scene, bool display_seconds)
float UI_view2d_grid_resolution_y__values(const struct View2D *v2d)
void UI_view2d_draw_lines_y__values(const View2D *v2d)
static const float discrete_value_scales[]
static float view2d_major_step_x__time(const View2D *v2d, const Scene *scene)
void UI_view2d_draw_scale_x__discrete_frames_or_seconds(const struct ARegion *region, const struct View2D *v2d, const struct rcti *rect, const struct Scene *scene, bool display_seconds, int colorid)
void UI_view2d_draw_lines_x__discrete_time(const View2D *v2d, const Scene *scene)
static void UI_view2d_draw_scale_x__discrete_time(const ARegion *region, const View2D *v2d, const rcti *rect, const Scene *scene, int colorid)
void UI_view2d_draw_lines_x__discrete_frames_or_seconds(const View2D *v2d, const Scene *scene, bool display_seconds)
void UI_view2d_draw_scale_x__frames_or_seconds(const struct ARegion *region, const struct View2D *v2d, const struct rcti *rect, const struct Scene *scene, bool display_seconds, int colorid)
void UI_view2d_draw_scale_y__values(const ARegion *region, const View2D *v2d, const rcti *rect, int colorid)
static void view2d_draw_lines_internal(const View2D *v2d, const ParallelLinesSet *lines, const uchar color[3], char direction)
static void view_to_string__frame_number(void *UNUSED(user_data), float v2d_pos, float UNUSED(v2d_step), uint max_len, char *r_str)
void UI_view2d_draw_scale_y__block(const ARegion *region, const View2D *v2d, const rcti *rect, int colorid)
static void UI_view2d_draw_scale_x__discrete_values(const ARegion *region, const View2D *v2d, const rcti *rect, int colorid)
static float view2d_major_step_y__continuous(const View2D *v2d)
static uint view2d_major_step_x__discrete(const View2D *v2d)
void UI_view2d_draw_lines_x__discrete_values(const View2D *v2d)
static void draw_parallel_lines(const ParallelLinesSet *lines, const rctf *rect, const rcti *rect_mask, const uchar color[3], char direction)
static const float continuous_value_scales[]
static void get_parallel_lines_draw_steps(const ParallelLinesSet *lines, float region_start, float region_end, float *r_first, uint *r_steps)
void(* PositionToString)(void *user_data, float v2d_pos, float v2d_step, uint max_len, char *r_str)
void wmOrtho2_region_pixelspace(const ARegion *region)