From: arif Date: Thu, 17 Apr 2008 21:01:39 +0000 (+0000) Subject: z axis is added to rotate X-Git-Tag: LAST_LIBGRAPH~32^2~4279 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e537678901eaed97c279ccdb218b2cb52154863b;p=graphviz z axis is added to rotate a new image file (rotate.raw) has been al so added to share/icons --- diff --git a/cmd/smyrna/glmotion.c b/cmd/smyrna/glmotion.c index 46f381ed5..cb6490277 100644 --- a/cmd/smyrna/glmotion.c +++ b/cmd/smyrna/glmotion.c @@ -17,10 +17,10 @@ int glmotion_main(ViewInfo * v,GdkEventMotion * event,GtkWidget * widget) if ((event->state & GDK_BUTTON1_MASK)&& (v->mouse.mouse_mode == MM_PAN)) glmotion_pan(v); - return 1; /*rotating, only in 3d v */ - if ((v->active_camera >=0)&&(v->mouse.button==rightmousebutton)) + if ((v->active_camera >=0)&&(v->mouse.mouse_mode == MM_ROTATE)) glmotion_rotate(v); + return 1; /*zooming */ if ((event->state & GDK_BUTTON1_MASK)&& (v->mouse.mouse_mode == MM_ZOOM)) @@ -128,7 +128,23 @@ int glmotion_adjust_pan(ViewInfo* v,float panx,float pany) } int glmotion_rotate(ViewInfo * v) { - v->cameras[v->active_camera]->angley-=v->mouse.dy/5; - v->cameras[v->active_camera]->anglex-=v->mouse.dx/5; + if(v->mouse.rotate_axis==MOUSE_ROTATE_XY) + { + v->cameras[v->active_camera]->angley-=v->mouse.dy/5; + v->cameras[v->active_camera]->anglex-=v->mouse.dx/5; + } + if(v->mouse.rotate_axis==MOUSE_ROTATE_X) + { + v->cameras[v->active_camera]->anglex-=v->mouse.dx/5; + } + if(v->mouse.rotate_axis==MOUSE_ROTATE_Y) + { + v->cameras[v->active_camera]->angley-=v->mouse.dy/5; + } + if(v->mouse.rotate_axis==MOUSE_ROTATE_Z) + { + v->cameras[v->active_camera]->anglez-=v->mouse.dx/5; + } + return 1; } diff --git a/cmd/smyrna/gltemplate.c b/cmd/smyrna/gltemplate.c index ad170e28c..d1fbbaa88 100755 --- a/cmd/smyrna/gltemplate.c +++ b/cmd/smyrna/gltemplate.c @@ -370,10 +370,9 @@ static gboolean motion_notify_event(GtkWidget * widget, redraw = TRUE; } /*rotating, only in 3d view */ - if ((view->active_camera >=0)&&(view->mouse.button==rightmousebutton) ) + if ((view->active_camera >=0)&&(view->mouse.mouse_mode==MM_ROTATE)&& (event->state & GDK_BUTTON1_MASK) ) { - view->cameras[view->active_camera]->angley-=dy/5; - view->cameras[view->active_camera]->anglex-=dx/5; + if(glmotion_main(view,event,widget)) redraw = TRUE; } /*zooming */ diff --git a/cmd/smyrna/smyrnadefs.h b/cmd/smyrna/smyrnadefs.h index 09c7f363d..fddf4d59e 100644 --- a/cmd/smyrna/smyrnadefs.h +++ b/cmd/smyrna/smyrnadefs.h @@ -77,6 +77,7 @@ typedef enum { nodshapedot,nodeshapecircle} node_shape; typedef enum { leftmousebutton,rightmousebutton,thirdmousebutton} clicked_mouse_button; +typedef enum { MOUSE_ROTATE_X,MOUSE_ROTATE_Y,MOUSE_ROTATE_XY,MOUSE_ROTATE_Z} mouse_rotate_axis; typedef struct { @@ -148,6 +149,7 @@ typedef struct _viewport_camera{ float anglex; float angley; + float anglez; float camera_vectorx; @@ -179,7 +181,8 @@ enum { COL_FILENAME, NUM_COLS }; -//atributes + + typedef struct _mouse_attr { int mouse_down; int mouse_mode; @@ -189,6 +192,7 @@ typedef struct _mouse_attr { float begin_y; float dx; float dy; + mouse_rotate_axis rotate_axis; clicked_mouse_button button; } mouse_attr; diff --git a/cmd/smyrna/viewportcamera.c b/cmd/smyrna/viewportcamera.c index 4d214b87b..fc5dea9de 100644 --- a/cmd/smyrna/viewportcamera.c +++ b/cmd/smyrna/viewportcamera.c @@ -116,6 +116,7 @@ void menu_click_add_camera(void *p) c->anglexyz = 0; c->anglex = 0; c->angley = 0; + c->anglez = 0; c->r = view->zoom * -1; // set_camera_x_y(c);