[Bf-blender-cvs] [bc56c127704] master: Cleanup: Rearrange and name the enums and flags used in the transform code

Germano Cavalcante noreply at git.blender.org
Mon Feb 8 14:01:17 CET 2021


Commit: bc56c127704f937d7fdfee082975bc0fa01f4b52
Author: Germano Cavalcante
Date:   Wed Feb 3 19:25:16 2021 -0300
Branches: master
https://developer.blender.org/rBbc56c127704f937d7fdfee082975bc0fa01f4b52

Cleanup: Rearrange and name the enums and flags used in the transform code

Simple change that shows all the enums used in the transform code and helps
to better understand the role of the members of the struct TransInfo.

It also allows the IDE to show the name of the value represented by the
member instead of a number that needs to be consulted.

Differential Revision: https://developer.blender.org/D10312

===================================================================

M	source/blender/editors/include/ED_transform.h
M	source/blender/editors/transform/transform.h
M	source/blender/editors/transform/transform_convert.c
M	source/blender/editors/transform/transform_convert.h
M	source/blender/editors/transform/transform_draw_cursors.c

===================================================================

diff --git a/source/blender/editors/include/ED_transform.h b/source/blender/editors/include/ED_transform.h
index 2ab062a718c..8f1be847e2b 100644
--- a/source/blender/editors/include/ED_transform.h
+++ b/source/blender/editors/include/ED_transform.h
@@ -40,7 +40,7 @@ void transform_operatortypes(void);
 /* ******************** Macros & Prototypes *********************** */
 
 /* MODE AND NUMINPUT FLAGS */
-enum TfmMode {
+typedef enum {
   TFM_INIT = -1,
   TFM_DUMMY,
   TFM_TRANSLATION,
@@ -77,24 +77,7 @@ enum TfmMode {
   TFM_BONE_ENVELOPE_DIST,
   TFM_NORMAL_ROTATION,
   TFM_GPENCIL_OPACITY,
-};
-
-/* TRANSFORM CONTEXTS */
-#define CTX_NONE 0
-#define CTX_TEXTURE (1 << 0)
-#define CTX_EDGE (1 << 1)
-#define CTX_NO_PET (1 << 2)
-#define CTX_NO_MIRROR (1 << 3)
-#define CTX_AUTOCONFIRM (1 << 4)
-#define CTX_MOVIECLIP (1 << 6)
-#define CTX_MASK (1 << 7)
-#define CTX_PAINT_CURVE (1 << 8)
-#define CTX_GPENCIL_STROKES (1 << 9)
-#define CTX_CURSOR (1 << 10)
-/** When transforming object's, adjust the object data so it stays in the same place. */
-#define CTX_OBMODE_XFORM_OBDATA (1 << 11)
-/** Transform object parents without moving their children. */
-#define CTX_OBMODE_XFORM_SKIP_CHILDREN (1 << 12)
+} eTfmMode;
 
 /* Standalone call to get the transformation center corresponding to the current situation
  * returns 1 if successful, 0 otherwise (usually means there's no selection)
diff --git a/source/blender/editors/transform/transform.h b/source/blender/editors/transform/transform.h
index fff7d47cc5b..72f43a14b11 100644
--- a/source/blender/editors/transform/transform.h
+++ b/source/blender/editors/transform/transform.h
@@ -36,6 +36,11 @@
 
 #include "transform_data.h"
 
+/* use node center for transform instead of upper-left corner.
+ * disabled since it makes absolute snapping not work so nicely
+ */
+// #define USE_NODE_CENTER
+
 /* -------------------------------------------------------------------- */
 /** \name Types/
  * \{ */
@@ -60,6 +65,133 @@ struct wmKeyMap;
 struct wmOperator;
 struct wmTimer;
 
+/** \} */
+
+/* -------------------------------------------------------------------- */
+/** \name Enums and Flags
+ * \{ */
+
+/** #TransInfo.options */
+typedef enum {
+  CTX_NONE = 0,
+  CTX_TEXTURE = (1 << 0),
+  CTX_EDGE = (1 << 1),
+  CTX_NO_PET = (1 << 2),
+  CTX_NO_MIRROR = (1 << 3),
+  CTX_AUTOCONFIRM = (1 << 4),
+  CTX_MOVIECLIP = (1 << 6),
+  CTX_MASK = (1 << 7),
+  CTX_PAINT_CURVE = (1 << 8),
+  CTX_GPENCIL_STROKES = (1 << 9),
+  CTX_CURSOR = (1 << 10),
+  /** When transforming object's, adjust the object data so it stays in the same place. */
+  CTX_OBMODE_XFORM_OBDATA = (1 << 11),
+  /** Transform object parents without moving their children. */
+  CTX_OBMODE_XFORM_SKIP_CHILDREN = (1 << 12),
+} eTContext;
+
+/** #TransInfo.flag */
+typedef enum {
+  T_OBJECT = 1 << 0,
+  /** \note We could remove 'T_EDIT' and use 'obedit_type', for now ensure they're in sync. */
+  T_EDIT = 1 << 1,
+  T_POSE = 1 << 2,
+  T_TEXTURE = 1 << 3,
+  /** Transforming the 3d view. */
+  T_CAMERA = 1 << 4,
+  /** Transforming the 3D cursor. */
+  T_CURSOR = 1 << 5,
+  /** Transform points, having no rotation/scale. */
+  T_POINTS = 1 << 6,
+  /** restrictions flags */
+  T_NO_CONSTRAINT = 1 << 7,
+  T_NULL_ONE = 1 << 8,
+  T_NO_ZERO = 1 << 9,
+  T_ALL_RESTRICTIONS = T_NO_CONSTRAINT | T_NULL_ONE | T_NO_ZERO,
+
+  T_PROP_EDIT = 1 << 10,
+  T_PROP_CONNECTED = 1 << 11,
+  T_PROP_PROJECTED = 1 << 12,
+  T_PROP_EDIT_ALL = T_PROP_EDIT | T_PROP_CONNECTED | T_PROP_PROJECTED,
+
+  T_V3D_ALIGN = 1 << 13,
+  /** For 2D views such as UV or f-curve. */
+  T_2D_EDIT = 1 << 14,
+  T_CLIP_UV = 1 << 15,
+
+  /** Auto-IK is on. */
+  T_AUTOIK = 1 << 16,
+
+  /** Don't use mirror even if the data-block option is set. */
+  T_NO_MIRROR = 1 << 17,
+
+  /** To indicate that the value set in the `value` parameter is the final
+   * value of the transformation, modified only by the constrain. */
+  T_INPUT_IS_VALUES_FINAL = 1 << 18,
+
+  /** To specify if we save back settings at the end. */
+  T_MODAL = 1 << 19,
+
+  /** No re-topology (projection). */
+  T_NO_PROJECT = 1 << 20,
+
+  T_RELEASE_CONFIRM = 1 << 21,
+
+  /** Alternative transformation. used to add offset to tracking markers. */
+  T_ALT_TRANSFORM = 1 << 22,
+
+  /** #TransInfo.center has been set, don't change it. */
+  T_OVERRIDE_CENTER = 1 << 23,
+
+  T_MODAL_CURSOR_SET = 1 << 24,
+
+  T_CLNOR_REBUILD = 1 << 25,
+
+  /** Merges unselected into selected after transforming (runs after transforming). */
+  T_AUTOMERGE = 1 << 26,
+  /** Runs auto-merge & splits. */
+  T_AUTOSPLIT = 1 << 27,
+} eTFlag;
+
+/** #TransInfo.modifiers */
+typedef enum {
+  MOD_CONSTRAINT_SELECT = 1 << 0,
+  MOD_PRECISION = 1 << 1,
+  MOD_SNAP = 1 << 2,
+  MOD_SNAP_INVERT = 1 << 3,
+  MOD_CONSTRAINT_PLANE = 1 << 4,
+} eTModifier;
+
+/** #TransSnap.status */
+typedef enum {
+  SNAP_FORCED = 1 << 0,
+  TARGET_INIT = 1 << 1,
+  POINT_INIT = 1 << 2,
+  MULTI_POINTS = 1 << 3,
+} eTSnap;
+
+/** #TransCon.mode, #TransInfo.con.mode */
+typedef enum {
+  /** When set constraints are in use. */
+  CON_APPLY = 1 << 0,
+  /** These are only used for modal execution. */
+  CON_AXIS0 = 1 << 1,
+  CON_AXIS1 = 1 << 2,
+  CON_AXIS2 = 1 << 3,
+  CON_SELECT = 1 << 4,
+  /** Does not reorient vector to face viewport when on. */
+  CON_NOFLIP = 1 << 5,
+  CON_USER = 1 << 6,
+} eTConstraint;
+
+/** #TransInfo.state */
+typedef enum {
+  TRANS_STARTING = 0,
+  TRANS_RUNNING = 1,
+  TRANS_CONFIRM = 2,
+  TRANS_CANCEL = 3,
+} eTState;
+
 /** #TransInfo.redraw */
 typedef enum {
   TREDRAW_NOTHING = 0,
@@ -67,6 +199,95 @@ typedef enum {
   TREDRAW_SOFT = 2,
 } eRedrawFlag;
 
+/** #TransInfo.helpline */
+typedef enum {
+  HLP_NONE = 0,
+  HLP_SPRING = 1,
+  HLP_ANGLE = 2,
+  HLP_HARROW = 3,
+  HLP_VARROW = 4,
+  HLP_CARROW = 5,
+  HLP_TRACKBALL = 6,
+} eTHelpline;
+
+typedef enum {
+  TC_NONE = 0,
+  TC_ACTION_DATA,
+  TC_POSE,
+  TC_ARMATURE_VERTS,
+  TC_CURSOR_IMAGE,
+  TC_CURSOR_VIEW3D,
+  TC_CURVE_VERTS,
+  TC_GRAPH_EDIT_DATA,
+  TC_GPENCIL,
+  TC_LATTICE_VERTS,
+  TC_MASKING_DATA,
+  TC_MBALL_VERTS,
+  TC_MESH_VERTS,
+  TC_MESH_EDGES,
+  TC_MESH_SKIN,
+  TC_MESH_UV,
+  TC_NLA_DATA,
+  TC_NODE_DATA,
+  TC_OBJECT,
+  TC_OBJECT_TEXSPACE,
+  TC_PAINT_CURVE_VERTS,
+  TC_PARTICLE_VERTS,
+  TC_SCULPT,
+  TC_SEQ_DATA,
+  TC_TRACKING_DATA,
+} eTConvertType;
+
+/** \} */
+
+/* -------------------------------------------------------------------- */
+/** \name Keymap Modal Items
+ *
+ * \note these values are saved in key-map files, do not change then but just add new ones.
+ * \{ */
+
+enum {
+  TFM_MODAL_CANCEL = 1,
+  TFM_MODAL_CONFIRM = 2,
+  TFM_MODAL_TRANSLATE = 3,
+  TFM_MODAL_ROTATE = 4,
+  TFM_MODAL_RESIZE = 5,
+  TFM_MODAL_SNAP_INV_ON = 6,
+  TFM_MODAL_SNAP_INV_OFF = 7,
+  TFM_MODAL_SNAP_TOGGLE = 8,
+  TFM_MODAL_AXIS_X = 9,
+  TFM_MODAL_AXIS_Y = 10,
+  TFM_MODAL_AXIS_Z = 11,
+  TFM_MODAL_PLANE_X = 12,
+  TFM_MODAL_PLANE_Y = 13,
+  TFM_MODAL_PLANE_Z = 14,
+  TFM_MODAL_CONS_OFF = 15,
+  TFM_MODAL_ADD_SNAP = 16,
+  TFM_MODAL_REMOVE_SNAP = 17,
+
+  /* 18 and 19 used by number-input, defined in `ED_numinput.h`. */
+  // NUM_MODAL_INCREMENT_UP = 18,
+  // NUM_MODAL_INCREMENT_DOWN = 19,
+
+  TFM_MODAL_PROPSIZE_UP = 20,
+  TFM_MODAL_PROPSIZE_DOWN = 21,
+  TFM_MODAL_AUTOIK_LEN_INC = 22,
+  TFM_MODAL_AUTOIK_LEN_DEC = 23,
+
+  TFM_MODAL_EDGESLIDE_UP = 24,
+  TFM_MODAL_EDGESLIDE_DOWN = 25,
+
+  /** For analog input, like track-pad. */
+  TFM_MODAL_PROPSIZE = 26,
+  /** Node editor insert offset (also called auto-offset) direction toggle. */
+  TFM_MODAL_INSERTOFS_TOGGLE_DIR = 27,
+
+  TFM_MODAL_AUTOCONSTRAINT = 28,
+  TFM_MODAL_AUTOCONSTRAINTPLANE = 29,
+};
+
+/** \} */
+
 typedef struct TransSnapPoint {
   struct TransSnapPoint *next, *prev;
   float co[3];
@@ -82,7 +303,7 @@ typedef struct TransSnap {
   bool snap_self;
   bool peel;
   bool use_backface_culling;
-  char status;
+  eTSnap status;
   /* Snapped Element Type (currently for objects only). */
   char snapElem;
   /** snapping from this point (in global-space). */
@@ -120,7 +341,7 @@ typedef struct TransCon {
    * the one in #TransInfo is not guarantee to stay the same (Rotates change it). */
   int imval[2];
   /** Mode flags of the constraint. */
-  int mode;
+  eTConstraint mode;
   void (*drawExtra)(struct TransInfo *t);
 
   /* Note: if 'tc' is NULL, 'td' must also be NULL.
@@ -266,37 +487,45 @@ typedef struct TransInfo {
   TransDataContainer *data_container;
   int data_container_len;
 
-  /** #eTransConvertType
-   * TODO: It should be a member of #TransDataContainer. */
-  int data_type;
-
   /** Combine length of all #TransDataContainer.data_len
    * Use to check if nothing is selected or if we have a single selection. */
   int data_len_all;
 
-  /** Current mode. */
-  int mode;
+  /** TODO: It should be a member of #TransDataContainer. */
+  eTConvertType data_type;
+
+  /** Current context/options for transform. */
+  eTContext options;
   /** Generic flags for special behaviors. */
-  int flag;
+  eTFlag flag;
   /** Special modifiers, by function, not key. */
-  int modifiers;
+  eTModifier modifiers;
   /** Current state (running, canceled. */
-  short state;
-  /** Current context/options for transform. */
-  int options;
+  eTState state;
+  /** Redraw flag. */
+  eRedrawFlag redraw;
+  /** Choice of custom cursor with or without a help line from the gizmo to the mouse position. */
+  eTHelpline helpline;
+  /** Current mode. */
+  eTfmMode mode;
+
+  /** Main transform mode function. */
   void (*transform)(struct TransInfo *, const int[2]);
-  /** Transform function pointer. */
+  /* Event handler function that determines whether the viewport needs to be redrawn. */
   eRedrawFlag (*handleEvent)(struct TransInfo *, const struct wmEvent *);
-  /* event handler function pointer  RETURN 1 if redraw is needed */
-  /** transformed constraint. */
+
+  /** Constraint Data. */
   TransCon con;
+
+  /** Snap Data. */
   TransSnap tsnap;
-  /** numerical input. */
+
+  /** Numerical input. */
   NumInput num;
-  /** mouse input. */
+
+  /** Mouse input. */
   MouseInput mouse;
-  /** redraw flag. */
-  eRedrawFlag redraw;
+
   /** proportional circle radius. */
   float prop_size;
   /** proportional

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list