Removal of old transform() <sob> part one.

- added in new transform the (not so useful but yah) old feature that
  does scrollwheel zoom during transform
- had to change transform call arguments for uv-window/sequence/oops to
  match new transform for mouse callback

TODO (for martin?)

- pulldown menu support to call with local axes compliant as for pressing
  it with hotkey
- mirrormenu() still uses old transform stuff...
This commit is contained in:
2005-04-30 21:19:19 +00:00
parent 413677caff
commit 42ae9128fa
17 changed files with 152 additions and 2006 deletions

View File

@@ -92,8 +92,8 @@ void restore_tob(struct TransOb *tob);
int cylinder_intersect_test(void);
int sphere_intersect_test(void);
int my_clock(void);
void transform(int mode);
void std_rmouse_transform(void (*xf_func)(int));
void std_rmouse_transform(void (*xf_func)(int, int));
void rightmouse_transform(void);
void single_object_users(int flag);
void new_id_matar(struct Material **matar, int totcol);

View File

@@ -40,7 +40,7 @@ void select_backlinked_oops(void);
void select_linked_oops(void);
void set_select_flag_oops(void);
void swap_select_all_oops(void);
void transform_oops(int mode);
void transform_oops(int mode, int context);
void clever_numbuts_oops(void);
#endif

View File

@@ -55,7 +55,7 @@ void seq_snap_menu(void);
void set_filter_seq(void);
void swap_select_seq(void);
void touch_seq_files(void);
void transform_seq(int mode);
void transform_seq(int mode, int context);
void un_meta(void);
/* drawseq.c */

View File

@@ -40,7 +40,7 @@ void mouseco_to_curtile(void);
void mouse_select_sima(void);
void select_swap_tface_uv(void);
void tface_do_clip(void);
void transform_tface_uv(int mode);
void transform_tface_uv(int mode, int context);
void mirrormenu_tface_uv(void);
void mirror_tface_uv(char mirroraxis);
void hide_tface_uv(int swap);

View File

@@ -1790,7 +1790,6 @@ static void view3d_blockhandlers(ScrArea *sa)
void drawview3dspace(ScrArea *sa, void *spacedata)
{
extern void constline_callback(void); // editobject.c helpline
Base *base;
Object *ob;
@@ -1955,7 +1954,6 @@ void drawview3dspace(ScrArea *sa, void *spacedata)
}
if(G.moving) {
constline_callback();
BIF_drawConstraint();
if(G.obedit) BIF_drawPropCircle(); // only editmode has proportional edit
}

File diff suppressed because it is too large Load Diff

View File

@@ -210,7 +210,7 @@ void deselect_all_area_oops(void) /* all areas */
if(G.soops) G.soops->lockpoin= NULL;
}
void transform_oops(int mode)
void transform_oops(int mode, int context)
{
TransOops *transmain, *tv;
Oops *oops;

View File

@@ -98,8 +98,6 @@ Sequence *last_seq=0;
char last_imagename[FILE_MAXDIR+FILE_MAXFILE]= "/";
char last_sounddir[FILE_MAXDIR+FILE_MAXFILE]= "";
/* void transform_seq(int mode); already in BIF_editseq.h */
#define SEQ_DESEL ~(SELECT+SEQ_LEFTSEL+SEQ_RIGHTSEL)
static int test_overlap_seq(Sequence *);
@@ -678,7 +676,7 @@ static void add_image_strips(char *name)
waitcursor(0);
BIF_undo_push("Add image strip Sequencer");
transform_seq('g');
transform_seq('g', 0);
}
@@ -713,7 +711,7 @@ static void add_movie_strip(char *name)
waitcursor(0);
BIF_undo_push("Add movie strip Sequencer");
transform_seq('g');
transform_seq('g', 0);
}
@@ -742,7 +740,7 @@ static void add_sound_strip(char *name)
waitcursor(0);
BIF_undo_push("Add sound strip Sequencer");
transform_seq('g');
transform_seq('g', 0);
}
#if 0
@@ -960,7 +958,7 @@ static void load_plugin_seq(char *str) /* called from fileselect */
if( test_overlap_seq(last_seq) ) shuffle_seq(last_seq);
BIF_undo_push("Add plugin strip Sequencer");
transform_seq('g');
transform_seq('g', 0);
}
}
@@ -1085,7 +1083,7 @@ void add_sequence(int type)
if(seq->len>0) strip->stripdata= MEM_callocN(seq->len*sizeof(StripElem), "stripelem");
BIF_undo_push("Add scene strip Sequencer");
transform_seq('g');
transform_seq('g', 0);
}
}
MEM_freeN(str);
@@ -1108,7 +1106,7 @@ void add_sequence(int type)
activate_fileselect(FILE_SPECIAL, "Select Plugin", U.plugseqdir, load_plugin_seq);
}
else {
if( add_seq_effect(event) ) transform_seq('g');
if( add_seq_effect(event) ) transform_seq('g', 0);
}
break;
@@ -1419,7 +1417,7 @@ void add_duplicate_seq(void)
addlisttolist(ed->seqbasep, &new);
BIF_undo_push("Add duplicate Sequencer");
transform_seq('g');
transform_seq('g', 0);
}
int insert_gap(int gap, int cfra)
@@ -1731,7 +1729,7 @@ typedef struct TransSeq {
int startofs, endofs;
} TransSeq;
void transform_seq(int mode)
void transform_seq(int mode, int context)
{
Sequence *seq;
Editing *ed;

View File

@@ -341,7 +341,7 @@ void tface_do_clip(void)
}
void transform_tface_uv(int mode)
void transform_tface_uv(int mode, int context) // 2 args, for callback
{
MFace *mface;
TFace *tface;

View File

@@ -707,8 +707,8 @@ int gesture(void)
if(i) {
if(curarea->spacetype==SPACE_IPO) transform_ipo(i);
else if(curarea->spacetype==SPACE_IMAGE) transform_tface_uv(i);
else if(curarea->spacetype==SPACE_OOPS) transform_oops('g');
else if(curarea->spacetype==SPACE_IMAGE) transform_tface_uv(i, 0);
else if(curarea->spacetype==SPACE_OOPS) transform_oops('g', 0);
else {
if(i=='g') Transform(TFM_TRANSLATION, CTX_NONE);
else if(i=='r') Transform(TFM_ROTATION, CTX_NONE);

View File

@@ -837,13 +837,13 @@ static void do_image_uvs_transformmenu(void *arg, int event)
{
switch(event) {
case 0: /* Grab */
transform_tface_uv('g');
transform_tface_uv('g', 0);
break;
case 1: /* Rotate */
transform_tface_uv('r');
transform_tface_uv('r', 0);
break;
case 2: /* Scale */
transform_tface_uv('s');
transform_tface_uv('s', 0);
break;
}
}

View File

@@ -255,10 +255,10 @@ static void do_oops_blockmenu(void *arg, int event)
switch(event)
{
case 0: /* grab/move */
transform_oops('g');
transform_oops('g', 0);
break;
case 1: /* scale */
transform_oops('s');
transform_oops('s', 0);
break;
}
}

View File

@@ -321,7 +321,7 @@ static void do_seq_editmenu(void *arg, int event)
exit_meta();
break;
case 11: /* grab/move */
transform_seq('g');
transform_seq('g', 0);
break;
case 12: /* Snap to Current Frame */
seq_snap(event);

View File

@@ -66,6 +66,7 @@
#include "BKE_mesh.h"
#include "BKE_image.h"
#include "BLI_arithb.h"
#include "BLI_blenlib.h"
#include "BSE_edit.h"
@@ -1134,25 +1135,32 @@ static uiBlock *view3d_edit_snapmenu(void *arg_unused)
void do_view3d_transform_moveaxismenu(void *arg, int event)
{
float mat[3][3];
Mat3One(mat);
switch(event)
{
case 0: /* X Global */
transform('g'*'X');
BIF_setSingleAxisConstraint(mat[0], " X");
Transform(TFM_TRANSLATION, CTX_NONE);
break;
case 1: /* Y Global */
transform('g'*'Y');
BIF_setSingleAxisConstraint(mat[0], " Y");
Transform(TFM_TRANSLATION, CTX_NONE);
break;
case 2: /* Z Global */
transform('g'*'Z');
BIF_setSingleAxisConstraint(mat[0], " Z");
Transform(TFM_TRANSLATION, CTX_NONE);
break;
case 3: /* X Local */
transform('g'*'x');
// transform('g'*'x');
break;
case 4: /* Y Local */
transform('g'*'y');
// transform('g'*'y');
break;
case 5: /* Z Local */
transform('g'*'z');
// transform('g'*'z');
break;
}
allqueue(REDRAWVIEW3D, 0);
@@ -1184,25 +1192,32 @@ static uiBlock *view3d_transform_moveaxismenu(void *arg_unused)
void do_view3d_transform_rotateaxismenu(void *arg, int event)
{
float mat[3][3];
Mat3One(mat);
switch(event)
{
case 0: /* X Global */
transform('r'*'X');
BIF_setSingleAxisConstraint(mat[0], " X");
Transform(TFM_ROTATION, CTX_NONE);
break;
case 1: /* Y Global */
transform('r'*'Y');
BIF_setSingleAxisConstraint(mat[1], " Y");
Transform(TFM_ROTATION, CTX_NONE);
break;
case 2: /* Z Global */
transform('r'*'Z');
BIF_setSingleAxisConstraint(mat[2], " Z");
Transform(TFM_ROTATION, CTX_NONE);
break;
case 3: /* X Local */
transform('r'*'x');
// transform('r'*'x');
break;
case 4: /* Y Local */
transform('r'*'y');
// transform('r'*'y');
break;
case 5: /* Z Local */
transform('r'*'z');
// transform('r'*'z');
break;
}
allqueue(REDRAWVIEW3D, 0);
@@ -1234,25 +1249,32 @@ static uiBlock *view3d_transform_rotateaxismenu(void *arg_unused)
void do_view3d_transform_scaleaxismenu(void *arg, int event)
{
float mat[3][3];
Mat3One(mat);
switch(event)
{
case 0: /* X Global */
transform('s'*'X');
BIF_setSingleAxisConstraint(mat[0], " X");
Transform(TFM_RESIZE, CTX_NONE);
break;
case 1: /* Y Global */
transform('s'*'Y');
BIF_setSingleAxisConstraint(mat[1], " Y");
Transform(TFM_RESIZE, CTX_NONE);
break;
case 2: /* Z Global */
transform('s'*'Z');
BIF_setSingleAxisConstraint(mat[2], " Z");
Transform(TFM_RESIZE, CTX_NONE);
break;
case 3: /* X Local */
transform('s'*'x');
break;
case 4: /* Y Local */
transform('s'*'y');
break;
case 5: /* Z Local */
transform('s'*'z');
break;
}
allqueue(REDRAWVIEW3D, 0);
@@ -1933,7 +1955,7 @@ void do_view3d_edit_mesh_edgesmenu(void *arg, int event)
editmesh_mark_seam(1);
break;
case 9: /* Cease SubSurf */
transform('e');
Transform(TFM_CREASE, CTX_EDGE);
break;
case 10: /* Rotate Edge */
edge_rotate_selected(2);
@@ -2213,13 +2235,13 @@ static void do_view3d_edit_meshmenu(void *arg, int event)
delete_context_selected();
break;
case 9: /* Shrink/Fatten Along Normals */
transform('N');
Transform(TFM_SHRINKFATTEN, CTX_NONE);
break;
case 10: /* Shear */
transform('S');
Transform(TFM_SHEAR, CTX_NONE);
break;
case 11: /* Warp */
transform('w');
Transform(TFM_WARP, CTX_NONE);
break;
case 12: /* proportional edit (toggle) */
if(G.f & G_PROPORTIONAL) G.f &= ~G_PROPORTIONAL;
@@ -2310,7 +2332,7 @@ static void do_view3d_edit_curve_controlpointsmenu(void *arg, int event)
{
switch(event) {
case 0: /* tilt */
transform('t');
Transform(TFM_TILT, CTX_NONE);
break;
case 1: /* clear tilt */
clear_tilt();
@@ -2469,10 +2491,10 @@ static void do_view3d_edit_curvemenu(void *arg, int event)
else G.f |= G_PROPORTIONAL;
break;
case 13: /* Shear */
transform('S');
Transform(TFM_SHEAR, CTX_NONE);
break;
case 14: /* Warp */
transform('w');
Transform(TFM_WARP, CTX_NONE);
break;
}
allqueue(REDRAWVIEW3D, 0);
@@ -2590,10 +2612,10 @@ static void do_view3d_edit_metaballmenu(void *arg, int event)
delete_context_selected();
break;
case 5: /* Shear */
transform('S');
Transform(TFM_SHEAR, CTX_NONE);
break;
case 6: /* Warp */
transform('w');
Transform(TFM_WARP, CTX_NONE);
break;
case 7: /* Transform Properties */
add_blockhandler(curarea, VIEW3D_HANDLER_OBJECT, 0);
@@ -2797,10 +2819,10 @@ static void do_view3d_edit_latticemenu(void *arg, int event)
common_insertkey();
break;
case 3: /* Shear */
transform('S');
Transform(TFM_SHEAR, CTX_NONE);
break;
case 4: /* Warp */
transform('w');
Transform(TFM_WARP, CTX_NONE);
break;
case 5: /* proportional edit (toggle) */
if(G.f & G_PROPORTIONAL) G.f &= ~G_PROPORTIONAL;
@@ -2875,10 +2897,10 @@ static void do_view3d_edit_armaturemenu(void *arg, int event)
delete_context_selected();
break;
case 6: /* Shear */
transform('S');
Transform(TFM_SHEAR, CTX_NONE);
break;
case 7: /* Warp */
transform('w');
Transform(TFM_WARP, CTX_NONE);
break;
}
allqueue(REDRAWVIEW3D, 0);

View File

@@ -3384,7 +3384,7 @@ static void winqreadseqspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
case GKEY:
if(sseq->mainb) break;
if((G.qual==0))
transform_seq('g');
transform_seq('g', 0);
break;
case MKEY:
if(G.qual==LR_ALTKEY)
@@ -3793,7 +3793,7 @@ static void winqreadimagespace(ScrArea *sa, void *spacedata, BWinEvent *evt)
break;
case GKEY:
if((G.qual==0))
transform_tface_uv('g');
transform_tface_uv('g', 0);
break;
case HKEY:
if(G.qual==LR_ALTKEY)
@@ -3841,11 +3841,11 @@ static void winqreadimagespace(ScrArea *sa, void *spacedata, BWinEvent *evt)
break;
case RKEY:
if((G.qual==0))
transform_tface_uv('r');
transform_tface_uv('r', 0);
break;
case SKEY:
if((G.qual==0))
transform_tface_uv('s');
transform_tface_uv('s', 0);
break;
case VKEY:
if((G.qual==0))
@@ -4048,7 +4048,7 @@ static void winqreadoopsspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
break;
case GKEY:
if((G.qual==0))
transform_oops('g');
transform_oops('g', 0);
break;
case LKEY:
if((G.qual==LR_SHIFTKEY))
@@ -4066,7 +4066,7 @@ static void winqreadoopsspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
shuffle_oops();
}
} else if((G.qual==0)) {
transform_oops('s');
transform_oops('s', 0);
}
break;
case PKEY:

View File

@@ -2006,13 +2006,13 @@ static void tb_do_transform(void *arg, int event)
snapmenu();
break;
case 5: /* Shrink/Fatten Along Normals */
transform('N');
Transform(TFM_SHRINKFATTEN, CTX_NONE);
break;
case 6: /* Shear */
Transform(TFM_SHEAR, CTX_NONE);
break;
case 7: /* Warp */
transform('w');
Transform(TFM_WARP, CTX_NONE);
break;
case 8: /* proportional edit (toggle) */
if(G.f & G_PROPORTIONAL) G.f &= ~G_PROPORTIONAL;

View File

@@ -80,6 +80,7 @@
#include "BIF_editmesh.h"
#include "BIF_screen.h"
#include "BIF_space.h"
#include "BIF_toets.h"
#include "BIF_toolbox.h"
#include "BKE_action.h"
@@ -128,6 +129,66 @@ int LastMode = TFM_TRANSLATION;
/* ************************** TRANSFORMATIONS **************************** */
static void view_editmove(unsigned short event)
{
/* Regular: Zoom in */
/* Shift: Scroll up */
/* Ctrl: Scroll right */
/* Alt-Shift: Rotate up */
/* Alt-Ctrl: Rotate right */
switch(event) {
case WHEELUPMOUSE:
if( G.qual & LR_SHIFTKEY ) {
if( G.qual & LR_ALTKEY ) {
G.qual &= ~LR_SHIFTKEY;
persptoetsen(PAD2);
G.qual |= LR_SHIFTKEY;
} else {
persptoetsen(PAD2);
}
} else if( G.qual & LR_CTRLKEY ) {
if( G.qual & LR_ALTKEY ) {
G.qual &= ~LR_CTRLKEY;
persptoetsen(PAD4);
G.qual |= LR_CTRLKEY;
} else {
persptoetsen(PAD4);
}
} else if(U.uiflag & USER_WHEELZOOMDIR)
persptoetsen(PADMINUS);
else
persptoetsen(PADPLUSKEY);
break;
case WHEELDOWNMOUSE:
if( G.qual & LR_SHIFTKEY ) {
if( G.qual & LR_ALTKEY ) {
G.qual &= ~LR_SHIFTKEY;
persptoetsen(PAD8);
G.qual |= LR_SHIFTKEY;
} else {
persptoetsen(PAD8);
}
} else if( G.qual & LR_CTRLKEY ) {
if( G.qual & LR_ALTKEY ) {
G.qual &= ~LR_CTRLKEY;
persptoetsen(PAD6);
G.qual |= LR_CTRLKEY;
} else {
persptoetsen(PAD6);
}
} else if(U.uiflag & USER_WHEELZOOMDIR)
persptoetsen(PADPLUSKEY);
else
persptoetsen(PADMINUS);
break;
}
}
void Transform(int mode, int context)
{
int ret_val = 0;
@@ -426,16 +487,18 @@ void Transform(int mode, int context)
if(Trans.flag & T_PROP_EDIT) {
Trans.propsize*= 1.1f;
calculatePropRatio(&Trans);
Trans.redraw= 1;
}
else view_editmove(event);
Trans.redraw= 1;
break;
case WHEELUPMOUSE:
case PADMINUS:
if(Trans.flag & T_PROP_EDIT) {
Trans.propsize*= 0.90909090f;
calculatePropRatio(&Trans);
Trans.redraw= 1;
}
else view_editmove(event);
Trans.redraw= 1;
break;
}
Trans.redraw |= handleNumInput(&(Trans.num), event);