Graphviz 12.0.1~dev.20240716.0800
Loading...
Searching...
No Matches
toolboxcallbacks.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 "toolboxcallbacks.h"
12#include "viewport.h"
13
14#include "gltemplate.h"
15#include <glcomp/glutils.h>
16#include "glmotion.h"
17#include <stdint.h>
18
19void btnToolZoomOut_clicked(GtkWidget * widget, gpointer user_data)
20{
21 (void)widget;
22 (void)user_data;
23
25}
26
27void btnToolZoomFit_clicked(GtkWidget * widget, gpointer user_data)
28{
29 (void)widget;
30 (void)user_data;
31
32 float z = view->active_camera != SIZE_MAX
34 : -view->zoom;
35
36 float GDX = view->bdxRight / z - view->bdxLeft / z;
37 float SDX = view->clipX2 - view->clipX1;
38 float GDY = view->bdyTop / z - view->bdyBottom / z;
39 float SDY = view->clipY2 - view->clipY1;
40
41 if (SDX / GDX <= SDY / GDY) {
42 if (view->active_camera != SIZE_MAX) {
43 view->cameras[view->active_camera]->r /= SDX / GDX;
44 } else {
45 view->zoom /= SDX / GDX;
46 }
47 } else {
48 if (view->active_camera != SIZE_MAX) {
49 view->cameras[view->active_camera]->r /= SDY / GDY;
50 } else {
51 view->zoom /= SDY / GDY;
52 }
53
54 }
56}
57
58void btnToolFit_clicked(GtkWidget * widget, gpointer user_data)
59{
60 (void)widget;
61 (void)user_data;
62
63 float scx, scy, gcx, gcy, z;
64
66 ? (z = view->cameras[view->active_camera]->r) : (z =
67 view->zoom * -1);
68
69 gcx = view->bdxLeft / z + (view->bdxRight / z - view->bdxLeft / z) / 2.0f;
70 scx = view->clipX1 + (view->clipX2 - view->clipX1) / 2.0f;
71 gcy = view->bdyBottom / z + (view->bdyTop / z - view->bdyBottom / z) / 2.0f;
72 scy = view->clipY1 + (view->clipY2 - view->clipY1) / 2.0f;
73
74 if (view->active_camera != SIZE_MAX) {
75 view->cameras[view->active_camera]->targetx += (gcx - scx);
76 view->cameras[view->active_camera]->targety += (gcx - scy);
77 } else {
78 view->panx += gcx - scx;
79 view->pany += gcy - scy;
80 }
82
83 glexpose();
84}
85
86void on_btnActivateGraph_clicked(GtkWidget * widget, gpointer user_data)
87{
88 (void)widget;
89 (void)user_data;
90
91 int graphId;
92 graphId = gtk_combo_box_get_active(view->graphComboBox);
93 /* fprintf (stderr, "switch to graph %d\n",graphId); */
94 switch_graph(graphId);
95}
void glmotion_zoom_inc(int zoomin)
Definition glmotion.c:44
#define SIZE_MAX
Definition gmlscan.c:347
node NULL
Definition grammar.y:149
static int z
ViewInfo * view
Definition viewport.c:38
void glexpose(void)
Definition viewport.c:543
float bdxLeft
Definition smyrnadefs.h:307
topview * Topview
Definition smyrnadefs.h:334
float pany
Definition smyrnadefs.h:273
float clipX2
Definition smyrnadefs.h:278
float bdyTop
Definition smyrnadefs.h:307
GtkComboBox * graphComboBox
Definition smyrnadefs.h:364
float panx
Definition smyrnadefs.h:272
viewport_camera ** cameras
Definition smyrnadefs.h:326
float bdxRight
Definition smyrnadefs.h:308
float bdyBottom
Definition smyrnadefs.h:308
float zoom
Definition smyrnadefs.h:275
float clipY1
Definition smyrnadefs.h:278
float clipX1
Definition smyrnadefs.h:278
float clipY2
Definition smyrnadefs.h:278
size_t active_camera
<number of cameras
Definition smyrnadefs.h:328
float fitin_zoom
Definition smyrnadefs.h:253
void on_btnActivateGraph_clicked(GtkWidget *widget, gpointer user_data)
void btnToolZoomOut_clicked(GtkWidget *widget, gpointer user_data)
void btnToolFit_clicked(GtkWidget *widget, gpointer user_data)
void btnToolZoomFit_clicked(GtkWidget *widget, gpointer user_data)
void switch_graph(int graphId)
Definition viewport.c:452