Blender V4.5
wm_gizmo_intern.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2023 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
8
9#pragma once
10
11#include "DNA_listBase.h"
12#include "WM_gizmo_types.hh"
13
14struct BLI_Buffer;
15struct wmGizmoMap;
16struct wmGizmoGroupType;
17struct wmGizmoMapType;
18struct wmGizmoType;
19struct wmKeyConfig;
20struct wmWindowManager;
21
22#include "wm_gizmo_fn.hh"
23
24/* -------------------------------------------------------------------- */
25/* #wmGizmo. */
26
34 wmGizmoMap *gzmap, wmGizmo *gz, bool select, bool use_array, bool use_callback);
36
38void wm_gizmo_update(wmGizmo *gz, const bContext *C, bool refresh_map);
39
41enum {
44};
45
46/* -------------------------------------------------------------------- */
47/* #wmGizmoGroup. */
48
49enum {
56};
57
69 const wmGizmoGroup *gzgroup,
70 bContext *C,
71 int event_modifier,
72 const int mval[2],
73 int *r_part);
79 const wmGizmoGroup *gzgroup,
80 int event_modifier,
81 BLI_Buffer *visible_gizmos);
84
86
88
89/* -------------------------------------------------------------------- */
90/* #wmGizmoMap. */
91
96
97struct wmGizmoMap {
99 ListBase groups; /* #wmGizmoGroup. */
100
101 /* Private, update tagging (enum defined in C source). */
103
106
109
112
119 struct {
127 int event_xy[2];
132};
133
143 /* Types of gizmo-groups for this gizmo-map type. */
145
146 /* #eGizmoMapTypeUpdateFlags. */
148};
149
156void wm_gizmomap_select_array_shrink(wmGizmoMap *gzmap, int len_subtract);
These structs are the foundation for all linked lists in the library system.
#define C
Definition RandGen.cpp:29
eWM_GizmoFlagMapDrawStep
eWM_GizmoFlagMapTypeUpdateFlag
#define WM_GIZMOMAP_DRAWSTEP_MAX
#define select(A, B, C)
struct wmGizmo ** items
eWM_GizmoFlagMapTypeUpdateFlag type_update_flag
wmGizmoMapType * next
wmGizmoMapType * prev
wmGizmoMapSelectState select
char update_flag[WM_GIZMOMAP_DRAWSTEP_MAX]
struct wmGizmoMap::@176324062253052324135223064236045247240266151116 gzmap_context
Gizmo map runtime context.
wmGizmo * modal
bool tag_highlight_pending
ListBase groups
wmGizmoMapType * type
wmGizmo * highlight
wmGizmo * wm_gizmogroup_find_intersected_gizmo(wmWindowManager *wm, const wmGizmoGroup *gzgroup, bContext *C, int event_modifier, const int mval[2], int *r_part)
bool wm_gizmo_select_set_ex(wmGizmoMap *gzmap, wmGizmo *gz, bool select, bool use_array, bool use_callback)
Definition wm_gizmo.cc:359
@ WM_GIZMO_IS_VISIBLE_DRAW
@ WM_GIZMO_IS_VISIBLE_UPDATE
void wm_gizmogroup_gizmo_register(wmGizmoGroup *gzgroup, wmGizmo *gz)
void wm_gizmogrouptype_setup_keymap(wmGizmoGroupType *gzgt, wmKeyConfig *keyconf)
wmKeyMap * wm_gizmogroup_tweak_modal_keymap(wmKeyConfig *keyconf)
wmGizmoGroup * wm_gizmogroup_new_from_type(wmGizmoMap *gzmap, wmGizmoGroupType *gzgt)
void wm_gizmomap_select_array_remove(wmGizmoMap *gzmap, wmGizmo *gz)
bool wm_gizmo_select_and_highlight(bContext *C, wmGizmoMap *gzmap, wmGizmo *gz)
Definition wm_gizmo.cc:409
void wm_gizmogroup_intersectable_gizmos_to_list(wmWindowManager *wm, const wmGizmoGroup *gzgroup, int event_modifier, BLI_Buffer *visible_gizmos)
wmGizmoGroup * wm_gizmogroup_find_by_type(const wmGizmoMap *gzmap, const wmGizmoGroupType *gzgt)
void wm_gizmomap_select_array_clear(wmGizmoMap *gzmap)
bool wm_gizmogroup_is_visible_in_drawstep(const wmGizmoGroup *gzgroup, eWM_GizmoFlagMapDrawStep drawstep)
@ TWEAK_MODAL_PRECISION_ON
@ TWEAK_MODAL_SNAP_ON
@ TWEAK_MODAL_PRECISION_OFF
@ TWEAK_MODAL_CONFIRM
@ TWEAK_MODAL_SNAP_OFF
@ TWEAK_MODAL_CANCEL
void wm_gizmomap_select_array_push_back(wmGizmoMap *gzmap, wmGizmo *gz)
void wm_gizmomap_select_array_shrink(wmGizmoMap *gzmap, int len_subtract)
bool wm_gizmomap_deselect_all(wmGizmoMap *gzmap)
void wm_gizmo_update(wmGizmo *gz, const bContext *C, bool refresh_map)
Definition wm_gizmo.cc:491
void wm_gizmo_calculate_scale(wmGizmo *gz, const bContext *C)
Definition wm_gizmo.cc:452
int wm_gizmo_is_visible(wmGizmo *gz)
Definition wm_gizmo.cc:499
void wm_gizmogroup_free(bContext *C, wmGizmoGroup *gzgroup)