Blender  V3.3
ED_gizmo_library.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 
11 #pragma once
12 
13 #ifdef __cplusplus
14 extern "C" {
15 #endif
16 
17 #include "DNA_scene_types.h"
18 
19 /* initialize gizmos */
20 void ED_gizmotypes_arrow_3d(void);
21 void ED_gizmotypes_button_2d(void);
22 void ED_gizmotypes_cage_2d(void);
23 void ED_gizmotypes_cage_3d(void);
24 void ED_gizmotypes_dial_3d(void);
25 void ED_gizmotypes_move_3d(void);
29 void ED_gizmotypes_blank_3d(void);
30 void ED_gizmotypes_snap_3d(void);
31 
32 struct Object;
33 struct bContext;
34 struct wmGizmo;
35 struct wmWindowManager;
36 
37 /* -------------------------------------------------------------------- */
38 /* Shape Presets
39  *
40  * Intended to be called by custom draw functions.
41  */
42 
43 /* gizmo_library_presets.c */
44 
45 void ED_gizmo_draw_preset_box(const struct wmGizmo *gz, float mat[4][4], int select_id);
46 void ED_gizmo_draw_preset_arrow(const struct wmGizmo *gz,
47  float mat[4][4],
48  int axis,
49  int select_id);
50 void ED_gizmo_draw_preset_circle(const struct wmGizmo *gz,
51  float mat[4][4],
52  int axis,
53  int select_id);
55  const struct wmGizmo *gz,
56  struct Object *ob,
57  int facemap,
58  int select_id);
59 
60 /* -------------------------------------------------------------------- */
61 /* 3D Arrow Gizmo */
62 
63 enum {
68 };
69 
70 /* transform */
71 enum {
72  /* inverted offset during interaction - if set it also sets constrained below */
74  /* clamp arrow interaction to property width */
76 };
77 
78 /* draw_options */
79 enum {
80  /* Show arrow stem. */
82 };
83 
89 void ED_gizmo_arrow3d_set_ui_range(struct wmGizmo *gz, float min, float max);
95 void ED_gizmo_arrow3d_set_range_fac(struct wmGizmo *gz, float range_fac);
96 
97 /* -------------------------------------------------------------------- */
98 /* Cage Gizmo */
99 
100 enum {
101  ED_GIZMO_CAGE2D_XFORM_FLAG_TRANSLATE = (1 << 0), /* Translates */
102  ED_GIZMO_CAGE2D_XFORM_FLAG_ROTATE = (1 << 1), /* Rotates */
103  ED_GIZMO_CAGE2D_XFORM_FLAG_SCALE = (1 << 2), /* Scales */
104  ED_GIZMO_CAGE2D_XFORM_FLAG_SCALE_UNIFORM = (1 << 3), /* Scales uniformly */
105  ED_GIZMO_CAGE2D_XFORM_FLAG_SCALE_SIGNED = (1 << 4), /* Negative scale allowed */
106 };
107 
108 /* draw_style */
109 enum {
112 };
113 
114 /* draw_options */
115 enum {
119 };
120 
122 enum {
128  /* Corners */
133 
135 };
136 
138 enum {
139  /* ordered min/mid/max so we can loop over values (MIN/MID/MAX) on each axis. */
167 
169 
171 };
172 
173 /* -------------------------------------------------------------------- */
174 /* Dial Gizmo */
175 
176 /* draw_options */
177 enum {
184  /* Always show the angle value as an arc in the dial. */
186 };
187 
188 /* -------------------------------------------------------------------- */
189 /* Move Gizmo */
190 
191 /* draw_options */
192 enum {
194  /* only for solid shapes */
198 };
199 
200 enum {
203 };
204 
205 /* -------------------------------------------------------------------- */
206 /* Button Gizmo */
207 
208 enum {
216 };
217 
218 /* -------------------------------------------------------------------- */
219 /* Primitive Gizmo */
220 
221 enum {
223 };
224 
225 /* -------------------------------------------------------------------- */
226 /* Specific gizmos utils */
227 
228 /* snap3d_gizmo.c */
229 
231  struct wmGizmo *gz);
232 
233 void ED_gizmotypes_snap_3d_flag_set(struct wmGizmo *gz, int flag);
234 void ED_gizmotypes_snap_3d_flag_clear(struct wmGizmo *gz, int flag);
235 bool ED_gizmotypes_snap_3d_flag_test(struct wmGizmo *gz, int flag);
236 
239 
240 void ED_gizmotypes_snap_3d_data_get(const struct bContext *C,
241  struct wmGizmo *gz,
242  float r_loc[3],
243  float r_nor[3],
244  int r_elem_index[3],
245  eSnapMode *r_snap_elem);
246 
247 #ifdef __cplusplus
248 }
249 #endif
eSnapMode
@ ED_GIZMO_CAGE2D_PART_SCALE_MIN_X_MAX_Y
@ ED_GIZMO_CAGE2D_PART_TRANSLATE
@ ED_GIZMO_CAGE2D_PART_ROTATE
@ 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_gizmo_draw_preset_circle(const struct wmGizmo *gz, float mat[4][4], int axis, int select_id)
@ ED_GIZMO_BUTTON_SHOW_BACKDROP
@ ED_GIZMO_BUTTON_SHOW_OUTLINE
@ ED_GIZMO_BUTTON_SHOW_HELPLINE
void ED_gizmotypes_facemap_3d(void)
@ ED_GIZMO_MOVE_STYLE_CROSS_2D
@ ED_GIZMO_MOVE_STYLE_RING_2D
@ ED_GIZMO_CAGE2D_STYLE_BOX
@ ED_GIZMO_CAGE2D_STYLE_CIRCLE
void ED_gizmotypes_snap_3d_flag_set(struct wmGizmo *gz, int flag)
Definition: snap3d_gizmo.c:64
void ED_gizmo_draw_preset_arrow(const struct wmGizmo *gz, float mat[4][4], int axis, int select_id)
bool ED_gizmotypes_snap_3d_invert_snap_get(struct wmGizmo *gz)
void ED_gizmotypes_move_3d(void)
Definition: move3d_gizmo.c:467
@ ED_GIZMO_ARROW_XFORM_FLAG_CONSTRAINED
@ ED_GIZMO_ARROW_XFORM_FLAG_INVERTED
void ED_gizmotypes_snap_3d_data_get(const struct bContext *C, struct wmGizmo *gz, float r_loc[3], float r_nor[3], int r_elem_index[3], eSnapMode *r_snap_elem)
Definition: snap3d_gizmo.c:94
bool ED_gizmotypes_snap_3d_flag_test(struct wmGizmo *gz, int flag)
Definition: snap3d_gizmo.c:76
void ED_gizmotypes_primitive_3d(void)
void ED_gizmotypes_blank_3d(void)
Definition: blank3d_gizmo.c:57
void ED_gizmotypes_arrow_3d(void)
void ED_gizmotypes_snap_3d_flag_clear(struct wmGizmo *gz, int flag)
Definition: snap3d_gizmo.c:70
void ED_gizmo_draw_preset_box(const struct wmGizmo *gz, float mat[4][4], int select_id)
void ED_gizmotypes_button_2d(void)
void ED_gizmo_arrow3d_set_ui_range(struct wmGizmo *gz, float min, float max)
void ED_gizmotypes_preselect_3d(void)
void ED_gizmotypes_dial_3d(void)
Definition: dial3d_gizmo.c:722
@ ED_GIZMO_ARROW_DRAW_FLAG_STEM
void ED_gizmo_arrow3d_set_range_fac(struct wmGizmo *gz, float range_fac)
void ED_gizmotypes_cage_3d(void)
Definition: cage3d_gizmo.c:688
@ 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
void ED_gizmotypes_snap_3d(void)
Definition: snap3d_gizmo.c:412
@ 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_CAGE2D_DRAW_FLAG_XFORM_CENTER_HANDLE
struct SnapObjectContext * ED_gizmotypes_snap_3d_context_ensure(struct Scene *scene, struct wmGizmo *gz)
@ ED_GIZMO_PRIMITIVE_STYLE_PLANE
void ED_gizmotypes_cage_2d(void)
@ 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
bool ED_gizmotypes_snap_3d_is_enabled(const struct wmGizmo *gz)
@ ED_GIZMO_CAGE2D_XFORM_FLAG_TRANSLATE
@ ED_GIZMO_CAGE2D_XFORM_FLAG_SCALE_SIGNED
@ ED_GIZMO_CAGE2D_XFORM_FLAG_SCALE
@ ED_GIZMO_CAGE2D_XFORM_FLAG_ROTATE
@ ED_GIZMO_CAGE2D_XFORM_FLAG_SCALE_UNIFORM
void ED_gizmo_draw_preset_facemap(const struct bContext *C, const struct wmGizmo *gz, struct Object *ob, int facemap, int select_id)
@ ED_GIZMO_ARROW_STYLE_CROSS
@ ED_GIZMO_ARROW_STYLE_BOX
@ ED_GIZMO_ARROW_STYLE_NORMAL
@ ED_GIZMO_ARROW_STYLE_CONE
const int facemap[6][4]
Definition: Projections.cpp:43
#define C
Definition: RandGen.cpp:25
Scene scene
#define min(a, b)
Definition: sort.c:35
float max