Blender V5.0
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
12
13#pragma once
14
15#include "DNA_scene_types.h"
16
17struct bContext;
18struct wmGizmo;
21}
22
23/* initialize gizmos */
35
36/* -------------------------------------------------------------------- */
37/* Shape Presets
38 *
39 * Intended to be called by custom draw functions.
40 */
41
42/* `gizmo_library_presets.cc` */
43
44void ED_gizmo_draw_preset_box(const wmGizmo *gz, const float mat[4][4], int select_id);
45void ED_gizmo_draw_preset_arrow(const wmGizmo *gz, const float mat[4][4], int axis, int select_id);
47 const float mat[4][4],
48 int axis,
49 int select_id);
50
51/* -------------------------------------------------------------------- */
52/* 3D Arrow Gizmo */
53
54enum {
60};
61
62/* transform */
63enum {
68};
69
70/* draw_options */
71enum {
72 /* Show arrow stem. */
75};
76
82void ED_gizmo_arrow3d_set_ui_range(wmGizmo *gz, float min, float max);
88void ED_gizmo_arrow3d_set_range_fac(wmGizmo *gz, float range_fac);
89
90/* -------------------------------------------------------------------- */
91/* Cage Gizmo */
92
93enum {
94 ED_GIZMO_CAGE_XFORM_FLAG_TRANSLATE = (1 << 0), /* Translates */
95 ED_GIZMO_CAGE_XFORM_FLAG_ROTATE = (1 << 1), /* Rotates */
96 ED_GIZMO_CAGE_XFORM_FLAG_SCALE = (1 << 2), /* Scales */
97 ED_GIZMO_CAGE_XFORM_FLAG_SCALE_UNIFORM = (1 << 3), /* Scales uniformly */
98 ED_GIZMO_CAGE_XFORM_FLAG_SCALE_SIGNED = (1 << 4), /* Negative scale allowed */
99};
100
101/* draw_style */
102enum {
112};
113
114enum {
116 /* TODO: rename */
118};
119
120/* draw_options */
121enum {
127};
128
130enum {
132
134 /* Edges */
139 /* Corners */
144
146};
147
149enum {
150 /* ordered min/mid/max so we can loop over values (MIN/MID/MAX) on each axis. */
178
180
182};
183
184/* -------------------------------------------------------------------- */
185/* Dial Gizmo */
186
187/* draw_options */
188enum {
195 /* Always show the angle value as an arc in the dial. */
197};
198
199/* -------------------------------------------------------------------- */
200/* Move Gizmo */
201
202/* draw_options */
203enum {
205 /* only for solid shapes */
209};
210
211enum {
214};
215
216/* -------------------------------------------------------------------- */
217/* Button Gizmo */
218
219enum {
227};
228
229/* -------------------------------------------------------------------- */
230/* Primitive Gizmo */
231
232enum {
236};
237
238/* -------------------------------------------------------------------- */
239/* Specific gizmos utils */
240
241/* `snap3d_gizmo.cc` */
242
244 wmGizmo *gz);
245
247
249
251 wmGizmo *gz,
252 float r_loc[3],
253 float r_nor[3],
254 int r_elem_index[3],
255 eSnapMode *r_snap_elem);
@ ED_GIZMO_CAGE_DRAW_FLAG_CORNER_HANDLES
@ ED_GIZMO_CAGE_DRAW_FLAG_XFORM_CENTER_HANDLE
@ ED_GIZMO_CAGE_DRAW_FLAG_NOP
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)
blender::ed::transform::SnapObjectContext * ED_gizmotypes_snap_3d_context_ensure(Scene *scene, wmGizmo *gz)
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_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
@ 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_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_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)
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_CAGE2D_STYLE_BOX_TRANSFORM
@ ED_GIZMO_CAGE2D_STYLE_BOX
@ ED_GIZMO_CAGE2D_STYLE_CIRCLE
@ ED_GIZMO_ARROW_DRAW_FLAG_ORIGIN
@ ED_GIZMO_ARROW_DRAW_FLAG_STEM
@ ED_GIZMO_BUTTON_SHOW_BACKDROP
@ ED_GIZMO_BUTTON_SHOW_OUTLINE
@ ED_GIZMO_BUTTON_SHOW_HELPLINE
@ ED_GIZMO_PRIMITIVE_STYLE_ANNULUS
@ ED_GIZMO_PRIMITIVE_STYLE_PLANE
@ ED_GIZMO_PRIMITIVE_STYLE_CIRCLE
void ED_gizmotypes_snap_3d()
@ 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
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()
@ 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_gizmo_draw_preset_arrow(const wmGizmo *gz, const float mat[4][4], int axis, int select_id)
@ ED_GIZMO_CAGE3D_STYLE_BOX
@ ED_GIZMO_CAGE3D_STYLE_CIRCLE
@ ED_GIZMO_ARROW_XFORM_FLAG_CONSTRAINED
@ ED_GIZMO_ARROW_XFORM_FLAG_INVERTED
void ED_gizmotypes_snap_3d_flag_set(wmGizmo *gz, int flag)
@ ED_GIZMO_MOVE_STYLE_CROSS_2D
@ ED_GIZMO_MOVE_STYLE_RING_2D
@ 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
#define C
Definition RandGen.cpp:29
#define min(a, b)
Definition sort.cc:36
max
Definition text_draw.cc:251
uint8_t flag
Definition wm_window.cc:145