Blender V4.5
UI_view2d.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2008 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
10
11#pragma once
12
13#include "BLI_compiler_attrs.h"
14#include "BLI_rect.h"
15
16/* -------------------------------------------------------------------- */
19
21#define V2D_IS_CLIPPED 12000
22
43
45
46/* -------------------------------------------------------------------- */
49
51
52/* Maximum has to include outline which varies with line width. */
53#define V2D_SCROLL_HEIGHT ((0.45f * U.widget_unit) + (2.0f * U.pixelsize))
54#define V2D_SCROLL_WIDTH ((0.45f * U.widget_unit) + (2.0f * U.pixelsize))
55
56/* Alpha of scroll-bar when at minimum size. */
57#define V2D_SCROLL_MIN_ALPHA (0.4f)
58
59/* Minimum size needs to include outline which varies with line width. */
60#define V2D_SCROLL_MIN_WIDTH ((5.0f * UI_SCALE_FAC) + (2.0f * U.pixelsize))
61
62/* When to start showing the full-width scroller. */
63#define V2D_SCROLL_HIDE_WIDTH (AREAMINX * UI_SCALE_FAC)
64#define V2D_SCROLL_HIDE_HEIGHT (HEADERY * UI_SCALE_FAC)
65
67#define V2D_SCROLL_HANDLE_HEIGHT (0.6f * U.widget_unit)
68#define V2D_SCROLL_HANDLE_WIDTH (0.6f * U.widget_unit)
69
71#define V2D_SCROLL_HANDLE_SIZE_HOTSPOT (0.6f * U.widget_unit)
72
74#define V2D_SCROLL_THUMB_SIZE_MIN (30.0 * UI_SCALE_FAC)
75
77
78/* -------------------------------------------------------------------- */
81
82/* means copy it from another v2d */
83#define V2D_LOCK_SET 0
84/* means copy it to the other v2ds */
85#define V2D_LOCK_COPY 1
86
88
89/* -------------------------------------------------------------------- */
92
93/* Test if mouse in a scroll-bar (assume that scroller availability has been tested). */
94#define IN_2D_VERT_SCROLL(v2d, co) (BLI_rcti_isect_pt_v(&v2d->vert, co))
95#define IN_2D_HORIZ_SCROLL(v2d, co) (BLI_rcti_isect_pt_v(&v2d->hor, co))
96
97#define IN_2D_VERT_SCROLL_RECT(v2d, rct) (BLI_rcti_isect(&v2d->vert, rct, NULL))
98#define IN_2D_HORIZ_SCROLL_RECT(v2d, rct) (BLI_rcti_isect(&v2d->hor, rct, NULL))
99
101
102/* -------------------------------------------------------------------- */
105
106struct View2D;
107
108struct ARegion;
109struct Scene;
110struct ScrArea;
111struct bContext;
112struct bScreen;
113struct rctf;
114struct rcti;
115struct wmEvent;
116struct wmGizmoGroupType;
117struct wmKeyConfig;
118struct wmOperator;
119struct wmOperatorType;
120
122
123/* -------------------------------------------------------------------- */
126
139void UI_view2d_region_reinit(View2D *v2d, short type, int winx, int winy);
140
153void UI_view2d_sync(bScreen *screen, ScrArea *area, View2D *v2dcur, int flag);
154
161void UI_view2d_curRect_changed(const bContext *C, View2D *v2d);
162
163void UI_view2d_totRect_set(View2D *v2d, int width, int height);
164
165void UI_view2d_mask_from_win(const View2D *v2d, rcti *r_mask);
166
168
174
176
177/* -------------------------------------------------------------------- */
180
184void UI_view2d_view_ortho(const View2D *v2d);
191void UI_view2d_view_orthoSpecial(ARegion *region, View2D *v2d, bool xaxis);
196
198
199/* -------------------------------------------------------------------- */
202
207 const View2D *v2d, int colorid, float step, int level_size, int totlevels);
216void UI_view2d_dot_grid_draw(const View2D *v2d,
217 int grid_color_id,
218 float min_step,
219 int grid_subdivisions);
220
223void UI_view2d_draw_lines_x__discrete_values(const View2D *v2d, bool display_minor_lines);
225 const Scene *scene,
226 bool display_minor_lines);
228 const Scene *scene,
229 bool display_seconds,
230 bool display_minor_lines);
232 const Scene *scene,
233 bool display_seconds);
234
236 const Scene *scene,
237 bool display_seconds);
239
243void UI_view2d_draw_scale_y__values(const ARegion *region,
244 const View2D *v2d,
245 const rcti *rect,
246 int colorid);
247void UI_view2d_draw_scale_y__block(const ARegion *region,
248 const View2D *v2d,
249 const rcti *rect,
250 int colorid);
252 const View2D *v2d,
253 const rcti *rect,
254 const Scene *scene,
255 bool display_seconds,
256 int colorid);
258 const View2D *v2d,
259 const rcti *rect,
260 const Scene *scene,
261 bool display_seconds,
262 int colorid);
263
265
266/* -------------------------------------------------------------------- */
269
273void UI_view2d_scrollers_draw(View2D *v2d, const rcti *mask_custom);
274
276
277/* -------------------------------------------------------------------- */
280
293void UI_view2d_listview_view_to_cell(float columnwidth,
294 float rowheight,
295 float startx,
296 float starty,
297 float viewx,
298 float viewy,
299 int *r_column,
300 int *r_row);
301
303
304/* -------------------------------------------------------------------- */
307
308float UI_view2d_region_to_view_x(const View2D *v2d, float x);
309float UI_view2d_region_to_view_y(const View2D *v2d, float y);
317 const View2D *v2d, float x, float y, float *r_view_x, float *r_view_y) ATTR_NONNULL();
318void UI_view2d_region_to_view_rctf(const View2D *v2d, const rctf *rect_src, rctf *rect_dst)
319 ATTR_NONNULL();
320
321float UI_view2d_view_to_region_x(const View2D *v2d, float x);
322float UI_view2d_view_to_region_y(const View2D *v2d, float y);
331 const View2D *v2d, float x, float y, int *r_region_x, int *r_region_y) ATTR_NONNULL();
332
334 const float xy_a[2],
335 const float xy_b[2],
336 int r_region_a[2],
337 int r_region_b[2]) ATTR_NONNULL();
338
348 const View2D *v2d, float x, float y, int *r_region_x, int *r_region_y) ATTR_NONNULL();
350 const View2D *v2d, float x, float y, float *r_region_x, float *r_region_y) ATTR_NONNULL();
351void UI_view2d_view_to_region_m4(const View2D *v2d, float matrix[4][4]) ATTR_NONNULL();
352void UI_view2d_view_to_region_rcti(const View2D *v2d, const rctf *rect_src, rcti *rect_dst)
353 ATTR_NONNULL();
354bool UI_view2d_view_to_region_rcti_clip(const View2D *v2d, const rctf *rect_src, rcti *rect_dst)
355 ATTR_NONNULL();
356
358
359/* -------------------------------------------------------------------- */
362
372
379void UI_view2d_scroller_size_get(const View2D *v2d, bool mapped, float *r_x, float *r_y);
388void UI_view2d_scale_get(const View2D *v2d, float *r_x, float *r_y);
389float UI_view2d_scale_get_x(const View2D *v2d);
390float UI_view2d_scale_get_y(const View2D *v2d);
394void UI_view2d_scale_get_inverse(const View2D *v2d, float *r_x, float *r_y);
395
400void UI_view2d_center_get(const View2D *v2d, float *r_x, float *r_y);
401void UI_view2d_center_set(View2D *v2d, float x, float y);
402
409void UI_view2d_offset(View2D *v2d, float xfac, float yfac);
410
415
428 const View2D *v2d,
429 const int xy[2],
430 int *r_scroll) ATTR_NONNULL(1, 2, 3, 4);
431char UI_view2d_mouse_in_scrollers(const ARegion *region, const View2D *v2d, const int xy[2])
432 ATTR_NONNULL(1, 2, 3);
434 const View2D *v2d,
435 const rcti *rect,
436 int *r_scroll) ATTR_NONNULL(1, 2, 3);
437char UI_view2d_rect_in_scrollers(const ARegion *region, const View2D *v2d, const rcti *rect)
438 ATTR_NONNULL(1, 2, 3);
439
444 View2D *v2d, float x, float y, const char *str, size_t str_len, const unsigned char col[4]);
449 const rctf *rect_view,
450 const char *str,
451 size_t str_len,
452 const unsigned char col[4]);
454
456
457/* -------------------------------------------------------------------- */
460
462void ED_keymap_view2d(wmKeyConfig *keyconf);
463
468void UI_view2d_smooth_view(const bContext *C, ARegion *region, const rctf *cur, int smooth_viewtx);
469
470#define UI_MARKER_MARGIN_Y (42 * UI_SCALE_FAC)
471#define UI_TIME_SCRUB_MARGIN_Y (23 * UI_SCALE_FAC)
472#define UI_TIME_CACHE_MARGIN_Y (UI_TIME_SCRUB_MARGIN_Y / 6.0f)
473#define UI_ANIM_MINY (HEADERY * UI_SCALE_FAC * 1.1f)
474#define UI_MARKERS_MINY (HEADERY * UI_SCALE_FAC * 2.0f)
475
477
478/* -------------------------------------------------------------------- */
481
482/* `view2d_gizmo_navigate.cc` */
483
487void VIEW2D_GGT_navigate_impl(wmGizmoGroupType *gzgt, const char *idname);
488
490
491/* -------------------------------------------------------------------- */
494
543
546 float inside_pad,
547 float outside_pad,
548 float speed_ramp,
549 float max_speed,
550 float delay,
551 float zoom_influence);
552
557 View2DEdgePanData *vpd, float xmin, float xmax, float ymin, float ymax);
558
560
565 ATTR_NONNULL(1, 2, 3);
566
571
573
575
577 float inside_pad,
578 float outside_pad,
579 float speed_ramp,
580 float max_speed,
581 float delay,
582 float zoom_influence);
583
588
#define ATTR_NONNULL(...)
#define C
Definition RandGen.cpp:29
void UI_view2d_curRect_validate(View2D *v2d)
Definition view2d.cc:828
float UI_view2d_grid_resolution_x__frames_or_seconds(const View2D *v2d, const Scene *scene, bool display_seconds)
void UI_view2d_smooth_view(const bContext *C, ARegion *region, const rctf *cur, int smooth_viewtx)
char UI_view2d_mouse_in_scrollers_ex(const ARegion *region, const View2D *v2d, const int xy[2], int *r_scroll) ATTR_NONNULL(1
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)
void UI_view2d_sync(bScreen *screen, ScrArea *area, View2D *v2dcur, int flag)
Definition view2d.cc:865
View2D * UI_view2d_fromcontext_rwin(const bContext *C)
Definition view2d.cc:1868
void UI_view2d_draw_lines_x__values(const View2D *v2d)
void UI_view2d_scale_get_inverse(const View2D *v2d, float *r_x, float *r_y)
Definition view2d.cc:1928
void UI_view2d_curRect_reset(View2D *v2d)
Definition view2d.cc:928
void ED_operatortypes_view2d()
void UI_view2d_view_orthoSpecial(ARegion *region, View2D *v2d, bool xaxis)
Definition view2d.cc:1136
char char char char void UI_view2d_text_cache_add(View2D *v2d, float x, float y, const char *str, size_t str_len, const unsigned char col[4])
Definition view2d.cc:2081
void UI_view2d_edge_pan_operator_init(bContext *C, View2DEdgePanData *vpd, wmOperator *op)
bool UI_view2d_view_to_region_segment_clip(const View2D *v2d, const float xy_a[2], const float xy_b[2], int r_region_a[2], int r_region_b[2]) ATTR_NONNULL()
Definition view2d.cc:1750
void UI_view2d_edge_pan_set_limits(View2DEdgePanData *vpd, float xmin, float xmax, float ymin, float ymax)
char char UI_view2d_mouse_in_scrollers(const ARegion *region, const View2D *v2d, const int xy[2]) ATTR_NONNULL(1
void UI_view2d_draw_lines_x__frames_or_seconds(const View2D *v2d, const Scene *scene, bool display_seconds)
void UI_view2d_multi_grid_draw(const View2D *v2d, int colorid, float step, int level_size, int totlevels)
Definition view2d.cc:1180
void UI_view2d_edge_pan_cancel(bContext *C, View2DEdgePanData *vpd)
void UI_view2d_edge_pan_operator_properties_ex(wmOperatorType *ot, float inside_pad, float outside_pad, float speed_ramp, float max_speed, float delay, float zoom_influence)
void UI_view2d_edge_pan_init(bContext *C, View2DEdgePanData *vpd, float inside_pad, float outside_pad, float speed_ramp, float max_speed, float delay, float zoom_influence)
void UI_view2d_curRect_clamp_y(View2D *v2d)
Definition view2d.cc:844
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)
void UI_view2d_view_to_region_m4(const View2D *v2d, float matrix[4][4]) ATTR_NONNULL()
Definition view2d.cc:1807
void UI_view2d_scrollers_draw(View2D *v2d, const rcti *mask_custom)
Definition view2d.cc:1503
void UI_view2d_draw_lines_y__values(const View2D *v2d)
void UI_view2d_view_restore(const bContext *C)
Definition view2d.cc:1162
void UI_view2d_region_reinit(View2D *v2d, short type, int winx, int winy)
Definition view2d.cc:221
void UI_view2d_curRect_changed(const bContext *C, View2D *v2d)
Definition view2d.cc:833
void VIEW2D_GGT_navigate_impl(wmGizmoGroupType *gzgt, const char *idname)
void UI_view2d_edge_pan_apply(bContext *C, View2DEdgePanData *vpd, const int xy[2]) ATTR_NONNULL(1
void UI_view2d_text_cache_draw(ARegion *region)
Definition view2d.cc:2141
float UI_view2d_region_to_view_y(const View2D *v2d, float y)
Definition view2d.cc:1661
void UI_view2d_totRect_set(View2D *v2d, int width, int height)
Definition view2d.cc:1036
bool UI_view2d_view_to_region_clip(const View2D *v2d, float x, float y, int *r_region_x, int *r_region_y) ATTR_NONNULL()
Definition view2d.cc:1701
void UI_view2d_edge_pan_operator_properties(wmOperatorType *ot)
float UI_view2d_view_to_region_y(const View2D *v2d, float y)
Definition view2d.cc:1695
void UI_view2d_listview_view_to_cell(float columnwidth, float rowheight, float startx, float starty, float viewx, float viewy, int *r_column, int *r_row)
Definition view2d.cc:1620
void UI_view2d_text_cache_add_rectf(View2D *v2d, const rctf *rect_view, const char *str, size_t str_len, const unsigned char col[4])
Definition view2d.cc:2111
void UI_view2d_center_get(const View2D *v2d, float *r_x, float *r_y)
Definition view2d.cc:1938
bool UI_view2d_view_to_region_rcti_clip(const View2D *v2d, const rctf *rect_src, rcti *rect_dst) ATTR_NONNULL()
Definition view2d.cc:1815
void UI_view2d_view_ortho(const View2D *v2d)
Definition view2d.cc:1095
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_view_to_region_fl(const View2D *v2d, float x, float y, float *r_region_x, float *r_region_y) ATTR_NONNULL()
Definition view2d.cc:1738
void UI_view2d_draw_lines_x__discrete_values(const View2D *v2d, bool display_minor_lines)
char char char char UI_view2d_rect_in_scrollers(const ARegion *region, const View2D *v2d, const rcti *rect) ATTR_NONNULL(1
void UI_view2d_draw_lines_x__discrete_time(const View2D *v2d, const Scene *scene, bool display_minor_lines)
float UI_view2d_grid_resolution_y__values(const View2D *v2d)
void UI_view2d_edge_pan_reset(View2DEdgePanData *vpd)
View2D * UI_view2d_fromcontext(const bContext *C)
Definition view2d.cc:1854
void ED_keymap_view2d(wmKeyConfig *keyconf)
void UI_view2d_draw_scale_y__values(const ARegion *region, const View2D *v2d, const rcti *rect, int colorid)
float UI_view2d_scale_get_y(const View2D *v2d)
Definition view2d.cc:1924
void UI_view2d_scroller_size_get(const View2D *v2d, bool mapped, float *r_x, float *r_y)
Definition view2d.cc:1886
void UI_view2d_offset(View2D *v2d, float xfac, float yfac)
Definition view2d.cc:1956
void UI_view2d_scale_get(const View2D *v2d, float *r_x, float *r_y)
Definition view2d.cc:1911
bool UI_view2d_area_supports_sync(ScrArea *area)
Definition view2d.cc:860
void UI_view2d_draw_scale_y__block(const ARegion *region, const View2D *v2d, const rcti *rect, int colorid)
void UI_view2d_mask_from_win(const View2D *v2d, rcti *r_mask)
Definition view2d.cc:109
void UI_view2d_region_to_view(const View2D *v2d, float x, float y, float *r_view_x, float *r_view_y) ATTR_NONNULL()
Definition view2d.cc:1667
void UI_view2d_offset_y_snap_to_closest_page(View2D *v2d)
Definition view2d.cc:1979
void UI_view2d_center_set(View2D *v2d, float x, float y)
Definition view2d.cc:1948
void UI_view2d_dot_grid_draw(const View2D *v2d, int grid_color_id, float min_step, int grid_subdivisions)
Definition view2d.cc:1287
float UI_view2d_region_to_view_x(const View2D *v2d, float x)
Definition view2d.cc:1656
eView2D_CommonViewTypes
Definition UI_view2d.hh:29
@ V2D_COMMONVIEW_LIST
Definition UI_view2d.hh:35
@ V2D_COMMONVIEW_STACK
Definition UI_view2d.hh:37
@ V2D_COMMONVIEW_HEADER
Definition UI_view2d.hh:39
@ V2D_COMMONVIEW_CUSTOM
Definition UI_view2d.hh:31
@ V2D_COMMONVIEW_STANDARD
Definition UI_view2d.hh:33
@ V2D_COMMONVIEW_PANELS_UI
Definition UI_view2d.hh:41
float UI_view2d_view_to_region_x(const View2D *v2d, float x)
Definition view2d.cc:1690
void void UI_view2d_edge_pan_apply_event(bContext *C, View2DEdgePanData *vpd, const wmEvent *event)
char char char UI_view2d_rect_in_scrollers_ex(const ARegion *region, const View2D *v2d, const rcti *rect, int *r_scroll) ATTR_NONNULL(1
void UI_view2d_view_to_region(const View2D *v2d, float x, float y, int *r_region_x, int *r_region_y) ATTR_NONNULL()
Definition view2d.cc:1722
void UI_view2d_zoom_cache_reset()
Definition view2d.cc:1041
void UI_view2d_view_to_region_rcti(const View2D *v2d, const rctf *rect_src, rcti *rect_dst) ATTR_NONNULL()
Definition view2d.cc:1785
void UI_view2d_region_to_view_rctf(const View2D *v2d, const rctf *rect_src, rctf *rect_dst) ATTR_NONNULL()
Definition view2d.cc:1674
float UI_view2d_scale_get_x(const View2D *v2d)
Definition view2d.cc:1920
#define str(s)
uint col
VecBase< float, D > step(VecOp< float, D >, VecOp< float, D >) RET
double edge_pan_last_time
Definition UI_view2d.hh:540
double edge_pan_start_time_x
Definition UI_view2d.hh:541
struct rctf limit
Definition UI_view2d.hh:508
double edge_pan_start_time_y
Definition UI_view2d.hh:541
float xmax
float xmin
float ymax
float ymin
const char * idname
Definition WM_types.hh:1032
int xy[2]
Definition wm_draw.cc:174
wmOperatorType * ot
Definition wm_files.cc:4226
uint8_t flag
Definition wm_window.cc:139