Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/editors/transform')
-rw-r--r--source/blender/editors/transform/transform.c23
-rw-r--r--source/blender/editors/transform/transform_conversions.c13
-rw-r--r--source/blender/editors/transform/transform_generics.c11
-rw-r--r--source/blender/editors/transform/transform_manipulator.c32
-rw-r--r--source/blender/editors/transform/transform_orientations.c30
-rw-r--r--source/blender/editors/transform/transform_snap.c4
6 files changed, 58 insertions, 55 deletions
diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c
index f88d4becc74..8259ca64bad 100644
--- a/source/blender/editors/transform/transform.c
+++ b/source/blender/editors/transform/transform.c
@@ -125,11 +125,11 @@ static void convertViewVec2D(View2D *v2d, float r_vec[3], int dx, int dy)
{
float divx, divy;
- divx = v2d->mask.xmax - v2d->mask.xmin;
- divy = v2d->mask.ymax - v2d->mask.ymin;
+ divx = BLI_RCT_SIZE_X(&v2d->mask);
+ divy = BLI_RCT_SIZE_Y(&v2d->mask);
- r_vec[0] = (v2d->cur.xmax - v2d->cur.xmin) * dx / divx;
- r_vec[1] = (v2d->cur.ymax - v2d->cur.ymin) * dy / divy;
+ r_vec[0] = BLI_RCT_SIZE_X(&v2d->cur) * dx / divx;
+ r_vec[1] = BLI_RCT_SIZE_Y(&v2d->cur) * dy / divy;
r_vec[2] = 0.0f;
}
@@ -138,11 +138,11 @@ static void convertViewVec2D_mask(View2D *v2d, float r_vec[3], int dx, int dy)
float divx, divy;
float mulx, muly;
- divx = v2d->mask.xmax - v2d->mask.xmin;
- divy = v2d->mask.ymax - v2d->mask.ymin;
+ divx = BLI_RCT_SIZE_X(&v2d->mask);
+ divy = BLI_RCT_SIZE_Y(&v2d->mask);
- mulx = (v2d->cur.xmax - v2d->cur.xmin);
- muly = (v2d->cur.ymax - v2d->cur.ymin);
+ mulx = BLI_RCT_SIZE_X(&v2d->cur);
+ muly = BLI_RCT_SIZE_Y(&v2d->cur);
/* difference with convertViewVec2D */
/* clamp w/h, mask only */
@@ -208,6 +208,11 @@ void convertViewVec(TransInfo *t, float r_vec[3], int dx, int dy)
/* TODO - NOT WORKING, this isnt so bad since its only display aspect */
ED_space_clip_get_aspect(t->sa->spacedata.first, &aspx, &aspy);
}
+ else {
+ /* should never happen, quiet warnings */
+ BLI_assert(0);
+ aspx = aspy = 1.0f;
+ }
r_vec[0] *= aspx;
r_vec[1] *= aspy;
@@ -4978,7 +4983,9 @@ static int createSlideVerts(TransInfo *t)
/* This test is only relevant if object is not wire-drawn! See [#32068]. */
if (v3d && t->obedit->dt > OB_WIRE && v3d->drawtype > OB_WIRE &&
!BMBVH_EdgeVisible(btree, e2, ar, v3d, t->obedit))
+ {
continue;
+ }
j = GET_INT_FROM_POINTER(BLI_smallhash_lookup(&table, (uintptr_t)v));
diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c
index c22a645eb53..8eba8ebea41 100644
--- a/source/blender/editors/transform/transform_conversions.c
+++ b/source/blender/editors/transform/transform_conversions.c
@@ -4209,7 +4209,7 @@ static void freeSeqData(TransInfo *t)
for (a = 0; a < t->total; a++, td++) {
if ((seq != seq_prev) && (seq->depth == 0) && (seq->flag & SEQ_OVERLAP)) {
seq = ((TransDataSeq *)td->extra)->seq;
- shuffle_seq(seqbasep, seq);
+ BKE_sequence_base_shuffle(seqbasep, seq, t->scene);
}
seq_prev = seq;
@@ -4244,7 +4244,7 @@ static void freeSeqData(TransInfo *t)
has_effect = TRUE;
}
else {
- /* Tag seq with a non zero value, used by shuffle_seq_time to identify the ones to shuffle */
+ /* Tag seq with a non zero value, used by BKE_sequence_base_shuffle_time to identify the ones to shuffle */
seq->tmp = (void *)1;
}
}
@@ -4289,7 +4289,7 @@ static void freeSeqData(TransInfo *t)
BKE_sequence_base_shuffle_time(seqbasep, t->scene);
}
#else
- shuffle_seq_time(seqbasep, t->scene);
+ BKE_sequence_base_shuffle_time(seqbasep, t->scene);
#endif
if (has_effect) {
@@ -4340,6 +4340,9 @@ static void freeSeqData(TransInfo *t)
for (a = 0; a < t->total; a++, td++) {
seq = ((TransDataSeq *)td->extra)->seq;
if ((seq != seq_prev) && (seq->depth == 0)) {
+ if (seq->flag & SEQ_OVERLAP)
+ BKE_sequence_base_shuffle(seqbasep, seq, t->scene);
+
BKE_sequence_calc_disp(t->scene, seq);
}
seq_prev = seq;
@@ -5548,8 +5551,8 @@ static void createTransObject(bContext *C, TransInfo *t)
static void NodeToTransData(TransData *td, TransData2D *td2d, bNode *node)
{
/* hold original location */
- float locxy[2] = {(node->totr.xmax + node->totr.xmin) / 2.0f,
- (node->totr.ymax + node->totr.ymin) / 2.0f};
+ float locxy[2] = {BLI_RCT_CENTER_X(&node->totr),
+ BLI_RCT_CENTER_Y(&node->totr)};
copy_v2_v2(td2d->loc, locxy);
td2d->loc[2] = 0.0f;
diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c
index 8e73fb8b8cb..bcebca52ce8 100644
--- a/source/blender/editors/transform/transform_generics.c
+++ b/source/blender/editors/transform/transform_generics.c
@@ -71,6 +71,7 @@
#include "BKE_mesh.h"
#include "BKE_nla.h"
#include "BKE_context.h"
+#include "BKE_sequencer.h"
#include "BKE_tessmesh.h"
#include "BKE_tracking.h"
#include "BKE_mask.h"
@@ -890,6 +891,14 @@ static void recalcData_view3d(TransInfo *t)
}
}
+/* helper for recalcData() - for sequencer transforms */
+static void recalcData_sequencer(TransInfo *t)
+{
+ BKE_sequencer_preprocessed_cache_cleanup();
+
+ flushTransSeq(t);
+}
+
/* called for updating while transform acts, once per redraw */
void recalcData(TransInfo *t)
{
@@ -897,7 +906,7 @@ void recalcData(TransInfo *t)
flushTransNodes(t);
}
else if (t->spacetype == SPACE_SEQ) {
- flushTransSeq(t);
+ recalcData_sequencer(t);
}
else if (t->spacetype == SPACE_ACTION) {
recalcData_actedit(t);
diff --git a/source/blender/editors/transform/transform_manipulator.c b/source/blender/editors/transform/transform_manipulator.c
index a89ba06c1af..74a2292d74c 100644
--- a/source/blender/editors/transform/transform_manipulator.c
+++ b/source/blender/editors/transform/transform_manipulator.c
@@ -84,22 +84,22 @@
/* return codes for select, and drawing flags */
-#define MAN_TRANS_X 1
-#define MAN_TRANS_Y 2
-#define MAN_TRANS_Z 4
-#define MAN_TRANS_C 7
-
-#define MAN_ROT_X 8
-#define MAN_ROT_Y 16
-#define MAN_ROT_Z 32
-#define MAN_ROT_V 64
-#define MAN_ROT_T 128
-#define MAN_ROT_C 248
-
-#define MAN_SCALE_X 256
-#define MAN_SCALE_Y 512
-#define MAN_SCALE_Z 1024
-#define MAN_SCALE_C 1792
+#define MAN_TRANS_X (1 << 0)
+#define MAN_TRANS_Y (1 << 1)
+#define MAN_TRANS_Z (1 << 2)
+#define MAN_TRANS_C (MAN_TRANS_X | MAN_TRANS_Y | MAN_TRANS_Z)
+
+#define MAN_ROT_X (1 << 3)
+#define MAN_ROT_Y (1 << 4)
+#define MAN_ROT_Z (1 << 5)
+#define MAN_ROT_V (1 << 6)
+#define MAN_ROT_T (1 << 7)
+#define MAN_ROT_C (MAN_ROT_X | MAN_ROT_Y | MAN_ROT_Z | MAN_ROT_V | MAN_ROT_T)
+
+#define MAN_SCALE_X (1 << 8)
+#define MAN_SCALE_Y (1 << 9)
+#define MAN_SCALE_Z (1 << 10)
+#define MAN_SCALE_C (MAN_SCALE_X | MAN_SCALE_Y | MAN_SCALE_Z)
/* color codes */
diff --git a/source/blender/editors/transform/transform_orientations.c b/source/blender/editors/transform/transform_orientations.c
index b9583fc21e1..237f6b35eb0 100644
--- a/source/blender/editors/transform/transform_orientations.c
+++ b/source/blender/editors/transform/transform_orientations.c
@@ -33,6 +33,7 @@
#include "DNA_armature_types.h"
#include "DNA_curve_types.h"
#include "DNA_mesh_types.h"
+#include "DNA_meta_types.h"
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
#include "DNA_screen_types.h"
@@ -549,8 +550,8 @@ int getTransformOrientation(const bContext *C, float normal[3], float plane[3],
Object *ob = OBACT;
int result = ORIENTATION_NONE;
- normal[0] = normal[1] = normal[2] = 0;
- plane[0] = plane[1] = plane[2] = 0;
+ zero_v3(normal);
+ zero_v3(plane);
if (obedit) {
float imat[3][3], mat[3][3];
@@ -743,37 +744,20 @@ int getTransformOrientation(const bContext *C, float normal[3], float plane[3],
}
}
else if (obedit->type == OB_MBALL) {
-#if 0 // XXX
- /* editmball.c */
- MetaElem *ml, *ml_sel = NULL;
-
- /* loop and check that only one element is selected */
- for (ml = editelems.first; ml; ml = ml->next) {
- if (ml->flag & SELECT) {
- if (ml_sel == NULL) {
- ml_sel = ml;
- }
- else {
- ml_sel = NULL;
- break;
- }
- }
- }
+ MetaBall *mb = obedit->data;
- if (ml_sel) {
+ if (mb->lastelem) {
float mat[4][4];
/* Rotation of MetaElem is stored in quat */
- quat_to_mat4(mat, ml_sel->quat);
+ quat_to_mat4(mat, mb->lastelem->quat);
copy_v3_v3(normal, mat[2]);
negate_v3_v3(plane, mat[1]);
- result = ORIENTATION_NORMAL;
+ result = ORIENTATION_FACE;
}
-#endif
-
}
else if (obedit->type == OB_ARMATURE) {
bArmature *arm = obedit->data;
diff --git a/source/blender/editors/transform/transform_snap.c b/source/blender/editors/transform/transform_snap.c
index fcb857be4e0..89cb83e3661 100644
--- a/source/blender/editors/transform/transform_snap.c
+++ b/source/blender/editors/transform/transform_snap.c
@@ -961,8 +961,8 @@ static void TargetSnapOffset(TransInfo *t, TransData *td)
if (t->spacetype == SPACE_NODE && td != NULL) {
bNode *node = td->extra;
char border = t->tsnap.snapNodeBorder;
- float width = node->totr.xmax - node->totr.xmin;
- float height = node->totr.ymax - node->totr.ymin;
+ float width = BLI_RCT_SIZE_X(&node->totr);
+ float height = BLI_RCT_SIZE_Y(&node->totr);
if (border & NODE_LEFT)
t->tsnap.snapTarget[0] -= 0.5f * width;