Blender V5.0
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
227void UI_view2d_draw_lines_y__values(const View2D *v2d, int base);
228void UI_view2d_draw_lines_x__values(const View2D *v2d, int base);
230 int base,
231 bool display_minor_lines);
232void UI_view2d_draw_lines_x__discrete_time(const View2D *v2d, int base, bool display_minor_lines);
234 const Scene *scene,
235 bool display_seconds,
236 bool display_minor_lines);
238 const Scene *scene,
239 bool display_seconds);
240
241float UI_view2d_grid_resolution_x__frames_or_seconds(const View2D *v2d, const Scene *scene);
242float UI_view2d_grid_resolution_y__values(const View2D *v2d, int base);
243
248 const ARegion *region, const View2D *v2d, const rcti *rect, int colorid, int base);
254 const View2D *v2d,
255 const rcti *rect,
256 const Scene *scene,
257 bool display_seconds,
258 int colorid,
259 int base);
265 const View2D *v2d,
266 const rcti *rect,
267 const Scene *scene,
268 bool display_seconds,
269 int colorid,
270 int base);
271
273
274/* -------------------------------------------------------------------- */
277
281void UI_view2d_scrollers_draw(View2D *v2d, const rcti *mask_custom);
282
284
285/* -------------------------------------------------------------------- */
288
301void UI_view2d_listview_view_to_cell(float columnwidth,
302 float rowheight,
303 float startx,
304 float starty,
305 float viewx,
306 float viewy,
307 int *r_column,
308 int *r_row);
309
311
312/* -------------------------------------------------------------------- */
315
316float UI_view2d_region_to_view_x(const View2D *v2d, float x);
317float UI_view2d_region_to_view_y(const View2D *v2d, float y);
325 const View2D *v2d, float x, float y, float *r_view_x, float *r_view_y) ATTR_NONNULL();
326void UI_view2d_region_to_view_rctf(const View2D *v2d, const rctf *rect_src, rctf *rect_dst)
327 ATTR_NONNULL();
328
329float UI_view2d_view_to_region_x(const View2D *v2d, float x);
330float UI_view2d_view_to_region_y(const View2D *v2d, float y);
339 const View2D *v2d, float x, float y, int *r_region_x, int *r_region_y) ATTR_NONNULL();
340
342 const float xy_a[2],
343 const float xy_b[2],
344 int r_region_a[2],
345 int r_region_b[2]) ATTR_NONNULL();
346
356 const View2D *v2d, float x, float y, int *r_region_x, int *r_region_y) ATTR_NONNULL();
358 const View2D *v2d, float x, float y, float *r_region_x, float *r_region_y) ATTR_NONNULL();
359void UI_view2d_view_to_region_m4(const View2D *v2d, float matrix[4][4]) ATTR_NONNULL();
360void UI_view2d_view_to_region_rcti(const View2D *v2d, const rctf *rect_src, rcti *rect_dst)
361 ATTR_NONNULL();
362bool UI_view2d_view_to_region_rcti_clip(const View2D *v2d, const rctf *rect_src, rcti *rect_dst)
363 ATTR_NONNULL();
364
366
367/* -------------------------------------------------------------------- */
370
380
387void UI_view2d_scroller_size_get(const View2D *v2d, bool mapped, float *r_x, float *r_y);
396void UI_view2d_scale_get(const View2D *v2d, float *r_x, float *r_y);
397float UI_view2d_scale_get_x(const View2D *v2d);
398float UI_view2d_scale_get_y(const View2D *v2d);
402void UI_view2d_scale_get_inverse(const View2D *v2d, float *r_x, float *r_y);
403
408void UI_view2d_center_get(const View2D *v2d, float *r_x, float *r_y);
409void UI_view2d_center_set(View2D *v2d, float x, float y);
410
417void UI_view2d_offset(View2D *v2d, float xfac, float yfac);
418
423
436 const View2D *v2d,
437 const int xy[2],
438 int *r_scroll) ATTR_NONNULL(1, 2, 3, 4);
439char UI_view2d_mouse_in_scrollers(const ARegion *region, const View2D *v2d, const int xy[2])
440 ATTR_NONNULL(1, 2, 3);
442 const View2D *v2d,
443 const rcti *rect,
444 int *r_scroll) ATTR_NONNULL(1, 2, 3);
445char UI_view2d_rect_in_scrollers(const ARegion *region, const View2D *v2d, const rcti *rect)
446 ATTR_NONNULL(1, 2, 3);
447
452 View2D *v2d, float x, float y, const char *str, size_t str_len, const unsigned char col[4]);
457 const rctf *rect_view,
458 const char *str,
459 size_t str_len,
460 const unsigned char col[4]);
462
464
465/* -------------------------------------------------------------------- */
468
470void ED_keymap_view2d(wmKeyConfig *keyconf);
471
476void UI_view2d_smooth_view(const bContext *C, ARegion *region, const rctf *cur, int smooth_viewtx);
477
478#define UI_MARKER_MARGIN_Y (42 * UI_SCALE_FAC)
479#define UI_TIME_SCRUB_MARGIN_Y (23 * UI_SCALE_FAC)
480#define UI_TIME_CACHE_MARGIN_Y (UI_TIME_SCRUB_MARGIN_Y / 6.0f)
481#define UI_ANIM_MINY (HEADERY * UI_SCALE_FAC * 1.1f)
482#define UI_MARKERS_MINY (HEADERY * UI_SCALE_FAC * 2.0f)
483
485
486/* -------------------------------------------------------------------- */
489
490/* `view2d_gizmo_navigate.cc` */
491
495void VIEW2D_GGT_navigate_impl(wmGizmoGroupType *gzgt, const char *idname);
496
498
499/* -------------------------------------------------------------------- */
502
551
554 float inside_pad,
555 float outside_pad,
556 float speed_ramp,
557 float max_speed,
558 float delay,
559 float zoom_influence);
560
565 View2DEdgePanData *vpd, float xmin, float xmax, float ymin, float ymax);
566
568
573 ATTR_NONNULL(1, 2, 3);
574
579
581
583
585 float inside_pad,
586 float outside_pad,
587 float speed_ramp,
588 float max_speed,
589 float delay,
590 float zoom_influence);
591
596
#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)
void UI_view2d_draw_scale_y__values(const ARegion *region, const View2D *v2d, const rcti *rect, int colorid, int base)
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_sync(bScreen *screen, ScrArea *area, View2D *v2dcur, int flag)
Definition view2d.cc:865
View2D * UI_view2d_fromcontext_rwin(const bContext *C)
Definition view2d.cc:1869
void UI_view2d_draw_lines_x__discrete_time(const View2D *v2d, int base, bool display_minor_lines)
void UI_view2d_draw_lines_y__values(const View2D *v2d, int base)
void UI_view2d_scale_get_inverse(const View2D *v2d, float *r_x, float *r_y)
Definition view2d.cc:1929
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:2082
void UI_view2d_edge_pan_operator_init(bContext *C, View2DEdgePanData *vpd, wmOperator *op)
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)
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:1751
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_draw_lines_x__values(const View2D *v2d, int base)
void UI_view2d_draw_lines_x__discrete_values(const View2D *v2d, int base, bool display_minor_lines)
void UI_view2d_curRect_clamp_y(View2D *v2d)
Definition view2d.cc:844
void UI_view2d_view_to_region_m4(const View2D *v2d, float matrix[4][4]) ATTR_NONNULL()
Definition view2d.cc:1808
void UI_view2d_scrollers_draw(View2D *v2d, const rcti *mask_custom)
Definition view2d.cc:1504
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:2142
float UI_view2d_region_to_view_y(const View2D *v2d, float y)
Definition view2d.cc:1662
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:1702
void UI_view2d_edge_pan_operator_properties(wmOperatorType *ot)
float UI_view2d_view_to_region_y(const View2D *v2d, float y)
Definition view2d.cc:1696
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)
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:1621
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:2112
void UI_view2d_center_get(const View2D *v2d, float *r_x, float *r_y)
Definition view2d.cc:1939
bool UI_view2d_view_to_region_rcti_clip(const View2D *v2d, const rctf *rect_src, rcti *rect_dst) ATTR_NONNULL()
Definition view2d.cc:1816
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:1739
char char char char UI_view2d_rect_in_scrollers(const ARegion *region, const View2D *v2d, const rcti *rect) ATTR_NONNULL(1
void UI_view2d_edge_pan_reset(View2DEdgePanData *vpd)
View2D * UI_view2d_fromcontext(const bContext *C)
Definition view2d.cc:1855
float UI_view2d_grid_resolution_y__values(const View2D *v2d, int base)
void ED_keymap_view2d(wmKeyConfig *keyconf)
float UI_view2d_scale_get_y(const View2D *v2d)
Definition view2d.cc:1925
void UI_view2d_scroller_size_get(const View2D *v2d, bool mapped, float *r_x, float *r_y)
Definition view2d.cc:1887
void UI_view2d_offset(View2D *v2d, float xfac, float yfac)
Definition view2d.cc:1957
void UI_view2d_scale_get(const View2D *v2d, float *r_x, float *r_y)
Definition view2d.cc:1912
bool UI_view2d_area_supports_sync(ScrArea *area)
Definition view2d.cc:860
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:1668
void UI_view2d_offset_y_snap_to_closest_page(View2D *v2d)
Definition view2d.cc:1980
void UI_view2d_center_set(View2D *v2d, float x, float y)
Definition view2d.cc:1949
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:1657
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:1691
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:1723
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:1786
void UI_view2d_region_to_view_rctf(const View2D *v2d, const rctf *rect_src, rctf *rect_dst) ATTR_NONNULL()
Definition view2d.cc:1675
float UI_view2d_scale_get_x(const View2D *v2d)
Definition view2d.cc:1921
#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:548
double edge_pan_start_time_x
Definition UI_view2d.hh:549
struct rctf limit
Definition UI_view2d.hh:516
double edge_pan_start_time_y
Definition UI_view2d.hh:549
float xmax
float xmin
float ymax
float ymin
const char * idname
Definition WM_types.hh:1035
int xy[2]
Definition wm_draw.cc:178
wmOperatorType * ot
Definition wm_files.cc:4237
uint8_t flag
Definition wm_window.cc:145