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