Graphviz 12.0.1~dev.20240716.0800
Loading...
Searching...
No Matches
appmouse.c
Go to the documentation of this file.
1/*************************************************************************
2 * Copyright (c) 2011 AT&T Intellectual Property
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Eclipse Public License v1.0
5 * which accompanies this distribution, and is available at
6 * https://www.eclipse.org/legal/epl-v10.html
7 *
8 * Contributors: Details at https://graphviz.org
9 *************************************************************************/
10
11#include "appmouse.h"
12#include "topfisheyeview.h"
13#include "arcball.h"
14#include "glmotion.h"
15#include "hotkeymap.h"
16
17#include "selectionfuncs.h"
18#include <stdint.h>
19#include "topviewfuncs.h"
20
21static int lastAction;
22
23static void apply_actions(ViewInfo* v,int x,int y)
24{
25 int a;
26 gdouble seconds;
27 a=get_mode(v);
28 if (a == MM_PAN && view->guiMode == GUI_FULLSCREEN &&
30 a=MM_ROTATE;
31 switch (a) {
32 case MM_ROTATE :
33 seconds = g_timer_elapsed(view->timer3, NULL);
34 if (seconds > 0.1) {
35 g_timer_stop(view->timer3);
36 view->arcball->MousePt.s.X = (float)x;
37 view->arcball->MousePt.s.Y = (float)y;
38 if (!view->arcball->isDragging) {
41 }
42 else
44 g_timer_start(view->timer3);
45 }
46 return;
47 case MM_PAN :
48 glmotion_pan(v);
49 break;
50 case MM_MOVE :
51 /* move_TVnodes(); */
52 break;
54 if (!view->mouse.down) {
56 }
57 break;
60 break;
61 case MM_SINGLE_SELECT :
63 break;
64 case MM_FISHEYE_PICK :
65 if (view->activeGraph >= 0) {
68
69 }
70 break;
71 }
72 lastAction=a;
73}
74
75static void appmouse_down(ViewInfo* v,int x,int y)
76{
77 view->mouse.dragX = 0;
78 view->mouse.dragY = 0;
79 v->mouse.down=1;
80 v->mouse.pos.x=x;
81 v->mouse.pos.y=y;
82
84 to3D( x,y, &v->mouse.GLpos.x,&v->mouse.GLpos.y,&v->mouse.GLpos.z);
85}
86static void appmouse_up(ViewInfo* v,int x,int y)
87{
88 v->mouse.down=0;
90 apply_actions(v,x,y);
91 view->mouse.dragX = 0;
92 view->mouse.dragY = 0;
94
95
96}
97static void appmouse_drag(ViewInfo* v,int x,int y)
98{
99 v->mouse.pos.x=x;
100 v->mouse.pos.y=y;
101 to3D( x,y, &v->mouse.GLpos.x,&v->mouse.GLpos.y,&v->mouse.GLpos.z);
102 apply_actions(v,x,y);
103}
104
106{
108 appmouse_down(v,x,y);
109
110
111}
113{
114 appmouse_up(v,x,y);
115}
116void appmouse_left_drag(ViewInfo* v,int x,int y)
117{
118 appmouse_drag(v,x,y);
119
120
121
122}
124{
126 appmouse_down(v,x,y);
127
128
129}
131{
132 appmouse_up(v,x,y);
133
134}
135void appmouse_right_drag(ViewInfo* v,int x,int y)
136{
137
138 appmouse_drag(v,x,y);
139
140}
141
142
144{
146 appmouse_down(v,x,y);
147
148
149}
151{
152 appmouse_up(v,x,y);
153
154}
155void appmouse_middle_drag(ViewInfo* v,int x,int y)
156{
157
158 appmouse_drag(v,x,y);
159
160}
161void appmouse_move(ViewInfo* v,int x,int y)
162{
163 to3D( x,y, &v->mouse.GLpos.x,&v->mouse.GLpos.y,&v->mouse.GLpos.z);
164}
166{
168 {
170 glexpose();
171 }
172 v->keymap.down=0;
173 v->keymap.keyVal=0;
174}
176{
177 v->keymap.down=1;
178 v->keymap.keyVal=key;
179}
180
181
static void appmouse_up(ViewInfo *v, int x, int y)
Definition appmouse.c:86
void appmouse_left_click_up(ViewInfo *v, int x, int y)
Definition appmouse.c:112
static void appmouse_drag(ViewInfo *v, int x, int y)
Definition appmouse.c:97
void appmouse_right_drag(ViewInfo *v, int x, int y)
Definition appmouse.c:135
void appmouse_middle_click_up(ViewInfo *v, int x, int y)
Definition appmouse.c:150
void appmouse_right_click_up(ViewInfo *v, int x, int y)
Definition appmouse.c:130
static int lastAction
Definition appmouse.c:21
void appmouse_key_release(ViewInfo *v)
Definition appmouse.c:165
static void appmouse_down(ViewInfo *v, int x, int y)
Definition appmouse.c:75
void appmouse_move(ViewInfo *v, int x, int y)
Definition appmouse.c:161
void appmouse_key_press(ViewInfo *v, int key)
Definition appmouse.c:175
void appmouse_middle_drag(ViewInfo *v, int x, int y)
Definition appmouse.c:155
void appmouse_middle_click_down(ViewInfo *v, int x, int y)
Definition appmouse.c:143
static void apply_actions(ViewInfo *v, int x, int y)
Definition appmouse.c:23
void appmouse_left_click_down(ViewInfo *v, int x, int y)
Definition appmouse.c:105
void appmouse_right_click_down(ViewInfo *v, int x, int y)
Definition appmouse.c:123
void appmouse_left_drag(ViewInfo *v, int x, int y)
Definition appmouse.c:116
void arcmouseClick(void)
Definition arcball.c:142
void arcmouseDrag(void)
Definition arcball.c:150
disc key
Definition exparse.y:214
@ glMouseRightButton
Definition glcompdefs.h:89
@ glMouseMiddleButton
Definition glcompdefs.h:90
@ glMouseLeftButton
Definition glcompdefs.h:89
void glmotion_pan(ViewInfo *v)
Definition glmotion.c:70
void to3D(int x, int y, float *X, float *Y, float *Z)
Definition glutils.c:100
#define SIZE_MAX
Definition gmlscan.c:347
node NULL
Definition grammar.y:149
int get_mode(ViewInfo *v)
Definition hotkeymap.c:166
void pick_objects_rect(Agraph_t *g)
void clear_selpoly(glCompPoly *sp)
void pick_object_xyz(Agraph_t *g, topview *t, float x, float y, float z)
void add_selpoly(Agraph_t *g, glCompPoly *selPoly, glCompPoint pt)
#define GUI_FULLSCREEN
Definition smyrnadefs.h:228
ViewInfo * view
Definition viewport.c:38
#define MM_SINGLE_SELECT
Definition smyrnadefs.h:44
#define MM_ROTATE
Definition smyrnadefs.h:43
#define MM_FISHEYE_PICK
Definition smyrnadefs.h:50
#define MM_RECTANGULAR_SELECT
Definition smyrnadefs.h:45
#define MM_POLYGON_SELECT
Definition smyrnadefs.h:51
#define MM_MOVE
Definition smyrnadefs.h:47
void glexpose(void)
Definition viewport.c:543
#define MM_PAN
Definition smyrnadefs.h:41
Point2fT MousePt
Definition arcball.h:551
int isDragging
Definition arcball.h:554
ArcBall_t * arcball
Definition smyrnadefs.h:365
topview * Topview
Definition smyrnadefs.h:334
Agraph_t ** g
Definition smyrnadefs.h:313
keymap_t keymap
Definition smyrnadefs.h:366
int activeGraph
Definition smyrnadefs.h:317
glCompMouse mouse
Definition smyrnadefs.h:321
GTimer * timer3
Definition smyrnadefs.h:340
size_t active_camera
<number of cameras
Definition smyrnadefs.h:328
glCompPoly selPoly
Definition smyrnadefs.h:231
glCompPoint GLfinalPos
Definition glcompdefs.h:282
glMouseButtonType t
Definition glcompdefs.h:278
glCompPoint GLpos
Definition glcompdefs.h:280
glCompPoint GLinitPos
Definition glcompdefs.h:281
glCompPoint pos
Definition glcompdefs.h:279
int keyVal
Definition smyrnadefs.h:65
int active
Definition smyrnadefs.h:239
struct topview::@55 fisheyeParams
selection sel
Definition smyrnadefs.h:259
void changetopfishfocus(topview *t, float *x, float *y, int num_foci)