Blender  V3.3
source/blender/editors/transform/transform.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later
2  * Copyright 2001-2002 NaN Holding BV. All rights reserved. */
3 
8 #pragma once
9 
10 #include "ED_numinput.h"
11 #include "ED_transform.h"
12 #include "ED_view3d.h"
13 
14 #include "DNA_listBase.h"
15 #include "DNA_object_enums.h"
16 #include "DNA_scene_types.h"
17 
18 #include "DEG_depsgraph.h"
19 
20 #include "transform_data.h"
21 
22 /* use node center for transform instead of upper-left corner.
23  * disabled since it makes absolute snapping not work so nicely
24  */
25 // #define USE_NODE_CENTER
26 
27 /* -------------------------------------------------------------------- */
31 struct ARegion;
32 struct BMPartialUpdate;
33 struct Depsgraph;
34 struct NumInput;
35 struct Object;
36 struct RNG;
37 struct ReportList;
38 struct Scene;
39 struct ScrArea;
40 struct SnapObjectContext;
42 struct TransDataContainer;
43 struct TransInfo;
44 struct TransSnap;
45 struct ViewLayer;
46 struct bContext;
47 struct wmEvent;
48 struct wmKeyConfig;
49 struct wmKeyMap;
50 struct wmOperator;
51 struct wmTimer;
52 
55 /* -------------------------------------------------------------------- */
60 typedef enum {
61  CTX_NONE = 0,
62 
63  /* These are similar to TransInfo::data_type. */
64  CTX_CAMERA = (1 << 0),
65  CTX_CURSOR = (1 << 1),
66  CTX_EDGE_DATA = (1 << 2),
67  CTX_GPENCIL_STROKES = (1 << 3),
68  CTX_MASK = (1 << 4),
69  CTX_MOVIECLIP = (1 << 5),
70  CTX_OBJECT = (1 << 6),
71  CTX_PAINT_CURVE = (1 << 7),
72  CTX_POSE_BONE = (1 << 8),
73  CTX_TEXTURE_SPACE = (1 << 9),
74  CTX_SEQUENCER_IMAGE = (1 << 10),
75 
76  CTX_NO_PET = (1 << 11),
77  CTX_AUTOCONFIRM = (1 << 12),
83  CTX_VIEW2D_EDGE_PAN = (1 << 15),
84 } eTContext;
85 
87 typedef enum {
89  T_EDIT = 1 << 0,
91  T_POINTS = 1 << 1,
93  T_NO_CONSTRAINT = 1 << 2,
94  T_NULL_ONE = 1 << 3,
95 
96  T_PROP_EDIT = 1 << 4,
97  T_PROP_CONNECTED = 1 << 5,
98  T_PROP_PROJECTED = 1 << 6,
99 
100  T_V3D_ALIGN = 1 << 7,
102  T_2D_EDIT = 1 << 8,
103  T_CLIP_UV = 1 << 9,
104 
106  T_AUTOIK = 1 << 10,
107 
109  T_NO_MIRROR = 1 << 11,
110 
114 
116  T_MODAL = 1 << 13,
117 
119  T_NO_PROJECT = 1 << 14,
120 
121  T_RELEASE_CONFIRM = 1 << 15,
122 
124  T_ALT_TRANSFORM = 1 << 16,
125 
127  T_OVERRIDE_CENTER = 1 << 17,
128 
130 
131  T_CLNOR_REBUILD = 1 << 19,
132 
134  T_AUTOMERGE = 1 << 20,
136  T_AUTOSPLIT = 1 << 21,
137 
140 
142  T_NO_CURSOR_WRAP = 1 << 23,
143 } eTFlag;
144 
145 #define T_ALL_RESTRICTIONS (T_NO_CONSTRAINT | T_NULL_ONE)
146 #define T_PROP_EDIT_ALL (T_PROP_EDIT | T_PROP_CONNECTED | T_PROP_PROJECTED)
147 
149 typedef enum {
151  MOD_PRECISION = 1 << 1,
152  MOD_SNAP = 1 << 2,
153  MOD_SNAP_INVERT = 1 << 3,
155 } eTModifier;
156 
158 typedef enum eTSnap {
160  SNAP_FORCED = 1 << 0,
161  TARGET_INIT = 1 << 1,
162  /* Special flag for snap to grid. */
164  POINT_INIT = 1 << 3,
165  MULTI_POINTS = 1 << 4,
167 
169 typedef enum {
171  CON_APPLY = 1 << 0,
173  CON_AXIS0 = 1 << 1,
174  CON_AXIS1 = 1 << 2,
175  CON_AXIS2 = 1 << 3,
176  CON_SELECT = 1 << 4,
178  CON_NOFLIP = 1 << 5,
179  CON_USER = 1 << 6,
180 } eTConstraint;
181 
183 typedef enum {
188 } eTState;
189 
191 typedef enum {
193  TREDRAW_SOFT = (1 << 0),
195 } eRedrawFlag;
196 
198 typedef enum {
199  HLP_NONE = 0,
206 } eTHelpline;
207 
210 /* -------------------------------------------------------------------- */
216 enum {
234 
235  /* 18 and 19 used by number-input, defined in `ED_numinput.h`. */
236  // NUM_MODAL_INCREMENT_UP = 18,
237  // NUM_MODAL_INCREMENT_DOWN = 19,
238 
243 
246 
251 
254 
256 };
257 
260 /* -------------------------------------------------------------------- */
264 typedef struct TransSnapPoint {
266  float co[3];
268 
269 typedef struct TransSnap {
270  /* Snapping options stored as flags */
272  /* Method(s) used for snapping source to target */
274  /* Part of source to snap to target */
276  /* Determines which objects are possible target */
278  bool align;
279  bool project;
280  bool peel;
284  /* Snapped Element Type (currently for objects only). */
287  float snapTarget[3];
289  float snapPoint[3];
290  float snapTargetGrid[3];
291  float snapNormal[3];
295  double last;
296  void (*applySnap)(struct TransInfo *, float *);
297  void (*calcSnap)(struct TransInfo *, float *);
298  void (*targetSnap)(struct TransInfo *);
305  float (*distance)(struct TransInfo *t, const float p1[3], const float p2[3]);
306 
310  union {
313  };
315 
316 typedef struct TransCon {
318  char text[50];
320  float pmtx[3][3];
323  int imval[2];
326  void (*drawExtra)(struct TransInfo *t);
327 
328  /* NOTE: if 'tc' is NULL, 'td' must also be NULL.
329  * For constraints that needs to draw differently from the other
330  * uses this instead of the generic draw function. */
331 
334  void (*applyVec)(const struct TransInfo *t,
335  const struct TransDataContainer *tc,
336  const struct TransData *td,
337  const float in[3],
338  float r_out[3]);
340  void (*applySize)(const struct TransInfo *t,
341  const struct TransDataContainer *tc,
342  const struct TransData *td,
343  float r_smat[3][3]);
345  void (*applyRot)(const struct TransInfo *t,
346  const struct TransDataContainer *tc,
347  const struct TransData *td,
348  float r_axis[3],
349  float *r_angle);
351 
352 typedef struct MouseInput {
353  void (*apply)(struct TransInfo *t, struct MouseInput *mi, const double mval[2], float output[3]);
354  void (*post)(struct TransInfo *t, float values[3]);
355 
357  int imval[2];
358  float imval_unproj[3];
359  float center[2];
360  float factor;
362  bool precision;
363 
365  void *data;
366 
376  struct {
377  double prev[2];
378  double accum[2];
381 
382 typedef struct TransCustomData {
383  void *data;
384  void (*free_cb)(struct TransInfo *,
385  struct TransDataContainer *tc,
386  struct TransCustomData *custom_data);
387  unsigned int use_free : 1;
389 
390 typedef struct TransCenterData {
391  float global[3];
392  unsigned int is_set : 1;
394 
402 typedef struct TransCustomDataContainer {
404  union {
406  };
409 #define TRANS_CUSTOM_DATA_ELEM_MAX (sizeof(TransCustomDataContainer) / sizeof(TransCustomData))
410 
425 typedef struct TransDataContainer {
434 
436  int data_len;
441 
442  struct Object *obedit;
443 
444  float mat[4][4];
445  float imat[4][4];
447  float mat3[3][3];
448  float imat3[3][3];
449 
451  float mat3_unit[3][3];
452 
454  struct Object *poseobj;
455 
457  float center_local[3];
458 
463  bool is_active;
464 
470 
472  union {
473  struct {
477  };
478  /* For easy checking. */
480  };
481 
484 
485 typedef struct TransInfo {
488 
492 
495 
510 
512  void (*transform)(struct TransInfo *, const int[2]);
513  /* Event handler function that determines whether the viewport needs to be redrawn. */
514  eRedrawFlag (*handleEvent)(struct TransInfo *, const struct wmEvent *);
515 
521  void (*transform_matrix)(struct TransInfo *t, float mat_xform[4][4]);
522 
525 
528 
531 
534 
536  float prop_size;
538  char proptext[20];
543  float aspect[3];
545  float center_global[3];
547  float center2d[2];
549  short idx_max;
551  float snap[2];
553  float snap_spatial[2];
556 
558  float viewmat[4][4];
560  float viewinv[4][4];
562  float persmat[4][4];
563  float persinv[4][4];
564  short persp;
565  short around;
567  char spacetype;
569  short obedit_type;
570 
572  float vec[3];
574  float mat[3][3];
575 
577  float spacemtx[3][3];
578  float spacemtx_inv[3][3];
580  char spacename[64];
581 
582  /*************** NEW STUFF *********************/
590 
592 
593  struct {
594  short type;
595  float matrix[3][3];
596  } orient[3];
597 
598  enum {
603 
609 
610  short prop_mode;
611 
613  float values[4];
614 
617 
621  float values_final[4];
622 
623  /* Axis members for modes that use an axis separate from the orientation (rotate & shear). */
624 
629 
632 
633  void *view;
635  struct bContext *context;
636  struct wmMsgBus *mbus;
637  struct ScrArea *area;
638  struct ARegion *region;
640  struct Scene *scene;
645  struct wmKeyMap *keymap;
649  int mval[2];
651  float zfac;
655 
657  struct RNG *rng;
658 
662 
665 /* -------------------------------------------------------------------- */
674 bool initTransform(struct bContext *C,
675  struct TransInfo *t,
676  struct wmOperator *op,
677  const struct wmEvent *event,
678  int mode);
682 void saveTransform(struct bContext *C, struct TransInfo *t, struct wmOperator *op);
683 int transformEvent(TransInfo *t, const struct wmEvent *event);
684 void transformApply(struct bContext *C, TransInfo *t);
685 int transformEnd(struct bContext *C, TransInfo *t);
686 
688 void setTransformViewAspect(TransInfo *t, float r_aspect[3]);
689 void convertViewVec(TransInfo *t, float r_vec[3], double dx, double dy);
690 void projectIntViewEx(TransInfo *t, const float vec[3], int adr[2], eV3DProjTest flag);
691 void projectIntView(TransInfo *t, const float vec[3], int adr[2]);
692 void projectFloatViewEx(TransInfo *t, const float vec[3], float adr[2], eV3DProjTest flag);
693 void projectFloatView(TransInfo *t, const float vec[3], float adr[2]);
694 
695 void applyAspectRatio(TransInfo *t, float vec[2]);
696 void removeAspectRatio(TransInfo *t, float vec[2]);
697 
701 struct wmKeyMap *transform_modal_keymap(struct wmKeyConfig *keyconf);
702 
706 bool transform_apply_matrix(TransInfo *t, float mat[4][4]);
707 void transform_final_value_get(const TransInfo *t, float *value, int value_num);
708 
711 /* -------------------------------------------------------------------- */
715 /* transform_gizmo.c */
716 
717 #define GIZMO_AXIS_LINE_WIDTH 2.0f
718 
719 bool gimbal_axis_pose(struct Object *ob, const struct bPoseChannel *pchan, float gmat[3][3]);
720 bool gimbal_axis_object(struct Object *ob, float gmat[3][3]);
721 
724 /* -------------------------------------------------------------------- */
728 bool transdata_check_local_islands(TransInfo *t, short around);
729 
732 /* -------------------------------------------------------------------- */
736 typedef enum {
752 
753 void initMouseInput(
754  TransInfo *t, MouseInput *mi, const float center[2], const int mval[2], bool precision);
756 void applyMouseInput(struct TransInfo *t,
757  struct MouseInput *mi,
758  const int mval[2],
759  float output[3]);
760 void transform_input_update(TransInfo *t, const float fac);
761 
762 void setCustomPoints(TransInfo *t, MouseInput *mi, const int start[2], const int end[2]);
763 void setCustomPointsFromDirection(TransInfo *t, MouseInput *mi, const float dir[2]);
764 void setInputPostFct(MouseInput *mi, void (*post)(struct TransInfo *t, float values[3]));
765 
768 /* -------------------------------------------------------------------- */
779 void initTransInfo(struct bContext *C,
780  TransInfo *t,
781  struct wmOperator *op,
782  const struct wmEvent *event);
790 void postTrans(struct bContext *C, TransInfo *t);
796 
797 void drawLine(TransInfo *t, const float center[3], const float dir[3], char axis, short options);
798 
799 /* DRAWLINE options flags */
800 #define DRAWLIGHT 1
801 
804 
806 void calculateCenterLocal(TransInfo *t, const float center_global[3]);
807 
810 
811 /* API functions for getting center points */
812 void calculateCenterBound(TransInfo *t, float r_center[3]);
813 void calculateCenterMedian(TransInfo *t, float r_center[3]);
814 void calculateCenterCursor(TransInfo *t, float r_center[3]);
815 void calculateCenterCursor2D(TransInfo *t, float r_center[2]);
816 void calculateCenterCursorGraph2D(TransInfo *t, float r_center[2]);
820 bool calculateCenterActive(TransInfo *t, bool select_only, float r_center[3]);
821 
823 
829 void transform_data_ext_rotate(TransData *td, float mat[3][3], bool use_drot);
830 
832 
834 
835 /* TODO: move to: `transform_query.c`. */
837 
838 #define TRANSFORM_SNAP_MAX_PX 100.0f
839 #define TRANSFORM_DIST_INVALID -FLT_MAX
840 
841 /* Temp macros. */
842 
843 #define TRANS_DATA_CONTAINER_FIRST_OK(t) (&(t)->data_container[0])
844 /* For cases we _know_ there is only one handle. */
845 #define TRANS_DATA_CONTAINER_FIRST_SINGLE(t) \
846  (BLI_assert((t)->data_container_len == 1), (&(t)->data_container[0]))
847 
848 #define FOREACH_TRANS_DATA_CONTAINER(t, th) \
849  for (TransDataContainer *tc = (t)->data_container, \
850  *tc_end = (t)->data_container + (t)->data_container_len; \
851  th != tc_end; \
852  th++)
853 
854 #define FOREACH_TRANS_DATA_CONTAINER_INDEX(t, th, i) \
855  for (TransDataContainer *tc = ((i = 0), (t)->data_container), \
856  *tc_end = (t)->data_container + (t)->data_container_len; \
857  th != tc_end; \
858  th++, i++)
859 
typedef float(TangentPoint)[2]
unsigned int uint
Definition: BLI_sys_types.h:67
struct Depsgraph Depsgraph
Definition: DEG_depsgraph.h:35
These structs are the foundation for all linked lists in the library system.
eSnapTargetSelect
eSnapFlag
eSnapSourceSelect
eSnapMode
eTfmMode
Definition: ED_transform.h:27
eV3DProjTest
Definition: ED_view3d.h:233
NSNotificationCenter * center
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble w _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat w _GL_VOID_RET _GL_VOID GLint GLint GLint w _GL_VOID_RET _GL_VOID GLshort GLshort GLshort w _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble y2 _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat y2 _GL_VOID_RET _GL_VOID GLint GLint GLint y2 _GL_VOID_RET _GL_VOID GLshort GLshort GLshort y2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLuint *buffer _GL_VOID_RET _GL_VOID GLdouble t _GL_VOID_RET _GL_VOID GLfloat t _GL_VOID_RET _GL_VOID GLint t _GL_VOID_RET _GL_VOID GLshort t _GL_VOID_RET _GL_VOID GLdouble t
#define C
Definition: RandGen.cpp:25
CCL_NAMESPACE_BEGIN struct Options options
SyclQueue void void size_t num_bytes void
ccl_global KernelShaderEvalInput ccl_global float * output
void initMouseInput(TransInfo *t, MouseInput *mi, const float center[2], const int mval[2], bool precision)
void calculateCenter(TransInfo *t)
bool calculateCenterActive(TransInfo *t, bool select_only, float r_center[3])
void transform_data_ext_rotate(TransData *td, float mat[3][3], bool use_drot)
void projectIntViewEx(TransInfo *t, const float vec[3], int adr[2], eV3DProjTest flag)
Definition: transform.c:220
struct TransCenterData TransCenterData
void calculateCenterCursor2D(TransInfo *t, float r_center[2])
int transformEnd(struct bContext *C, TransInfo *t)
Definition: transform.c:2023
bool checkUseAxisMatrix(TransInfo *t)
Definition: transform.c:2062
void resetTransRestrictions(TransInfo *t)
struct TransInfo TransInfo
struct Object * transform_object_deform_pose_armature_get(const TransInfo *t, struct Object *ob)
void postTrans(struct bContext *C, TransInfo *t)
void calculateCenter2D(TransInfo *t)
struct TransSnapPoint TransSnapPoint
void calculateCenterCursorGraph2D(TransInfo *t, float r_center[2])
void transformApply(struct bContext *C, TransInfo *t)
Definition: transform.c:1998
void applyMouseInput(struct TransInfo *t, struct MouseInput *mi, const int mval[2], float output[3])
bool gimbal_axis_object(struct Object *ob, float gmat[3][3])
void freeCustomNormalArray(TransInfo *t, TransDataContainer *tc, TransCustomData *custom_data)
void setCustomPoints(TransInfo *t, MouseInput *mi, const int start[2], const int end[2])
void calculateCenterMedian(TransInfo *t, float r_center[3])
void transform_input_update(TransInfo *t, const float fac)
void setTransformViewAspect(TransInfo *t, float r_aspect[3])
Definition: transform.c:98
struct TransCustomData TransCustomData
struct TransCon TransCon
void calculateCenterCursor(TransInfo *t, float r_center[3])
void resetTransModal(TransInfo *t)
bool transdata_check_local_islands(TransInfo *t, short around)
Definition: transform.c:64
int transformEvent(TransInfo *t, const struct wmEvent *event)
void restoreTransObjects(TransInfo *t)
void projectFloatViewEx(TransInfo *t, const float vec[3], float adr[2], eV3DProjTest flag)
Definition: transform.c:338
struct MouseInput MouseInput
struct TransSnap TransSnap
void convertViewVec(TransInfo *t, float r_vec[3], double dx, double dy)
Definition: transform.c:170
void setInputPostFct(MouseInput *mi, void(*post)(struct TransInfo *t, float values[3]))
void removeAspectRatio(TransInfo *t, float vec[2])
Definition: transform.c:396
void saveTransform(struct bContext *C, struct TransInfo *t, struct wmOperator *op)
Definition: transform.c:1498
void calculatePropRatio(TransInfo *t)
bool initTransform(struct bContext *C, struct TransInfo *t, struct wmOperator *op, const struct wmEvent *event, int mode)
bool transform_apply_matrix(TransInfo *t, float mat[4][4])
Definition: transform.c:2076
void applyTransObjects(TransInfo *t)
struct wmKeyMap * transform_modal_keymap(struct wmKeyConfig *keyconf)
Definition: transform.c:654
void setTransformViewMatrices(TransInfo *t)
Definition: transform.c:74
void setCustomPointsFromDirection(TransInfo *t, MouseInput *mi, const float dir[2])
void transform_final_value_get(const TransInfo *t, float *value, int value_num)
Definition: transform.c:2085
void drawLine(TransInfo *t, const float center[3], const float dir[3], char axis, short options)
void tranformViewUpdate(TransInfo *t)
void initTransInfo(struct bContext *C, TransInfo *t, struct wmOperator *op, const struct wmEvent *event)
struct TransDataContainer TransDataContainer
void calculateCenterLocal(TransInfo *t, const float center_global[3])
void freeTransCustomDataForMode(TransInfo *t)
void projectFloatView(TransInfo *t, const float vec[3], float adr[2])
Definition: transform.c:366
struct TransCustomDataContainer TransCustomDataContainer
void initMouseInputMode(TransInfo *t, MouseInput *mi, MouseInputMode mode)
void projectIntView(TransInfo *t, const float vec[3], int adr[2])
Definition: transform.c:333
void applyAspectRatio(TransInfo *t, float vec[2])
Definition: transform.c:371
void calculateCenterBound(TransInfo *t, float r_center[3])
bool gimbal_axis_pose(struct Object *ob, const struct bPoseChannel *pchan, float gmat[3][3])
void(* apply)(struct TransInfo *t, struct MouseInput *mi, const double mval[2], float output[3])
struct MouseInput::@591 virtual_mval
void(* post)(struct TransInfo *t, float values[3])
Definition: rand.cc:33
void(* applyVec)(const struct TransInfo *t, const struct TransDataContainer *tc, const struct TransData *td, const float in[3], float r_out[3])
void(* applySize)(const struct TransInfo *t, const struct TransDataContainer *tc, const struct TransData *td, float r_smat[3][3])
void(* drawExtra)(struct TransInfo *t)
void(* applyRot)(const struct TransInfo *t, const struct TransDataContainer *tc, const struct TransData *td, float r_axis[3], float *r_angle)
void(* free_cb)(struct TransInfo *, struct TransDataContainer *tc, struct TransCustomData *custom_data)
struct TransConvertTypeInfo * data_type
struct TransInfo::@598 orient[3]
void(* transform_matrix)(struct TransInfo *t, float mat_xform[4][4])
eRedrawFlag(* handleEvent)(struct TransInfo *, const struct wmEvent *)
void(* transform)(struct TransInfo *, const int[2])
enum TransInfo::@599 orient_curr
struct SnapObjectContext * object_context
void(* calcSnap)(struct TransInfo *, float *)
float(* distance)(struct TransInfo *t, const float p1[3], const float p2[3])
void(* targetSnap)(struct TransInfo *)
void(* applySnap)(struct TransInfo *, float *)
struct TransSeqSnapData * seq_context