Blender V5.0
view2d_draw.cc File Reference
#include <algorithm>
#include <cfloat>
#include <cmath>
#include <cstring>
#include "DNA_scene_types.h"
#include "DNA_userdef_types.h"
#include "BLI_math_base.h"
#include "BLI_rect.h"
#include "BLI_string_utf8.h"
#include "BLI_timecode.h"
#include "BLI_utildefines.h"
#include "BLI_vector.hh"
#include "GPU_immediate.hh"
#include "GPU_matrix.hh"
#include "GPU_state.hh"
#include "WM_api.hh"
#include "BLF_api.hh"
#include "UI_resources.hh"
#include "UI_view2d.hh"

Go to the source code of this file.

Classes

struct  ParallelLinesSet

Macros

#define MIN_MAJOR_LINE_DISTANCE   (U.v2d_min_gridsize * UI_SCALE_FAC)

Typedefs

using PositionToString

Functions

static int get_divisor (const int distance)
static int calculate_grid_step (const int base, const float pixel_width, const float view_width)
static float calculate_grid_step_subframes (const int base, const float pixel_width, const float view_width)
static void get_parallel_lines_draw_steps (const ParallelLinesSet *lines, float region_start, float region_end, float *r_first, uint *r_steps)
static void draw_parallel_lines (const ParallelLinesSet *lines, const rctf *rect, const rcti *rect_mask, const uchar color[3], char direction)
static void view2d_draw_lines_internal (const View2D *v2d, const ParallelLinesSet *lines, const uchar color[3], char direction)
static void view2d_draw_lines (const View2D *v2d, const float major_distance, const bool display_minor_lines, const char direction)
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)
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 view_to_string__frame_number (void *, float v2d_pos, float, char *r_str, uint str_maxncpy)
static void view_to_string__time (void *user_data, float v2d_pos, float v2d_step, char *r_str, uint str_maxncpy)
static void view_to_string__value (void *, float v2d_pos, float v2d_step, char *r_str, uint str_maxncpy)
float UI_view2d_grid_resolution_x__frames_or_seconds (const View2D *v2d, const Scene *scene)
float UI_view2d_grid_resolution_y__values (const View2D *v2d, const int base)
void UI_view2d_draw_lines_x__discrete_values (const View2D *v2d, const int base, bool display_minor_lines)
void UI_view2d_draw_lines_x__values (const View2D *v2d, const int base)
void UI_view2d_draw_lines_y__values (const View2D *v2d, const int base)
void UI_view2d_draw_lines_x__discrete_time (const View2D *v2d, const int base, bool display_minor_lines)
void UI_view2d_draw_lines_x__discrete_frames_or_seconds (const View2D *v2d, const Scene *scene, bool display_seconds, bool display_minor_lines)
void UI_view2d_draw_lines_x__frames_or_seconds (const View2D *v2d, const Scene *scene, bool display_seconds)
void UI_view2d_draw_scale_y__values (const ARegion *region, const View2D *v2d, const rcti *rect, int colorid, const int base)
void UI_view2d_draw_scale_x__discrete_frames_or_seconds (const ARegion *region, const View2D *v2d, const rcti *rect, const Scene *scene, bool display_seconds, int colorid, const int base)
void UI_view2d_draw_scale_x__frames_or_seconds (const ARegion *region, const View2D *v2d, const rcti *rect, const Scene *scene, bool display_seconds, int colorid, const int base)

Variables

constexpr int subframe_range = 100

Macro Definition Documentation

◆ MIN_MAJOR_LINE_DISTANCE

#define MIN_MAJOR_LINE_DISTANCE   (U.v2d_min_gridsize * UI_SCALE_FAC)

Definition at line 38 of file view2d_draw.cc.

Referenced by calculate_grid_step(), and view2d_draw_lines().

Typedef Documentation

◆ PositionToString

Initial value:
void (*)(void *user_data, float v2d_pos, float v2d_step, char *r_str, uint str_maxncpy)
unsigned int uint

Definition at line 289 of file view2d_draw.cc.

Function Documentation

◆ calculate_grid_step()

int calculate_grid_step ( const int base,
const float pixel_width,
const float view_width )
static

Calculates the distance in frames between major lines. The lowest value it can return is 1.

Parameters
baseDefines how the step is calculated. The returned step is either a full fraction or a multiple of that number.

Definition at line 85 of file view2d_draw.cc.

References BLI_assert, distance(), get_divisor(), IS_EQF, MIN_MAJOR_LINE_DISTANCE, and result.

Referenced by calculate_grid_step_subframes(), UI_view2d_draw_lines_x__discrete_time(), UI_view2d_draw_lines_x__discrete_values(), UI_view2d_draw_scale_x__discrete_frames_or_seconds(), and UI_view2d_draw_scale_x__frames_or_seconds().

◆ calculate_grid_step_subframes()

◆ draw_horizontal_scale_indicators()

◆ draw_parallel_lines()

◆ draw_vertical_scale_indicators()

◆ get_divisor()

int get_divisor ( const int distance)
static

Definition at line 47 of file view2d_draw.cc.

References ARRAY_SIZE, distance(), i, and result.

Referenced by calculate_grid_step(), and view2d_draw_lines().

◆ get_parallel_lines_draw_steps()

void get_parallel_lines_draw_steps ( const ParallelLinesSet * lines,
float region_start,
float region_end,
float * r_first,
uint * r_steps )
static

◆ UI_view2d_draw_lines_x__discrete_frames_or_seconds()

void UI_view2d_draw_lines_x__discrete_frames_or_seconds ( const View2D * v2d,
const Scene * scene,
bool display_seconds,
bool display_minor_lines )

◆ UI_view2d_draw_lines_x__discrete_time()

void UI_view2d_draw_lines_x__discrete_time ( const View2D * v2d,
const int base,
bool display_minor_lines )

◆ UI_view2d_draw_lines_x__discrete_values()

void UI_view2d_draw_lines_x__discrete_values ( const View2D * v2d,
const int base,
bool display_minor_lines )

◆ UI_view2d_draw_lines_x__frames_or_seconds()

void UI_view2d_draw_lines_x__frames_or_seconds ( const View2D * v2d,
const Scene * scene,
bool display_seconds )

◆ UI_view2d_draw_lines_x__values()

void UI_view2d_draw_lines_x__values ( const View2D * v2d,
const int base )

◆ UI_view2d_draw_lines_y__values()

void UI_view2d_draw_lines_y__values ( const View2D * v2d,
int base )

Draw horizontal lines.

Parameters
baseDefines in what step the lines are drawn. Depending on the zoom level of the v2d the step is a full fraction of the given base.

Definition at line 511 of file view2d_draw.cc.

References BLI_rctf_size_y(), BLI_rcti_size_y(), calculate_grid_step_subframes(), View2D::cur, View2D::mask, and view2d_draw_lines().

Referenced by clip_draw_graph(), and graph_main_region_draw().

◆ UI_view2d_draw_scale_x__discrete_frames_or_seconds()

void UI_view2d_draw_scale_x__discrete_frames_or_seconds ( const ARegion * region,
const View2D * v2d,
const rcti * rect,
const Scene * scene,
bool display_seconds,
int colorid,
int base )

Draw a text scale in either frames or seconds. The minimum step distance is 1, meaning no subframe indicators will be drawn.

Definition at line 568 of file view2d_draw.cc.

References BLI_rctf_size_x(), BLI_rcti_size_x(), calculate_grid_step(), View2D::cur, draw_horizontal_scale_indicators(), View2D::mask, step, view_to_string__frame_number(), and view_to_string__time().

Referenced by ED_time_scrub_draw().

◆ UI_view2d_draw_scale_x__frames_or_seconds()

void UI_view2d_draw_scale_x__frames_or_seconds ( const ARegion * region,
const View2D * v2d,
const rcti * rect,
const Scene * scene,
bool display_seconds,
int colorid,
int base )

Draw a text scale in either frames or seconds. This can draw indicators on subframes, e.g. "1.5".

Definition at line 588 of file view2d_draw.cc.

References BLI_rctf_size_x(), BLI_rcti_size_x(), calculate_grid_step(), calculate_grid_step_subframes(), View2D::cur, draw_horizontal_scale_indicators(), View2D::mask, step, view_to_string__time(), and view_to_string__value().

Referenced by ED_time_scrub_draw().

◆ UI_view2d_draw_scale_y__values()

void UI_view2d_draw_scale_y__values ( const ARegion * region,
const View2D * v2d,
const rcti * rect,
int colorid,
int base )

◆ UI_view2d_grid_resolution_x__frames_or_seconds()

float UI_view2d_grid_resolution_x__frames_or_seconds ( const View2D * v2d,
const Scene * scene )

◆ UI_view2d_grid_resolution_y__values()

float UI_view2d_grid_resolution_y__values ( const View2D * v2d,
const int base )

◆ view2d_draw_lines()

◆ view2d_draw_lines_internal()

void view2d_draw_lines_internal ( const View2D * v2d,
const ParallelLinesSet * lines,
const uchar color[3],
char direction )
static

◆ view_to_string__frame_number()

void view_to_string__frame_number ( void * ,
float v2d_pos,
float ,
char * r_str,
uint str_maxncpy )
static

Definition at line 434 of file view2d_draw.cc.

References BLI_snprintf_utf8().

Referenced by UI_view2d_draw_scale_x__discrete_frames_or_seconds().

◆ view_to_string__time()

void view_to_string__time ( void * user_data,
float v2d_pos,
float v2d_step,
char * r_str,
uint str_maxncpy )
static

◆ view_to_string__value()

void view_to_string__value ( void * ,
float v2d_pos,
float v2d_step,
char * r_str,
uint str_maxncpy )
static

Variable Documentation

◆ subframe_range

int subframe_range = 100
constexpr

Definition at line 43 of file view2d_draw.cc.

Referenced by calculate_grid_step_subframes(), and view2d_draw_lines().