Graphviz
13.1.2~dev.20250808.0820
Loading...
Searching...
No Matches
glmotion.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 "
glmotion.h
"
12
#include <gtk/gtk.h>
13
#include <gdk/gdkkeysyms.h>
14
#include <gtk/gtkgl.h>
15
#include <gdk/gdkcursor.h>
16
#include "
draw.h
"
17
#include <
glcomp/glutils.h
>
18
#include "
hotkeymap.h
"
19
#include <stdint.h>
20
21
/*real zoom in out is done here, all other functions send this one what they desire, it is not guranteed,*/
22
static
void
graph_zoom
(
double
real_zoom) {
23
double
old_zoom;
24
25
if
(
view
->
active_camera
==
SIZE_MAX
)
26
old_zoom =
view
->
zoom
;
27
else
28
old_zoom =
view
->
cameras
[
view
->
active_camera
]->
r
;
29
30
if
(real_zoom < view->Topview->fitin_zoom *
MAX_ZOOM
)
31
real_zoom =
view
->
Topview
->
fitin_zoom
*
MAX_ZOOM
;
32
if
(real_zoom >
view
->
Topview
->
fitin_zoom
*
MIN_ZOOM
)
33
real_zoom =
view
->
Topview
->
fitin_zoom
*
MIN_ZOOM
;
34
if
(
view
->
active_camera
==
SIZE_MAX
)
35
view
->
zoom
= real_zoom;
36
else
37
view
->
cameras
[
view
->
active_camera
]->
r
= real_zoom * -1;
38
/*adjust pan values */
39
view
->
panx
= old_zoom *
view
->
panx
/ real_zoom;
40
view
->
pany
= old_zoom *
view
->
pany
/ real_zoom;
41
}
42
43
void
glmotion_zoom_inc
(
int
zoomin)
44
{
45
if
(zoomin)
/*zooming in , zoom value should be decreased */
46
graph_zoom
(
view
->
zoom
-
view
->
zoom
* 0.25);
47
else
48
graph_zoom
(
view
->
zoom
+
view
->
zoom
* 0.25);
/*zoom out */
49
glexpose
();
50
51
}
52
53
void
glmotion_zoom
(
void
)
54
{
55
double
real_zoom;
56
if
(
view
->
active_camera
==
SIZE_MAX
) {
57
real_zoom =
58
view
->
zoom
+
view
->
mouse
.
dragX
/ 10 * (
view
->
zoom
* -1 / 20);
59
}
else
{
60
real_zoom =
61
(
view
->
cameras
[
view
->
active_camera
]->
r
+
62
view
->
mouse
.
dragX
/ 10 * (
view
->
cameras
[
view
->
active_camera
]->
r
/
63
20)) * -1;
64
}
65
graph_zoom
(real_zoom);
66
67
}
68
69
void
glmotion_pan
(
ViewInfo
* v)
70
{
71
if
(v->
active_camera
==
SIZE_MAX
) {
72
const
double
gldx =
GetOGLDistance
(v->
mouse
.
dragX
) / v->
zoom
* -1;
73
const
double
gldy =
GetOGLDistance
(v->
mouse
.
dragY
) / v->
zoom
* -1;
74
v->
panx
= v->
panx
- gldx;
75
v->
pany
= v->
pany
+ gldy;
76
}
else
{
77
const
double
gldx =
GetOGLDistance
(v->
mouse
.
dragX
) / v->
cameras
[v->
active_camera
]->
r
;
78
const
double
gldy =
GetOGLDistance
(v->
mouse
.
dragY
) / v->
cameras
[v->
active_camera
]->
r
;
79
v->
cameras
[v->
active_camera
]->
targetx
-= gldx;
80
v->
cameras
[v->
active_camera
]->
targety
+= gldy;
81
}
82
}
draw.h
glmotion_pan
void glmotion_pan(ViewInfo *v)
Definition
glmotion.c:69
glmotion_zoom
void glmotion_zoom(void)
Definition
glmotion.c:53
graph_zoom
static void graph_zoom(double real_zoom)
Definition
glmotion.c:22
glmotion_zoom_inc
void glmotion_zoom_inc(int zoomin)
Definition
glmotion.c:43
glmotion.h
GetOGLDistance
double GetOGLDistance(double l)
Definition
glutils.c:47
glutils.h
SIZE_MAX
#define SIZE_MAX
Definition
gmlscan.c:347
hotkeymap.h
view
ViewInfo * view
Definition
viewport.c:37
MAX_ZOOM
#define MAX_ZOOM
Definition
smyrnadefs.h:51
MIN_ZOOM
#define MIN_ZOOM
Definition
smyrnadefs.h:52
glexpose
void glexpose(void)
Definition
viewport.c:520
_ViewInfo
Definition
smyrnadefs.h:247
_ViewInfo::Topview
topview * Topview
Definition
smyrnadefs.h:307
_ViewInfo::zoom
double zoom
Definition
smyrnadefs.h:252
_ViewInfo::cameras
viewport_camera ** cameras
Definition
smyrnadefs.h:299
_ViewInfo::panx
double panx
Definition
smyrnadefs.h:250
_ViewInfo::pany
double pany
Definition
smyrnadefs.h:251
_ViewInfo::mouse
glCompMouse mouse
Definition
smyrnadefs.h:297
_ViewInfo::active_camera
size_t active_camera
<number of cameras
Definition
smyrnadefs.h:301
glCompMouse::dragY
float dragY
Definition
glcompdefs.h:229
glCompMouse::dragX
float dragX
Definition
glcompdefs.h:229
topview::fitin_zoom
double fitin_zoom
Definition
smyrnadefs.h:231
viewport_camera::targetx
double targetx
Definition
smyrnadefs.h:132
viewport_camera::targety
double targety
Definition
smyrnadefs.h:133
viewport_camera::r
double r
Definition
smyrnadefs.h:135
cmd
smyrna
glmotion.c
Generated by
1.9.8