Blender V4.3
ED_gizmo_library.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
13#pragma once
14
15#include "DNA_scene_types.h"
16
17struct bContext;
18struct wmGizmo;
20
21/* initialize gizmos */
33
34/* -------------------------------------------------------------------- */
35/* Shape Presets
36 *
37 * Intended to be called by custom draw functions.
38 */
39
40/* `gizmo_library_presets.cc` */
41
42void ED_gizmo_draw_preset_box(const wmGizmo *gz, const float mat[4][4], int select_id);
43void ED_gizmo_draw_preset_arrow(const wmGizmo *gz, const float mat[4][4], int axis, int select_id);
45 const float mat[4][4],
46 int axis,
47 int select_id);
48
49/* -------------------------------------------------------------------- */
50/* 3D Arrow Gizmo */
51
52enum {
58};
59
60/* transform */
61enum {
66};
67
68/* draw_options */
69enum {
70 /* Show arrow stem. */
73};
74
80void ED_gizmo_arrow3d_set_ui_range(wmGizmo *gz, float min, float max);
86void ED_gizmo_arrow3d_set_range_fac(wmGizmo *gz, float range_fac);
87
88/* -------------------------------------------------------------------- */
89/* Cage Gizmo */
90
91enum {
92 ED_GIZMO_CAGE_XFORM_FLAG_TRANSLATE = (1 << 0), /* Translates */
93 ED_GIZMO_CAGE_XFORM_FLAG_ROTATE = (1 << 1), /* Rotates */
94 ED_GIZMO_CAGE_XFORM_FLAG_SCALE = (1 << 2), /* Scales */
95 ED_GIZMO_CAGE_XFORM_FLAG_SCALE_UNIFORM = (1 << 3), /* Scales uniformly */
96 ED_GIZMO_CAGE_XFORM_FLAG_SCALE_SIGNED = (1 << 4), /* Negative scale allowed */
97};
98
99/* draw_style */
100enum {
110};
111
112enum {
114 /* TODO: rename */
116};
117
118/* draw_options */
119enum {
123};
124
126enum {
128
130 /* Edges */
135 /* Corners */
140
142};
143
145enum {
146 /* ordered min/mid/max so we can loop over values (MIN/MID/MAX) on each axis. */
174
176
178};
179
180/* -------------------------------------------------------------------- */
181/* Dial Gizmo */
182
183/* draw_options */
184enum {
191 /* Always show the angle value as an arc in the dial. */
193};
194
195/* -------------------------------------------------------------------- */
196/* Move Gizmo */
197
198/* draw_options */
199enum {
201 /* only for solid shapes */
205};
206
207enum {
210};
211
212/* -------------------------------------------------------------------- */
213/* Button Gizmo */
214
215enum {
223};
224
225/* -------------------------------------------------------------------- */
226/* Primitive Gizmo */
227
228enum {
232};
233
234/* -------------------------------------------------------------------- */
235/* Specific gizmos utils */
236
237/* `snap3d_gizmo.cc` */
238
240
242
244
246 wmGizmo *gz,
247 float r_loc[3],
248 float r_nor[3],
249 int r_elem_index[3],
250 eSnapMode *r_snap_elem);
void ED_gizmotypes_cage_2d()
void ED_gizmotypes_facemap_3d()
void ED_gizmo_draw_preset_box(const wmGizmo *gz, const float mat[4][4], int select_id)
@ ED_GIZMO_CAGE3D_PART_SCALE_MID_X_MID_Y_MIN_Z
@ ED_GIZMO_CAGE3D_PART_SCALE_MID_X_MAX_Y_MIN_Z
@ ED_GIZMO_CAGE3D_PART_SCALE_MID_X_MID_Y_MID_Z
@ ED_GIZMO_CAGE3D_PART_SCALE_MID_X_MAX_Y_MID_Z
@ ED_GIZMO_CAGE3D_PART_SCALE_MAX_X_MIN_Y_MAX_Z
@ ED_GIZMO_CAGE3D_PART_SCALE_MIN_X_MAX_Y_MIN_Z
@ ED_GIZMO_CAGE3D_PART_SCALE_MIN_X_MIN_Y_MID_Z
@ ED_GIZMO_CAGE3D_PART_SCALE_MIN_X_MIN_Y_MIN_Z
@ ED_GIZMO_CAGE3D_PART_SCALE_MIN_X_MAX_Y_MAX_Z
@ ED_GIZMO_CAGE3D_PART_SCALE_MID_X_MIN_Y_MAX_Z
@ ED_GIZMO_CAGE3D_PART_SCALE_MIN_X_MAX_Y_MID_Z
@ ED_GIZMO_CAGE3D_PART_SCALE_MIN_X_MID_Y_MAX_Z
@ ED_GIZMO_CAGE3D_PART_SCALE_MAX_X_MID_Y_MID_Z
@ ED_GIZMO_CAGE3D_PART_SCALE_MID_X_MIN_Y_MIN_Z
@ ED_GIZMO_CAGE3D_PART_SCALE_MID_X_MID_Y_MAX_Z
@ ED_GIZMO_CAGE3D_PART_SCALE_MAX_X_MIN_Y_MID_Z
@ ED_GIZMO_CAGE3D_PART_SCALE_MAX_X_MAX_Y_MIN_Z
@ ED_GIZMO_CAGE3D_PART_ROTATE
@ ED_GIZMO_CAGE3D_PART_SCALE_MAX_X_MAX_Y_MAX_Z
@ ED_GIZMO_CAGE3D_PART_TRANSLATE
@ ED_GIZMO_CAGE3D_PART_SCALE_MIN_X_MID_Y_MID_Z
@ ED_GIZMO_CAGE3D_PART_SCALE_MID_X_MAX_Y_MAX_Z
@ ED_GIZMO_CAGE3D_PART_SCALE_MID_X_MIN_Y_MID_Z
@ ED_GIZMO_CAGE3D_PART_SCALE_MIN_X_MIN_Y_MAX_Z
@ ED_GIZMO_CAGE3D_PART_SCALE_MAX_X_MID_Y_MIN_Z
@ ED_GIZMO_CAGE3D_PART_SCALE_MAX_X_MAX_Y_MID_Z
@ ED_GIZMO_CAGE3D_PART_SCALE_MAX_X_MID_Y_MAX_Z
@ ED_GIZMO_CAGE3D_PART_SCALE_MIN_X_MID_Y_MIN_Z
@ ED_GIZMO_CAGE3D_PART_SCALE_MAX_X_MIN_Y_MIN_Z
void ED_gizmo_arrow3d_set_ui_range(wmGizmo *gz, float min, float max)
void ED_gizmotypes_primitive_3d()
void ED_gizmotypes_preselect_3d()
@ ED_GIZMO_CAGE_DRAW_FLAG_XFORM_CENTER_HANDLE
@ ED_GIZMO_MOVE_DRAW_FLAG_FILL_SELECT
@ ED_GIZMO_MOVE_DRAW_FLAG_FILL
@ ED_GIZMO_MOVE_DRAW_FLAG_ALIGN_VIEW
@ ED_GIZMO_MOVE_DRAW_FLAG_NOP
@ ED_GIZMO_CAGE3D_STYLE_BOX
@ ED_GIZMO_CAGE3D_STYLE_CIRCLE
void ED_gizmotypes_move_3d()
void ED_gizmo_arrow3d_set_range_fac(wmGizmo *gz, float range_fac)
void ED_gizmotypes_snap_3d_data_get(const bContext *C, wmGizmo *gz, float r_loc[3], float r_nor[3], int r_elem_index[3], eSnapMode *r_snap_elem)
@ ED_GIZMO_PRIMITIVE_STYLE_ANNULUS
@ ED_GIZMO_PRIMITIVE_STYLE_PLANE
@ ED_GIZMO_PRIMITIVE_STYLE_CIRCLE
void ED_gizmo_draw_preset_circle(const wmGizmo *gz, const float mat[4][4], int axis, int select_id)
void ED_gizmotypes_blank_3d()
@ ED_GIZMO_ARROW_DRAW_FLAG_ORIGIN
@ ED_GIZMO_ARROW_DRAW_FLAG_STEM
@ ED_GIZMO_CAGE2D_STYLE_BOX_TRANSFORM
@ ED_GIZMO_CAGE2D_STYLE_BOX
@ ED_GIZMO_CAGE2D_STYLE_CIRCLE
@ ED_GIZMO_ARROW_XFORM_FLAG_CONSTRAINED
@ ED_GIZMO_ARROW_XFORM_FLAG_INVERTED
@ ED_GIZMO_ARROW_STYLE_CROSS
@ ED_GIZMO_ARROW_STYLE_PLANE
@ ED_GIZMO_ARROW_STYLE_BOX
@ ED_GIZMO_ARROW_STYLE_NORMAL
@ ED_GIZMO_ARROW_STYLE_CONE
void ED_gizmotypes_snap_3d()
@ ED_GIZMO_CAGE2D_PART_SCALE_MIN_X_MAX_Y
@ ED_GIZMO_CAGE2D_PART_TRANSLATE
@ ED_GIZMO_CAGE2D_PART_ROTATE
@ ED_GIZMO_CAGE2D_PART_SCALE
@ ED_GIZMO_CAGE2D_PART_SCALE_MAX_Y
@ ED_GIZMO_CAGE2D_PART_SCALE_MAX_X_MAX_Y
@ ED_GIZMO_CAGE2D_PART_SCALE_MIN_X
@ ED_GIZMO_CAGE2D_PART_SCALE_MAX_X_MIN_Y
@ ED_GIZMO_CAGE2D_PART_SCALE_MAX_X
@ ED_GIZMO_CAGE2D_PART_SCALE_MIN_X_MIN_Y
@ ED_GIZMO_CAGE2D_PART_SCALE_MIN_Y
void ED_gizmotypes_arrow_3d()
void ED_gizmotypes_button_2d()
void ED_gizmotypes_dial_3d()
bool ED_gizmotypes_snap_3d_is_enabled(const wmGizmo *gz)
void ED_gizmotypes_cage_3d()
void ED_gizmo_draw_preset_arrow(const wmGizmo *gz, const float mat[4][4], int axis, int select_id)
@ ED_GIZMO_BUTTON_SHOW_BACKDROP
@ ED_GIZMO_BUTTON_SHOW_OUTLINE
@ ED_GIZMO_BUTTON_SHOW_HELPLINE
SnapObjectContext * ED_gizmotypes_snap_3d_context_ensure(Scene *scene, wmGizmo *gz)
@ ED_GIZMO_DIAL_DRAW_FLAG_ANGLE_MIRROR
@ ED_GIZMO_DIAL_DRAW_FLAG_FILL_SELECT
@ ED_GIZMO_DIAL_DRAW_FLAG_FILL
@ ED_GIZMO_DIAL_DRAW_FLAG_NOP
@ ED_GIZMO_DIAL_DRAW_FLAG_ANGLE_START_Y
@ ED_GIZMO_DIAL_DRAW_FLAG_ANGLE_VALUE
@ ED_GIZMO_DIAL_DRAW_FLAG_CLIP
@ ED_GIZMO_CAGE_XFORM_FLAG_SCALE
@ ED_GIZMO_CAGE_XFORM_FLAG_TRANSLATE
@ ED_GIZMO_CAGE_XFORM_FLAG_ROTATE
@ ED_GIZMO_CAGE_XFORM_FLAG_SCALE_UNIFORM
@ ED_GIZMO_CAGE_XFORM_FLAG_SCALE_SIGNED
@ ED_GIZMO_MOVE_STYLE_CROSS_2D
@ ED_GIZMO_MOVE_STYLE_RING_2D
void ED_gizmotypes_snap_3d_flag_set(wmGizmo *gz, int flag)
#define min(a, b)
Definition sort.c:32
uint8_t flag
Definition wm_window.cc:138