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.c58
-rw-r--r--source/blender/editors/transform/transform.h4
-rw-r--r--source/blender/editors/transform/transform_conversions.c254
-rw-r--r--source/blender/editors/transform/transform_generics.c47
-rw-r--r--source/blender/editors/transform/transform_input.c2
-rw-r--r--source/blender/editors/transform/transform_ops.c5
-rw-r--r--source/blender/editors/transform/transform_orientations.c8
7 files changed, 358 insertions, 20 deletions
diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c
index 759fefba438..13d686508de 100644
--- a/source/blender/editors/transform/transform.c
+++ b/source/blender/editors/transform/transform.c
@@ -48,6 +48,7 @@
#include "DNA_armature_types.h"
#include "DNA_constraint_types.h"
#include "DNA_meshdata_types.h"
+#include "DNA_movieclip_types.h"
#include "DNA_scene_types.h" /* PET modes */
#include "RNA_access.h"
@@ -71,6 +72,7 @@
#include "ED_markers.h"
#include "ED_view3d.h"
#include "ED_mesh.h"
+#include "ED_clip.h"
#include "UI_view2d.h"
#include "WM_types.h"
@@ -155,6 +157,17 @@ void convertViewVec(TransInfo *t, float *vec, int dx, int dy)
else if(ELEM(t->spacetype, SPACE_NODE, SPACE_SEQ)) {
convertViewVec2D(&t->ar->v2d, vec, dx, dy);
}
+ else if(t->spacetype==SPACE_CLIP) {
+ View2D *v2d = t->view;
+ float divx, divy;
+
+ divx= v2d->mask.xmax-v2d->mask.xmin;
+ divy= v2d->mask.ymax-v2d->mask.ymin;
+
+ vec[0]= (v2d->cur.xmax-v2d->cur.xmin)*(dx)/divx;
+ vec[1]= (v2d->cur.ymax-v2d->cur.ymin)*(dy)/divy;
+ vec[2]= 0.0f;
+ }
}
void projectIntView(TransInfo *t, float *vec, int *adr)
@@ -205,6 +218,9 @@ void projectIntView(TransInfo *t, float *vec, int *adr)
adr[0]= out[0];
adr[1]= out[1];
}
+ else if(t->spacetype==SPACE_CLIP) {
+ UI_view2d_to_region_no_clip(t->view, vec[0], vec[1], adr, adr+1);
+ }
}
void projectFloatView(TransInfo *t, float *vec, float *adr)
@@ -213,7 +229,7 @@ void projectFloatView(TransInfo *t, float *vec, float *adr)
if(t->ar->regiontype == RGN_TYPE_WINDOW)
project_float_noclip(t->ar, vec, adr);
}
- else if(t->spacetype==SPACE_IMAGE) {
+ else if(ELEM(t->spacetype, SPACE_IMAGE, SPACE_CLIP)) {
int a[2];
projectIntView(t, vec, a);
@@ -311,6 +327,15 @@ static void viewRedrawForce(const bContext *C, TransInfo *t)
if(sima->lock) WM_event_add_notifier(C, NC_GEOM|ND_DATA, t->obedit->data);
else ED_area_tag_redraw(t->sa);
}
+ else if (t->spacetype==SPACE_CLIP) {
+ SpaceClip *sc= (SpaceClip*)t->sa->spacedata.first;
+ MovieClip *clip= ED_space_clip(sc);
+
+ /* objects could be parented to tracking data, so send this for viewport refresh */
+ WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL);
+
+ WM_event_add_notifier(C, NC_MOVIECLIP|NA_EDITED, clip);
+ }
}
static void viewRedrawPost(bContext *C, TransInfo *t)
@@ -548,7 +573,7 @@ int transformEvent(TransInfo *t, wmEvent *event)
if (t->modifiers & MOD_CONSTRAINT_SELECT)
t->con.mode |= CON_SELECT;
- VECCOPY2D(t->mval, event->mval);
+ copy_v2_v2_int(t->mval, event->mval);
// t->redraw |= TREDRAW_SOFT; /* Use this for soft redraw. Might cause flicker in object mode */
t->redraw |= TREDRAW_HARD;
@@ -579,10 +604,18 @@ int transformEvent(TransInfo *t, wmEvent *event)
initSnapping(t, NULL); // need to reinit after mode change
t->redraw |= TREDRAW_HARD;
}
+ else if(t->mode == TFM_TRANSLATION) {
+ if(t->options&CTX_MOVIECLIP) {
+ restoreTransObjects(t);
+
+ t->flag^= T_ALT_TRANSFORM;
+ t->redraw |= TREDRAW_HARD;
+ }
+ }
break;
case TFM_MODAL_ROTATE:
/* only switch when... */
- if(!(t->options & CTX_TEXTURE)) {
+ if(!(t->options & CTX_TEXTURE) && !(t->options & CTX_MOVIECLIP)) {
if( ELEM4(t->mode, TFM_ROTATION, TFM_RESIZE, TFM_TRACKBALL, TFM_TRANSLATION) ) {
resetTransRestrictions(t);
@@ -837,7 +870,7 @@ int transformEvent(TransInfo *t, wmEvent *event)
break;
case RKEY:
/* only switch when... */
- if(!(t->options & CTX_TEXTURE)) {
+ if(!(t->options & CTX_TEXTURE) && !(t->options & CTX_MOVIECLIP)) {
if( ELEM4(t->mode, TFM_ROTATION, TFM_RESIZE, TFM_TRACKBALL, TFM_TRANSLATION) ) {
resetTransRestrictions(t);
@@ -1502,6 +1535,11 @@ int initTransform(bContext *C, TransInfo *t, wmOperator *op, wmEvent *event, int
t->draw_handle_view = ED_region_draw_cb_activate(t->ar->type, drawTransformView, t, REGION_DRAW_POST_VIEW);
//t->draw_handle_pixel = ED_region_draw_cb_activate(t->ar->type, drawTransformPixel, t, REGION_DRAW_POST_PIXEL);
}
+ else if(t->spacetype == SPACE_CLIP) {
+ unit_m3(t->spacemtx);
+ t->draw_handle_view = ED_region_draw_cb_activate(t->ar->type, drawTransformView, t, REGION_DRAW_POST_VIEW);
+ t->options |= CTX_MOVIECLIP;
+ }
else
unit_m3(t->spacemtx);
@@ -3293,7 +3331,7 @@ void initTranslation(TransInfo *t)
t->snap[2] = t->snap[1] * 0.1f;
}
}
- else if(t->spacetype == SPACE_IMAGE) {
+ else if(ELEM(t->spacetype, SPACE_IMAGE, SPACE_CLIP)) {
t->snap[0] = 0.0f;
t->snap[1] = 0.125f;
t->snap[2] = 0.0625f;
@@ -3882,7 +3920,7 @@ int Bevel(TransInfo *t, const int UNUSED(mval[2]))
else {
d = distance;
}
- VECADDFAC(td->loc,td->center,td->axismtx[0],(*td->val)*d);
+ madd_v3_v3v3fl(td->loc, td->center, td->axismtx[0], (*td->val) * d);
}
recalcData(t);
@@ -4847,7 +4885,7 @@ int doEdgeSlide(TransInfo *t, float perc)
interp_v2_v2v2(uv_tmp, suv->origuv, (perc>=0)?suv->uv_up:suv->uv_down, fabs(perc));
fuv_link = suv->fuv_list;
while (fuv_link) {
- VECCOPY2D(((float *)fuv_link->link), uv_tmp);
+ copy_v2_v2(((float *)fuv_link->link), uv_tmp);
fuv_link = fuv_link->next;
}
}
@@ -4878,7 +4916,7 @@ int doEdgeSlide(TransInfo *t, float perc)
interp_v2_v2v2(uv_tmp, suv->uv_down, suv->uv_up, fabs(newlen));
fuv_link = suv->fuv_list;
while (fuv_link) {
- VECCOPY2D(((float *)fuv_link->link), uv_tmp);
+ copy_v2_v2(((float *)fuv_link->link), uv_tmp);
fuv_link = fuv_link->next;
}
}
@@ -4895,7 +4933,7 @@ int doEdgeSlide(TransInfo *t, float perc)
interp_v2_v2v2(uv_tmp, suv->uv_up, suv->uv_down, fabs(newlen));
fuv_link = suv->fuv_list;
while (fuv_link) {
- VECCOPY2D(((float *)fuv_link->link), uv_tmp);
+ copy_v2_v2(((float *)fuv_link->link), uv_tmp);
fuv_link = fuv_link->next;
}
}
@@ -5861,7 +5899,7 @@ int TimeScale(TransInfo *t, const int UNUSED(mval[2]))
/* ************************************ */
-void BIF_TransformSetUndo(char *UNUSED(str))
+void BIF_TransformSetUndo(const char *UNUSED(str))
{
// TRANSFORM_FIX_ME
//Trans.undostr= str;
diff --git a/source/blender/editors/transform/transform.h b/source/blender/editors/transform/transform.h
index 77e7cfb4d12..8b8ae95631c 100644
--- a/source/blender/editors/transform/transform.h
+++ b/source/blender/editors/transform/transform.h
@@ -382,6 +382,9 @@ typedef struct TransInfo {
#define T_RELEASE_CONFIRM (1 << 23)
+ /* alternative transformation. used to add offset to tracking markers */
+#define T_ALT_TRANSFORM (1 << 24)
+
/* TransInfo->modifiers */
#define MOD_CONSTRAINT_SELECT 0x01
#define MOD_PRECISION 0x02
@@ -546,6 +549,7 @@ void flushTransParticles(TransInfo *t);
int clipUVTransform(TransInfo *t, float *vec, int resize);
void flushTransNodes(TransInfo *t);
void flushTransSeq(TransInfo *t);
+void flushTransTracking(TransInfo *t);
/*********************** exported from transform_manipulator.c ********** */
int gimbal_axis(struct Object *ob, float gmat[][3]); /* return 0 when no gimbal for selection */
diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c
index 6de854ff6c9..0a6f49f7c9f 100644
--- a/source/blender/editors/transform/transform_conversions.c
+++ b/source/blender/editors/transform/transform_conversions.c
@@ -51,6 +51,7 @@
#include "DNA_scene_types.h"
#include "DNA_meshdata_types.h"
#include "DNA_gpencil_types.h"
+#include "DNA_movieclip_types.h"
#include "MEM_guardedalloc.h"
@@ -74,6 +75,9 @@
#include "BKE_bmesh.h"
#include "BKE_scene.h"
#include "BKE_report.h"
+#include "BKE_tracking.h"
+#include "BKE_movieclip.h"
+#include "BKE_node.h"
#include "ED_anim_api.h"
@@ -88,8 +92,12 @@
#include "ED_node.h"
#include "ED_types.h"
#include "ED_uvedit.h"
+#include "ED_clip.h"
#include "ED_util.h" /* for crazyspace correction */
+#include "WM_api.h" /* for WM_event_add_notifier to deal with stabilization nodes */
+#include "WM_types.h"
+
#include "UI_view2d.h"
#include "BLI_math.h"
@@ -2960,8 +2968,8 @@ static TransData *ActionFCurveToTransData(TransData *td, TransData2D **td2dv, FC
td2d->h1 = bezt->vec[0];
td2d->h2 = bezt->vec[2];
- VECCOPY2D(td2d->ih1, td2d->h1);
- VECCOPY2D(td2d->ih2, td2d->h2);
+ copy_v2_v2(td2d->ih1, td2d->h1);
+ copy_v2_v2(td2d->ih2, td2d->h2);
td++;
td2d++;
@@ -3217,14 +3225,14 @@ static void bezt_to_transdata (TransData *td, TransData2D *td2d, AnimData *adt,
if (td->flag & TD_MOVEHANDLE1) {
td2d->h1 = bezt->vec[0];
- VECCOPY2D(td2d->ih1, td2d->h1);
+ copy_v2_v2(td2d->ih1, td2d->h1);
}
else
td2d->h1 = NULL;
if (td->flag & TD_MOVEHANDLE2) {
td2d->h2 = bezt->vec[2];
- VECCOPY2D(td2d->ih2, td2d->h2);
+ copy_v2_v2(td2d->ih2, td2d->h2);
}
else
td2d->h2 = NULL;
@@ -4796,6 +4804,17 @@ void special_aftertrans_update(bContext *C, TransInfo *t)
/* clear link line */
ED_node_link_intersect_test(t->sa, 0);
}
+ else if (t->spacetype == SPACE_CLIP) {
+ SpaceClip *sc= t->sa->spacedata.first;
+ MovieClip *clip= ED_space_clip(sc);
+
+ if(t->scene->nodetree) {
+ /* tracks can be used for stabilization nodes,
+ flush update for such nodes */
+ nodeUpdateID(t->scene->nodetree, &clip->id);
+ WM_event_add_notifier(C, NC_SCENE|ND_NODES, NULL);
+ }
+ }
else if (t->spacetype == SPACE_ACTION) {
SpaceAction *saction= (SpaceAction *)t->sa->spacedata.first;
bAnimContext ac;
@@ -5264,6 +5283,229 @@ static void createTransNodeData(bContext *C, TransInfo *t)
CTX_DATA_END
}
+/* *** CLIP EDITOR *** */
+
+typedef struct TransDataTracking {
+ int area;
+ float *relative, *loc;
+ float soffset[2], srelative[2];
+ float offset[2];
+
+ float (*smarkers)[2];
+ int markersnr;
+ MovieTrackingMarker *markers;
+} TransDataTracking;
+
+static void markerToTransDataInit(TransData *td, TransData2D *td2d,
+ TransDataTracking *tdt, MovieTrackingTrack *track, int area, float *loc, float *rel, float *off)
+{
+ int anchor = area==TRACK_AREA_POINT && off;
+
+ if(anchor) {
+ td2d->loc[0] = rel[0]; /* hold original location */
+ td2d->loc[1] = rel[1];
+
+ tdt->loc= loc;
+ td2d->loc2d = loc; /* current location */
+ } else {
+ td2d->loc[0] = loc[0]; /* hold original location */
+ td2d->loc[1] = loc[1];
+
+ td2d->loc2d = loc; /* current location */
+ }
+ td2d->loc[2] = 0.0f;
+
+ tdt->relative= rel;
+ tdt->area= area;
+
+ tdt->markersnr= track->markersnr;
+ tdt->markers= track->markers;
+
+ if(rel) {
+ if(!anchor) {
+ td2d->loc[0]+= rel[0];
+ td2d->loc[1]+= rel[1];
+ }
+
+ copy_v2_v2(tdt->srelative, rel);
+ }
+
+ if(off)
+ copy_v2_v2(tdt->soffset, off);
+
+ td->flag = 0;
+ td->loc = td2d->loc;
+ VECCOPY(td->center, td->loc);
+ VECCOPY(td->iloc, td->loc);
+
+ memset(td->axismtx, 0, sizeof(td->axismtx));
+ td->axismtx[2][2] = 1.0f;
+
+ td->ext= NULL; td->val= NULL;
+
+ td->flag |= TD_SELECTED;
+ td->dist= 0.0;
+
+ unit_m3(td->mtx);
+ unit_m3(td->smtx);
+}
+
+static void trackToTransData(SpaceClip *sc, TransData *td, TransData2D *td2d,
+ TransDataTracking *tdt, MovieTrackingTrack *track)
+{
+ MovieTrackingMarker *marker= BKE_tracking_ensure_marker(track, sc->user.framenr);
+
+ track->transflag= marker->flag;
+
+ marker->flag&= ~(MARKER_DISABLED|MARKER_TRACKED);
+
+ markerToTransDataInit(td++, td2d++, tdt++, track, TRACK_AREA_POINT, track->offset, marker->pos, track->offset);
+
+ if(track->flag&SELECT)
+ markerToTransDataInit(td++, td2d++, tdt++, track, TRACK_AREA_POINT, marker->pos, NULL, NULL);
+
+ if(track->pat_flag&SELECT) {
+ markerToTransDataInit(td++, td2d++, tdt++, track, TRACK_AREA_PAT, track->pat_min, marker->pos, NULL);
+ markerToTransDataInit(td++, td2d++, tdt++, track, TRACK_AREA_PAT, track->pat_max, marker->pos, NULL);
+ }
+
+ if(track->search_flag&SELECT) {
+ markerToTransDataInit(td++, td2d++, tdt++, track, TRACK_AREA_SEARCH, track->search_min, marker->pos, NULL);
+ markerToTransDataInit(td++, td2d++, tdt++, track, TRACK_AREA_SEARCH, track->search_max, marker->pos, NULL);
+ }
+}
+
+static void transDataTrackingFree(TransInfo *t)
+{
+ TransDataTracking *tdt= t->customData;
+
+ if(tdt) {
+ if(tdt->smarkers) MEM_freeN(tdt->smarkers);
+ MEM_freeN(tdt);
+ }
+}
+
+static void createTransTrackingData(bContext *C, TransInfo *t)
+{
+ TransData *td;
+ TransData2D *td2d;
+ SpaceClip *sc = CTX_wm_space_clip(C);
+ MovieClip *clip = ED_space_clip(sc);
+ MovieTrackingTrack *track;
+ MovieTrackingMarker *marker;
+ TransDataTracking *tdt;
+ int framenr = sc->user.framenr;
+
+ if(clip && !BKE_movieclip_has_frame(clip, &sc->user)) {
+ t->total = 0;
+ return;
+ }
+
+ /* count */
+ t->total = 0;
+
+ track = clip->tracking.tracks.first;
+ while(track) {
+ if(TRACK_VIEW_SELECTED(sc, track) && (track->flag&TRACK_LOCKED)==0) {
+ marker= BKE_tracking_get_marker(track, framenr);
+
+ if(marker) {
+ t->total++; /* offset */
+
+ if(track->flag&SELECT) t->total++;
+ if(track->pat_flag&SELECT) t->total+= 2;
+ if(track->search_flag&SELECT) t->total+= 2;
+ }
+ }
+
+ track = track->next;
+ }
+
+ if(t->total==0)
+ return;
+
+ td = t->data = MEM_callocN(t->total*sizeof(TransData), "TransTracking TransData");
+ td2d = t->data2d = MEM_callocN(t->total*sizeof(TransData2D), "TransTracking TransData2D");
+ tdt = t->customData = MEM_callocN(t->total*sizeof(TransDataTracking), "TransTracking TransDataTracking");
+
+ t->customFree= transDataTrackingFree;
+
+ /* create actual data */
+ track = clip->tracking.tracks.first;
+ while(track) {
+ if(TRACK_VIEW_SELECTED(sc, track) && (track->flag&TRACK_LOCKED)==0) {
+ marker= BKE_tracking_get_marker(track, framenr);
+
+ trackToTransData(sc, td, td2d, tdt, track);
+
+ /* offset */
+ td++;
+ td2d++;
+ tdt++;
+
+ if((marker->flag&MARKER_DISABLED)==0) {
+ if(track->flag&SELECT) {td++; td2d++; tdt++;}
+ if(track->pat_flag&SELECT) {td+= 2; td2d+= 2;tdt+=2;}
+ }
+
+ if(track->search_flag&SELECT) {
+ td+= 2;
+ td2d+= 2;
+ tdt+= 2;
+
+ if(marker->flag&MARKER_DISABLED) {
+ td+= 3;
+ td2d+= 3;
+ tdt+= 3;
+ };
+ }
+ }
+
+ track = track->next;
+ }
+}
+
+void flushTransTracking(TransInfo *t)
+{
+ TransData *td;
+ TransData2D *td2d;
+ TransDataTracking *tdt;
+ int a;
+
+ /* flush to 2d vector from internally used 3d vector */
+ for(a=0, td= t->data, td2d= t->data2d, tdt= t->customData; a<t->total; a++, td2d++, td++, tdt++) {
+ if(t->flag&T_ALT_TRANSFORM) {
+ if(tdt->area==TRACK_AREA_POINT && tdt->relative) {
+ float d[2], d2[2];
+
+ if(!tdt->smarkers) {
+ tdt->smarkers= MEM_callocN(sizeof(*tdt->smarkers)*tdt->markersnr, "flushTransTracking markers");
+ for(a= 0; a<tdt->markersnr; a++)
+ copy_v2_v2(tdt->smarkers[a], tdt->markers[a].pos);
+ }
+
+ sub_v2_v2v2(d, td2d->loc, tdt->soffset);
+ sub_v2_v2(d, tdt->srelative);
+
+ sub_v2_v2v2(d2, td2d->loc, tdt->srelative);
+
+ for(a= 0; a<tdt->markersnr; a++)
+ add_v2_v2v2(tdt->markers[a].pos, tdt->smarkers[a], d2);
+
+ negate_v2_v2(td2d->loc2d, d);
+ }
+ }
+
+ if(tdt->area!=TRACK_AREA_POINT || tdt->relative==0) {
+ td2d->loc2d[0] = td2d->loc[0];
+ td2d->loc2d[1] = td2d->loc[1];
+
+ if(tdt->relative)
+ sub_v2_v2(td2d->loc2d, tdt->relative);
+ }
+ }
+}
+
void createTransData(bContext *C, TransInfo *t)
{
Scene *scene = t->scene;
@@ -5329,6 +5571,10 @@ void createTransData(bContext *C, TransInfo *t)
sort_trans_data_dist(t);
}
}
+ else if (t->spacetype == SPACE_CLIP) {
+ t->flag |= T_POINTS|T_2D_EDIT;
+ createTransTrackingData(C, t);
+ }
else if (t->obedit) {
t->ext = NULL;
if (t->obedit->type == OB_MESH) {
diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c
index 2c69cc85214..53e379a2d27 100644
--- a/source/blender/editors/transform/transform_generics.c
+++ b/source/blender/editors/transform/transform_generics.c
@@ -47,6 +47,7 @@
#include "DNA_meshdata_types.h"
#include "DNA_view3d_types.h"
#include "DNA_modifier_types.h"
+#include "DNA_movieclip_types.h"
#include "RNA_access.h"
@@ -70,6 +71,7 @@
#include "BKE_mesh.h"
#include "BKE_nla.h"
#include "BKE_context.h"
+#include "BKE_tracking.h"
#include "ED_anim_api.h"
#include "ED_armature.h"
@@ -83,6 +85,7 @@
#include "ED_uvedit.h"
#include "ED_view3d.h"
#include "ED_curve.h" /* for curve_editnurbs */
+#include "ED_clip.h"
//#include "BDR_unwrapper.h"
@@ -863,6 +866,48 @@ void recalcData(TransInfo *t)
else if (t->spacetype == SPACE_VIEW3D) {
recalcData_view3d(t);
}
+ else if (t->spacetype == SPACE_CLIP) {
+ SpaceClip *sc= t->sa->spacedata.first;
+ MovieClip *clip= ED_space_clip(sc);
+ MovieTrackingTrack *track;
+
+ if(t->state == TRANS_CANCEL) {
+ track= clip->tracking.tracks.first;
+ while(track) {
+ if(TRACK_VIEW_SELECTED(sc, track)) {
+ MovieTrackingMarker *marker= BKE_tracking_ensure_marker(track, sc->user.framenr);
+
+ marker->flag= track->transflag;
+ }
+
+ track= track->next;
+ }
+ }
+
+ flushTransTracking(t);
+
+ track= clip->tracking.tracks.first;
+ while(track) {
+ if(TRACK_VIEW_SELECTED(sc, track)) {
+ if (t->mode == TFM_TRANSLATION) {
+ if(TRACK_AREA_SELECTED(track, TRACK_AREA_PAT))
+ BKE_tracking_clamp_track(track, CLAMP_PAT_POS);
+ if(TRACK_AREA_SELECTED(track, TRACK_AREA_SEARCH))
+ BKE_tracking_clamp_track(track, CLAMP_SEARCH_POS);
+ }
+ else if (t->mode == TFM_RESIZE) {
+ if(TRACK_AREA_SELECTED(track, TRACK_AREA_PAT))
+ BKE_tracking_clamp_track(track, CLAMP_PAT_DIM);
+ if(TRACK_AREA_SELECTED(track, TRACK_AREA_SEARCH))
+ BKE_tracking_clamp_track(track, CLAMP_SEARCH_DIM);
+ }
+ }
+
+ track= track->next;
+ }
+
+ DAG_id_tag_update(&clip->id, 0);
+ }
}
void drawLine(TransInfo *t, float *center, float *dir, char axis, short options)
@@ -941,7 +986,7 @@ int initTransInfo (bContext *C, TransInfo *t, wmOperator *op, wmEvent *event)
if (event)
{
- VECCOPY2D(t->imval, event->mval);
+ copy_v2_v2_int(t->imval, event->mval);
t->event_type = event->type;
}
else
diff --git a/source/blender/editors/transform/transform_input.c b/source/blender/editors/transform/transform_input.c
index cc3ffe086f1..3de68a6e312 100644
--- a/source/blender/editors/transform/transform_input.c
+++ b/source/blender/editors/transform/transform_input.c
@@ -409,7 +409,7 @@ int handleMouseInput(TransInfo *t, MouseInput *mi, wmEvent *event)
t->modifiers |= MOD_PRECISION;
/* shift is modifier for higher precision transform
* store the mouse position where the normal movement ended */
- VECCOPY2D(mi->precision_mval, event->mval);
+ copy_v2_v2_int(mi->precision_mval, event->mval);
mi->precision = 1;
}
else
diff --git a/source/blender/editors/transform/transform_ops.c b/source/blender/editors/transform/transform_ops.c
index f926f442830..7951fe0ee02 100644
--- a/source/blender/editors/transform/transform_ops.c
+++ b/source/blender/editors/transform/transform_ops.c
@@ -973,6 +973,11 @@ void transform_keymap_for_space(wmKeyConfig *keyconf, wmKeyMap *keymap, int spac
km = WM_keymap_add_item(keymap, "WM_OT_context_toggle", TABKEY, KM_PRESS, KM_SHIFT, 0);
RNA_string_set(km->ptr, "data_path", "tool_settings.use_snap");
break;
+ case SPACE_CLIP:
+ WM_keymap_add_item(keymap, OP_TRANSLATION, GKEY, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, OP_TRANSLATION, EVT_TWEAK_S, KM_ANY, 0, 0);
+ WM_keymap_add_item(keymap, OP_RESIZE, SKEY, KM_PRESS, 0, 0);
+ break;
default:
break;
}
diff --git a/source/blender/editors/transform/transform_orientations.c b/source/blender/editors/transform/transform_orientations.c
index a09778726d5..5d61d2a1ebb 100644
--- a/source/blender/editors/transform/transform_orientations.c
+++ b/source/blender/editors/transform/transform_orientations.c
@@ -606,9 +606,9 @@ int getTransformOrientation(const bContext *C, float normal[3], float plane[3],
{
if(efa->f & SELECT)
{
- VECADD(normal, normal, efa->n);
+ add_v3_v3(normal, efa->n);
sub_v3_v3v3(vec, efa->v2->co, efa->v1->co);
- VECADD(plane, plane, vec);
+ add_v3_v3(plane, vec);
}
}
@@ -662,7 +662,7 @@ int getTransformOrientation(const bContext *C, float normal[3], float plane[3],
if(eed->f & SELECT) {
/* use average vert normals as plane and edge vector as normal */
copy_v3_v3(plane, eed->v1->no);
- VECADD(plane, plane, eed->v2->no);
+ add_v3_v3(plane, eed->v2->no);
sub_v3_v3v3(normal, eed->v2->co, eed->v1->co);
break;
}
@@ -683,7 +683,7 @@ int getTransformOrientation(const bContext *C, float normal[3], float plane[3],
v2 = eve;
copy_v3_v3(plane, v1->no);
- VECADD(plane, plane, v2->no);
+ add_v3_v3(plane, v2->no);
sub_v3_v3v3(normal, v2->co, v1->co);
break;
}