[Bf-blender-cvs] [4ff5507fa38] temp-transform-conversions-split: Transform: MOve Mask and Brush conversion to they respective files

mano-wii noreply at git.blender.org
Thu Sep 5 15:48:47 CEST 2019


Commit: 4ff5507fa382e3738acb14949edd773a7e8d6e71
Author: mano-wii
Date:   Thu Sep 5 09:27:23 2019 -0300
Branches: temp-transform-conversions-split
https://developer.blender.org/rB4ff5507fa382e3738acb14949edd773a7e8d6e71

Transform: MOve Mask and Brush conversion to they respective files

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

M	source/blender/editors/transform/CMakeLists.txt
M	source/blender/editors/transform/transform_conversions.c
M	source/blender/editors/transform/transform_conversions.h
A	source/blender/editors/transform/transform_conversions_brush.c
A	source/blender/editors/transform/transform_conversions_mask.c

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

diff --git a/source/blender/editors/transform/CMakeLists.txt b/source/blender/editors/transform/CMakeLists.txt
index e7c9718e31a..9f5fc53974b 100644
--- a/source/blender/editors/transform/CMakeLists.txt
+++ b/source/blender/editors/transform/CMakeLists.txt
@@ -43,10 +43,12 @@ set(SRC
   transform_conversions.c
   transform_conversions_action.c
   transform_conversions_armature.c
+  transform_conversions_brush.c
   transform_conversions_cursor.c
   transform_conversions_curve.c
   transform_conversions_graph.c
   transform_conversions_lattice.c
+  transform_conversions_mask.c
   transform_conversions_mball.c
   transform_conversions_mesh.c
   transform_conversions_nla.c
diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c
index 3db777b89ac..122be066b1c 100644
--- a/source/blender/editors/transform/transform_conversions.c
+++ b/source/blender/editors/transform/transform_conversions.c
@@ -2860,356 +2860,6 @@ void flushTransTracking(TransInfo *t)
 
 /* * masking * */
 
-typedef struct TransDataMasking {
-  bool is_handle;
-
-  float handle[2], orig_handle[2];
-  float vec[3][3];
-  MaskSplinePoint *point;
-  float parent_matrix[3][3];
-  float parent_inverse_matrix[3][3];
-  char orig_handle_type;
-
-  eMaskWhichHandle which_handle;
-} TransDataMasking;
-
-static void MaskHandleToTransData(MaskSplinePoint *point,
-                                  eMaskWhichHandle which_handle,
-                                  TransData *td,
-                                  TransData2D *td2d,
-                                  TransDataMasking *tdm,
-                                  const float asp[2],
-                                  /*const*/ float parent_matrix[3][3],
-                                  /*const*/ float parent_inverse_matrix[3][3])
-{
-  BezTriple *bezt = &point->bezt;
-  const bool is_sel_any = MASKPOINT_ISSEL_ANY(point);
-
-  tdm->point = point;
-  copy_m3_m3(tdm->vec, bezt->vec);
-
-  tdm->is_handle = true;
-  copy_m3_m3(tdm->parent_matrix, parent_matrix);
-  copy_m3_m3(tdm->parent_inverse_matrix, parent_inverse_matrix);
-
-  BKE_mask_point_handle(point, which_handle, tdm->handle);
-  tdm->which_handle = which_handle;
-
-  copy_v2_v2(tdm->orig_handle, tdm->handle);
-
-  mul_v2_m3v2(td2d->loc, parent_matrix, tdm->handle);
-  td2d->loc[0] *= asp[0];
-  td2d->loc[1] *= asp[1];
-  td2d->loc[2] = 0.0f;
-
-  td2d->loc2d = tdm->handle;
-
-  td->flag = 0;
-  td->loc = td2d->loc;
-  mul_v2_m3v2(td->center, parent_matrix, bezt->vec[1]);
-  td->center[0] *= asp[0];
-  td->center[1] *= asp[1];
-  copy_v3_v3(td->iloc, td->loc);
-
-  memset(td->axismtx, 0, sizeof(td->axismtx));
-  td->axismtx[2][2] = 1.0f;
-
-  td->ext = NULL;
-  td->val = NULL;
-
-  if (is_sel_any) {
-    td->flag |= TD_SELECTED;
-  }
-
-  td->dist = 0.0;
-
-  unit_m3(td->mtx);
-  unit_m3(td->smtx);
-
-  if (which_handle == MASK_WHICH_HANDLE_LEFT) {
-    tdm->orig_handle_type = bezt->h1;
-  }
-  else if (which_handle == MASK_WHICH_HANDLE_RIGHT) {
-    tdm->orig_handle_type = bezt->h2;
-  }
-}
-
-static void MaskPointToTransData(Scene *scene,
-                                 MaskSplinePoint *point,
-                                 TransData *td,
-                                 TransData2D *td2d,
-                                 TransDataMasking *tdm,
-                                 const bool is_prop_edit,
-                                 const float asp[2])
-{
-  BezTriple *bezt = &point->bezt;
-  const bool is_sel_point = MASKPOINT_ISSEL_KNOT(point);
-  const bool is_sel_any = MASKPOINT_ISSEL_ANY(point);
-  float parent_matrix[3][3], parent_inverse_matrix[3][3];
-
-  BKE_mask_point_parent_matrix_get(point, CFRA, parent_matrix);
-  invert_m3_m3(parent_inverse_matrix, parent_matrix);
-
-  if (is_prop_edit || is_sel_point) {
-    int i;
-
-    tdm->point = point;
-    copy_m3_m3(tdm->vec, bezt->vec);
-
-    for (i = 0; i < 3; i++) {
-      copy_m3_m3(tdm->parent_matrix, parent_matrix);
-      copy_m3_m3(tdm->parent_inverse_matrix, parent_inverse_matrix);
-
-      /* CV coords are scaled by aspects. this is needed for rotations and
-       * proportional editing to be consistent with the stretched CV coords
-       * that are displayed. this also means that for display and numinput,
-       * and when the CV coords are flushed, these are converted each time */
-      mul_v2_m3v2(td2d->loc, parent_matrix, bezt->vec[i]);
-      td2d->loc[0] *= asp[0];
-      td2d->loc[1] *= asp[1];
-      td2d->loc[2] = 0.0f;
-
-      td2d->loc2d = bezt->vec[i];
-
-      td->flag = 0;
-      td->loc = td2d->loc;
-      mul_v2_m3v2(td->center, parent_matrix, bezt->vec[1]);
-      td->center[0] *= asp[0];
-      td->center[1] *= asp[1];
-      copy_v3_v3(td->iloc, td->loc);
-
-      memset(td->axismtx, 0, sizeof(td->axismtx));
-      td->axismtx[2][2] = 1.0f;
-
-      td->ext = NULL;
-
-      if (i == 1) {
-        /* scaling weights */
-        td->val = &bezt->weight;
-        td->ival = *td->val;
-      }
-      else {
-        td->val = NULL;
-      }
-
-      if (is_sel_any) {
-        td->flag |= TD_SELECTED;
-      }
-      td->dist = 0.0;
-
-      unit_m3(td->mtx);
-      unit_m3(td->smtx);
-
-      if (i == 0) {
-        tdm->orig_handle_type = bezt->h1;
-      }
-      else if (i == 2) {
-        tdm->orig_handle_type = bezt->h2;
-      }
-
-      td++;
-      td2d++;
-      tdm++;
-    }
-  }
-  else {
-    if (BKE_mask_point_handles_mode_get(point) == MASK_HANDLE_MODE_STICK) {
-      MaskHandleToTransData(point,
-                            MASK_WHICH_HANDLE_STICK,
-                            td,
-                            td2d,
-                            tdm,
-                            asp,
-                            parent_matrix,
-                            parent_inverse_matrix);
-
-      td++;
-      td2d++;
-      tdm++;
-    }
-    else {
-      if (bezt->f1 & SELECT) {
-        MaskHandleToTransData(point,
-                              MASK_WHICH_HANDLE_LEFT,
-                              td,
-                              td2d,
-                              tdm,
-                              asp,
-                              parent_matrix,
-                              parent_inverse_matrix);
-
-        if (bezt->h1 == HD_VECT) {
-          bezt->h1 = HD_FREE;
-        }
-        else if (bezt->h1 == HD_AUTO) {
-          bezt->h1 = HD_ALIGN_DOUBLESIDE;
-          bezt->h2 = HD_ALIGN_DOUBLESIDE;
-        }
-
-        td++;
-        td2d++;
-        tdm++;
-      }
-      if (bezt->f3 & SELECT) {
-        MaskHandleToTransData(point,
-                              MASK_WHICH_HANDLE_RIGHT,
-                              td,
-                              td2d,
-                              tdm,
-                              asp,
-                              parent_matrix,
-                              parent_inverse_matrix);
-
-        if (bezt->h2 == HD_VECT) {
-          bezt->h2 = HD_FREE;
-        }
-        else if (bezt->h2 == HD_AUTO) {
-          bezt->h1 = HD_ALIGN_DOUBLESIDE;
-          bezt->h2 = HD_ALIGN_DOUBLESIDE;
-        }
-
-        td++;
-        td2d++;
-        tdm++;
-      }
-    }
-  }
-}
-
-static void createTransMaskingData(bContext *C, TransInfo *t)
-{
-  Scene *scene = CTX_data_scene(C);
-  Mask *mask = CTX_data_edit_mask(C);
-  MaskLayer *masklay;
-  TransData *td = NULL;
-  TransData2D *td2d = NULL;
-  TransDataMasking *tdm = NULL;
-  int count = 0, countsel = 0;
-  const bool is_prop_edit = (t->flag & T_PROP_EDIT);
-  float asp[2];
-
-  TransDataContainer *tc = TRANS_DATA_CONTAINER_FIRST_SINGLE(t);
-
-  tc->data_len = 0;
-
-  if (!mask) {
-    return;
-  }
-
-  if (t->spacetype == SPACE_CLIP) {
-    SpaceClip *sc = t->sa->spacedata.first;
-    MovieClip *clip = ED_space_clip_get_clip(sc);
-    if (!clip) {
-      return;
-    }
-  }
-
-  /* count */
-  for (masklay = mask->masklayers.first; masklay; masklay = masklay->next) {
-    MaskSpline *spline;
-
-    if (masklay->restrictflag & (MASK_RESTRICT_VIEW | MASK_RESTRICT_SELECT)) {
-      continue;
-    }
-
-    for (spline = masklay->splines.first; spline; spline = spline->next) {
-      int i;
-
-      for (i = 0; i < spline->tot_point; i++) {
-        MaskSplinePoint *point = &spline->points[i];
-
-        if (MASKPOINT_ISSEL_ANY(point)) {
-          if (MASKPOINT_ISSEL_KNOT(point)) {
-            countsel += 3;
-          }
-          else {
-            if (BKE_mask_point_handles_mode_get(point) == MASK_HANDLE_MODE_STICK) {
-              countsel += 1;
-            }
-            else {
-              BezTriple *bezt = &point->bezt;
-              if (bezt->f1 & SELECT) {
-                countsel++;
-              }
-              if (bezt->f3 & SELECT) {
-                countsel++;
-              }
-            }
-          }
-        }
-
-        if (is_prop_edit) {
-          count += 3;
-        }
-      }
-    }
-  }
-
-  /* note: in prop mode we need at least 1 selected */
-  if (countsel == 0) {
-    return;
-  }
-
-  ED_mask_get_aspect(t->sa, t->ar, &asp[0], &asp[1]);
-
-  tc->data_len = (is_prop_edit) ? count : countsel;
-  td = tc->data = MEM_callocN(tc->data_len * sizeof(TransData), "TransObData(Mask Editing)");
-  /* for each 2d uv coord a 3d vector is allocated, so that they can be
-   * treated just as if they were 3d verts */
-  td2d = tc->data_2d = MEM_callocN(tc->data_len * sizeof(TransData2D),
-                                   "TransObData2D(Mask Editing)");
-  tc->custom.type.data = tdm = MEM_callocN(tc->data_len * sizeof(TransDataMasking),
-                                           "TransDataMasking(Mask Editing)");
-  tc->custom.type.use_free = true;
-
-  /* create data */
-  for (masklay = mask->masklayers.first; masklay; masklay = masklay->next) {
-    MaskSpline *spline;
-
-    if (masklay->restrictflag & (MASK_RESTRICT_VIEW | MASK_RESTRICT_SELECT)) {
-      continue;
-    }
-
-    for (spline = masklay->splines.first; spline; spline = spline->next) {
-      int i;
-
-      for (i = 0; i < spline->tot_point; i++) {
-        MaskSplinePoint *point = &spline->points[i];
-
-        if (is_prop_edit || MASKPOINT_ISSEL_ANY(point)) {
-          MaskPointToTransData(scene, point

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list