[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
gEDA-cvs: pcb.git: branch: master updated (25af27394efe1259db8e049bac1d6fc380e0c3ee)
The branch, master has been updated
via 25af27394efe1259db8e049bac1d6fc380e0c3ee (commit)
via e1c619732e14cd7e90025d248c44f8c7e388313e (commit)
from 125e1d58aa82a52777fab7153426ab66c6c9fda7 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
=========
Summary
=========
src/hid/gtk/gtkhid-gl.c | 170 +++++++++++++++++++-------------------
src/hid/gtk/gtkhid-main.c | 81 +++++++++----------
src/hid/gtk/gui-output-events.c | 32 ++++----
src/hid/gtk/gui-top-window.c | 2 +-
src/hid/gtk/gui.h | 66 ++++++++-------
5 files changed, 177 insertions(+), 174 deletions(-)
=================
Commit Messages
=================
commit 25af27394efe1259db8e049bac1d6fc380e0c3ee
Author: Peter Clifton <pcjc2@xxxxxxxxx>
Commit: Peter Clifton <pcjc2@xxxxxxxxx>
hid/gtk: Encapsulate view parameters in a structure
:100644 100644 8c1e8a2... ea8dd40... M src/hid/gtk/gtkhid-gl.c
:100644 100644 b1af557... 2b1cb64... M src/hid/gtk/gtkhid-main.c
:100644 100644 81dcd45... 5929a37... M src/hid/gtk/gui-output-events.c
:100644 100644 f8674e6... e2beb3c... M src/hid/gtk/gui-top-window.c
:100644 100644 c3f00a3... ad2a112... M src/hid/gtk/gui.h
commit e1c619732e14cd7e90025d248c44f8c7e388313e
Author: Peter Clifton <pcjc2@xxxxxxxxx>
Commit: Peter Clifton <pcjc2@xxxxxxxxx>
hid/gtk: Remove unnecessary prototype
:100644 100644 f5c836c... b1af557... M src/hid/gtk/gtkhid-main.c
=========
Changes
=========
commit 25af27394efe1259db8e049bac1d6fc380e0c3ee
Author: Peter Clifton <pcjc2@xxxxxxxxx>
Commit: Peter Clifton <pcjc2@xxxxxxxxx>
hid/gtk: Encapsulate view parameters in a structure
diff --git a/src/hid/gtk/gtkhid-gl.c b/src/hid/gtk/gtkhid-gl.c
index 8c1e8a2..ea8dd40 100644
--- a/src/hid/gtk/gtkhid-gl.c
+++ b/src/hid/gtk/gtkhid-gl.c
@@ -538,7 +538,7 @@ ghid_draw_line (hidGC gc, Coord x1, Coord y1, Coord x2, Coord y2)
{
USE_GC (gc);
- hidgl_draw_line (gc->cap, gc->width, x1, y1, x2, y2, gport->zoom);
+ hidgl_draw_line (gc->cap, gc->width, x1, y1, x2, y2, gport->view.coord_per_px);
}
void
@@ -548,7 +548,7 @@ ghid_draw_arc (hidGC gc, Coord cx, Coord cy, Coord xradius, Coord yradius,
USE_GC (gc);
hidgl_draw_arc (gc->width, cx, cy, xradius, yradius,
- start_angle, delta_angle, gport->zoom);
+ start_angle, delta_angle, gport->view.coord_per_px);
}
void
@@ -565,7 +565,7 @@ ghid_fill_circle (hidGC gc, Coord cx, Coord cy, Coord radius)
{
USE_GC (gc);
- hidgl_fill_circle (cx, cy, radius, gport->zoom);
+ hidgl_fill_circle (cx, cy, radius, gport->view.coord_per_px);
}
@@ -582,7 +582,7 @@ ghid_fill_pcb_polygon (hidGC gc, PolygonType *poly, const BoxType *clip_box)
{
USE_GC (gc);
- hidgl_fill_pcb_polygon (poly, clip_box, gport->zoom);
+ hidgl_fill_pcb_polygon (poly, clip_box, gport->view.coord_per_px);
}
void
@@ -745,8 +745,8 @@ ghid_show_crosshair (gboolean paint_new_location)
{
gint x, y, z;
gboolean draw_markers;
- int vcw = VCW * gport->zoom;
- int vcd = VCD * gport->zoom;
+ int vcw = VCW * gport->view.coord_per_px;
+ int vcd = VCD * gport->view.coord_per_px;
static int done_once = 0;
static GdkColor cross_color;
@@ -783,25 +783,25 @@ ghid_show_crosshair (gboolean paint_new_location)
if (x >= 0 && paint_new_location && draw_markers)
{
glBegin (GL_QUADS);
- glVertex3i (SIDE_X (gport->view_x0), y - vcd, z);
- glVertex3i (SIDE_X (gport->view_x0), y - vcd + vcw, z);
- glVertex3i (SIDE_X (gport->view_x0 + vcd), y - vcd + vcw, z);
- glVertex3i (SIDE_X (gport->view_x0 + vcd), y - vcd, z);
-
- glVertex3i (SIDE_X (gport->view_x0 + gport->view_width), y - vcd, z);
- glVertex3i (SIDE_X (gport->view_x0 + gport->view_width), y - vcd + vcw, z);
- glVertex3i (SIDE_X (gport->view_x0 + gport->view_width - vcd), y - vcd + vcw, z);
- glVertex3i (SIDE_X (gport->view_x0 + gport->view_width - vcd), y - vcd, z);
-
- glVertex3i (x - vcd, SIDE_Y (gport->view_y0), z);
- glVertex3i (x - vcd, SIDE_Y (gport->view_y0 + vcd), z);
- glVertex3i (x - vcd + vcw, SIDE_Y (gport->view_y0 + vcd), z);
- glVertex3i (x - vcd + vcw, SIDE_Y (gport->view_y0), z);
-
- glVertex3i (x - vcd, SIDE_Y (gport->view_y0 + gport->view_height - vcd), z);
- glVertex3i (x - vcd, SIDE_Y (gport->view_y0 + gport->view_height), z);
- glVertex3i (x - vcd + vcw, SIDE_Y (gport->view_y0 + gport->view_height), z);
- glVertex3i (x - vcd + vcw, SIDE_Y (gport->view_y0 + gport->view_height - vcd), z);
+ glVertex3i (SIDE_X (gport->view.x0), y - vcd, z);
+ glVertex3i (SIDE_X (gport->view.x0), y - vcd + vcw, z);
+ glVertex3i (SIDE_X (gport->view.x0 + vcd), y - vcd + vcw, z);
+ glVertex3i (SIDE_X (gport->view.x0 + vcd), y - vcd, z);
+
+ glVertex3i (SIDE_X (gport->view.x0 + gport->view.width), y - vcd, z);
+ glVertex3i (SIDE_X (gport->view.x0 + gport->view.width), y - vcd + vcw, z);
+ glVertex3i (SIDE_X (gport->view.x0 + gport->view.width - vcd), y - vcd + vcw, z);
+ glVertex3i (SIDE_X (gport->view.x0 + gport->view.width - vcd), y - vcd, z);
+
+ glVertex3i (x - vcd, SIDE_Y (gport->view.y0), z);
+ glVertex3i (x - vcd, SIDE_Y (gport->view.y0 + vcd), z);
+ glVertex3i (x - vcd + vcw, SIDE_Y (gport->view.y0 + vcd), z);
+ glVertex3i (x - vcd + vcw, SIDE_Y (gport->view.y0), z);
+
+ glVertex3i (x - vcd, SIDE_Y (gport->view.y0 + gport->view.height - vcd), z);
+ glVertex3i (x - vcd, SIDE_Y (gport->view.y0 + gport->view.height), z);
+ glVertex3i (x - vcd + vcw, SIDE_Y (gport->view.y0 + gport->view.height), z);
+ glVertex3i (x - vcd + vcw, SIDE_Y (gport->view.y0 + gport->view.height - vcd), z);
glEnd ();
}
@@ -933,13 +933,13 @@ ghid_drawing_area_expose_cb (GtkWidget *widget,
glLoadIdentity ();
glTranslatef (0.0f, 0.0f, -Z_NEAR);
- glScalef ((ghid_flip_x ? -1. : 1.) / port->zoom,
- (ghid_flip_y ? -1. : 1.) / port->zoom,
- ((ghid_flip_x == ghid_flip_y) ? 1. : -1.) / port->zoom);
- glTranslatef (ghid_flip_x ? port->view_x0 - PCB->MaxWidth :
- -port->view_x0,
- ghid_flip_y ? port->view_y0 - PCB->MaxHeight :
- -port->view_y0, 0);
+ glScalef ((port->view.flip_x ? -1. : 1.) / port->view.coord_per_px,
+ (port->view.flip_y ? -1. : 1.) / port->view.coord_per_px,
+ ((port->view.flip_x == port->view.flip_y) ? 1. : -1.) / port->view.coord_per_px);
+ glTranslatef (port->view.flip_x ? port->view.x0 - PCB->MaxWidth :
+ -port->view.x0,
+ port->view.flip_y ? port->view.y0 - PCB->MaxHeight :
+ -port->view.y0, 0);
glEnable (GL_STENCIL_TEST);
glClearColor (port->offlimits_color.red / 65535.,
@@ -1035,13 +1035,13 @@ ghid_pinout_preview_expose (GtkWidget *widget,
int save_view_width, save_view_height;
double xz, yz;
- save_zoom = gport->zoom;
+ save_zoom = gport->view.coord_per_px;
save_width = gport->width;
save_height = gport->height;
- save_left = gport->view_x0;
- save_top = gport->view_y0;
- save_view_width = gport->view_width;
- save_view_height = gport->view_height;
+ save_left = gport->view.x0;
+ save_top = gport->view.y0;
+ save_view_width = gport->view.width;
+ save_view_height = gport->view.height;
/* Setup zoom factor for drawing routines */
@@ -1049,16 +1049,16 @@ ghid_pinout_preview_expose (GtkWidget *widget,
xz = (double) pinout->x_max / da_w;
yz = (double) pinout->y_max / da_h;
if (xz > yz)
- gport->zoom = xz;
+ gport->view.coord_per_px = xz;
else
- gport->zoom = yz;
+ gport->view.coord_per_px = yz;
gport->width = da_w;
gport->height = da_h;
- gport->view_width = da_w * gport->zoom;
- gport->view_height = da_h * gport->zoom;
- gport->view_x0 = (pinout->x_max - gport->view_width) / 2;
- gport->view_y0 = (pinout->y_max - gport->view_height) / 2;
+ gport->view.width = da_w * gport->view.coord_per_px;
+ gport->view.height = da_h * gport->view.coord_per_px;
+ gport->view.x0 = (pinout->x_max - gport->view.width) / 2;
+ gport->view.y0 = (pinout->y_max - gport->view.height) / 2;
/* make GL-context "current" */
if (!gdk_gl_drawable_gl_begin (pGlDrawable, pGlContext)) {
@@ -1097,12 +1097,12 @@ ghid_pinout_preview_expose (GtkWidget *widget,
hidgl_init_triangle_array (&buffer);
ghid_invalidate_current_gc ();
glPushMatrix ();
- glScalef ((ghid_flip_x ? -1. : 1.) / gport->zoom,
- (ghid_flip_y ? -1. : 1.) / gport->zoom, 1);
- glTranslatef (ghid_flip_x ? gport->view_x0 - PCB->MaxWidth :
- -gport->view_x0,
- ghid_flip_y ? gport->view_y0 - PCB->MaxHeight :
- -gport->view_y0, 0);
+ glScalef ((gport->view.flip_x ? -1. : 1.) / gport->view.coord_per_px,
+ (gport->view.flip_y ? -1. : 1.) / gport->view.coord_per_px, 1);
+ glTranslatef (gport->view.flip_x ? gport->view.x0 - PCB->MaxWidth :
+ -gport->view.x0,
+ gport->view.flip_y ? gport->view.y0 - PCB->MaxHeight :
+ -gport->view.y0, 0);
hid_expose_callback (&ghid_hid, NULL, &pinout->element);
hidgl_flush_triangles (&buffer);
glPopMatrix ();
@@ -1116,13 +1116,13 @@ ghid_pinout_preview_expose (GtkWidget *widget,
gport->render_priv->in_context = false;
gdk_gl_drawable_gl_end (pGlDrawable);
- gport->zoom = save_zoom;
+ gport->view.coord_per_px = save_zoom;
gport->width = save_width;
gport->height = save_height;
- gport->view_x0 = save_left;
- gport->view_y0 = save_top;
- gport->view_width = save_view_width;
- gport->view_height = save_view_height;
+ gport->view.x0 = save_left;
+ gport->view.y0 = save_top;
+ gport->view.width = save_view_width;
+ gport->view.height = save_view_height;
return FALSE;
}
@@ -1142,13 +1142,13 @@ ghid_render_pixmap (int cx, int cy, double zoom, int width, int height, int dept
int save_view_width, save_view_height;
BoxType region;
- save_zoom = gport->zoom;
+ save_zoom = gport->view.coord_per_px;
save_width = gport->width;
save_height = gport->height;
- save_left = gport->view_x0;
- save_top = gport->view_y0;
- save_view_width = gport->view_width;
- save_view_height = gport->view_height;
+ save_left = gport->view.x0;
+ save_top = gport->view.y0;
+ save_view_width = gport->view.width;
+ save_view_height = gport->view.height;
/* Setup rendering context for drawing routines
*/
@@ -1164,15 +1164,15 @@ ghid_render_pixmap (int cx, int cy, double zoom, int width, int height, int dept
/* Setup zoom factor for drawing routines */
- gport->zoom = zoom;
+ gport->view.coord_per_px = zoom;
gport->width = width;
gport->height = height;
- gport->view_width = width * gport->zoom;
- gport->view_height = height * gport->zoom;
- gport->view_x0 = ghid_flip_x ? PCB->MaxWidth - cx : cx;
- gport->view_x0 -= gport->view_height / 2;
- gport->view_y0 = ghid_flip_y ? PCB->MaxHeight - cy : cy;
- gport->view_y0 -= gport->view_width / 2;
+ gport->view.width = width * gport->view.coord_per_px;
+ gport->view.height = height * gport->view.coord_per_px;
+ gport->view.x0 = gport->view.flip_x ? PCB->MaxWidth - cx : cx;
+ gport->view.x0 -= gport->view.height / 2;
+ gport->view.y0 = gport->view.flip_y ? PCB->MaxHeight - cy : cy;
+ gport->view.y0 -= gport->view.width / 2;
/* make GL-context "current" */
if (!gdk_gl_drawable_gl_begin (gldrawable, glcontext)) {
@@ -1208,12 +1208,12 @@ ghid_render_pixmap (int cx, int cy, double zoom, int width, int height, int dept
hidgl_init_triangle_array (&buffer);
ghid_invalidate_current_gc ();
glPushMatrix ();
- glScalef ((ghid_flip_x ? -1. : 1.) / gport->zoom,
- (ghid_flip_y ? -1. : 1.) / gport->zoom, 1);
- glTranslatef (ghid_flip_x ? gport->view_x0 - PCB->MaxWidth :
- -gport->view_x0,
- ghid_flip_y ? gport->view_y0 - PCB->MaxHeight :
- -gport->view_y0, 0);
+ glScalef ((gport->view.flip_x ? -1. : 1.) / gport->view.coord_per_px,
+ (gport->view.flip_y ? -1. : 1.) / gport->view.coord_per_px, 1);
+ glTranslatef (gport->view.flip_x ? gport->view.x0 - PCB->MaxWidth :
+ -gport->view.x0,
+ gport->view.flip_y ? gport->view.y0 - PCB->MaxHeight :
+ -gport->view.y0, 0);
region.X1 = MIN(Px(0), Px(gport->width + 1));
region.Y1 = MIN(Py(0), Py(gport->height + 1));
@@ -1240,13 +1240,13 @@ ghid_render_pixmap (int cx, int cy, double zoom, int width, int height, int dept
g_object_unref (glconfig);
g_object_unref (glcontext);
- gport->zoom = save_zoom;
+ gport->view.coord_per_px = save_zoom;
gport->width = save_width;
gport->height = save_height;
- gport->view_x0 = save_left;
- gport->view_y0 = save_top;
- gport->view_width = save_view_width;
- gport->view_height = save_view_height;
+ gport->view.x0 = save_left;
+ gport->view.y0 = save_top;
+ gport->view.width = save_view_width;
+ gport->view.height = save_view_height;
return pixmap;
}
@@ -1275,13 +1275,13 @@ ghid_request_debug_draw (void)
glDisable (GL_STENCIL_TEST);
glPushMatrix ();
- glScalef ((ghid_flip_x ? -1. : 1.) / port->zoom,
- (ghid_flip_y ? -1. : 1.) / port->zoom,
- (ghid_flip_x == ghid_flip_y) ? 1. : -1.);
- glTranslatef (ghid_flip_x ? port->view_x0 - PCB->MaxWidth :
- -port->view_x0,
- ghid_flip_y ? port->view_y0 - PCB->MaxHeight :
- -port->view_y0, 0);
+ glScalef ((port->view.flip_x ? -1. : 1.) / port->view.coord_per_px,
+ (port->view.flip_y ? -1. : 1.) / port->view.coord_per_px,
+ (port->view.flip_x == port->view.flip_y) ? 1. : -1.);
+ glTranslatef (port->view.flip_x ? port->view.x0 - PCB->MaxWidth :
+ -port->view.x0,
+ port->view.flip_y ? port->view.y0 - PCB->MaxHeight :
+ -port->view.y0, 0);
return &ghid_hid;
}
@@ -1364,7 +1364,7 @@ draw_lead_user (render_priv *priv)
/* Draw an arc at radius */
hidgl_draw_arc (width, priv->lead_user_x, priv->lead_user_y,
- radius, radius, 0, 360, gport->zoom);
+ radius, radius, 0, 360, gport->view.coord_per_px);
}
hidgl_flush_triangles (&buffer);
diff --git a/src/hid/gtk/gtkhid-main.c b/src/hid/gtk/gtkhid-main.c
index b1af557..2b1cb64 100644
--- a/src/hid/gtk/gtkhid-main.c
+++ b/src/hid/gtk/gtkhid-main.c
@@ -30,8 +30,6 @@
RCSID ("$Id$");
-bool ghid_flip_x = false, ghid_flip_y = false;
-
static void
pan_common (GHidPort *port)
{
@@ -42,10 +40,10 @@ pan_common (GHidPort *port)
ghid_pcb_to_event_coords (gport->pcb_x, gport->pcb_y, &event_x, &event_y);
/* Don't pan so far the board is completely off the screen */
- port->view_x0 = MAX (-port->view_width, port->view_x0);
- port->view_y0 = MAX (-port->view_height, port->view_y0);
- port->view_x0 = MIN ( port->view_x0, PCB->MaxWidth);
- port->view_y0 = MIN ( port->view_y0, PCB->MaxHeight);
+ port->view.x0 = MAX (-port->view.width, port->view.x0);
+ port->view.y0 = MAX (-port->view.height, port->view.y0);
+ port->view.x0 = MIN ( port->view.x0, PCB->MaxWidth);
+ port->view.y0 = MIN ( port->view.y0, PCB->MaxHeight);
/* Fix up noted event coordinates to match where we clamped. Alternatively
* we could call ghid_note_event_location (NULL); to get a new pointer
@@ -54,8 +52,8 @@ pan_common (GHidPort *port)
ghid_event_to_pcb_coords (event_x, event_y, &gport->pcb_x, &gport->pcb_y);
ghidgui->adjustment_changed_holdoff = TRUE;
- gtk_range_set_value (GTK_RANGE (ghidgui->h_range), gport->view_x0);
- gtk_range_set_value (GTK_RANGE (ghidgui->v_range), gport->view_y0);
+ gtk_range_set_value (GTK_RANGE (ghidgui->h_range), gport->view.x0);
+ gtk_range_set_value (GTK_RANGE (ghidgui->v_range), gport->view.y0);
ghidgui->adjustment_changed_holdoff = FALSE;
ghid_port_ranges_changed();
@@ -64,8 +62,8 @@ pan_common (GHidPort *port)
static void
ghid_pan_view_abs (Coord pcb_x, Coord pcb_y, int widget_x, int widget_y)
{
- gport->view_x0 = SIDE_X (pcb_x) - widget_x * gport->zoom;
- gport->view_y0 = SIDE_Y (pcb_y) - widget_y * gport->zoom;
+ gport->view.x0 = SIDE_X (pcb_x) - widget_x * gport->view.coord_per_px;
+ gport->view.y0 = SIDE_Y (pcb_y) - widget_y * gport->view.coord_per_px;
pan_common (gport);
}
@@ -73,14 +71,14 @@ ghid_pan_view_abs (Coord pcb_x, Coord pcb_y, int widget_x, int widget_y)
void
ghid_pan_view_rel (Coord dx, Coord dy)
{
- gport->view_x0 += dx;
- gport->view_y0 += dy;
+ gport->view.x0 += dx;
+ gport->view.y0 += dy;
pan_common (gport);
}
-/* gport->zoom:
+/* gport->view.coord_per_px:
* zoom value is PCB units per screen pixel. Larger numbers mean zooming
* out - the largest value means you are looking at the whole board.
*
@@ -103,18 +101,18 @@ ghid_zoom_view_abs (Coord center_x, Coord center_y, double new_zoom)
PCB->MaxHeight / gport->height) * ALLOW_ZOOM_OUT_BY;
new_zoom = MIN (MAX (min_zoom, new_zoom), max_zoom);
- if (gport->zoom == new_zoom)
+ if (gport->view.coord_per_px == new_zoom)
return;
- xtmp = (SIDE_X (center_x) - gport->view_x0) / (double)gport->view_width;
- ytmp = (SIDE_Y (center_y) - gport->view_y0) / (double)gport->view_height;
+ xtmp = (SIDE_X (center_x) - gport->view.x0) / (double)gport->view.width;
+ ytmp = (SIDE_Y (center_y) - gport->view.y0) / (double)gport->view.height;
- gport->zoom = new_zoom;
+ gport->view.coord_per_px = new_zoom;
pixel_slop = new_zoom;
ghid_port_ranges_scale ();
- gport->view_x0 = SIDE_X (center_x) - xtmp * gport->view_width;
- gport->view_y0 = SIDE_Y (center_y) - ytmp * gport->view_height;
+ gport->view.x0 = SIDE_X (center_x) - xtmp * gport->view.width;
+ gport->view.y0 = SIDE_Y (center_y) - ytmp * gport->view.height;
pan_common (gport);
@@ -124,7 +122,7 @@ ghid_zoom_view_abs (Coord center_x, Coord center_y, double new_zoom)
static void
ghid_zoom_view_rel (Coord center_x, Coord center_y, double factor)
{
- ghid_zoom_view_abs (center_x, center_y, gport->zoom * factor);
+ ghid_zoom_view_abs (center_x, center_y, gport->view.coord_per_px * factor);
}
static void
@@ -136,15 +134,15 @@ ghid_zoom_view_fit (void)
}
static void
-ghid_flip_view (Coord center_x, Coord center_y, bool flip_x, bool flip_y)
+gport_flip_view (Coord center_x, Coord center_y, bool flip_x, bool flip_y)
{
int widget_x, widget_y;
/* Work out where on the screen the flip point is */
ghid_pcb_to_event_coords (center_x, center_y, &widget_x, &widget_y);
- ghid_flip_x = ghid_flip_x != flip_x;
- ghid_flip_y = ghid_flip_y != flip_y;
+ gport->view.flip_x = gport->view.flip_x != flip_x;
+ gport->view.flip_y = gport->view.flip_y != flip_y;
/* Pan the board so the center location remains in the same place */
ghid_pan_view_abs (center_x, center_y, widget_x, widget_y);
@@ -1389,15 +1387,15 @@ SwapSides (int argc, char **argv, Coord x, Coord y)
switch (argv[0][0]) {
case 'h':
case 'H':
- ghid_flip_view (gport->pcb_x, gport->pcb_y, true, false);
+ gport_flip_view (gport->pcb_x, gport->pcb_y, true, false);
break;
case 'v':
case 'V':
- ghid_flip_view (gport->pcb_x, gport->pcb_y, false, true);
+ gport_flip_view (gport->pcb_x, gport->pcb_y, false, true);
break;
case 'r':
case 'R':
- ghid_flip_view (gport->pcb_x, gport->pcb_y, true, true);
+ gport_flip_view (gport->pcb_x, gport->pcb_y, true, true);
Settings.ShowSolderSide = !Settings.ShowSolderSide; /* Swapped back below */
break;
default:
@@ -1677,10 +1675,10 @@ CursorAction(int argc, char **argv, Coord x, Coord y)
AFAIL (cursor);
dx = GetValueEx (argv[1], argv[3], NULL, extra_units_x, "");
- if (ghid_flip_x)
+ if (gport->view.flip_x)
dx = -dx;
dy = GetValueEx (argv[2], argv[3], NULL, extra_units_y, "");
- if (!ghid_flip_y)
+ if (!gport->view.flip_y)
dy = -dy;
EventMoveCrosshair (Crosshair.X + dx, Crosshair.Y + dy);
@@ -1848,13 +1846,13 @@ ScrollAction (int argc, char **argv, Coord x, Coord y)
div = atoi(argv[1]);
if (strcasecmp (argv[0], "up") == 0)
- dy = -gport->view_height / div;
+ dy = -gport->view.height / div;
else if (strcasecmp (argv[0], "down") == 0)
- dy = gport->view_height / div;
+ dy = gport->view.height / div;
else if (strcasecmp (argv[0], "right") == 0)
- dx = gport->view_width / div;
+ dx = gport->view.width / div;
else if (strcasecmp (argv[0], "left") == 0)
- dx = -gport->view_width / div;
+ dx = -gport->view.width / div;
else
AFAIL (scroll);
@@ -2064,19 +2062,20 @@ REGISTER_ACTIONS (ghid_main_action_list)
static int
flag_flipx (int x)
-{
- return ghid_flip_x;
-}
-static int
+{
+ return gport->view.flip_x;
+}
+
+static int
flag_flipy (int x)
-{
- return ghid_flip_y;
-}
+{
+ return gport->view.flip_y;
+}
HID_Flag ghid_main_flag_list[] = {
{"flip_x", flag_flipx, 0},
{"flip_y", flag_flipy, 0}
-};
+};
REGISTER_FLAGS (ghid_main_flag_list)
diff --git a/src/hid/gtk/gui-output-events.c b/src/hid/gtk/gui-output-events.c
index 81dcd45..5929a37 100644
--- a/src/hid/gtk/gui-output-events.c
+++ b/src/hid/gtk/gui-output-events.c
@@ -60,8 +60,8 @@ ghid_port_ranges_changed (void)
h_adj = gtk_range_get_adjustment (GTK_RANGE (ghidgui->h_range));
v_adj = gtk_range_get_adjustment (GTK_RANGE (ghidgui->v_range));
- gport->view_x0 = h_adj->value;
- gport->view_y0 = v_adj->value;
+ gport->view.x0 = h_adj->value;
+ gport->view.y0 = v_adj->value;
ghid_invalidate_all ();
}
@@ -78,21 +78,21 @@ ghid_port_ranges_scale (void)
| drawing area size in pixels to PCB units and that will be
| the page size for the Gtk adjustment.
*/
- gport->view_width = gport->width * gport->zoom;
- gport->view_height = gport->height * gport->zoom;
+ gport->view.width = gport->width * gport->view.coord_per_px;
+ gport->view.height = gport->height * gport->view.coord_per_px;
adj = gtk_range_get_adjustment (GTK_RANGE (ghidgui->h_range));
- adj->page_size = MIN (gport->view_width, PCB->MaxWidth);
+ adj->page_size = MIN (gport->view.width, PCB->MaxWidth);
adj->page_increment = adj->page_size / 10.0;
adj->step_increment = adj->page_size / 100.0;
- adj->lower = -gport->view_width;
+ adj->lower = -gport->view.width;
adj->upper = PCB->MaxWidth + adj->page_size;
adj = gtk_range_get_adjustment (GTK_RANGE (ghidgui->v_range));
- adj->page_size = MIN (gport->view_height, PCB->MaxHeight);
+ adj->page_size = MIN (gport->view.height, PCB->MaxHeight);
adj->page_increment = adj->page_size / 10.0;
adj->step_increment = adj->page_size / 100.0;
- adj->lower = -gport->view_height;
+ adj->lower = -gport->view.height;
adj->upper = PCB->MaxHeight + adj->page_size;
}
@@ -547,8 +547,8 @@ ghid_port_window_motion_cb (GtkWidget * widget,
if (out->panning)
{
- dx = gport->zoom * (x_prev - ev->x);
- dy = gport->zoom * (y_prev - ev->y);
+ dx = gport->view.coord_per_px * (x_prev - ev->x);
+ dy = gport->view.coord_per_px * (y_prev - ev->y);
if (x_prev > 0)
ghid_pan_view_rel (dx, dy);
x_prev = ev->x;
@@ -604,8 +604,8 @@ ghid_pan_idle_cb (gpointer data)
if (gport->has_entered)
return FALSE;
- dy = gport->zoom * y_pan_speed;
- dx = gport->zoom * x_pan_speed;
+ dy = gport->view.coord_per_px * y_pan_speed;
+ dx = gport->view.coord_per_px * x_pan_speed;
ghid_pan_view_rel (dx, dy);
return TRUE;
}
@@ -639,8 +639,8 @@ ghid_port_window_leave_cb (GtkWidget * widget,
/* GdkEvent coords are set to 0,0 at leave events, so must figure
| out edge the cursor left.
*/
- w = ghid_port.width * gport->zoom;
- h = ghid_port.height * gport->zoom;
+ w = ghid_port.width * out->view.coord_per_px;
+ h = ghid_port.height * out->view.coord_per_px;
x0 = EVENT_TO_PCB_X (0);
y0 = EVENT_TO_PCB_Y (0);
@@ -648,9 +648,9 @@ ghid_port_window_leave_cb (GtkWidget * widget,
x -= x0;
y -= y0;
- if (ghid_flip_x )
+ if (gport->view.flip_x)
x = -x;
- if (ghid_flip_y )
+ if (gport->view.flip_y)
y = -y;
dx = w - x;
diff --git a/src/hid/gtk/gui-top-window.c b/src/hid/gtk/gui-top-window.c
index f8674e6..e2beb3c 100644
--- a/src/hid/gtk/gui-top-window.c
+++ b/src/hid/gtk/gui-top-window.c
@@ -1986,7 +1986,7 @@ ghid_parse_arguments (int *argc, char ***argv)
gtk_init (argc, argv);
gport = &ghid_port;
- gport->zoom = 300.0;
+ gport->view.coord_per_px = 300.0;
pixel_slop = 300;
ghid_init_renderer (argc, argv, gport);
diff --git a/src/hid/gtk/gui.h b/src/hid/gtk/gui.h
index c3f00a3..ad2a112 100644
--- a/src/hid/gtk/gui.h
+++ b/src/hid/gtk/gui.h
@@ -62,15 +62,14 @@
#define FROM_PCB_UNITS(v) coord_to_unit (Settings.grid_unit, v)
#define TO_PCB_UNITS(v) unit_to_coord (Settings.grid_unit, v)
-extern bool ghid_flip_x, ghid_flip_y;
-#define SIDE_X(x) ((ghid_flip_x ? PCB->MaxWidth - (x) : (x)))
-#define SIDE_Y(y) ((ghid_flip_y ? PCB->MaxHeight - (y) : (y)))
+#define SIDE_X(x) ((gport->view.flip_x ? PCB->MaxWidth - (x) : (x)))
+#define SIDE_Y(y) ((gport->view.flip_y ? PCB->MaxHeight - (y) : (y)))
-#define DRAW_X(x) (gint)((SIDE_X(x) - gport->view_x0) / gport->zoom)
-#define DRAW_Y(y) (gint)((SIDE_Y(y) - gport->view_y0) / gport->zoom)
+#define DRAW_X(x) (gint)((SIDE_X(x) - gport->view.x0) / gport->view.coord_per_px)
+#define DRAW_Y(y) (gint)((SIDE_Y(y) - gport->view.y0) / gport->view.coord_per_px)
-#define EVENT_TO_PCB_X(x) SIDE_X((gint)((x) * gport->zoom + gport->view_x0))
-#define EVENT_TO_PCB_Y(y) SIDE_Y((gint)((y) * gport->zoom + gport->view_y0))
+#define EVENT_TO_PCB_X(x) SIDE_X((gint)((x) * gport->view.coord_per_px + gport->view.x0))
+#define EVENT_TO_PCB_Y(y) SIDE_Y((gint)((y) * gport->view.coord_per_px + gport->view.y0))
/*
* Used to intercept "special" hotkeys that gtk doesn't usually pass
@@ -145,6 +144,19 @@ GhidGui;
extern GhidGui _ghidgui, *ghidgui;
+typedef struct
+{
+ double coord_per_px; /* Zoom level described as PCB units per screen pixel */
+
+ Coord x0;
+ Coord y0;
+ Coord width;
+ Coord height;
+
+ bool flip_x;
+ bool flip_y;
+
+} view_data;
/* The output viewport
*/
@@ -168,15 +180,9 @@ typedef struct
gboolean has_entered;
gboolean panning;
-/* zoom value is PCB units per screen pixel. Larger numbers mean zooming
-| out - the largest value means you are looking at the whole board.
-*/
- gdouble zoom; /* PCB units per screen pixel. Larger */
- /* numbers mean zooming out. */
- /* Viewport in PCB coordinates */
- Coord view_x0, view_y0, view_width, view_height;
- Coord pcb_x, pcb_y;
- Coord crosshair_x, crosshair_y;
+ view_data view;
+ Coord pcb_x, pcb_y; /* PCB coordinates of the mouse pointer */
+ Coord crosshair_x, crosshair_y; /* PCB coordinates of the crosshair */
}
GHidPort;
@@ -520,10 +526,10 @@ static inline int
Vx (Coord x)
{
int rv;
- if (ghid_flip_x)
- rv = (PCB->MaxWidth - x - gport->view_x0) / gport->zoom + 0.5;
+ if (gport->view.flip_x)
+ rv = (PCB->MaxWidth - x - gport->view.x0) / gport->view.coord_per_px + 0.5;
else
- rv = (x - gport->view_x0) / gport->zoom + 0.5;
+ rv = (x - gport->view.x0) / gport->view.coord_per_px + 0.5;
return rv;
}
@@ -531,41 +537,41 @@ static inline int
Vy (Coord y)
{
int rv;
- if (ghid_flip_y)
- rv = (PCB->MaxHeight - y - gport->view_y0) / gport->zoom + 0.5;
+ if (gport->view.flip_y)
+ rv = (PCB->MaxHeight - y - gport->view.y0) / gport->view.coord_per_px + 0.5;
else
- rv = (y - gport->view_y0) / gport->zoom + 0.5;
+ rv = (y - gport->view.y0) / gport->view.coord_per_px + 0.5;
return rv;
}
static inline int
Vz (Coord z)
{
- return z / gport->zoom + 0.5;
+ return z / gport->view.coord_per_px + 0.5;
}
static inline Coord
Px (int x)
{
- Coord rv = x * gport->zoom + gport->view_x0;
- if (ghid_flip_x)
- rv = PCB->MaxWidth - (x * gport->zoom + gport->view_x0);
+ Coord rv = x * gport->view.coord_per_px + gport->view.x0;
+ if (gport->view.flip_x)
+ rv = PCB->MaxWidth - (x * gport->view.coord_per_px + gport->view.x0);
return rv;
}
static inline Coord
Py (int y)
{
- Coord rv = y * gport->zoom + gport->view_y0;
- if (ghid_flip_y)
- rv = PCB->MaxHeight - (y * gport->zoom + gport->view_y0);
+ Coord rv = y * gport->view.coord_per_px + gport->view.y0;
+ if (gport->view.flip_y)
+ rv = PCB->MaxHeight - (y * gport->view.coord_per_px + gport->view.y0);
return rv;
}
static inline Coord
Pz (int z)
{
- return (z * gport->zoom);
+ return (z * gport->view.coord_per_px);
}
#endif /* PCB_HID_GTK_GHID_H */
commit e1c619732e14cd7e90025d248c44f8c7e388313e
Author: Peter Clifton <pcjc2@xxxxxxxxx>
Commit: Peter Clifton <pcjc2@xxxxxxxxx>
hid/gtk: Remove unnecessary prototype
diff --git a/src/hid/gtk/gtkhid-main.c b/src/hid/gtk/gtkhid-main.c
index f5c836c..b1af557 100644
--- a/src/hid/gtk/gtkhid-main.c
+++ b/src/hid/gtk/gtkhid-main.c
@@ -32,8 +32,6 @@ RCSID ("$Id$");
bool ghid_flip_x = false, ghid_flip_y = false;
-static void ghid_zoom_view_fit (void);
-
static void
pan_common (GHidPort *port)
{
_______________________________________________
geda-cvs mailing list
geda-cvs@xxxxxxxxxxxxxx
http://www.seul.org/cgi-bin/mailman/listinfo/geda-cvs