]> granicus.if.org Git - graphviz/commitdiff
z axis is added to rotate
authorarif <devnull@localhost>
Thu, 17 Apr 2008 21:01:39 +0000 (21:01 +0000)
committerarif <devnull@localhost>
Thu, 17 Apr 2008 21:01:39 +0000 (21:01 +0000)
a new image file (rotate.raw) has been al so added to share/icons

cmd/smyrna/glmotion.c
cmd/smyrna/gltemplate.c
cmd/smyrna/smyrnadefs.h
cmd/smyrna/viewportcamera.c

index 46f381ed5cdf25a0a3c87086d74d2996654ce805..cb649027716221a0879e3ceb1cf60d76ad58987a 100644 (file)
@@ -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;
 }
index ad170e28c3018df3c299e198fdfc9a2596ce307b..d1fbbaa88966541e7940ce29822b45f200eac5c8 100755 (executable)
@@ -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 */
index 09c7f363de5712f5f272b12aedba150f4c6be98d..fddf4d59e4b42f83d1ff78826c7aba4225e1fd69 100644 (file)
@@ -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;
 
index 4d214b87b9357ba3c4d42be5375e0f45a32e1d04..fc5dea9deffc8eb02efc5e4b39cd1cddda45e0a1 100644 (file)
@@ -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);