Blender V4.3
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
11#pragma once
12
13#include "BLI_compiler_attrs.h"
14#include "BLI_rect.h"
15
16/* -------------------------------------------------------------------- */
21#define V2D_IS_CLIPPED 12000
22
43
46/* -------------------------------------------------------------------- */
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
78/* -------------------------------------------------------------------- */
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
89/* -------------------------------------------------------------------- */
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
102/* -------------------------------------------------------------------- */
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
123/* -------------------------------------------------------------------- */
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
177/* -------------------------------------------------------------------- */
184void UI_view2d_view_ortho(const View2D *v2d);
191void UI_view2d_view_orthoSpecial(ARegion *region, View2D *v2d, bool xaxis);
195void UI_view2d_view_restore(const bContext *C);
196
199/* -------------------------------------------------------------------- */
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
266/* -------------------------------------------------------------------- */
273void UI_view2d_scrollers_draw_ex(View2D *v2d, const rcti *mask_custom, bool use_full_hide);
274void UI_view2d_scrollers_draw(View2D *v2d, const rcti *mask_custom);
275
278/* -------------------------------------------------------------------- */
294void UI_view2d_listview_view_to_cell(float columnwidth,
295 float rowheight,
296 float startx,
297 float starty,
298 float viewx,
299 float viewy,
300 int *r_column,
301 int *r_row);
302
305/* -------------------------------------------------------------------- */
309float UI_view2d_region_to_view_x(const View2D *v2d, float x);
310float UI_view2d_region_to_view_y(const View2D *v2d, float y);
318 const View2D *v2d, float x, float y, float *r_view_x, float *r_view_y) ATTR_NONNULL();
319void UI_view2d_region_to_view_rctf(const View2D *v2d, const rctf *rect_src, rctf *rect_dst)
320 ATTR_NONNULL();
321
322float UI_view2d_view_to_region_x(const View2D *v2d, float x);
323float UI_view2d_view_to_region_y(const View2D *v2d, float y);
332 const View2D *v2d, float x, float y, int *r_region_x, int *r_region_y) ATTR_NONNULL();
333
335 const float xy_a[2],
336 const float xy_b[2],
337 int r_region_a[2],
338 int r_region_b[2]) ATTR_NONNULL();
339
349 const View2D *v2d, float x, float y, int *r_region_x, int *r_region_y) ATTR_NONNULL();
351 const View2D *v2d, float x, float y, float *r_region_x, float *r_region_y) ATTR_NONNULL();
352void UI_view2d_view_to_region_m4(const View2D *v2d, float matrix[4][4]) ATTR_NONNULL();
353void UI_view2d_view_to_region_rcti(const View2D *v2d, const rctf *rect_src, rcti *rect_dst)
354 ATTR_NONNULL();
355bool UI_view2d_view_to_region_rcti_clip(const View2D *v2d, const rctf *rect_src, rcti *rect_dst)
356 ATTR_NONNULL();
357
360/* -------------------------------------------------------------------- */
373
380void UI_view2d_scroller_size_get(const View2D *v2d, bool mapped, float *r_x, float *r_y);
389void UI_view2d_scale_get(const View2D *v2d, float *r_x, float *r_y);
390float UI_view2d_scale_get_x(const View2D *v2d);
391float UI_view2d_scale_get_y(const View2D *v2d);
395void UI_view2d_scale_get_inverse(const View2D *v2d, float *r_x, float *r_y);
396
401void UI_view2d_center_get(const View2D *v2d, float *r_x, float *r_y);
402void UI_view2d_center_set(View2D *v2d, float x, float y);
403
410void UI_view2d_offset(View2D *v2d, float xfac, float yfac);
411
416
429 const View2D *v2d,
430 const int xy[2],
431 int *r_scroll) ATTR_NONNULL(1, 2, 3, 4);
432char UI_view2d_mouse_in_scrollers(const ARegion *region, const View2D *v2d, const int xy[2])
433 ATTR_NONNULL(1, 2, 3);
435 const View2D *v2d,
436 const rcti *rect,
437 int *r_scroll) ATTR_NONNULL(1, 2, 3);
438char UI_view2d_rect_in_scrollers(const ARegion *region, const View2D *v2d, const rcti *rect)
439 ATTR_NONNULL(1, 2, 3);
440
445 View2D *v2d, float x, float y, const char *str, size_t str_len, const unsigned char col[4]);
450 const rctf *rect_view,
451 const char *str,
452 size_t str_len,
453 const unsigned char col[4]);
455
458/* -------------------------------------------------------------------- */
463void ED_keymap_view2d(wmKeyConfig *keyconf);
464
469void UI_view2d_smooth_view(const bContext *C, ARegion *region, const rctf *cur, int smooth_viewtx);
470
471#define UI_MARKER_MARGIN_Y (42 * UI_SCALE_FAC)
472#define UI_TIME_SCRUB_MARGIN_Y (23 * UI_SCALE_FAC)
473#define UI_TIME_CACHE_MARGIN_Y (UI_TIME_SCRUB_MARGIN_Y / 6.0f)
474
477/* -------------------------------------------------------------------- */
481/* `view2d_gizmo_navigate.cc` */
482
486void VIEW2D_GGT_navigate_impl(wmGizmoGroupType *gzgt, const char *idname);
487
490/* -------------------------------------------------------------------- */
542
545 float inside_pad,
546 float outside_pad,
547 float speed_ramp,
548 float max_speed,
549 float delay,
550 float zoom_influence);
551
556 View2DEdgePanData *vpd, float xmin, float xmax, float ymin, float ymax);
557
559
564 ATTR_NONNULL(1, 2, 3);
565
570
572
574
576 float inside_pad,
577 float outside_pad,
578 float speed_ramp,
579 float max_speed,
580 float delay,
581 float zoom_influence);
582
587
#define ATTR_NONNULL(...)
void UI_view2d_curRect_validate(View2D *v2d)
Definition view2d.cc:824
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:861
View2D * UI_view2d_fromcontext_rwin(const bContext *C)
Definition view2d.cc:1864
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:1924
void UI_view2d_curRect_reset(View2D *v2d)
Definition view2d.cc:924
void ED_operatortypes_view2d()
void UI_view2d_view_orthoSpecial(ARegion *region, View2D *v2d, bool xaxis)
Definition view2d.cc:1132
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:2077
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:1746
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:1176
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:840
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:1803
void UI_view2d_scrollers_draw(View2D *v2d, const rcti *mask_custom)
Definition view2d.cc:1605
void UI_view2d_draw_lines_y__values(const View2D *v2d)
void UI_view2d_view_restore(const bContext *C)
Definition view2d.cc:1158
void UI_view2d_region_reinit(View2D *v2d, short type, int winx, int winy)
Definition view2d.cc:212
void UI_view2d_curRect_changed(const bContext *C, View2D *v2d)
Definition view2d.cc:829
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:2137
float UI_view2d_region_to_view_y(const View2D *v2d, float y)
Definition view2d.cc:1657
void UI_view2d_totRect_set(View2D *v2d, int width, int height)
Definition view2d.cc:1032
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:1697
void UI_view2d_edge_pan_operator_properties(wmOperatorType *ot)
float UI_view2d_view_to_region_y(const View2D *v2d, float y)
Definition view2d.cc:1691
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:1616
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:2107
void UI_view2d_center_get(const View2D *v2d, float *r_x, float *r_y)
Definition view2d.cc:1934
bool UI_view2d_view_to_region_rcti_clip(const View2D *v2d, const rctf *rect_src, rcti *rect_dst) ATTR_NONNULL()
Definition view2d.cc:1811
void UI_view2d_view_ortho(const View2D *v2d)
Definition view2d.cc:1091
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:1734
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:1850
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:1920
void UI_view2d_scroller_size_get(const View2D *v2d, bool mapped, float *r_x, float *r_y)
Definition view2d.cc:1882
void UI_view2d_offset(View2D *v2d, float xfac, float yfac)
Definition view2d.cc:1952
void UI_view2d_scale_get(const View2D *v2d, float *r_x, float *r_y)
Definition view2d.cc:1907
bool UI_view2d_area_supports_sync(ScrArea *area)
Definition view2d.cc:856
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:1663
void UI_view2d_offset_y_snap_to_closest_page(View2D *v2d)
Definition view2d.cc:1975
void UI_view2d_center_set(View2D *v2d, float x, float y)
Definition view2d.cc:1944
void UI_view2d_dot_grid_draw(const View2D *v2d, int grid_color_id, float min_step, int grid_subdivisions)
Definition view2d.cc:1283
float UI_view2d_region_to_view_x(const View2D *v2d, float x)
Definition view2d.cc:1652
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:1686
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:1718
void UI_view2d_zoom_cache_reset()
Definition view2d.cc:1037
void UI_view2d_view_to_region_rcti(const View2D *v2d, const rctf *rect_src, rcti *rect_dst) ATTR_NONNULL()
Definition view2d.cc:1781
void UI_view2d_scrollers_draw_ex(View2D *v2d, const rcti *mask_custom, bool use_full_hide)
Definition view2d.cc:1510
void UI_view2d_region_to_view_rctf(const View2D *v2d, const rctf *rect_src, rctf *rect_dst) ATTR_NONNULL()
Definition view2d.cc:1670
float UI_view2d_scale_get_x(const View2D *v2d)
Definition view2d.cc:1916
#define str(s)
uint col
double edge_pan_last_time
Definition UI_view2d.hh:539
double edge_pan_start_time_x
Definition UI_view2d.hh:540
struct rctf limit
Definition UI_view2d.hh:507
double edge_pan_start_time_y
Definition UI_view2d.hh:540
float xmax
float xmin
float ymax
float ymin
const char * idname
Definition WM_types.hh:992
int xy[2]
Definition wm_draw.cc:170
wmOperatorType * ot
Definition wm_files.cc:4125
uint8_t flag
Definition wm_window.cc:138