Hooking transform operators with manipulator.
authorMartin Poirier <theeth@yahoo.com>
Thu, 9 Jul 2009 02:45:48 +0000 (02:45 +0000)
committerMartin Poirier <theeth@yahoo.com>
Thu, 9 Jul 2009 02:45:48 +0000 (02:45 +0000)
It's just a straight application of the normal operator for now, none of the normal manipulator goodies yet (no draw code and you have to click to confirm).

source/blender/editors/include/ED_transform.h
source/blender/editors/space_view3d/drawarmature.c
source/blender/editors/space_view3d/view3d_edit.c
source/blender/editors/transform/transform_manipulator.c
source/blender/editors/transform/transform_ops.c

index 9327301336f91a594c521aa0efee13a17eb2f69a..adcf2cfc0242fed9e0440a122b7823eb7b82602b 100644 (file)
@@ -87,7 +87,7 @@ enum {
 
 /* Standalone call to get the transformation center corresponding to the current situation
  * returns 1 if successful, 0 otherwise (usually means there's no selection)
- * (if 0 is returns, *vec is unmodified) 
+ * (if 0 is returns, *vec is unmodified)
  * */
 int calculateTransformCenter(struct bContext *C, struct wmEvent *event, int centerMode, float *vec);
 
@@ -128,7 +128,7 @@ void BIF_selectOrientation(void);
 void initManipulator(int mode);
 void ManipulatorTransform();
 
-int BIF_do_manipulator(struct bContext *C, short mval[2]);
+int BIF_do_manipulator(struct bContext *C, struct wmEvent *event, struct wmOperator *op);
 void BIF_draw_manipulator(const struct bContext *C);
 
 /* Snapping */
@@ -137,7 +137,7 @@ void BIF_draw_manipulator(const struct bContext *C);
 typedef struct DepthPeel
 {
        struct DepthPeel *next, *prev;
-       
+
        float depth;
        float p[3];
        float no[3];
index 68a9bf3f5552d33566547e61b581aebb81a5d620..e0ec878ea4af1ee2b72a2cd14ec0e695c4b5e9ac 100644 (file)
@@ -1812,7 +1812,7 @@ static void draw_pose_channels(Scene *scene, View3D *v3d, RegionView3D *rv3d, Ba
                                                if ( (arm->flag & ARM_DRAWAXES) && (arm->flag & ARM_POSEMODE) ) {
                                                        glPushMatrix();
                                                        glMultMatrixf(pchan->pose_mat);
-                                                       glTranslatef(0.0f, pchan->bone->length, 0.0f);
+                                                       //glTranslatef(0.0f, pchan->bone->length, 0.0f);
                                                        drawaxes(0.25f*pchan->bone->length, 0, OB_ARROWS);
                                                        glPopMatrix();
                                                }
@@ -1996,7 +1996,7 @@ static void draw_ebones(View3D *v3d, RegionView3D *rv3d, Object *ob, int dt)
                                                if (arm->flag & ARM_DRAWAXES) {
                                                        glPushMatrix();
                                                        set_matrix_editbone(eBone);
-                                                       glTranslatef(0.0f, eBone->length, 0.0f);
+                                                       //glTranslatef(0.0f, eBone->length, 0.0f);
                                                        drawaxes(eBone->length*0.25f, 0, OB_ARROWS);
                                                        glPopMatrix();
                                                }
index 1206bf72b72d77fec0183c76cb2c793e7fcffa2a..7880e588767dbfccc3ea8e16de0479df4c435686 100644 (file)
@@ -95,50 +95,50 @@ static void view3d_boxview_clip(ScrArea *sa)
        float clip[6][4];
        float x1= 0.0f, y1= 0.0f, z1= 0.0f, ofs[3];
        int val;
-       
+
        /* create bounding box */
        for(ar= sa->regionbase.first; ar; ar= ar->next) {
                if(ar->regiontype==RGN_TYPE_WINDOW) {
                        RegionView3D *rv3d= ar->regiondata;
-                       
+
                        if(rv3d->viewlock & RV3D_BOXCLIP) {
                                if(ELEM(rv3d->view, V3D_VIEW_TOP, V3D_VIEW_BOTTOM)) {
                                        if(ar->winx>ar->winy) x1= rv3d->dist;
                                        else x1= ar->winx*rv3d->dist/ar->winy;
-                                       
+
                                        if(ar->winx>ar->winy) y1= ar->winy*rv3d->dist/ar->winx;
                                        else y1= rv3d->dist;
-                                       
+
                                        ofs[0]= rv3d->ofs[0];
                                        ofs[1]= rv3d->ofs[1];
                                }
                                else if(ELEM(rv3d->view, V3D_VIEW_FRONT, V3D_VIEW_BACK)) {
                                        ofs[2]= rv3d->ofs[2];
-                                       
+
                                        if(ar->winx>ar->winy) z1= ar->winy*rv3d->dist/ar->winx;
                                        else z1= rv3d->dist;
                                }
                        }
                }
        }
-       
+
        for(val=0; val<8; val++) {
                if(ELEM4(val, 0, 3, 4, 7))
                        bb->vec[val][0]= -x1 - ofs[0];
                else
                        bb->vec[val][0]=  x1 - ofs[0];
-               
+
                if(ELEM4(val, 0, 1, 4, 5))
                        bb->vec[val][1]= -y1 - ofs[1];
                else
                        bb->vec[val][1]=  y1 - ofs[1];
-               
+
                if(val > 3)
                        bb->vec[val][2]= -z1 - ofs[2];
                else
                        bb->vec[val][2]=  z1 - ofs[2];
-       }       
-       
+       }
+
        /* normals for plane equations */
        CalcNormFloat(bb->vec[0], bb->vec[1], bb->vec[4], clip[0]);
        CalcNormFloat(bb->vec[1], bb->vec[2], bb->vec[5], clip[1]);
@@ -146,18 +146,18 @@ static void view3d_boxview_clip(ScrArea *sa)
        CalcNormFloat(bb->vec[3], bb->vec[0], bb->vec[7], clip[3]);
        CalcNormFloat(bb->vec[4], bb->vec[5], bb->vec[6], clip[4]);
        CalcNormFloat(bb->vec[0], bb->vec[2], bb->vec[1], clip[5]);
-       
+
        /* then plane equations */
        for(val=0; val<5; val++) {
                clip[val][3]= - clip[val][0]*bb->vec[val][0] - clip[val][1]*bb->vec[val][1] - clip[val][2]*bb->vec[val][2];
        }
        clip[5][3]= - clip[5][0]*bb->vec[0][0] - clip[5][1]*bb->vec[0][1] - clip[5][2]*bb->vec[0][2];
-       
+
        /* create bounding box */
        for(ar= sa->regionbase.first; ar; ar= ar->next) {
                if(ar->regiontype==RGN_TYPE_WINDOW) {
                        RegionView3D *rv3d= ar->regiondata;
-                       
+
                        if(rv3d->viewlock & RV3D_BOXCLIP) {
                                rv3d->rflag |= RV3D_CLIPPING;
                                memcpy(rv3d->clip, clip, sizeof(clip));
@@ -172,11 +172,11 @@ static void view3d_boxview_sync(ScrArea *sa, ARegion *ar)
 {
        ARegion *artest;
        RegionView3D *rv3d= ar->regiondata;
-       
+
        for(artest= sa->regionbase.first; artest; artest= artest->next) {
                if(artest!=ar && artest->regiontype==RGN_TYPE_WINDOW) {
                        RegionView3D *rv3dtest= artest->regiondata;
-                       
+
                        if(rv3dtest->viewlock) {
                                rv3dtest->dist= rv3d->dist;
 
@@ -198,7 +198,7 @@ static void view3d_boxview_sync(ScrArea *sa, ARegion *ar)
                                        if( ELEM(rv3dtest->view, V3D_VIEW_FRONT, V3D_VIEW_BACK))
                                                rv3dtest->ofs[2]= rv3d->ofs[2];
                                }
-                               
+
                                ED_region_tag_redraw(artest);
                        }
                }
@@ -211,11 +211,11 @@ void view3d_boxview_copy(ScrArea *sa, ARegion *ar)
 {
        ARegion *artest;
        RegionView3D *rv3d= ar->regiondata;
-       
+
        for(artest= sa->regionbase.first; artest; artest= artest->next) {
                if(artest!=ar && artest->regiontype==RGN_TYPE_WINDOW) {
                        RegionView3D *rv3dtest= artest->regiondata;
-                       
+
                        if(rv3dtest->viewlock) {
                                rv3dtest->dist= rv3d->dist;
                                VECCOPY(rv3dtest->ofs, rv3d->ofs);
@@ -238,7 +238,7 @@ typedef struct ViewOpsData {
        float ofs[3], obofs[3];
        float reverse, dist0;
        float grid, far;
-       
+
        int origx, origy, oldx, oldy;
        int origkey;
 
@@ -289,11 +289,11 @@ static void viewops_data(bContext *C, wmOperator *op, wmEvent *event)
        vod->origx= vod->oldx= event->x;
        vod->origy= vod->oldy= event->y;
        vod->origkey= event->type;
-       
+
        /* lookup, we dont pass on v3d to prevent confusement */
        vod->grid= v3d->grid;
        vod->far= v3d->far;
-       
+
        calctrackballvec(&vod->ar->winrct, event->x, event->y, vod->trackvec);
 
        initgrabz(rv3d, -rv3d->ofs[0], -rv3d->ofs[1], -rv3d->ofs[2]);
@@ -523,7 +523,7 @@ static int viewrotate_invoke(bContext *C, wmOperator *op, wmEvent *event)
 
        if(rv3d->viewlock)
                return OPERATOR_CANCELLED;
-       
+
        /* makes op->customdata */
        viewops_data(C, op, event);
        vod= op->customdata;
@@ -557,7 +557,7 @@ void VIEW3D_OT_viewrotate(wmOperatorType *ot)
        ot->invoke= viewrotate_invoke;
        ot->modal= viewrotate_modal;
        ot->poll= ED_operator_view3d_active;
-       
+
        /* flags */
        ot->flag= OPTYPE_REGISTER;
 }
@@ -580,7 +580,7 @@ static void viewmove_apply(ViewOpsData *vod, int x, int y)
 
                window_to_3d_delta(vod->ar, dvec, x-vod->oldx, y-vod->oldy);
                VecAddf(vod->rv3d->ofs, vod->rv3d->ofs, dvec);
-               
+
                if(vod->rv3d->viewlock & RV3D_BOXVIEW)
                        view3d_boxview_sync(vod->sa, vod->ar);
        }
@@ -640,7 +640,7 @@ void VIEW3D_OT_viewmove(wmOperatorType *ot)
        ot->invoke= viewmove_invoke;
        ot->modal= viewmove_modal;
        ot->poll= ED_operator_view3d_active;
-       
+
        /* flags */
        ot->flag= OPTYPE_REGISTER;
 }
@@ -650,7 +650,7 @@ void VIEW3D_OT_viewmove(wmOperatorType *ot)
 static void view_zoom_mouseloc(ARegion *ar, float dfac, int mx, int my)
 {
        RegionView3D *rv3d= ar->regiondata;
-       
+
        if(U.uiflag & USER_ZOOM_TO_MOUSEPOS) {
                float dvec[3];
                float tvec[3];
@@ -800,7 +800,7 @@ static int viewzoom_exec(bContext *C, wmOperator *op)
 
        if(rv3d->viewlock & RV3D_BOXVIEW)
                view3d_boxview_sync(CTX_wm_area(C), CTX_wm_region(C));
-       
+
        request_depth_update(CTX_wm_region_view3d(C));
        ED_region_tag_redraw(CTX_wm_region(C));
 
@@ -839,10 +839,10 @@ void VIEW3D_OT_zoom(wmOperatorType *ot)
        ot->exec= viewzoom_exec;
        ot->modal= viewzoom_modal;
        ot->poll= ED_operator_view3d_active;
-       
+
        /* flags */
        ot->flag= OPTYPE_REGISTER;
-       
+
        RNA_def_int(ot->srna, "delta", 0, INT_MIN, INT_MAX, "Delta", "", INT_MIN, INT_MAX);
 }
 
@@ -899,11 +899,11 @@ static int viewhome_exec(bContext *C, wmOperator *op) /* was view3d_home() in 2.
 
                if (rv3d->persp==V3D_CAMOB) {
                        rv3d->persp= V3D_PERSP;
-                       smooth_view(C, NULL, v3d->camera, new_ofs, NULL, &new_dist, NULL); 
+                       smooth_view(C, NULL, v3d->camera, new_ofs, NULL, &new_dist, NULL);
                }
        }
 // XXX BIF_view3d_previewrender_signal(curarea, PR_DBASE|PR_DISPRECT);
-       
+
        if(rv3d->viewlock & RV3D_BOXVIEW)
                view3d_boxview_copy(CTX_wm_area(C), ar);
 
@@ -920,10 +920,10 @@ void VIEW3D_OT_viewhome(wmOperatorType *ot)
        /* api callbacks */
        ot->exec= viewhome_exec;
        ot->poll= ED_operator_view3d_active;
-       
+
        /* flags */
        ot->flag= OPTYPE_REGISTER;
-       
+
        RNA_def_boolean(ot->srna, "center", 0, "Center", "");
 }
 
@@ -1013,7 +1013,7 @@ static int viewcenter_exec(bContext *C, wmOperator *op) /* like a localview with
        /* perspective should be a bit farther away to look nice */
        if(rv3d->persp==V3D_ORTHO)
                size*= 0.7;
-       
+
        if(size <= v3d->near*1.5f) size= v3d->near*1.5f;
 
        new_ofs[0]= -(min[0]+max[0])/2.0f;
@@ -1036,7 +1036,7 @@ static int viewcenter_exec(bContext *C, wmOperator *op) /* like a localview with
        if (rv3d->persp==V3D_CAMOB) {
                rv3d->persp= V3D_PERSP;
                smooth_view(C, v3d->camera, NULL, new_ofs, NULL, &new_dist, NULL);
-       } 
+       }
        else {
                smooth_view(C, NULL, NULL, new_ofs, NULL, &new_dist, NULL);
        }
@@ -1059,7 +1059,7 @@ void VIEW3D_OT_viewcenter(wmOperatorType *ot)
        /* api callbacks */
        ot->exec= viewcenter_exec;
        ot->poll= ED_operator_view3d_active;
-       
+
        /* flags */
        ot->flag= OPTYPE_REGISTER;
 }
@@ -1071,16 +1071,16 @@ static int render_border_exec(bContext *C, wmOperator *op)
        View3D *v3d = CTX_wm_view3d(C);
        ARegion *ar= CTX_wm_region(C);
        Scene *scene= CTX_data_scene(C);
-       
+
        rcti rect;
        rctf vb;
-       
+
        /* get border select values using rna */
        rect.xmin= RNA_int_get(op->ptr, "xmin");
        rect.ymin= RNA_int_get(op->ptr, "ymin");
        rect.xmax= RNA_int_get(op->ptr, "xmax");
        rect.ymax= RNA_int_get(op->ptr, "ymax");
-       
+
        /* calculate range */
        calc_viewborder(scene, ar, v3d, &vb);
 
@@ -1088,13 +1088,13 @@ static int render_border_exec(bContext *C, wmOperator *op)
        scene->r.border.ymin= ((float)rect.ymin-vb.ymin)/(vb.ymax-vb.ymin);
        scene->r.border.xmax= ((float)rect.xmax-vb.xmin)/(vb.xmax-vb.xmin);
        scene->r.border.ymax= ((float)rect.ymax-vb.ymin)/(vb.ymax-vb.ymin);
-       
-       /* actually set border */       
+
+       /* actually set border */
        CLAMP(scene->r.border.xmin, 0.0, 1.0);
        CLAMP(scene->r.border.ymin, 0.0, 1.0);
        CLAMP(scene->r.border.xmax, 0.0, 1.0);
        CLAMP(scene->r.border.ymax, 0.0, 1.0);
-               
+
        /* drawing a border surrounding the entire camera view switches off border rendering
         * or the border covers no pixels */
        if ((scene->r.border.xmin <= 0.0 && scene->r.border.xmax >= 1.0 &&
@@ -1106,7 +1106,7 @@ static int render_border_exec(bContext *C, wmOperator *op)
        } else {
                scene->r.mode |= R_BORDER;
        }
-       
+
        return OPERATOR_FINISHED;
 
 }
@@ -1114,9 +1114,9 @@ static int render_border_exec(bContext *C, wmOperator *op)
 static int view3d_render_border_invoke(bContext *C, wmOperator *op, wmEvent *event)
 {
        RegionView3D *rv3d= CTX_wm_region_view3d(C);
-       
+
        /* if not in camera view do not exec the operator*/
-       if (rv3d->persp == V3D_CAMOB) return WM_border_select_invoke(C, op, event);     
+       if (rv3d->persp == V3D_CAMOB) return WM_border_select_invoke(C, op, event);
        else return OPERATOR_PASS_THROUGH;
 }
 
@@ -1131,12 +1131,12 @@ void VIEW3D_OT_render_border(wmOperatorType *ot)
        ot->invoke= view3d_render_border_invoke;
        ot->exec= render_border_exec;
        ot->modal= WM_border_select_modal;
-       
+
        ot->poll= ED_operator_view3d_active;
-       
+
        /* flags */
        ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
-       
+
        /* rna */
        RNA_def_int(ot->srna, "xmin", 0, INT_MIN, INT_MAX, "X Min", "", INT_MIN, INT_MAX);
        RNA_def_int(ot->srna, "xmax", 0, INT_MIN, INT_MAX, "X Max", "", INT_MIN, INT_MAX);
@@ -1152,7 +1152,7 @@ static int view3d_border_zoom_exec(bContext *C, wmOperator *op)
        View3D *v3d = CTX_wm_view3d(C);
        RegionView3D *rv3d= CTX_wm_region_view3d(C);
        Scene *scene= CTX_data_scene(C);
-       
+
        /* Zooms in on a border drawn by the user */
        rcti rect;
        float dvec[3], vb[2], xscale, yscale, scale;
@@ -1167,16 +1167,16 @@ static int view3d_border_zoom_exec(bContext *C, wmOperator *op)
        int had_depth = 0;
        double cent[2],  p[3];
        int xs, ys;
-       
+
        /* note; otherwise opengl won't work */
        view3d_operator_needs_opengl(C);
-       
+
        /* get border select values using rna */
        rect.xmin= RNA_int_get(op->ptr, "xmin");
        rect.ymin= RNA_int_get(op->ptr, "ymin");
        rect.xmax= RNA_int_get(op->ptr, "xmax");
        rect.ymax= RNA_int_get(op->ptr, "ymax");
-       
+
        /* Get Z Depths, needed for perspective, nice for ortho */
        bgl_get_mats(&mats);
        draw_depth(scene, ar, v3d, NULL);
@@ -1275,27 +1275,27 @@ static int view3d_border_zoom_exec(bContext *C, wmOperator *op)
        }
 
        smooth_view(C, NULL, NULL, new_ofs, NULL, &new_dist, NULL);
-       
+
        if(rv3d->viewlock & RV3D_BOXVIEW)
                view3d_boxview_sync(CTX_wm_area(C), ar);
-       
+
        return OPERATOR_FINISHED;
 }
 
 static int view3d_border_zoom_invoke(bContext *C, wmOperator *op, wmEvent *event)
 {
        RegionView3D *rv3d= CTX_wm_region_view3d(C);
-       
+
        /* if in camera view do not exec the operator so we do not conflict with set render border*/
-       if (rv3d->persp != V3D_CAMOB) 
-               return WM_border_select_invoke(C, op, event);   
-       else 
+       if (rv3d->persp != V3D_CAMOB)
+               return WM_border_select_invoke(C, op, event);
+       else
                return OPERATOR_PASS_THROUGH;
 }
 
 void VIEW3D_OT_zoom_border(wmOperatorType *ot)
 {
-       
+
        /* identifiers */
        ot->name= "Border Zoom";
        ot->description = "Zoom in the view to the nearest object contained in the border.";
@@ -1305,12 +1305,12 @@ void VIEW3D_OT_zoom_border(wmOperatorType *ot)
        ot->invoke= view3d_border_zoom_invoke;
        ot->exec= view3d_border_zoom_exec;
        ot->modal= WM_border_select_modal;
-       
+
        ot->poll= ED_operator_view3d_active;
-       
+
        /* flags */
        ot->flag= OPTYPE_REGISTER;
-       
+
        /* rna */
        RNA_def_int(ot->srna, "xmin", 0, INT_MIN, INT_MAX, "X Min", "", INT_MIN, INT_MAX);
        RNA_def_int(ot->srna, "xmax", 0, INT_MIN, INT_MAX, "X Max", "", INT_MIN, INT_MAX);
@@ -1335,7 +1335,7 @@ static void axis_set_view(bContext *C, float q1, float q2, float q3, float q4, s
        View3D *v3d = CTX_wm_view3d(C);
        RegionView3D *rv3d= CTX_wm_region_view3d(C);
        float new_quat[4];
-       
+
        if(rv3d->viewlock) {
                /* only pass on if */
                if(rv3d->view==V3D_VIEW_FRONT && view==V3D_VIEW_BACK);
@@ -1346,10 +1346,10 @@ static void axis_set_view(bContext *C, float q1, float q2, float q3, float q4, s
                else if(rv3d->view==V3D_VIEW_TOP && view==V3D_VIEW_BOTTOM);
                else return;
        }
-       
+
        new_quat[0]= q1; new_quat[1]= q2;
        new_quat[2]= q3; new_quat[3]= q4;
-       
+
        rv3d->view= view;
 
        if(rv3d->viewlock) {
@@ -1362,8 +1362,8 @@ static void axis_set_view(bContext *C, float q1, float q2, float q3, float q4, s
                if (U.uiflag & USER_AUTOPERSP) rv3d->persp= V3D_ORTHO;
                else if(rv3d->persp==V3D_CAMOB) rv3d->persp= perspo;
 
-               smooth_view(C, v3d->camera, NULL, rv3d->ofs, new_quat, NULL, NULL); 
-       } 
+               smooth_view(C, v3d->camera, NULL, rv3d->ofs, new_quat, NULL, NULL);
+       }
        else {
 
                if (U.uiflag & USER_AUTOPERSP) rv3d->persp= V3D_ORTHO;
@@ -1420,7 +1420,7 @@ static int viewnumpad_exec(bContext *C, wmOperator *op)
                                        QUATCOPY(rv3d->lviewquat, rv3d->viewquat);
                                        rv3d->lview= rv3d->view;
                                        rv3d->lpersp= rv3d->persp;
-                                       
+
        #if 0
                                        if(G.qual==LR_ALTKEY) {
                                                if(oldcamera && is_an_active_object(oldcamera)) {
@@ -1429,7 +1429,7 @@ static int viewnumpad_exec(bContext *C, wmOperator *op)
                                                handle_view3d_lock();
                                        }
        #endif
-                                       
+
                                        if(BASACT) {
                                                /* check both G.vd as G.scene cameras */
                                                if((v3d->camera==NULL || scene->camera==NULL) && OBACT->type==OB_CAMERA) {
@@ -1437,14 +1437,14 @@ static int viewnumpad_exec(bContext *C, wmOperator *op)
                                                        /*handle_view3d_lock();*/
                                                }
                                        }
-                                       
+
                                        if(v3d->camera==NULL) {
                                                v3d->camera= scene_find_camera(scene);
                                                /*handle_view3d_lock();*/
                                        }
                                        rv3d->persp= V3D_CAMOB;
                                        smooth_view(C, NULL, v3d->camera, rv3d->ofs, rv3d->viewquat, &rv3d->dist, &v3d->lens);
-                                       
+
                                }
                                else{
                                        /* return to settings of last view */
@@ -1472,10 +1472,10 @@ void VIEW3D_OT_viewnumpad(wmOperatorType *ot)
        /* api callbacks */
        ot->exec= viewnumpad_exec;
        ot->poll= ED_operator_view3d_active;
-       
+
        /* flags */
        ot->flag= OPTYPE_REGISTER;
-       
+
        RNA_def_enum(ot->srna, "type", prop_view_items, 0, "View", "The Type of view");
 }
 
@@ -1490,11 +1490,11 @@ static int vieworbit_exec(bContext *C, wmOperator *op)
 {
        ARegion *ar= CTX_wm_region(C);
        RegionView3D *rv3d= CTX_wm_region_view3d(C);
-       float phi, si, q1[4];           
+       float phi, si, q1[4];
        int orbitdir;
 
        orbitdir = RNA_enum_get(op->ptr, "type");
-       
+
        if(rv3d->viewlock==0) {
 
                if(rv3d->persp != V3D_CAMOB) {
@@ -1528,7 +1528,7 @@ static int vieworbit_exec(bContext *C, wmOperator *op)
                }
        }
 
-       return OPERATOR_FINISHED;       
+       return OPERATOR_FINISHED;
 }
 
 void VIEW3D_OT_view_orbit(wmOperatorType *ot)
@@ -1541,7 +1541,7 @@ void VIEW3D_OT_view_orbit(wmOperatorType *ot)
        /* api callbacks */
        ot->exec= vieworbit_exec;
        ot->poll= ED_operator_view3d_active;
-       
+
        /* flags */
        ot->flag= OPTYPE_REGISTER;
        RNA_def_enum(ot->srna, "type", prop_view_orbit_items, 0, "Orbit", "Direction of View Orbit");
@@ -1557,12 +1557,12 @@ static EnumPropertyItem prop_view_pan_items[] = {
 static int viewpan_exec(bContext *C, wmOperator *op)
 {
        ARegion *ar= CTX_wm_region(C);
-       RegionView3D *rv3d= CTX_wm_region_view3d(C);    
-       float vec[3];   
+       RegionView3D *rv3d= CTX_wm_region_view3d(C);
+       float vec[3];
        int pandir;
 
        pandir = RNA_enum_get(op->ptr, "type");
-       
+
        initgrabz(rv3d, 0.0, 0.0, 0.0);
 
        if(pandir == V3D_VIEW_PANRIGHT) window_to_3d_delta(ar, vec, -32, 0);
@@ -1578,7 +1578,7 @@ static int viewpan_exec(bContext *C, wmOperator *op)
 
        ED_region_tag_redraw(ar);
 
-       return OPERATOR_FINISHED;       
+       return OPERATOR_FINISHED;
 }
 
 void VIEW3D_OT_view_pan(wmOperatorType *ot)
@@ -1591,7 +1591,7 @@ void VIEW3D_OT_view_pan(wmOperatorType *ot)
        /* api callbacks */
        ot->exec= viewpan_exec;
        ot->poll= ED_operator_view3d_active;
-       
+
        /* flags */
        ot->flag= OPTYPE_REGISTER;
        RNA_def_enum(ot->srna, "type", prop_view_pan_items, 0, "Pan", "Direction of View Pan");
@@ -1600,17 +1600,17 @@ void VIEW3D_OT_view_pan(wmOperatorType *ot)
 static int viewpersportho_exec(bContext *C, wmOperator *op)
 {
        ARegion *ar= CTX_wm_region(C);
-       RegionView3D *rv3d= CTX_wm_region_view3d(C);    
-       
+       RegionView3D *rv3d= CTX_wm_region_view3d(C);
+
        if(rv3d->viewlock==0) {
-               if(rv3d->persp!=V3D_ORTHO) 
+               if(rv3d->persp!=V3D_ORTHO)
                        rv3d->persp=V3D_ORTHO;
                else rv3d->persp=V3D_PERSP;
                ED_region_tag_redraw(ar);
        }
 
        return OPERATOR_FINISHED;
-       
+
 }
 
 void VIEW3D_OT_view_persportho(wmOperatorType *ot)
@@ -1623,7 +1623,7 @@ void VIEW3D_OT_view_persportho(wmOperatorType *ot)
        /* api callbacks */
        ot->exec= viewpersportho_exec;
        ot->poll= ED_operator_view3d_active;
-       
+
        /* flags */
        ot->flag= OPTYPE_REGISTER;
 }
@@ -1725,10 +1725,10 @@ void VIEW3D_OT_clipping(wmOperatorType *ot)
        ot->modal= WM_border_select_modal;
 
        ot->poll= ED_operator_view3d_active;
-       
+
        /* flags */
        ot->flag= OPTYPE_REGISTER;
-       
+
        /* rna */
        RNA_def_int(ot->srna, "xmin", 0, INT_MIN, INT_MAX, "X Min", "", INT_MIN, INT_MAX);
        RNA_def_int(ot->srna, "xmax", 0, INT_MIN, INT_MAX, "X Max", "", INT_MIN, INT_MAX);
@@ -1745,7 +1745,7 @@ static int view3d_drawtype_exec(bContext *C, wmOperator *op)
 
        dt  = RNA_int_get(op->ptr, "draw_type");
        dt_alt = RNA_int_get(op->ptr, "draw_type_alternate");
-       
+
        if (dt_alt != -1) {
                if (v3d->drawtype == dt)
                        v3d->drawtype = dt_alt;
@@ -1756,7 +1756,7 @@ static int view3d_drawtype_exec(bContext *C, wmOperator *op)
                v3d->drawtype = dt;
 
        ED_area_tag_redraw(CTX_wm_area(C));
-       
+
        return OPERATOR_FINISHED;
 }
 
@@ -1778,10 +1778,10 @@ void VIEW3D_OT_drawtype(wmOperatorType *ot)
        ot->exec= view3d_drawtype_exec;
 
        ot->poll= ED_operator_view3d_active;
-       
+
        /* flags */
        ot->flag= OPTYPE_REGISTER;
-       
+
        /* rna XXX should become enum */
        RNA_def_int(ot->srna, "draw_type", 0, INT_MIN, INT_MAX, "Draw Type", "", INT_MIN, INT_MAX);
        RNA_def_int(ot->srna, "draw_type_alternate", -1, INT_MIN, INT_MAX, "Draw Type Alternate", "", INT_MIN, INT_MAX);
@@ -1799,36 +1799,36 @@ static int set_3dcursor_invoke(bContext *C, wmOperator *op, wmEvent *event)
        float dx, dy, fz, *fp = NULL, dvec[3], oldcurs[3];
        short mx, my, mval[2];
 //     short ctrl= 0; // XXX
-       
+
        fp= give_cursor(scene, v3d);
-       
+
 //     if(obedit && ctrl) lr_click= 1;
        VECCOPY(oldcurs, fp);
-       
+
        mx= event->x - ar->winrct.xmin;
        my= event->y - ar->winrct.ymin;
        project_short_noclip(ar, fp, mval);
-       
+
        initgrabz(rv3d, fp[0], fp[1], fp[2]);
-       
+
        if(mval[0]!=IS_CLIPPED) {
-               
+
                window_to_3d_delta(ar, dvec, mval[0]-mx, mval[1]-my);
                VecSubf(fp, fp, dvec);
        }
        else {
-               
+
                dx= ((float)(mx-(ar->winx/2)))*rv3d->zfac/(ar->winx/2);
                dy= ((float)(my-(ar->winy/2)))*rv3d->zfac/(ar->winy/2);
-               
+
                fz= rv3d->persmat[0][3]*fp[0]+ rv3d->persmat[1][3]*fp[1]+ rv3d->persmat[2][3]*fp[2]+ rv3d->persmat[3][3];
                fz= fz/rv3d->zfac;
-               
+
                fp[0]= (rv3d->persinv[0][0]*dx + rv3d->persinv[1][0]*dy+ rv3d->persinv[2][0]*fz)-rv3d->ofs[0];
                fp[1]= (rv3d->persinv[0][1]*dx + rv3d->persinv[1][1]*dy+ rv3d->persinv[2][1]*fz)-rv3d->ofs[1];
                fp[2]= (rv3d->persinv[0][2]*dx + rv3d->persinv[1][2]*dy+ rv3d->persinv[2][2]*fz)-rv3d->ofs[2];
        }
-       
+
 //     if(lr_click) {
                // XXX          if(obedit->type==OB_MESH) add_click_mesh();
                //              else if ELEM(obedit->type, OB_CURVE, OB_SURF) addvert_Nurb(0);
@@ -1837,24 +1837,24 @@ static int set_3dcursor_invoke(bContext *C, wmOperator *op, wmEvent *event)
 //     }
        // XXX notifier for scene */
        ED_area_tag_redraw(CTX_wm_area(C));
-       
+
        /* prevent other mouse ops to fail */
        return OPERATOR_PASS_THROUGH;
 }
 
 void VIEW3D_OT_cursor3d(wmOperatorType *ot)
 {
-       
+
        /* identifiers */
        ot->name= "Set 3D Cursor";
        ot->description = "Set the location of the 3D cursor.";
        ot->idname= "VIEW3D_OT_cursor3d";
-       
+
        /* api callbacks */
        ot->invoke= set_3dcursor_invoke;
-       
+
        ot->poll= ED_operator_view3d_active;
-       
+
        /* rna later */
 
 }
@@ -1871,28 +1871,28 @@ static int manipulator_invoke(bContext *C, wmOperator *op, wmEvent *event)
 
        /* note; otherwise opengl won't work */
        view3d_operator_needs_opengl(C);
-       
-       if(0==BIF_do_manipulator(C, event->mval))
+
+       if(0==BIF_do_manipulator(C, event, op))
                return OPERATOR_PASS_THROUGH;
-       
+
        return OPERATOR_FINISHED;
 }
 
 void VIEW3D_OT_manipulator(wmOperatorType *ot)
 {
-       
+
        /* identifiers */
        ot->name= "3D Manipulator";
        ot->description = "";
        ot->idname= "VIEW3D_OT_manipulator";
-       
+
        /* api callbacks */
        ot->invoke= manipulator_invoke;
-       
+
        ot->poll= ED_operator_view3d_active;
-       
+
        /* rna later */
-       
+       RNA_def_boolean_vector(ot->srna, "constraint_axis", 3, NULL, "Constraint Axis", "");
 }
 
 
index 3868ac9204b8033fc66ec9ef04d2eb81cc37a211..c4cca6eba0775b9603982f765e567932bc055b7a 100644 (file)
@@ -53,6 +53,8 @@
 #include "DNA_userdef_types.h"
 #include "DNA_view3d_types.h"
 
+#include "RNA_access.h"
+
 #include "BKE_armature.h"
 #include "BKE_context.h"
 #include "BKE_global.h"
 static int is_mat4_flipped(float mat[][4])
 {
        float vec[3];
-       
+
        Crossf(vec, mat[0], mat[1]);
        if( Inpf(vec, mat[2]) < 0.0 ) return 1;
        return 0;
-}      
+}
 
 /* transform widget center calc helper for below */
 static void calc_tw_center(Scene *scene, float *co)
@@ -123,7 +125,7 @@ static void calc_tw_center(Scene *scene, float *co)
        float *twcent= scene->twcent;
        float *min= scene->twmin;
        float *max= scene->twmax;
-       
+
        DO_MINMAX(co, min, max);
        VecAddf(twcent, twcent, co);
 }
@@ -136,7 +138,7 @@ static void protectflag_to_drawflags(short protectflag, short *drawflags)
                *drawflags &= ~MAN_TRANS_Y;
        if(protectflag & OB_LOCK_LOCZ)
                *drawflags &= ~MAN_TRANS_Z;
-       
+
        if(protectflag & OB_LOCK_ROTX)
                *drawflags &= ~MAN_ROT_X;
        if(protectflag & OB_LOCK_ROTY)
@@ -156,7 +158,7 @@ static void protectflag_to_drawflags(short protectflag, short *drawflags)
 static void stats_pose(Scene *scene, View3D *v3d, bPoseChannel *pchan)
 {
        Bone *bone= pchan->bone;
-       
+
        if(bone) {
                if (bone->flag & BONE_TRANSFORM) {
                        calc_tw_center(scene, pchan->pose_head);
@@ -174,11 +176,11 @@ static void stats_editbone(View3D *v3d, EditBone *ebo)
 
 /* only counts the parent selection, and tags transform flag */
 /* bad call... should re-use method from transform_conversion once */
-static void count_bone_select(TransInfo *t, bArmature *arm, ListBase *lb, int do_it) 
+static void count_bone_select(TransInfo *t, bArmature *arm, ListBase *lb, int do_it)
 {
        Bone *bone;
        int do_next;
-       
+
        for(bone= lb->first; bone; bone= bone->next) {
                bone->flag &= ~BONE_TRANSFORM;
                do_next= do_it;
@@ -214,16 +216,16 @@ int calc_manipulator_stats(const bContext *C)
        float normal[3]={0.0, 0.0, 0.0};
        float plane[3]={0.0, 0.0, 0.0};
        int a, totsel= 0;
-       
+
        /* transform widget matrix */
        Mat4One(rv3d->twmat);
-       
+
        v3d->twdrawflag= 0xFFFF;
-       
+
        /* transform widget centroid/center */
        scene->twcent[0]= scene->twcent[1]= scene->twcent[2]= 0.0f;
        INIT_MINMAX(scene->twmin, scene->twmax);
-       
+
        if(obedit) {
                ob= obedit;
                if((ob->lay & v3d->lay)==0) return 0;
@@ -233,7 +235,7 @@ int calc_manipulator_stats(const bContext *C)
                        EditVert *eve;
                        EditSelection ese;
                        float vec[3]= {0,0,0};
-                       
+
                        /* USE LAST SELECTE WITH ACTIVE */
                        if (v3d->around==V3D_ACTIVE && EM_get_actSelection(em, &ese)) {
                                EM_editselection_center(vec, &ese);
@@ -273,7 +275,7 @@ int calc_manipulator_stats(const bContext *C)
                        Nurb *nu;
                        BezTriple *bezt;
                        BPoint *bp;
-                       
+
                        nu= cu->editnurb->first;
                        while(nu) {
                                if((nu->type & 7)==CU_BEZIER) {
@@ -329,7 +331,7 @@ int calc_manipulator_stats(const bContext *C)
                        /* editmball.c */
                        ListBase editelems= {NULL, NULL};  /* XXX */
                        MetaElem *ml, *ml_sel=NULL;
-               
+
                        ml= editelems.first;
                        while(ml) {
                                if(ml->flag & SELECT) {
@@ -343,9 +345,9 @@ int calc_manipulator_stats(const bContext *C)
                else if(obedit->type==OB_LATTICE) {
                        BPoint *bp;
                        Lattice *lt= obedit->data;
-                       
+
                        bp= lt->editlatt->def;
-                       
+
                        a= lt->editlatt->pntsu*lt->editlatt->pntsv*lt->editlatt->pntsw;
                        while(a--) {
                                if(bp->f1 & SELECT) {
@@ -355,7 +357,7 @@ int calc_manipulator_stats(const bContext *C)
                                bp++;
                        }
                }
-               
+
                /* selection center */
                if(totsel) {
                        VecMulf(scene->twcent, 1.0f/(float)totsel);     // centroid!
@@ -368,12 +370,12 @@ int calc_manipulator_stats(const bContext *C)
                bArmature *arm = ob->data;
                bPoseChannel *pchan;
                int mode;
-               
+
                if((ob->lay & v3d->lay)==0) return 0;
-               
+
                mode = t->mode;
                t->mode = TFM_ROTATION; // mislead counting bones... bah
-               
+
                /* count total, we use same method as transform will do */
                t->total= 0;
                count_bone_select(t, arm, &arm->bonebase, 1);
@@ -383,7 +385,7 @@ int calc_manipulator_stats(const bContext *C)
                        for(pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) {
                                stats_pose(scene, v3d, pchan);
                        }
-                       
+
                        VecMulf(scene->twcent, 1.0f/(float)totsel);     // centroid!
                        Mat4MulVecfl(ob->obmat, scene->twcent);
                        Mat4MulVecfl(ob->obmat, scene->twmin);
@@ -419,44 +421,44 @@ int calc_manipulator_stats(const bContext *C)
                }
        }
        else {
-               
+
                /* we need the one selected object, if its not active */
                ob= OBACT;
                if(ob && !(ob->flag & SELECT)) ob= NULL;
-               
+
                for(base= scene->base.first; base; base= base->next) {
                        if TESTBASELIB(scene, base) {
-                               if(ob==NULL) 
+                               if(ob==NULL)
                                        ob= base->object;
                                calc_tw_center(scene, base->object->obmat[3]);
                                protectflag_to_drawflags(base->object->protectflag, &v3d->twdrawflag);
                                totsel++;
                        }
                }
-               
+
                /* selection center */
                if(totsel) {
                        VecMulf(scene->twcent, 1.0f/(float)totsel);     // centroid!
                }
        }
-       
+
        /* global, local or normal orientation? */
        if(ob && totsel) {
-               
+
                switch(v3d->twmode) {
                case V3D_MANIP_GLOBAL:
                        strcpy(t->spacename, "global");
                        break;
-                       
+
                case V3D_MANIP_NORMAL:
                        if(obedit || ob->flag & OB_POSEMODE) {
                                float mat[3][3];
                                int type;
-                               
+
                                strcpy(t->spacename, "normal");
-                               
+
                                type = getTransformOrientation(C, normal, plane, (v3d->around == V3D_ACTIVE));
-                               
+
                                switch (type)
                                {
                                        case ORIENTATION_NORMAL:
@@ -484,7 +486,7 @@ int calc_manipulator_stats(const bContext *C)
                                                }
                                                break;
                                }
-                               
+
                                if (type == ORIENTATION_NONE)
                                {
                                        Mat4One(rv3d->twmat);
@@ -501,7 +503,7 @@ int calc_manipulator_stats(const bContext *C)
                        Mat4CpyMat4(rv3d->twmat, ob->obmat);
                        Mat4Ortho(rv3d->twmat);
                        break;
-                       
+
                case V3D_MANIP_VIEW:
                        {
                                float mat[3][3];
@@ -515,9 +517,9 @@ int calc_manipulator_stats(const bContext *C)
                        applyTransformOrientation(C, t);
                        break;
                }
-               
+
        }
-          
+
        return totsel;
 }
 
@@ -526,15 +528,15 @@ int calc_manipulator_stats(const bContext *C)
 static float screen_aligned(RegionView3D *rv3d, float mat[][4])
 {
        float vec[3], size;
-       
+
        VECCOPY(vec, mat[0]);
        size= Normalize(vec);
-       
+
        glTranslatef(mat[3][0], mat[3][1], mat[3][2]);
-       
+
        /* sets view screen aligned */
        glRotatef( -360.0f*saacos(rv3d->viewquat[0])/(float)M_PI, rv3d->viewquat[1], rv3d->viewquat[2], rv3d->viewquat[3]);
-       
+
        return size;
 }
 
@@ -553,32 +555,32 @@ static void partial_donut(float radring, float radhole, int start, int end, int
        float cos_theta1, sin_theta1;
        float ring_delta, side_delta;
        int i, j, docaps= 1;
-       
+
        if(start==0 && end==nrings) docaps= 0;
-       
+
        ring_delta= 2.0f*(float)M_PI/(float)nrings;
        side_delta= 2.0f*(float)M_PI/(float)nsides;
-       
+
        theta= (float)M_PI+0.5f*ring_delta;
        cos_theta= (float)cos(theta);
        sin_theta= (float)sin(theta);
-       
+
        for(i= nrings - 1; i >= 0; i--) {
                theta1= theta + ring_delta;
                cos_theta1= (float)cos(theta1);
                sin_theta1= (float)sin(theta1);
-               
+
                if(docaps && i==start) {        // cap
                        glBegin(GL_POLYGON);
                        phi= 0.0;
                        for(j= nsides; j >= 0; j--) {
                                float cos_phi, sin_phi, dist;
-                               
+
                                phi += side_delta;
                                cos_phi= (float)cos(phi);
                                sin_phi= (float)sin(phi);
                                dist= radhole + radring * cos_phi;
-                               
+
                                glVertex3f(cos_theta1 * dist, -sin_theta1 * dist,  radring * sin_phi);
                        }
                        glEnd();
@@ -588,35 +590,35 @@ static void partial_donut(float radring, float radhole, int start, int end, int
                        phi= 0.0;
                        for(j= nsides; j >= 0; j--) {
                                float cos_phi, sin_phi, dist;
-                               
+
                                phi += side_delta;
                                cos_phi= (float)cos(phi);
                                sin_phi= (float)sin(phi);
                                dist= radhole + radring * cos_phi;
-                               
+
                                glVertex3f(cos_theta1 * dist, -sin_theta1 * dist, radring * sin_phi);
                                glVertex3f(cos_theta * dist, -sin_theta * dist,  radring * sin_phi);
                        }
                        glEnd();
                }
-               
+
                if(docaps && i==end) {  // cap
                        glBegin(GL_POLYGON);
                        phi= 0.0;
                        for(j= nsides; j >= 0; j--) {
                                float cos_phi, sin_phi, dist;
-                               
+
                                phi -= side_delta;
                                cos_phi= (float)cos(phi);
                                sin_phi= (float)sin(phi);
                                dist= radhole + radring * cos_phi;
-                               
+
                                glVertex3f(cos_theta * dist, -sin_theta * dist,  radring * sin_phi);
                        }
                        glEnd();
                }
-               
-               
+
+
                theta= theta1;
                cos_theta= cos_theta1;
                sin_theta= sin_theta1;
@@ -632,9 +634,9 @@ static void manipulator_setcolor(View3D *v3d, char axis, int colcode)
 {
        float vec[4];
        char col[4];
-       
+
        vec[3]= 0.7f; // alpha set on 0.5, can be glEnabled or not
-       
+
        if(colcode==MAN_GHOST) {
                glColor4ub(0, 0, 0, 70);
        }
@@ -674,7 +676,7 @@ static void manipulator_setcolor(View3D *v3d, char axis, int colcode)
 /* viewmatrix should have been set OK, also no shademode! */
 static void draw_manipulator_axes(View3D *v3d, int colcode, int flagx, int flagy, int flagz)
 {
-       
+
        /* axes */
        if(flagx) {
                manipulator_setcolor(v3d, 'x', colcode);
@@ -684,7 +686,7 @@ static void draw_manipulator_axes(View3D *v3d, int colcode, int flagx, int flagy
                glVertex3f(0.2f, 0.0f, 0.0f);
                glVertex3f(1.0f, 0.0f, 0.0f);
                glEnd();
-       }               
+       }
        if(flagy) {
                if(flagy & MAN_SCALE_Y) glLoadName(MAN_SCALE_Y);
                else if(flagy & MAN_TRANS_Y) glLoadName(MAN_TRANS_Y);
@@ -693,7 +695,7 @@ static void draw_manipulator_axes(View3D *v3d, int colcode, int flagx, int flagy
                glVertex3f(0.0f, 0.2f, 0.0f);
                glVertex3f(0.0f, 1.0f, 0.0f);
                glEnd();
-       }               
+       }
        if(flagz) {
                if(flagz & MAN_SCALE_Z) glLoadName(MAN_SCALE_Z);
                else if(flagz & MAN_TRANS_Z) glLoadName(MAN_TRANS_Z);
@@ -712,63 +714,63 @@ static void draw_manipulator_rotate_ghost(View3D *v3d, RegionView3D *rv3d, int d
        GLUquadricObj *qobj;
        float size, phi, startphi, vec[3], svec[3], matt[4][4], cross[3], tmat[3][3];
        int arcs= (G.rt!=2);
-       
+
        glDisable(GL_DEPTH_TEST);
 
-       qobj= gluNewQuadric(); 
-       gluQuadricDrawStyle(qobj, GLU_FILL); 
-       
+       qobj= gluNewQuadric();
+       gluQuadricDrawStyle(qobj, GLU_FILL);
+
        glColor4ub(0,0,0,64);
        glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
        glEnable(GL_BLEND);
-               
+
        /* we need both [4][4] transforms, t->mat seems to be premul, not post for mat[][4] */
        Mat4CpyMat4(matt, rv3d->twmat); // to copy the parts outside of [3][3]
        Mat4MulMat34(matt, t->mat, rv3d->twmat);
 
        /* Screen aligned view rot circle */
        if(drawflags & MAN_ROT_V) {
-               
+
                /* prepare for screen aligned draw */
                glPushMatrix();
                size= screen_aligned(rv3d, rv3d->twmat);
-       
+
                vec[0]= (float)(t->con.imval[0] - t->center2d[0]);
                vec[1]= (float)(t->con.imval[1] - t->center2d[1]);
                vec[2]= 0.0f;
                Normalize(vec);
-               
+
                startphi= saacos( vec[1] );
                if(vec[0]<0.0) startphi= -startphi;
-               
+
                phi= (float)fmod(180.0*t->val/M_PI, 360.0);
                if(phi > 180.0) phi-= 360.0;
                else if(phi<-180.0) phi+= 360.0;
-               
+
                gluPartialDisk(qobj, 0.0, size, 32, 1, 180.0*startphi/M_PI, phi);
-               
+
                glPopMatrix();
        }
        else if(arcs) {
                float imat[3][3], ivmat[3][3];
                /* try to get the start rotation */
-               
+
                svec[0]= (float)(t->con.imval[0] - t->center2d[0]);
                svec[1]= (float)(t->con.imval[1] - t->center2d[1]);
                svec[2]= 0.0f;
-               
+
                /* screen aligned vec transform back to manipulator space */
                Mat3CpyMat4(ivmat, rv3d->viewinv);
                Mat3CpyMat4(tmat, rv3d->twmat);
                Mat3Inv(imat, tmat);
                Mat3MulMat3(tmat, imat, ivmat);
-               
+
                Mat3MulVecfl(tmat, svec);       // tmat is used further on
                Normalize(svec);
-       }       
-       
+       }
+
        wmMultMatrix(rv3d->twmat);      // aligns with original widget
-       
+
        /* Z disk */
        if(drawflags & MAN_ROT_Z) {
                if(arcs) {
@@ -776,11 +778,11 @@ static void draw_manipulator_rotate_ghost(View3D *v3d, RegionView3D *rv3d, int d
                        svec[0]+= tmat[2][0];
                        svec[1]+= tmat[2][1];
                        Normalize(svec);
-                       
+
                        startphi= (float)atan2(svec[0], svec[1]);
                }
                else startphi= 0.5f*(float)M_PI;
-               
+
                VECCOPY(vec, rv3d->twmat[0]);   // use x axis to detect rotation
                Normalize(vec);
                Normalize(matt[0]);
@@ -798,11 +800,11 @@ static void draw_manipulator_rotate_ghost(View3D *v3d, RegionView3D *rv3d, int d
                        svec[1]+= tmat[2][1];
                        svec[2]+= tmat[2][2];
                        Normalize(svec);
-                       
+
                        startphi= (float)(M_PI + atan2(svec[2], -svec[1]));
                }
                else startphi= 0.0f;
-               
+
                VECCOPY(vec, rv3d->twmat[1]);   // use y axis to detect rotation
                Normalize(vec);
                Normalize(matt[1]);
@@ -814,7 +816,7 @@ static void draw_manipulator_rotate_ghost(View3D *v3d, RegionView3D *rv3d, int d
                        gluPartialDisk(qobj, 0.0, 1.0, 32, 1, 180.0*startphi/M_PI, 180.0*phi/M_PI);
                        glRotatef(-90.0, 0.0, 1.0, 0.0);
                }
-       }       
+       }
        /* Y circle */
        if(drawflags & MAN_ROT_Y) {
                if(arcs) {
@@ -822,11 +824,11 @@ static void draw_manipulator_rotate_ghost(View3D *v3d, RegionView3D *rv3d, int d
                        svec[0]+= tmat[2][0];
                        svec[2]+= tmat[2][2];
                        Normalize(svec);
-                       
+
                        startphi= (float)(M_PI + atan2(-svec[0], svec[2]));
                }
                else startphi= (float)M_PI;
-               
+
                VECCOPY(vec, rv3d->twmat[2]);   // use z axis to detect rotation
                Normalize(vec);
                Normalize(matt[2]);
@@ -839,7 +841,7 @@ static void draw_manipulator_rotate_ghost(View3D *v3d, RegionView3D *rv3d, int d
                        glRotatef(90.0, 1.0, 0.0, 0.0);
                }
        }
-       
+
        glDisable(GL_BLEND);
        wmLoadMatrix(rv3d->viewmat);
 }
@@ -847,33 +849,33 @@ static void draw_manipulator_rotate_ghost(View3D *v3d, RegionView3D *rv3d, int d
 static void draw_manipulator_rotate(View3D *v3d, RegionView3D *rv3d, int moving, int drawflags, int combo)
 {
        TransInfo *t= BIF_GetTransInfo(); // XXX
-       GLUquadricObj *qobj; 
+       GLUquadricObj *qobj;
        double plane[4];
        float size, vec[3], unitmat[4][4];
-       float cywid= 0.33f*0.01f*(float)U.tw_handlesize;        
+       float cywid= 0.33f*0.01f*(float)U.tw_handlesize;
        float cusize= cywid*0.65f;
        int arcs= (G.rt!=2);
        int colcode;
-       
+
        if(moving) colcode= MAN_MOVECOL;
        else colcode= MAN_RGB;
-       
+
        /* when called while moving in mixed mode, do not draw when... */
        if((drawflags & MAN_ROT_C)==0) return;
-       
+
        /* Init stuff */
        glDisable(GL_DEPTH_TEST);
        Mat4One(unitmat);
 
        qobj= gluNewQuadric();
-       gluQuadricDrawStyle(qobj, GLU_FILL); 
-       
+       gluQuadricDrawStyle(qobj, GLU_FILL);
+
        /* prepare for screen aligned draw */
        VECCOPY(vec, rv3d->twmat[0]);
        size= Normalize(vec);
        glPushMatrix();
        glTranslatef(rv3d->twmat[3][0], rv3d->twmat[3][1], rv3d->twmat[3][2]);
-       
+
        if(arcs) {
                /* clipplane makes nice handles, calc here because of multmatrix but with translate! */
                VECCOPY(plane, rv3d->viewinv[2]);
@@ -882,7 +884,7 @@ static void draw_manipulator_rotate(View3D *v3d, RegionView3D *rv3d, int moving,
        }
        /* sets view screen aligned */
        glRotatef( -360.0f*saacos(rv3d->viewquat[0])/(float)M_PI, rv3d->viewquat[1], rv3d->viewquat[2], rv3d->viewquat[3]);
-       
+
        /* Screen aligned help circle */
        if(arcs) {
                if((G.f & G_PICKSEL)==0) {
@@ -895,8 +897,8 @@ static void draw_manipulator_rotate(View3D *v3d, RegionView3D *rv3d, int moving,
                if(G.f & G_PICKSEL) glLoadName(MAN_ROT_V);
                UI_ThemeColor(TH_TRANSFORM);
                drawcircball(GL_LINE_LOOP, unitmat[3], 1.2f*size, unitmat);
-               
-               if(moving) {    
+
+               if(moving) {
                        float vec[3];
                        vec[0]= (float)(t->imval[0] - t->center2d[0]);
                        vec[1]= (float)(t->imval[1] - t->center2d[1]);
@@ -910,7 +912,7 @@ static void draw_manipulator_rotate(View3D *v3d, RegionView3D *rv3d, int moving,
                }
        }
        glPopMatrix();
-       
+
        /* apply the transform delta */
        if(moving) {
                float matt[4][4];
@@ -923,7 +925,7 @@ static void draw_manipulator_rotate(View3D *v3d, RegionView3D *rv3d, int moving,
                glFrontFace( is_mat4_flipped(rv3d->twmat)?GL_CW:GL_CCW);
                wmMultMatrix(rv3d->twmat);
        }
-       
+
        /* axes */
        if(arcs==0) {
                if(!(G.f & G_PICKSEL)) {
@@ -934,12 +936,12 @@ static void draw_manipulator_rotate(View3D *v3d, RegionView3D *rv3d, int moving,
                                        manipulator_setcolor(v3d, 'x', colcode);
                                        glVertex3f(0.2f, 0.0f, 0.0f);
                                        glVertex3f(1.0f, 0.0f, 0.0f);
-                               }               
+                               }
                                if( (drawflags & MAN_ROT_Y) || (moving && (drawflags & MAN_ROT_X)) ) {
                                        manipulator_setcolor(v3d, 'y', colcode);
                                        glVertex3f(0.0f, 0.2f, 0.0f);
                                        glVertex3f(0.0f, 1.0f, 0.0f);
-                               }               
+                               }
                                if( (drawflags & MAN_ROT_Z) || (moving && (drawflags & MAN_ROT_Y)) ) {
                                        manipulator_setcolor(v3d, 'z', colcode);
                                        glVertex3f(0.0f, 0.0f, 0.2f);
@@ -949,9 +951,9 @@ static void draw_manipulator_rotate(View3D *v3d, RegionView3D *rv3d, int moving,
                        }
                }
        }
-       
+
        if(arcs==0 && moving) {
-               
+
                /* Z circle */
                if(drawflags & MAN_ROT_Z) {
                        if(G.f & G_PICKSEL) glLoadName(MAN_ROT_Z);
@@ -965,7 +967,7 @@ static void draw_manipulator_rotate(View3D *v3d, RegionView3D *rv3d, int moving,
                        manipulator_setcolor(v3d, 'x', colcode);
                        drawcircball(GL_LINE_LOOP, unitmat[3], 1.0, unitmat);
                        glRotatef(-90.0, 0.0, 1.0, 0.0);
-               }       
+               }
                /* Y circle */
                if(drawflags & MAN_ROT_Y) {
                        if(G.f & G_PICKSEL) glLoadName(MAN_ROT_Y);
@@ -974,13 +976,13 @@ static void draw_manipulator_rotate(View3D *v3d, RegionView3D *rv3d, int moving,
                        drawcircball(GL_LINE_LOOP, unitmat[3], 1.0, unitmat);
                        glRotatef(90.0, 1.0, 0.0, 0.0);
                }
-               
+
                if(arcs) glDisable(GL_CLIP_PLANE0);
        }
        // donut arcs
        if(arcs) {
                glEnable(GL_CLIP_PLANE0);
-               
+
                /* Z circle */
                if(drawflags & MAN_ROT_Z) {
                        if(G.f & G_PICKSEL) glLoadName(MAN_ROT_Z);
@@ -994,7 +996,7 @@ static void draw_manipulator_rotate(View3D *v3d, RegionView3D *rv3d, int moving,
                        manipulator_setcolor(v3d, 'x', colcode);
                        partial_donut(cusize/4.0f, 1.0f, 0, 48, 8, 48);
                        glRotatef(-90.0, 0.0, 1.0, 0.0);
-               }       
+               }
                /* Y circle */
                if(drawflags & MAN_ROT_Y) {
                        if(G.f & G_PICKSEL) glLoadName(MAN_ROT_Y);
@@ -1003,12 +1005,12 @@ static void draw_manipulator_rotate(View3D *v3d, RegionView3D *rv3d, int moving,
                        partial_donut(cusize/4.0f, 1.0f, 0, 48, 8, 48);
                        glRotatef(90.0, 1.0, 0.0, 0.0);
                }
-               
+
                glDisable(GL_CLIP_PLANE0);
        }
-       
+
        if(arcs==0) {
-               
+
                /* Z handle on X axis */
                if(drawflags & MAN_ROT_Z) {
                        glPushMatrix();
@@ -1018,41 +1020,41 @@ static void draw_manipulator_rotate(View3D *v3d, RegionView3D *rv3d, int moving,
                        partial_donut(0.7f*cusize, 1.0f, 31, 33, 8, 64);
 
                        glPopMatrix();
-               }       
+               }
 
                /* Y handle on X axis */
                if(drawflags & MAN_ROT_Y) {
                        glPushMatrix();
                        if(G.f & G_PICKSEL) glLoadName(MAN_ROT_Y);
                        manipulator_setcolor(v3d, 'y', colcode);
-                       
+
                        glRotatef(90.0, 1.0, 0.0, 0.0);
                        glRotatef(90.0, 0.0, 0.0, 1.0);
                        partial_donut(0.7f*cusize, 1.0f, 31, 33, 8, 64);
-                       
+
                        glPopMatrix();
                }
-               
+
                /* X handle on Z axis */
                if(drawflags & MAN_ROT_X) {
                        glPushMatrix();
                        if(G.f & G_PICKSEL) glLoadName(MAN_ROT_X);
                        manipulator_setcolor(v3d, 'x', colcode);
-                       
+
                        glRotatef(-90.0, 0.0, 1.0, 0.0);
                        glRotatef(90.0, 0.0, 0.0, 1.0);
                        partial_donut(0.7f*cusize, 1.0f, 31, 33, 8, 64);
 
                        glPopMatrix();
                }
-               
+
        }
-       
+
        /* restore */
        wmLoadMatrix(rv3d->viewmat);
        gluDeleteQuadric(qobj);
        if(v3d->zbuf) glEnable(GL_DEPTH_TEST);
-       
+
 }
 
 static void drawsolidcube(float size)
@@ -1067,52 +1069,52 @@ static void drawsolidcube(float size)
        { 1.0,  1.0,  1.0},
        { 1.0,  1.0, -1.0},     };
        float n[3];
-       
+
        glPushMatrix();
        glScalef(size, size, size);
-       
+
        n[0]=0; n[1]=0; n[2]=0;
        glBegin(GL_QUADS);
        n[0]= -1.0;
-       glNormal3fv(n); 
+       glNormal3fv(n);
        glVertex3fv(cube[0]); glVertex3fv(cube[1]); glVertex3fv(cube[2]); glVertex3fv(cube[3]);
        n[0]=0;
        glEnd();
-       
+
        glBegin(GL_QUADS);
        n[1]= -1.0;
-       glNormal3fv(n); 
+       glNormal3fv(n);
        glVertex3fv(cube[0]); glVertex3fv(cube[4]); glVertex3fv(cube[5]); glVertex3fv(cube[1]);
        n[1]=0;
        glEnd();
-       
+
        glBegin(GL_QUADS);
        n[0]= 1.0;
-       glNormal3fv(n); 
+       glNormal3fv(n);
        glVertex3fv(cube[4]); glVertex3fv(cube[7]); glVertex3fv(cube[6]); glVertex3fv(cube[5]);
        n[0]=0;
        glEnd();
-       
+
        glBegin(GL_QUADS);
        n[1]= 1.0;
-       glNormal3fv(n); 
+       glNormal3fv(n);
        glVertex3fv(cube[7]); glVertex3fv(cube[3]); glVertex3fv(cube[2]); glVertex3fv(cube[6]);
        n[1]=0;
        glEnd();
-       
+
        glBegin(GL_QUADS);
        n[2]= 1.0;
-       glNormal3fv(n); 
+       glNormal3fv(n);
        glVertex3fv(cube[1]); glVertex3fv(cube[5]); glVertex3fv(cube[6]); glVertex3fv(cube[2]);
        n[2]=0;
        glEnd();
-       
+
        glBegin(GL_QUADS);
        n[2]= -1.0;
-       glNormal3fv(n); 
+       glNormal3fv(n);
        glVertex3fv(cube[7]); glVertex3fv(cube[4]); glVertex3fv(cube[0]); glVertex3fv(cube[3]);
        glEnd();
-       
+
        glPopMatrix();
 }
 
@@ -1120,36 +1122,36 @@ static void drawsolidcube(float size)
 static void draw_manipulator_scale(View3D *v3d, RegionView3D *rv3d, int moving, int drawflags, int combo, int colcode)
 {
        TransInfo *t= BIF_GetTransInfo(); // XXX
-       float cywid= 0.25f*0.01f*(float)U.tw_handlesize;        
+       float cywid= 0.25f*0.01f*(float)U.tw_handlesize;
        float cusize= cywid*0.75f, dz;
-       
+
        /* when called while moving in mixed mode, do not draw when... */
        if((drawflags & MAN_SCALE_C)==0) return;
-       
+
        glDisable(GL_DEPTH_TEST);
-       
+
        /* not in combo mode */
        if( (combo & (V3D_MANIP_TRANSLATE|V3D_MANIP_ROTATE))==0) {
                float size, unitmat[4][4];
                int shift= 0; // XXX
-               
+
                /* center circle, do not add to selection when shift is pressed (planar constraint)  */
                if( (G.f & G_PICKSEL) && shift==0) glLoadName(MAN_SCALE_C);
-               
+
                manipulator_setcolor(v3d, 'c', colcode);
                glPushMatrix();
                size= screen_aligned(rv3d, rv3d->twmat);
                Mat4One(unitmat);
                drawcircball(GL_LINE_LOOP, unitmat[3], 0.2f*size, unitmat);
                glPopMatrix();
-               
+
                dz= 1.0;
        }
        else dz= 1.0f-4.0f*cusize;
-       
+
        if(moving) {
                float matt[4][4];
-               
+
                Mat4CpyMat4(matt, rv3d->twmat); // to copy the parts outside of [3][3]
                Mat4MulMat34(matt, t->mat, rv3d->twmat);
                wmMultMatrix(matt);
@@ -1159,26 +1161,26 @@ static void draw_manipulator_scale(View3D *v3d, RegionView3D *rv3d, int moving,
                wmMultMatrix(rv3d->twmat);
                glFrontFace( is_mat4_flipped(rv3d->twmat)?GL_CW:GL_CCW);
        }
-       
+
        /* axis */
-               
+
        /* in combo mode, this is always drawn as first type */
        draw_manipulator_axes(v3d, colcode, drawflags & MAN_SCALE_X, drawflags & MAN_SCALE_Y, drawflags & MAN_SCALE_Z);
-       
+
        /* Z cube */
        glTranslatef(0.0, 0.0, dz);
        if(drawflags & MAN_SCALE_Z) {
                if(G.f & G_PICKSEL) glLoadName(MAN_SCALE_Z);
                manipulator_setcolor(v3d, 'z', colcode);
                drawsolidcube(cusize);
-       }       
+       }
        /* X cube */
        glTranslatef(dz, 0.0, -dz);
        if(drawflags & MAN_SCALE_X) {
                if(G.f & G_PICKSEL) glLoadName(MAN_SCALE_X);
                manipulator_setcolor(v3d, 'x', colcode);
                drawsolidcube(cusize);
-       }       
+       }
        /* Y cube */
        glTranslatef(-dz, dz, 0.0);
        if(drawflags & MAN_SCALE_Y) {
@@ -1186,11 +1188,11 @@ static void draw_manipulator_scale(View3D *v3d, RegionView3D *rv3d, int moving,
                manipulator_setcolor(v3d, 'y', colcode);
                drawsolidcube(cusize);
        }
-       
+
        /* if shiftkey, center point as last, for selectbuffer order */
        if(G.f & G_PICKSEL) {
                int shift= 0; // XXX
-               
+
                if(shift) {
                        glTranslatef(0.0, -dz, 0.0);
                        glLoadName(MAN_SCALE_C);
@@ -1199,11 +1201,11 @@ static void draw_manipulator_scale(View3D *v3d, RegionView3D *rv3d, int moving,
                        glEnd();
                }
        }
-       
+
        /* restore */
        wmLoadMatrix(rv3d->viewmat);
-       
-       if(v3d->zbuf) glEnable(GL_DEPTH_TEST);  
+
+       if(v3d->zbuf) glEnable(GL_DEPTH_TEST);
        glFrontFace(GL_CCW);
 }
 
@@ -1213,23 +1215,23 @@ static void draw_cone(GLUquadricObj *qobj, float len, float width)
        glTranslatef(0.0, 0.0, -0.5f*len);
        gluCylinder(qobj, width, 0.0, len, 8, 1);
        gluQuadricOrientation(qobj, GLU_INSIDE);
-       gluDisk(qobj, 0.0, width, 8, 1); 
+       gluDisk(qobj, 0.0, width, 8, 1);
        gluQuadricOrientation(qobj, GLU_OUTSIDE);
        glTranslatef(0.0, 0.0, 0.5f*len);
 }
 
 static void draw_cylinder(GLUquadricObj *qobj, float len, float width)
 {
-       
+
        width*= 0.8f;   // just for beauty
-       
+
        glTranslatef(0.0, 0.0, -0.5f*len);
        gluCylinder(qobj, width, width, len, 8, 1);
        gluQuadricOrientation(qobj, GLU_INSIDE);
-       gluDisk(qobj, 0.0, width, 8, 1); 
+       gluDisk(qobj, 0.0, width, 8, 1);
        gluQuadricOrientation(qobj, GLU_OUTSIDE);
        glTranslatef(0.0, 0.0, len);
-       gluDisk(qobj, 0.0, width, 8, 1); 
+       gluDisk(qobj, 0.0, width, 8, 1);
        glTranslatef(0.0, 0.0, -0.5f*len);
 }
 
@@ -1237,54 +1239,54 @@ static void draw_cylinder(GLUquadricObj *qobj, float len, float width)
 static void draw_manipulator_translate(View3D *v3d, RegionView3D *rv3d, int moving, int drawflags, int combo, int colcode)
 {
        TransInfo *t= BIF_GetTransInfo(); // XXX
-       GLUquadricObj *qobj; 
+       GLUquadricObj *qobj;
        float cylen= 0.01f*(float)U.tw_handlesize;
        float cywid= 0.25f*cylen, dz, size;
        float unitmat[4][4];
        int shift= 0; // XXX
-       
+
        /* when called while moving in mixed mode, do not draw when... */
        if((drawflags & MAN_TRANS_C)==0) return;
-       
+
        if(moving) glTranslatef(t->vec[0], t->vec[1], t->vec[2]);
        glDisable(GL_DEPTH_TEST);
 
        qobj= gluNewQuadric();
-       gluQuadricDrawStyle(qobj, GLU_FILL); 
-       
+       gluQuadricDrawStyle(qobj, GLU_FILL);
+
        /* center circle, do not add to selection when shift is pressed (planar constraint) */
        if( (G.f & G_PICKSEL) && shift==0) glLoadName(MAN_TRANS_C);
-       
+
        manipulator_setcolor(v3d, 'c', colcode);
        glPushMatrix();
        size= screen_aligned(rv3d, rv3d->twmat);
        Mat4One(unitmat);
        drawcircball(GL_LINE_LOOP, unitmat[3], 0.2f*size, unitmat);
        glPopMatrix();
-       
+
        /* and now apply matrix, we move to local matrix drawing */
        wmMultMatrix(rv3d->twmat);
-       
+
        /* axis */
        glLoadName(-1);
-       
+
        // translate drawn as last, only axis when no combo with scale, or for ghosting
        if((combo & V3D_MANIP_SCALE)==0 || colcode==MAN_GHOST)
                draw_manipulator_axes(v3d, colcode, drawflags & MAN_TRANS_X, drawflags & MAN_TRANS_Y, drawflags & MAN_TRANS_Z);
 
-       
+
        /* offset in combo mode, for rotate a bit more */
        if(combo & (V3D_MANIP_ROTATE)) dz= 1.0f+2.0f*cylen;
        else if(combo & (V3D_MANIP_SCALE)) dz= 1.0f+0.5f*cylen;
        else dz= 1.0f;
-       
+
        /* Z Cone */
        glTranslatef(0.0, 0.0, dz);
        if(drawflags & MAN_TRANS_Z) {
                if(G.f & G_PICKSEL) glLoadName(MAN_TRANS_Z);
                manipulator_setcolor(v3d, 'z', colcode);
                draw_cone(qobj, cylen, cywid);
-       }       
+       }
        /* X Cone */
        glTranslatef(dz, 0.0, -dz);
        if(drawflags & MAN_TRANS_X) {
@@ -1293,7 +1295,7 @@ static void draw_manipulator_translate(View3D *v3d, RegionView3D *rv3d, int movi
                manipulator_setcolor(v3d, 'x', colcode);
                draw_cone(qobj, cylen, cywid);
                glRotatef(-90.0, 0.0, 1.0, 0.0);
-       }       
+       }
        /* Y Cone */
        glTranslatef(-dz, dz, 0.0);
        if(drawflags & MAN_TRANS_Y) {
@@ -1305,9 +1307,9 @@ static void draw_manipulator_translate(View3D *v3d, RegionView3D *rv3d, int movi
 
        gluDeleteQuadric(qobj);
        wmLoadMatrix(rv3d->viewmat);
-       
+
        if(v3d->zbuf) glEnable(GL_DEPTH_TEST);
-       
+
 }
 
 static void draw_manipulator_rotate_cyl(View3D *v3d, RegionView3D *rv3d, int moving, int drawflags, int combo, int colcode)
@@ -1317,27 +1319,27 @@ static void draw_manipulator_rotate_cyl(View3D *v3d, RegionView3D *rv3d, int mov
        float size;
        float cylen= 0.01f*(float)U.tw_handlesize;
        float cywid= 0.25f*cylen;
-       
+
        /* when called while moving in mixed mode, do not draw when... */
        if((drawflags & MAN_ROT_C)==0) return;
 
        /* prepare for screen aligned draw */
        glPushMatrix();
        size= screen_aligned(rv3d, rv3d->twmat);
-       
+
        glDisable(GL_DEPTH_TEST);
 
-       qobj= gluNewQuadric(); 
-       
+       qobj= gluNewQuadric();
+
        /* Screen aligned view rot circle */
        if(drawflags & MAN_ROT_V) {
                float unitmat[4][4];
                Mat4One(unitmat);
-               
+
                if(G.f & G_PICKSEL) glLoadName(MAN_ROT_V);
                UI_ThemeColor(TH_TRANSFORM);
                drawcircball(GL_LINE_LOOP, unitmat[3], 1.2f*size, unitmat);
-               
+
                if(moving) {
                        float vec[3];
                        vec[0]= (float)(t->imval[0] - t->center2d[0]);
@@ -1352,7 +1354,7 @@ static void draw_manipulator_rotate_cyl(View3D *v3d, RegionView3D *rv3d, int mov
                }
        }
        glPopMatrix();
-       
+
        /* apply the transform delta */
        if(moving) {
                float matt[4][4];
@@ -1365,27 +1367,27 @@ static void draw_manipulator_rotate_cyl(View3D *v3d, RegionView3D *rv3d, int mov
        else {
                wmMultMatrix(rv3d->twmat);
        }
-       
+
        glFrontFace( is_mat4_flipped(rv3d->twmat)?GL_CW:GL_CCW);
-       
+
        /* axis */
        if( (G.f & G_PICKSEL)==0 ) {
-               
+
                // only draw axis when combo didn't draw scale axes
                if((combo & V3D_MANIP_SCALE)==0)
                        draw_manipulator_axes(v3d, colcode, drawflags & MAN_ROT_X, drawflags & MAN_ROT_Y, drawflags & MAN_ROT_Z);
-               
+
                /* only has to be set when not in picking */
-               gluQuadricDrawStyle(qobj, GLU_FILL); 
+               gluQuadricDrawStyle(qobj, GLU_FILL);
        }
-       
+
        /* Z cyl */
        glTranslatef(0.0, 0.0, 1.0);
        if(drawflags & MAN_ROT_Z) {
                if(G.f & G_PICKSEL) glLoadName(MAN_ROT_Z);
                manipulator_setcolor(v3d, 'z', colcode);
                draw_cylinder(qobj, cylen, cywid);
-       }       
+       }
        /* X cyl */
        glTranslatef(1.0, 0.0, -1.0);
        if(drawflags & MAN_ROT_X) {
@@ -1394,7 +1396,7 @@ static void draw_manipulator_rotate_cyl(View3D *v3d, RegionView3D *rv3d, int mov
                manipulator_setcolor(v3d, 'x', colcode);
                draw_cylinder(qobj, cylen, cywid);
                glRotatef(-90.0, 0.0, 1.0, 0.0);
-       }       
+       }
        /* Y cylinder */
        glTranslatef(-1.0, 1.0, 0.0);
        if(drawflags & MAN_ROT_Y) {
@@ -1403,14 +1405,14 @@ static void draw_manipulator_rotate_cyl(View3D *v3d, RegionView3D *rv3d, int mov
                manipulator_setcolor(v3d, 'y', colcode);
                draw_cylinder(qobj, cylen, cywid);
        }
-       
+
        /* restore */
-       
+
        gluDeleteQuadric(qobj);
        wmLoadMatrix(rv3d->viewmat);
-       
+
        if(v3d->zbuf) glEnable(GL_DEPTH_TEST);
-       
+
 }
 
 
@@ -1420,7 +1422,7 @@ static float get_manipulator_drawsize(ARegion *ar)
 {
        RegionView3D *rv3d= ar->regiondata;
        float size = get_drawsize(ar, rv3d->twmat[3]);
-       
+
        size*= (float)U.tw_size;
 
        return size;
@@ -1439,13 +1441,13 @@ void BIF_draw_manipulator(const bContext *C)
        View3D *v3d= sa->spacedata.first;
        RegionView3D *rv3d= ar->regiondata;
        int totsel;
-       
+
        if(!(v3d->twflag & V3D_USE_MANIPULATOR)) return;
        if(G.moving && (G.moving & G_TRANSFORM_MANIP)==0) return;
-       
+
        if(G.moving==0) {
                v3d->twflag &= ~V3D_DRAW_MANIPULATOR;
-               
+
                totsel= calc_manipulator_stats(C);
                if(totsel==0) return;
                drawflags= v3d->twdrawflag;     /* set in calc_manipulator_stats */
@@ -1461,7 +1463,7 @@ void BIF_draw_manipulator(const bContext *C)
                        rv3d->twmat[3][2]= (scene->twmin[2] + scene->twmax[2])/2.0f;
                        if(v3d->around==V3D_ACTIVE && scene->obedit==NULL) {
                                Object *ob= OBACT;
-                               if(ob && !(ob->flag & OB_POSEMODE)) 
+                               if(ob && !(ob->flag & OB_POSEMODE))
                                        VECCOPY(rv3d->twmat[3], ob->obmat[3]);
                        }
                        break;
@@ -1473,26 +1475,26 @@ void BIF_draw_manipulator(const bContext *C)
                        VECCOPY(rv3d->twmat[3], give_cursor(scene, v3d));
                        break;
                }
-               
+
                Mat4MulFloat3((float *)rv3d->twmat, get_manipulator_drawsize(ar));
        }
-       
+
        if(v3d->twflag & V3D_DRAW_MANIPULATOR) {
-               
+
                if(v3d->twtype & V3D_MANIP_ROTATE) {
-                       
+
                        /* rotate has special ghosting draw, for pie chart */
                        if(G.moving) draw_manipulator_rotate_ghost(v3d, rv3d, drawflags);
-                       
+
                        if(G.moving) glEnable(GL_BLEND);
-                       
+
                        if(G.rt==3) {
                                if(G.moving) draw_manipulator_rotate_cyl(v3d, rv3d, 1, drawflags, v3d->twtype, MAN_MOVECOL);
                                else draw_manipulator_rotate_cyl(v3d, rv3d, 0, drawflags, v3d->twtype, MAN_RGB);
                        }
                        else
                                draw_manipulator_rotate(v3d, rv3d, G.moving, drawflags, v3d->twtype);
-                       
+
                        glDisable(GL_BLEND);
                }
                if(v3d->twtype & V3D_MANIP_SCALE) {
@@ -1524,22 +1526,22 @@ static int manipulator_selectbuf(ScrArea *sa, ARegion *ar, short *mval, float ho
        GLuint buffer[64];              // max 4 items per select, so large enuf
        short hits;
        extern void setwinmatrixview3d(ARegion *ar, View3D *v3d, rctf *rect); // XXX check a bit later on this... (ton)
-       
+
        G.f |= G_PICKSEL;
-       
+
        rect.xmin= mval[0]-hotspot;
        rect.xmax= mval[0]+hotspot;
        rect.ymin= mval[1]-hotspot;
        rect.ymax= mval[1]+hotspot;
-       
+
        setwinmatrixview3d(ar, v3d, &rect);
        Mat4MulMat4(rv3d->persmat, rv3d->viewmat, rv3d->winmat);
-       
+
        glSelectBuffer( 64, buffer);
        glRenderMode(GL_SELECT);
        glInitNames();  /* these two calls whatfor? It doesnt work otherwise */
        glPushName(-2);
-       
+
        /* do the drawing */
        if(v3d->twtype & V3D_MANIP_ROTATE) {
                if(G.rt==3) draw_manipulator_rotate_cyl(v3d, rv3d, 0, MAN_ROT_C & v3d->twdrawflag, v3d->twtype, MAN_RGB);
@@ -1549,26 +1551,26 @@ static int manipulator_selectbuf(ScrArea *sa, ARegion *ar, short *mval, float ho
                draw_manipulator_scale(v3d, rv3d, 0, MAN_SCALE_C & v3d->twdrawflag, v3d->twtype, MAN_RGB);
        if(v3d->twtype & V3D_MANIP_TRANSLATE)
                draw_manipulator_translate(v3d, rv3d, 0, MAN_TRANS_C & v3d->twdrawflag, v3d->twtype, MAN_RGB);
-       
+
        glPopName();
        hits= glRenderMode(GL_RENDER);
-       
+
        G.f &= ~G_PICKSEL;
        setwinmatrixview3d(ar, v3d, NULL);
        Mat4MulMat4(rv3d->persmat, rv3d->viewmat, rv3d->winmat);
-       
+
        if(hits==1) return buffer[3];
        else if(hits>1) {
                GLuint val, dep, mindep=0, mindeprot=0, minval=0, minvalrot=0;
                int a;
-               
+
                /* we compare the hits in buffer, but value centers highest */
                /* we also store the rotation hits separate (because of arcs) and return hits on other widgets if there are */
 
                for(a=0; a<hits; a++) {
                        dep= buffer[4*a + 1];
                        val= buffer[4*a + 3];
-                       
+
                        if(val==MAN_TRANS_C) return MAN_TRANS_C;
                        else if(val==MAN_SCALE_C) return MAN_SCALE_C;
                        else {
@@ -1586,7 +1588,7 @@ static int manipulator_selectbuf(ScrArea *sa, ARegion *ar, short *mval, float ho
                                }
                        }
                }
-               
+
                if(minval)
                        return minval;
                else
@@ -1596,113 +1598,111 @@ static int manipulator_selectbuf(ScrArea *sa, ARegion *ar, short *mval, float ho
 }
 
 /* return 0; nothing happened */
-int BIF_do_manipulator(bContext *C, short mval[2])
+int BIF_do_manipulator(bContext *C, struct wmEvent *event, wmOperator *op)
 {
        ScrArea *sa= CTX_wm_area(C);
        View3D *v3d= sa->spacedata.first;
        ARegion *ar= CTX_wm_region(C);
        RegionView3D *rv3d= ar->regiondata;
+       int constraint_axis[3] = {0, 0, 0};
        int val;
-       int shift= 0; // XXX
-       
+       int shift = event->shift;
+
        if(!(v3d->twflag & V3D_USE_MANIPULATOR)) return 0;
        if(!(v3d->twflag & V3D_DRAW_MANIPULATOR)) return 0;
-       
+
        // find the hotspots first test narrow hotspot
-       val= manipulator_selectbuf(sa, ar, mval, 0.5f*(float)U.tw_hotspot);
+       val= manipulator_selectbuf(sa, ar, event->mval, 0.5f*(float)U.tw_hotspot);
        if(val) {
-               
-               // XXX checkFirstTime(); // TEMPORARY, check this before doing any transform call.
-               
+
                // drawflags still global, for drawing call above
-               drawflags= manipulator_selectbuf(sa, ar, mval, 0.2f*(float)U.tw_hotspot);
+               drawflags= manipulator_selectbuf(sa, ar, event->mval, 0.2f*(float)U.tw_hotspot);
                if(drawflags==0) drawflags= val;
 
                if (drawflags & MAN_TRANS_C) {
-                       initManipulator(TFM_TRANSLATION);
                        switch(drawflags) {
                        case MAN_TRANS_C:
                                break;
                        case MAN_TRANS_X:
                                if(shift) {
-                                       drawflags= MAN_TRANS_Y|MAN_TRANS_Z;
-                                       BIF_setDualAxisConstraint(rv3d->twmat[1], rv3d->twmat[2], " Y+Z");
+                                       constraint_axis[1] = 1;
+                                       constraint_axis[2] = 1;
                                }
                                else
-                                       BIF_setSingleAxisConstraint(rv3d->twmat[0], " X");
+                                       constraint_axis[0] = 1;
                                break;
                        case MAN_TRANS_Y:
                                if(shift) {
-                                       drawflags= MAN_TRANS_X|MAN_TRANS_Z;
-                                       BIF_setDualAxisConstraint(rv3d->twmat[0], rv3d->twmat[2], " X+Z");
+                                       constraint_axis[0] = 1;
+                                       constraint_axis[2] = 1;
                                }
                                else
-                                       BIF_setSingleAxisConstraint(rv3d->twmat[1], " Y");
+                                       constraint_axis[1] = 1;
                                break;
                        case MAN_TRANS_Z:
                                if(shift) {
-                                       drawflags= MAN_TRANS_X|MAN_TRANS_Y;
-                                       BIF_setDualAxisConstraint(rv3d->twmat[0], rv3d->twmat[1], " X+Y");
+                                       constraint_axis[0] = 1;
+                                       constraint_axis[1] = 1;
                                }
                                else
-                                       BIF_setSingleAxisConstraint(rv3d->twmat[2], " Z");
+                                       constraint_axis[2] = 1;
                                break;
                        }
-                       ManipulatorTransform();
+                       RNA_boolean_set_array(op->ptr, "constraint_axis", constraint_axis);
+                       WM_operator_name_call(C, "TFM_OT_translation", WM_OP_INVOKE_REGION_WIN, op->ptr);
                }
                else if (drawflags & MAN_SCALE_C) {
-                       initManipulator(TFM_RESIZE);
                        switch(drawflags) {
                        case MAN_SCALE_X:
                                if(shift) {
-                                       drawflags= MAN_SCALE_Y|MAN_SCALE_Z;
-                                       BIF_setDualAxisConstraint(rv3d->twmat[1], rv3d->twmat[2], " Y+Z");
+                                       constraint_axis[1] = 1;
+                                       constraint_axis[2] = 1;
                                }
                                else
-                                       BIF_setSingleAxisConstraint(rv3d->twmat[0], " X");
+                                       constraint_axis[0] = 1;
                                break;
                        case MAN_SCALE_Y:
                                if(shift) {
-                                       drawflags= MAN_SCALE_X|MAN_SCALE_Z;
-                                       BIF_setDualAxisConstraint(rv3d->twmat[0], rv3d->twmat[2], " X+Z");
+                                       constraint_axis[0] = 1;
+                                       constraint_axis[2] = 1;
                                }
                                else
-                                       BIF_setSingleAxisConstraint(rv3d->twmat[1], " Y");
+                                       constraint_axis[1] = 1;
                                break;
                        case MAN_SCALE_Z:
                                if(shift) {
-                                       drawflags= MAN_SCALE_X|MAN_SCALE_Y;
-                                       BIF_setDualAxisConstraint(rv3d->twmat[0], rv3d->twmat[1], " X+Y");
+                                       constraint_axis[0] = 1;
+                                       constraint_axis[1] = 1;
                                }
                                else
-                                       BIF_setSingleAxisConstraint(rv3d->twmat[2], " Z");
+                                       constraint_axis[2] = 1;
                                break;
                        }
-                       ManipulatorTransform();
+                       RNA_boolean_set_array(op->ptr, "constraint_axis", constraint_axis);
+                       WM_operator_name_call(C, "TFM_OT_resize", WM_OP_INVOKE_REGION_WIN, op->ptr);
                }
-               else if (drawflags == MAN_ROT_T) { /* trackbal need special case, init is different */
-                       initManipulator(TFM_TRACKBALL);
-                       ManipulatorTransform();
+               else if (drawflags == MAN_ROT_T) { /* trackball need special case, init is different */
+                       WM_operator_name_call(C, "TFM_OT_trackball", WM_OP_INVOKE_REGION_WIN, op->ptr);
                }
                else if (drawflags & MAN_ROT_C) {
-                       initManipulator(TFM_ROTATION);
                        switch(drawflags) {
                        case MAN_ROT_X:
-                               BIF_setSingleAxisConstraint(rv3d->twmat[0], " X");
+                               constraint_axis[0] = 1;
                                break;
                        case MAN_ROT_Y:
-                               BIF_setSingleAxisConstraint(rv3d->twmat[1], " Y");
+                               constraint_axis[1] = 1;
                                break;
                        case MAN_ROT_Z:
-                               BIF_setSingleAxisConstraint(rv3d->twmat[2], " Z");
+                               constraint_axis[2] = 1;
                                break;
                        }
-                       ManipulatorTransform();
+                       RNA_boolean_set_array(op->ptr, "constraint_axis", constraint_axis);
+                       WM_operator_name_call(C, "TFM_OT_rotation", WM_OP_INVOKE_REGION_WIN, op->ptr);
                }
        }
        /* after transform, restore drawflags */
        drawflags= 0xFFFF;
-       
+
        return val;
 }
 
index 9e4115f38f09bab654bdc398f658f4af4e3a1fd3..97fb3531718c9bad8e5c9009dd5b84ef9da03485 100644 (file)
@@ -89,6 +89,7 @@ char OP_SHEAR[] = "TFM_OT_shear";
 char OP_WARP[] = "TFM_OT_warp";
 char OP_SHRINK_FATTEN[] = "TFM_OT_shrink_fatten";
 char OP_TILT[] = "TFM_OT_tilt";
+char OP_TRACKBALL[] = "TFM_OT_trackball";
 
 
 TransformModeItem transform_modes[] =
@@ -101,6 +102,7 @@ TransformModeItem transform_modes[] =
        {OP_WARP, TFM_WARP},
        {OP_SHRINK_FATTEN, TFM_SHRINKFATTEN},
        {OP_TILT, TFM_TILT},
+       {OP_TRACKBALL, TFM_TRACKBALL},
        {NULL, 0}
 };
 
@@ -111,7 +113,7 @@ static int select_orientation_exec(bContext *C, wmOperator *op)
 
        if(orientation == V3D_MANIP_CUSTOM)
                orientation += custom_index;
-       
+
        BIF_selectTransformOrientationValue(C, orientation);
 
        return OPERATOR_FINISHED;
@@ -121,15 +123,15 @@ static int select_orientation_invoke(bContext *C, wmOperator *op, wmEvent *event
 {
        uiPopupMenu *pup;
        uiLayout *layout;
-       
+
        pup= uiPupMenuBegin(C, "Orientation", 0);
        layout= uiPupMenuLayout(pup);
        BIF_menuTransformOrientation(C, layout, NULL);
        uiPupMenuEnd(C, pup);
-       
+
        return OPERATOR_CANCELLED;
 }
-       
+
 void TFM_OT_select_orientation(struct wmOperatorType *ot)
 {
        static EnumPropertyItem orientation_items[]= {
@@ -183,27 +185,27 @@ static int transformops_data(bContext *C, wmOperator *op, wmEvent *event)
                }
 
                retval = initTransform(C, t, op, event, mode);
-       
+
                /* store data */
                op->customdata = t;
        }
-       
+
        return retval; /* return 0 on error */
 }
 
 static int transform_modal(bContext *C, wmOperator *op, wmEvent *event)
 {
        int exit_code;
-       
+
        TransInfo *t = op->customdata;
-       
+
        transformEvent(t, event);
-       
+
        transformApply(C, t);
-       
-       
+
+
        exit_code = transformEnd(C, t);
-       
+
        if (exit_code != OPERATOR_RUNNING_MODAL)
        {
                transformops_exit(C, op);
@@ -215,11 +217,11 @@ static int transform_modal(bContext *C, wmOperator *op, wmEvent *event)
 static int transform_cancel(bContext *C, wmOperator *op)
 {
        TransInfo *t = op->customdata;
-       
+
        t->state = TRANS_CANCEL;
        transformEnd(C, t);
        transformops_exit(C, op);
-       
+
        return OPERATOR_CANCELLED;
 }
 
@@ -237,11 +239,11 @@ static int transform_exec(bContext *C, wmOperator *op)
        t->options |= CTX_AUTOCONFIRM;
 
        transformApply(C, t);
-       
+
        transformEnd(C, t);
 
        transformops_exit(C, op);
-       
+
        return OPERATOR_FINISHED;
 }
 
@@ -279,7 +281,7 @@ void Properties_Snapping(struct wmOperatorType *ot, short align)
        RNA_def_boolean(ot->srna, "snap", 0, "Snap to Point", "");
        RNA_def_enum(ot->srna, "snap_mode", snap_mode_types, 0, "Mode", "");
        RNA_def_float_vector(ot->srna, "snap_point", 3, NULL, -FLT_MAX, FLT_MAX, "Point", "", -FLT_MAX, FLT_MAX);
-       
+
        if (align)
        {
                RNA_def_boolean(ot->srna, "snap_align", 0, "Align with Point Normal", "");
@@ -314,7 +316,7 @@ void TFM_OT_translation(struct wmOperatorType *ot)
        RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", "");
 
        Properties_Constraints(ot);
-       
+
        Properties_Snapping(ot, 1);
 }
 
@@ -339,10 +341,32 @@ void TFM_OT_resize(struct wmOperatorType *ot)
        RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", "");
 
        Properties_Constraints(ot);
-       
+
        Properties_Snapping(ot, 0);
 }
 
+
+void TFM_OT_trackball(struct wmOperatorType *ot)
+{
+       /* identifiers */
+       ot->name   = "Trackball";
+       ot->idname = OP_TRACKBALL;
+       ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO;
+
+       /* api callbacks */
+       ot->invoke = transform_invoke;
+       ot->exec   = transform_exec;
+       ot->modal  = transform_modal;
+       ot->cancel  = transform_cancel;
+       ot->poll   = ED_operator_areaactive;
+
+       RNA_def_float_vector(ot->srna, "value", 2, VecOne, -FLT_MAX, FLT_MAX, "angle", "", -FLT_MAX, FLT_MAX);
+
+       Properties_Proportional(ot);
+
+       RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", "");
+}
+
 void TFM_OT_rotation(struct wmOperatorType *ot)
 {
        /* identifiers */
@@ -364,7 +388,7 @@ void TFM_OT_rotation(struct wmOperatorType *ot)
        RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", "");
 
        Properties_Constraints(ot);
-       
+
        Properties_Snapping(ot, 0);
 }
 
@@ -547,10 +571,11 @@ void transform_operatortypes(void)
        WM_operatortype_append(TFM_OT_warp);
        WM_operatortype_append(TFM_OT_shrink_fatten);
        WM_operatortype_append(TFM_OT_tilt);
+       WM_operatortype_append(TFM_OT_trackball);
 
        WM_operatortype_append(TFM_OT_select_orientation);
 }
+
 void transform_keymap_for_space(struct wmWindowManager *wm, struct ListBase *keymap, int spaceid)
 {
        wmKeymapItem *km;
@@ -558,9 +583,9 @@ void transform_keymap_for_space(struct wmWindowManager *wm, struct ListBase *key
        {
                case SPACE_VIEW3D:
                        km = WM_keymap_add_item(keymap, "TFM_OT_translation", GKEY, KM_PRESS, 0, 0);
-                       
+
                        km= WM_keymap_add_item(keymap, "TFM_OT_translation", EVT_TWEAK_S, KM_ANY, 0, 0);
-                       
+
                        km = WM_keymap_add_item(keymap, "TFM_OT_rotation", RKEY, KM_PRESS, 0, 0);
 
                        km = WM_keymap_add_item(keymap, "TFM_OT_resize", SKEY, KM_PRESS, 0, 0);
@@ -568,9 +593,9 @@ void transform_keymap_for_space(struct wmWindowManager *wm, struct ListBase *key
                        km = WM_keymap_add_item(keymap, "TFM_OT_warp", WKEY, KM_PRESS, KM_SHIFT, 0);
 
                        km = WM_keymap_add_item(keymap, "TFM_OT_tosphere", SKEY, KM_PRESS, KM_CTRL|KM_SHIFT, 0);
-                       
+
                        km = WM_keymap_add_item(keymap, "TFM_OT_shear", SKEY, KM_PRESS, KM_ALT|KM_CTRL|KM_SHIFT, 0);
-                       
+
                        km = WM_keymap_add_item(keymap, "TFM_OT_shrink_fatten", SKEY, KM_PRESS, KM_ALT, 0);
 
                        km = WM_keymap_add_item(keymap, "TFM_OT_tilt", TKEY, KM_PRESS, 0, 0);
@@ -581,55 +606,55 @@ void transform_keymap_for_space(struct wmWindowManager *wm, struct ListBase *key
                case SPACE_ACTION:
                        km= WM_keymap_add_item(keymap, "TFM_OT_transform", GKEY, KM_PRESS, 0, 0);
                        RNA_int_set(km->ptr, "mode", TFM_TIME_TRANSLATE);
-                       
+
                        km= WM_keymap_add_item(keymap, "TFM_OT_transform", EVT_TWEAK_S, KM_ANY, 0, 0);
                        RNA_int_set(km->ptr, "mode", TFM_TIME_TRANSLATE);
-                       
+
                        km= WM_keymap_add_item(keymap, "TFM_OT_transform", EKEY, KM_PRESS, 0, 0);
                        RNA_int_set(km->ptr, "mode", TFM_TIME_EXTEND);
-                       
+
                        km= WM_keymap_add_item(keymap, "TFM_OT_transform", SKEY, KM_PRESS, 0, 0);
                        RNA_int_set(km->ptr, "mode", TFM_TIME_SCALE);
-                       
+
                        km= WM_keymap_add_item(keymap, "TFM_OT_transform", TKEY, KM_PRESS, 0, 0);
                        RNA_int_set(km->ptr, "mode", TFM_TIME_SLIDE);
                        break;
                case SPACE_IPO:
                        km= WM_keymap_add_item(keymap, "TFM_OT_translation", GKEY, KM_PRESS, 0, 0);
-                       
+
                        km= WM_keymap_add_item(keymap, "TFM_OT_translation", EVT_TWEAK_S, KM_ANY, 0, 0);
-                       
+
                                // XXX the 'mode' identifier here is not quite right
                        km= WM_keymap_add_item(keymap, "TFM_OT_transform", EKEY, KM_PRESS, 0, 0);
                        RNA_int_set(km->ptr, "mode", TFM_TIME_EXTEND);
-                       
+
                        km = WM_keymap_add_item(keymap, "TFM_OT_rotation", RKEY, KM_PRESS, 0, 0);
-                       
+
                        km = WM_keymap_add_item(keymap, "TFM_OT_resize", SKEY, KM_PRESS, 0, 0);
                        break;
                case SPACE_NODE:
                        km= WM_keymap_add_item(keymap, "TFM_OT_translation", GKEY, KM_PRESS, 0, 0);
-                       
+
                        km= WM_keymap_add_item(keymap, "TFM_OT_translation", EVT_TWEAK_A, KM_ANY, 0, 0);
                        km= WM_keymap_add_item(keymap, "TFM_OT_translation", EVT_TWEAK_S, KM_ANY, 0, 0);
-                       
+
                        km = WM_keymap_add_item(keymap, "TFM_OT_rotation", RKEY, KM_PRESS, 0, 0);
-                       
+
                        km = WM_keymap_add_item(keymap, "TFM_OT_resize", SKEY, KM_PRESS, 0, 0);
                        break;
                case SPACE_SEQ:
                        km= WM_keymap_add_item(keymap, "TFM_OT_translation", GKEY, KM_PRESS, 0, 0);
-                       
+
                        km= WM_keymap_add_item(keymap, "TFM_OT_translation", EVT_TWEAK_S, KM_ANY, 0, 0);
-                       
+
                        km= WM_keymap_add_item(keymap, "TFM_OT_transform", EKEY, KM_PRESS, 0, 0);
                        RNA_int_set(km->ptr, "mode", TFM_TIME_EXTEND);
                        break;
                case SPACE_IMAGE:
                        km = WM_keymap_add_item(keymap, "TFM_OT_translation", GKEY, KM_PRESS, 0, 0);
-                       
+
                        km= WM_keymap_add_item(keymap, "TFM_OT_translation", EVT_TWEAK_S, KM_ANY, 0, 0);
-                       
+
                        km = WM_keymap_add_item(keymap, "TFM_OT_rotation", RKEY, KM_PRESS, 0, 0);
 
                        km = WM_keymap_add_item(keymap, "TFM_OT_resize", SKEY, KM_PRESS, 0, 0);